/* ── v2/styles/v2.css ───────────────────────────────────────────────────────
   TradeByFire 2.0 — the Behavioral OS. Layers on the SHARED v0.8 design tokens
   (--wot-* from elite.css). Everything here is 2.0-specific chrome.
   ───────────────────────────────────────────────────────────────────────── */

.v2-body { margin: 0; background: var(--wot-bg-0); color: var(--wot-text-1); font-family: var(--wot-font); }
.v2-app { min-height: 100vh; display: flex; flex-direction: column; }

/* ── Header / nav ─────────────────────────────────────────────────────────*/
.v2-header {
  position: sticky; top: 0; z-index: 50;
  display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 18px;
  height: var(--wot-h-header); padding: 0 22px;
  background: rgba(10,10,12,0.82); backdrop-filter: blur(14px);
  border-bottom: 1px solid var(--wot-border);
}
.v2-brand-cell { display: flex; align-items: center; min-width: 0; }
.v2-brand { display: flex; align-items: center; gap: 12px; text-decoration: none; color: var(--wot-text-0); }
/* Shared fire-ring identity (same mark as v0.8 favicon / brand / orb). */
.v2-brand-mark { width: 34px; height: 34px; border-radius: 10px; flex: 0 0 auto; box-shadow: var(--wot-grad-glow);
  background: #0b0507 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Cdefs%3E%3ClinearGradient id='g' x1='0' y1='0' x2='1' y2='1'%3E%3Cstop offset='0' stop-color='%23FF6B1F'/%3E%3Cstop offset='.55' stop-color='%23FF3D5A'/%3E%3Cstop offset='1' stop-color='%23FF1F8F'/%3E%3C/linearGradient%3E%3C/defs%3E%3Crect width='32' height='32' rx='8' fill='%230b0507'/%3E%3Cellipse cx='16' cy='26.4' rx='10' ry='1.8' fill='url(%23g)' opacity='.5'/%3E%3Ccircle cx='16' cy='14.8' r='8.6' fill='none' stroke='url(%23g)' stroke-width='3.6' opacity='.4'/%3E%3Ccircle cx='16' cy='14.8' r='8.6' fill='none' stroke='url(%23g)' stroke-width='2.2'/%3E%3Ccircle cx='16' cy='14.8' r='8.6' fill='none' stroke='%23FFE8C8' stroke-width='.8' opacity='.95'/%3E%3C/svg%3E") center / 100% 100% no-repeat; }
.v2-brand-name { display: flex; flex-direction: column; line-height: 1.1; min-width: 0; }
.v2-brand-row { display: flex; align-items: baseline; gap: 8px; }
.v2-brand-row strong { font-size: 16px; letter-spacing: -0.01em; }
.v2-brand-ver { font-size: 10px; font-weight: 800; letter-spacing: 0.06em; padding: 2px 7px; border-radius: 999px;
  background: var(--wot-grad); color: #fff; }
.v2-brand-name em { font-style: normal; font-size: 11px; color: var(--wot-text-2); }

.v2-nav { display: flex; align-items: center; gap: 2px; justify-content: center; flex-wrap: wrap; }
.v2-nav a { padding: 7px 13px; border-radius: 999px; font-size: 13px; font-weight: 600; color: var(--wot-text-2); text-decoration: none; transition: .15s; }
.v2-nav a:hover { color: var(--wot-text-0); background: var(--wot-bg-2); }
.v2-nav a.is-active { color: var(--wot-text-0); background: var(--wot-bg-2); box-shadow: inset 0 0 0 1px var(--wot-border-strong); }

.v2-header-meta { display: flex; align-items: center; gap: 12px; justify-self: end; }
.v2-meta-streak { font-size: 14px; font-weight: 800; color: var(--wot-grad-start); }
.v2-meta-disc { font-size: 14px; font-weight: 800; color: var(--wot-text-0); } .v2-meta-disc small { color: var(--wot-text-2); font-weight: 600; }
/* Mode + admin-profile dropdowns are hidden for everyone by default — the app
   is Composure-only. Tap the "2.0" version badge 5× to reveal them (admin). */
.v2-version-switch { display: none; margin-left: 12px; padding: 4px 10px; font-size: 11px; font-weight: 700; letter-spacing: .03em;
  color: #fff; cursor: pointer; appearance: auto; border: 1px solid transparent; border-radius: 999px;
  background: linear-gradient(135deg,#FF6B1F,#FF1F8F); }
body.v2-admin-revealed .v2-version-switch { display: inline-block; }

/* ── Layout ───────────────────────────────────────────────────────────────*/
.v2-view { flex: 1; outline: none; }
.v2-page { max-width: 1180px; margin: 0 auto; padding: 26px 22px 80px; display: flex; flex-direction: column; gap: 18px; }
.v2-narrow { max-width: 820px; }
.v2-grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.v2-grid-2-wide { display: grid; grid-template-columns: 1fr 1.1fr; gap: 18px; }
.v2-grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.v2-inner { margin-bottom: 8px; }
@media (max-width: 880px) { .v2-grid-2, .v2-grid-2-wide, .v2-grid-3 { grid-template-columns: 1fr; } .v2-nav { display: none; } }

.v2-hero h1 { font-size: 26px; letter-spacing: -0.02em; color: var(--wot-text-0); margin: 0 0 6px; }
.v2-hero-row { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.v2-review-week { display: flex; align-items: center; gap: 8px; }
.v2-review-week .v2-select { min-width: 190px; }
.v2-thesis { max-width: 760px; color: var(--wot-text-1); line-height: 1.5; }
.v2-muted { color: var(--wot-text-2); font-size: 13px; line-height: 1.5; }
.v2-text-good { color: var(--wot-bull); } .v2-text-danger { color: var(--wot-bear); }
.v2-block-label { display: block; font-size: 12px; font-weight: 700; color: var(--wot-text-2); text-transform: uppercase; letter-spacing: .04em; margin: 14px 0 8px; }

/* ── Panels ───────────────────────────────────────────────────────────────*/
.v2-panel { background: linear-gradient(180deg, var(--wot-bg-1), var(--wot-bg-0)); border: 1px solid var(--wot-border);
  border-radius: var(--wot-r-lg); overflow: hidden; }
.v2-panel-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; padding: 16px 18px 0; }
.v2-panel-head h3 { margin: 0; font-size: 15px; color: var(--wot-text-0); }
.v2-panel-head p { margin: 2px 0 0; font-size: 12px; color: var(--wot-text-2); }
.v2-panel-body { padding: 16px 18px 18px; display: flex; flex-direction: column; gap: 12px; }

/* ── Buttons (2.0 set, mirrors wot-btn look) ───────────────────────────────*/
.v2-btn { display: inline-flex; align-items: center; gap: 7px; padding: 9px 15px; border-radius: 10px; font-size: 13px; font-weight: 700;
  cursor: pointer; border: 1px solid var(--wot-border-strong); background: var(--wot-bg-2); color: var(--wot-text-0); text-decoration: none; transition: .15s; }
.v2-btn:hover { border-color: rgba(255,255,255,0.3); }
.v2-btn:disabled { opacity: .4; cursor: not-allowed; }
.v2-btn.is-primary { background: var(--wot-grad); border-color: transparent; box-shadow: var(--wot-grad-glow); color: #fff; }
.v2-btn .v2-icon { color: currentColor; }
.v2-btn.is-primary .v2-icon { color: #fff; }
.v2-btn.is-good { background: rgba(34,197,94,0.15); border-color: rgba(34,197,94,0.4); color: var(--wot-bull); }
.v2-btn.is-bad { background: rgba(239,68,68,0.13); border-color: rgba(239,68,68,0.4); color: var(--wot-bear); }
.v2-btn-ghost { background: transparent; }
.v2-btn-sm { padding: 6px 10px; font-size: 12px; }
.v2-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-top: 6px; }
.v2-icon { display: inline-flex; width: 16px; height: 16px; }
.v2-icon svg { width: 100%; height: 100%; }

.v2-input { width: 100%; box-sizing: border-box; padding: 9px 11px; border-radius: 10px; background: var(--wot-bg-2);
  border: 1px solid var(--wot-border); color: var(--wot-text-0); font: inherit; font-size: 13px; }
.v2-input:focus { outline: none; border-color: var(--wot-grad-end); }
.v2-input-sm { width: 80px; padding: 5px 8px; }
label { font-size: 13px; color: var(--wot-text-1); display: block; }
.v2-form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.v2-form-grid label { display: flex; flex-direction: column; gap: 5px; font-weight: 600; }
.v2-note { resize: vertical; min-height: 56px; }

/* ── Pills ────────────────────────────────────────────────────────────────*/
.v2-pill { display: inline-flex; align-items: center; padding: 2px 9px; border-radius: 999px; font-size: 11px; font-weight: 700;
  background: var(--wot-bg-3); color: var(--wot-text-1); border: 1px solid var(--wot-border); }
.v2-pill.is-good { background: rgba(34,197,94,0.15); color: var(--wot-bull); border-color: transparent; }
.v2-pill.is-caution { background: rgba(245,180,0,0.15); color: var(--wot-chop); border-color: transparent; }
.v2-pill.is-danger { background: rgba(239,68,68,0.15); color: var(--wot-bear); border-color: transparent; }
.v2-pill.is-info { background: rgba(124,92,255,0.18); color: #b6a5ff; border-color: transparent; }
.v2-seg { display: inline-flex; gap: 6px; }

/* ── Rings + meters ───────────────────────────────────────────────────────*/
.v2-ring-wrap { display: flex; justify-content: center; }
.v2-ring { position: relative; display: inline-block; }
.v2-ring-mid { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; }
.v2-ring-mid strong { font-size: 30px; font-weight: 800; color: var(--wot-text-0); line-height: 1; }
.v2-ring-mid span { font-size: 11px; color: var(--wot-text-2); }
.v2-meter { width: 100%; background: var(--wot-bg-3); border-radius: 999px; overflow: hidden; }
.v2-meter span { display: block; height: 100%; border-radius: 999px; }
.v2-bignum { font-size: 38px; font-weight: 800; color: var(--wot-text-0); line-height: 1; }
.v2-bignum small { font-size: 13px; color: var(--wot-text-2); font-weight: 600; margin-left: 6px; }

/* ── Streak / chain ───────────────────────────────────────────────────────*/
.v2-streak { display: flex; align-items: baseline; justify-content: space-between; }
.v2-streak-num { display: flex; align-items: center; gap: 8px; color: var(--wot-grad-start); }
.v2-streak-num strong { font-size: 38px; font-weight: 800; color: var(--wot-text-0); }
.v2-streak-num .v2-icon { width: 26px; height: 26px; }
.v2-chain { display: flex; gap: 5px; flex-wrap: wrap; }
.v2-chain-link { width: 22px; height: 22px; border-radius: 6px; background: var(--wot-bg-3); display: flex; align-items: center; justify-content: center; }
.v2-chain-link .v2-icon { width: 13px; height: 13px; color: #fff; }
.v2-chain-link.is-on { background: var(--wot-grad); }

/* ── Status chips / readiness ─────────────────────────────────────────────*/
.v2-status-row { display: flex; gap: 8px; flex-wrap: wrap; }
.v2-statuschip { display: inline-flex; align-items: center; gap: 6px; padding: 7px 12px; border-radius: 999px; font-size: 12px; font-weight: 700;
  text-decoration: none; color: var(--wot-text-2); background: var(--wot-bg-2); border: 1px solid var(--wot-border); }
.v2-statuschip.is-done { color: var(--wot-bull); border-color: rgba(34,197,94,0.4); }
.v2-statuschip .v2-icon { width: 14px; height: 14px; }
.v2-readiness { display: flex; align-items: center; gap: 16px; padding: 12px; border-radius: var(--wot-r-md); background: var(--wot-bg-1); border: 1px solid var(--wot-border); }
.v2-readiness.is-good { border-color: rgba(34,197,94,0.35); } .v2-readiness.is-caution { border-color: rgba(245,180,0,0.35); } .v2-readiness.is-danger { border-color: rgba(239,68,68,0.4); }
.v2-readiness strong { display: block; font-size: 16px; color: var(--wot-text-0); }
.v2-readiness p { margin: 4px 0 0; font-size: 13px; color: var(--wot-text-1); }
.v2-readiness.is-empty { flex-direction: column; align-items: flex-start; gap: 10px; }

/* ── Level / traits ───────────────────────────────────────────────────────*/
.v2-level { display: flex; align-items: center; gap: 14px; }
.v2-level-badge { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; border-radius: 12px;
  background: var(--wot-grad); color: #fff; font-weight: 800; font-size: 15px; flex: 0 0 auto; box-shadow: var(--wot-grad-glow); }
.v2-level strong { color: var(--wot-text-0); font-size: 16px; }
.v2-traits { display: flex; flex-wrap: wrap; gap: 8px; }
.v2-traits-lg { gap: 10px; }
.v2-trait { display: inline-flex; align-items: center; gap: 7px; padding: 8px 13px; border-radius: 999px; font-size: 13px; font-weight: 700;
  color: var(--wot-text-3); background: var(--wot-bg-2); border: 1px dashed var(--wot-border); }
.v2-trait.is-on { color: var(--wot-text-0); border-style: solid; border-color: transparent; background: rgba(255,107,31,0.12); }
.v2-trait.is-on .v2-icon { color: var(--wot-grad-start); }
.v2-trait .v2-icon { width: 15px; height: 15px; }

/* ── Check-in scales / emotions ───────────────────────────────────────────*/
.v2-scales { display: flex; flex-direction: column; gap: 14px; }
.v2-scale-row label { font-weight: 600; margin-bottom: 7px; }
.v2-scale { display: grid; grid-template-columns: repeat(10, 1fr); gap: 5px; }
.v2-scale-cell { padding: 9px 0; border-radius: 8px; border: 1px solid var(--wot-border); background: var(--wot-bg-2); color: var(--wot-text-2);
  font-weight: 700; font-size: 12px; cursor: pointer; transition: .1s; }
.v2-scale-cell:hover { border-color: var(--wot-border-strong); }
.v2-scale-cell.is-on { background: var(--wot-grad); color: #fff; border-color: transparent; }
.v2-emotion-block { margin-top: 18px; }
.v2-emotion-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; margin-top: 8px; }
.v2-emotion-sm { grid-template-columns: repeat(4, 1fr); }
.v2-emo { padding: 11px 8px; border-radius: 10px; border: 1px solid var(--wot-border); background: var(--wot-bg-2); color: var(--wot-text-1);
  font-weight: 700; font-size: 13px; cursor: pointer; transition: .12s; }
.v2-emo.is-good:hover, .v2-emo.is-good.is-sel { border-color: var(--wot-bull); color: var(--wot-bull); background: rgba(34,197,94,0.1); }
.v2-emo.is-caution:hover, .v2-emo.is-caution.is-sel { border-color: var(--wot-chop); color: var(--wot-chop); background: rgba(245,180,0,0.1); }
.v2-emo.is-danger:hover, .v2-emo.is-danger.is-sel { border-color: var(--wot-bear); color: var(--wot-bear); background: rgba(239,68,68,0.1); }
.v2-emo.is-sel { box-shadow: inset 0 0 0 1px currentColor; }
.v2-emo-note { min-height: 18px; margin-top: 10px; }
.v2-result { margin-top: 16px; }
/* Check-in day summary (read-only, in the calendar dialog) */
.v2-sum-scales { display: flex; flex-direction: column; gap: 8px; margin: 14px 0 4px; }
.v2-sum-row { display: grid; grid-template-columns: 110px 1fr 22px; align-items: center; gap: 10px; font-size: 13px; color: var(--wot-text-1); }
.v2-sum-row b { text-align: right; color: var(--wot-text-0); font-weight: 700; }
.v2-sum-bar { height: 8px; border-radius: 999px; background: var(--wot-bg-2); border: 1px solid var(--wot-border); overflow: hidden; }
.v2-sum-bar i { display: block; height: 100%; background: var(--wot-grad); }

@media (max-width: 560px) { .v2-scale { grid-template-columns: repeat(5, 1fr); } .v2-emotion-grid { grid-template-columns: repeat(2, 1fr); } .v2-form-grid { grid-template-columns: 1fr; } }

/* ── Ritual ───────────────────────────────────────────────────────────────*/
.v2-ritual { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 12px; }
.v2-rstep { background: var(--wot-bg-1); border: 1px solid var(--wot-border); border-radius: var(--wot-r-md); overflow: hidden; }
.v2-rstep.is-done { border-color: rgba(34,197,94,0.35); }
.v2-rstep-head { display: flex; align-items: center; gap: 10px; padding: 14px 16px; }
.v2-rstep-head h3 { margin: 0; font-size: 15px; color: var(--wot-text-0); flex: 1; }
.v2-rstep-head .v2-icon { width: 18px; height: 18px; color: var(--wot-grad-start); }
.v2-rstep-state .v2-icon { color: var(--wot-bull); width: 18px; height: 18px; }
.v2-rstep-body { padding: 0 16px 16px; display: flex; flex-direction: column; gap: 12px; }
.v2-principles { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.v2-principle { padding: 11px 13px; border-radius: 10px; background: var(--wot-bg-2); border: 1px solid var(--wot-border); }
.v2-principle strong { color: var(--wot-text-0); font-size: 13px; } .v2-principle p { margin: 5px 0 0; font-size: 12px; color: var(--wot-text-2); line-height: 1.45; }
.v2-rulelist { margin: 0; padding-left: 18px; color: var(--wot-text-1); font-size: 13px; line-height: 1.9; }
.v2-commit { margin: 0; padding: 16px 18px; border-left: 3px solid var(--wot-grad-end); background: var(--wot-bg-2); border-radius: 0 10px 10px 0;
  font-size: 17px; font-weight: 700; color: var(--wot-text-0); font-style: italic; }
@media (max-width: 560px) { .v2-principles { grid-template-columns: 1fr; } }

.v2-breath { display: flex; flex-direction: column; align-items: center; gap: 14px; padding: 22px; }
.v2-breath-orb { width: 150px; height: 150px; display: flex; align-items: center; justify-content: center;
  transition: transform 4s ease-in-out, filter 4s ease-in-out; filter: saturate(0.85) brightness(0.92); }
.v2-breath-orb .v2-orb-svg { width: 100%; height: 100%; }
.v2-breath.is-active[data-phase="0"] .v2-breath-orb,
.v2-breath.is-active[data-phase="1"] .v2-breath-orb { transform: scale(1.22); filter: saturate(1.1) brightness(1.1); }
.v2-breath.is-active[data-phase="2"] .v2-breath-orb,
.v2-breath.is-active[data-phase="3"] .v2-breath-orb { transform: scale(0.82); filter: saturate(0.8) brightness(0.85); }
.v2-breath-label { font-size: 14px; font-weight: 700; color: var(--wot-text-1); }
.v2-breath-mini { padding: 12px; } .v2-breath-mini .v2-breath-orb { width: 80px; height: 80px; }
.v2-ritual-foot { margin-top: 6px; }
.v2-ritual-complete { display: flex; align-items: center; gap: 14px; padding: 16px; border-radius: var(--wot-r-md);
  background: rgba(255,107,31,0.1); border: 1px solid rgba(255,107,31,0.3); }
.v2-ritual-complete .v2-icon { width: 28px; height: 28px; color: var(--wot-grad-start); }
.v2-ritual-complete strong { color: var(--wot-text-0); font-size: 15px; } .v2-ritual-complete p { margin: 2px 0 0; }
.v2-ritual-complete a { margin-left: auto; }

/* ── Callouts ─────────────────────────────────────────────────────────────*/
.v2-callout { display: flex; gap: 12px; padding: 14px 16px; border-radius: var(--wot-r-md); margin-bottom: 14px; font-size: 13px; line-height: 1.5; }
.v2-callout .v2-icon { width: 20px; height: 20px; flex: 0 0 auto; margin-top: 1px; }
.v2-callout a { color: var(--wot-text-0); font-weight: 700; }
.v2-callout.is-warn { background: rgba(245,180,0,0.1); border: 1px solid rgba(245,180,0,0.3); color: var(--wot-text-1); } .v2-callout.is-warn .v2-icon { color: var(--wot-chop); }
.v2-callout.is-danger { background: rgba(239,68,68,0.1); border: 1px solid rgba(239,68,68,0.35); color: var(--wot-text-1); } .v2-callout.is-danger .v2-icon { color: var(--wot-bear); }

/* ── Trade gate + cards ───────────────────────────────────────────────────*/
.v2-gate { background: var(--wot-bg-2); border: 1px solid var(--wot-border); border-radius: var(--wot-r-md); padding: 14px; display: flex; flex-direction: column; gap: 9px; }
.v2-gate-title { margin: 0 0 4px; font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; color: var(--wot-text-2); }
.v2-check { display: flex; align-items: center; gap: 10px; font-size: 13px; font-weight: 600; color: var(--wot-text-1); cursor: pointer; }
.v2-check input { width: 17px; height: 17px; accent-color: var(--wot-grad-end); }
.v2-accept { padding: 4px 0; }
.v2-accept-line { font-size: 15px; line-height: 1.7; color: var(--wot-text-0); }
.v2-accept-amt { font-weight: 800; } .v2-accept-amt input { width: 90px; font-weight: 800; }
.v2-locked { display: flex; align-items: center; gap: 10px; color: var(--wot-text-2); padding: 14px; }
.v2-locked .v2-icon { width: 20px; height: 20px; }

.v2-tcard { background: var(--wot-bg-1); border: 1px solid var(--wot-border); border-radius: var(--wot-r-md); padding: 14px; margin-bottom: 12px; }
.v2-tcard-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; }
.v2-tcard-id { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.v2-tcard-id strong { color: var(--wot-text-0); font-size: 16px; }
.v2-tcard-score { text-align: center; font-size: 22px; font-weight: 800; line-height: 1; }
.v2-tcard-score small { display: block; font-size: 9px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--wot-text-2); margin-top: 2px; }
.v2-tcard-score.is-good { color: var(--wot-bull); } .v2-tcard-score.is-caution { color: var(--wot-chop); } .v2-tcard-score.is-danger { color: var(--wot-bear); }
.v2-outcome-row { display: flex; align-items: center; gap: 8px; margin-top: 12px; flex-wrap: wrap; }
.v2-tcard-result { display: flex; align-items: center; gap: 12px; margin-top: 12px; flex-wrap: wrap; }
.v2-rlabel { display: flex; align-items: center; gap: 8px; font-size: 12px; color: var(--wot-text-2); font-weight: 600; }
.v2-tcard-block { margin-top: 12px; }
.v2-facs, .v2-vchips { display: flex; flex-wrap: wrap; gap: 7px; }
.v2-fac { display: inline-flex; align-items: center; gap: 5px; padding: 7px 11px; border-radius: 999px; font-size: 12px; font-weight: 700;
  border: 1px solid var(--wot-border); background: var(--wot-bg-2); color: var(--wot-text-2); cursor: pointer; }
.v2-fac.is-on { color: var(--wot-bull); border-color: rgba(34,197,94,0.4); background: rgba(34,197,94,0.1); }
.v2-fac .v2-icon { width: 13px; height: 13px; }
.v2-vchip { padding: 6px 10px; border-radius: 999px; font-size: 11px; font-weight: 700; border: 1px solid var(--wot-border);
  background: var(--wot-bg-2); color: var(--wot-text-2); cursor: pointer; }
.v2-vchip.is-on { color: var(--wot-bear); border-color: rgba(239,68,68,0.4); background: rgba(239,68,68,0.1); }
.v2-jflag { font-size: 11px; color: var(--wot-text-2); display: inline-flex; align-items: center; gap: 5px; margin-top: 6px; }
.v2-jflag.is-on { color: var(--wot-bull); } .v2-jflag .v2-icon { width: 13px; height: 13px; }
.v2-tcard-foot { margin-top: 12px; display: flex; justify-content: flex-end; }

/* ── Trade Plan cards ─────────────────────────────────────────────────────*/
.v2-select { padding: 8px 12px; border-radius: 999px; background: var(--wot-bg-2); color: var(--wot-text-1);
  border: 1px solid var(--wot-border); font: inherit; font-size: 12px; font-weight: 700; cursor: pointer; appearance: auto; }
.v2-select:hover { border-color: var(--wot-border-strong); color: var(--wot-text-0); }
.v2-plan-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 16px; }
.v2-plan { background: linear-gradient(180deg, var(--wot-bg-1), var(--wot-bg-0)); border: 1px solid var(--wot-border);
  border-radius: var(--wot-r-lg); padding: 16px; display: flex; flex-direction: column; gap: 12px; position: relative; overflow: hidden; }
.v2-plan::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; background: var(--accent, var(--wot-grad-start)); }
.v2-plan-head { display: flex; align-items: center; gap: 10px; }
.v2-plan-avatar { width: 38px; height: 38px; border-radius: 11px; flex: 0 0 auto; display: flex; align-items: center; justify-content: center;
  font-weight: 800; font-size: 16px; color: #fff; background: var(--accent, var(--wot-grad-start)); }
.v2-plan-id { display: flex; align-items: center; gap: 7px; flex-wrap: wrap; flex: 1; min-width: 0; }
.v2-plan-id strong { font-size: 17px; color: var(--wot-text-0); }
.v2-plan-status { border: none; cursor: pointer; }
.v2-plan-levels { display: grid; grid-template-columns: 1fr 1.3fr 1fr; gap: 8px; background: var(--wot-bg-2); border: 1px solid var(--wot-border); border-radius: var(--wot-r-md); padding: 12px; }
.v2-plvl small { display: block; font-size: 10px; text-transform: uppercase; letter-spacing: .04em; color: var(--wot-text-2); margin-bottom: 4px; }
.v2-plvl b { font-size: 16px; color: var(--wot-text-0); font-variant-numeric: tabular-nums; }
.v2-plvl.is-trigger b { color: var(--wot-entry); }
.v2-plvl.is-stop { text-align: right; } .v2-plvl.is-stop b { color: var(--wot-stop); }
.v2-plvl.is-targets { border-left: 1px solid var(--wot-border); border-right: 1px solid var(--wot-border); padding: 0 10px; }
.v2-ptargets { display: flex; flex-direction: column; gap: 2px; }
.v2-ptargets span { font-size: 12px; color: var(--wot-text-2); } .v2-ptargets b { font-size: 13px; color: var(--wot-target); }
.v2-plan-thesis { margin: 0; font-size: 13px; line-height: 1.5; color: var(--wot-text-1);
  display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical; overflow: hidden; }
.v2-plan-foot { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-top: auto; padding-top: 4px; }
.v2-empty-inline { margin: 20px auto; }
.v2-empty-inline .v2-icon { width: 30px; height: 30px; color: var(--wot-text-3); }

/* ── Modal editor ─────────────────────────────────────────────────────────*/
.v2-modal-scrim { position: fixed; inset: 0; z-index: 200; background: rgba(0,0,0,0.6); backdrop-filter: blur(4px);
  display: flex; align-items: flex-start; justify-content: center; padding: 6vh 16px; overflow-y: auto; }
.v2-modal { width: 100%; max-width: 560px; background: var(--wot-bg-1); border: 1px solid var(--wot-border-strong); border-radius: var(--wot-r-lg);
  box-shadow: var(--wot-shadow-pop); animation: v2fade .18s ease; }
.v2-modal-lg { max-width: 620px; }
.v2-modal-xl { max-width: 820px; }
.v2-modal-body { max-height: 74vh; overflow-y: auto; }
.v2-day-meta { padding-bottom: 10px; margin-bottom: 6px; border-bottom: 1px solid var(--wot-border); }
.v2-day-meta .v2-icon { width: 12px; height: 12px; color: var(--wot-grad-start); vertical-align: middle; }

/* Meaning pills — the transposed summary of each trade (logged or imported) */
.v2-tcard-pills { display: flex; flex-wrap: wrap; gap: 6px; margin: 2px 0 4px; }
.v2-mpill { display: inline-flex; align-items: center; padding: 2px 8px; border-radius: 999px; font-size: 11px; font-weight: 700; border: 1px solid var(--wot-border); color: var(--wot-text-2); }
.v2-mpill.is-good { color: var(--wot-bull); border-color: rgba(34,197,94,0.35); background: rgba(34,197,94,0.08); }
.v2-mpill.is-danger { color: var(--wot-bear); border-color: rgba(239,68,68,0.35); background: rgba(239,68,68,0.08); }
.v2-tcard-edit { margin-top: 4px; }
.v2-tcard-edit > summary { cursor: pointer; font-size: 12px; font-weight: 700; color: var(--wot-text-2); list-style: none; padding: 4px 0; }
.v2-tcard-edit > summary::-webkit-details-marker { display: none; }
.v2-tcard-edit > summary::before { content: "⚙ "; }
.v2-tcard-edit[open] > summary { color: var(--wot-text-0); }
.v2-modal-head { display: flex; align-items: center; justify-content: space-between; padding: 16px 18px; border-bottom: 1px solid var(--wot-border); }
.v2-modal-head h3 { margin: 0; color: var(--wot-text-0); }
.v2-modal-body { padding: 18px; display: flex; flex-direction: column; gap: 8px; }
.v2-modal-body .v2-form-grid label { display: flex; flex-direction: column; gap: 5px; font-weight: 600; }
.v2-form-grid-3 { grid-template-columns: 1fr 1fr 1fr; }
.v2-modal-foot { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 14px 18px; border-top: 1px solid var(--wot-border); }
.v2-del { color: var(--wot-bear); }
@media (max-width: 560px) { .v2-plan-grid { grid-template-columns: 1fr; } }

/* ── Log bar + add panel ──────────────────────────────────────────────────*/
.v2-logbar { display: flex; align-items: center; gap: 14px; }
.v2-logbtn { font-size: 14px; padding: 11px 20px; }
.v2-addpanel { animation: v2fade .18s ease; }
@keyframes v2fade { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: none; } }
.v2-addpanel .v2-panel-head { align-items: center; }

/* ── Calendar (a month of discipline, not dollars) ────────────────────────*/
.v2-cal-head { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; }
.v2-cal-head strong { font-size: 16px; color: var(--wot-text-0); min-width: 150px; text-align: center; }
.v2-cal-head [data-cal-today] { margin-left: auto; }
.v2-cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 6px; }
.v2-cal-wd { text-align: center; font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; color: var(--wot-text-3); padding-bottom: 2px; }
.v2-cal-cell { position: relative; aspect-ratio: 1 / 1; min-height: 56px; border-radius: 10px; border: 1px solid var(--wot-border);
  background: var(--wot-bg-2); padding: 6px; display: flex; flex-direction: column; align-items: stretch; cursor: pointer; transition: .12s; text-align: left; }
.v2-cal-cell.is-future { opacity: .45; cursor: default; }
.v2-cal-mid { flex: 1; display: flex; align-items: center; justify-content: center; }
.v2-cal-mid .v2-cal-score { font-size: 20px; }
.v2-cal-mid-flame .v2-icon { width: 18px; height: 18px; color: var(--wot-grad-start); }
.v2-cal-rest { color: var(--wot-text-3); font-size: 22px; font-weight: 800; line-height: 0; }
.v2-cal-foot { display: flex; align-items: center; justify-content: space-between; gap: 3px; }
.v2-cal-foot > span:last-child { font-size: 10px; font-weight: 700; }
.v2-cal-cell.is-empty { background: transparent; border: none; cursor: default; }
.v2-cal-cell:not(.is-empty):hover { border-color: var(--wot-border-strong); }
.v2-cal-cell.has-trades.is-good { background: rgba(34,197,94,0.1); border-color: rgba(34,197,94,0.3); }
.v2-cal-cell.has-trades.is-caution { background: rgba(245,180,0,0.09); border-color: rgba(245,180,0,0.3); }
.v2-cal-cell.has-trades.is-danger { background: rgba(239,68,68,0.09); border-color: rgba(239,68,68,0.3); }
.v2-cal-cell.is-today { box-shadow: inset 0 0 0 1px var(--wot-grad-end); }
.v2-cal-cell.is-sel { box-shadow: 0 0 0 2px var(--wot-grad-start); border-color: transparent; }
.v2-cal-d { display: flex; align-items: center; gap: 3px; font-size: 12px; font-weight: 700; color: var(--wot-text-1); }
.v2-cal-flame .v2-icon { width: 11px; height: 11px; color: var(--wot-grad-start); }
.v2-cal-meta { margin-top: auto; display: flex; align-items: flex-end; justify-content: space-between; gap: 4px; width: 100%; }
.v2-cal-score { font-size: 17px; font-weight: 800; line-height: 1; }
.v2-cal-score.is-good { color: var(--wot-bull); } .v2-cal-score.is-caution { color: var(--wot-chop); } .v2-cal-score.is-danger { color: var(--wot-bear); }
.v2-cal-sub { display: flex; flex-direction: column; align-items: flex-end; gap: 1px; }
.v2-cal-n { font-size: 10px; font-weight: 700; color: var(--wot-text-2); }
.v2-cal-sub > span:last-child { font-size: 10px; font-weight: 700; }
.v2-cal-score-key { display: inline-flex; align-items: center; justify-content: center; min-width: 22px; padding: 1px 4px; border-radius: 5px;
  font-size: 10px; font-weight: 800; background: rgba(34,197,94,0.12); color: var(--wot-bull); margin-right: 2px; }
.v2-day-analysis { margin-bottom: 14px; padding-bottom: 12px; border-bottom: 1px solid var(--wot-border); }
.v2-day-analysis-pills { display: flex; flex-wrap: wrap; gap: 6px; }
.v2-cal-legend { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 14px; font-size: 11px; color: var(--wot-text-2); }
.v2-cal-legend span { display: inline-flex; align-items: center; gap: 5px; }
.v2-cal-legend .dot { width: 9px; height: 9px; border-radius: 50%; display: inline-block; }
.v2-cal-legend .dot.is-good { background: var(--wot-bull); } .v2-cal-legend .dot.is-caution { background: var(--wot-chop); } .v2-cal-legend .dot.is-danger { background: var(--wot-bear); }
.v2-cal-legend .v2-icon { width: 12px; height: 12px; color: var(--wot-grad-start); }
.v2-day-head { display: flex; align-items: baseline; gap: 12px; margin: 22px 0 12px; padding-top: 16px; border-top: 1px solid var(--wot-border); }
.v2-day-head h4 { margin: 0; font-size: 15px; color: var(--wot-text-0); }
.v2-hist-tabs-inline { display: inline-flex; margin-bottom: 14px; }
@media (max-width: 560px) { .v2-cal-cell { min-height: 44px; padding: 4px; } .v2-cal-r { display: none; } }

/* ── Trade history browser ────────────────────────────────────────────────*/
.v2-hist-tabs { display: flex; gap: 4px; background: var(--wot-bg-2); padding: 4px; border-radius: 999px; border: 1px solid var(--wot-border); }
.v2-htab { padding: 6px 13px; border-radius: 999px; border: none; background: transparent; color: var(--wot-text-2); font-size: 12px; font-weight: 700; cursor: pointer; }
.v2-htab:hover { color: var(--wot-text-0); }
.v2-htab.is-active { background: var(--wot-grad); color: #fff; }
.v2-hist-summary { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 14px; }
.v2-hstat { flex: 1; min-width: 96px; padding: 11px 13px; border-radius: var(--wot-r-md); background: var(--wot-bg-2); border: 1px solid var(--wot-border); }
.v2-hstat small { display: block; font-size: 10px; text-transform: uppercase; letter-spacing: .04em; color: var(--wot-text-2); }
.v2-hstat strong { font-size: 18px; font-weight: 800; color: var(--wot-text-0); }
.v2-hstat strong .v2-muted { font-size: 11px; font-weight: 600; }
.v2-hist-rows { display: flex; flex-direction: column; }
.v2-hrow { display: grid; grid-template-columns: 92px 1fr 96px 130px 40px 1.4fr; align-items: center; gap: 10px;
  padding: 9px 8px; border: none; border-bottom: 1px solid var(--wot-border); font-size: 13px; width: 100%;
  text-align: left; background: transparent; color: inherit; font-family: inherit; cursor: pointer; }
.v2-hrow:hover { background: var(--wot-bg-1); }
.v2-hrow-viol { display: flex; flex-wrap: wrap; gap: 5px; align-items: center; }
.v2-hrow.is-imported { border-left: 2px solid rgba(255,107,31,0.4); padding-left: 8px; }
.v2-hrow-date { font-size: 11px; color: var(--wot-text-2); font-family: var(--wot-font-mono); }
.v2-hrow-sym { font-weight: 700; color: var(--wot-text-0); } .v2-hrow-sym em { font-style: normal; font-weight: 600; color: var(--wot-text-2); font-size: 11px; }
.v2-hrow-oc { display: flex; align-items: center; gap: 8px; }
.v2-hrow-r { font-weight: 700; font-size: 12px; }
.v2-hrow-proc { text-align: center; font-weight: 800; font-size: 14px; }
.v2-hrow-proc.is-good { color: var(--wot-bull); } .v2-hrow-proc.is-caution { color: var(--wot-chop); } .v2-hrow-proc.is-danger { color: var(--wot-bear); }
.v2-hrow-viol { font-size: 11px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
@media (max-width: 720px) {
  .v2-hist-tabs { flex-wrap: wrap; }
  .v2-hrow { grid-template-columns: 70px 1fr 70px; grid-auto-rows: auto; }
  .v2-hrow .v2-pill, .v2-hrow-proc, .v2-hrow-viol { display: none; }
  .v2-hrow-oc { display: flex; }
}

/* ── Patterns ─────────────────────────────────────────────────────────────*/
.v2-leak { display: flex; gap: 12px; padding: 13px; border-radius: var(--wot-r-md); background: rgba(239,68,68,0.08); border: 1px solid rgba(239,68,68,0.25); margin-bottom: 12px; }
.v2-leak .v2-icon { width: 20px; height: 20px; color: var(--wot-bear); flex: 0 0 auto; }
.v2-leak strong { color: var(--wot-text-0); }
.v2-bars { display: flex; flex-direction: column; gap: 8px; }
.v2-bar-row { display: grid; grid-template-columns: 90px 1fr 28px; align-items: center; gap: 10px; }
.v2-bar-label { font-size: 12px; font-weight: 700; color: var(--wot-text-1); }
.v2-bar-n { font-size: 12px; color: var(--wot-text-2); text-align: right; }
.v2-cost { display: flex; gap: 14px; flex-wrap: wrap; }
.v2-cost-big { flex: 1; min-width: 140px; padding: 14px; border-radius: var(--wot-r-md); background: var(--wot-bg-2); border: 1px solid var(--wot-border); }
.v2-cost-big small { display: block; font-size: 11px; color: var(--wot-text-2); text-transform: uppercase; letter-spacing: .04em; }
.v2-cost-big strong { font-size: 26px; font-weight: 800; color: var(--wot-text-0); }
.v2-cost-big.is-proj strong { color: var(--wot-bear); }
.v2-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.v2-table th { text-align: left; font-size: 11px; text-transform: uppercase; letter-spacing: .04em; color: var(--wot-text-2); padding: 8px 6px; border-bottom: 1px solid var(--wot-border); }
.v2-table td { padding: 9px 6px; border-bottom: 1px solid var(--wot-border); color: var(--wot-text-1); }
.v2-exp-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 12px; }
.v2-exp-card { padding: 14px; border-radius: var(--wot-r-md); background: var(--wot-bg-2); border: 1px solid var(--wot-border); }
.v2-exp-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.v2-exp-head strong { color: var(--wot-text-0); }
.v2-exp-stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; margin: 12px 0; }
.v2-exp-stats div { text-align: center; } .v2-exp-stats small { display: block; font-size: 10px; color: var(--wot-text-2); }
.v2-exp-stats b { font-size: 15px; color: var(--wot-text-0); }
.v2-exp-stats .is-good b { color: var(--wot-bull); } .v2-exp-stats .is-danger b { color: var(--wot-bear); }
.v2-coin { margin: 0; }

/* ── Coach ────────────────────────────────────────────────────────────────*/
.v2-coach-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 9px; }
.v2-coach-q { text-align: left; padding: 13px 15px; border-radius: 12px; border: 1px solid var(--wot-border); background: var(--wot-bg-2);
  color: var(--wot-text-1); font-size: 14px; font-weight: 600; cursor: pointer; transition: .12s; }
.v2-coach-q:hover { border-color: var(--wot-border-strong); color: var(--wot-text-0); }
.v2-coach-q.is-sel { background: rgba(255,107,31,0.1); border-color: rgba(255,107,31,0.4); color: var(--wot-text-0); }
.v2-coach-out { margin-top: 16px; }
.v2-coach-answer { padding: 18px; border-radius: var(--wot-r-md); background: var(--wot-bg-2); border: 1px solid var(--wot-border); display: flex; flex-direction: column; gap: 14px; }
.v2-coach-reframe { display: flex; gap: 12px; }
.v2-coach-reframe .v2-icon { width: 22px; height: 22px; color: var(--wot-grad-start); flex: 0 0 auto; }
.v2-coach-reframe p { margin: 0; font-size: 16px; line-height: 1.55; color: var(--wot-text-0); }
.v2-coach-ex { font-size: 13px; color: var(--wot-text-1); padding: 12px 14px; background: var(--wot-bg-1); border-radius: 10px; border-left: 3px solid var(--wot-grad-end); }
.v2-recovery .v2-seg { display: flex; gap: 8px; margin-top: 6px; flex-wrap: wrap; }
.v2-recovery label { margin-top: 12px; font-weight: 600; }
@media (max-width: 560px) { .v2-coach-grid { grid-template-columns: 1fr; } }

/* ── Review ───────────────────────────────────────────────────────────────*/
.v2-review-row { display: flex; gap: 13px; align-items: flex-start; padding: 12px 0; border-bottom: 1px solid var(--wot-border); }
.v2-review-row:last-child { border-bottom: none; }
.v2-review-ico { width: 36px; height: 36px; border-radius: 10px; display: flex; align-items: center; justify-content: center; background: var(--wot-bg-2); flex: 0 0 auto; }
.v2-review-ico .v2-icon { width: 18px; height: 18px; color: var(--wot-text-1); }
.v2-review-ico.is-good { background: rgba(34,197,94,0.12); } .v2-review-ico.is-good .v2-icon { color: var(--wot-bull); }
.v2-review-ico.is-danger { background: rgba(239,68,68,0.12); } .v2-review-ico.is-danger .v2-icon { color: var(--wot-bear); }
.v2-review-row small { display: block; font-size: 11px; color: var(--wot-text-2); text-transform: uppercase; letter-spacing: .04em; }
.v2-review-row strong { color: var(--wot-text-0); font-size: 15px; font-weight: 700; }
.v2-focus { display: flex; gap: 12px; margin-top: 14px; padding: 14px; border-radius: var(--wot-r-md); background: rgba(255,107,31,0.08); border: 1px solid rgba(255,107,31,0.25); }
.v2-focus .v2-icon { width: 20px; height: 20px; color: var(--wot-grad-start); flex: 0 0 auto; }
.v2-focus strong { color: var(--wot-text-0); } .v2-focus p { margin: 4px 0 0; font-size: 13px; color: var(--wot-text-1); }
.v2-stat { padding: 14px; border-radius: var(--wot-r-md); background: var(--wot-bg-2); border: 1px solid var(--wot-border); }
.v2-stat small { display: block; font-size: 11px; color: var(--wot-text-2); text-transform: uppercase; letter-spacing: .04em; }
.v2-stat strong { font-size: 24px; font-weight: 800; color: var(--wot-text-0); }

/* ── Review 2.0 (Composure) ───────────────────────────────────────────────*/
.v2-rev-today { display: flex; align-items: center; gap: 18px; }
.v2-rev-behs { display: flex; flex-direction: column; gap: 7px; }
.v2-rev-beh { display: flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 600; color: var(--wot-text-1); }
.v2-rev-beh-ico { display: inline-flex; flex: 0 0 auto; }
.v2-rev-beh-ico .v2-icon { width: 15px; height: 15px; }
.v2-rev-beh-ico.is-good .v2-icon { color: var(--wot-bull); }
.v2-rev-beh-ico.is-danger .v2-icon { color: var(--wot-bear); }
.v2-rev-beh-ico.is-muted .v2-icon { color: var(--wot-text-2); }
.v2-rev-lead { font-size: 13px; color: var(--wot-text-1); margin: 0 0 10px; }
/* Review: space the stacked sections (Today panel + the two card rows) so they
   don't bunch together — the wrapper is one flex item of .v2-page, its children
   need their own gap. */
.v2-rev-stack { display: flex; flex-direction: column; gap: 18px; }
.v2-rev-chain { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; margin-bottom: 10px; }
.v2-rev-arrow { display: inline-flex; }
.v2-rev-arrow .v2-icon { width: 14px; height: 14px; color: var(--wot-bear); }
.v2-rev-wk { margin-bottom: 11px; }
.v2-rev-wk:last-child { margin-bottom: 0; }
.v2-rev-wk-head { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 5px; font-size: 13px; font-weight: 600; color: var(--wot-text-1); }
.v2-rev-wk-head b { font-variant-numeric: tabular-nums; font-size: 12px; color: var(--wot-text-2); }
.v2-rev-bignums { display: flex; gap: 28px; margin-bottom: 16px; flex-wrap: wrap; }
.v2-rev-bignums .v2-bignum { display: flex; flex-direction: column; gap: 5px; }
.v2-rev-bignums .v2-bignum small { margin-left: 0; }
.v2-rev-cost-list { display: flex; flex-direction: column; }
.v2-rev-cost-row { display: flex; align-items: center; gap: 10px; padding: 9px 0; border-bottom: 1px solid var(--wot-border); font-size: 13px; color: var(--wot-text-1); }
.v2-rev-cost-row:last-child { border-bottom: none; }
.v2-rev-cost-row > span:first-child { flex: 1 1 auto; }
.v2-rev-cost-num { display: inline-flex; align-items: center; justify-content: center; width: 18px; height: 18px; margin-right: 6px;
  border-radius: 5px; font-size: 11px; font-weight: 800; color: #fff; background: var(--wot-grad); }
.v2-rev-cost-n { font-variant-numeric: tabular-nums; font-size: 12px; font-weight: 700; color: var(--wot-text-2); }
.v2-rev-cost-amt { font-variant-numeric: tabular-nums; font-size: 13px; font-weight: 700; color: var(--wot-bear); min-width: 72px; text-align: right; }
.v2-rev-focus-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px; }
.v2-rev-focus { display: flex; align-items: center; gap: 9px; padding: 13px; border-radius: var(--wot-r-md); background: var(--wot-bg-2); border: 1px solid var(--wot-border); color: var(--wot-text-1); font-size: 13px; font-weight: 600; cursor: pointer; text-align: left; transition: border-color .15s, background .15s; }
.v2-rev-focus:hover { border-color: rgba(255,255,255,0.18); }
.v2-rev-focus .v2-icon { width: 17px; height: 17px; flex: 0 0 auto; color: var(--wot-text-2); }
.v2-rev-focus.is-sel { border-color: rgba(34,197,94,0.5); background: rgba(34,197,94,0.1); color: var(--wot-text-0); }
.v2-rev-focus.is-sel .v2-icon { color: var(--wot-bull); }
@media (max-width: 560px) { .v2-rev-today { gap: 12px; } }

/* ── Review: calm breathing orb + the day's verdict ───────────────────────*/
.v2-rev-calm { display: flex; align-items: center; gap: 20px; margin-bottom: 18px; flex-wrap: wrap; }
.v2-rev-orb { display: flex; align-items: center; justify-content: center; flex: 0 0 auto;
  animation: v2breathe 8s ease-in-out infinite; filter: drop-shadow(0 0 30px rgba(255,31,143,0.22)); }
.v2-rev-orb .v2-orb-svg { width: 100%; height: 100%; }
@media (prefers-reduced-motion: reduce) { .v2-rev-orb { animation: none; } }
.v2-rev-verdict { display: flex; flex-direction: column; gap: 3px; }
.v2-rev-verdict strong { font-size: 34px; font-weight: 800; line-height: 1; font-variant-numeric: tabular-nums; }
.v2-rev-verdict span { font-size: 13px; color: var(--wot-text-1); font-weight: 600; }
.v2-rev-verdict.is-green strong { color: var(--wot-bull); }
.v2-rev-verdict.is-yellow strong { color: var(--wot-chop); }
.v2-rev-verdict.is-red strong { color: var(--wot-bear); }
.v2-rev-verdict.is-rest strong { color: var(--wot-text-2); }

/* ── Review: the per-trade × 8-rule scorecard ─────────────────────────────*/
.v2-sc { display: flex; flex-direction: column; overflow-x: auto; }
.v2-sc-row { display: flex; align-items: center; gap: 10px; padding: 9px 0; border-bottom: 1px solid var(--wot-border); min-width: 360px; }
.v2-sc-row:last-child { border-bottom: none; }
.v2-sc-head { color: var(--wot-text-2); font-size: 11px; text-transform: uppercase; letter-spacing: .05em; font-weight: 700; }
.v2-sc-trade { flex: 1 1 auto; min-width: 96px; display: flex; flex-direction: column; gap: 1px; }
.v2-sc-trade b { color: var(--wot-text-0); font-size: 13px; font-weight: 700; }
.v2-sc-trade small { color: var(--wot-text-2); font-size: 11px; font-variant-numeric: tabular-nums; }
.v2-sc-cells { display: flex; gap: 5px; flex: 0 0 auto; }
.v2-sc-h { width: 22px; text-align: center; font-variant-numeric: tabular-nums; }
.v2-sc-cell { width: 22px; height: 22px; border-radius: 6px; display: inline-flex; align-items: center; justify-content: center; background: var(--wot-bg-2); }
.v2-sc-cell .v2-icon { width: 13px; height: 13px; }
.v2-sc-cell.is-ok { background: rgba(34,197,94,0.14); } .v2-sc-cell.is-ok .v2-icon { color: var(--wot-bull); }
.v2-sc-cell.is-no { background: rgba(239,68,68,0.16); } .v2-sc-cell.is-no .v2-icon { color: var(--wot-bear); }
.v2-sc-cell.is-na { color: var(--wot-text-2); font-weight: 700; background: transparent; }
.v2-sc-tier { flex: 0 0 auto; min-width: 48px; text-align: right; font-size: 13px; font-weight: 800; font-variant-numeric: tabular-nums; color: var(--wot-text-2); }
.v2-sc-tier.is-green { color: var(--wot-bull); } .v2-sc-tier.is-yellow { color: var(--wot-chop); } .v2-sc-tier.is-red { color: var(--wot-bear); }
.v2-sc-legend { display: flex; gap: 16px; flex-wrap: wrap; margin-top: 12px; }
.v2-sc-key { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; color: var(--wot-text-2); }
.v2-sc-key i { width: 11px; height: 11px; border-radius: 3px; }
.v2-sc-key .is-ok { background: var(--wot-bull); } .v2-sc-key .is-no { background: var(--wot-bear); } .v2-sc-key .is-na { background: var(--wot-bg-3); }
.v2-sc-nums { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 4px 14px; margin-top: 10px; }
.v2-sc-leg { font-size: 11px; color: var(--wot-text-2); } .v2-sc-leg b { color: var(--wot-text-1); }

/* ── Review: this week's daily score rollup ───────────────────────────────*/
.v2-wkscore { display: flex; align-items: center; gap: 11px; padding: 9px 0; border-bottom: 1px solid var(--wot-border); }
.v2-wkscore:last-child { border-bottom: none; }
.v2-wkscore.is-today { font-weight: 600; }
.v2-wkscore-day { flex: 0 0 auto; min-width: 96px; font-size: 13px; color: var(--wot-text-1); }
.v2-wkscore-day b { color: var(--wot-grad-end); font-weight: 700; }
.v2-wkscore-dot { width: 11px; height: 11px; border-radius: 50%; flex: 0 0 auto; background: var(--wot-text-2); }
.v2-wkscore-dot.is-green { background: var(--wot-bull); } .v2-wkscore-dot.is-yellow { background: var(--wot-chop); } .v2-wkscore-dot.is-red { background: var(--wot-bear); }
.v2-wkscore-dot.is-rest { background: var(--wot-bg-3); }
.v2-wkscore-meta { flex: 1 1 auto; font-size: 12px; color: var(--wot-text-2); }
.v2-wkscore-pct { flex: 0 0 auto; font-size: 13px; font-weight: 800; font-variant-numeric: tabular-nums; color: var(--wot-text-2); }
.v2-wkscore-pct.is-green { color: var(--wot-bull); } .v2-wkscore-pct.is-yellow { color: var(--wot-chop); } .v2-wkscore-pct.is-red { color: var(--wot-bear); }

/* ── Journey ──────────────────────────────────────────────────────────────*/
.v2-ladder { display: flex; flex-direction: column; gap: 8px; }
.v2-ladder-step { display: flex; align-items: center; gap: 13px; padding: 11px 13px; border-radius: var(--wot-r-md); background: var(--wot-bg-2); border: 1px solid var(--wot-border); opacity: .6; }
.v2-ladder-step.is-done { opacity: 1; } .v2-ladder-step.is-done .v2-icon { color: var(--wot-bull); }
.v2-ladder-step.is-cur { opacity: 1; border-color: rgba(255,107,31,0.4); background: rgba(255,107,31,0.08); }
.v2-ladder-step strong { color: var(--wot-text-0); }
.v2-ladder-step .v2-level-badge { width: 36px; height: 36px; font-size: 13px; }
.v2-missions { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.v2-mission { padding: 14px; border-radius: var(--wot-r-md); background: var(--wot-bg-2); border: 1px solid var(--wot-border); display: flex; flex-direction: column; gap: 8px; }
.v2-mission.is-done { border-color: rgba(34,197,94,0.4); }
.v2-mission-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.v2-mission-head strong { color: var(--wot-text-0); font-size: 14px; }
@media (max-width: 560px) { .v2-missions { grid-template-columns: 1fr; } }

/* ── Landing (public) ─────────────────────────────────────────────────────*/
body[data-v2-route="landing"] .v2-nav,
body[data-v2-route="landing"] #v2-header-meta { display: none; }
body[data-v2-route="landing"] .v2-view { padding: 0; }
/* Account tab */
.v2-acct-status { display: flex; flex-direction: column; gap: 8px; align-items: flex-start; }
.v2-acct-tz { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.v2-acct-tz .v2-select { flex: 1; min-width: 220px; }
/* Shared shell footer inside the 2.0 layout (same component as Mindset) */
#v2-shell-footer { margin-top: 28px; }
#v2-shell-footer .wot-lp-foot { width: 100%; }
@keyframes v2breathe { 0%, 100% { transform: scale(0.94); } 50% { transform: scale(1.06); } }
@keyframes v2ember { 0% { transform: translateY(0) scale(.5); opacity: 0; } 12% { opacity: .8; } 100% { transform: translateY(-104vh) scale(1.25); opacity: 0; } }

.v2-land { position: relative; max-width: 980px; margin: 0 auto; padding: 0 22px 100px; }
.v2-land-embers { position: fixed; inset: 0; pointer-events: none; overflow: hidden; z-index: 0; }
.v2-land-embers span { position: absolute; bottom: -12px; width: 5px; height: 5px; border-radius: 50%;
  left: calc(var(--i) * 7%); background: radial-gradient(circle, #FFC777, rgba(255,31,143,0));
  animation: v2ember linear infinite; animation-duration: calc(10s + var(--i) * 0.6s); animation-delay: calc(var(--i) * -1.3s); }
.v2-land > section { position: relative; z-index: 1; }

.v2-land-hero { min-height: 86vh; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; gap: 16px; }
.v2-land-orb { width: 320px; height: 320px; animation: v2breathe 8s ease-in-out infinite; filter: drop-shadow(0 0 60px rgba(255,31,143,0.25)); }
.v2-land-orb .v2-orb-svg { width: 100%; height: 100%; }
.v2-land-title { font-size: clamp(34px, 7vw, 64px); line-height: 1.05; letter-spacing: -0.03em; margin: 0; color: var(--wot-text-0); font-weight: 800; }
.v2-land-title span { background: var(--wot-grad); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }
.v2-land-quote { max-width: 600px; min-height: 48px; font-size: 17px; line-height: 1.5; color: var(--wot-text-1); transition: opacity .4s ease; font-style: italic; }
.v2-land-cta { display: flex; flex-wrap: wrap; gap: 12px; justify-content: center; }
.v2-land-begin { padding: 14px 28px; font-size: 15px; }
.v2-land-credit { font-size: 12px; color: var(--wot-text-2); line-height: 1.6; margin-top: 8px; } .v2-land-credit em { color: var(--wot-text-1); }

.v2-land-manifesto { text-align: center; padding: 80px 0; }
.v2-land-manifesto p { font-size: clamp(20px, 3.4vw, 30px); line-height: 1.4; font-weight: 700; color: var(--wot-text-2); margin: 0 0 6px; }
.v2-land-manifesto .is-grad { background: var(--wot-grad); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }

.v2-land-levers, .v2-land-features { padding: 50px 0; }
.v2-land-levers h2, .v2-land-features h2 { font-size: clamp(24px, 4vw, 34px); text-align: center; color: var(--wot-text-0); letter-spacing: -0.02em; margin: 0 0 10px; }
.v2-land-sub { text-align: center; max-width: 620px; margin: 0 auto 34px; color: var(--wot-text-2); line-height: 1.6; }
.v2-spine { max-width: 640px; margin: 0 auto; display: flex; flex-direction: column; gap: 14px; position: relative; }
.v2-spine::before { content: ""; position: absolute; left: 19px; top: 10px; bottom: 10px; width: 2px; background: linear-gradient(var(--wot-grad-start), var(--wot-grad-end), transparent); opacity: .4; }
.v2-lever { display: flex; gap: 16px; align-items: flex-start; }
.v2-lever-n { flex: 0 0 auto; width: 40px; height: 40px; border-radius: 50%; display: flex; align-items: center; justify-content: center;
  font-weight: 800; color: #fff; background: var(--wot-grad); box-shadow: var(--wot-grad-glow); z-index: 1; }
.v2-lever strong { display: block; color: var(--wot-text-0); font-size: 16px; margin-bottom: 3px; }
.v2-lever p { margin: 0; color: var(--wot-text-2); font-size: 14px; line-height: 1.5; }

.v2-land-fgrid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; max-width: 820px; margin: 0 auto; }
.v2-land-feature { padding: 20px; border-radius: var(--wot-r-lg); background: linear-gradient(180deg, var(--wot-bg-1), var(--wot-bg-0)); border: 1px solid var(--wot-border); }
.v2-land-fic { display: inline-flex; width: 40px; height: 40px; border-radius: 11px; align-items: center; justify-content: center; background: rgba(255,107,31,0.12); margin-bottom: 12px; }
.v2-land-fic .v2-icon { width: 20px; height: 20px; color: var(--wot-grad-start); }
.v2-land-feature strong { display: block; color: var(--wot-text-0); font-size: 16px; margin-bottom: 6px; }
.v2-land-feature p { margin: 0; color: var(--wot-text-2); font-size: 13.5px; line-height: 1.55; }

/* Landing — "Who shows up to trade?" arrival narrative */
.v2-land-arrival { text-align: center; padding: 56px 24px 30px; display: flex; flex-direction: column; align-items: center; gap: 14px;
  max-width: 880px; margin: 0 auto; }
.v2-land-arrival h2 { font-size: clamp(26px, 5vw, 44px); line-height: 1.12; color: var(--wot-text-0); margin: 0; letter-spacing: -0.02em; }
.v2-arrivals { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; width: 100%; margin: 10px 0 6px; }
@media (max-width: 680px) { .v2-arrivals { grid-template-columns: 1fr; } }
.v2-arrival { display: flex; flex-direction: column; align-items: center; gap: 8px; padding: 22px 16px;
  background: rgba(255,255,255,.03); border: 1px solid var(--wot-border); border-radius: 18px; }
.v2-arrival-orb { width: 46px; height: 46px; border-radius: 50%;
  background: radial-gradient(circle at 38% 32%, rgba(var(--c),.95), rgba(var(--c),.25) 70%, transparent);
  box-shadow: 0 0 26px rgba(var(--c),.55); animation: v2ArrivalPulse 3.4s ease-in-out infinite; }
.v2-arrival:nth-child(2) .v2-arrival-orb { animation-delay: .5s; }
.v2-arrival:nth-child(3) .v2-arrival-orb { animation-delay: 1s; }
.v2-arrival strong { font-size: 16px; color: var(--wot-text-0); }
.v2-arrival p { font-size: 13px; line-height: 1.45; color: var(--wot-text-2); margin: 0; }
.v2-arrival-turn { font-size: clamp(16px, 2.4vw, 20px); line-height: 1.6; color: var(--wot-text-1); margin: 8px auto 4px; max-width: 640px; }
.v2-arrival-turn b { color: var(--wot-grad-end); font-weight: 800; }
.v2-land-walk { margin-top: 8px; }
@keyframes v2ArrivalPulse { 0%, 100% { transform: scale(.9); opacity: .82; } 50% { transform: scale(1.08); opacity: 1; } }
@media (prefers-reduced-motion: reduce) { .v2-arrival-orb { animation: none; } }

/* Landing — iPhone companion promo */
.v2-land-ios { text-align: center; padding: 40px 24px 10px; display: flex; flex-direction: column; align-items: center; gap: 14px;
  max-width: 720px; margin: 0 auto; }
.v2-land-ios-kicker { font-size: 11px; font-weight: 800; letter-spacing: .16em; text-transform: uppercase;
  color: var(--wot-grad-end); }
.v2-land-ios h2 { font-size: clamp(24px, 4.5vw, 38px); line-height: 1.2; color: var(--wot-text-0); margin: 0; letter-spacing: -0.02em; }
.v2-land-ios p { font-size: 15px; line-height: 1.6; color: var(--wot-text-1); margin: 0; max-width: 560px; }
.v2-appstore { display: inline-flex; align-items: center; gap: 11px; margin-top: 6px; padding: 10px 20px; border-radius: 14px;
  background: #000; border: 1px solid rgba(255,255,255,.22); color: #fff; text-decoration: none; transition: .18s; }
.v2-appstore:hover { border-color: rgba(255,255,255,.5); transform: translateY(-1px); }
.v2-appstore-apple { display: inline-flex; }
.v2-appstore-txt { display: flex; flex-direction: column; align-items: flex-start; line-height: 1.05; text-align: left; }
.v2-appstore-txt small { font-size: 10px; font-weight: 500; letter-spacing: .02em; opacity: .85; }
.v2-appstore-txt b { font-size: 18px; font-weight: 600; letter-spacing: -.01em; }
.v2-appstore[data-soon] { cursor: default; opacity: .9; }

/* ════ Immersive landing — Apple-product-page scroll ═══════════════════════ */
.v2-land-immersive { --pad: clamp(20px, 5vw, 80px); }
.v2-scrollcue { margin-top: 26px; font-size: 11px; font-weight: 700; letter-spacing: .2em; text-transform: uppercase; color: var(--wot-text-2); display: flex; flex-direction: column; align-items: center; gap: 8px; }
.v2-scrollcue span { width: 1px; height: 30px; background: linear-gradient(var(--wot-grad-end), transparent); animation: v2CueDrop 1.8s ease-in-out infinite; }
@keyframes v2CueDrop { 0%, 100% { opacity: .3; transform: scaleY(.6); transform-origin: top; } 50% { opacity: 1; transform: scaleY(1); } }

.v2-chapter { padding: clamp(56px, 11vh, 130px) 0 clamp(40px, 8vh, 90px); }
.v2-chapter-head { display: flex; align-items: flex-start; gap: 18px; padding: 0 var(--pad); max-width: 1100px; margin: 0 auto 26px; }
.v2-chapter-num { font-size: 13px; font-weight: 900; letter-spacing: .1em; color: var(--wot-grad-end); padding-top: 6px; flex: 0 0 auto; }
.v2-chapter-kicker { font-size: 12px; font-weight: 800; letter-spacing: .16em; text-transform: uppercase; color: var(--wot-grad-end); }
.v2-chapter-head h2 { font-size: clamp(28px, 5.2vw, 52px); line-height: 1.08; letter-spacing: -0.02em; color: var(--wot-text-0); margin: 6px 0 8px; }
.v2-chapter-head p { font-size: clamp(14px, 1.9vw, 18px); line-height: 1.55; color: var(--wot-text-1); margin: 0; max-width: 60ch; }

/* Horizontal swipe rail (the storyboard) */
.v2-rail { display: flex; gap: 16px; overflow-x: auto; scroll-snap-type: x mandatory; scroll-padding-left: var(--pad); padding: 6px var(--pad) 18px; -webkit-overflow-scrolling: touch; scrollbar-width: none; }
.v2-rail::-webkit-scrollbar { display: none; }
.v2-rail-end { flex: 0 0 1px; }
.v2-rail-hint { text-align: right; padding: 0 var(--pad); font-size: 11px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--wot-text-2); opacity: .7; }
@media (hover: none) { .v2-rail-hint { opacity: .9; } }

.v2-slide { flex: 0 0 min(82vw, 460px); scroll-snap-align: center; box-sizing: border-box; min-height: 340px; display: flex; flex-direction: column; padding: 30px 28px; border-radius: 26px;
  background: radial-gradient(120% 90% at 18% 0%, rgba(var(--c, 255,107,31), .16), rgba(var(--c, 255,107,31), .03) 60%, transparent), var(--wot-bg-1);
  border: 1px solid rgba(var(--c, 255,107,31), .28); box-shadow: 0 20px 50px rgba(0,0,0,.35); }
.v2-slide-k { font-size: 11px; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; color: rgb(var(--c, 255,107,31)); }
.v2-slide-t { font-size: clamp(22px, 3.4vw, 30px); line-height: 1.15; letter-spacing: -0.01em; color: var(--wot-text-0); margin: 12px 0 14px; }
.v2-slide-b { font-size: clamp(15px, 1.9vw, 17px); line-height: 1.62; color: var(--wot-text-1); margin: 0; }
.v2-slide-src { margin-top: auto; padding-top: 18px; font-size: 12px; font-style: italic; color: var(--wot-text-2); }
.v2-slide.is-behavior { --c: 255,31,143; }
.v2-slide-num { width: 44px; height: 44px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; font-size: 20px; font-weight: 900; color: #fff; background: var(--wot-grad); box-shadow: 0 8px 22px rgba(255,31,143,.4); }

/* Summary + agreement */
.v2-summary-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; padding: 0 var(--pad); max-width: 1100px; margin: 0 auto; }
@media (max-width: 760px) { .v2-summary-grid { grid-template-columns: 1fr; } }
.v2-summary-cell { padding: 24px; border-radius: 20px; background: var(--wot-bg-1); border: 1px solid var(--wot-border); }
.v2-summary-cell strong { display: block; font-size: 18px; color: var(--wot-text-0); margin: 8px 0 6px; }
.v2-summary-cell p { font-size: 14px; line-height: 1.55; color: var(--wot-text-2); margin: 0; }

.v2-agree { text-align: center; padding: clamp(60px, 12vh, 140px) var(--pad) clamp(50px, 9vh, 110px); display: flex; flex-direction: column; align-items: center; gap: 14px; max-width: 720px; margin: 0 auto; }
.v2-agree-orb { width: 140px; height: 140px; animation: v2breathe 8s ease-in-out infinite; filter: drop-shadow(0 0 50px rgba(255,31,143,.28)); }
.v2-agree-orb .v2-orb-svg { width: 100%; height: 100%; }
.v2-agree h2 { font-size: clamp(34px, 7vw, 64px); line-height: 1.05; letter-spacing: -0.03em; color: var(--wot-text-0); margin: 4px 0; }
.v2-agree p { font-size: clamp(15px, 2.1vw, 19px); line-height: 1.6; color: var(--wot-text-1); margin: 0; max-width: 56ch; }
.v2-agree-btn { margin-top: 12px; }
.v2-agree-btn.is-sealed { background: var(--wot-bull); }
.v2-agree-sealed { color: var(--wot-bull); font-weight: 700; font-size: 14px; }
.v2-land-walk { margin-top: 4px; }

/* Landing — pricing */
.v2-pricing { text-align: center; padding: clamp(48px, 9vh, 100px) var(--pad, 24px) clamp(30px, 6vh, 70px); max-width: 880px; margin: 0 auto; }
.v2-pricing h2 { font-size: clamp(28px, 5vw, 48px); line-height: 1.1; letter-spacing: -0.02em; color: var(--wot-text-0); margin: 6px 0 22px; }
.v2-price-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
@media (max-width: 640px) { .v2-price-grid { grid-template-columns: 1fr; } }
.v2-price-card { position: relative; display: flex; flex-direction: column; align-items: center; gap: 10px; text-align: center;
  padding: 30px 24px; border-radius: 22px; background: var(--wot-bg-1); border: 1px solid var(--wot-border); }
.v2-price-card.is-feature { border-color: var(--wot-grad-end); box-shadow: 0 18px 50px rgba(255,31,143,.16); background: radial-gradient(120% 90% at 50% 0%, rgba(255,31,143,.10), transparent 60%), var(--wot-bg-1); }
.v2-price-badge { position: absolute; top: -11px; left: 50%; transform: translateX(-50%); font-size: 10px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: #fff; background: var(--wot-grad); padding: 4px 12px; border-radius: 999px; }
.v2-price-name { font-size: 13px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--wot-text-2); }
.v2-price-amt { font-size: clamp(34px, 6vw, 48px); font-weight: 900; line-height: 1; color: var(--wot-text-0); }
.v2-price-amt span { font-size: 14px; font-weight: 700; color: var(--wot-text-2); margin-left: 6px; }
.v2-price-card p { font-size: 14px; line-height: 1.5; color: var(--wot-text-1); margin: 2px 0 8px; max-width: 32ch; }
.v2-price-card .v2-btn { width: 100%; }

.v2-land-final { text-align: center; padding: 70px 0 30px; display: flex; flex-direction: column; align-items: center; gap: 18px; }
.v2-land-orb-sm { width: 120px; height: 120px; animation: v2breathe 8s ease-in-out infinite; }
.v2-land-final h2 { font-size: clamp(24px, 4.5vw, 38px); line-height: 1.2; color: var(--wot-text-0); margin: 0; letter-spacing: -0.02em; }

.v2-reveal { opacity: 0; transform: translateY(24px); transition: opacity .7s ease, transform .7s ease; transition-delay: var(--d, 0ms); }
.v2-reveal.is-in { opacity: 1; transform: none; }
@media (max-width: 620px) { .v2-land-fgrid { grid-template-columns: 1fr; } .v2-land-orb { width: 240px; height: 240px; } }
@media (prefers-reduced-motion: reduce) { .v2-land-orb, .v2-land-orb-sm, .v2-saver-orb { animation: none; } .v2-land-embers { display: none; } .v2-reveal { opacity: 1; transform: none; } }

/* ── Screensaver ──────────────────────────────────────────────────────────*/
.v2-saver { position: fixed; inset: 0; z-index: 300; background: radial-gradient(circle at 50% 45%, #160309, #060205 70%);
  display: flex; align-items: center; justify-content: center; opacity: 0; transition: opacity .6s ease; cursor: pointer; }
.v2-saver.is-on { opacity: 1; }
.v2-saver-inner { display: flex; flex-direction: column; align-items: center; gap: 26px; text-align: center; padding: 24px; }
.v2-saver-orb { width: 300px; height: 300px; animation: v2breathe 8s ease-in-out infinite; filter: drop-shadow(0 0 70px rgba(255,31,143,0.3)); }
.v2-saver-orb .v2-orb-svg { width: 100%; height: 100%; }
.v2-saver-line { max-width: 560px; font-size: 20px; line-height: 1.5; font-style: italic; color: var(--wot-text-1); margin: 0; }
.v2-saver-hint { font-size: 11px; text-transform: uppercase; letter-spacing: .15em; color: var(--wot-text-3); }

/* ── Toast / empty ────────────────────────────────────────────────────────*/
.v2-toast { position: fixed; left: 50%; bottom: 26px; transform: translateX(-50%) translateY(20px); opacity: 0; pointer-events: none;
  padding: 12px 20px; border-radius: 12px; background: var(--wot-bg-3); border: 1px solid var(--wot-border-strong); color: var(--wot-text-0);
  font-size: 13px; font-weight: 700; box-shadow: var(--wot-shadow-pop); transition: .25s; z-index: 100; max-width: 90vw; text-align: center; }
.v2-toast.is-show { opacity: 1; transform: translateX(-50%) translateY(0); }
.v2-toast.is-good { border-color: rgba(34,197,94,0.5); } .v2-toast.is-warn { border-color: rgba(245,180,0,0.5); } .v2-toast.is-danger { border-color: rgba(239,68,68,0.5); }
/* Centered confirmation toast — deliberate-action feedback that stays put. */
#v2-ctoast { position: fixed; inset: 0; display: grid; place-items: center; z-index: 200; pointer-events: none; opacity: 0; transition: opacity .18s; }
#v2-ctoast.is-show { opacity: 1; pointer-events: auto; }
#v2-ctoast .v2-ctoast-card { display: flex; align-items: center; gap: 14px; padding: 18px 26px; border-radius: 18px;
  background: var(--wot-bg-3); border: 1px solid var(--wot-border-strong); box-shadow: var(--wot-shadow-pop);
  transform: scale(.92) translateY(8px); transition: transform .22s cubic-bezier(.2,.9,.3,1.2); max-width: min(440px, 88vw); }
#v2-ctoast.is-show .v2-ctoast-card { transform: scale(1) translateY(0); }
#v2-ctoast .v2-ctoast-card.is-good { border-color: rgba(34,197,94,0.55); }
#v2-ctoast .v2-ctoast-card.is-warn { border-color: rgba(245,180,0,0.55); }
#v2-ctoast .v2-ctoast-card.is-danger { border-color: rgba(239,68,68,0.55); }
#v2-ctoast .v2-ctoast-ic { display: grid; place-items: center; width: 40px; height: 40px; flex: 0 0 auto; border-radius: 50%;
  background: var(--wot-grad); color: #fff; font-size: 20px; font-weight: 800; }
#v2-ctoast .v2-ctoast-card.is-warn .v2-ctoast-ic { background: var(--wot-chop); }
#v2-ctoast .v2-ctoast-card.is-danger .v2-ctoast-ic { background: var(--wot-bear); }
#v2-ctoast .v2-ctoast-tx { display: flex; flex-direction: column; gap: 2px; }
#v2-ctoast .v2-ctoast-tx b { color: var(--wot-text-0); font-size: 15px; font-weight: 800; }
#v2-ctoast .v2-ctoast-tx small { color: var(--wot-text-2); font-size: 12.5px; }
.v2-empty { max-width: 520px; margin: 80px auto; text-align: center; padding: 40px; border: 1px dashed var(--wot-border); border-radius: var(--wot-r-lg); }
.v2-empty h3 { color: var(--wot-text-0); }

/* ── 5-behavior redesign (Fire · Edge · Plan · Log · Review) ───────────────── */

/* Log calendar */
.v2-cal { display: grid; grid-template-columns: repeat(7, 1fr); gap: 6px; }
.v2-cal-dow { text-align: center; font-size: 11px; font-weight: 700; color: var(--wot-text-2); padding: 2px 0; }
.v2-cal-day { display: flex; flex-direction: column; align-items: center; justify-content: space-between; gap: 2px;
  min-height: 54px; padding: 5px 4px; border: 1px solid var(--wot-border); border-radius: 9px; background: transparent; color: var(--wot-text-1); cursor: pointer; }
.v2-cal-day[disabled] { opacity: .35; cursor: default; }
.v2-cal-day.is-today { border-color: var(--wot-grad-end); }
.v2-cal-day.is-good { background: rgba(34,197,94,0.12); }
.v2-cal-day.is-caution { background: rgba(245,180,0,0.12); }
.v2-cal-day.is-danger { background: rgba(239,68,68,0.12); }
.v2-cal-day .v2-cal-n { font-size: 10px; font-weight: 700; color: var(--wot-text-2); align-self: flex-start; }
.v2-cal-score { font-size: 16px; font-weight: 800; }
.v2-cal-score small { font-size: 9px; opacity: .7; }
.v2-cal-score.is-good { color: var(--wot-bull); } .v2-cal-score.is-caution { color: var(--wot-chop); } .v2-cal-score.is-danger { color: var(--wot-bear); }
.v2-cal-head { display: flex; align-items: center; gap: 8px; justify-content: center; margin-bottom: 10px; }
.v2-cal-head strong { flex: 1; text-align: center; color: var(--wot-text-0); }
.v2-cal-legend { display: flex; gap: 14px; margin-top: 10px; font-size: 11px; color: var(--wot-text-2); }
.v2-iconbtn { background: var(--wot-bg-2); border: 1px solid var(--wot-border); color: var(--wot-text-1); border-radius: 8px; padding: 6px 9px; cursor: pointer; }

/* Dialogs */
.v2-scrim { position: fixed; inset: 0; background: rgba(0,0,0,0.6); z-index: 40; }
.v2-dialog { position: fixed; z-index: 41; left: 50%; top: 50%; transform: translate(-50%,-50%); width: min(520px, 92vw); max-height: 88vh; overflow: auto;
  background: var(--wot-bg-1); border: 1px solid var(--wot-border); border-radius: var(--wot-r-lg); box-shadow: 0 20px 60px rgba(0,0,0,0.6); }
.v2-dialog-head { display: flex; align-items: center; justify-content: space-between; padding: 16px 18px; border-bottom: 1px solid var(--wot-border); }
.v2-dialog-head h3 { margin: 0; color: var(--wot-text-0); }
.v2-dialog-body { padding: 18px; display: flex; flex-direction: column; gap: 14px; }
.v2-dialog-foot { display: flex; justify-content: flex-end; gap: 12px; align-items: center; }
.v2-field { display: flex; flex-direction: column; gap: 5px; }
.v2-field-block { display: flex; flex-direction: column; gap: 5px; }
.v2-field label { font-size: 12px; font-weight: 600; color: var(--wot-text-2); }
.v2-field input, .v2-field select, .v2-field textarea, .v2-input, .v2-select {
  background: var(--wot-bg-2); border: 1px solid var(--wot-border); border-radius: 10px; padding: 10px; color: var(--wot-text-0); font: inherit; }

/* MC question (gate / commit / edge) */
.v2-mcq, .v2-mc { display: flex; flex-direction: column; gap: 8px; }
.v2-mcq-title, .v2-commit-h { color: var(--wot-text-0); font-size: 14px; margin: 6px 0 0; }
.v2-mcq-prompt, .v2-mc-prompt { font-size: 14px; font-weight: 600; color: var(--wot-text-0); margin: 0; }
.v2-mcq-opt, .v2-mc-choice { text-align: left; padding: 10px 12px; border: 1px solid var(--wot-border); border-radius: 12px;
  background: var(--wot-bg-2); color: var(--wot-text-1); cursor: pointer; font: inherit; }
.v2-mcq-opt.is-on, .v2-mc-choice.is-sel { border-color: var(--wot-grad-end); background: rgba(255,31,143,0.12); color: var(--wot-text-0); font-weight: 600; }
.v2-mcq-opt[data-tone="good"].is-on, .v2-mc-choice.is-good.is-sel { border-color: var(--wot-bull); background: rgba(34,197,94,0.14); }
.v2-mcq-opt[data-tone="danger"].is-on, .v2-mc-choice.is-danger.is-sel { border-color: var(--wot-bear); background: rgba(239,68,68,0.14); }
.v2-mcq-opt[data-tone="caution"].is-on, .v2-mc-choice.is-caution.is-sel { border-color: var(--wot-chop); background: rgba(245,180,0,0.14); }
.v2-mc-choices { display: flex; flex-direction: column; gap: 8px; }

/* Wider log dialog + the 8-rule yes/no gate (two columns) */
.v2-dialog.is-wide { width: min(760px, 94vw); }
.v2-gatemeta { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; }
.v2-gategrid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; }
.v2-gaterule { display: flex; flex-direction: column; gap: 7px; padding: 12px; border: 1px solid var(--wot-border); border-radius: 12px; background: var(--wot-bg-2); }
.v2-gaterule-h { display: flex; align-items: center; gap: 8px; }
.v2-gaterule-h b { color: var(--wot-text-0); font-size: 13px; }
.v2-gaterule-n { width: 19px; height: 19px; flex: 0 0 auto; border-radius: 6px; display: inline-flex; align-items: center; justify-content: center;
  font-size: 11px; font-weight: 800; color: #fff; background: var(--wot-grad); }
.v2-gaterule-q { margin: 0; font-size: 12px; color: var(--wot-text-2); line-height: 1.35; min-height: 32px; }
.v2-yn { display: flex; gap: 8px; }
.v2-yn-btn { flex: 1; padding: 8px; border: 1px solid var(--wot-border); border-radius: 9px; background: var(--wot-bg-1); color: var(--wot-text-2);
  font: inherit; font-weight: 700; cursor: pointer; }
.v2-yn-btn.is-yes.is-on { border-color: var(--wot-bull); background: rgba(34,197,94,0.16); color: var(--wot-bull); }
.v2-yn-btn.is-no.is-on { border-color: var(--wot-bear); background: rgba(239,68,68,0.16); color: var(--wot-bear); }
.v2-cal-note { margin: 10px 0 0; font-size: 11px; }
@media (max-width: 560px) { .v2-gategrid, .v2-gatemeta { grid-template-columns: 1fr; } .v2-gaterule-q { min-height: 0; } }

/* Trade cards (day review) */
.v2-trade-card { padding: 14px; border: 1px solid var(--wot-border); border-radius: 12px; background: var(--wot-bg-1); display: flex; flex-direction: column; gap: 10px; }
.v2-trade-head { display: flex; align-items: center; gap: 8px; }
.v2-trade-head strong { color: var(--wot-text-0); }
.v2-trade-pills { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.v2-trade-foot { display: flex; justify-content: space-between; align-items: center; }
.v2-dayhead { display: flex; align-items: center; gap: 10px; }
.v2-trade-note { margin: 0; font-size: 13px; line-height: 1.45; color: var(--wot-text-1); padding: 9px 11px;
  background: var(--wot-bg-2); border-radius: 9px; border: 1px solid var(--wot-border); white-space: pre-wrap; }
/* Read-only 8-rule scorecard for a logged trade — names, not just numbers. */
.v2-gateres { display: grid; grid-template-columns: repeat(2, 1fr); gap: 6px; }
.v2-gateres-row { display: flex; align-items: center; gap: 8px; padding: 7px 10px; border-radius: 9px;
  background: var(--wot-bg-2); border: 1px solid var(--wot-border); }
.v2-gateres-n { width: 18px; height: 18px; flex: 0 0 auto; border-radius: 5px; display: inline-flex; align-items: center;
  justify-content: center; font-size: 11px; font-weight: 800; color: var(--wot-text-2); background: var(--wot-bg-0); }
.v2-gateres-t { font-size: 12.5px; color: var(--wot-text-1); flex: 1; min-width: 0; }
.v2-gateres-i { font-size: 14px; font-weight: 800; flex: 0 0 auto; }
.v2-gateres-row.is-pass { border-color: rgba(34,197,94,.35); } .v2-gateres-row.is-pass .v2-gateres-i { color: var(--wot-bull); }
.v2-gateres-row.is-pass .v2-gateres-n { color: var(--wot-bull); background: rgba(34,197,94,.14); }
.v2-gateres-row.is-fail { border-color: rgba(239,68,68,.35); } .v2-gateres-row.is-fail .v2-gateres-i { color: var(--wot-bear); }
.v2-gateres-row.is-fail .v2-gateres-n { color: var(--wot-bear); background: rgba(239,68,68,.14); }
.v2-gateres-row.is-na { opacity: .55; } .v2-gateres-row.is-na .v2-gateres-i { color: var(--wot-text-2); }
@media (max-width: 560px) { .v2-gateres { grid-template-columns: 1fr; } }
/* Log dialog journal field */
.lw-note { width: 100%; resize: vertical; min-height: 64px; padding: 10px 12px; border-radius: var(--wot-r-md);
  border: 1px solid var(--wot-border); background: var(--wot-bg-1); color: var(--wot-text-0); font: inherit; font-size: 13px; }
.lw-opt { font-weight: 500; font-size: 12px; }
.v2-btnlink { background: none; border: none; color: var(--wot-grad-end); font: inherit; font-weight: 600; cursor: pointer; display: inline-flex; gap: 5px; align-items: center; }
.v2-btnlink.is-danger { color: var(--wot-bear); }

/* Commit list (Plan) */
.v2-commit-list { display: flex; flex-direction: column; gap: 10px; }
.v2-commit-row { padding: 14px; border: 1px solid var(--wot-border); border-radius: var(--wot-r-md); background: var(--wot-bg-1); cursor: pointer; display: flex; flex-direction: column; gap: 8px; }
.v2-commit-top { display: flex; align-items: center; gap: 8px; }
.v2-commit-top strong { color: var(--wot-text-0); }
.v2-commit-spacer { flex: 1; }
.v2-commit-levels { display: flex; gap: 16px; }
.v2-commit-lev small { display: block; font-size: 9px; font-weight: 700; color: var(--wot-text-2); }
.v2-commit-lev b { font-size: 13px; color: var(--wot-text-1); }
.v2-commit-form { display: flex; flex-direction: column; gap: 12px; }

/* Pulse overlay */
.v2-pulse-scrim { position: fixed; inset: 0; z-index: 60; background: rgba(8,2,6,0.92); display: flex; align-items: center; justify-content: center; }
.v2-pulse-shell { width: min(560px, 94vw); text-align: center; padding: 24px; position: relative; }
.v2-pulse-close { position: absolute; top: 0; right: 0; background: none; border: none; color: var(--wot-text-2); font-size: 20px; cursor: pointer; }
.v2-pulse-body { display: flex; flex-direction: column; align-items: center; gap: 22px; }
.v2-pulse-orb { width: 180px; height: 180px; border-radius: 50%; border: 3px solid transparent;
  background: radial-gradient(closest-side, transparent 62%, transparent 63%), conic-gradient(from 0deg, var(--wot-grad-start), var(--wot-grad-end), var(--wot-grad-start));
  -webkit-mask: radial-gradient(closest-side, transparent 62%, #000 64%); mask: radial-gradient(closest-side, transparent 62%, #000 64%);
  filter: drop-shadow(0 0 22px rgba(255,31,143,0.5)); animation: v2pulse 4s ease-in-out infinite; }
@keyframes v2pulse { 0%,100% { transform: scale(0.94); } 50% { transform: scale(1.0); } }
.v2-pulse-cat { font-size: 12px; font-weight: 700; letter-spacing: 1.4px; color: var(--wot-grad-end); text-transform: uppercase; }
.v2-pulse-q { font-size: 22px; font-weight: 700; color: var(--wot-text-0); max-width: 30ch; }
.v2-pulse-choices { display: flex; gap: 12px; width: 100%; max-width: 420px; }
.v2-pulse-btn { flex: 1; padding: 15px; border-radius: 16px; border: 1px solid var(--wot-border); background: var(--wot-bg-2); color: var(--wot-text-0); font: inherit; font-weight: 700; cursor: pointer; }
.v2-pulse-btn.is-good { background: var(--wot-bull); color: #000; border-color: transparent; }
.v2-pulse-count { font-size: 12px; color: var(--wot-text-2); }
.v2-pulse-done { display: flex; flex-direction: column; align-items: center; gap: 8px; color: var(--wot-text-0); }
.v2-pulse-done-ic { color: var(--wot-bull); font-size: 40px; }

/* Fire scorecard (the agent used inline styles + these hooks) */
.v2-score-row { cursor: pointer; }

/* ── Training tab — the masterclass storyboard library ────────────────────── */
.v2-train-progress { display: flex; align-items: center; gap: 14px; }
.v2-train-progress-bar { flex: 1; height: 8px; border-radius: 999px; background: var(--wot-bg-2); border: 1px solid var(--wot-border); overflow: hidden; }
.v2-train-progress-bar > span { display: block; height: 100%; background: var(--wot-grad); border-radius: 999px; transition: width .4s ease; }
.v2-train-progress-num { font-size: 13px; font-weight: 800; color: var(--wot-text-0); white-space: nowrap; }
.v2-train-progress-num i { font-style: normal; color: var(--wot-text-2); font-weight: 600; margin-left: 2px; }

/* Prominent acknowledgment lead under the Training title */
.v2-train-lead { margin: 6px 0 2px; max-width: 80ch; font-size: 17px; line-height: 1.62; font-weight: 500; color: var(--wot-text-1); }
.v2-train-lead b { font-weight: 800;
  background: var(--wot-grad); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }
.v2-train-lead em { font-style: italic; color: var(--wot-text-0); }
@media (max-width: 720px) { .v2-train-lead { font-size: 15.5px; } }

/* Credit pills — two large side-by-side cards under the Training title */
.v2-train-credits { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.v2-credit-thanks { margin: 2px 0 2px; font-size: 12px; line-height: 1.45; font-style: italic; color: var(--wot-text-2); }
.v2-credit-pill[data-tone="gold"] .v2-credit-thanks { color: #ffce8a; }
.v2-credit-pill[data-tone="calm"] .v2-credit-thanks { color: #9fd6f6; }
.v2-credit-pill { display: flex; gap: 14px; align-items: flex-start; min-height: 150px;
  padding: 18px; border-radius: var(--wot-r-lg); background: var(--wot-bg-2); border: 1px solid var(--wot-border); position: relative; overflow: hidden; }
.v2-credit-pill::before { content: ''; position: absolute; inset: 0; opacity: .10; pointer-events: none; }
.v2-credit-pill[data-tone="gold"]::before { background: radial-gradient(120% 140% at 0% 0%, #FF8A1F, transparent 55%); }
.v2-credit-pill[data-tone="calm"]::before { background: radial-gradient(120% 140% at 0% 0%, #38BDF8, transparent 55%); }
.v2-credit-pill[data-tone="grad"]::before { background: radial-gradient(120% 140% at 0% 0%, #FF6B1F, transparent 50%), radial-gradient(120% 140% at 100% 0%, #FF1F8F, transparent 50%); }
.v2-credit-pill.is-wide { grid-column: 1 / -1; }
.v2-credit-pill[data-tone="grad"] .v2-credit-avatar { background: var(--wot-grad); color: #fff; font-size: 24px; }
.v2-credit-pill[data-tone="grad"] .v2-credit-thanks { color: #ffa9d2; }
.v2-found-rows { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 12px; margin: 8px 0 4px; }
.v2-found-row { padding: 12px; border-radius: var(--wot-r-md); background: var(--wot-bg-0); border: 1px solid var(--wot-border);
  display: flex; flex-direction: column; gap: 6px; }
.v2-found-head { display: flex; flex-direction: column; gap: 2px; }
.v2-found-name { font-size: 14px; font-weight: 800; color: var(--wot-text-0); }
.v2-found-work { font-size: 11px; font-weight: 700; letter-spacing: .3px; color: var(--wot-text-2); }
.v2-found-detail { margin: 0; font-size: 12px; line-height: 1.5; color: var(--wot-text-1); }
.v2-found-row .v2-credit-link { margin-top: auto; align-self: flex-start; }
@media (max-width: 720px) { .v2-found-rows { grid-template-columns: 1fr; } }
.v2-credit-avatar { flex: 0 0 auto; width: 54px; height: 54px; border-radius: 50%; display: flex; align-items: center; justify-content: center;
  font-size: 18px; font-weight: 900; letter-spacing: .5px; color: #0a0a0a; z-index: 1; }
.v2-credit-pill[data-tone="gold"] .v2-credit-avatar { background: linear-gradient(135deg, #FFC85A, #FF6B1F); }
.v2-credit-pill[data-tone="calm"] .v2-credit-avatar { background: linear-gradient(135deg, #7DD3FC, #2563EB); color: #04121f; }
.v2-credit-body { min-width: 0; display: flex; flex-direction: column; gap: 5px; z-index: 1; }
.v2-credit-kicker { font-size: 11px; font-weight: 800; letter-spacing: 1.4px; text-transform: uppercase; color: var(--wot-text-2); }
.v2-credit-name { font-size: 16px; font-weight: 800; color: var(--wot-text-0); }
.v2-credit-name em { font-style: normal; font-size: 13px; font-weight: 700; color: var(--wot-text-2); margin-left: 4px; }
.v2-credit-role { margin: 1px 0 2px; font-size: 12.5px; line-height: 1.5; color: var(--wot-text-1); }
.v2-credit-links { display: flex; flex-wrap: wrap; gap: 8px; margin-top: auto; }
.v2-credit-link { display: inline-flex; align-items: center; gap: 6px; padding: 6px 11px; border-radius: 999px;
  background: var(--wot-bg-0); border: 1px solid var(--wot-border); color: var(--wot-text-1); font-size: 12px; font-weight: 700; text-decoration: none; transition: .15s; }
.v2-credit-link:hover { color: var(--wot-text-0); border-color: rgba(255,255,255,.24); }
.v2-credit-link svg { flex: 0 0 auto; opacity: .9; }
@media (max-width: 720px) { .v2-train-credits { grid-template-columns: 1fr; } }

.v2-train-track { display: flex; flex-direction: column; gap: 12px; }
.v2-train-track-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.v2-train-track-head h3 { margin: 0; font-size: 15px; color: var(--wot-text-0); letter-spacing: .2px; }
.v2-train-track-head p { margin: 3px 0 0; }
.v2-train-series { flex: none; cursor: pointer; border: none; white-space: nowrap; align-self: center;
  font-size: 12px; font-weight: 800; color: #fff; padding: 7px 12px; border-radius: 999px;
  background: var(--wot-grad, linear-gradient(135deg, #FF6B1F, #FF1F8F)); }
.v2-train-series:hover { filter: brightness(1.08); }

/* Cloned-voice callout atop Mindset */
.v2-train-voicecard { position: relative; display: flex; gap: 12px; align-items: flex-start;
  padding: 14px 16px; border-radius: 16px; background: var(--wot-bg-2, #16161b);
  border: 1px solid rgba(255,31,143,.35); }
.v2-train-voicecard-ico { font-size: 22px; line-height: 1.4; }
.v2-train-voicecard-body strong { color: var(--wot-text-0); font-size: 15px; }
.v2-train-voicecard-body p { margin: 4px 0 8px; }
.v2-train-voicecard-btn { cursor: pointer; border: none; color: #fff; font-weight: 800; font-size: 13px;
  padding: 8px 16px; border-radius: 999px; background: var(--wot-grad, linear-gradient(135deg, #FF6B1F, #FF1F8F)); }
.v2-train-voicecard-x { position: absolute; top: 8px; right: 10px; background: none; border: none;
  color: var(--wot-text-2); font-size: 15px; cursor: pointer; }

/* Storyboard narration toggle */
.sb-spk { background: none; border: none; font-size: 18px; cursor: pointer; line-height: 1; padding: 0 6px; }
.v2-train-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 14px; }

.v2-train-card { text-align: left; cursor: pointer; display: flex; flex-direction: column; gap: 8px;
  padding: 16px; border-radius: var(--wot-r-md); background: var(--wot-bg-2); border: 1px solid var(--wot-border);
  color: var(--wot-text-0); font: inherit; position: relative; overflow: hidden; transition: border-color .15s, transform .12s, background .15s; }
.v2-train-card::before { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; background: var(--wot-grad); opacity: .85; }
.v2-train-card[data-tone="gold"]::before { background: linear-gradient(180deg, #FFC85A, #FF8A1F); }
.v2-train-card[data-tone="bear"]::before { background: linear-gradient(180deg, #ff7a5c, var(--wot-bear)); }
.v2-train-card[data-tone="bull"]::before { background: linear-gradient(180deg, #4ade80, var(--wot-bull)); }
.v2-train-card[data-tone="calm"]::before { background: linear-gradient(180deg, #7DD3FC, #2563EB); }
.v2-train-card:hover { border-color: rgba(255,255,255,.22); transform: translateY(-2px); background: var(--wot-bg-3, #1c1c22); }
.v2-train-card.is-done { background: linear-gradient(180deg, rgba(34,197,94,.07), var(--wot-bg-2)); }

.v2-train-card-top { display: flex; align-items: center; gap: 8px; }
.v2-train-num { display: inline-flex; align-items: center; justify-content: center; width: 26px; height: 26px; flex: 0 0 auto;
  border-radius: 50%; background: rgba(255,107,31,.16); color: var(--wot-grad-end); font-weight: 800; font-size: 13px; }
.v2-train-tag { font-size: 11px; font-weight: 800; letter-spacing: 1.2px; text-transform: uppercase; color: var(--wot-text-2); }
.v2-train-slides { margin-left: auto; font-size: 11px; font-weight: 700; color: var(--wot-text-2); }
.v2-train-check { margin-left: auto; display: inline-flex; align-items: center; justify-content: center; width: 22px; height: 22px;
  border-radius: 50%; background: var(--wot-bull); color: #0a0a0a; font-size: 13px; font-weight: 900; }
.v2-train-title { font-size: 15.5px; line-height: 1.25; }
.v2-train-blurb { margin: 0; font-size: 12.5px; line-height: 1.45; color: var(--wot-text-2); flex: 1; }
.v2-train-cta { font-size: 12.5px; font-weight: 800; color: var(--wot-grad-end); display: inline-flex; align-items: center; gap: 4px; }
.v2-train-cta i { font-style: normal; font-size: 16px; line-height: 1; }
@media (max-width: 560px) { .v2-train-grid { grid-template-columns: 1fr; } }

/* ── Behavior storyboard (Fire walk-through) — the orb carries the emotion ── */
.sb-root { position: fixed; inset: 0; z-index: 80; background: radial-gradient(circle at 50% 38%, #170310, #05010a 72%); display: flex; align-items: center; justify-content: center; animation: sbFade .25s ease; }
.sb-root.is-out { opacity: 0; transition: opacity .2s; }
/* Embedded variant — the daily walk mounted inside the screensaver's left panel. */
.sb-root.is-embed { position: relative; inset: auto; z-index: auto; width: 100%; height: 100%; background: transparent; animation: none; }
.sb-root.is-embed .sb-x { display: none; }
.sb-root.is-embed .sb-stagewrap { width: 100%; max-height: none; padding: 8px 8px 4px; }
.sb-stagewrap { width: min(560px, 94vw); max-height: 100dvh; overflow-y: auto; padding: 28px 24px; text-align: center; position: relative; display: flex; flex-direction: column; align-items: center; gap: 18px; }
.sb-x { position: absolute; top: 0; right: 4px; background: none; border: none; color: var(--wot-text-2); font-size: 20px; cursor: pointer; }
.sb-scene { display: flex; flex-direction: column; align-items: center; gap: 14px; width: 100%; opacity: 0; }
.sb-scene.is-in { animation: sbIn .5s ease forwards; }
@keyframes sbIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
@keyframes sbFade { from { opacity: 0; } to { opacity: 1; } }
.sb-orbwrap { height: 168px; display: flex; align-items: center; justify-content: center; }
.sb-h { font-size: 30px; font-weight: 800; color: var(--wot-text-0); margin: 0; line-height: 1.15; max-width: 22ch; }
.sb-s { font-size: 17px; line-height: 1.5; color: var(--wot-text-1); margin: 0; max-width: 32ch; }

/* the orb + emotional states */
.sb-orb { --o1: #FF6B1F; --o2: #FF1F8F; --glow: rgba(255,31,143,.5); width: 150px; height: 150px; border-radius: 50%; position: relative; animation: sbBreathe 5s ease-in-out infinite; }
.sb-orb.small { width: 92px; height: 92px; } .sb-orb.tiny { width: 60px; height: 60px; }
.sb-orb::before { content: ''; position: absolute; inset: 0; border-radius: 50%;
  background: conic-gradient(from 0deg, var(--o1), var(--o2), var(--o1));
  -webkit-mask: radial-gradient(closest-side, #0000 62%, #000 64%); mask: radial-gradient(closest-side, #0000 62%, #000 64%);
  filter: drop-shadow(0 0 24px var(--glow)); }
@keyframes sbBreathe { 0%,100% { transform: scale(.94); } 50% { transform: scale(1); } }
.sb-orb.is-centered { --o1: #FF6B1F; --o2: #FF1F8F; --glow: rgba(255,31,143,.5); }
.sb-orb.is-overconfident { --o1: #FFD37A; --o2: #FFE8C8; --glow: rgba(255,211,122,.7); animation: sbHubris 1.1s ease-in-out infinite; }
@keyframes sbHubris { 0%,100% { transform: scale(1.08); } 50% { transform: scale(1.2); } }
.sb-orb.is-strain { --o1: #FF6B1F; --o2: #FF3D2E; --glow: rgba(255,61,46,.6); animation: sbWobble .5s ease-in-out infinite; }
@keyframes sbWobble { 0%,100% { transform: rotate(-3deg) scale(.97); } 50% { transform: rotate(3deg) scale(1.02); } }
.sb-orb.is-panic { --o1: #FF2E2E; --o2: #FF7A7A; --glow: rgba(255,46,46,.8); animation: sbShake .12s linear infinite; }
@keyframes sbShake { 0% { transform: translate(2px,-1px); } 25% { transform: translate(-2px,1px); } 50% { transform: translate(1px,2px); } 75% { transform: translate(-1px,-2px); } 100% { transform: translate(2px,0); } }
.sb-orb.is-cold, .sb-orb.is-dying { --o1: #5A6B7A; --o2: #2F3A46; --glow: rgba(90,107,122,.3); opacity: .55; animation: sbDim 4s ease-in-out infinite; }
@keyframes sbDim { 0%,100% { opacity: .4; } 50% { opacity: .7; } }
.sb-orb.is-tilt { --o1: #C81E2E; --o2: #FF4D2E; --glow: rgba(200,30,46,.75); animation: sbOverheat .35s ease-in-out infinite; }
@keyframes sbOverheat { 0%,100% { transform: scale(1); } 50% { transform: scale(1.07); } }
.sb-orb.is-revenge { --o1: #FF2E2E; --o2: #1a0000; --glow: rgba(255,46,46,.7); animation: sbWreck .7s linear infinite; }
@keyframes sbWreck { 0% { transform: scale(1.18) rotate(0) skew(0); } 33% { transform: scale(1.26) rotate(120deg) skew(5deg); } 66% { transform: scale(1.1) rotate(240deg) skew(-5deg); } 100% { transform: scale(1.18) rotate(360deg); } }
.sb-orb.is-ash { --o1: #2A2A2E; --o2: #0c0c0e; --glow: rgba(0,0,0,.4); opacity: .65; animation: sbFragment 3.5s ease-in-out infinite; }
@keyframes sbFragment { 0% { transform: scale(1) rotate(0); opacity: .65; } 100% { transform: scale(.66) rotate(45deg); opacity: .3; } }
.sb-orb.is-restored { --o1: #FF6B1F; --o2: #FF1F8F; --glow: rgba(34,197,94,.55); animation: sbBreathe 5s ease-in-out infinite; }
.sb-orb.is-restored::after { content: ''; position: absolute; inset: -6px; border-radius: 50%; box-shadow: 0 0 22px rgba(34,197,94,.4); }
.sb-orb.is-serene { --o1: #FFB46B; --o2: #FF8AC2; --glow: rgba(255,180,107,.5); animation: sbSerene 7s ease-in-out infinite; }
@keyframes sbSerene { 0%,100% { transform: scale(.96); } 50% { transform: scale(1.02); } }
.sb-orb.is-serene::after { content: ''; position: absolute; inset: -12px; border-radius: 50%; box-shadow: 0 0 34px rgba(34,197,94,.28); animation: sbHalo 7s ease-in-out infinite; }
@keyframes sbHalo { 0%,100% { opacity: .5; } 50% { opacity: .9; } }
.sb-orbs { display: flex; align-items: center; justify-content: center; gap: 4px; }
.sb-thread { width: 30px; height: 2px; background: linear-gradient(90deg, var(--wot-grad-start), var(--wot-grad-end)); }
.sb-thread.is-frayed { background: var(--wot-text-2); opacity: .35; }

/* stage visuals */
.sb-stage { min-height: 56px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; }
.sb-chart { width: 220px; height: 70px; }
.sb-tsla { width: min(440px, 94vw); height: auto; display: block; margin: 0 auto; background: var(--wot-bg-1); border: 1px solid var(--wot-border); border-radius: 16px; padding: 8px; }
.sb-tag { font-size: 12px; font-weight: 700; color: var(--wot-text-2); border: 1px solid var(--wot-border); border-radius: 999px; padding: 4px 11px; }
.sb-tag.is-good { color: var(--wot-bull); border-color: rgba(34,197,94,.4); }
.sb-tag.is-bad { color: var(--wot-bear); border-color: rgba(239,68,68,.4); }
.sb-tags { display: flex; gap: 6px; flex-wrap: wrap; justify-content: center; }
.sb-number.is-loss { font-size: 42px; font-weight: 900; color: var(--wot-bear); animation: sbThrob .6s ease-in-out infinite; }
@keyframes sbThrob { 0%,100% { transform: scale(1); } 50% { transform: scale(1.08); } }
.sb-sizebar { width: 200px; }
.sb-zero-line { display: block; font-size: 10px; color: var(--wot-text-2); border-top: 1px dashed var(--wot-text-2); padding-top: 2px; }
.sb-bar { height: 42px; background: linear-gradient(var(--wot-grad-start), var(--wot-grad-end)); border-radius: 6px; margin-top: 4px; animation: sbGrow .5s ease; }
@keyframes sbGrow { from { height: 0; } to { height: 42px; } }
.sb-voice { font-size: 28px; font-weight: 700; line-height: 1.3; color: var(--wot-bear); font-style: italic; opacity: .9; animation: sbThrob 1.1s ease-in-out infinite; }
.sb-health { display: flex; flex-direction: column; align-items: center; gap: 6px; }
.sb-clock { font-size: 32px; font-weight: 900; color: var(--wot-text-1); font-variant-numeric: tabular-nums; }
.sb-ecg { width: 280px; height: 44px; }

/* nav */
.sb-dots { display: flex; gap: 5px; flex-wrap: wrap; justify-content: center; max-width: 330px; }
.sb-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--wot-bg-3); }
.sb-dot.is-on { background: var(--wot-grad-end); } .sb-dot.is-done { background: var(--wot-text-2); }
.sb-foot { width: 100%; max-width: 420px; }
.sb-next { width: 100%; padding: 15px; border: none; border-radius: 16px; background: var(--wot-grad); color: #fff; font-size: 16px; font-weight: 800; cursor: pointer; }
.sb-rep { display: flex; flex-direction: column; gap: 10px; }
.sb-rep-btn { padding: 14px; border-radius: 14px; border: 1px solid var(--wot-border); background: var(--wot-bg-2); color: var(--wot-text-0); font: inherit; font-weight: 600; cursor: pointer; }
.sb-rep-btn.is-yes { border-color: rgba(34,197,94,.4); } .sb-rep-btn.is-no { border-color: rgba(239,68,68,.4); }
.sb-cut { color: var(--wot-chop); font-size: 14px; margin: 0 0 10px; }
/* Walk navigation — section rail (jump between rules) + compact Back/Next */
.sb-rail { display: flex; gap: 6px; flex-wrap: wrap; justify-content: center; max-width: 340px; }
.sb-railchip { width: 26px; height: 26px; border-radius: 50%; border: 1px solid var(--wot-border); background: var(--wot-bg-2); color: var(--wot-text-2); font-size: 12px; font-weight: 800; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; transition: .15s; }
.sb-railchip:hover { color: var(--wot-text-0); }
.sb-railchip.is-on { background: var(--wot-grad); color: #fff; border-color: transparent; }
.sb-nav { display: flex; align-items: center; justify-content: center; gap: 12px; width: 100%; }
.sb-nav .sb-next { width: auto; flex: 0 1 auto; padding: 11px 30px; font-size: 15px; border-radius: 14px; }
.sb-nav .sb-rep { flex: 1; }
.sb-back { flex: 0 0 auto; padding: 11px 16px; border-radius: 14px; border: 1px solid var(--wot-border); background: var(--wot-bg-2); color: var(--wot-text-1); font-size: 14px; font-weight: 700; cursor: pointer; }
.sb-back:hover { color: var(--wot-text-0); border-color: var(--wot-border-strong); }

/* Fire launcher card */
.v2-walk { display: flex; align-items: center; gap: 14px; width: 100%; text-align: left; cursor: pointer;
  padding: 16px; border: 1px solid var(--wot-grad-end); border-radius: var(--wot-r-md); background: linear-gradient(135deg, rgba(255,107,31,.14), rgba(255,31,143,.14)); color: var(--wot-text-0); }
.v2-walk b { display: block; font-size: 16px; } .v2-walk span { font-size: 12px; color: var(--wot-text-1); }
.v2-walk.is-done { border-color: var(--wot-border); background: var(--wot-bg-1); }

/* storyboard — hero/typography redesign */
.sb-hero { width: 100%; display: flex; flex-direction: column; align-items: center; }
.sb-scene.is-reframe .sb-h { font-size: 40px; line-height: 1.08; max-width: 15ch; }
.sb-scene.is-reframe .sb-s { font-size: 18px; max-width: 30ch; }
.sb-bignum { font-size: 76px; font-weight: 900; line-height: 1; display: flex; flex-direction: column; align-items: center; gap: 10px; color: var(--wot-text-0); }
.sb-bignum.is-loss { color: var(--wot-bear); animation: sbThrob .7s ease-in-out infinite; }
.sb-bignum small { font-size: 15px; font-weight: 700; letter-spacing: .4px; color: var(--wot-text-2); }
.sb-pillbig { font-size: 15px; font-weight: 700; color: var(--wot-text-1); border: 1px solid var(--wot-border); border-radius: 999px; padding: 9px 18px; }
.sb-pillbig.is-good { color: var(--wot-bull); border-color: rgba(34,197,94,.45); }
.sb-pillbig.is-bad { color: var(--wot-bear); border-color: rgba(239,68,68,.45); }
.sb-chips { display: flex; gap: 8px; flex-wrap: wrap; justify-content: center; }
.sb-sizebar { width: 240px; display: flex; flex-direction: column; align-items: stretch; gap: 6px; }
.sb-bar { height: 64px; }

/* ════ STORYBOARD — cinematic redesign (overrides all earlier sb- rules) ════ */
.sb-root { background:
   radial-gradient(120% 78% at 50% 20%, rgba(var(--emo, 255,107,31), 0.24), transparent 60%),
   radial-gradient(140% 100% at 50% 120%, rgba(0,0,0,0.55), transparent 70%),
   #060109; transition: background .6s ease; }
.sb-stagewrap { width: min(680px, 100vw); max-height: 100dvh; overflow-y: auto; padding: 22px 22px 30px; gap: 16px; }
.sb-x { font-size: 24px; top: 10px; right: 14px; }

.sb-scene { gap: 16px; opacity: 1; }
.sb-scene, .sb-scene.is-in { animation: none; }
.sb-scene > * { opacity: 0; }
.sb-scene.is-in .sb-hero    { animation: sbUp .55s cubic-bezier(.2,.7,.3,1) forwards; }
.sb-scene.is-in .sb-h       { animation: sbUp .55s cubic-bezier(.2,.7,.3,1) .10s forwards; }
.sb-scene.is-in .sb-s       { animation: sbUp .55s cubic-bezier(.2,.7,.3,1) .20s forwards; }
.sb-scene.is-in .sb-orbwrap { animation: sbUp .65s cubic-bezier(.2,.7,.3,1) .30s forwards; }
@keyframes sbUp { from { opacity: 0; transform: translateY(26px); } to { opacity: 1; transform: none; } }

/* Typography — big and dramatic */
.sb-h { font-size: clamp(32px, 8.6vw, 54px); font-weight: 900; letter-spacing: -.6px; line-height: 1.04; max-width: 16ch; color: var(--wot-text-0); margin: 0; text-wrap: balance; }
.sb-scene.is-reframe .sb-h { font-size: clamp(40px, 12.5vw, 72px); max-width: 13ch; }
.sb-s { font-size: clamp(17px, 4.6vw, 21px); line-height: 1.5; color: var(--wot-text-1); max-width: 30ch; margin: 0; }
.sb-scene.is-reframe .sb-s { font-size: clamp(17px, 4.6vw, 22px); }

/* Chart — near full-bleed, big */
.sb-tsla { width: min(680px, 96vw); height: auto; display: block; margin: 0 auto; background: rgba(12,9,16,.55); border: 1px solid var(--wot-border); border-radius: 18px; padding: 6px 8px; }
.sb-hero { width: 100%; }

/* Huge numbers */
.sb-bignum { font-size: clamp(76px, 27vw, 156px); font-weight: 900; line-height: .9; letter-spacing: -3px; gap: 14px; }
.sb-bignum small { font-size: clamp(14px, 3.8vw, 19px); letter-spacing: .3px; }

/* Orb scaled by the slide's role: emotion slides = the orb IS the hero */
.sb-orbwrap { height: auto; margin-top: 4px; }
.sb-scene.is-emotion .sb-orbwrap > .sb-orb { width: 220px; height: 220px; }
.sb-scene.is-reframe .sb-orbwrap > .sb-orb { width: 140px; height: 140px; }
.sb-scene.is-hero .sb-orbwrap > .sb-orb,
.sb-scene.is-rep  .sb-orbwrap > .sb-orb { width: 98px; height: 98px; }

/* Big tags / chips / clock */
.sb-pillbig { font-size: clamp(15px, 4vw, 18px); padding: 10px 20px; }
.sb-voice { font-size: clamp(26px, 8vw, 38px); }
.sb-clock { font-size: clamp(30px, 9vw, 44px); }
.sb-ecg { width: min(320px, 84vw); height: 48px; }

/* Footer / dots */
.sb-foot { max-width: 460px; }
.sb-next { padding: 17px; font-size: 17px; border-radius: 18px; }
.sb-rep-btn { padding: 16px; font-size: 15px; }
.sb-dots { max-width: 360px; gap: 4px; }
.sb-dot { width: 6px; height: 6px; }

/* ════ STORYBOARD — containment + fit (final, wins over all above) ════ */
.sb-root { overflow: hidden; }
.sb-stagewrap { width: 100%; max-width: 560px; box-sizing: border-box; margin: 0 auto; padding: 18px 16px 26px; overflow-x: hidden; }
.sb-scene { width: 100%; box-sizing: border-box; }
.sb-scene > * { max-width: 100%; box-sizing: border-box; }
.sb-hero, .sb-foot, .sb-dots, .sb-next, .sb-rep, .sb-orbwrap { width: 100%; box-sizing: border-box; }
.sb-tsla { width: 100%; max-width: 100%; }
.sb-h, .sb-s { margin-left: auto; margin-right: auto; }
.sb-bignum { white-space: nowrap; max-width: 100%; font-size: clamp(46px, 15.5vw, 108px); letter-spacing: -2px; }
.sb-rep { display: flex; flex-direction: column; gap: 10px; }
.sb-rep-btn { width: 100%; box-sizing: border-box; }

/* ════ STORYBOARD — bulletproof layout (final word) ════ */
html, body { overflow-x: hidden; }
.sb-root { position: fixed; inset: 0; display: grid; place-items: center; overflow: hidden; }
.sb-stagewrap { width: min(100vw, 520px); height: 100dvh; max-height: 100dvh; box-sizing: border-box; margin: 0; padding: 16px 18px 22px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 14px; overflow-y: auto; overflow-x: hidden; }
.sb-scene { width: 100%; display: flex; flex-direction: column; align-items: center; gap: 14px; }
.sb-scene > *, .sb-hero, .sb-foot, .sb-dots, .sb-orbwrap, .sb-rep, .sb-next, .sb-rep-btn { width: 100%; max-width: 100%; box-sizing: border-box; }
.sb-tsla { width: 100%; }
.sb-h { font-size: clamp(30px, 8vw, 50px); }
.sb-scene.is-reframe .sb-h { font-size: clamp(38px, 11.5vw, 64px); }
.sb-s { font-size: clamp(16px, 4.4vw, 20px); }
.sb-bignum { font-size: clamp(40px, 13.5vw, 100px); white-space: nowrap; }
.sb-x { z-index: 2; }

/* ════ STORYBOARD v2 — orb-centric, spacious architecture (final) ════ */
.sb-stagewrap { justify-content: center; gap: clamp(22px, 6vw, 40px); padding: 26px 20px; }
.sb-scene { gap: clamp(22px, 6vw, 38px); }
.sb-scene > * { opacity: 0; }
/* kicker = small demoted header */
.sb-kicker { font-size: clamp(13px, 3.6vw, 15px); font-weight: 800; letter-spacing: 2.6px; text-transform: uppercase; color: rgb(var(--emo)); opacity: .9; }
/* orb — big, with air */
.sb-orbwrap { position: relative; display: grid; place-items: center; width: 100%; margin: clamp(2px, 1.5vw, 10px) 0; }
.sb-scene.is-orb     .sb-orbwrap > .sb-orb { width: clamp(218px, 62vw, 296px); height: clamp(218px, 62vw, 296px); }
.sb-scene.is-reframe .sb-orbwrap > .sb-orb { width: clamp(184px, 50vw, 240px); height: clamp(184px, 50vw, 240px); }
.sb-scene.is-rep     .sb-orbwrap > .sb-orb { width: clamp(160px, 44vw, 208px); height: clamp(160px, 44vw, 208px); }
/* the figure burning inside the ring's hollow centre */
.sb-center { position: absolute; inset: 0; display: grid; place-items: center; pointer-events: none; }
.sb-figure { font-size: clamp(30px, 8.6vw, 48px); font-weight: 900; letter-spacing: -1px; white-space: nowrap; }
.sb-figure.is-loss { color: var(--wot-bear); text-shadow: 0 0 24px rgba(239,68,68,.5); }
.sb-figure.is-gold { color: #FFC85A; text-shadow: 0 0 24px rgba(255,200,90,.45); }
.sb-figure.is-win  { color: var(--wot-bull); text-shadow: 0 0 24px rgba(34,197,94,.45); }
.sb-figure.is-cold { color: #9fb3c4; }
/* the prominent MEANING line — the hero text now */
.sb-line { font-size: clamp(21px, 5.8vw, 28px); line-height: 1.42; font-weight: 600; color: var(--wot-text-0); max-width: 24ch; margin: 0 auto; }
.sb-scene.is-reframe .sb-line { font-size: clamp(34px, 9.6vw, 54px); line-height: 1.1; font-weight: 800; letter-spacing: -.6px; max-width: 13ch; }
.sb-scene.is-rep .sb-line { font-size: clamp(24px, 6.6vw, 32px); font-weight: 700; max-width: 18ch; }
/* chart big */
.sb-chartwrap { width: 100%; }
.sb-chartwrap .sb-tsla { width: 100%; }
/* staggered punch-in for the new element names */
.sb-scene.is-in .sb-kicker    { animation: sbUp .5s ease forwards; }
.sb-scene.is-in .sb-orbwrap,
.sb-scene.is-in .sb-chartwrap { animation: sbUp .55s ease .12s forwards; }
.sb-scene.is-in .sb-line      { animation: sbUp .55s ease .26s forwards; }

/* storyboard — persistent board title bar (which behavior) */
.sb-topbar { position: absolute; top: 0; left: 0; right: 0; display: flex; align-items: center; justify-content: space-between; padding: 14px 18px; z-index: 3; }
.sb-board-title { font-size: 13px; font-weight: 800; letter-spacing: 2px; text-transform: uppercase; color: var(--wot-text-1); opacity: .85; }
.sb-topbar .sb-x { position: static; }
.sb-stagewrap { padding-top: 52px; }

/* ════ STORYBOARD v2 — fit + breathing room + prominent title (final) ════ */
/* board title: white, prominent (was gray) */
.sb-board-title { color: var(--wot-text-0); opacity: 1; font-size: 15px; font-weight: 800; letter-spacing: 2px; }
/* figure fits cleanly inside the ring's hollow — no bleed */
.sb-figure { font-size: clamp(22px, 6.2vw, 36px); letter-spacing: -.5px; max-width: 86%; overflow: visible; }
/* more breathing room per slide */
.sb-stagewrap { gap: clamp(26px, 7vw, 44px); padding: 26px 18px 30px; padding-top: 58px; }
.sb-scene { gap: clamp(26px, 6.5vw, 42px); }
.sb-orbwrap { margin: clamp(8px, 3vw, 18px) 0; }
.sb-line { margin-top: 2px; }
/* chart: never clipped on the right; comfortable max width, centered */
.sb-chartwrap { width: 100%; overflow: visible; }
.sb-chartwrap .sb-tsla { width: 100%; max-width: 460px; margin: 0 auto; overflow: visible; }

/* ════ STORYBOARD v3 — real scenarios: legible standalone figures, no text on orb ════ */
.sb-statwrap { display: flex; flex-direction: column; align-items: center; gap: 6px; width: 100%; }
.sb-figure { font-size: clamp(34px, 9vw, 56px); font-weight: 900; letter-spacing: -1px; line-height: 1.12; white-space: normal; max-width: 92%; text-align: center; }
.sb-figure.is-loss { color: var(--wot-bear); text-shadow: 0 0 30px rgba(239,68,68,.45); }
.sb-figure.is-gold { color: #FFC85A; text-shadow: 0 0 30px rgba(255,200,90,.4); }
.sb-figure.is-win  { color: var(--wot-bull); text-shadow: 0 0 30px rgba(34,197,94,.4); }
.sb-figure.is-cold { color: #9fb3c4; }
.sb-figure.is-mute { color: var(--wot-text-1); }
.sb-statsub { font-size: clamp(13px, 3.6vw, 16px); color: var(--wot-text-2); font-weight: 600; }
/* orb sizing per slide type (orb is emotion only — never holds text) */
.sb-scene.is-stat .sb-orbwrap > .sb-orb { width: clamp(96px, 26vw, 128px); height: clamp(96px, 26vw, 128px); }
.sb-scene.is-orb  .sb-orbwrap > .sb-orb { width: clamp(220px, 62vw, 296px); height: clamp(220px, 62vw, 296px); }
.sb-scene.is-reframe .sb-orbwrap > .sb-orb { width: clamp(180px, 50vw, 236px); height: clamp(180px, 50vw, 236px); }
.sb-scene.is-rep  .sb-orbwrap > .sb-orb { width: clamp(150px, 42vw, 200px); height: clamp(150px, 42vw, 200px); }
.sb-chartwrap .sb-tsla { width: 100%; max-width: 480px; }

/* fix: the standalone figure (stat) needs the same fade-in as other elements */
.sb-scene.is-in .sb-statwrap { animation: sbUp .55s ease .12s forwards; }

/* ════ PLAN + LEVELS — shared chrome ════════════════════════════════════════ */
.v2-seg { display: inline-flex; background: var(--wot-bg-2); border: 1px solid var(--wot-border); border-radius: 12px; padding: 3px; }
.v2-seg button { border: none; background: none; color: var(--wot-text-2); font: inherit; font-weight: 700; padding: 7px 16px; border-radius: 9px; cursor: pointer; }
.v2-seg button.is-on { background: var(--wot-grad); color: #fff; }
.v2-addname { display: flex; gap: 8px; align-items: center; }
.v2-addname input { background: var(--wot-bg-2); border: 1px solid var(--wot-border); border-radius: 10px; padding: 9px 12px; color: var(--wot-text-0); font: inherit; width: 130px; }
.v2-logbar { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; justify-content: space-between; }

/* ── Plan date selector (Daily day / Weekly Mon–Fri range buckets) ── */
.v2-plan-controls { display: inline-flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.v2-datesel { position: relative; }
.v2-datesel-btn { display: inline-flex; align-items: center; gap: 9px; background: var(--wot-bg-2);
  border: 1px solid var(--wot-border); border-radius: 12px; padding: 8px 13px; color: var(--wot-text-0);
  font: inherit; font-weight: 700; cursor: pointer; transition: border-color .15s, background .15s; }
.v2-datesel-btn:hover { border-color: var(--wot-border-strong); }
.v2-datesel.is-open .v2-datesel-btn { border-color: var(--wot-grad-end); }
.v2-datesel-cal { width: 16px; height: 16px; color: var(--wot-grad-end); flex: 0 0 auto; }
.v2-datesel-chev { width: 14px; height: 14px; color: var(--wot-text-2); flex: 0 0 auto; transition: transform .18s; }
.v2-datesel.is-open .v2-datesel-chev { transform: rotate(180deg); }
.v2-datesel-btn em { font-style: normal; font-weight: 700; color: var(--wot-grad-end); }
.v2-datesel-menu { position: absolute; z-index: 30; top: calc(100% + 6px); left: 0; min-width: 232px;
  background: var(--wot-bg-1); border: 1px solid var(--wot-border-strong); border-radius: 14px;
  box-shadow: 0 18px 50px rgba(0,0,0,.6); padding: 6px; max-height: 320px; overflow-y: auto;
  animation: v2-datesel-in .14s ease; }
@keyframes v2-datesel-in { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: none; } }
.v2-datesel-opt { display: flex; align-items: center; justify-content: space-between; gap: 14px; width: 100%;
  background: none; border: none; border-radius: 9px; padding: 9px 11px; color: var(--wot-text-1);
  font: inherit; font-weight: 600; cursor: pointer; text-align: left; }
.v2-datesel-opt:hover { background: var(--wot-bg-2); color: var(--wot-text-0); }
.v2-datesel-opt.is-on { background: rgba(255,31,143,.12); color: var(--wot-text-0); }
.v2-datesel-opt-main em { font-style: normal; color: var(--wot-grad-end); font-weight: 700; margin-left: 6px; font-size: 12px; }
.v2-datesel-opt-meta { font-size: 12px; color: var(--wot-text-2); font-weight: 600; flex: 0 0 auto; }

/* ── Primary-ticker rail (planned names for the selected day/week) ── */
.v2-tkr-rail { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.v2-tkr-rail.is-empty { color: var(--wot-text-2); font-size: 13px; }
.v2-tkr-chip { display: inline-flex; align-items: center; gap: 7px; background: var(--wot-bg-2);
  border: 1px solid var(--wot-border); border-radius: 999px; padding: 7px 14px; color: var(--wot-text-1);
  font: inherit; font-weight: 700; font-size: 13px; cursor: pointer; transition: border-color .15s, color .15s, background .15s; }
.v2-tkr-chip:hover { border-color: var(--wot-border-strong); color: var(--wot-text-0); }
.v2-tkr-chip.is-on { background: var(--wot-grad); color: #fff; border-color: transparent; }
.v2-tkr-dot { width: 8px; height: 8px; border-radius: 50%; flex: 0 0 auto; }
.v2-tkr-chip.is-on .v2-tkr-dot { box-shadow: 0 0 0 2px rgba(255,255,255,.35); }
.v2-tkr-empty { color: var(--wot-text-2); font-size: 13px; }
.v2-tkr-mode { display: inline-flex; background: var(--wot-bg-2); border: 1px solid var(--wot-border); border-radius: 999px; padding: 3px; margin-right: 4px; }
.v2-tkr-mode button { border: none; background: none; color: var(--wot-text-2); font: inherit; font-weight: 700; font-size: 12px; padding: 5px 12px; border-radius: 999px; cursor: pointer; }
.v2-tkr-mode button.is-on { background: var(--wot-grad); color: #fff; }

.v2-link { color: var(--wot-grad-end); text-decoration: none; font-weight: 600; }
.v2-link:hover { text-decoration: underline; }
.v2-spin { display: inline-block; width: 14px; height: 14px; border: 2px solid rgba(255,255,255,.18);
  border-top-color: var(--wot-grad-end); border-radius: 50%; animation: v2spin .7s linear infinite; vertical-align: -2px; }
@keyframes v2spin { to { transform: rotate(360deg); } }

/* The C/P side toggle (shared by the plan card) */
.v2-pc-side { margin-left: auto; display: inline-flex; border: 1px solid var(--wot-border); border-radius: 9px; overflow: hidden; flex: 0 0 auto; }
.v2-pc-side button { border: none; background: var(--wot-bg-2); color: var(--wot-text-2); font: inherit; font-weight: 800; width: 30px; padding: 5px 0; cursor: pointer; }
.v2-pc-side button.is-on.is-call { background: rgba(34,197,94,.2); color: var(--wot-bull); }
.v2-pc-side button.is-on.is-put { background: rgba(239,68,68,.2); color: var(--wot-bear); }

/* ════ The simple plan card (Plan grid + Levels right panel — ONE design) ════ */
.v2-plan-grid { display: grid; grid-template-columns: 1fr; gap: 16px; }
@media (min-width: 720px) { .v2-plan-grid { grid-template-columns: 1fr 1fr; } }
@media (min-width: 1080px) { .v2-plan-grid { grid-template-columns: 1fr 1fr 1fr; } }

.v2-planc { position: relative; border: 1px solid var(--wot-border); border-radius: var(--wot-r-lg); padding: 16px 18px 14px;
  background: linear-gradient(160deg, var(--wot-bg-1), #0c0910); box-shadow: 0 10px 34px rgba(0,0,0,.45);
  display: flex; flex-direction: column; gap: 14px; transition: border-color .2s, box-shadow .2s; }
.v2-planc:hover { border-color: var(--wot-border-strong); box-shadow: 0 14px 40px rgba(0,0,0,.55); }
.v2-planc.is-example { opacity: .82; border-style: dashed; }
.v2-planc-top { display: flex; align-items: center; gap: 11px; }
.v2-planc-avatar { width: 34px; height: 34px; border-radius: 10px; display: grid; place-items: center; color: #fff; font-weight: 900; font-size: 15px; flex: 0 0 auto; box-shadow: 0 4px 14px rgba(0,0,0,.4); }
.v2-planc-id { display: flex; flex-direction: column; min-width: 0; line-height: 1.15; }
.v2-planc-sym { font-size: 21px; font-weight: 900; color: var(--wot-text-0); }
.v2-planc-sym input { background: none; border: none; color: var(--wot-text-0); font: inherit; text-transform: uppercase; padding: 0; }
.v2-planc-exp { font-size: 11px; font-weight: 600; color: var(--wot-text-2); letter-spacing: .02em; }
.v2-planc-exp input { color: var(--wot-text-1); }
.v2-planc-del { background: none; border: none; color: var(--wot-text-2); cursor: pointer; padding: 4px; border-radius: 8px; flex: 0 0 auto; }
.v2-planc-del:hover { color: var(--wot-bear); background: rgba(239,68,68,.1); }
.v2-planc-contract { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; font-size: 24px; font-weight: 900; color: var(--wot-text-0);
  padding: 10px 12px; background: rgba(0,0,0,.28); border-radius: var(--wot-r-md); border: 1px solid var(--wot-border); }
.v2-planc-contract b { font-size: 18px; }
.v2-planc-contract b.is-call { color: var(--wot-bull); } .v2-planc-contract b.is-put { color: var(--wot-bear); }
.v2-planc-at { color: var(--wot-text-2); font-size: 12px; font-weight: 800; letter-spacing: 1.5px; }
.v2-planc-ladder { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 8px; }
.v2-planc-lv { display: flex; flex-direction: column; gap: 3px; align-items: center; padding: 9px 6px; border-radius: var(--wot-r-md); background: var(--wot-bg-2); border: 1px solid var(--wot-border); }
.v2-planc-lv small { font-size: 9px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--wot-text-2); }
.v2-planc-lv input { font-size: 18px; font-weight: 800; }
.v2-planc-lv.is-t1 { color: var(--wot-bull); } .v2-planc-lv.is-t1 small { color: rgba(34,197,94,.8); }
.v2-planc-lv.is-t2 { color: rgba(34,197,94,.85); }
.v2-planc-lv.is-stop { color: var(--wot-bear); } .v2-planc-lv.is-stop small { color: rgba(239,68,68,.8); }
.v2-planc-foot { display: flex; justify-content: flex-end; }
.v2-planc-rr { font-size: 12px; font-weight: 700; color: var(--wot-text-1); padding: 4px 10px; border-radius: 999px; background: rgba(255,31,143,.12); }
.v2-planc-rr b { color: var(--wot-grad-end); } .v2-planc-rr.is-empty { color: var(--wot-text-2); background: var(--wot-bg-2); } .v2-planc-rr.is-empty b { color: var(--wot-text-2); }
/* inline-editable inputs — look like text, edit in place, no dialog */
.v2-planc [data-f] { background: transparent; border: none; border-bottom: 1px dashed rgba(255,255,255,.22); color: inherit; font: inherit; font-weight: inherit; padding: 1px 1px 2px; text-align: center; min-width: 2ch; transition: border-color .15s, background .15s; }
.v2-planc [data-f]:focus { outline: none; border-bottom-color: var(--wot-grad-end); background: rgba(255,31,143,.08); border-radius: 4px 4px 0 0; }

/* ════ LEVELS — the planning desk (the REAL mindset chart + the simple card) ══
   The chart frame/toolbar/body reuse the shared .wot-chart-* classes from
   components.css verbatim, so it's pixel-identical to Mindset. Only the ticker
   rail + the card panel header are 2.0-specific. */
/* Levels gets a wider page so the chart has more room than the default 1180px. */
.v2-page.v2-levels { max-width: 1480px; }
.v2-levels .v2-logbar { align-items: flex-start; }
.v2-lv-rail { display: flex; gap: 8px; flex-wrap: wrap; flex: 1; min-width: 0; }
.v2-lv-chip { display: inline-flex; align-items: center; gap: 7px; padding: 8px 14px; border-radius: 999px; cursor: pointer;
  background: var(--wot-bg-2); border: 1px solid var(--wot-border); color: var(--wot-text-1); font: inherit; font-weight: 800; font-size: 13px; transition: .15s; }
.v2-lv-chip:hover { color: var(--wot-text-0); border-color: var(--wot-border-strong); }
.v2-lv-chip.is-on { color: #fff; background: var(--wot-grad); border-color: transparent; box-shadow: 0 6px 20px rgba(255,31,143,.3); }
.v2-lv-chip-dot { width: 9px; height: 9px; border-radius: 50%; flex: 0 0 auto; }
.v2-lv-chip.is-on .v2-lv-chip-dot { background: rgba(255,255,255,.9) !important; }
/* The card panel — reuses .wot-trade-panel (sticky, 320px) from components.css */
.v2-lv-panel-head { display: flex; flex-direction: column; gap: 10px; margin-bottom: 14px; }
.v2-lv-panel-headrow { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; }
.v2-lv-panel-head h3 { margin: 0; font-size: 16px; font-weight: 800; color: var(--wot-text-0); }
.v2-lv-panel-sym { font-size: 12px; font-weight: 700; color: var(--wot-grad-end); }
/* The shared date dropdown sits full-width under the panel title on Levels. */
.v2-lv-panel-head .v2-datesel { width: 100%; }
.v2-lv-panel-head .v2-datesel-btn { width: 100%; }
.v2-lv-panel-head .v2-datesel-btn [data-date-label] { flex: 1; text-align: left; }
.v2-lv-panel-head .v2-datesel-menu { left: 0; right: 0; min-width: 0; }
/* Add another contract (call / put) for the selected ticker */
.v2-lv-addrow { display: flex; gap: 10px; margin-top: 12px; }
.v2-lv-addbtn { flex: 1; padding: 11px; border-radius: 12px; border: 1px dashed var(--wot-border-strong); background: var(--wot-bg-1); color: var(--wot-text-1); font: inherit; font-size: 14px; font-weight: 700; cursor: pointer; transition: .15s; }
.v2-lv-addbtn:hover { color: var(--wot-text-0); }
.v2-lv-addbtn.is-call:hover { border-color: var(--wot-bull); color: var(--wot-bull); }
.v2-lv-addbtn.is-put:hover { border-color: var(--wot-bear); color: var(--wot-bear); }

/* ── Levels right rail — expansive, breathing-room redesign ───────────────────
   The panel reuses .wot-trade-panel (now 400px · grid gap 22 · scrolls · the
   ONLY bordered surface beside the borderless chart). These v2-scoped rules add
   a pinned title so you never lose context while scrolling a long plan list,
   and give every section real air so the data reads easily. */
.v2-levels .v2-lv-panel {
  padding: 0 0 8px;                 /* let the sticky head full-bleed; pad via children */
  gap: 0;                           /* head + sections own their own spacing below */
}
.v2-levels .v2-lv-panel-head {
  position: sticky; top: 0; z-index: 4;
  margin: 0 0 4px; padding: 20px 22px 16px;
  background: linear-gradient(180deg, var(--wot-bg-1) 86%, rgba(17,17,20,0));
  border-bottom: 1px solid var(--wot-border);
  gap: 12px;
}
.v2-levels .v2-lv-panel-head h3 { font-size: 18px; letter-spacing: -.02em; }
.v2-levels .v2-lv-panel-sym { font-size: 13px; font-family: var(--wot-font-mono); }
/* Everything below the head gets a comfortable side gutter + vertical rhythm. */
.v2-levels .v2-lv-earn,
.v2-levels .v2-plan2,
.v2-levels .v2-lv-noplan,
.v2-levels .v2-lv-addrow { margin-left: 22px; margin-right: 22px; }
.v2-levels .v2-lv-earn { margin-top: 14px; margin-bottom: 0; }
.v2-levels .v2-plan2 { margin-top: 18px; padding: 18px 18px 16px; gap: 14px; }
.v2-levels .v2-plan2 + .v2-plan2 { margin-top: 16px; }
.v2-levels .v2-lv-noplan {
  margin-top: 16px; padding: 22px 18px;
  background: var(--wot-bg-2); border: 1px dashed var(--wot-border); border-radius: var(--wot-r-lg);
  color: var(--wot-text-2); font-size: 13.5px; line-height: 1.55;
}
.v2-levels .v2-lv-addrow { margin-top: 18px; }

/* The mindset toolbar is built for a full-width page; in the narrower Levels
   column let it wrap cleanly so nothing clips, and give the level-editing
   actions a polished, unmistakable look (scoped — never touches Mindset). */
.v2-levels .wot-chart-toolbar { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.v2-levels .wot-chart-leftgroup { flex-wrap: wrap; }
.v2-levels .wot-chart-ranges { flex-wrap: wrap; justify-content: center; }
.v2-levels .wot-chart-toggles { flex-wrap: wrap; margin-left: auto; }
.v2-levels .wot-chart-toggles button { display: inline-flex; align-items: center; gap: 6px; line-height: 1; }
.v2-levels .wot-chart-toggles button .wot-icon { width: 13px; height: 13px; vertical-align: 0; }
.v2-levels .wot-chart-toggles [data-action="edit-levels"] { text-transform: none; letter-spacing: .02em; font-weight: 800; }
.v2-levels .wot-chart-toggles [data-action="edit-levels"].is-on {
  background: var(--wot-grad); color: #fff; border-color: transparent; box-shadow: 0 6px 18px rgba(255,31,143,.35); }
.v2-levels .wot-chart-toggles [data-action="add-level"] {
  text-transform: none; font-weight: 800; color: var(--wot-grad-end);
  background: rgba(255,31,143,.12); border-color: rgba(255,31,143,.4); }
.v2-levels .wot-chart-toggles [data-action="add-level"]:hover { background: rgba(255,31,143,.2); color: #fff; }

/* ════ STORYBOARD — agreement screen + daily-walk hero on Fire ════ */
.sb-agree { width: 100%; padding: 17px; border: none; border-radius: 18px; cursor: pointer; font: inherit; font-size: 17px; font-weight: 800;
  background: linear-gradient(135deg, var(--wot-bull), #16a34a); color: #04210f; }
.sb-scene.is-agree .sb-kicker { color: var(--wot-bull); }
/* Fire — daily walk gate (redesigned: connected step rail + live fill) */
.v2-walkall { display: block; width: 100%; text-align: left; cursor: pointer; border: 1px solid rgba(255,31,143,.42);
  border-radius: var(--wot-r-lg); background: linear-gradient(135deg, rgba(255,107,31,.13), rgba(255,31,143,.13));
  color: var(--wot-text-0); padding: 18px 20px; transition: border-color .2s, transform .08s, box-shadow .2s; }
.v2-walkall:hover { border-color: var(--wot-grad-end); box-shadow: 0 10px 32px rgba(255,31,143,.16); }
.v2-walkall:active { transform: scale(.995); }
.v2-walkall.is-done { border-color: rgba(34,197,94,.42); background: rgba(34,197,94,.10); }
.v2-walk-row { display: flex; align-items: flex-start; gap: 14px; }
.v2-walk-copy { flex: 1; min-width: 0; }
.v2-walkall b { display: block; font-size: 18px; margin-bottom: 4px; }
.v2-walkall span { display: block; font-size: 13px; color: var(--wot-text-1); line-height: 1.4; }
.v2-walkall span b { display: inline; font-size: inherit; color: var(--wot-text-0); }
.v2-walk-count { flex: 0 0 auto; font-size: 26px; font-weight: 900; line-height: 1; color: var(--wot-grad-end); }
.v2-walk-count i { font-style: normal; font-size: 14px; font-weight: 700; color: var(--wot-text-2); }
.v2-walkall.is-done .v2-walk-count { color: var(--wot-bull); }
/* Walk progress — a connected 8-step stepper. NOTE the selectors are scoped to
   `.v2-walk-steps .v2-walk-step` to out-specify `.v2-walkall span` (which would
   otherwise force display:block + a 13px font and shove the number to the top). */
.v2-walk-steps { position: relative; display: flex; align-items: center; justify-content: space-between; gap: 6px; margin-top: 22px; padding: 4px 2px 0; }
.v2-walk-steps::before { content: ''; position: absolute; left: 27px; right: 27px; top: 50%; height: 2px; transform: translateY(-50%); background: rgba(255,255,255,.10); z-index: 0; }
.v2-walk-steps .v2-walk-step {
  position: relative; z-index: 1; box-sizing: border-box; flex: 0 0 auto; width: 46px; height: 46px; border-radius: 50%; margin: 0;
  display: flex; align-items: center; justify-content: center; text-align: center;
  font-size: 16px; font-weight: 800; line-height: 1; font-variant-numeric: tabular-nums;
  background: var(--wot-bg-2); border: 1.5px solid var(--wot-border); color: var(--wot-text-1); transition: .2s; }
.v2-walk-steps .v2-walk-step.is-now { background: var(--wot-bg-0); border-color: var(--wot-grad-end); color: #fff;
  box-shadow: 0 0 0 4px rgba(255,31,143,.12), 0 0 18px rgba(255,31,143,.45); }
.v2-walk-steps .v2-walk-step.is-done { background: var(--wot-grad); border-color: transparent; color: #fff; box-shadow: 0 4px 14px rgba(255,31,143,.4); }
.v2-walkall.is-done .v2-walk-steps .v2-walk-step.is-done { background: var(--wot-bull); color: #06210f; box-shadow: 0 4px 14px rgba(34,197,94,.4); }
@media (max-width: 560px) { .v2-walk-steps .v2-walk-step { width: 38px; height: 38px; font-size: 15px; } .v2-walk-steps::before { left: 22px; right: 22px; } }

/* Fire — behavior check-in: hollow-circle Trade by Fire logo */
.v2-fire-orb { display: flex; flex-direction: column; align-items: center; gap: 14px; width: 100%;
  background: none; border: 0; cursor: pointer; padding: 12px 0 4px; }
.v2-orb-disc { width: 150px; height: 150px; animation: v2breathe 8s ease-in-out infinite;
  filter: drop-shadow(0 0 44px rgba(255,31,143,.28)); transition: transform .3s ease; }
.v2-orb-disc .v2-orb-svg { width: 100%; height: 100%; }
.v2-fire-orb:hover .v2-orb-disc { transform: scale(1.04); }
.v2-fire-orb-label { display: inline-flex; align-items: center; gap: 6px; font-size: 14px; font-weight: 600; color: var(--wot-text-1); }
/* "Process over outcome" — the calm, non-interactive breathing orb. */
.v2-fire-calm { display: flex; justify-content: center; align-items: center; padding: 12px 0 6px; }
.v2-fire-calm .v2-orb-disc { width: 168px; height: 168px; }

/* ════ EDGE — multiple edges (card grid) + adherence band ═══════════════════ */
/* Edge tab is now the plan launchpad — hide the adherence band + the
   document-a-setup playbook section (still rendered, just not surfaced). */
.v2-edge-band, .v2-edge-doc { display: none !important; }
.v2-edge-band { grid-template-columns: repeat(3, 1fr); gap: 12px; }
.v2-edge-bandtile { text-align: center; padding: 14px 10px; background: var(--wot-bg-2); border: 1px solid var(--wot-border); border-radius: var(--wot-r-md); }
.v2-edge-bandval { font-size: 22px; font-weight: 900; line-height: 1; }
.v2-edge-bandlbl { font-size: 10px; font-weight: 700; letter-spacing: .5px; text-transform: uppercase; color: var(--wot-text-2); margin-top: 5px; }

.v2-edge-grid { display: grid; grid-template-columns: 1fr; gap: 16px; }
@media (min-width: 640px) { .v2-edge-grid { grid-template-columns: 1fr 1fr; } }
@media (min-width: 1000px) { .v2-edge-grid { grid-template-columns: 1fr 1fr 1fr; } }

.v2-edge-card { position: relative; display: flex; flex-direction: column; gap: 12px; padding: 16px 18px 14px;
  border: 1px solid var(--wot-border); border-radius: var(--wot-r-lg); background: linear-gradient(160deg, var(--wot-bg-1), #0c0910);
  box-shadow: 0 10px 34px rgba(0,0,0,.45); cursor: pointer; overflow: hidden; transition: border-color .2s, box-shadow .2s, transform .08s; }
.v2-edge-card::before { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; background: var(--edge, var(--wot-grad-start)); }
.v2-edge-card:hover { border-color: var(--wot-border-strong); box-shadow: 0 16px 44px rgba(0,0,0,.55); }
.v2-edge-card:active { transform: scale(.995); }
.v2-edge-card-top { display: flex; align-items: center; gap: 11px; }
.v2-edge-badge { width: 36px; height: 36px; border-radius: 11px; display: grid; place-items: center; color: #fff; font-weight: 900; font-size: 16px; flex: 0 0 auto; box-shadow: 0 4px 14px rgba(0,0,0,.45); }
.v2-edge-name { font-size: 17px; font-weight: 800; color: var(--wot-text-0); line-height: 1.2; }
.v2-edge-tags { display: flex; flex-wrap: wrap; gap: 6px; }
/* Full question → answer list on each edge card */
.v2-edge-qa { display: flex; flex-direction: column; gap: 0; border-top: 1px solid var(--wot-border); }
.v2-edge-qa-row { display: flex; align-items: baseline; justify-content: space-between; gap: 14px; padding: 8px 0; border-bottom: 1px solid var(--wot-border); }
/* The question keeps a sane min-width so it never collapses to one word per line;
   the answer is capped so it wraps instead of squeezing the question. */
.v2-edge-qa-q { font-size: 12.5px; color: var(--wot-text-2); flex: 1 1 44%; min-width: 120px; line-height: 1.35; overflow-wrap: anywhere; }
.v2-edge-qa-a { font-size: 13px; font-weight: 700; color: var(--wot-text-0); text-align: right; flex: 1 1 48%; min-width: 0; max-width: 60%; line-height: 1.35; overflow-wrap: anywhere; }
.v2-edge-qa-empty { font-size: 12.5px; font-style: italic; color: var(--wot-text-2); padding: 8px 0; }
/* Force a normal horizontal pill — never let it collapse to a vertical sliver. */
.pb-toggle { display: inline-block !important; flex: 0 0 auto; width: auto; min-width: max-content;
  white-space: nowrap; writing-mode: horizontal-tb; text-align: center; }
.v2-edge-tag { font-size: 11px; font-weight: 700; padding: 4px 9px; border-radius: 999px; background: var(--wot-bg-2); border: 1px solid var(--wot-border); color: var(--wot-text-1); }
.v2-edge-tag.is-empty { color: var(--wot-text-2); border-style: dashed; }
.v2-edge-stats { display: flex; gap: 14px; flex-wrap: wrap; font-size: 12px; color: var(--wot-text-2); padding-top: 2px; }
.v2-edge-stats b { color: var(--wot-text-0); }
.v2-edge-stats .is-up b { color: var(--wot-bull); } .v2-edge-stats .is-down b { color: var(--wot-bear); }
.v2-edge-stats.is-empty { font-style: italic; }
.v2-edge-card-actions { display: flex; gap: 8px; margin-top: auto; padding-top: 4px; }
.v2-edge-act { display: inline-flex; align-items: center; gap: 5px; font-size: 12px; font-weight: 700; padding: 6px 11px; border-radius: 9px;
  border: 1px solid var(--wot-border); background: var(--wot-bg-2); color: var(--wot-text-1); cursor: pointer; transition: .15s; }
.v2-edge-act .v2-icon { width: 13px; height: 13px; }
.v2-edge-act:hover { border-color: var(--wot-border-strong); color: var(--wot-text-0); }
.v2-edge-act.is-danger:hover { border-color: var(--wot-bear); color: var(--wot-bear); background: rgba(239,68,68,.1); }

.v2-edge-newtile, .v2-edge-empty { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px;
  border: 1.5px dashed var(--wot-border); border-radius: var(--wot-r-lg); background: var(--wot-bg-1); color: var(--wot-text-2);
  cursor: pointer; min-height: 120px; padding: 24px; font: inherit; transition: .15s; }
.v2-edge-newtile:hover, .v2-edge-empty:hover { border-color: var(--wot-grad-end); color: var(--wot-text-0); }
.v2-edge-newtile .v2-icon { width: 22px; height: 22px; }
.v2-edge-newtile span { font-weight: 700; font-size: 13px; }
.v2-edge-empty { grid-column: 1 / -1; gap: 6px; min-height: 200px; }
.v2-edge-empty-ic { display: grid; place-items: center; width: 52px; height: 52px; border-radius: 50%; background: rgba(255,31,143,.12); color: var(--wot-grad-end); margin-bottom: 4px; }
.v2-edge-empty-ic .v2-icon { width: 24px; height: 24px; }
.v2-edge-empty strong { font-size: 17px; color: var(--wot-text-0); }
.v2-edge-empty span { font-size: 13px; }

/* ════ EDGE WIZARD — stepped, selection-only overlay ════════════════════════ */
.ew-root { position: fixed; inset: 0; z-index: 3000; display: flex; align-items: center; justify-content: center; padding: 16px;
  background: rgba(6,4,8,.74); backdrop-filter: blur(6px); animation: ewIn .2s ease; }
.ew-root.is-out { animation: ewOut .2s ease forwards; }
@keyframes ewIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes ewOut { to { opacity: 0; } }
.ew-modal { width: min(620px, 100%); max-height: calc(100vh - 32px); display: flex; flex-direction: column;
  background: linear-gradient(180deg, var(--wot-bg-1), var(--wot-bg-0)); border: 1px solid var(--wot-border);
  border-radius: var(--wot-r-lg); box-shadow: 0 30px 80px rgba(0,0,0,.6); overflow: hidden; animation: ewPop .22s cubic-bezier(.2,.8,.3,1); }
@keyframes ewPop { from { transform: translateY(14px) scale(.98); opacity: .6; } to { transform: none; opacity: 1; } }
.ew-head { display: flex; align-items: center; gap: 12px; padding: 16px 18px; border-bottom: 1px solid var(--wot-border); }
.ew-head-l { display: flex; align-items: center; gap: 12px; min-width: 0; }
.ew-step-ic { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 11px; flex: 0 0 auto;
  background: rgba(255,31,143,.14); color: var(--wot-grad-end); }
.ew-step-ic .v2-icon { width: 19px; height: 19px; }
.ew-step-title { font-size: 17px; font-weight: 800; color: var(--wot-text-0); }
.ew-step-sub { font-size: 12px; color: var(--wot-text-2); margin-top: 1px; }
.ew-x { margin-left: auto; flex: 0 0 auto; width: 32px; height: 32px; border-radius: 9px; border: 1px solid var(--wot-border);
  background: var(--wot-bg-2); color: var(--wot-text-1); font-size: 15px; cursor: pointer; }
.ew-x:hover { color: var(--wot-text-0); border-color: var(--wot-border-strong); }
.ew-rail { display: flex; gap: 5px; padding: 12px 18px 0; }
.ew-rail-dot { flex: 1; height: 4px; border-radius: 3px; background: rgba(255,255,255,.1); transition: background .25s; }
.ew-rail-dot.is-done { background: var(--wot-bull); }
.ew-rail-dot.is-now { background: var(--wot-grad); box-shadow: 0 0 8px rgba(255,31,143,.5); }
.ew-body { padding: 18px; overflow-y: auto; display: flex; flex-direction: column; gap: 20px; }
.ew-field { display: flex; flex-direction: column; gap: 10px; }
.ew-q { font-size: 14px; font-weight: 700; color: var(--wot-text-0); display: flex; align-items: baseline; gap: 8px; }
.ew-multi { font-size: 10px; font-weight: 700; letter-spacing: .4px; text-transform: uppercase; color: var(--wot-text-2); }
.ew-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.ew-chip { display: inline-flex; align-items: center; gap: 7px; padding: 9px 14px; border-radius: 12px; cursor: pointer;
  flex: 0 0 auto; max-width: 100%; white-space: nowrap;
  border: 1px solid var(--wot-border); background: var(--wot-bg-2); color: var(--wot-text-1); font: inherit; font-size: 13.5px; font-weight: 600; transition: .15s; }
.ew-chip > span { white-space: nowrap; }
.ew-chip:hover { border-color: var(--wot-border-strong); color: var(--wot-text-0); }
.ew-chip.is-sel { border-color: var(--wot-grad-end); background: rgba(255,31,143,.14); color: var(--wot-text-0); font-weight: 800; }
.ew-chip.tone-good.is-sel { border-color: var(--wot-bull); background: rgba(34,197,94,.16); }
.ew-chip.tone-caution.is-sel { border-color: var(--wot-chop); background: rgba(245,180,0,.16); }
.ew-chip.tone-danger.is-sel { border-color: var(--wot-bear); background: rgba(239,68,68,.16); }
.ew-chip-tick { display: inline-flex; }
.ew-chip-tick .v2-icon { width: 13px; height: 13px; }
.ew-foot { display: flex; align-items: center; gap: 10px; padding: 14px 18px; border-top: 1px solid var(--wot-border); }
.ew-foot-spacer { flex: 1; }
.ew-back { padding: 10px 16px; border-radius: 10px; border: 1px solid var(--wot-border); background: var(--wot-bg-2); color: var(--wot-text-1); font: inherit; font-weight: 700; cursor: pointer; }
.ew-back:hover { color: var(--wot-text-0); border-color: var(--wot-border-strong); }
.ew-next { padding: 10px 22px; border-radius: 10px; border: 1px solid transparent; background: var(--wot-bg-3); color: var(--wot-text-0); font: inherit; font-weight: 800; cursor: pointer; transition: .15s; }
.ew-next:not(:disabled) { background: var(--wot-grad); color: #fff; box-shadow: var(--wot-grad-glow); }
.ew-next.is-save:not(:disabled) { background: linear-gradient(135deg, var(--wot-bull), #16a34a); box-shadow: 0 6px 20px rgba(34,197,94,.3); color: #04210f; }
.ew-next:disabled { opacity: .4; cursor: not-allowed; }
/* review step */
.ew-review { display: flex; flex-direction: column; gap: 20px; }
.ew-name { width: 100%; box-sizing: border-box; padding: 12px 14px; font-size: 17px; font-weight: 800; color: var(--wot-text-0);
  background: var(--wot-bg-2); border: 1px solid var(--wot-border); border-radius: 12px; }
.ew-name:focus { outline: none; border-color: var(--wot-grad-end); }
.ew-text { width: 100%; box-sizing: border-box; padding: 11px 13px; font-size: 15px; font-weight: 600; color: var(--wot-text-0);
  background: var(--wot-bg-2); border: 1px solid var(--wot-border); border-radius: 12px; }
.ew-text:focus { outline: none; border-color: var(--wot-grad-end); }
.ew-name-suggest { align-self: flex-start; margin-top: 8px; font-size: 12px; font-weight: 700; color: var(--wot-grad-end); background: none; border: none; cursor: pointer; padding: 0; }
.ew-name-suggest:hover { text-decoration: underline; }
/* Always-visible edge-name bar in the wizard header */
.ew-namebar { display: flex; align-items: center; gap: 10px; padding: 0 18px 14px; }
.ew-namebar .ew-name { flex: 1; font-size: 16px; padding: 10px 13px; }
.ew-namebar .ew-name-suggest { align-self: center; margin-top: 0; white-space: nowrap; padding: 8px 12px; border: 1px solid var(--wot-border); border-radius: 999px; }
.ew-swatches { display: flex; gap: 10px; flex-wrap: wrap; }
.ew-swatch { width: 32px; height: 32px; border-radius: 50%; border: 2px solid transparent; cursor: pointer; transition: .15s; }
.ew-swatch:hover { transform: scale(1.1); }
.ew-swatch.is-on { border-color: #fff; box-shadow: 0 0 0 2px rgba(255,255,255,.25); }
.ew-preview .v2-edge-card { cursor: default; }
.ew-preview .v2-edge-card-actions { display: none; }

/* ── News — the market tape ──────────────────────────────────────────────── */
.v2-news-filters { display: flex; gap: 8px; flex-wrap: wrap; margin: 4px 0 20px; }
.v2-news-chip { padding: 7px 14px; border-radius: 999px; cursor: pointer;
  background: var(--wot-bg-2); border: 1px solid var(--wot-border); color: var(--wot-text-1);
  font: inherit; font-weight: 800; font-size: 13px; transition: .15s; }
.v2-news-chip:hover { color: var(--wot-text-0); border-color: var(--wot-border-strong); }
.v2-news-chip.is-on { color: #fff; background: var(--wot-grad); border-color: transparent; box-shadow: 0 6px 20px rgba(255,31,143,.3); }

.v2-news-stream { display: grid; grid-template-columns: repeat(auto-fill, minmax(330px, 1fr)); gap: 14px; align-items: start; }
.v2-news-card { display: flex; flex-direction: column; gap: 0; padding: 0; overflow: hidden; cursor: pointer; text-align: left;
  background: var(--wot-bg-1); border: 1px solid var(--wot-border); border-radius: var(--wot-r-md); transition: .15s; font: inherit; color: inherit; }
.v2-news-card:hover { border-color: var(--wot-border-strong); transform: translateY(-2px); box-shadow: var(--wot-shadow-card); }
.v2-news-thumb { height: 150px; background-size: cover; background-position: center; background-color: var(--wot-bg-2);
  border-bottom: 1px solid var(--wot-border); }
.v2-news-cardbody { display: flex; flex-direction: column; gap: 8px; padding: 14px 16px 15px; }
.v2-news-meta { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.v2-news-tag { font-size: 11px; font-weight: 800; letter-spacing: .02em; padding: 3px 8px; border-radius: 6px;
  color: var(--wot-grad-end); background: rgba(255,31,143,.12); }
.v2-news-tag.is-macro { color: var(--wot-text-1); background: rgba(255,255,255,.06); }
.v2-news-tag.is-index { color: var(--wot-chop); background: rgba(245,180,0,.12); }
/* NEW — first ingested in the latest 15-min crawl run; self-expires next run. */
.v2-news-new { font-size: 10.5px; font-weight: 900; letter-spacing: .06em; padding: 3px 7px; border-radius: 6px;
  color: #fff; background: var(--wot-grad); box-shadow: 0 3px 12px rgba(255,31,143,.35); }
.v2-news-card.is-new { border-color: rgba(255,31,143,.45); box-shadow: 0 0 0 1px rgba(255,31,143,.25); }
.v2-news-card.is-new:hover { border-color: var(--wot-grad-end); }
.v2-news-title { margin: 0; font-size: 15.5px; font-weight: 700; line-height: 1.3; color: var(--wot-text-0);
  display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.v2-news-desc { margin: 0; font-size: 13px; line-height: 1.45; color: var(--wot-text-1);
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.v2-news-src { font-size: 11px; font-weight: 700; color: var(--wot-text-2); }

/* ── Reader (#/news/:id) — the cached article, Safari-reader column ────────── */
.v2-reader { max-width: 720px; margin: 0 auto; }
.v2-reader-bar { margin-bottom: 8px; }
.v2-reader-back { display: inline-flex; align-items: center; gap: 4px; padding: 8px 14px 8px 8px; border-radius: 999px;
  background: var(--wot-bg-2); border: 1px solid var(--wot-border); color: var(--wot-text-1); font: inherit; font-weight: 700; font-size: 13px; cursor: pointer; }
.v2-reader-back:hover { color: var(--wot-text-0); border-color: var(--wot-border-strong); }
.v2-reader-back .v2-icon { width: 16px; height: 16px; }
.v2-reader-article { padding: 8px 4px 40px; }
.v2-reader-tags { display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 14px; }
.v2-reader-title { font-size: 30px; line-height: 1.18; letter-spacing: -0.02em; color: var(--wot-text-0); margin: 0 0 12px; }
.v2-reader-sub { font-size: 13px; font-weight: 600; color: var(--wot-text-2); margin: 0 0 20px; }
.v2-reader-hero { width: 100%; border-radius: var(--wot-r-md); margin: 0 0 24px; display: block; }
.v2-reader-body { font-size: 17.5px; line-height: 1.7; color: var(--wot-text-1); }
.v2-reader-body p { margin: 0 0 1.15em; }
.v2-reader-body h2 { font-size: 22px; line-height: 1.3; color: var(--wot-text-0); margin: 1.6em 0 .5em; }
.v2-reader-body h3 { font-size: 19px; line-height: 1.3; color: var(--wot-text-0); margin: 1.4em 0 .5em; }
.v2-reader-body a { color: var(--wot-grad-end); text-decoration: none; border-bottom: 1px solid rgba(255,31,143,.35); }
.v2-reader-body a:hover { border-bottom-color: var(--wot-grad-end); }
.v2-reader-body ul, .v2-reader-body ol { margin: 0 0 1.15em; padding-left: 1.4em; }
.v2-reader-body li { margin: 0 0 .5em; }
.v2-reader-body blockquote { margin: 1.2em 0; padding: 4px 0 4px 18px; border-left: 3px solid var(--wot-grad-end);
  color: var(--wot-text-0); font-style: italic; }
.v2-reader-body figure { margin: 1.6em 0; }
.v2-reader-body img { max-width: 100%; height: auto; border-radius: var(--wot-r-sm); display: block; }
.v2-reader-body figcaption { font-size: 13px; color: var(--wot-text-2); margin-top: 8px; text-align: center; }
.v2-reader-foot { margin-top: 32px; padding-top: 18px; border-top: 1px solid var(--wot-border);
  font-size: 12px; font-weight: 600; color: var(--wot-text-2); }

/* ── Per-ticker news strip (on Levels + Plan cards) ───────────────────────── */
.v2-planc-news { margin-top: 12px; border-top: 1px solid var(--wot-border); padding-top: 10px; }
.v2-cnews-head { display: flex; align-items: center; gap: 6px; font-size: 11px; font-weight: 800;
  letter-spacing: .06em; text-transform: uppercase; color: var(--wot-text-2); margin-bottom: 8px; }
.v2-cnews-head .v2-icon { width: 14px; height: 14px; }
.v2-cnews-head i { font-style: normal; margin-left: auto; font-size: 11px; font-weight: 800; color: var(--wot-text-1);
  background: var(--wot-bg-2); border: 1px solid var(--wot-border); border-radius: 999px; padding: 1px 8px; }
.v2-cnews-loading, .v2-cnews-empty { font-size: 12px; color: var(--wot-text-2); padding: 2px 0 4px; }
.v2-cnews-list { display: flex; flex-direction: column; gap: 6px; }
.v2-cnews-row { display: flex; gap: 9px; align-items: center; width: 100%; text-align: left; cursor: pointer;
  padding: 7px; border-radius: 10px; background: var(--wot-bg-2); border: 1px solid transparent; font: inherit; transition: .12s; }
.v2-cnews-row:hover { border-color: var(--wot-border-strong); background: var(--wot-bg-3); }
.v2-cnews-thumb { flex: 0 0 auto; width: 42px; height: 42px; border-radius: 8px; background-size: cover; background-position: center; background-color: var(--wot-bg-0); }
.v2-cnews-thumb.is-blank { background: linear-gradient(135deg, rgba(255,107,31,.18), rgba(255,31,143,.18)); }
.v2-cnews-rowbody { min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.v2-cnews-rowtitle { font-size: 13px; font-weight: 700; line-height: 1.3; color: var(--wot-text-0);
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.v2-cnews-rowmeta { font-size: 11px; font-weight: 600; color: var(--wot-text-2); }

/* ── News quick-preview modal ─────────────────────────────────────────────── */
.v2-news-scrim { position: fixed; inset: 0; z-index: 1200; display: flex; align-items: center; justify-content: center;
  padding: 24px; background: rgba(4,4,7,.72); backdrop-filter: blur(6px); animation: v2fade .15s ease; }
@keyframes v2fade { from { opacity: 0; } to { opacity: 1; } }
.v2-news-modal { position: relative; width: min(720px, 100%); max-height: 88vh; display: flex; flex-direction: column;
  background: var(--wot-bg-1); border: 1px solid var(--wot-border); border-radius: var(--wot-r-lg); box-shadow: var(--wot-shadow-card); overflow: hidden; }
.v2-news-modal-close { position: absolute; top: 12px; right: 12px; z-index: 2; width: 36px; height: 36px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center; cursor: pointer;
  background: rgba(0,0,0,.45); border: 1px solid var(--wot-border); color: var(--wot-text-0); }
.v2-news-modal-close:hover { border-color: var(--wot-border-strong); }
.v2-news-modal-close .v2-icon { width: 18px; height: 18px; }
.v2-news-modal-scroll { overflow-y: auto; padding: 26px 28px 30px; }
.v2-news-modal-scroll .v2-reader-title { font-size: 25px; }
.v2-news-modal-scroll .v2-reader-body { font-size: 16.5px; }

/* ── Per-ticker earnings badge (on Levels + Plan cards) ───────────────────── */
.v2-planc-earn { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; margin: 2px 0 10px; }
.v2-planc-earn:empty { display: none; }
.v2-earn-next { display: inline-flex; align-items: center; gap: 5px; padding: 4px 9px; border-radius: 999px;
  font-size: 12px; color: var(--wot-text-1); background: var(--wot-bg-2); border: 1px solid var(--wot-border); }
.v2-earn-next .v2-icon { width: 13px; height: 13px; color: var(--wot-text-2); }
.v2-earn-next b { color: var(--wot-text-0); font-weight: 800; }
.v2-earn-next i { font-style: normal; color: var(--wot-text-2); font-weight: 600; }
.v2-earn-next.is-soon { background: rgba(245,180,0,.12); border-color: rgba(245,180,0,.35); }
.v2-earn-next.is-soon .v2-icon { color: var(--wot-chop); }
.v2-earn-next.is-soon b { color: var(--wot-chop); }
.v2-earn-last { font-size: 11.5px; font-weight: 700; }
.v2-earn-last.is-beat   { color: var(--wot-bull); }
.v2-earn-last.is-miss   { color: var(--wot-bear); }
.v2-earn-last.is-inline { color: var(--wot-text-2); }
.v2-earn-none { font-size: 11.5px; font-weight: 600; color: var(--wot-text-2); }

/* ════════════════════════════════════════════════════════════════════════════
   LANDING (.tl-*) — full redesign built around the curriculum. Calm, editorial,
   premium; restraint is the flex. Namespaced so it doesn't touch the app views.
   ════════════════════════════════════════════════════════════════════════════ */
.tl { position: relative; width: 100%; overflow-x: clip; color: var(--wot-text-0);
  /* Deep, near-black canvas. All the life now lives INSIDE the hero (a living
     aurora + ember field) instead of a flat page wash, so the rest of the page
     reads calm and the top section owns the spectacle. */
  background:
    radial-gradient(120% 80% at 50% -10%, rgba(255,107,31,.045), transparent 60%),
    var(--wot-bg-0);
  font-family: var(--wot-font, "Inter", system-ui, sans-serif); }
.tl-grain { position: fixed; inset: 0; pointer-events: none; opacity: .035; z-index: 0;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"); }

.tl-reveal { opacity: 0; transform: translateY(26px); transition: opacity .7s ease, transform .7s cubic-bezier(.2,.7,.3,1); }
.tl-reveal.is-in { opacity: 1; transform: none; }

.tl-kick { display: inline-block; font-size: 12px; font-weight: 800; letter-spacing: 2.4px; text-transform: uppercase;
  color: transparent; background: var(--wot-grad); -webkit-background-clip: text; background-clip: text; }
.tl-h2 { font-size: clamp(28px, 5vw, 48px); line-height: 1.04; letter-spacing: -.02em; font-weight: 900; margin: 10px 0 0; color: var(--wot-text-0); }
.tl-sub { max-width: 64ch; margin: 14px 0 0; font-size: clamp(15px, 1.7vw, 18px); line-height: 1.6; color: var(--wot-text-1); }
.tl-pull { font-size: clamp(24px, 4.4vw, 40px); font-weight: 900; letter-spacing: -.02em; line-height: 1.12; margin: 40px 0 0; color: var(--wot-text-0); }
.tl-pull em { font-style: normal; background: var(--wot-grad); -webkit-background-clip: text; background-clip: text; color: transparent; }

.tl-sec { position: relative; z-index: 1; max-width: 1120px; margin: 0 auto; padding: clamp(64px, 11vw, 132px) 22px 0; }

/* ── Hero — the living "fire dawn" ────────────────────────────────────────────
   A full ground-up rebuild of the top section. Instead of a single static
   corner disc + radial wash, the hero is a contained cinematic field: a slowly
   rotating aurora, a faint dawn horizon, the orb wrapped in pulsing emanation
   rings, and a rising-ember particle field. Everything is anchored to one
   shared light source (--orb-cx/--orb-cy) and clipped to the hero box so it
   reads as one alive scene, never a pasted-on graphic. */
.tl-hero { position: relative; z-index: 1; isolation: isolate; max-width: 1120px; margin: 0 auto;
  padding: clamp(72px, 10vw, 132px) 22px clamp(56px, 8vw, 96px);
  min-height: min(88vh, 800px); display: flex; flex-direction: column; justify-content: center;
  --orb-cx: 84%; --orb-cy: 30%; --orb-size: clamp(320px, 42vw, 520px); }
/* The contained scene. overflow:hidden clips embers + aurora to the hero, and a
   soft bottom mask feathers the whole field into the page below — no hard edge. */
.tl-hero-fx { position: absolute; inset: 0; z-index: 0; pointer-events: none; overflow: hidden;
  -webkit-mask: linear-gradient(180deg, #000 62%, rgba(0,0,0,.55) 84%, transparent 100%);
          mask: linear-gradient(180deg, #000 62%, rgba(0,0,0,.55) 84%, transparent 100%); }
/* Living aurora — a heavily-blurred conic ribbon that slowly rotates around the
   light source. Screen blend lifts only its warm color onto the black canvas. */
.tl-aurora { position: absolute; left: var(--orb-cx); top: var(--orb-cy);
  width: 150%; height: 150%; transform: translate(-50%, -50%);
  background: conic-gradient(from 0deg at 50% 50%,
    rgba(255,107,31,0) 0deg, rgba(255,107,31,.20) 48deg, rgba(255,31,143,.26) 128deg,
    rgba(124,60,255,.12) 196deg, rgba(255,31,143,.10) 268deg, rgba(255,107,31,0) 340deg);
  filter: blur(96px); opacity: .85; mix-blend-mode: screen;
  animation: tlAurora 54s linear infinite; will-change: transform; }
/* A faint dawn line low in the hero — the sun about to break the open. */
.tl-horizon { position: absolute; left: 50%; bottom: -8%; width: 130%; height: 46%;
  transform: translateX(-50%);
  background: radial-gradient(60% 100% at 50% 100%, rgba(255,90,60,.16), rgba(255,31,143,.06) 46%, transparent 72%);
  filter: blur(34px); mix-blend-mode: screen; }
/* The orb's home, centered on the shared anchor. */
.tl-portal { position: absolute; left: var(--orb-cx); top: var(--orb-cy);
  width: var(--orb-size); height: var(--orb-size); transform: translate(-50%, -50%); }
/* Emanation rings — concentric pulses that expand + fade outward from the orb,
   so the light feels like it's breathing into the page. */
.tl-portal-ring { position: absolute; inset: 14%; border-radius: 50%;
  border: 1px solid rgba(255,86,120,.34); opacity: 0; mix-blend-mode: screen;
  animation: tlPulse 5.4s cubic-bezier(.2,.6,.3,1) infinite; }
.tl-portal-ring:nth-child(2) { animation-delay: 1.8s; }
.tl-portal-ring:nth-child(3) { animation-delay: 3.6s; }
/* Warm bloom riding under the orb. */
.tl-portal-glow { position: absolute; inset: -16%; border-radius: 50%; filter: blur(58px); opacity: .55;
  background: radial-gradient(circle at 50% 48%, rgba(255,120,60,.6) 0%, rgba(255,48,118,.3) 40%, transparent 70%);
  animation: tlBreath 7s ease-in-out infinite; }
/* The orb itself — screen-blended so its dark canvas dissolves; gently floating.
   A soft mask feathers the SVG's outer edge so its box is never a visible line. */
.tl-portal-orb { position: absolute; inset: 0; display: grid; place-items: center; mix-blend-mode: screen;
  animation: tlFloat 11s ease-in-out infinite; will-change: transform;
  -webkit-mask: radial-gradient(circle at 50% 48%, #000 44%, rgba(0,0,0,.7) 62%, rgba(0,0,0,.3) 78%, transparent 94%);
          mask: radial-gradient(circle at 50% 48%, #000 44%, rgba(0,0,0,.7) 62%, rgba(0,0,0,.3) 78%, transparent 94%); }
.tl-portal-orb svg { width: 100%; height: 100%;
  filter: drop-shadow(0 0 40px rgba(255,107,31,.42)) drop-shadow(0 0 130px rgba(255,31,143,.24)); }
/* Rising-ember field. Each <i> is seeded with per-particle vars from the JS. */
.tl-embers { position: absolute; inset: 0; mix-blend-mode: screen; }
.tl-embers i { position: absolute; bottom: -12px; border-radius: 50%;
  background: radial-gradient(circle, #ffe2b0 0%, #ff7a2e 55%, rgba(255,107,31,0) 100%);
  box-shadow: 0 0 7px rgba(255,140,60,.8); opacity: 0;
  animation: tlRise var(--dur, 10s) linear infinite; animation-delay: var(--dly, 0s); will-change: transform, opacity; }

/* ── Radical hero · the fire-line mountain that draws itself in ── */
.tl-hero-dawn { position: absolute; left: 50%; top: -16%; width: 122%; height: 80%; transform: translateX(-50%);
  background: radial-gradient(56% 72% at 62% 2%, rgba(255,150,70,.44), rgba(255,90,60,.13) 46%, transparent 72%);
  filter: blur(16px); mix-blend-mode: screen; }
.tl-hero-stars { position: absolute; inset: 0; }
.tl-hero-stars i { position: absolute; aspect-ratio: 1; border-radius: 50%; background: #fff;
  box-shadow: 0 0 4px rgba(255,255,255,.5); animation: tlTwinkle var(--tw, 3s) ease-in-out var(--td, 0s) infinite alternate; }
@keyframes tlTwinkle { from { opacity: .15; } to { opacity: 1; } }
.tl-hero-ridge { position: absolute; inset: 0; width: 100%; height: 100%; }
.tl-hero-ridge .tl-hero-line { stroke-dasharray: 2600; stroke-dashoffset: 2600;
  animation: tlDraw 2.6s cubic-bezier(.25,.7,.2,1) .3s forwards; filter: drop-shadow(0 0 7px rgba(255,107,31,.8)); }
@keyframes tlDraw { to { stroke-dashoffset: 0; } }
.tl-hero-beacon { position: absolute; top: 11%; right: 3.5%; width: 15px; height: 15px; border-radius: 50%;
  background: radial-gradient(circle, #fff 28%, #FF6B1F 76%); box-shadow: 0 0 26px 7px rgba(255,107,31,.55);
  animation: tlBeacon 2.6s ease-in-out infinite; }
@keyframes tlBeacon { 0%,100% { transform: scale(1); opacity: .95; } 50% { transform: scale(1.35); opacity: .55; } }
@media (prefers-reduced-motion: reduce) { .tl-hero-line { animation: none; stroke-dashoffset: 0; } .tl-hero-beacon, .tl-hero-stars i { animation: none; } }

/* Keep the words above the field. */
.tl-hero > *:not(.tl-hero-fx) { position: relative; z-index: 2; }
/* A pulsing dot before the eyebrow — a small "live" tell. */
.tl-eyebrow-dot { display: inline-block; width: 7px; height: 7px; border-radius: 50%; margin-right: 8px;
  vertical-align: middle; background: var(--wot-grad-end, #FF1F8F);
  box-shadow: 0 0 0 0 rgba(255,31,143,.55); animation: tlBeacon 2.6s ease-out infinite; }

@keyframes tlAurora { to { transform: translate(-50%, -50%) rotate(360deg); } }
@keyframes tlPulse { 0% { transform: scale(.5); opacity: 0; } 16% { opacity: .55; } 100% { transform: scale(1.85); opacity: 0; } }
@keyframes tlBreath { 0%, 100% { opacity: .42; transform: scale(.98); } 50% { opacity: .62; transform: scale(1.04); } }
@keyframes tlFloat { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-14px); } }
@keyframes tlRise {
  0% { transform: translate(0, 0) scale(.5); opacity: 0; }
  12% { opacity: var(--op, .8); }
  82% { opacity: calc(var(--op, .8) * .7); }
  100% { transform: translate(var(--dx, 0), -360px) scale(1.1); opacity: 0; } }
@keyframes tlBeacon { 0% { box-shadow: 0 0 0 0 rgba(255,31,143,.5); } 70%, 100% { box-shadow: 0 0 0 9px rgba(255,31,143,0); } }

/* On phones the orb lifts high + centered behind the words, smaller + softer. */
@media (max-width: 720px) {
  .tl-hero { display: block; min-height: auto; padding-top: clamp(96px, 30vw, 150px);
    --orb-cx: 50%; --orb-cy: 1%; --orb-size: min(86vw, 360px); }
  .tl-h1 { font-size: clamp(30px, 7.6vw, 52px); }
  .tl-aurora { opacity: .5; }
  .tl-embers { opacity: .7; }
}
/* Tablet band: ease the orb toward the right edge as the headline starts to
   wrap, and dim the aurora a touch so the words stay crisp. */
@media (min-width: 721px) and (max-width: 880px) {
  .tl-hero { --orb-cx: 94%; --orb-cy: 24%; }
  .tl-aurora { opacity: .6; }
}
/* Respect reduced motion — freeze every animated layer, keep the static scene. */
@media (prefers-reduced-motion: reduce) {
  .tl-aurora, .tl-portal-glow, .tl-portal-orb, .tl-eyebrow-dot { animation: none; }
  .tl-portal-ring { animation: none; opacity: .22; }
  .tl-embers i { animation: none; opacity: 0; }
}
.tl-eyebrow { font-size: 12.5px; font-weight: 700; letter-spacing: 1px; color: var(--wot-text-2); }
.tl-h1 { font-size: clamp(40px, 9vw, 92px); line-height: 1.02; letter-spacing: -.035em; font-weight: 900; margin: 16px 0 0; padding-bottom: .04em; }
/* inline-block + padding extends the gradient's paint box past the baseline so
   the descender of "strateg-y." isn't clipped (the classic background-clip:text
   + tight line-height bug). */
.tl-h1 em { font-style: normal; display: inline-block; padding-bottom: .14em; margin-bottom: -.14em;
  background: var(--wot-grad); -webkit-background-clip: text; background-clip: text; color: transparent; }
.tl-knew { margin: 26px 0 0; font-size: clamp(18px, 2.6vw, 26px); line-height: 1.4; color: var(--wot-text-1); }
.tl-knew [data-knew] { transition: opacity .38s ease; color: var(--wot-text-0); font-weight: 600; }
.tl-knew b { color: var(--wot-text-0); font-weight: 800; }
.tl-lede { max-width: 60ch; margin: 22px 0 0; font-size: clamp(15px, 1.8vw, 18px); line-height: 1.62; color: var(--wot-text-1); }
.tl-cta { display: flex; flex-wrap: wrap; gap: 12px; margin: 30px 0 0; }
.tl-textlink { display: inline-block; margin: 16px 0 0; background: none; border: 0; padding: 0; cursor: pointer;
  font: inherit; font-size: 14px; font-weight: 600; color: var(--wot-text-2); text-decoration: underline; text-underline-offset: 3px; }
.tl-textlink:hover { color: var(--wot-text-0); }
.tl-price-signin { text-align: center; margin: 22px 0 0; font-size: 15px; color: var(--wot-text-1); }
.tl-price-signin .tl-textlink { margin: 0 0 0 4px; font-size: 15px; color: var(--wot-grad-start); }

/* ── Buttons ──────────────────────────────────────────────────────────────── */
.tl-btn { cursor: pointer; font: inherit; font-weight: 800; font-size: 15px; border-radius: 999px; padding: 14px 26px;
  border: 1px solid transparent; transition: transform .12s ease, box-shadow .2s ease, background .2s; color: #fff; }
.tl-btn.is-lg { font-size: 16.5px; padding: 17px 34px; }
.tl-btn.is-primary { background: var(--wot-grad); box-shadow: 0 10px 30px rgba(255,31,143,.28); }
.tl-btn.is-primary:hover { transform: translateY(-2px); box-shadow: 0 16px 40px rgba(255,31,143,.38); }
.tl-btn.is-ghost { background: rgba(255,255,255,.04); border-color: var(--wot-border); color: var(--wot-text-0); }
.tl-btn.is-ghost:hover { border-color: rgba(255,255,255,.28); transform: translateY(-2px); }

/* ── The wall (you've tried everything) ───────────────────────────────────── */
.tl-tried { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; margin: 34px 0 0; }
.tl-tried-card { padding: 22px; border-radius: var(--wot-r-lg); background: var(--wot-bg-1); border: 1px solid var(--wot-border); }
.tl-tried-k { font-size: 11px; font-weight: 800; letter-spacing: 1.4px; text-transform: uppercase; color: var(--wot-text-2); }
.tl-tried-card strong { display: block; margin: 8px 0 6px; font-size: 18px; }
.tl-tried-card p { margin: 0; font-size: 13.5px; line-height: 1.55; color: var(--wot-text-2); }

/* ── Mentors ──────────────────────────────────────────────────────────────── */
.tl-mentors { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; margin: 30px 0 0; }
.tl-mentor.is-wide { grid-column: 1 / -1; }
.tl-mentor.is-wide .tl-mentor-links { flex-wrap: wrap; }
.tl-mentor { position: relative; overflow: hidden; padding: 26px; border-radius: var(--wot-r-lg);
  background: var(--wot-bg-1); border: 1px solid var(--wot-border); }
.tl-mentor::before { content: ''; position: absolute; inset: 0; opacity: .12; pointer-events: none; }
.tl-mentor[data-tone="gold"]::before { background: radial-gradient(130% 120% at 0 0, #FF8A1F, transparent 55%); }
.tl-mentor[data-tone="calm"]::before { background: radial-gradient(130% 120% at 0 0, #38BDF8, transparent 55%); }
.tl-mentor-top { display: flex; align-items: center; gap: 14px; position: relative; z-index: 1; }
.tl-mentor-av { flex: 0 0 auto; width: 58px; height: 58px; border-radius: 50%; display: grid; place-items: center;
  font-size: 19px; font-weight: 900; letter-spacing: .5px; color: #0a0a0a; }
.tl-mentor[data-tone="gold"] .tl-mentor-av { background: linear-gradient(135deg, #FFC85A, #FF6B1F); }
.tl-mentor[data-tone="calm"] .tl-mentor-av { background: linear-gradient(135deg, #7DD3FC, #2563EB); color: #04121f; }
.tl-mentor-kick { font-size: 11px; font-weight: 800; letter-spacing: 1.4px; text-transform: uppercase; color: var(--wot-text-2); }
.tl-mentor-name { font-size: 19px; font-weight: 900; }
.tl-mentor-name em { font-style: normal; font-size: 14px; font-weight: 700; color: var(--wot-text-2); margin-left: 6px; }
.tl-mentor-role { position: relative; z-index: 1; margin: 14px 0 0; font-size: 14px; line-height: 1.55; color: var(--wot-text-1); }
.tl-mentor-links { position: relative; z-index: 1; display: flex; flex-wrap: wrap; gap: 9px; margin: 16px 0 0; }
.tl-mentor-links a { display: inline-flex; align-items: center; gap: 6px; padding: 7px 12px; border-radius: 999px;
  background: var(--wot-bg-0); border: 1px solid var(--wot-border); color: var(--wot-text-1); font-size: 12.5px; font-weight: 700; text-decoration: none; transition: .15s; }
.tl-mentor-links a:hover { color: var(--wot-text-0); border-color: rgba(255,255,255,.26); }

/* ── Curriculum (centerpiece) ─────────────────────────────────────────────── */
.tl-feats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; margin: 32px 0 0; }
.tl-feat { position: relative; text-align: left; cursor: pointer; font: inherit; color: var(--wot-text-0);
  display: flex; flex-direction: column; gap: 9px; padding: 22px; border-radius: var(--wot-r-lg);
  background: linear-gradient(180deg, var(--wot-bg-2), var(--wot-bg-1)); border: 1px solid var(--wot-border);
  transition: transform .14s ease, border-color .15s; overflow: hidden; }
.tl-feat::before { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; }
.tl-feat[data-tone="gold"]::before { background: linear-gradient(180deg, #FFC85A, #FF6B1F); }
.tl-feat[data-tone="calm"]::before { background: linear-gradient(180deg, #7DD3FC, #2563EB); }
.tl-feat[data-tone="grad"]::before { background: var(--wot-grad); }
.tl-feat:hover { transform: translateY(-3px); border-color: rgba(255,255,255,.24); }
.tl-feat-tag { font-size: 11px; font-weight: 800; letter-spacing: 1.2px; text-transform: uppercase; color: var(--wot-text-2); }
.tl-feat-play { position: absolute; top: 18px; right: 18px; width: 30px; height: 30px; border-radius: 50%; display: grid; place-items: center;
  font-size: 11px; color: #fff; background: rgba(255,255,255,.08); border: 1px solid var(--wot-border); }
.tl-feat h3 { margin: 2px 0 0; font-size: 20px; letter-spacing: -.01em; }
.tl-feat p { margin: 0; font-size: 13px; line-height: 1.5; color: var(--wot-text-2); flex: 1; }
.tl-feat-cta { font-size: 13px; font-weight: 800; color: var(--wot-grad-end); display: inline-flex; align-items: center; gap: 4px; }
.tl-feat-cta i { font-style: normal; font-size: 17px; }

.tl-curr-all { margin: 30px 0 0; border-radius: var(--wot-r-lg); border: 1px solid var(--wot-border); background: var(--wot-bg-1); padding: 8px 20px 22px; }
.tl-curr-all-head { display: flex; align-items: baseline; justify-content: space-between; padding: 16px 0 6px; border-bottom: 1px solid var(--wot-border); }
.tl-curr-all-head h3 { margin: 0; font-size: 17px; }
.tl-curr-all-head span { font-size: 12px; color: var(--wot-text-2); }
.tl-track { padding: 18px 0; border-bottom: 1px solid var(--wot-border); }
.tl-track:last-child { border-bottom: 0; }
.tl-track-head { display: flex; align-items: baseline; gap: 10px; }
.tl-track-head h4 { margin: 0; font-size: 15.5px; }
.tl-track-head span { font-size: 11.5px; font-weight: 700; color: var(--wot-text-2); }
.tl-track-blurb { margin: 4px 0 12px; font-size: 12.5px; line-height: 1.5; color: var(--wot-text-2); max-width: 80ch; }
.tl-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.tl-chip { cursor: pointer; font: inherit; display: inline-flex; align-items: center; gap: 7px; padding: 8px 13px 8px 9px; border-radius: 999px;
  background: var(--wot-bg-0); border: 1px solid var(--wot-border); color: var(--wot-text-1); font-size: 12.5px; font-weight: 600; transition: .14s; }
.tl-chip b { display: inline-grid; place-items: center; min-width: 19px; height: 19px; padding: 0 4px; border-radius: 999px;
  font-size: 11px; font-weight: 800; color: var(--wot-grad-end); background: rgba(255,107,31,.16); }
.tl-track[data-tone="calm"] .tl-chip b { color: #7DD3FC; background: rgba(56,189,248,.16); }
.tl-track[data-tone="gold"] .tl-chip b { color: #FFC85A; background: rgba(255,200,90,.16); }
.tl-track[data-tone="bull"] .tl-chip b { color: #4ade80; background: rgba(74,222,128,.16); }
.tl-track[data-tone="bear"] .tl-chip b { color: #ff7a5c; background: rgba(239,68,68,.16); }
.tl-chip:hover { color: var(--wot-text-0); border-color: rgba(255,255,255,.26); transform: translateY(-1px); }

/* ── Behaviors ────────────────────────────────────────────────────────────── */
.tl-behaviors { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin: 30px 0 0; }
.tl-beh { display: flex; align-items: center; gap: 11px; padding: 16px; border-radius: var(--wot-r-md);
  background: var(--wot-bg-1); border: 1px solid var(--wot-border); font-size: 14.5px; font-weight: 700; }
.tl-beh span { flex: 0 0 auto; display: grid; place-items: center; width: 28px; height: 28px; border-radius: 50%;
  font-size: 13px; font-weight: 900; color: #0a0a0a; background: var(--wot-grad); }

/* ── What it is / isn't ───────────────────────────────────────────────────── */
.tl-vs { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin: 30px 0 0; }
.tl-vs-col { padding: 22px; border-radius: var(--wot-r-lg); border: 1px solid var(--wot-border); }
.tl-vs-col.is-not { background: rgba(239,68,68,.05); }
.tl-vs-col.is-is { background: rgba(34,197,94,.05); }
.tl-vs-col h4 { margin: 0 0 12px; font-size: 13px; letter-spacing: 1.4px; text-transform: uppercase; color: var(--wot-text-2); }
.tl-vs-row { display: flex; align-items: center; gap: 10px; padding: 9px 0; font-size: 14.5px; font-weight: 600; border-top: 1px solid var(--wot-border); }
.tl-vs-row:first-of-type { border-top: 0; }
.tl-x { color: var(--wot-bear); font-weight: 900; }
.tl-check { color: var(--wot-bull); font-weight: 900; }

/* ── Pricing ──────────────────────────────────────────────────────────────── */
.tl-price-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; margin: 30px auto 0; max-width: 760px; }
.tl-price-card { position: relative; padding: 28px; border-radius: var(--wot-r-lg); background: var(--wot-bg-1); border: 1px solid var(--wot-border); }
.tl-price-card.is-feature { border-color: rgba(255,31,143,.5); box-shadow: 0 16px 50px rgba(255,31,143,.14); background: linear-gradient(180deg, rgba(255,31,143,.06), var(--wot-bg-1)); }
.tl-price-badge { position: absolute; top: -11px; left: 24px; font-size: 11px; font-weight: 800; letter-spacing: .6px; text-transform: uppercase;
  color: #fff; background: var(--wot-grad); padding: 5px 12px; border-radius: 999px; }
.tl-price-name { font-size: 13px; font-weight: 800; letter-spacing: 1px; text-transform: uppercase; color: var(--wot-text-2); }
.tl-price-amt { font-size: 46px; font-weight: 900; letter-spacing: -.02em; margin: 6px 0 0; }
.tl-price-amt span { font-size: 15px; font-weight: 600; color: var(--wot-text-2); margin-left: 6px; }
.tl-price-card p { margin: 10px 0 18px; font-size: 13.5px; line-height: 1.5; color: var(--wot-text-1); }
.tl-price-card .tl-btn { width: 100%; }

/* ── iOS + final ──────────────────────────────────────────────────────────── */
.tl-ios { text-align: center; }
.tl-ios .tl-sub { margin-left: auto; margin-right: auto; }
.tl-appstore { display: inline-flex; align-items: center; gap: 12px; margin: 24px 0 0; padding: 12px 22px; border-radius: 14px;
  background: #000; border: 1px solid rgba(255,255,255,.18); color: #fff; text-decoration: none; }
.tl-appstore-txt { display: flex; flex-direction: column; line-height: 1.1; text-align: left; }
.tl-appstore-txt small { font-size: 10px; opacity: .8; }
.tl-appstore-txt b { font-size: 18px; }
.tl-final { position: relative; z-index: 1; text-align: center; max-width: 760px; margin: 0 auto; padding: clamp(80px, 13vw, 150px) 22px clamp(70px, 11vw, 120px); }
.tl-final-orb { display: flex; justify-content: center; margin-bottom: 20px; opacity: .9; }
.tl-final .tl-sub { margin: 14px auto 28px; }

/* ── Vision showcase (landing flagship) ──────────────────────────────────── */
.tl-vis { position: relative; }
.tl-vis-stage { display: grid; grid-template-columns: 0.82fr 1.18fr; gap: 26px; align-items: stretch; margin: 8px 0 30px; }
.tl-vis-hero { display: flex; flex-direction: column; justify-content: center; gap: 8px; padding: 30px; border-radius: var(--wot-r-lg); background: linear-gradient(135deg, rgba(255,107,31,0.16), rgba(255,31,143,0.09)); border: 1px solid rgba(255,107,31,0.30); }
.tl-vis-hero-k { font-size: 11px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; color: var(--wot-text-2); }
.tl-vis-hero-num { font-size: clamp(48px, 7vw, 78px); font-weight: 900; line-height: 1; letter-spacing: -0.03em; background: linear-gradient(90deg,#FF6B1F,#FF1F8F); -webkit-background-clip: text; background-clip: text; color: transparent; }
.tl-vis-hero-num em { font-style: normal; font-size: 0.32em; color: var(--wot-text-2); -webkit-text-fill-color: var(--wot-text-2); }
.tl-vis-hero-sub { font-size: 14px; color: var(--wot-text-1); }
.tl-vis-why { font-size: 16px; font-weight: 600; line-height: 1.4; color: #fff; margin: 8px 0 0; }
.tl-vis-chart { padding: 22px 22px 16px; border-radius: var(--wot-r-lg); background: linear-gradient(180deg, var(--wot-bg-1), var(--wot-bg-0)); border: 1px solid var(--wot-border); }
.tl-vis-chart-k { font-size: 12.5px; color: var(--wot-text-2); margin-bottom: 8px; }
.tl-vis-svg { width: 100%; height: auto; display: block; overflow: visible; }
.tl-vis-svg text { paint-order: stroke; stroke: #07070a; stroke-width: 3.5px; stroke-linejoin: round; }
.tl-vis-val { fill: #fff; font-size: 17px; font-weight: 800; }
.tl-vis-yr { fill: var(--wot-text-1); font-size: 14px; font-weight: 600; }
.tl-vis-ghost { font-size: 14px; font-weight: 800; }
.tl-vis-dreams-head { font-size: 14px; color: var(--wot-text-1); margin: 4px 0 14px; }
.tl-vis-dreams { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; margin-bottom: 34px; }
.tl-vis-dream { border: 1px solid var(--wot-border); border-radius: var(--wot-r-md); overflow: hidden; background: var(--wot-bg-1); transition: transform .18s, box-shadow .18s; }
.tl-vis-dream:hover { transform: translateY(-3px); box-shadow: 0 16px 40px rgba(0,0,0,0.5); }
.tl-vis-dream-img { position: relative; aspect-ratio: 16/11; overflow: hidden; background: var(--wot-bg-2); }
.tl-vis-dream-img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.tl-vis-dream-img::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 45%, rgba(0,0,0,0.6)); }
.tl-vis-dream-cost { position: absolute; right: 10px; bottom: 8px; z-index: 2; font-size: 20px; font-weight: 800; color: #fff; text-shadow: 0 2px 10px rgba(0,0,0,0.7); }
.tl-vis-dream-body { padding: 12px 14px; display: flex; flex-direction: column; gap: 3px; }
.tl-vis-dream-body strong { font-size: 14.5px; line-height: 1.25; }
.tl-vis-dream-body span { font-size: 11px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; color: var(--wot-grad-start); }
.tl-vis-ladder { display: grid; grid-template-columns: 1.4fr 1fr; gap: 22px; align-items: center; padding: 22px 24px; border-radius: var(--wot-r-lg); background: var(--wot-bg-1); border: 1px solid var(--wot-border); margin-bottom: 30px; }
.tl-vis-ladder-lead { font-size: 15px; line-height: 1.55; color: var(--wot-text-1); }
.tl-vis-ladder-lead strong { color: #fff; }
.tl-vis-tiers { display: flex; gap: 12px; }
.tl-vis-tier { flex: 1; text-align: center; padding: 14px 8px; border-radius: var(--wot-r-md); background: var(--wot-bg-2); border: 1px solid var(--wot-border); opacity: .6; }
.tl-vis-tier.is-on { opacity: 1; border-color: rgba(255,107,31,0.5); background: linear-gradient(135deg, rgba(255,107,31,0.12), rgba(255,31,143,0.06)); }
.tl-vis-tier b { display: block; font-size: 30px; font-weight: 900; background: linear-gradient(90deg,#FF6B1F,#FF1F8F); -webkit-background-clip: text; background-clip: text; color: transparent; }
.tl-vis-tier span { display: block; font-size: 9.5px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--wot-text-2); }
.tl-vis-tier i { font-style: normal; font-size: 12px; font-weight: 700; color: var(--wot-text-1); }
.tl-vis-cta { justify-content: center; }

@media (max-width: 860px) {
  .tl-tried, .tl-feats, .tl-behaviors, .tl-mentors, .tl-vs, .tl-price-grid { grid-template-columns: 1fr; }
  .tl-behaviors { grid-template-columns: 1fr 1fr; }
  .tl-vis-stage { grid-template-columns: 1fr; }
  .tl-vis-dreams { grid-template-columns: 1fr 1fr; }
  .tl-vis-ladder { grid-template-columns: 1fr; }
}

.v2-lv-earn { margin: 2px 0 14px; }

/* ── Sector (money-flow rotation) ──────────────────────────────────────────
   A re-architecture of the v1 admin "Rotation" grid: one category + one window
   at a time, read as a ranked diverging-bar leaderboard. Reuses .v2-seg for the
   selectors. The expand-chart is measured-width SVG → never stretched. */
.v2-page.v2-sector { max-width: 1180px; }

.v2-sector-controls { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 16px 24px; margin: 2px 0 4px; }
.v2-sector-ctl { display: flex; flex-direction: column; gap: 8px; }
.v2-sector-ctl-lbl { font-size: 10px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; color: var(--wot-text-2); }
.v2-sector-seg { flex-wrap: wrap; }
.v2-sector-note { display: flex; align-items: center; gap: 7px; margin-left: auto; align-self: center;
  font-size: 12px; font-weight: 600; color: var(--wot-text-2); }
.v2-sector-date { background: var(--wot-bg-2); border: 1px solid var(--wot-border); color: var(--wot-text-0);
  border-radius: 10px; padding: 8px 12px; font: inherit; font-size: 13px; cursor: pointer; }

.sec-beat { display: inline-block; width: 7px; height: 7px; border-radius: 50%; background: var(--wot-target);
  box-shadow: 0 0 7px rgba(212,240,74,.7); vertical-align: middle; margin-left: 6px; flex: none; }

/* Leaderboard */
.v2-sector-board { display: flex; flex-direction: column; gap: 7px; margin-top: 6px; }
.sec-row { border: 1px solid var(--wot-border); border-radius: var(--wot-r-md); background: var(--wot-bg-1); overflow: hidden; transition: border-color .15s ease, background .15s ease; }
.sec-row:hover { border-color: var(--wot-border-strong); }
.sec-row.is-open { border-color: var(--wot-border-strong); background: linear-gradient(180deg, var(--wot-bg-1), var(--wot-bg-0)); box-shadow: var(--wot-shadow-card); }
.sec-row.is-bench { background: rgba(124,92,255,.06); }
.sec-row.is-bench.is-open { background: linear-gradient(180deg, rgba(124,92,255,.08), var(--wot-bg-0)); }
.sec-rowbtn { width: 100%; display: grid; grid-template-columns: minmax(140px, 1.15fr) minmax(110px, 2fr) 100px;
  align-items: center; gap: 18px; background: none; border: none; cursor: pointer; font: inherit; color: inherit; padding: 13px 16px; text-align: left; }
.sec-id { display: flex; align-items: center; gap: 9px; min-width: 0; }
.sec-dot { width: 9px; height: 9px; border-radius: 50%; flex: none; }
.sec-sym { font-weight: 800; font-size: 14px; color: var(--wot-text-0); flex: none; }
.sec-name { color: var(--wot-text-2); font-size: 12.5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sec-bmk { font-size: 8.5px; font-weight: 800; letter-spacing: .05em; color: #b6a5ff; background: rgba(124,92,255,.16);
  border: 1px solid rgba(124,92,255,.4); border-radius: 5px; padding: 1px 5px; flex: none; }
.sec-bar { position: relative; height: 20px; }
.sec-bar-zero { position: absolute; left: 50%; top: -1px; bottom: -1px; width: 1px; background: var(--wot-border-strong); }
.sec-bar-fill { position: absolute; top: 4px; bottom: 4px; border-radius: 4px; min-width: 2px; }
.sec-bar-fill.is-pos { background: linear-gradient(90deg, rgba(34,197,94,.45), var(--wot-bull)); }
.sec-bar-fill.is-neg { background: linear-gradient(270deg, rgba(239,68,68,.45), var(--wot-bear)); }
.sec-val { text-align: right; font-variant-numeric: tabular-nums; font-weight: 800; font-size: 13.5px; white-space: nowrap; }
.sec-val.is-pos { color: #4ade80; }
.sec-val.is-neg { color: #ff6b6b; }
.sec-val.is-na { color: var(--wot-text-2); }

/* Expanded detail — chart + per-window returns + holdings */
.sec-detail { padding: 2px 16px 16px; }
.sec-detail-grid { display: grid; grid-template-columns: minmax(0, 1.7fr) minmax(0, 1fr); gap: 16px; }
.sec-chartwrap { background: var(--wot-bg-2); border: 1px solid var(--wot-border); border-radius: var(--wot-r-md);
  padding: 8px 6px; min-height: 226px; display: flex; align-items: center; justify-content: center; }
.sec-svg { display: block; width: 100%; height: 210px; }
.sec-axline { stroke: rgba(255,255,255,.22); stroke-width: 1; stroke-dasharray: 2 3; }
.sec-ax { fill: var(--wot-text-2); font-size: 10px; font-weight: 700; }
.sec-chart-empty { color: var(--wot-text-2); font-size: 12.5px; padding: 30px 10px; text-align: center; }
.sec-detail-side { display: flex; flex-direction: column; gap: 14px; }
.sec-side-h { font-size: 10px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; color: var(--wot-text-2);
  display: flex; align-items: baseline; justify-content: space-between; gap: 8px; }
.sec-side-h span { font-size: 15px; font-weight: 800; letter-spacing: 0; text-transform: none; color: var(--wot-text-0); font-variant-numeric: tabular-nums; }
.sec-wks { display: grid; grid-template-columns: repeat(5, 1fr); gap: 6px; }
.sec-wk { background: var(--wot-bg-2); border: 1px solid var(--wot-border); border-radius: 10px; padding: 7px 3px; text-align: center; }
.sec-wk em { display: block; font-style: normal; font-size: 9.5px; font-weight: 800; letter-spacing: .03em; text-transform: uppercase; color: var(--wot-text-2); }
.sec-wk b { display: block; margin-top: 3px; font-size: 12px; font-weight: 800; font-variant-numeric: tabular-nums; }
.sec-wk b.is-pos { color: #4ade80; }
.sec-wk b.is-neg { color: #ff6b6b; }
.sec-wk b.is-na { color: var(--wot-text-3); }
.sec-holds-h { font-size: 10px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; color: var(--wot-text-2); margin-bottom: 7px; }
.sec-holds-list { display: flex; flex-wrap: wrap; gap: 6px; }
.sec-hold { font-size: 11.5px; font-weight: 700; color: var(--wot-text-1); background: var(--wot-bg-2);
  border: 1px solid var(--wot-border); border-radius: 7px; padding: 3px 8px; }
.sec-chartnote { font-size: 11px; color: var(--wot-text-3); line-height: 1.5; }
.sec-chartnote b { color: var(--wot-text-2); }

@media (max-width: 720px) {
  .v2-sector-note { width: 100%; margin-left: 0; }
  .sec-rowbtn { grid-template-columns: minmax(0, 1fr) 84px; grid-template-areas: "id val" "bar bar"; gap: 8px 12px; }
  .sec-id { grid-area: id; }
  .sec-val { grid-area: val; }
  .sec-bar { grid-area: bar; }
  .sec-name { display: none; }
  .sec-detail-grid { grid-template-columns: 1fr; }
}

/* ── Plan tab pre-market header: SPX Fair Value + econ-calendar windows ─────
   plan-brief.js. The Fair Value pill is the prominent, trader-adjustable
   "how rich is premium" gauge; the windows are the five wait-for-it slots. */
.v2-fvbrief { display: grid; grid-template-columns: 1fr; gap: 16px; margin: 4px 0 20px; }
@media (min-width: 920px) { .v2-fvbrief { grid-template-columns: minmax(280px, 1fr) 1.25fr; align-items: stretch; } }

.v2-fv-skel { color: var(--wot-text-2); font-size: 13px; padding: 18px; }

/* Fair Value pill card */
.v2-fv-card {
  position: relative; display: flex; flex-direction: column; gap: 10px;
  padding: 18px 20px; border: 1px solid var(--wot-border); border-radius: var(--wot-r-lg);
  background: linear-gradient(160deg, var(--wot-bg-1), #0c0910);
  box-shadow: 0 12px 40px rgba(255,31,143,.10), 0 2px 8px rgba(0,0,0,.5);
}
.v2-fv-top { display: flex; align-items: center; gap: 10px; }
.v2-fv-label { font-size: 12px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--wot-text-2); }
.v2-fv-adjchip { font-size: 10px; font-weight: 800; letter-spacing: .05em; text-transform: uppercase;
  padding: 2px 8px; border-radius: 999px; color: #b6a5ff; background: rgba(124,92,255,.18); }
.v2-fv-main { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
.v2-fv-mult { font-size: 52px; line-height: 1; font-weight: 900; letter-spacing: -.02em;
  background: var(--wot-grad); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }
.v2-fv-mult.is-empty { background: none; -webkit-text-fill-color: var(--wot-text-3); color: var(--wot-text-3); }
.v2-fv-right { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; }
.v2-fv-sizing { font-size: 12px; padding: 5px 12px; }
.v2-fv-editbtn { background: none; border: 1px solid var(--wot-border); color: var(--wot-text-2);
  font-size: 11px; font-weight: 700; padding: 4px 10px; border-radius: 999px; cursor: pointer; }
.v2-fv-editbtn:hover { border-color: var(--wot-border-strong); color: var(--wot-text-1); }
.v2-fv-edit { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.v2-fv-input { width: 90px; padding: 8px 10px; font-size: 16px; font-variant-numeric: tabular-nums;
  background: var(--wot-bg-2); border: 1px solid var(--wot-border); border-radius: var(--wot-r-md); color: var(--wot-text-0); }
.v2-fv-input:focus { outline: none; border-color: var(--wot-grad-end); box-shadow: 0 0 0 2px rgba(255,31,143,.18); }
.v2-fv-save { padding: 8px 14px; }
.v2-fv-reset { background: none; border: none; color: var(--wot-text-2); font-size: 12px; text-decoration: underline; cursor: pointer; }
.v2-fv-reset:hover { color: var(--wot-text-1); }
.v2-fv-note { font-size: 12px; color: var(--wot-text-2); font-variant-numeric: tabular-nums; }
.v2-fv-bands { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-top: 2px; }
.v2-fv-bandtag { font-size: 10px; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; color: var(--wot-grad-start); }
.v2-fv-leg { font-size: 11px; color: var(--wot-text-3); padding: 3px 9px; border-radius: 999px; border: 1px solid transparent; font-variant-numeric: tabular-nums; }
.v2-fv-leg i { font-style: normal; opacity: .8; }
.v2-fv-leg.is-on { color: var(--wot-text-0); background: var(--wot-bg-2); border-color: var(--wot-border); font-weight: 700; }
.v2-fv-leg.is-on.is-good { color: var(--wot-bull); border-color: rgba(34,197,94,.4); }
.v2-fv-leg.is-on.is-caution { color: var(--wot-chop); border-color: rgba(245,180,0,.4); }
.v2-fv-leg.is-on.is-danger { color: var(--wot-bear); border-color: rgba(239,68,68,.45); }
.v2-fv-explain { margin-top: 2px; }
.v2-fv-explain summary { font-size: 12px; color: var(--wot-text-2); cursor: pointer; list-style: none; }
.v2-fv-explain summary::-webkit-details-marker { display: none; }
.v2-fv-explain summary::before { content: '＋ '; color: var(--wot-grad-start); }
.v2-fv-explain[open] summary::before { content: '－ '; }
.v2-fv-explain p { margin: 8px 0 0; font-size: 12.5px; line-height: 1.55; color: var(--wot-text-1); }

/* ── SPX & QQQ Today's Analysis — CALLS / CHOP / PUTS ladder ─────────────── */
.v2-anal-wrap { display: flex; flex-direction: column; gap: 14px; }
.v2-anal { display: flex; flex-direction: column; gap: 6px; }
.v2-anal-sym { font-size: 11px; font-weight: 800; letter-spacing: .09em; text-transform: uppercase; color: var(--wot-text-2); }
/* Segmented ladder: the editable numbers ARE the dividers between zones. */
.v2-anal-ladder { display: flex; align-items: stretch; border: 1px solid var(--wot-border);
  border-radius: var(--wot-r-md); overflow: hidden; background: var(--wot-bg-2); }
.v2-anal-seg { flex: 1 1 0; min-width: 0; display: flex; align-items: center; gap: 7px; white-space: nowrap;
  padding: 8px 12px; font-size: 11px; font-weight: 800; letter-spacing: .07em; text-transform: uppercase; }
.v2-anal-seg.is-puts  { color: var(--wot-bear); background: rgba(239,68,68,.09); }
.v2-anal-seg.is-chop  { color: var(--wot-chop); background: rgba(245,180,0,.07); justify-content: center; }
.v2-anal-seg.is-calls { color: var(--wot-bull); background: rgba(34,197,94,.09); justify-content: flex-end; }
/* Directional chevrons — outward = breakout side, inward = contained CHOP. */
.v2-anal-dir { font-style: normal; font-size: 1.35em; font-weight: 900; line-height: 1; opacity: .85; }
.v2-anal-dir.is-in { font-size: 1.1em; opacity: .4; }
.v2-anal-num { flex: 0 0 auto; width: 66px; text-align: center; font-size: 15px; font-weight: 800;
  font-variant-numeric: tabular-nums; color: var(--wot-text-0); background: var(--wot-bg-1);
  border: none; border-left: 1px solid var(--wot-border); border-right: 1px solid var(--wot-border);
  padding: 8px 4px; -moz-appearance: textfield; cursor: text; }
.v2-anal-num::-webkit-outer-spin-button, .v2-anal-num::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.v2-anal-num::placeholder { color: var(--wot-text-3); }
.v2-anal-num:focus { outline: none; background: var(--wot-bg-0); box-shadow: inset 0 -2px 0 var(--wot-grad-end); }
/* Fair Value — secondary line under the SPX ladder, normal scale. */
.v2-anal-fv { display: flex; flex-direction: column; gap: 10px; padding: 14px 0;
  border-top: 1px solid var(--wot-border); border-bottom: 1px solid var(--wot-border); }
.v2-anal-fv .v2-fv-mult { font-size: 30px; }

/* Econ-calendar windows */
.v2-econ { display: flex; flex-direction: column; gap: 0;
  padding: 16px 18px; border: 1px solid var(--wot-border); border-radius: var(--wot-r-lg);
  background: linear-gradient(180deg, var(--wot-bg-1), var(--wot-bg-0)); }
.v2-econ-head { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; margin-bottom: 10px; }
.v2-econ-head b { font-size: 14px; }
.v2-econ-head span { font-size: 12px; color: var(--wot-text-2); }
.v2-econ-empty { font-size: 12.5px; color: var(--wot-text-2); line-height: 1.5; padding: 6px 0; }
.v2-econ-row { display: grid; grid-template-columns: 88px 1fr; gap: 12px; padding: 10px 0; border-top: 1px solid var(--wot-border); }
.v2-econ-row:first-of-type { border-top: none; }
.v2-econ-time { font-size: 13px; font-weight: 800; color: var(--wot-text-1); font-variant-numeric: tabular-nums; display: flex; flex-direction: column; gap: 4px; }
.v2-econ-row.is-emph { background: rgba(255,31,143,.05); border-radius: var(--wot-r-md); margin: 0 -8px; padding: 10px 8px; border-top-color: transparent; }
.v2-econ-row.is-emph + .v2-econ-row { border-top-color: transparent; }
.v2-econ-row.is-emph .v2-econ-time { color: var(--wot-grad-end); }
.v2-econ-key { font-size: 9px; font-weight: 800; letter-spacing: .04em; text-transform: uppercase;
  color: var(--wot-grad-start); background: rgba(255,107,31,.12); padding: 2px 6px; border-radius: 999px; width: max-content; }
.v2-econ-body { display: flex; flex-direction: column; gap: 6px; }
.v2-econ-ev { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; }
.v2-econ-evname { font-size: 13px; color: var(--wot-text-0); font-weight: 600; }
.v2-econ-evdots { font-size: 9px; letter-spacing: 1px; color: var(--wot-text-3); }
.v2-econ-evdots.imp-3 { color: var(--wot-bear); }
.v2-econ-evdots.imp-2 { color: var(--wot-chop); }
.v2-econ-evnum { font-size: 11px; color: var(--wot-text-2); font-variant-numeric: tabular-nums; }
.v2-econ-none { font-size: 12px; color: var(--wot-text-3); font-style: italic; }

/* ── Edge playbook picker (views/edge.js + edge-playbook.js) ───────────────── */
.pb-section { margin-top: 22px; }
.pb-section-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin-bottom: 12px; flex-wrap: wrap; }
.pb-section-head h2 { font-size: 16px; font-weight: 800; letter-spacing: 0.01em; margin: 0; }
.pb-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 16px; }
.pb-card { position: relative; background: var(--wot-bg-1); border: 1px solid var(--wot-border); border-radius: var(--wot-r-md, 14px);
  padding: 16px; display: flex; flex-direction: column; gap: 12px; overflow: hidden; }
.pb-card::before { content: ''; position: absolute; inset: 0 auto 0 0; width: 3px; background: var(--pb, var(--wot-grad-start)); }
.pb-card.is-adopted { border-color: color-mix(in srgb, var(--pb) 45%, var(--wot-border)); }
.pb-card-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.pb-card-title { display: flex; align-items: center; gap: 8px; font-size: 15px; font-weight: 800; }
.pb-dotc { width: 9px; height: 9px; border-radius: 50%; flex: none; }
.pb-side { font-size: 9.5px; font-weight: 800; letter-spacing: 0.08em; padding: 3px 7px; border-radius: 999px; }
.pb-side.is-long  { background: rgba(34,197,94,0.15); color: var(--wot-bull); }
.pb-side.is-short { background: rgba(239,68,68,0.15); color: var(--wot-bear); }
.pb-side.is-both  { background: rgba(255,255,255,0.08); color: var(--wot-text-1); }
.pb-oneline { font-size: 13px; line-height: 1.45; color: var(--wot-text-1); margin: 0; }

.pb-diagrams { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.pb-fig { margin: 0; border-radius: 10px; padding: 8px; border: 1px solid var(--wot-border); background: var(--wot-bg-0); }
.pb-fig.is-take { border-color: rgba(34,197,94,0.3); }
.pb-fig.is-skip { border-color: rgba(239,68,68,0.3); }
.pb-fig figcaption { display: flex; align-items: center; gap: 5px; font-size: 10px; font-weight: 800; letter-spacing: 0.06em; margin-bottom: 6px; }
.pb-fig.is-take figcaption { color: var(--wot-bull); }
.pb-fig.is-skip figcaption { color: var(--wot-bear); }
.pb-fig figcaption .v2-icon, .pb-fig figcaption svg { width: 13px; height: 13px; }
.pb-svg { width: 100%; height: 86px; display: block; }
.pb-svg .pb-lvl { stroke: var(--wot-text-2); stroke-width: 1.4; stroke-dasharray: 5 4; opacity: 0.85; }
.pb-svg .pb-conf { stroke: var(--wot-text-3, #555); stroke-width: 1; stroke-dasharray: 2 3; opacity: 0.6; }
.pb-svg .pb-px { fill: none; stroke-width: 2.2; stroke-linejoin: round; stroke-linecap: round; }
.pb-svg.is-take .pb-px { stroke: var(--wot-bull); }
.pb-svg.is-skip .pb-px { stroke: var(--wot-bear); }
.pb-svg .pb-lvltext, .pb-svg .pb-conftext { font-size: 8px; font-weight: 700; fill: var(--wot-text-2); }
.pb-svg .pb-conftext { text-anchor: end; }
.pb-svg .pb-note { font-size: 8.5px; font-weight: 600; fill: var(--wot-text-2); }
.pb-svg .pb-entry { fill: #fff; stroke: var(--wot-bull); stroke-width: 2; }
.pb-svg.is-skip .pb-entry { stroke: var(--wot-bear); }
.pb-svg .pb-arrow { fill: none; stroke-width: 2.4; }
.pb-svg .pb-arrow.up { stroke: var(--wot-bull); }
.pb-svg .pb-arrow.down { stroke: var(--wot-bear); }
.pb-svg .pb-x { stroke: var(--wot-bear); stroke-width: 2.6; }

.pb-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.pb-col h4 { display: flex; align-items: center; gap: 5px; font-size: 11px; font-weight: 800; letter-spacing: 0.04em; margin: 0 0 6px; }
.pb-col h4 .v2-icon, .pb-col h4 svg { width: 13px; height: 13px; }
.pb-take h4 { color: var(--wot-bull); }
.pb-skip h4 { color: var(--wot-bear); }
.pb-col ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 5px; }
.pb-col li { font-size: 12px; line-height: 1.35; color: var(--wot-text-1); padding-left: 13px; position: relative; }
.pb-take li::before { content: '✓'; position: absolute; left: 0; color: var(--wot-bull); font-weight: 800; }
.pb-skip li::before { content: '✕'; position: absolute; left: 0; color: var(--wot-bear); font-weight: 800; }
.pb-more { font-size: 12px; }
.pb-more summary { cursor: pointer; color: var(--wot-text-2); font-weight: 700; font-size: 11px; letter-spacing: 0.03em; padding: 4px 0; }
.pb-anat { display: grid; grid-template-columns: max-content 1fr; gap: 4px 12px; margin: 6px 0 0; }
.pb-anat dt { font-size: 10.5px; font-weight: 800; color: var(--wot-text-2); text-transform: uppercase; letter-spacing: 0.04em; }
.pb-anat dd { font-size: 12px; line-height: 1.4; color: var(--wot-text-1); margin: 0; }
.pb-adopt { margin-top: auto; display: inline-flex; align-items: center; justify-content: center; gap: 7px; width: 100%;
  padding: 11px; border-radius: 10px; border: 0; cursor: pointer; font-weight: 800; font-size: 13px;
  background: var(--pb, var(--wot-grad-start)); color: #0a0a0a; }
.pb-adopt .v2-icon, .pb-adopt svg { width: 15px; height: 15px; }
.pb-adopt:disabled { background: rgba(255,255,255,0.06); color: var(--wot-bull); cursor: default; }
.v2-edge-empty-note { grid-column: 1/-1; padding: 22px; text-align: center; color: var(--wot-text-2); font-size: 13px;
  border: 1px dashed var(--wot-border); border-radius: 12px; }

/* ── Avoid tab — STOP THE BLEED (views/avoid.js) ──────────────────────────── */
.v2-bleed { --bleed-red: #ff3b3b; }
.bleed-hero { text-align: center; padding: 30px 16px 22px; border-radius: 18px; margin-bottom: 18px;
  background: radial-gradient(120% 140% at 50% 0%, rgba(239,68,68,0.18), rgba(10,10,10,0) 60%);
  border: 1px solid rgba(239,68,68,0.22); }
.bleed-hero-flame { color: var(--bleed-red); width: 40px; margin: 0 auto 6px; opacity: 0.9; }
.bleed-hero-flame .v2-icon, .bleed-hero-flame svg { width: 40px; height: 40px; }
.bleed-hero h1 { font-size: clamp(26px, 6vw, 40px); font-weight: 900; letter-spacing: 0.04em; margin: 0;
  background: linear-gradient(180deg, #fff, #ff8a8a); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }
.bleed-hero-line { font-size: 15px; font-weight: 800; margin-top: 8px; color: var(--wot-text-0); }
.v2-bleed.is-bleeding .bleed-hero-line { color: var(--bleed-red); }
.bleed-hero-sub { font-size: 13px; color: var(--wot-text-2); max-width: 540px; margin: 8px auto 0; line-height: 1.5; }
.v2-bleed.is-bleeding .bleed-hero { animation: bleedpulse 2.4s ease-in-out infinite; }
@keyframes bleedpulse { 0%,100% { border-color: rgba(239,68,68,0.22); } 50% { border-color: rgba(239,68,68,0.6); } }

.bleed-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(330px, 1fr)); gap: 14px; }
.bleed-card { position: relative; border-radius: 14px; padding: 16px; overflow: hidden;
  background: var(--wot-bg-1); border: 1px solid var(--wot-border); display: flex; flex-direction: column; gap: 9px; }
.bleed-card.is-watch { border-color: rgba(245,180,0,0.28); }
.bleed-card.is-hot { border-color: var(--bleed-red); background: linear-gradient(180deg, rgba(239,68,68,0.12), rgba(20,8,8,0.6));
  box-shadow: 0 0 0 1px rgba(239,68,68,0.4), 0 14px 40px rgba(239,68,68,0.18); animation: bleedpulse 1.8s ease-in-out infinite; }
.bleed-card-top { display: flex; align-items: center; gap: 9px; }
.bleed-num { font-size: 13px; font-weight: 900; color: var(--wot-text-3, #555); font-variant-numeric: tabular-nums; }
.bleed-card.is-hot .bleed-num { color: var(--bleed-red); }
.bleed-name { flex: 1; font-size: 15px; font-weight: 800; }
.bleed-state { display: inline-flex; align-items: center; gap: 5px; font-size: 9.5px; font-weight: 800; letter-spacing: 0.07em;
  padding: 3px 8px; border-radius: 999px; }
.bleed-state .bleed-dot { width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
.bleed-state.is-hot { background: rgba(239,68,68,0.2); color: var(--bleed-red); }
.bleed-state.is-hot .bleed-dot { animation: bleedblink 1s steps(2,start) infinite; }
.bleed-state.is-watch { background: rgba(245,180,0,0.16); color: var(--wot-chop); }
.bleed-state.is-cold { background: rgba(255,255,255,0.06); color: var(--wot-text-2); }
@keyframes bleedblink { 50% { opacity: 0.25; } }
.bleed-tell { font-size: 13px; font-style: italic; color: var(--wot-text-1); margin: 0; line-height: 1.4; }
.bleed-what { font-size: 12.5px; color: var(--wot-text-2); margin: 0; line-height: 1.5; }
.bleed-instead { display: flex; align-items: flex-start; gap: 8px; font-size: 12.5px; line-height: 1.45; color: var(--wot-text-1);
  background: rgba(34,197,94,0.08); border: 1px solid rgba(34,197,94,0.22); border-radius: 9px; padding: 9px 11px; }
.bleed-instead b { color: var(--wot-bull); }
.bleed-instead-ic { color: var(--wot-bull); flex: none; }
.bleed-instead-ic .v2-icon, .bleed-instead-ic svg { width: 15px; height: 15px; }
.bleed-reason { display: flex; align-items: center; gap: 6px; font-size: 11px; font-weight: 700; color: var(--wot-text-2); }
.bleed-card.is-hot .bleed-reason { color: var(--bleed-red); }
.bleed-reason .v2-icon, .bleed-reason svg { width: 14px; height: 14px; }
.bleed-foot { text-align: center; font-size: 11px; color: var(--wot-text-3, #555); margin-top: 18px; }

/* ════════════════════════════════════════════════════════════════════════
   Plan Wizard · calculator · plan cards · closed-loop Log · Review periods
   The morning loop: Edge → Plan Wizard → Plan/Levels → Log → Review.
   ════════════════════════════════════════════════════════════════════════ */

/* ── Day-at-a-glance summary (daily Trade Plan tab) ────────────────────────
   Aggregate total risk / profit potential / overall reward:risk for the day's
   modelled plans — a premium glass header above the card grid. */
.v2-plansum { border: 1px solid var(--wot-border); border-radius: var(--wot-r-lg);
  background:
    radial-gradient(700px 200px at 100% -20%, rgba(255,31,143,.06), transparent 70%),
    linear-gradient(180deg, var(--wot-bg-1), var(--wot-bg-0));
  padding: 16px 18px 14px; display: grid; gap: 13px; box-shadow: 0 12px 36px rgba(0,0,0,.34); }
.v2-plansum-head { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; }
.v2-plansum-title { font-size: 13px; font-weight: 900; letter-spacing: .12em; text-transform: uppercase;
  color: transparent; background: var(--wot-grad); -webkit-background-clip: text; background-clip: text; }
.v2-plansum-count { font-size: 12px; font-weight: 700; color: var(--wot-text-2); }
.v2-plansum-grid { display: grid; grid-template-columns: 1fr 1fr auto; gap: 12px; align-items: stretch; }
@media (max-width: 560px) { .v2-plansum-grid { grid-template-columns: 1fr 1fr; } }
.v2-plansum-cell { display: flex; flex-direction: column; gap: 5px; padding: 11px 13px; border-radius: 13px;
  background: var(--wot-bg-2); border: 1px solid var(--wot-border); }
.v2-plansum-cell small { font-size: 10px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--wot-text-2); }
.v2-plansum-cell b { font-family: var(--wot-font-mono); font-size: 23px; font-weight: 900; line-height: 1; }
.v2-plansum-cell.is-loss b { color: var(--wot-bear); }
.v2-plansum-cell.is-gain b { color: var(--wot-bull); }
.v2-plansum-cell.is-rr { background: rgba(255,31,143,.08); border-color: rgba(255,31,143,.28); justify-content: center; min-width: 96px; }
.v2-plansum-cell.is-rr b { color: var(--wot-grad-end); display: inline-flex; align-items: baseline; gap: 1px; }
.v2-plansum-cell.is-rr b i { font-style: normal; font-size: 14px; color: var(--wot-text-2); }
.v2-plansum-bar { display: flex; height: 12px; border-radius: 7px; overflow: hidden; background: var(--wot-bg-2); }
.v2-plansum-bar .loss { background: linear-gradient(90deg, #b91c1c, var(--wot-bear)); }
.v2-plansum-bar .gain { background: linear-gradient(90deg, var(--wot-bull), #16a34a); }
.v2-plansum-barlab { display: flex; justify-content: space-between; font-size: 11.5px; font-weight: 700; font-family: var(--wot-font-mono); }
.v2-plansum-barlab .is-down { color: var(--wot-bear); } .v2-plansum-barlab .is-up { color: var(--wot-bull); }

/* ── 3-behavior reminder strip (Plan + Edge) ───────────────────────────── */
.v2-pb3 { display: flex; flex-direction: column; gap: 10px; margin: 14px 0; }
.v2-pb3-lead { display: flex; align-items: center; gap: 8px; font-weight: 700; color: var(--wot-text-1); }
.v2-pb3-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 10px; }
.v2-pb3-card { display: flex; gap: 10px; align-items: flex-start; padding: 12px 14px; border: 1px solid var(--wot-border);
  border-radius: var(--wot-r-md); background: var(--wot-bg-1); }
.v2-pb3-n { flex: 0 0 24px; height: 24px; border-radius: 50%; display: grid; place-items: center; font-weight: 800;
  color: #fff; background: var(--wot-grad); font-size: 13px; }
.v2-pb3-card b { display: block; font-size: 14px; }
.v2-pb3-card small { color: var(--wot-text-2); font-size: 12px; line-height: 1.35; }

/* ── Plan summary card (Plan tab + Levels side panel) ──────────────────── */
.v2-plan2 { border: 1px solid var(--wot-border); border-radius: var(--wot-r-lg); background: var(--wot-bg-1);
  padding: 14px; display: flex; flex-direction: column; gap: 11px; }
.v2-plan2.grade-aplus { border-color: rgba(34,197,94,.45); }
.v2-plan2.grade-lotto { border-color: rgba(245,180,0,.4); }
.v2-plan2-top { display: flex; align-items: center; gap: 10px; }
.v2-plan2-av { width: 34px; height: 34px; border-radius: 10px; display: grid; place-items: center; color: #fff; font-weight: 800; }
.v2-plan2-id { display: flex; flex-direction: column; line-height: 1.2; }
.v2-plan2-id b { font-size: 15px; }
.v2-plan2-id small { color: var(--wot-text-2); font-size: 12px; }
.v2-plan2-grade { margin-left: auto; font-size: 11px; font-weight: 800; padding: 3px 9px; border-radius: 999px; }
.v2-plan2-grade.is-aplus { background: rgba(34,197,94,.16); color: var(--wot-bull); }
.v2-plan2-grade.is-lotto { background: rgba(245,180,0,.16); color: var(--wot-chop); }
.v2-plan2-del { background: none; border: none; color: var(--wot-text-3); cursor: pointer; padding: 4px; }
.v2-plan2-del:hover { color: var(--wot-bear); }
.v2-plan2-riskbar { display: flex; height: 9px; border-radius: 6px; overflow: hidden; background: var(--wot-bg-2); }
.v2-plan2-riskbar .loss { background: var(--wot-bear); }
.v2-plan2-riskbar .gain { background: var(--wot-bull); }
.v2-plan2-risklab { display: flex; justify-content: space-between; font-size: 12px; margin-top: 4px; }
.v2-plan2-scen { display: flex; gap: 8px; flex-wrap: wrap; }
.v2-plan2-sc { display: flex; flex-direction: column; align-items: center; padding: 5px 10px; border-radius: 9px;
  background: var(--wot-bg-2); min-width: 58px; }
.v2-plan2-sc i { font-style: normal; color: var(--wot-text-2); font-size: 11px; }
.v2-plan2-sc b { font-size: 13px; }
.v2-plan2-meta { display: flex; gap: 12px; flex-wrap: wrap; font-size: 12px; color: var(--wot-text-1); }
.v2-plan2-meta b { color: var(--wot-text-0); }
.v2-plan2-foot { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
/* Per-card "copy to another day/week" picker — compact native select, muted so
   it sits quietly next to the primary Edit action. Shared Daily + Weekly. */
.v2-card-copy { appearance: none; -webkit-appearance: none; cursor: pointer;
  padding: 6px 9px; border-radius: 8px; font: inherit; font-size: 12px; font-weight: 700; letter-spacing: .01em;
  color: var(--wot-text-1); background: rgba(255,255,255,.04); border: 1px solid var(--wot-border); max-width: 55%; }
.v2-card-copy:hover { color: var(--wot-text-0); border-color: var(--wot-border-strong); }
.v2-card-copy option { color: var(--wot-text-0); background: var(--wot-bg-1); font-weight: 600; }
.v2-plan2-incomplete, .v2-plan2 .v2-plan2-incomplete { color: var(--wot-text-2); font-size: 13px; }
.v2-plan-empty { text-align: center; padding: 28px; border: 1px dashed var(--wot-border); border-radius: var(--wot-r-lg);
  color: var(--wot-text-2); display: flex; flex-direction: column; gap: 12px; align-items: center; }
.is-up { color: var(--wot-bull); } .is-down { color: var(--wot-bear); }

/* ── Plan Wizard step bodies ───────────────────────────────────────────── */
.pw-row2 { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.pw-row3 { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 12px; }
.pw-f { display: flex; flex-direction: column; gap: 5px; font-size: 13px; color: var(--wot-text-1); }
.pw-f > span { font-weight: 600; }
.pw-f input { padding: 10px 12px; border-radius: 10px; border: 1px solid var(--wot-border); background: var(--wot-bg-2);
  color: var(--wot-text-0); font-size: 15px; font-family: var(--wot-font-mono); }
.pw-f input:focus { outline: none; border-color: var(--wot-grad-end); }
.pw-preline { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; font-size: 13px; }
.pw-pre b { font-family: var(--wot-font-mono); }
.pw-align { color: var(--wot-text-2); }
.pw-seg-row { display: flex; gap: 10px; flex-wrap: wrap; }
.pw-seg { display: inline-flex; background: var(--wot-bg-2); border-radius: 11px; padding: 3px; gap: 3px; }
.pw-seg button { border: none; background: none; color: var(--wot-text-2); padding: 8px 14px; border-radius: 9px;
  cursor: pointer; font-weight: 700; font-size: 13px; }
.pw-seg button.is-on { background: var(--wot-bg-0); color: var(--wot-text-0); }
.pw-seg button.is-on.is-call { color: var(--wot-bull); } .pw-seg button.is-on.is-put { color: var(--wot-bear); }
.pw-seg button.is-on.is-aplus { color: var(--wot-bull); } .pw-seg button.is-on.is-lotto { color: var(--wot-chop); }
.pw-lotto-warn { color: var(--wot-chop); font-size: 13px; }
.pw-note { border: 1px solid var(--wot-border); border-radius: var(--wot-r-md); padding: 12px; display: flex; flex-direction: column; gap: 8px; }
.pw-note-h { font-size: 13px; font-weight: 700; } .pw-note-h i { color: var(--wot-text-2); font-weight: 400; }
.pw-note textarea { width: 100%; resize: vertical; padding: 9px; border-radius: 9px; border: 1px solid var(--wot-border);
  background: var(--wot-bg-2); color: var(--wot-text-0); font-family: inherit; font-size: 13px; }
.pw-note-tags { display: flex; gap: 14px; flex-wrap: wrap; font-size: 12px; color: var(--wot-text-2); }
.pw-note-tags input { margin-left: 6px; padding: 4px 8px; border-radius: 7px; border: 1px solid var(--wot-border); background: var(--wot-bg-2); color: var(--wot-text-0); }
.pw-maxloss { display: flex; flex-direction: column; justify-content: center; gap: 2px; padding: 10px 14px;
  border-radius: 12px; background: rgba(239,68,68,.1); border: 1px solid rgba(239,68,68,.3); }
.pw-maxloss span { font-size: 12px; color: var(--wot-text-2); }
.pw-maxloss b { font-size: 22px; color: var(--wot-bear); font-family: var(--wot-font-mono); }
.pw-maxloss.is-empty b { color: var(--wot-text-3); }
.pw-gate { display: flex; gap: 12px; align-items: flex-start; text-align: left; width: 100%; cursor: pointer;
  padding: 14px; border-radius: var(--wot-r-md); border: 1px solid var(--wot-border); background: var(--wot-bg-1); color: var(--wot-text-1); }
.pw-gate.is-on { border-color: var(--wot-bull); background: rgba(34,197,94,.1); color: var(--wot-text-0); }
.pw-gate-box { flex: 0 0 22px; height: 22px; border-radius: 6px; border: 2px solid var(--wot-border-strong);
  display: grid; place-items: center; color: #fff; }
.pw-gate.is-on .pw-gate-box { background: var(--wot-bull); border-color: var(--wot-bull); }
.pw-conv.is-on .pw-gate-box { background: var(--wot-bull); border-color: var(--wot-bull); }
.pw-iv-hint { font-size: 12px; }
.pw-conv-lead { font-weight: 700; }
.pw-conv-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.pw-conv { display: flex; gap: 10px; align-items: flex-start; text-align: left; cursor: pointer; padding: 12px;
  border-radius: var(--wot-r-md); border: 1px solid var(--wot-border); background: var(--wot-bg-1); color: var(--wot-text-1); }
.pw-conv.is-on { border-color: var(--wot-bull); background: rgba(34,197,94,.08); color: var(--wot-text-0); }
.pw-conv b { display: block; font-size: 13px; } .pw-conv small { color: var(--wot-text-2); font-size: 11px; line-height: 1.3; }
.pw-nextstrike { font-size: 13px; color: var(--wot-text-1); } .pw-nextstrike b { color: var(--wot-target); }

/* ── Calculator: capture & roll ────────────────────────────────────────── */
.pw-calc-empty { text-align: center; color: var(--wot-text-2); padding: 30px; }
.pw-bar { display: flex; height: 26px; border-radius: 8px; overflow: hidden; background: var(--wot-bg-2); }
.pw-bar-loss { background: rgba(239,68,68,.85); } .pw-bar-gain { background: rgba(34,197,94,.85); }
.pw-bar > div { display: flex; align-items: center; justify-content: center; min-width: 0; }
.pw-bar span { font-size: 11px; font-weight: 800; color: #0a0a0a; white-space: nowrap; padding: 0 6px; }
.pw-bar-rr { text-align: center; font-size: 12px; color: var(--wot-text-2); margin-top: 4px; }
.pw-be { font-size: 13px; color: var(--wot-text-1); }
.pw-move-tabs { display: flex; gap: 8px; align-items: center; }
.pw-move { border: 1px solid var(--wot-border); background: var(--wot-bg-2); color: var(--wot-text-1); padding: 8px 16px;
  border-radius: 10px; font-weight: 800; cursor: pointer; font-family: var(--wot-font-mono); }
.pw-move.is-on { background: var(--wot-grad); color: #fff; border-color: transparent; }
.pw-move-lead { color: var(--wot-text-2); font-size: 12px; }
.pw-chain { display: flex; flex-direction: column; gap: 10px; }
.pw-chain-step { border: 1px solid var(--wot-border); border-left: 3px solid var(--wot-grad-end); border-radius: var(--wot-r-md);
  padding: 12px 14px; background: var(--wot-bg-1); }
.pw-chain-k { display: block; font-size: 12px; font-weight: 800; letter-spacing: .03em; color: var(--wot-text-2); margin-bottom: 6px; }
.pw-chain-k i { color: var(--wot-text-3); font-weight: 400; }
.pw-chain-step p { font-size: 13px; line-height: 1.45; margin: 0; } .pw-chain-step b { font-family: var(--wot-font-mono); }
.pw-tier { display: flex; justify-content: space-between; font-size: 13px; padding: 3px 0; }
.pw-tier.is-banked { border-top: 1px dashed var(--wot-border); margin-top: 5px; padding-top: 7px; font-weight: 700; }
.pw-compound { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: 8px; }
.pw-compound > div { background: var(--wot-bg-2); border-radius: 9px; padding: 8px 10px; display: flex; flex-direction: column; }
.pw-compound > div.is-win { background: rgba(34,197,94,.1); }
.pw-compound span { font-size: 11px; color: var(--wot-text-2); } .pw-compound b { font-family: var(--wot-font-mono); font-size: 15px; }
.pw-calc-foot { font-size: 12px; }
.pw-summary { border: 1px solid var(--wot-border); border-radius: var(--wot-r-md); padding: 12px 14px; display: flex; flex-direction: column; gap: 6px; }
.pw-sum-line { display: flex; justify-content: space-between; font-size: 13px; } .pw-sum-line b { font-family: var(--wot-font-mono); }
.pw-sum-grade.is-aplus { color: var(--wot-bull); } .pw-sum-grade.is-lotto { color: var(--wot-chop); }
.pw-dream { display: flex; gap: 12px; align-items: flex-start; padding: 14px; border-radius: var(--wot-r-md);
  background: var(--wot-grad-glow, rgba(255,31,143,.08)); border: 1px solid rgba(255,31,143,.2); }
.pw-dream p { margin: 0; font-size: 13px; line-height: 1.5; }
.pw-withdraw { font-size: 12px; }

/* ── Closed-loop Log strip + walk-through ──────────────────────────────── */
.v2-loop-strip { display: flex; gap: 16px; flex-wrap: wrap; align-items: center; padding: 12px 16px; margin-bottom: 12px;
  border: 1px solid var(--wot-border); border-radius: var(--wot-r-md); background: var(--wot-bg-1); }
.v2-loop-strip.is-empty { color: var(--wot-text-2); font-size: 13px; }
.v2-loop-stat { font-size: 13px; color: var(--wot-text-2); } .v2-loop-stat b { color: var(--wot-text-0); font-size: 16px; margin-right: 4px; }
.v2-loop-int { margin-left: auto; font-weight: 800; font-size: 18px; } .v2-loop-int i { font-style: normal; font-size: 12px; color: var(--wot-text-2); font-weight: 400; }
.lw-body { gap: 16px; }
.lw-block { display: flex; flex-direction: column; gap: 10px; }
.lw-block-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
.lw-block-head .v2-mcq-title { margin: 0; }
.lw-modeseg button { padding: 6px 14px; font-size: 13px; }
.lw-planlist { display: flex; flex-direction: column; gap: 8px; max-height: 230px; overflow-y: auto; }
.lw-planlist p { margin: 0; font-size: 13px; }
.lw-planrow { display: flex; align-items: center; gap: 10px; text-align: left; padding: 11px 13px; cursor: pointer;
  border: 1px solid var(--wot-border); border-radius: var(--wot-r-md); background: var(--wot-bg-1); color: var(--wot-text-1); }
.lw-planrow:hover { border-color: var(--wot-border-strong, rgba(255,255,255,.18)); }
.lw-planrow.is-on { border-color: var(--wot-grad-end); background: rgba(255,31,143,.10); color: var(--wot-text-0); }
.lw-planrow-sym { font-size: 15px; font-weight: 800; font-family: var(--wot-font-mono); }
.lw-planrow-sub { font-size: 12px; color: var(--wot-text-2); margin-right: auto; }
.lw-outbtns { display: flex; gap: 8px; flex-wrap: wrap; } .lw-outbtns .v2-btn { flex: 1; min-width: 72px; }
.lw-hint { font-size: 12px; margin: 0; }
.lw-foot-note { font-size: 12px; }
.lw-warn { color: var(--wot-chop); margin: 0; }

/* ── Edge page reframe ─────────────────────────────────────────────────── */
.v2-edge-why { padding: 6px 0 4px; }
.v2-edge-why-k { display: inline-flex; align-items: center; gap: 6px; font-weight: 800; color: var(--wot-grad-end); font-size: 13px; letter-spacing: .04em; text-transform: uppercase; }
.v2-edge-why h1 { font-size: clamp(26px, 4vw, 40px); line-height: 1.12; margin: 10px 0; }
.v2-edge-why p { color: var(--wot-text-1); max-width: 70ch; line-height: 1.55; }
.v2-thesis { margin: 16px 0; }
.v2-thesis-head { display: flex; flex-direction: column; gap: 2px; margin-bottom: 10px; }
.v2-thesis-head h2 { margin: 0; font-size: 18px; }
.v2-thesis-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 10px; }
.v2-thesis-opt { display: flex; flex-direction: column; gap: 3px; text-align: left; padding: 14px; cursor: pointer;
  border: 1px solid var(--wot-border); border-radius: var(--wot-r-md); background: var(--wot-bg-1); color: var(--wot-text-1); }
.v2-thesis-opt.is-on { border-color: var(--wot-grad-end); background: rgba(255,31,143,.1); color: var(--wot-text-0); }
.v2-thesis-emoji { font-size: 22px; } .v2-thesis-opt b { font-size: 14px; } .v2-thesis-opt small { color: var(--wot-text-2); font-size: 12px; line-height: 1.3; }
.v2-edge-cta { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; padding: 18px 20px; margin: 16px 0;
  border-radius: var(--wot-r-lg); background: var(--wot-grad-glow, rgba(255,31,143,.07)); border: 1px solid rgba(255,31,143,.25); }
.v2-edge-cta-main { flex: 1; min-width: 240px; } .v2-edge-cta-main h2 { margin: 0 0 4px; font-size: 20px; } .v2-edge-cta-main p { margin: 0; color: var(--wot-text-1); font-size: 14px; }
.v2-edge-cta-btn { white-space: nowrap; }
.v2-edge-doc { margin-top: 18px; } .v2-edge-doc > summary { cursor: pointer; color: var(--wot-text-2); font-weight: 600; padding: 8px 0; }

/* ── Review: closed-loop + period views ────────────────────────────────── */
.v2-rev-seg { margin: 4px 0 14px; }
.v2-loop { display: flex; flex-direction: column; gap: 12px; }
.v2-loop-big { display: flex; align-items: baseline; gap: 8px; }
.v2-loop-big strong { font-size: 40px; line-height: 1; } .v2-loop-big span { color: var(--wot-text-2); }
.v2-loop-big.is-green strong { color: var(--wot-bull); } .v2-loop-big.is-red strong { color: var(--wot-bear); } .v2-loop-big.is-yellow strong { color: var(--wot-chop); }
.v2-loop-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; }
.v2-loop-grid > div { background: var(--wot-bg-2); border-radius: 10px; padding: 10px; text-align: center; }
.v2-loop-grid b { display: block; font-size: 20px; } .v2-loop-grid small { color: var(--wot-text-2); font-size: 11px; }
.v2-rev-kb { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-bottom: 12px; }
.v2-rev-kb h4 { margin: 0 0 8px; font-size: 13px; color: var(--wot-text-2); }
.v2-rev-kb > div { display: flex; flex-direction: column; gap: 6px; align-items: flex-start; }
.v2-rev-monthtot { display: flex; gap: 14px; flex-wrap: wrap; margin-top: 10px; font-size: 12px; }
.v2-rev-workon-rule { font-weight: 800; margin-bottom: 6px; }
.v2-rev-workon p { font-size: 13px; color: var(--wot-text-1); line-height: 1.5; }
.v2-cal-day.is-future { opacity: .35; }

/* ════════════════════════════════════════════════════════════════════════
   Plan Wizard — FULL-SCREEN, 2-step (pre-market read · levels & sizing)
   ════════════════════════════════════════════════════════════════════════ */
body.pwf-open { overflow: hidden; }
/* Hide the global floating orbs (meditation + support) while the full-screen
   wizard is open — they otherwise float over the footer's Continue button. */
body.pwf-open .tbf-med-launch,
body.pwf-open .ss-support-orb { display: none !important; }
.pwf-root { position: fixed; inset: 0; z-index: 1000; background: var(--wot-bg-0);
  display: flex; flex-direction: column; animation: pwfIn .18s ease; }
.pwf-root.is-out { animation: pwfOut .18s ease forwards; }
@keyframes pwfIn { from { opacity: 0; transform: scale(.99); } to { opacity: 1; transform: none; } }
@keyframes pwfOut { to { opacity: 0; } }

.pwf-head { display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 12px 18px; border-bottom: 1px solid var(--wot-border); background: var(--wot-bg-1); flex: 0 0 auto; }
.pwf-steps { display: flex; align-items: center; gap: 8px; }
.pwf-step { display: inline-flex; align-items: center; gap: 7px; padding: 7px 14px; border-radius: 999px;
  border: 1px solid var(--wot-border); background: transparent; color: var(--wot-text-2); cursor: pointer; font-weight: 700; font-size: 13px; }
.pwf-step b { display: grid; place-items: center; width: 20px; height: 20px; border-radius: 50%; background: var(--wot-bg-2); color: var(--wot-text-1); font-size: 12px; }
.pwf-step.is-on { border-color: var(--wot-grad-end); color: var(--wot-text-0); background: rgba(255,31,143,.1); }
.pwf-step.is-on b { background: var(--wot-grad); color: #fff; }
.pwf-step-sep { color: var(--wot-text-3); }
.pwf-head-r { display: flex; align-items: center; gap: 14px; }
.pwf-sym { font-family: var(--wot-font-mono); font-weight: 800; color: var(--wot-text-1); }
.pwf-x { background: none; border: none; color: var(--wot-text-2); font-size: 18px; cursor: pointer; }
.pwf-x:hover { color: var(--wot-text-0); }

.pwf-body { flex: 1 1 auto; min-height: 0; overflow-y: auto; overflow-x: hidden; }
.pwf-foot { display: flex; align-items: center; gap: 14px; padding: 12px 18px; border-top: 1px solid var(--wot-border); background: var(--wot-bg-1); flex: 0 0 auto; }
.pwf-back { background: none; border: 1px solid var(--wot-border); color: var(--wot-text-1); padding: 9px 16px; border-radius: 10px; cursor: pointer; font-weight: 600; }
.pwf-foot-msg { color: var(--wot-text-2); font-size: 13px; margin-left: auto; }
.pwf-next { padding: 10px 20px; border-radius: 10px; border: none; background: var(--wot-grad); color: #fff; font-weight: 800; cursor: pointer; }
.pwf-next:disabled { opacity: .45; cursor: not-allowed; }

/* shared field bits */
/* The wizard step-1 plan controls: Daily/Weekly + date dropdown + ticker rail. */
.pwf-pm-plan { display: flex; flex-direction: column; gap: 14px; margin-bottom: 22px;
  padding-bottom: 20px; border-bottom: 1px solid var(--wot-border); }
.pwf-pm-controls { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; }
.pwf-pm-rail { min-height: 4px; }
.pwf-row2 { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.pwf-row3 { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 12px; }
/* min-width:0 lets the grid cell shrink to its track; without it the input's
   intrinsic min-width forces the field past the card border (the "Next premium"
   overflow). The input fills the cell with border-box so its padding/border are
   counted IN the width, not added on top. */
.pwf-f { display: flex; flex-direction: column; gap: 6px; font-size: 12px; color: var(--wot-text-1); min-width: 0; }
.pwf-f > span { font-weight: 600; letter-spacing: .01em; }
.pwf-f input { width: 100%; box-sizing: border-box; padding: 13px 15px; border-radius: 11px; border: 1px solid var(--wot-border); background: var(--wot-bg-2); color: var(--wot-text-0); font-size: 17px; font-family: var(--wot-font-mono); transition: border-color .15s, box-shadow .15s; }
.pwf-f input:focus { outline: none; border-color: var(--wot-grad-end); box-shadow: 0 0 0 3px rgba(255,31,143,.12); }
.pwf-seg { display: inline-flex; background: var(--wot-bg-2); border-radius: 10px; padding: 3px; gap: 3px; align-self: end; }
.pwf-seg button { border: none; background: none; color: var(--wot-text-2); padding: 8px 14px; border-radius: 8px; cursor: pointer; font-weight: 700; font-size: 13px; }
.pwf-seg button.is-on { background: var(--wot-bg-0); color: var(--wot-text-0); }
.pwf-seg button.is-on.is-call { color: var(--wot-bull); } .pwf-seg button.is-on.is-put { color: var(--wot-bear); }
.pwf-seg button.is-on.is-aplus { color: var(--wot-bull); } .pwf-seg button.is-on.is-lotto { color: var(--wot-chop); }

/* ── Step 1 · pre-market read — full-bleed, open (no boxed look) ───────── */
.pwf-pm { width: 100%; padding: 28px clamp(20px, 5vw, 64px) 56px; display: flex; flex-direction: column; gap: 26px; }
.pwf-pm-k { display: inline-flex; align-items: center; gap: 6px; color: var(--wot-grad-end); font-weight: 800; font-size: 12px; letter-spacing: .04em; text-transform: uppercase; }
.pwf-pm-intro h2 { font-size: clamp(22px, 3vw, 30px); margin: 8px 0; }
.pwf-pm-intro p { color: var(--wot-text-1); max-width: 75ch; line-height: 1.55; }
.pwf-pm-lead { color: var(--wot-text-1); }
.pwf-watchgrid { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 10px; }
.pwf-watch { position: relative; display: flex; flex-direction: column; gap: 2px; padding: 12px 14px; border-radius: var(--wot-r-md); border: 1px solid transparent; border-bottom: 2px solid var(--wot-border); background: rgba(255,255,255,.02); }
.pwf-watch.is-up { border-bottom-color: rgba(34,197,94,.5); }
.pwf-watch.is-down { border-bottom-color: rgba(239,68,68,.45); }
.pwf-watch.is-lead { background: rgba(34,197,94,.08); border-bottom-color: var(--wot-bull); }
.pwf-watch-lead { position: absolute; top: 8px; right: 8px; font-size: 10px; font-weight: 800; color: var(--wot-bull); }
.pwf-watch-sym { font-size: 16px; font-weight: 800; }
.pwf-watch-label { font-size: 11px; color: var(--wot-text-2); }
.pwf-watch-px { font-family: var(--wot-font-mono); font-size: 15px; margin-top: 4px; }
.pwf-watch-gap { font-family: var(--wot-font-mono); font-weight: 800; font-size: 13px; }
.pwf-watch-gap.is-up, .pwf-watch.is-up .pwf-watch-gap { color: var(--wot-bull); }
.pwf-watch-gap.is-down, .pwf-watch.is-down .pwf-watch-gap { color: var(--wot-bear); }
.pwf-watch-no { font-size: 11px; color: var(--wot-text-3); margin-top: 4px; }
.pwf-pm-grid { display: grid; grid-template-columns: 1.1fr 1fr; gap: 40px; }
.pwf-pm-pick, .pwf-pm-news { display: flex; flex-direction: column; gap: 12px; }
.pwf-pm-news { border-left: 1px solid var(--wot-border); padding-left: 32px; }
.pwf-pm-pick h3, .pwf-pm-news h3 { margin: 0; font-size: 12px; text-transform: uppercase; letter-spacing: .05em; color: var(--wot-text-3); }
.pwf-align { font-size: 13px; color: var(--wot-text-1); padding: 10px 12px; border-radius: 10px; background: var(--wot-bg-2); }
.pwf-align.is-muted { color: var(--wot-text-2); }
.pwf-note textarea { width: 100%; resize: vertical; padding: 9px; border-radius: 9px; border: 1px solid var(--wot-border); background: var(--wot-bg-2); color: var(--wot-text-0); font-family: inherit; font-size: 13px; }
.pwf-note-tags { display: flex; gap: 14px; flex-wrap: wrap; font-size: 12px; color: var(--wot-text-2); margin-top: 6px; }
.pwf-note-tags input { margin-left: 6px; padding: 4px 8px; border-radius: 7px; border: 1px solid var(--wot-border); background: var(--wot-bg-2); color: var(--wot-text-0); }
.pwf-news { display: flex; flex-direction: column; gap: 2px; }
.pwf-news-item { display: flex; flex-direction: column; gap: 1px; padding: 9px 8px; border-radius: 8px; text-decoration: none; }
.pwf-news-item:hover { background: var(--wot-bg-2); }
.pwf-news-title { font-size: 13px; color: var(--wot-text-1); line-height: 1.35; }
.pwf-news-src { font-size: 11px; color: var(--wot-text-3); }

/* ── Edge Playbook — the daily reactions (Plan Wizard + Edge tab) ──────────── */
.pwf-pm-reactions { margin: 22px 0; }
.pwf-rx-head h3 { margin: 6px 0 4px; font-size: clamp(18px, 2.4vw, 22px); }
.pwf-rx-head p { color: var(--wot-text-1); max-width: 75ch; line-height: 1.5; margin: 0; }
.pwf-sumcard-rx { margin-top: 8px; }
.v2-rx-section { margin: 8px 0 4px; }
.v2-rx-sechead h2 { margin: 6px 0 4px; }
.v2-rx-sechead p { color: var(--wot-text-1); max-width: 80ch; line-height: 1.5; margin: 0; }
.v2-rx-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 12px; margin-top: 14px; }
.v2-rx-card { position: relative; display: flex; gap: 10px; padding: 14px; border-radius: var(--wot-r-md);
  border: 1px solid var(--wot-border); border-left: 3px solid var(--rx, var(--wot-grad-start)); background: rgba(255,255,255,.02); }
.v2-rx-card.is-pick { cursor: default; }
.v2-rx-card.is-sel { background: color-mix(in srgb, var(--rx) 10%, transparent); border-color: var(--rx); }
.v2-rx-pick { flex: 0 0 auto; align-self: flex-start; width: 22px; height: 22px; padding: 0; border-radius: 50%;
  border: 2px solid var(--wot-border); background: transparent; cursor: pointer; display: flex; align-items: center; justify-content: center; }
.v2-rx-card.is-sel .v2-rx-pick { border-color: var(--rx); background: var(--rx); color: #0a0a0a; }
.v2-rx-radio { display: flex; font-size: 12px; font-weight: 900; }
.v2-rx-body { flex: 1; min-width: 0; }
.v2-rx-head { display: flex; align-items: center; gap: 7px; font-size: 15px; }
.v2-rx-dot { width: 9px; height: 9px; border-radius: 50%; flex: 0 0 auto; }
.v2-rx-custom { font-size: 9px; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; color: var(--wot-text-3);
  border: 1px solid var(--wot-border); border-radius: 5px; padding: 1px 5px; }
.v2-rx-cue, .v2-rx-react { margin: 8px 0 0; font-size: 12.5px; line-height: 1.45; color: var(--wot-text-1); }
.v2-rx-k { display: inline-block; min-width: 44px; font-weight: 800; font-size: 10px; text-transform: uppercase; letter-spacing: .05em; color: var(--wot-text-3); margin-right: 6px; }
.v2-rx-tools { position: absolute; top: 8px; right: 8px; display: flex; gap: 4px; opacity: 0; transition: opacity .12s; }
.v2-rx-card:hover .v2-rx-tools { opacity: 1; }
.v2-rx-tool { width: 26px; height: 26px; padding: 0; border-radius: 7px; border: 1px solid var(--wot-border);
  background: var(--wot-bg-2); color: var(--wot-text-2); cursor: pointer; display: flex; align-items: center; justify-content: center; font-size: 12px; }
.v2-rx-tool.is-del:hover { color: var(--wot-bear); border-color: var(--wot-bear); }
.v2-rx-addtile { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; min-height: 90px;
  border-radius: var(--wot-r-md); border: 1px dashed var(--wot-border); background: transparent; color: var(--wot-text-2);
  cursor: pointer; font-size: 13px; font-weight: 700; }
.v2-rx-addtile:hover { color: var(--wot-text-0); border-color: var(--wot-text-3); }
/* palette swatches in the editor */
.v2-rx-palette { display: flex; gap: 8px; }
.v2-rx-swatch { width: 26px; height: 26px; border-radius: 50%; border: 2px solid transparent; cursor: pointer; }
.v2-rx-swatch.is-on { border-color: var(--wot-text-0); box-shadow: 0 0 0 2px var(--wot-bg-1); }
/* compact chip (plan card / wizard summary / log row) */
.v2-rx-chip { display: inline-flex; align-items: center; gap: 5px; font-size: 11px; font-weight: 700;
  padding: 2px 8px; border-radius: 999px; border: 1px solid color-mix(in srgb, var(--rx) 45%, transparent);
  background: color-mix(in srgb, var(--rx) 12%, transparent); color: var(--wot-text-0); }
.v2-rx-chip-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--rx, var(--wot-grad-start)); }
.v2-plan2-rxrow { display: flex; align-items: center; gap: 6px; margin: -2px 0 8px; font-size: 11px; color: var(--wot-text-2); }
/* log-sheet single-select picker */
.v2-rxpicker { display: flex; flex-wrap: wrap; gap: 8px; }
.v2-rxpick { display: inline-flex; align-items: center; gap: 6px; padding: 6px 11px; border-radius: 999px;
  border: 1px solid var(--wot-border); background: var(--wot-bg-2); color: var(--wot-text-1); cursor: pointer; font-size: 12.5px; font-weight: 600; }
.v2-rxpick .v2-rx-chip-dot { background: var(--rx, var(--wot-text-3)); }
.v2-rxpick.is-on { border-color: var(--rx, var(--wot-text-0)); color: var(--wot-text-0); background: color-mix(in srgb, var(--rx) 14%, transparent); }
.v2-rxpick.is-none.is-on { border-color: var(--wot-text-2); background: rgba(255,255,255,.05); }
@media (max-width: 720px) { .v2-rx-grid { grid-template-columns: 1fr; } }

/* ════════════════════════════════════════════════════════════════════════
   LOG + REVIEW + DEBRIEF — the daily practice (from-scratch redesign)
   Shared tier language: green=bull · yellow=chop · red=bear · cash=muted.
   ════════════════════════════════════════════════════════════════════════ */
.lg-page, .rv-page { max-width: 980px; margin: 0 auto; }

/* ── shared: tier badge · verdict · named slips · rule dots/cells ────────── */
.lg-tier, .rv-verdict-tier, .lg-weekrow-tier, .rv-wkday-tier {
  display: inline-flex; align-items: center; font-weight: 900; letter-spacing: .08em;
  font-size: 11px; padding: 3px 10px; border-radius: 999px; text-transform: uppercase; }
.lg-tier.is-good, .rv-verdict-tier.is-good, .lg-weekrow-tier.is-good, .rv-wkday-tier.is-good { color: var(--wot-bull); background: color-mix(in srgb, var(--wot-bull) 16%, transparent); }
.lg-tier.is-caution, .rv-verdict-tier.is-caution, .lg-weekrow-tier.is-caution, .rv-wkday-tier.is-caution { color: var(--wot-chop); background: color-mix(in srgb, var(--wot-chop) 18%, transparent); }
.lg-tier.is-danger, .rv-verdict-tier.is-danger, .lg-weekrow-tier.is-danger, .rv-wkday-tier.is-danger { color: var(--wot-bear); background: color-mix(in srgb, var(--wot-bear) 16%, transparent); }
.lg-tier.is-rest, .rv-verdict-tier.is-rest, .lg-weekrow-tier.is-rest, .rv-wkday-tier.is-rest { color: var(--wot-text-2); background: rgba(255,255,255,.05); }
.lg-tier-row { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.lg-verdict, .rv-verdict-line { color: var(--wot-text-1); font-size: 14px; }
.lg-slips, .rv-slips { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
.lg-slip, .rv-slip { font-size: 11.5px; font-weight: 700; color: var(--wot-bear); background: color-mix(in srgb, var(--wot-bear) 12%, transparent);
  border: 1px solid color-mix(in srgb, var(--wot-bear) 35%, transparent); padding: 3px 9px; border-radius: 999px; }
.lg-allheld, .rv-allheld { margin-top: 8px; font-size: 13px; font-weight: 600; color: var(--wot-bull); }
.lg-dots { display: inline-flex; gap: 4px; }
.lg-dot { width: 9px; height: 9px; border-radius: 50%; background: rgba(255,255,255,.14); display: inline-block; }
.lg-dot.is-held { background: var(--wot-bull); }
.lg-dot.is-broke { background: var(--wot-bear); }
.lg-dot.is-na { background: rgba(255,255,255,.12); }
.lg-cell, .rv-cell { display: inline-flex; align-items: center; justify-content: center; width: 20px; height: 20px; border-radius: 6px;
  font-size: 11px; font-weight: 800; background: rgba(255,255,255,.04); color: var(--wot-text-2); }
.lg-cell.is-pass, .rv-cell.is-pass { color: var(--wot-bull); background: color-mix(in srgb, var(--wot-bull) 14%, transparent); }
.lg-cell.is-fail, .rv-cell.is-fail { color: var(--wot-bear); background: color-mix(in srgb, var(--wot-bear) 16%, transparent); }
.lg-cell.is-na, .rv-cell.is-na { opacity: .5; }
.is-up { color: var(--wot-bull); } .is-down { color: var(--wot-bear); }

/* ── Log hero ────────────────────────────────────────────────────────────── */
.lg-hero, .rv-hero-intro { padding: 28px 4px 10px; }
.lg-hero-k, .rv-hero-k { font-size: 12px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase;
  color: var(--wot-grad-end); display: inline-flex; align-items: center; gap: 6px; }
.lg-hero h1, .rv-hero-intro h1 { font-size: clamp(26px, 4vw, 38px); margin: 8px 0 10px; line-height: 1.08;
  background: var(--wot-grad); -webkit-background-clip: text; background-clip: text; color: transparent; }
.lg-hero p, .rv-hero-intro p { color: var(--wot-text-1); max-width: 70ch; line-height: 1.55; font-size: 15px; }

/* ── Today's reckoning ───────────────────────────────────────────────────── */
.lg-today { display: grid; grid-template-columns: 1.4fr auto; grid-template-areas: "l r" "acts acts"; gap: 16px 20px;
  padding: 20px 22px; border-radius: var(--wot-r-lg); border: 1px solid var(--wot-border);
  background: linear-gradient(160deg, var(--wot-bg-1), var(--wot-bg-0)); position: relative; overflow: hidden; }
.lg-today::before { content: ''; position: absolute; inset: 0 auto 0 0; width: 4px; background: var(--wot-text-2); }
.lg-today.is-good::before { background: var(--wot-bull); } .lg-today.is-caution::before { background: var(--wot-chop); }
.lg-today.is-danger::before { background: var(--wot-bear); } .lg-today.is-rest::before { background: var(--wot-text-2); }
.lg-today-l { grid-area: l; } .lg-today-r { grid-area: r; display: flex; gap: 18px; align-items: flex-start; }
.lg-today-k { font-size: 12px; color: var(--wot-text-2); font-weight: 700; margin-bottom: 8px; }
.lg-stat { display: flex; flex-direction: column; align-items: flex-start; }
.lg-stat b { font-size: 22px; font-weight: 800; font-variant-numeric: tabular-nums; }
.lg-stat small { font-size: 11px; color: var(--wot-text-2); text-transform: uppercase; letter-spacing: .04em; }
.lg-today-acts { grid-area: acts; display: flex; gap: 10px; flex-wrap: wrap; align-items: center; padding-top: 4px; border-top: 1px solid var(--wot-border); margin-top: 2px; }
.lg-logbtn { font-weight: 800; }
.lg-closebtn { background: var(--wot-bg-2); border: 1px solid var(--wot-border); color: var(--wot-text-0); font-weight: 700; }
.lg-closebtn.is-pulse { border-color: color-mix(in srgb, var(--wot-chop) 55%, transparent); color: var(--wot-chop); animation: lgpulse 2.4s ease-in-out infinite; }
@keyframes lgpulse { 0%,100% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--wot-chop) 30%, transparent); } 50% { box-shadow: 0 0 0 6px transparent; } }
.lg-closed { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 700; color: var(--wot-bull); }

/* ── Coach nudge (Log + Review share the focus look) ─────────────────────── */
.lg-coach, .rv-coach { margin-top: 16px; padding: 18px 20px; border-radius: var(--wot-r-lg);
  border: 1px solid color-mix(in srgb, var(--wot-grad-end) 30%, var(--wot-border));
  background: radial-gradient(120% 120% at 0% 0%, color-mix(in srgb, var(--wot-grad-start) 10%, transparent), transparent 60%), var(--wot-bg-1); }
.lg-coach-head { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 12px; }
.lg-coach-k, .rv-coach-mods-k { font-size: 12px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--wot-grad-end); display: inline-flex; gap: 6px; align-items: center; }
.lg-coach-focus, .rv-coach-focus { display: flex; gap: 12px; align-items: center; }
.lg-coach-n, .rv-coach-n { flex: 0 0 auto; width: 38px; height: 38px; border-radius: 11px; display: flex; align-items: center; justify-content: center;
  font-size: 18px; font-weight: 900; color: #0a0a0a; background: var(--wot-grad); }
.lg-coach-focus b, .rv-coach-focus b { font-size: 16px; } .lg-coach-focus small, .rv-coach-focus small { display: block; color: var(--wot-text-2); font-size: 12.5px; margin-top: 2px; }
.lg-coach-fix, .rv-coach-fix { margin: 12px 0 0; padding: 11px 14px; border-radius: 12px; background: var(--wot-bg-2); color: var(--wot-text-0); font-size: 14px; line-height: 1.5; }
.lg-coach-mods, .rv-coach-mods { display: grid; gap: 8px; margin-top: 12px; }
.rv-coach-mods-k { margin: 16px 0 8px; }
/* the Ollama coach note — warm prose above the deterministic plan */
.coach-note { margin: 0 0 14px; padding: 16px 18px; border-radius: var(--wot-r-lg);
  border: 1px solid color-mix(in srgb, var(--wot-grad-end) 28%, var(--wot-border));
  background: radial-gradient(140% 120% at 100% 0%, color-mix(in srgb, var(--wot-grad-end) 12%, transparent), transparent 55%), var(--wot-bg-1); }
.coach-note-k { font-size: 11px; font-weight: 800; letter-spacing: .07em; text-transform: uppercase; color: var(--wot-grad-end); display: inline-flex; gap: 6px; align-items: center; margin-bottom: 8px; }
.coach-note-body { margin: 0; font-size: 15px; line-height: 1.6; color: var(--wot-text-0); font-style: italic; }
.rv-coach.is-clean { display: flex; gap: 14px; align-items: center; }
.rv-coach-ring, .dbf-clean-ring { flex: 0 0 auto; width: 44px; height: 44px; border-radius: 50%; display: flex; align-items: center; justify-content: center;
  font-size: 20px; color: var(--wot-bull); border: 2px solid color-mix(in srgb, var(--wot-bull) 45%, transparent); background: color-mix(in srgb, var(--wot-bull) 10%, transparent); }

/* module tile (shared) */
.mod-tile { display: flex; gap: 11px; align-items: center; width: 100%; text-align: left; cursor: pointer;
  padding: 11px 13px; border-radius: 12px; border: 1px solid var(--wot-border); background: var(--wot-bg-2); color: var(--wot-text-0); }
.mod-tile:hover { border-color: var(--wot-grad-end); }
.mod-tile-rule { flex: 0 0 auto; width: 26px; height: 26px; border-radius: 8px; display: flex; align-items: center; justify-content: center; font-weight: 800; font-size: 13px; background: rgba(255,255,255,.06); color: var(--wot-text-1); }
.mod-tile-body { flex: 1; min-width: 0; } .mod-tile-body b { font-size: 13.5px; } .mod-tile-body small { display: block; color: var(--wot-text-2); font-size: 12px; margin-top: 1px; }
.mod-tile-go { color: var(--wot-text-2); }

/* ── Log calendar ────────────────────────────────────────────────────────── */
.lg-calwrap { margin-top: 22px; padding: 20px; border-radius: var(--wot-r-lg); border: 1px solid var(--wot-border); background: var(--wot-bg-1); }
.lg-cal-head { display: flex; align-items: center; gap: 10px; margin-bottom: 14px; }
.lg-cal-head strong { font-size: 17px; flex: 1; text-align: center; }
.lg-cal-today { margin-left: auto; }
.lg-cal { display: grid; grid-template-columns: repeat(7, 1fr); gap: 7px; }
.lg-cal-dow { text-align: center; font-size: 11px; font-weight: 700; color: var(--wot-text-3); padding-bottom: 4px; }
.lg-cal-pad { aspect-ratio: 1 / 1; }
.lg-cal-day { aspect-ratio: 1 / 1; min-height: 58px; display: flex; flex-direction: column; align-items: center; justify-content: space-between;
  gap: 4px; padding: 7px 4px; border-radius: 12px; border: 1px solid var(--wot-border); background: var(--wot-bg-2); cursor: pointer; position: relative; }
.lg-cal-day:hover:not(:disabled) { border-color: var(--wot-text-3); transform: translateY(-1px); }
.lg-cal-day:disabled { opacity: .35; cursor: default; }
.lg-cal-day.is-good { background: color-mix(in srgb, var(--wot-bull) 10%, var(--wot-bg-2)); border-color: color-mix(in srgb, var(--wot-bull) 30%, transparent); }
.lg-cal-day.is-caution { background: color-mix(in srgb, var(--wot-chop) 10%, var(--wot-bg-2)); border-color: color-mix(in srgb, var(--wot-chop) 30%, transparent); }
.lg-cal-day.is-danger { background: color-mix(in srgb, var(--wot-bear) 11%, var(--wot-bg-2)); border-color: color-mix(in srgb, var(--wot-bear) 32%, transparent); }
.lg-cal-day.is-today { outline: 2px solid var(--wot-grad-end); outline-offset: 1px; }
.lg-cal-n { font-size: 13px; font-weight: 700; color: var(--wot-text-1); align-self: flex-start; padding-left: 3px; display: inline-flex; align-items: center; gap: 4px; }
.lg-cal-flag { width: 6px; height: 6px; border-radius: 50%; background: var(--wot-chop); box-shadow: 0 0 0 2px color-mix(in srgb, var(--wot-chop) 25%, transparent); }
.lg-cal-meta { display: flex; flex-direction: column; align-items: center; gap: 1px; }
.lg-cal-tr { font-size: 13px; font-weight: 600; color: var(--wot-text-2); }
.lg-cal-pnl { font-size: 12px; font-weight: 800; font-variant-numeric: tabular-nums; }
.lg-cal-rest { font-size: 13px; font-weight: 600; color: var(--wot-text-3); }
.lg-cal-legend { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 14px; font-size: 11.5px; color: var(--wot-text-2); align-items: center; }
.lg-cal-legend span { display: inline-flex; align-items: center; gap: 5px; }
.lg-cal-legend-tier { margin-left: auto; gap: 4px; }
.lg-leg { width: 9px; height: 9px; border-radius: 3px; display: inline-block; }
.lg-leg.is-good { background: var(--wot-bull); } .lg-leg.is-caution { background: var(--wot-chop); } .lg-leg.is-danger { background: var(--wot-bear); }

/* ── weeks rail (Log) ────────────────────────────────────────────────────── */
.lg-weekswrap { margin-top: 22px; }
.lg-weeks-head { display: flex; align-items: baseline; gap: 10px; margin-bottom: 10px; }
.lg-weeks-head h3 { margin: 0; font-size: 16px; }
.lg-weekrow { display: flex; align-items: center; gap: 12px; padding: 13px 16px; border-radius: 14px; border: 1px solid var(--wot-border);
  background: var(--wot-bg-1); text-decoration: none; color: var(--wot-text-0); margin-bottom: 8px; }
.lg-weekrow:hover { border-color: var(--wot-text-3); }
.lg-weekrow-dot { width: 10px; height: 10px; border-radius: 50%; flex: 0 0 auto; }
.lg-weekrow-dot.is-green { background: var(--wot-bull); } .lg-weekrow-dot.is-yellow { background: var(--wot-chop); }
.lg-weekrow-dot.is-red { background: var(--wot-bear); } .lg-weekrow-dot.is-rest { background: var(--wot-text-3); }
.lg-weekrow-label { font-weight: 700; font-size: 14px; } .lg-weekrow-now { color: var(--wot-grad-end); font-weight: 800; }
.lg-weekrow-meta { color: var(--wot-text-2); font-size: 12.5px; margin-left: auto; }
.lg-weekrow-pnl { font-variant-numeric: tabular-nums; font-weight: 700; font-size: 13px; min-width: 64px; text-align: right; }
.lg-weekrow-go { color: var(--wot-text-2); }

/* ── Log day sheet ───────────────────────────────────────────────────────── */
.lg-scrim { position: fixed; inset: 0; background: rgba(0,0,0,.62); backdrop-filter: blur(3px); z-index: 80; }
.lg-sheet { position: fixed; z-index: 81; top: 50%; left: 50%; transform: translate(-50%, -50%); width: min(640px, 94vw); max-height: 88vh;
  display: flex; flex-direction: column; background: var(--wot-bg-1); border: 1px solid var(--wot-border); border-radius: var(--wot-r-lg); box-shadow: var(--wot-shadow-card); }
.lg-sheet-head { display: flex; align-items: flex-start; gap: 12px; padding: 18px 20px; border-bottom: 1px solid var(--wot-border); }
.lg-sheet-head > div:first-child { flex: 1; min-width: 0; }
.lg-sheet-head .v2-iconbtn { margin-left: auto; flex-shrink: 0; }
.lg-sheet-date { font-size: 18px; font-weight: 800; margin-bottom: 6px; }
.lg-sheet-body { padding: 18px 20px; overflow-y: auto; display: flex; flex-direction: column; gap: 14px; }
.lg-day-money, .lg-trade-money { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
.lg-day-money { padding: 12px 14px; border-radius: 12px; background: var(--wot-bg-0); border: 1px solid var(--wot-border); }
.lg-day-empty { padding: 20px 0; text-align: center; }
.lg-day-review { margin-top: 4px; }
.lg-day-debrief { padding: 14px 16px; border-radius: 14px; border: 1px solid var(--wot-border); background: var(--wot-bg-2); }
.lg-day-debrief.is-open { border-color: color-mix(in srgb, var(--wot-chop) 45%, transparent); background: color-mix(in srgb, var(--wot-chop) 8%, var(--wot-bg-2)); }
.lg-day-debrief.is-open p { margin: 0 0 10px; font-size: 13.5px; color: var(--wot-text-1); }
.lg-day-debrief-k { font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; color: var(--wot-bull); display: inline-flex; gap: 6px; align-items: center; margin-bottom: 8px; }
.lg-day-debrief-note { margin: 8px 0 6px; font-style: italic; color: var(--wot-text-1); font-size: 13px; }
.lg-trade { padding: 14px; border-radius: 14px; border: 1px solid var(--wot-border); background: var(--wot-bg-2); display: flex; flex-direction: column; gap: 11px; }
.lg-trade-top { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.lg-trade-top strong { font-size: 16px; }
.lg-trade-verdict { font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: .04em; }
.lg-trade-verdict.is-good { color: var(--wot-bull); } .lg-trade-verdict.is-caution { color: var(--wot-chop); } .lg-trade-verdict.is-danger { color: var(--wot-bear); }
.lg-money-cell { display: flex; flex-direction: column; align-items: center; padding: 9px; border-radius: 10px; background: var(--wot-bg-0); }
.lg-money-cell small { font-size: 10px; color: var(--wot-text-2); text-transform: uppercase; letter-spacing: .04em; }
.lg-money-cell b { font-size: 15px; font-variant-numeric: tabular-nums; margin-top: 2px; }
.lg-trade-cells { display: flex; flex-wrap: wrap; gap: 4px; }
.lg-trade-note { margin: 0; padding: 9px 11px; border-radius: 10px; background: var(--wot-bg-0); color: var(--wot-text-1); font-size: 13px; }
.lg-trade-foot { display: flex; gap: 16px; }

/* ── Review ──────────────────────────────────────────────────────────────── */
.rv-wknav { display: flex; align-items: center; gap: 12px; margin: 6px 0 18px; }
.rv-wknav-mid { flex: 1; text-align: center; } .rv-wknav-mid strong { font-size: 17px; display: block; }
.rv-wknav-mid span { font-size: 12px; }
.rv-stack { display: flex; flex-direction: column; gap: 18px; }
.rv-verdict { padding: 22px; border-radius: var(--wot-r-lg); border: 1px solid var(--wot-border); position: relative; overflow: hidden;
  background: linear-gradient(160deg, var(--wot-bg-1), var(--wot-bg-0)); }
.rv-verdict::before { content: ''; position: absolute; inset: 0 0 auto 0; height: 4px; }
.rv-verdict.is-good::before { background: var(--wot-bull); } .rv-verdict.is-caution::before { background: var(--wot-chop); }
.rv-verdict.is-danger::before { background: var(--wot-bear); } .rv-verdict.is-rest::before { background: var(--wot-text-2); }
.rv-verdict-tierwrap { display: flex; align-items: center; gap: 12px; margin-bottom: 10px; }
.rv-verdict-tier { font-size: 14px; padding: 5px 14px; }
.rv-verdict-line { font-size: 16px; color: var(--wot-text-0); margin: 0; font-weight: 600; }
.rv-verdict-stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-top: 18px; padding-top: 16px; border-top: 1px solid var(--wot-border); }
.rv-verdict-stats > div { display: flex; flex-direction: column; }
.rv-verdict-stats b { font-size: 22px; font-weight: 800; font-variant-numeric: tabular-nums; }
.rv-verdict-stats small { font-size: 11px; color: var(--wot-text-2); text-transform: uppercase; letter-spacing: .04em; }
.rv-delta { font-size: 12px; font-weight: 700; display: inline-flex; align-items: center; gap: 3px; }
.rv-delta.is-up { color: var(--wot-bull); } .rv-delta.is-down { color: var(--wot-bear); } .rv-delta.is-up svg { transform: rotate(-90deg); } .rv-delta.is-down svg { transform: rotate(90deg); }

.rv-ledger { display: flex; flex-direction: column; gap: 4px; }
.rv-ledrow { display: grid; grid-template-columns: 26px 1.4fr 1fr 44px 44px; align-items: center; gap: 10px; padding: 8px 4px; }
.rv-led-n { width: 24px; height: 24px; border-radius: 7px; display: flex; align-items: center; justify-content: center; font-weight: 800; font-size: 12px; background: rgba(255,255,255,.05); color: var(--wot-text-2); }
.rv-ledrow.is-good .rv-led-n { color: var(--wot-bull); background: color-mix(in srgb, var(--wot-bull) 14%, transparent); }
.rv-ledrow.is-danger .rv-led-n { color: var(--wot-bear); background: color-mix(in srgb, var(--wot-bear) 14%, transparent); }
.rv-led-title { font-size: 13.5px; font-weight: 600; } .rv-led-title small { display: block; font-size: 11px; color: var(--wot-text-3); margin-top: 1px; }
.rv-led-bar { height: 6px; border-radius: 3px; background: rgba(255,255,255,.06); overflow: hidden; }
.rv-led-bar i { display: block; height: 100%; border-radius: 3px; background: var(--wot-text-2); }
.rv-ledrow.is-good .rv-led-bar i { background: var(--wot-bull); } .rv-ledrow.is-caution .rv-led-bar i { background: var(--wot-chop); } .rv-ledrow.is-danger .rv-led-bar i { background: var(--wot-bear); }
.rv-led-pct { font-variant-numeric: tabular-nums; font-weight: 700; font-size: 13px; text-align: right; }
.rv-move-up, .rv-move-down, .rv-move-new, .rv-move-flat { font-size: 11px; font-weight: 800; text-align: right; }
.rv-move-up { color: var(--wot-bull); } .rv-move-down { color: var(--wot-bear); } .rv-move-new { color: var(--wot-text-2); } .rv-move-flat { color: var(--wot-text-3); }
.rv-move-up svg { transform: rotate(-90deg); } .rv-move-down svg { transform: rotate(90deg); }
.rv-led-note { margin-top: 10px; font-size: 12px; }

.rv-coach-focus-main b { font-size: 16px; } .rv-coach-focus-main small { display: block; color: var(--wot-text-2); font-size: 12.5px; margin-top: 2px; }

/* ── Review · Where the P&L came from (by ticker) ────────────────────────── */
.rv-tk-tabs { display: inline-flex; gap: 4px; padding: 4px; margin-bottom: 14px; border-radius: 11px; background: var(--wot-bg-2); border: 1px solid var(--wot-border); }
.rv-tk-tab { display: inline-flex; align-items: center; gap: 6px; padding: 6px 13px; border: 0; border-radius: 8px; background: none; color: var(--wot-text-2); font-size: 12.5px; font-weight: 700; cursor: pointer; }
.rv-tk-tab small { font-size: 11px; font-weight: 700; color: var(--wot-text-3); font-variant-numeric: tabular-nums; }
.rv-tk-tab.is-on { background: var(--wot-bg-0); color: var(--wot-text-0); box-shadow: 0 1px 3px rgba(0,0,0,.4); }
.rv-tk-tab.is-on small { color: var(--wot-grad-end); }
.rv-tk-empty { margin-top: 2px; }
.rv-tk-hi { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin-bottom: 14px; }
.rv-tk-hicell { display: flex; flex-direction: column; gap: 3px; padding: 12px 14px; border-radius: 12px; background: var(--wot-bg-2); border: 1px solid var(--wot-border); }
.rv-tk-hicell small { font-size: 10px; text-transform: uppercase; letter-spacing: .05em; color: var(--wot-text-2); }
.rv-tk-hicell b { font-size: 17px; font-weight: 800; font-variant-numeric: tabular-nums; display: flex; align-items: baseline; gap: 6px; }
.rv-tk-hicell b span { font-size: 13px; font-weight: 700; }
.rv-tk-hicell b.is-up { color: var(--wot-bull); } .rv-tk-hicell b.is-down { color: var(--wot-bear); }

.rv-tk-table { display: flex; flex-direction: column; }
.rv-tk-head, .rv-tk-rowhead { display: grid; grid-template-columns: minmax(56px, 1.2fr) 52px 88px 56px 92px 92px 20px; align-items: center; gap: 8px; }
.rv-tk-head { padding: 0 12px 8px; font-size: 10.5px; text-transform: uppercase; letter-spacing: .04em; color: var(--wot-text-2); border-bottom: 1px solid var(--wot-border); }
.rv-tk-head span:nth-child(2), .rv-tk-head span:nth-child(4) { text-align: center; }
.rv-tk-head span:nth-child(3), .rv-tk-head span:nth-child(5), .rv-tk-head span:nth-child(6) { text-align: right; }
.rv-tk-row { border-bottom: 1px solid var(--wot-border); }
.rv-tk-row:last-child { border-bottom: 0; }
.rv-tk-rowhead { width: 100%; padding: 12px; background: none; border: 0; cursor: pointer; color: var(--wot-text-0); font-size: 13.5px; text-align: left; }
.rv-tk-rowhead:hover { background: var(--wot-bg-2); }
.rv-tk-sym { font-weight: 800; font-size: 15px; }
.rv-tk-win { text-align: center; color: var(--wot-text-1); font-variant-numeric: tabular-nums; }
.rv-tk-net, .rv-tk-tw, .rv-tk-tl { text-align: right; font-variant-numeric: tabular-nums; font-weight: 800; }
.rv-tk-ct { text-align: center; color: var(--wot-text-2); font-variant-numeric: tabular-nums; }
.rv-tk-tw, .rv-tk-tl { font-weight: 700; font-size: 13px; }
.rv-tk-net.is-up, .rv-tk-tw.is-up { color: var(--wot-bull); } .rv-tk-net.is-down, .rv-tk-tl.is-down { color: var(--wot-bear); }
.rv-tk-caret { color: var(--wot-text-3); transition: transform .15s; transform: rotate(90deg); justify-self: end; }
.rv-tk-caret.is-open { transform: rotate(-90deg); }
.rv-tk-detail { padding: 2px 12px 12px; display: flex; flex-direction: column; gap: 6px; }
.rv-tk-trade { display: grid; grid-template-columns: 1fr auto 60px 88px; align-items: center; gap: 10px; padding: 9px 12px; border-radius: 10px; background: var(--wot-bg-2); border: 1px solid var(--wot-border); }
.rv-tk-trade-name b { font-size: 13.5px; } .rv-tk-trade-name small { color: var(--wot-text-2); }
.rv-tk-trade-oc { font-size: 10px; font-weight: 800; letter-spacing: .04em; padding: 3px 8px; border-radius: 6px; }
.rv-tk-trade-oc.is-good { color: var(--wot-bull); background: color-mix(in srgb, var(--wot-bull) 14%, transparent); }
.rv-tk-trade-oc.is-danger { color: var(--wot-bear); background: color-mix(in srgb, var(--wot-bear) 14%, transparent); }
.rv-tk-trade-oc.is-na { color: var(--wot-text-2); background: rgba(255,255,255,.05); }
.rv-tk-trade-roi { text-align: right; font-size: 12.5px; font-variant-numeric: tabular-nums; color: var(--wot-text-2); }
.rv-tk-trade-roi.is-up { color: var(--wot-bull); } .rv-tk-trade-roi.is-down { color: var(--wot-bear); }
.rv-tk-trade-pnl { text-align: right; font-weight: 800; font-variant-numeric: tabular-nums; font-size: 13.5px; }
.rv-tk-trade-pnl.is-up { color: var(--wot-bull); } .rv-tk-trade-pnl.is-down { color: var(--wot-bear); }

.rv-wkday { border: 1px solid var(--wot-border); border-radius: 12px; overflow: hidden; margin-bottom: 7px; background: var(--wot-bg-1); }
.rv-wkday-head { display: flex; align-items: center; gap: 11px; width: 100%; padding: 12px 14px; background: none; border: 0; cursor: pointer; color: var(--wot-text-0); }
.rv-wkday-dot { width: 9px; height: 9px; border-radius: 50%; flex: 0 0 auto; }
.rv-wkday-dot.is-green { background: var(--wot-bull); } .rv-wkday-dot.is-yellow { background: var(--wot-chop); } .rv-wkday-dot.is-red { background: var(--wot-bear); } .rv-wkday-dot.is-rest { background: var(--wot-text-3); }
.rv-wkday-name { font-weight: 700; font-size: 13.5px; } .rv-wkday-meta { color: var(--wot-text-2); font-size: 12px; margin-left: auto; }
.rv-wkday-caret { color: var(--wot-text-3); transition: transform .15s; transform: rotate(90deg); } .rv-wkday-caret.is-open { transform: rotate(-90deg); }
.rv-daydetail { padding: 4px 14px 14px; }
.rv-sc-head, .rv-sc-row { display: flex; align-items: center; gap: 10px; padding: 5px 0; }
.rv-sc-head { color: var(--wot-text-3); font-size: 11px; border-bottom: 1px solid var(--wot-border); }
.rv-sc-trade { flex: 1; min-width: 0; font-size: 13px; } .rv-sc-trade small { color: var(--wot-text-2); }
.rv-sc-cells { display: inline-flex; gap: 3px; } .rv-sc-h { width: 20px; text-align: center; font-weight: 700; }

.rv-acct-list { display: flex; flex-direction: column; gap: 6px; }
.rv-acct-row { display: flex; align-items: center; gap: 10px; padding: 9px 12px; border-radius: 10px; border: 1px solid var(--wot-border); background: var(--wot-bg-2); font-size: 13.5px; }
.rv-acct-row.is-kept { border-color: color-mix(in srgb, var(--wot-bull) 35%, transparent); } .rv-acct-row.is-kept .rv-acct-mark { color: var(--wot-bull); }
.rv-acct-row.is-broke { border-color: color-mix(in srgb, var(--wot-bear) 35%, transparent); } .rv-acct-row.is-broke .rv-acct-mark { color: var(--wot-bear); }
.rv-acct-mark { width: 18px; display: inline-flex; justify-content: center; color: var(--wot-text-3); }
.rv-acct-rule { flex: 1; } .rv-acct-tail { color: var(--wot-text-2); font-size: 12.5px; }
.rv-acct-verdict { margin: 12px 0 0; font-size: 13.5px; color: var(--wot-text-1); }

.rv-cost { display: flex; flex-direction: column; gap: 6px; }
.rv-cost-row { display: flex; align-items: center; gap: 10px; padding: 9px 12px; border-radius: 10px; background: var(--wot-bg-2); border: 1px solid var(--wot-border); font-size: 13.5px; }
.rv-cost-n { display: inline-flex; width: 22px; height: 22px; align-items: center; justify-content: center; border-radius: 6px; background: color-mix(in srgb, var(--wot-bear) 14%, transparent); color: var(--wot-bear); font-weight: 800; font-size: 12px; margin-right: 6px; }
.rv-cost-x { margin-left: auto; color: var(--wot-text-2); } .rv-cost-amt { font-variant-numeric: tabular-nums; font-weight: 800; color: var(--wot-bear); min-width: 64px; text-align: right; }

.rv-workon { padding: 14px 16px; border-radius: 12px; background: color-mix(in srgb, var(--wot-bear) 7%, var(--wot-bg-2)); border: 1px solid color-mix(in srgb, var(--wot-bear) 25%, transparent); margin-bottom: 14px; }
.rv-workon-rule { font-weight: 800; font-size: 15px; margin-bottom: 4px; } .rv-workon p { margin: 0; color: var(--wot-text-1); font-size: 13.5px; }
.rv-commit-k { font-size: 14px; font-weight: 700; margin: 0 0 4px; }
.rv-focus-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 8px; margin-top: 10px; }
.rv-focus { display: flex; align-items: center; gap: 8px; padding: 10px 12px; border-radius: 11px; border: 1px solid var(--wot-border); background: var(--wot-bg-2); color: var(--wot-text-1); cursor: pointer; text-align: left; font-size: 13px; }
.rv-focus.is-sel { border-color: var(--wot-grad-end); color: var(--wot-text-0); background: color-mix(in srgb, var(--wot-grad-end) 12%, transparent); }
.rv-focus svg { color: var(--wot-text-3); flex: 0 0 auto; } .rv-focus.is-sel svg { color: var(--wot-grad-end); }

/* ── Debrief modal + mindset module viewer ───────────────────────────────── */
.dbf-modal { position: fixed; inset: 0; z-index: 90; display: flex; align-items: center; justify-content: center; padding: 18px;
  background: rgba(0,0,0,.66); backdrop-filter: blur(4px); animation: dbf-in .18s ease; }
.dbf-modal.is-out { opacity: 0; transition: opacity .18s; }
@keyframes dbf-in { from { opacity: 0; } to { opacity: 1; } }
.dbf-card { width: min(620px, 96vw); max-height: 90vh; overflow-y: auto; position: relative; padding: 26px 26px 22px;
  border-radius: var(--wot-r-lg); border: 1px solid var(--wot-border); background: linear-gradient(180deg, var(--wot-bg-1), var(--wot-bg-0)); box-shadow: var(--wot-shadow-card); }
.dbf-x { position: absolute; top: 14px; right: 16px; background: none; border: 0; color: var(--wot-text-2); font-size: 18px; cursor: pointer; }
.dbf-kicker { font-size: 12px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--wot-grad-end); display: inline-flex; gap: 6px; align-items: center; }
.dbf-head h2 { font-size: clamp(20px, 3vw, 26px); margin: 8px 0 8px; line-height: 1.12; }
.dbf-sub { color: var(--wot-text-1); font-size: 14px; line-height: 1.5; margin: 0; }
.dbf-rules { display: flex; flex-direction: column; gap: 12px; margin: 18px 0; }
.dbf-rule { padding: 16px; border-radius: 14px; border: 1px solid var(--wot-border); background: var(--wot-bg-2); }
.dbf-rule.is-answered { border-color: color-mix(in srgb, var(--wot-bull) 35%, transparent); }
.dbf-rule-head { display: flex; align-items: center; gap: 9px; }
.dbf-rule-n { width: 26px; height: 26px; border-radius: 8px; display: flex; align-items: center; justify-content: center; font-weight: 900; font-size: 13px; background: color-mix(in srgb, var(--wot-bear) 16%, transparent); color: var(--wot-bear); }
.dbf-rule-head b { font-size: 15px; flex: 1; } .dbf-rule-tag { font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; color: var(--wot-bear); }
.dbf-rule-q { margin: 10px 0 10px; font-size: 13px; color: var(--wot-text-2); }
.dbf-opts { display: flex; flex-direction: column; gap: 7px; }
.dbf-opt { display: flex; align-items: center; gap: 10px; text-align: left; padding: 11px 13px; border-radius: 11px; border: 1px solid var(--wot-border); background: var(--wot-bg-0); color: var(--wot-text-1); cursor: pointer; font-size: 13.5px; }
.dbf-opt:hover { border-color: var(--wot-text-3); }
.dbf-opt.is-on { border-color: var(--wot-grad-end); color: var(--wot-text-0); background: color-mix(in srgb, var(--wot-grad-end) 12%, transparent); }
.dbf-opt-dot { flex: 0 0 auto; width: 16px; height: 16px; border-radius: 50%; border: 2px solid var(--wot-border); }
.dbf-opt.is-on .dbf-opt-dot { border-color: var(--wot-grad-end); background: var(--wot-grad-end); box-shadow: inset 0 0 0 3px var(--wot-bg-0); }
.dbf-fix { margin-top: 11px; padding: 11px 13px; border-radius: 11px; background: color-mix(in srgb, var(--wot-bull) 9%, var(--wot-bg-0)); border: 1px solid color-mix(in srgb, var(--wot-bull) 28%, transparent); color: var(--wot-text-0); font-size: 13.5px; line-height: 1.5; }
.dbf-note-wrap { margin: 8px 0 18px; } .dbf-note-lbl { font-size: 12px; color: var(--wot-text-2); font-weight: 600; display: block; margin-bottom: 6px; }
.dbf-note { width: 100%; resize: vertical; padding: 11px; border-radius: 11px; border: 1px solid var(--wot-border); background: var(--wot-bg-2); color: var(--wot-text-0); font-family: inherit; font-size: 13.5px; }
.dbf-foot { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.dbf-primary { padding: 12px 20px; border-radius: 12px; border: 0; cursor: pointer; font-weight: 800; font-size: 14px; color: #0a0a0a; background: var(--wot-grad); }
.dbf-primary:disabled { opacity: .4; cursor: default; }
.dbf-ghost { padding: 12px 18px; border-radius: 12px; border: 1px solid var(--wot-border); background: var(--wot-bg-2); color: var(--wot-text-1); cursor: pointer; font-weight: 700; }
.dbf-clean { text-align: center; padding: 14px 6px; } .dbf-clean h2 { font-size: 24px; margin: 14px 0 8px; } .dbf-clean p { color: var(--wot-text-1); line-height: 1.5; margin: 0 auto 20px; max-width: 46ch; }
.dbf-clean-ring { margin: 0 auto; width: 56px; height: 56px; font-size: 26px; }
.dbf-plan { display: flex; flex-direction: column; gap: 9px; margin: 16px 0; }
.dbf-plan-row { display: flex; gap: 12px; align-items: flex-start; padding: 14px; border-radius: 13px; border: 1px solid var(--wot-border); background: var(--wot-bg-2); }
.dbf-plan-n { flex: 0 0 auto; width: 30px; height: 30px; border-radius: 9px; display: flex; align-items: center; justify-content: center; font-weight: 900; color: #0a0a0a; background: var(--wot-grad); }
.dbf-plan-main { flex: 1; min-width: 0; } .dbf-plan-main b { font-size: 14.5px; }
.dbf-plan-cause { display: block; font-size: 12px; color: var(--wot-text-2); margin: 2px 0 6px; }
.dbf-plan-fix { margin: 0; font-size: 13.5px; color: var(--wot-text-0); line-height: 1.45; }
.dbf-plan-study { flex: 0 0 auto; align-self: center; padding: 7px 13px; border-radius: 9px; border: 1px solid var(--wot-grad-end); background: color-mix(in srgb, var(--wot-grad-end) 12%, transparent); color: var(--wot-text-0); font-weight: 700; font-size: 12.5px; cursor: pointer; }
.dbf-modules { margin: 16px 0 20px; display: flex; flex-direction: column; gap: 8px; }
.dbf-modules-k { font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; color: var(--wot-text-2); margin-bottom: 2px; }

.mod-card { max-width: 560px; }
.mod-kicker { font-size: 12px; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; color: var(--wot-grad-end); display: inline-flex; gap: 6px; align-items: center; }
.mod-title { font-size: clamp(22px, 3.4vw, 30px); margin: 10px 0 6px; background: var(--wot-grad); -webkit-background-clip: text; background-clip: text; color: transparent; }
.mod-lede { font-size: 16px; color: var(--wot-text-0); font-weight: 600; margin: 0 0 16px; }
.mod-body p { color: var(--wot-text-1); line-height: 1.6; font-size: 14.5px; margin: 0 0 12px; }
.mod-drill { margin: 18px 0; padding: 16px; border-radius: 13px; background: color-mix(in srgb, var(--wot-bull) 8%, var(--wot-bg-2)); border: 1px solid color-mix(in srgb, var(--wot-bull) 28%, transparent); }
.mod-drill-k { font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; color: var(--wot-bull); display: inline-flex; gap: 6px; align-items: center; }
.mod-drill p { margin: 8px 0 0; font-size: 14.5px; color: var(--wot-text-0); line-height: 1.5; }
.mod-done { width: 100%; margin-top: 6px; }
.lw-money { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.lw-dollar { display: flex; align-items: center; gap: 4px; padding: 0 10px; border-radius: 10px; border: 1px solid var(--wot-border); background: var(--wot-bg-2); }
.lw-dollar i { color: var(--wot-text-2); font-style: normal; font-weight: 700; }
.lw-dollar input { flex: 1; background: none; border: 0; color: var(--wot-text-0); padding: 10px 0; font-size: 14px; font-variant-numeric: tabular-nums; width: 100%; }
.lw-pnl-note { display: flex; align-items: center; font-size: 12.5px; }
.lw-roi { margin: 10px 0 0; font-size: 13px; font-weight: 700; }

@media (max-width: 680px) {
  .lg-today { grid-template-columns: 1fr; grid-template-areas: "l" "r" "acts"; }
  .lg-today-r { gap: 22px; }
  .rv-verdict-stats { grid-template-columns: repeat(2, 1fr); }
  .rv-ledrow { grid-template-columns: 24px 1.2fr 50px 40px; } .rv-led-bar { display: none; }
  .lw-money { grid-template-columns: 1fr; }
  .rv-tk-hi { grid-template-columns: 1fr; }
  .rv-tk-head, .rv-tk-rowhead { grid-template-columns: minmax(44px, 1fr) 76px 76px 76px 16px; gap: 6px; }
  .rv-tk-head span:nth-child(2), .rv-tk-head span:nth-child(4), .rv-tk-win, .rv-tk-ct { display: none; }
  .rv-tk-trade { grid-template-columns: 1fr auto 84px; } .rv-tk-trade-roi { display: none; }
}

/* ── Step 2 · levels & sizing — a clean 2-column GRID ──────────────────────
   minmax(0,1fr) is the fix: it lets the chart column be the available width and
   shrink rather than the SVG (width:100%) forcing the column to grow. We mount
   the chart into our OWN lcd-* containers (no wot-chart-frame grid/calc-height
   baggage) so the chart simply fills the left column. */
.pwf-split { display: grid; grid-template-columns: minmax(0, 1fr) clamp(440px, 42%, 600px); height: 100%; min-height: 0; }
/* Chart column is BORDERLESS — no frame box, the SVG fills the column and the
   only separator is the toolbar's bottom hairline + the rail's left border. */
.pwf-chart { min-width: 0; min-height: 0; padding: 0; display: flex; }
.lcd-frame { flex: 1 1 0; min-width: 0; min-height: 0; display: flex; flex-direction: column; overflow: hidden;
  border: none; border-radius: 0; background: transparent; box-shadow: none; }
.lcd-toolbar { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; padding: 14px 14px 12px; border-bottom: 1px solid var(--wot-border); flex: 0 0 auto; }
.lcd-toolbar .wot-chart-leftgroup { display: flex; gap: 10px; align-items: center; }
.lcd-toolbar .wot-chart-ranges { display: flex; gap: 2px; flex-wrap: wrap; }
.lcd-toolbar .wot-chart-toggles { display: flex; gap: 6px; align-items: center; margin-left: auto; }
.lcd-sub { font-family: var(--wot-font-mono); font-size: 11px; color: var(--wot-text-3); padding: 6px 16px 0; letter-spacing: .04em; text-transform: uppercase; flex: 0 0 auto; }
.lcd-canvas { flex: 1 1 0; min-height: 0; min-width: 0; padding: 6px 10px 10px; }
.lcd-canvas > div { height: 100%; }
.pwf-config { min-width: 0; min-height: 0; overflow-y: auto; overflow-x: hidden; padding: 0 30px 96px;
  border-left: 1px solid var(--wot-border);
  background: radial-gradient(900px 360px at 100% -5%, rgba(255,107,31,.05), transparent 60%), var(--wot-bg-1);
  display: flex; flex-direction: column; gap: 22px; overscroll-behavior: contain; }
/* ROOT FIX: never let the flex column SHRINK a section to fit. Default
   flex-shrink:1 squished every rule card down and .pwf-sec's overflow:hidden
   clipped the body — so sections looked tiny and nothing scrolled. Forcing
   flex:0 0 auto makes them keep full height → content overflows → rail scrolls. */
.pwf-config > * { flex: 0 0 auto; }
/* calm, thin scrollbar so the dense rail never reads as a cramped box */
.pwf-config::-webkit-scrollbar { width: 10px; }
.pwf-config::-webkit-scrollbar-thumb { background: var(--wot-bg-3); border-radius: 999px; border: 3px solid transparent; background-clip: padding-box; }
.pwf-config::-webkit-scrollbar-thumb:hover { background: var(--wot-border-strong); background-clip: padding-box; }
.pwf-pm { overflow-x: hidden; }
.pwf-config * { max-width: 100%; }
.pwf-cfg-head { display: flex; gap: 10px; }
.pwf-cfg-h { margin: 8px 0 2px; font-size: 12px; text-transform: uppercase; letter-spacing: .04em; color: var(--wot-text-2); }
.pwf-cfg-h i { text-transform: none; color: var(--wot-text-3); font-weight: 400; }
.pwf-nextstrike { font-size: 12px; color: var(--wot-text-1); } .pwf-nextstrike b { color: var(--wot-target); }
.pwf-maxloss { display: flex; justify-content: space-between; align-items: center; padding: 15px 18px; border-radius: 13px;
  background: rgba(239,68,68,.1); border: 1px solid rgba(239,68,68,.3); }
.pwf-maxloss span { font-size: 13px; color: var(--wot-text-2); } .pwf-maxloss b { font-family: var(--wot-font-mono); font-size: 22px; color: var(--wot-bear); }
.pwf-maxloss.is-empty b { color: var(--wot-text-3); }
.pwf-gate { display: flex; gap: 12px; align-items: flex-start; text-align: left; width: 100%; cursor: pointer; padding: 15px 16px;
  border-radius: var(--wot-r-md); border: 1px solid var(--wot-border); background: var(--wot-bg-2); color: var(--wot-text-1); font-size: 14px; line-height: 1.45; }
.pwf-gate.is-on { border-color: var(--wot-bull); background: rgba(34,197,94,.1); color: var(--wot-text-0); }
.pwf-gate-box { flex: 0 0 20px; height: 20px; border-radius: 6px; border: 2px solid var(--wot-border-strong); display: grid; place-items: center; color: #fff; }
.pwf-gate.is-on .pwf-gate-box { background: var(--wot-bull); border-color: var(--wot-bull); }
.pwf-calc-empty { text-align: center; color: var(--wot-text-2); padding: 22px; font-size: 13px; }
.pwf-bar { display: flex; height: 32px; border-radius: 10px; overflow: hidden; background: var(--wot-bg-2); margin-top: 4px; }
.pwf-bar-loss { background: rgba(239,68,68,.85); } .pwf-bar-gain { background: rgba(34,197,94,.85); }
.pwf-bar > div { display: flex; align-items: center; justify-content: center; min-width: 0; }
.pwf-bar span { font-size: 11px; font-weight: 800; color: #0a0a0a; white-space: nowrap; padding: 0 6px; }
.pwf-be { font-size: 12px; color: var(--wot-text-1); }
.pwf-roll-fund { font-size: 11.5px; color: var(--wot-text-2); margin: 0; line-height: 1.45; }
.pwf-roll-fund b { color: var(--wot-text-1); font-family: var(--wot-font-mono); }

/* ── PROFIT / LOSS POTENTIAL — premium summary (no dominating red block) ──── */
.pwf-pl { display: grid; gap: 12px; }
.pwf-pl-cells { display: grid; grid-template-columns: 1fr 1fr auto; gap: 10px; }
@media (max-width: 520px) { .pwf-pl-cells { grid-template-columns: 1fr 1fr; } }
.pwf-pl-cell { display: flex; flex-direction: column; gap: 4px; padding: 12px 14px; border-radius: 13px;
  background: var(--wot-bg-2); border: 1px solid var(--wot-border); }
.pwf-pl-cell small { font-size: 10px; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; color: var(--wot-text-2); }
.pwf-pl-cell b { font-family: var(--wot-font-mono); font-size: 22px; font-weight: 900; line-height: 1; }
.pwf-pl-cell.is-risk b { color: var(--wot-bear); }
.pwf-pl-cell.is-reward b { color: var(--wot-bull); }
.pwf-pl-cell.is-rr { background: rgba(255,31,143,.08); border-color: rgba(255,31,143,.28); justify-content: center; min-width: 90px; }
.pwf-pl-cell.is-rr b { color: var(--wot-grad-end); display: inline-flex; align-items: baseline; gap: 1px; }
.pwf-pl-cell.is-rr b i { font-style: normal; font-size: 13px; color: var(--wot-text-2); }
.pwf-pl-bar { display: flex; height: 12px; border-radius: 7px; overflow: hidden; background: var(--wot-bg-2); }
.pwf-pl-bar .risk { background: linear-gradient(90deg, #7f1d1d, var(--wot-bear)); }
.pwf-pl-bar .reward { background: linear-gradient(90deg, var(--wot-bull), #16a34a); }
.pwf-pl-barlab { display: flex; justify-content: space-between; font-size: 11.5px; font-weight: 700; font-family: var(--wot-font-mono); }
.pwf-pl-barlab .is-down { color: var(--wot-bear); } .pwf-pl-barlab .is-up { color: var(--wot-bull); }
.pwf-pl-break { display: grid; gap: 8px; }
.pwf-pl-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 11px 15px; border-radius: 12px;
  background: rgba(34,197,94,.06); border: 1px solid rgba(34,197,94,.15); font-size: 13px; color: var(--wot-text-1); }
.pwf-pl-row b { font-family: var(--wot-font-mono); font-size: 16px; font-weight: 800; }
.pwf-pl-row b.is-up { color: var(--wot-bull); }
.pwf-pl-total { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 15px 17px; border-radius: 14px;
  background: linear-gradient(135deg, rgba(34,197,94,.16), rgba(34,197,94,.05));
  border: 1px solid rgba(34,197,94,.32); box-shadow: 0 10px 30px rgba(34,197,94,.10); }
.pwf-pl-total span { font-size: 14px; font-weight: 800; color: var(--wot-text-0); }
.pwf-pl-total b { font-family: var(--wot-font-mono); font-size: 28px; font-weight: 900; color: var(--wot-bull); line-height: 1; }
.pwf-matrix { width: 100%; table-layout: fixed; border-collapse: collapse; font-size: 13px; }
.pwf-matrix th { text-align: right; font-size: 11px; text-transform: uppercase; color: var(--wot-text-3); padding: 6px 5px; font-weight: 700; overflow: hidden; text-overflow: ellipsis; }
.pwf-matrix th:first-child { text-align: left; }
.pwf-matrix td { text-align: right; padding: 10px 5px; font-family: var(--wot-font-mono); border-top: 1px solid var(--wot-border); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pwf-matrix td:first-child { text-align: left; }
.pwf-matrix td i { font-style: normal; color: var(--wot-text-3); font-size: 11px; }
.pwf-matrix tr.is-sel { background: rgba(255,31,143,.08); cursor: pointer; }
.pwf-matrix tbody tr { cursor: pointer; }
.pwf-roll { font-size: 12px; color: var(--wot-text-1); line-height: 1.5; } .pwf-roll b { font-family: var(--wot-font-mono); }

@media (max-width: 820px) {
  .pwf-pm-grid { grid-template-columns: 1fr; }
  .pwf-split { grid-template-columns: 1fr; grid-auto-rows: min-content; overflow: auto; }
  .pwf-chart { height: 58vh; } .pwf-config { border-left: none; border-top: 1px solid var(--wot-border); }
}

/* ── Plan Wizard · Step 2 right panel — bold, rule-driven, zero guesswork ── */
.pwf-head-r .pwf-sym { font-size: 17px; font-weight: 900; color: var(--wot-text-0); letter-spacing: .02em;
  padding: 4px 12px; border-radius: 999px; background: rgba(255,31,143,.12); border: 1px solid rgba(255,31,143,.3); }
/* Pinned header — ticker + CALL/PUT + A+/Lotto stay in view while the rule
   stack scrolls, so you never lose the plan's identity in a long form. */
.pwf-cfg-top { position: sticky; top: 0; z-index: 6;
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  margin: 0 -30px; padding: 22px 30px 16px;
  background: linear-gradient(180deg, var(--wot-bg-1) 86%, rgba(17,17,20,0));
  border-bottom: 1px solid var(--wot-border); }
.pwf-cfg-ticker { font-size: 32px; font-weight: 900; letter-spacing: .01em; color: var(--wot-text-0); margin-right: auto;
  background: linear-gradient(120deg, var(--wot-text-0), var(--wot-grad-end)); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }
.pwf-side-lg button { padding: 10px 20px; font-size: 14px; font-weight: 800; letter-spacing: .04em; }
/* This week's realized P&L on the ticker — top-right of step 2, data-only */
.pwf-wk-pnl { display: inline-flex; flex-direction: column; align-items: flex-end; gap: 1px;
  padding: 7px 13px; border-radius: 13px; border: 1px solid var(--wot-border);
  background: var(--wot-bg-2); line-height: 1.15; white-space: nowrap; }
.pwf-wk-pnl small { font-size: 10px; font-weight: 700; letter-spacing: .03em; text-transform: uppercase; color: var(--wot-text-3); }
.pwf-wk-pnl b { font-family: var(--wot-font-mono); font-size: 17px; font-weight: 800; }
.pwf-wk-pnl.is-up { border-color: rgba(34,197,94,.32); background: rgba(34,197,94,.08); }
.pwf-wk-pnl.is-up b { color: var(--wot-bull); }
.pwf-wk-pnl.is-down { border-color: rgba(239,68,68,.32); background: rgba(239,68,68,.08); }
.pwf-wk-pnl.is-down b { color: var(--wot-bear); }
.pwf-cfg-tag { font-size: 13px; color: var(--wot-text-2); line-height: 1.55; margin: 4px 0 8px; }
.pwf-cfg-tag b { color: var(--wot-text-1); }
.pwf-cfg-note { font-size: 13px; color: var(--wot-text-2); margin: -2px 0 4px; line-height: 1.5; }

/* scale-out — inline input pills */
.pwf-scale { display: flex; flex-direction: column; gap: 10px; }
.pwf-scale-row { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; font-size: 14px; color: var(--wot-text-1);
  padding: 12px 15px; border-radius: 12px; background: var(--wot-bg-2); }
.pwf-scale-row.is-runner { background: rgba(255,255,255,.03); }
.pwf-scale-lab { font-weight: 800; color: var(--wot-text-0); min-width: 52px; }
.pwf-scale-when { color: var(--wot-text-2); margin-left: auto; }
.pwf-pin { display: inline-flex; align-items: center; gap: 4px; font-family: var(--wot-font-mono); font-weight: 700; color: var(--wot-text-2); }
.pwf-pin input { width: 3.4em; padding: 9px 10px; border-radius: 9px; border: 1px solid var(--wot-border); background: var(--wot-bg-0);
  color: var(--wot-text-0); font-family: var(--wot-font-mono); font-size: 16px; font-weight: 800; text-align: center; }
.pwf-pin input:focus { outline: none; border-color: var(--wot-grad-end); }

.pwf-calc-sub { font-size: 11px; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; color: var(--wot-text-3); margin: 14px 0 6px; }
.pwf-calc-sub b { color: var(--wot-text-1); }
.pwf-config { gap: 22px; }

/* ── Step-2 right panel · spacious, collapsible rule sections (redesign) ──── */
.pwf-sec { margin: 0; border: 1px solid var(--wot-border); border-radius: 20px; overflow: hidden;
  background: linear-gradient(180deg, rgba(255,255,255,.025), rgba(255,255,255,.006));
  box-shadow: 0 8px 30px rgba(0,0,0,.28); transition: border-color .2s, box-shadow .2s; }
.pwf-sec.is-done { border-color: rgba(34,197,94,.34); box-shadow: 0 8px 30px rgba(0,0,0,.28), inset 0 0 0 1px rgba(34,197,94,.1); }
.pwf-sec-head { display: flex; align-items: center; gap: 13px; width: 100%; padding: 20px 22px; background: none; border: none; cursor: pointer; text-align: left; }
.pwf-sec-head:hover { background: rgba(255,255,255,.025); }
.pwf-sec-n { flex: 0 0 32px; height: 32px; border-radius: 10px; display: grid; place-items: center; font-weight: 900; font-size: 16px;
  color: #fff; background: var(--wot-bg-2); border: 1px solid var(--wot-border); transition: background .2s, box-shadow .2s; }
.pwf-sec.is-done .pwf-sec-n { background: var(--wot-grad); border-color: transparent; box-shadow: 0 5px 16px rgba(255,31,143,.4); }
.pwf-sec-tt { font-size: 14px; font-weight: 800; letter-spacing: .03em; color: var(--wot-text-1); text-transform: uppercase; }
.pwf-sec.is-done .pwf-sec-tt { color: var(--wot-text-0); }
.pwf-sec-tt i { font-style: normal; text-transform: none; color: var(--wot-text-3); font-weight: 600; }
.pwf-sec-chk { margin-left: auto; width: 24px; height: 24px; border-radius: 50%; display: grid; place-items: center;
  color: #fff; background: var(--wot-bull); opacity: 0; transform: scale(.6); transition: opacity .2s, transform .2s; }
.pwf-sec-chk svg { width: 14px; height: 14px; }
.pwf-sec.is-done .pwf-sec-chk { opacity: 1; transform: scale(1); }
.pwf-sec-tog { flex: 0 0 28px; width: 28px; height: 28px; border-radius: 9px; display: grid; place-items: center; color: var(--wot-text-2); background: var(--wot-bg-2); }
.pwf-sec-tog svg { width: 15px; height: 15px; }
.pwf-sec-head:hover .pwf-sec-tog { color: var(--wot-text-0); }
.pwf-sec-body { padding: 6px 22px 26px; display: flex; flex-direction: column; gap: 18px; }
.pwf-sec.is-collapsed .pwf-sec-body { display: none; }
.pwf-sec-body .pwf-cfg-h:first-child { margin-top: 2px; }
.pwf-sec-body .pwf-cfg-note { margin: 0; font-size: 13px; line-height: 1.5; }

/* Rule 7 — the stacked roll cards */
.pwf-r7-stack { display: flex; flex-direction: column; gap: 14px; }
.pwf-roll-empty { display: flex; flex-direction: column; gap: 12px; }
.pwf-roll-card { border: 1px solid var(--wot-border); border-radius: 14px; padding: 16px; background: var(--wot-bg-2); display: flex; flex-direction: column; gap: 13px; }
.pwf-roll-head { display: flex; align-items: center; justify-content: space-between; }
.pwf-roll-badge { font-size: 12px; font-weight: 800; letter-spacing: .07em; text-transform: uppercase; color: var(--wot-grad-end); }
.pwf-roll-del { width: 30px; height: 30px; border-radius: 9px; border: 1px solid var(--wot-border); background: var(--wot-bg-0); color: var(--wot-text-3); cursor: pointer; display: grid; place-items: center; }
.pwf-roll-del:hover { color: var(--wot-bear); border-color: rgba(239,68,68,.4); }
.pwf-roll-del svg { width: 14px; height: 14px; }
.pwf-roll-hint { margin: 0; }
.pwf-scale-sm .pwf-scale-row { padding: 9px 12px; background: var(--wot-bg-0); }

/* ── Scale-out tiers (Rule 6 + each Rule 7 roll) — one editable row per tranche:
   label + contracts sold · the +% sell input · the sell price + profit. */
.pwf-tiers { display: flex; flex-direction: column; gap: 10px; }
.pwf-tier { display: grid; grid-template-columns: minmax(0,1fr) auto minmax(0,auto); gap: 12px; align-items: center;
  padding: 12px 14px; border-radius: 13px; background: var(--wot-bg-2); border: 1px solid var(--wot-border); }
.pwf-tier.is-runner { background: rgba(212,240,74,.05); border-color: rgba(212,240,74,.24); }
.pwf-tier-lab { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.pwf-tier-lab b { font-size: 14px; font-weight: 800; color: var(--wot-text-0); }
.pwf-tier-ct { font-size: 11px; font-weight: 800; letter-spacing: .02em; color: var(--wot-grad-end); }
.pwf-tier.is-runner .pwf-tier-ct { color: var(--wot-target); }
.pwf-tier-pin { display: inline-flex; align-items: center; gap: 2px; font-family: var(--wot-font-mono); font-weight: 800; color: var(--wot-text-2); }
.pwf-tier-pin input { width: 3.1em; text-align: right; padding: 8px 9px; border-radius: 9px; box-sizing: border-box;
  border: 1px solid var(--wot-border); background: var(--wot-bg-0); color: var(--wot-text-0); font: inherit; font-size: 15px; font-weight: 800; }
.pwf-tier-pin input:focus { outline: none; border-color: var(--wot-grad-end); box-shadow: 0 0 0 3px rgba(255,31,143,.12); }
.pwf-tier-pin i { font-style: normal; }
.pwf-tier-out { display: flex; flex-direction: column; align-items: flex-end; gap: 2px; font-family: var(--wot-font-mono); white-space: nowrap; }
.pwf-tier-at { font-size: 11px; color: var(--wot-text-2); }
.pwf-tier-out b { font-size: 15px; font-weight: 800; }
.pwf-tier-out b.is-up { color: var(--wot-bull); }
.pwf-roll-qty { font-size: 12.5px; color: var(--wot-text-1); }
.pwf-roll-qty b { font-family: var(--wot-font-mono); color: var(--wot-text-0); }
.pwf-addroll { display: inline-flex; align-items: center; justify-content: center; gap: 8px; padding: 14px 16px; border-radius: 13px; cursor: pointer; width: 100%;
  border: 1px dashed var(--wot-border-strong); background: rgba(255,255,255,.025); color: var(--wot-text-1); font-weight: 800; font-size: 14px; }
.pwf-addroll:hover { color: var(--wot-text-0); border-color: var(--wot-grad-end); background: rgba(255,31,143,.06); }
.pwf-addroll svg { width: 16px; height: 16px; }
.pwf-rollsum-all { margin-top: 2px; }

/* ── Step 1 · news grid + prominent index-levels reminder ─────────────────── */
.pwf-newsgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 14px; }
.pwf-newsgrid .v2-news-card { width: 100%; }
/* centered in-app reader dialog */
.pwf-newsdlg { position: fixed; inset: 0; z-index: 1100; display: grid; place-items: center; padding: 24px;
  background: rgba(0,0,0,.72); animation: pwfIn .15s ease; }
.pwf-newsdlg-card { position: relative; width: min(760px, 100%); max-height: 88vh; overflow-y: auto;
  background: var(--wot-bg-1); border: 1px solid var(--wot-border); border-radius: var(--wot-r-lg); box-shadow: 0 24px 80px rgba(0,0,0,.6); }
.pwf-newsdlg-x { position: absolute; top: 12px; right: 12px; z-index: 3; width: 36px; height: 36px; border-radius: 50%;
  border: 1px solid var(--wot-border); background: rgba(10,10,10,.7); color: var(--wot-text-1); cursor: pointer; font-size: 16px; }
.pwf-newsdlg-x:hover { color: var(--wot-text-0); }
.pwf-newsdlg-body { padding: 0 0 8px; }
.pwf-newscard { display: flex; flex-direction: column; border: 1px solid var(--wot-border); border-radius: 12px; overflow: hidden;
  background: var(--wot-bg-1); text-decoration: none; transition: border-color .15s, transform .15s; }
.pwf-newscard:hover { border-color: var(--wot-border-strong); transform: translateY(-2px); }
.pwf-newscard-img { height: 116px; background-size: cover; background-position: center; background-color: var(--wot-bg-2); }
.pwf-newscard-img.is-ph { background: radial-gradient(120% 120% at 30% 20%, rgba(255,107,31,.18), transparent 60%), var(--wot-bg-2); }
.pwf-newscard-title { font-size: 14px; line-height: 1.35; font-weight: 600; color: var(--wot-text-0); padding: 11px 12px 4px; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.pwf-newscard-src { font-size: 11px; color: var(--wot-text-3); padding: 0 12px 11px; margin-top: auto; }

/* Amber, prominent — mark your levels + leadership breadth */
.pwf-align { padding: 18px 20px; border-radius: var(--wot-r-lg); margin-top: 6px;
  background: linear-gradient(135deg, rgba(245,180,0,.18), rgba(245,180,0,.06)); border: 1px solid rgba(245,180,0,.5);
  box-shadow: 0 8px 26px rgba(245,180,0,.08); }
.pwf-align-k { display: block; font-weight: 900; font-size: 16px; letter-spacing: .01em; color: var(--wot-chop); margin-bottom: 8px; }
.pwf-align p { font-size: 14px; color: var(--wot-text-0); line-height: 1.6; margin: 0 0 11px; font-weight: 500; }
.pwf-align p b { color: var(--wot-chop); font-weight: 800; }
.pwf-align-chips { display: flex; gap: 9px; flex-wrap: wrap; }
.pwf-align-chip { font-family: var(--wot-font-mono); font-size: 14px; font-weight: 600; padding: 7px 12px; border-radius: 9px; background: rgba(0,0,0,.28); border: 1px solid rgba(245,180,0,.35); color: var(--wot-text-1); }
.pwf-align-chip.is-up b { color: var(--wot-bull); } .pwf-align-chip.is-down b { color: var(--wot-bear); }
.pwf-breadth { margin-top: 13px; padding-top: 11px; border-top: 1px dashed rgba(245,180,0,.35); }
.pwf-breadth-h { display: block; font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: .03em; color: var(--wot-chop); margin-bottom: 7px; }
.pwf-breadth-row { display: flex; align-items: center; gap: 10px; padding: 5px 0; font-size: 14px; }
.pwf-breadth-lab { flex: 0 0 92px; font-weight: 800; color: var(--wot-text-0); }
.pwf-breadth-score { font-family: var(--wot-font-mono); font-weight: 800; color: var(--wot-text-2); }
.pwf-breadth-score.is-strong { color: var(--wot-bull); }
.pwf-breadth-avg { margin-left: auto; font-family: var(--wot-font-mono); font-weight: 700; }
.pwf-breadth-avg.is-up { color: var(--wot-bull); } .pwf-breadth-avg.is-down { color: var(--wot-bear); }
.pwf-breadth-no { color: var(--wot-text-3); font-size: 12px; margin-left: auto; }
.pwf-align-chip.is-up b { color: var(--wot-bull); } .pwf-align-chip.is-down b { color: var(--wot-bear); }

/* ── Step 2 · profit-potential targets + summaries ───────────────────────── */
.pwf-targets { display: flex; flex-direction: column; gap: 9px; margin-bottom: 4px; }
.pwf-target { display: flex; align-items: center; flex-wrap: wrap; gap: 4px 10px; padding: 12px 14px; border-radius: 12px; }
.pwf-target.is-t1 { background: rgba(34,197,94,.09); border: 1px solid rgba(34,197,94,.32); }
.pwf-target.is-t2 { background: rgba(255,31,143,.09); border: 1px solid rgba(255,31,143,.32); }
.pwf-target-k { flex-basis: 100%; font-weight: 800; font-size: 12px; color: var(--wot-text-0); }
.pwf-target-px { font-family: var(--wot-font-mono); font-size: 14px; color: var(--wot-text-1); }
.pwf-target-px i { font-style: normal; color: var(--wot-text-3); font-size: 11px; }
.pwf-target-opt { color: var(--wot-text-2); font-size: 12px; }
.pwf-target-pnl { margin-left: auto; font-family: var(--wot-font-mono); font-weight: 900; font-size: 20px; }
.pwf-targets-note { font-size: 12px; color: var(--wot-text-2); line-height: 1.5; }

.pwf-rulesum { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 14px 17px; border-radius: 13px; margin-top: 2px;
  background: rgba(34,197,94,.1); font-size: 13px; color: var(--wot-text-1); }
.pwf-rulesum.is-r7 { background: rgba(255,31,143,.1); }
.pwf-rulesum b { font-family: var(--wot-font-mono); font-size: 20px; }

.pwf-summary { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin: 12px 0 2px; }
.pwf-sum-cell { display: flex; flex-direction: column; gap: 3px; padding: 12px 10px; border-radius: 12px; text-align: center; background: var(--wot-bg-2); }
.pwf-sum-cell span { font-size: 11px; color: var(--wot-text-2); }
.pwf-sum-cell b { font-size: 18px; font-family: var(--wot-font-mono); font-weight: 900; }
.pwf-sum-cell.is-risk { background: rgba(239,68,68,.1); } .pwf-sum-cell.is-risk b { color: var(--wot-bear); }
.pwf-sum-cell.is-take { background: rgba(34,197,94,.1); }
.pwf-sum-cell.is-ride { background: rgba(255,31,143,.1); }

/* ── Plan Wizard · target radios + Step 3 (plan & commit) ─────────────────── */
.pwf-target { display: flex; flex-direction: column; gap: 6px; }
.pwf-target-top { display: flex; justify-content: space-between; align-items: center; }
.pwf-radios { display: flex; gap: 6px; }
.pwf-radio { padding: 6px 13px; border-radius: 8px; border: 1px solid var(--wot-border); background: var(--wot-bg-0);
  color: var(--wot-text-2); font-family: var(--wot-font-mono); font-weight: 800; font-size: 13px; cursor: pointer; }
.pwf-radio.is-on { background: var(--wot-grad); color: #fff; border-color: transparent; }
.pwf-grand { display: flex; justify-content: space-between; align-items: center; padding: 12px 16px; border-radius: 12px;
  background: rgba(255,31,143,.1); border: 1px solid rgba(255,31,143,.3); margin-top: 8px; }
.pwf-grand span { font-size: 13px; color: var(--wot-text-1); font-weight: 700; }
.pwf-grand b { font-family: var(--wot-font-mono); font-size: 22px; }
.pwf-grand-lg { padding: 16px 20px; } .pwf-grand-lg b { font-size: 30px; }

.pwf-summary-screen { max-width: 780px; margin: 0 auto; padding: 28px 24px 56px; display: flex; flex-direction: column; gap: 18px; }
.pwf-why { padding: 24px 26px; border-radius: var(--wot-r-lg);
  background: linear-gradient(135deg, rgba(255,107,31,.16), rgba(255,31,143,.1)); border: 1px solid rgba(255,31,143,.4);
  box-shadow: 0 12px 40px rgba(255,31,143,.12); }
.pwf-why-k { display: flex; align-items: center; gap: 8px; font-weight: 900; text-transform: uppercase; letter-spacing: .05em; font-size: 13px; color: var(--wot-grad-end); }
.pwf-why h2 { font-size: clamp(22px, 3vw, 32px); line-height: 1.18; margin: 12px 0 16px; }
.pwf-why h2 span { color: var(--wot-grad-end); }
.pwf-why-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 10px; }
.pwf-why-list li { font-size: 15px; line-height: 1.5; color: var(--wot-text-1); padding-left: 22px; position: relative; }
.pwf-why-list li::before { content: '›'; position: absolute; left: 4px; color: var(--wot-grad-end); font-weight: 900; font-size: 18px; line-height: 1.3; }
.pwf-why-list li b { color: var(--wot-text-0); }
.pwf-why-cutoff { margin-top: 16px; padding: 13px 15px; border-radius: 11px; background: rgba(239,68,68,.16); border: 1px solid rgba(239,68,68,.45); color: var(--wot-text-0); font-size: 14px; }

.pwf-sumcard { padding: 18px 20px; border-radius: var(--wot-r-lg); background: var(--wot-bg-1); border: 1px solid var(--wot-border); }
.pwf-sumcard-head { display: flex; align-items: center; gap: 10px; }
.pwf-sumcard-tk { font-size: 28px; font-weight: 900; }
.pwf-sumcard-side { font-size: 12px; font-weight: 800; padding: 5px 11px; border-radius: 999px; }
.pwf-sumcard-side.is-call { background: rgba(34,197,94,.16); color: var(--wot-bull); }
.pwf-sumcard-side.is-put { background: rgba(239,68,68,.16); color: var(--wot-bear); }
.pwf-sumcard-grade { margin-left: auto; font-size: 12px; font-weight: 800; padding: 5px 11px; border-radius: 999px; }
.pwf-sumcard-grade.is-aplus { background: rgba(34,197,94,.16); color: var(--wot-bull); }
.pwf-sumcard-grade.is-lotto { background: rgba(245,180,0,.16); color: var(--wot-chop); }
.pwf-sumcard-contract { font-family: var(--wot-font-mono); font-size: 18px; margin-top: 10px; color: var(--wot-text-0); }
.pwf-sumcard-trigger { font-size: 13px; color: var(--wot-text-2); margin-top: 5px; }
.pwf-plan-steps { display: flex; flex-direction: column; gap: 10px; }
.pwf-plan-step { padding: 12px 14px; border-radius: 12px; background: var(--wot-bg-2); }
.pwf-plan-step > b { display: block; font-size: 13px; color: var(--wot-grad-end); margin-bottom: 3px; }
.pwf-plan-step span { font-size: 14px; color: var(--wot-text-1); line-height: 1.5; }
.pwf-recap { padding: 18px 20px; border-radius: var(--wot-r-lg); background: var(--wot-bg-1); border: 1px solid var(--wot-border); }
.pwf-recap-h { font-weight: 800; font-size: 13px; text-transform: uppercase; letter-spacing: .04em; color: var(--wot-text-2); margin-bottom: 12px; }
.pwf-recap-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 12px; }
.pwf-recap-rule { display: flex; gap: 10px; align-items: flex-start; }
.pwf-recap-n { flex: 0 0 24px; height: 24px; border-radius: 7px; display: grid; place-items: center; font-weight: 900; color: #fff; background: var(--wot-grad); font-size: 13px; }
.pwf-recap-rule b { display: block; font-size: 13px; } .pwf-recap-rule small { color: var(--wot-text-2); font-size: 12px; }
.pwf-gate-lg { padding: 16px 18px; font-size: 15px; }

/* Plan Wizard · target-price inputs + roll-repeat recap */
.pwf-targets-in { display: flex; flex-direction: column; gap: 6px; }
.pwf-roll-recap { margin-top: 6px; }
.pwf-roll-line { font-family: var(--wot-font-mono); font-size: 14px; color: var(--wot-text-0); padding: 9px 12px; border-radius: 10px; background: var(--wot-bg-2); }
.pwf-roll-line b { color: var(--wot-target); }

/* ══ Weekly trade card — the stunning "Elite Options" read-out ══════════════ */
.v2-plan-grid.is-weekly { grid-template-columns: repeat(auto-fill, minmax(290px, 1fr)); align-items: start; grid-auto-rows: max-content; }
.wk-card { position: relative; overflow: hidden; box-sizing: border-box;
  display: flex; flex-direction: column; justify-content: flex-start; gap: 11px;
  align-self: start; height: fit-content;   /* never let the grid stretch it → no empty top */
  padding: 15px 16px 14px; border-radius: 18px;
  background:
    radial-gradient(120% 70px at 50% 0%, color-mix(in srgb, var(--wk-accent) 13%, transparent), transparent 70%),
    linear-gradient(180deg, #14141a, #0b0b0f);
  border: 1px solid var(--wot-border);
  box-shadow: 0 18px 50px rgba(0,0,0,.5), inset 0 1px 0 rgba(255,255,255,.04);
  transition: transform .16s ease, border-color .16s ease, box-shadow .16s ease; }
.wk-card:hover { transform: translateY(-3px); border-color: color-mix(in srgb, var(--wk-accent) 55%, var(--wot-border));
  box-shadow: 0 26px 64px rgba(0,0,0,.6), 0 0 0 1px color-mix(in srgb, var(--wk-accent) 30%, transparent); }
.wk-card-glow { position: absolute; inset: -28px auto auto -22px; width: 190px; height: 96px; pointer-events: none;
  background: radial-gradient(60% 80% at 30% 0%, color-mix(in srgb, var(--wk-accent) 38%, transparent), transparent 70%); filter: blur(22px); opacity: .5; }
.wk-card > * { position: relative; }
.wk-card-del { position: absolute; top: 12px; right: 12px; z-index: 2; width: 30px; height: 30px; border-radius: 9px;
  border: 1px solid transparent; background: rgba(255,255,255,.04); color: var(--wot-text-3); cursor: pointer; display: grid; place-items: center; opacity: 0; transition: opacity .15s, color .15s; }
.wk-card:hover .wk-card-del { opacity: 1; }
.wk-card-del:hover { color: var(--wot-bear); border-color: rgba(239,68,68,.4); }
.wk-card-del svg { width: 15px; height: 15px; }
.wk-card-brand { display: flex; align-items: center; gap: 10px; }
.wk-card-av { flex: 0 0 38px; width: 38px; height: 38px; border-radius: 11px; display: grid; place-items: center;
  font-weight: 900; font-size: 18px; color: #fff;
  background: linear-gradient(150deg, color-mix(in srgb, var(--wk-accent) 90%, #fff 0%), color-mix(in srgb, var(--wk-accent) 60%, #000));
  box-shadow: 0 6px 18px color-mix(in srgb, var(--wk-accent) 40%, transparent); }
.wk-card-meta { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.wk-card-name { font-size: 12px; color: var(--wot-text-2); font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.wk-card-side { font-size: 10px; font-weight: 900; letter-spacing: .08em; padding: 2px 8px; border-radius: 999px; width: max-content; }
.wk-card-side.is-call { color: var(--wot-bull); background: rgba(34,197,94,.14); }
.wk-card-side.is-put { color: var(--wot-bear); background: rgba(239,68,68,.14); }
.wk-card-grade { margin-left: auto; font-size: 11px; font-weight: 800; padding: 4px 10px; border-radius: 999px; align-self: flex-start; }
.wk-card-grade.is-aplus { color: var(--wot-bull); background: rgba(34,197,94,.16); }
.wk-card-grade.is-lotto { color: var(--wot-chop); background: rgba(245,180,0,.16); }
.wk-card-tk { font-size: 22px; font-weight: 900; letter-spacing: -.01em; line-height: 1.05;
  background: linear-gradient(120deg, color-mix(in srgb, var(--wk-accent) 92%, #fff), var(--wot-grad-end));
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }
.wk-card-contract { font-family: var(--wot-font-mono); font-size: 15px; color: var(--wot-text-1); letter-spacing: .01em; }
.wk-card-contract b { color: var(--wot-text-0); font-weight: 800; }
.wk-card-contract i { font-style: normal; color: var(--wot-text-3); font-size: 12px; padding: 0 1px; }
.wk-card-levels { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; margin: 1px 0 0;
  padding-top: 12px; border-top: 1px solid var(--wot-border); }
.wk-card-tgts { display: flex; flex-direction: column; gap: 6px; }
.wk-tgt { display: inline-flex; align-items: center; gap: 8px; font-family: var(--wot-font-mono); font-weight: 800; color: var(--wot-target); }
.wk-tgt.is-t1 { font-size: 18px; }
.wk-tgt.is-t2 { font-size: 15px; color: color-mix(in srgb, var(--wot-target) 78%, var(--wot-text-2)); }
.wk-tgt svg { width: 17px; height: 17px; color: var(--wot-bull); flex: 0 0 auto; }
/* the T2 marker — a small hollow ring echoing the target crosshair */
.wk-tgt-dot { width: 9px; height: 9px; margin: 0 4px; border-radius: 50%; flex: 0 0 auto;
  border: 2px solid var(--wot-bull); opacity: .85; }
.wk-tgt.is-empty { font-size: 13px; font-weight: 600; color: var(--wot-text-3); }
.wk-card-stop { display: inline-flex; align-items: center; gap: 7px; font-family: var(--wot-font-mono); font-size: 18px; font-weight: 800; color: var(--wot-bear); }
.wk-card-stop svg { width: 17px; height: 17px; color: var(--wot-bear); }
.wk-card-foot { display: flex; align-items: center; justify-content: flex-end; gap: 8px; margin-top: 3px; }
/* "Adopt to a day" picker — a compact native select that makes a daily plan
   card for the chosen weekday from this weekly setup. */
.wk-card-adopt { appearance: none; -webkit-appearance: none; cursor: pointer;
  padding: 7px 10px; border-radius: 9px; font: inherit; font-size: 12px; font-weight: 800; letter-spacing: .02em;
  color: var(--wot-grad-end); background: rgba(255,31,143,.1); border: 1px solid rgba(255,31,143,.32); }
.wk-card-adopt:hover { background: rgba(255,31,143,.18); color: #fff; border-color: var(--wot-grad-end); }
.wk-card-adopt option { color: var(--wot-text-0); background: var(--wot-bg-1); font-weight: 600; }
.wk-card-edit { display: inline-flex; align-items: center; gap: 6px; padding: 7px 13px; border-radius: 9px; cursor: pointer;
  border: 1px solid var(--wot-border); background: rgba(255,255,255,.03); color: var(--wot-text-1); font-weight: 700; font-size: 13px; }
.wk-card-edit:hover { color: var(--wot-text-0); border-color: var(--wot-border-strong); }
.wk-card-edit svg { width: 14px; height: 14px; }
/* compact header: avatar · ($ticker + side + grade on one row, name under) */
.wk-card-head { display: flex; align-items: center; gap: 11px; padding-right: 30px; }
.wk-card-id { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.wk-card-tkrow { display: flex; align-items: center; gap: 8px; }
.wk-card-tkrow .wk-card-tk { flex: 0 0 auto; white-space: nowrap; }   /* symbol never clips */
.wk-card-tkrow .wk-card-side,
.wk-card-tkrow .wk-card-grade { flex: 0 0 auto; align-self: center; margin-left: 0; }
/* read-only Name field in the weekly dialog — desk-supplied, not editable */
.pwf-f input.is-readonly { color: var(--wot-text-2); background: var(--wot-bg-1); cursor: default; opacity: .9; }

/* ══ Weekly builder — full-screen one-step desk (chart left, form right) ════ */
/* Reuses the .pwf-root / .pwf-split / .pwf-config shell from the daily wizard. */
.wkd-shell-title { display: inline-flex; align-items: center; gap: 8px; font-size: 14px; font-weight: 800;
  letter-spacing: .01em; color: var(--wot-text-0); }
.wkd-shell-title svg { width: 16px; height: 16px; color: var(--wot-grad-end); }
/* Weekly dialog body = the top ticker rail + the chart/form split below it.
   The rail mirrors the daily/Levels desk so picking a name fills the chart. */
.wkd-body { display: flex; flex-direction: column; overflow: hidden; }
.wkd-body .pwf-split { flex: 1 1 0; min-height: 0; }
.wkd-rail { flex: 0 0 auto; gap: 14px; align-items: center; flex-wrap: wrap;
  padding: 12px 18px; border-bottom: 1px solid var(--wot-border); background: var(--wot-bg-1); }
.wkd-rail .v2-lv-rail { flex: 1 1 auto; }
.wkd-rail .v2-addname { flex: 0 0 auto; }
/* Underlying-coloured target / stop fields in the weekly form */
.pwf-f.is-up input { border-color: rgba(34,197,94,.3); }
.pwf-f.is-up input:focus { border-color: var(--wot-bull); box-shadow: 0 0 0 3px rgba(34,197,94,.14); }
.pwf-f.is-down input { border-color: rgba(239,68,68,.3); }
.pwf-f.is-down input:focus { border-color: var(--wot-bear); box-shadow: 0 0 0 3px rgba(239,68,68,.14); }
.pwf-f > span i { font-style: normal; color: var(--wot-text-3); font-weight: 400; }
.wkd-live { margin-top: 2px; }
.wkd-live .wk-card { cursor: default; }
.wkd-live .wk-card:hover { transform: none; box-shadow: 0 18px 50px rgba(0,0,0,.5), inset 0 1px 0 rgba(255,255,255,.04); }

/* ── Review — weekly reckoning (week nav, verdict, accountability, rule moves) ── */
.v2-wknav { display: flex; align-items: center; gap: 12px; margin-bottom: 18px; }
.v2-wknav .v2-iconbtn { padding: 8px 11px; }
.v2-wknav .v2-iconbtn[disabled] { opacity: .3; cursor: not-allowed; }
.v2-wknav-mid { display: flex; flex-direction: column; align-items: flex-start; gap: 1px; min-width: 150px; }
.v2-wknav-mid strong { font-size: 17px; font-weight: 800; color: var(--wot-text-0); letter-spacing: -.01em; }
.v2-wknav-mid span { font-size: 12px; }
.v2-wknav-now { margin-left: auto; }

.v2-wkverdict { border-radius: var(--wot-r-md); padding: 18px 20px; background: linear-gradient(180deg, rgba(255,255,255,0.03), rgba(255,255,255,0)); border: 1px solid var(--wot-border); position: relative; overflow: hidden; }
.v2-wkverdict::before { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; background: var(--wot-text-2); }
.v2-wkverdict.is-good::before { background: var(--wot-bull); } .v2-wkverdict.is-caution::before { background: var(--wot-chop); } .v2-wkverdict.is-danger::before { background: var(--wot-bear); }
.v2-wkverdict-score { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.v2-wkverdict-score strong { font-size: 42px; font-weight: 800; line-height: 1; font-variant-numeric: tabular-nums; color: var(--wot-text-0); }
.v2-wkverdict.is-good .v2-wkverdict-score strong { color: var(--wot-bull); } .v2-wkverdict.is-caution .v2-wkverdict-score strong { color: var(--wot-chop); } .v2-wkverdict.is-danger .v2-wkverdict-score strong { color: var(--wot-bear); }
.v2-wkverdict-score > span { font-size: 13px; color: var(--wot-text-1); font-weight: 600; }
.v2-delta { display: inline-flex; align-items: center; gap: 3px; font-size: 12px; font-weight: 700; padding: 2px 8px; border-radius: 999px; background: var(--wot-bg-2); color: var(--wot-text-2); }
.v2-delta .v2-icon { width: 12px; height: 12px; }
.v2-delta.is-up { color: var(--wot-bull); background: rgba(34,197,94,0.14); } .v2-delta.is-up .v2-icon { transform: rotate(-90deg); }
.v2-delta.is-down { color: var(--wot-bear); background: rgba(239,68,68,0.14); } .v2-delta.is-down .v2-icon { transform: rotate(90deg); }
.v2-wkverdict-line { margin: 10px 0 14px; font-size: 14px; font-weight: 600; color: var(--wot-text-1); }
.v2-wkverdict-stats { display: flex; gap: 26px; flex-wrap: wrap; }
.v2-wkverdict-stats > div { display: flex; flex-direction: column; gap: 2px; }
.v2-wkverdict-stats b { font-size: 19px; font-weight: 800; font-variant-numeric: tabular-nums; color: var(--wot-text-0); }
.v2-wkverdict-stats small { font-size: 11px; color: var(--wot-text-2); }
.v2-wkverdict-stats .is-down b { color: var(--wot-bear); }

.v2-acct-list { display: flex; flex-direction: column; gap: 2px; margin-bottom: 12px; }
.v2-acct-row { display: flex; align-items: center; gap: 10px; padding: 9px 11px; border-radius: 9px; background: var(--wot-bg-2); }
.v2-acct-mark { display: inline-flex; align-items: center; justify-content: center; width: 22px; height: 22px; border-radius: 6px; flex: 0 0 auto; background: var(--wot-bg-3); color: var(--wot-text-2); }
.v2-acct-mark .v2-icon { width: 14px; height: 14px; }
.v2-acct-row.is-kept .v2-acct-mark { background: rgba(34,197,94,0.16); color: var(--wot-bull); }
.v2-acct-row.is-broke .v2-acct-mark { background: rgba(239,68,68,0.16); color: var(--wot-bear); }
.v2-acct-rule { flex: 1 1 auto; font-size: 13px; font-weight: 600; color: var(--wot-text-1); }
.v2-acct-rule b { color: var(--wot-text-2); }
.v2-acct-tail { font-size: 12px; font-weight: 600; color: var(--wot-text-2); }
.v2-acct-row.is-kept .v2-acct-tail { color: var(--wot-bull); } .v2-acct-row.is-broke .v2-acct-tail { color: var(--wot-bear); }
.v2-acct-verdict { margin: 0; font-size: 13px; font-weight: 600; color: var(--wot-text-1); }

.v2-wkday { border: 1px solid var(--wot-border); border-radius: 10px; margin-bottom: 7px; overflow: hidden; background: var(--wot-bg-1); }
.v2-wkday.is-open { border-color: rgba(255,255,255,0.16); }
.v2-wkday-head { width: 100%; display: flex; align-items: center; gap: 11px; padding: 11px 13px; background: none; border: none; cursor: pointer; text-align: left; }
.v2-wkday-head:hover { background: var(--wot-bg-2); }
.v2-wkday-dot { width: 11px; height: 11px; border-radius: 50%; flex: 0 0 auto; background: var(--wot-text-2); }
.v2-wkday-dot.is-green { background: var(--wot-bull); } .v2-wkday-dot.is-yellow { background: var(--wot-chop); } .v2-wkday-dot.is-red { background: var(--wot-bear); } .v2-wkday-dot.is-rest { background: var(--wot-bg-3); }
.v2-wkday-name { font-size: 13px; font-weight: 700; color: var(--wot-text-0); flex: 0 0 auto; min-width: 72px; }
.v2-wkday-name small { font-weight: 500; }
.v2-wkday-meta { flex: 1 1 auto; font-size: 12px; color: var(--wot-text-2); }
.v2-wkday-pct { font-size: 14px; font-weight: 800; font-variant-numeric: tabular-nums; color: var(--wot-text-2); }
.v2-wkday-pct.is-green { color: var(--wot-bull); } .v2-wkday-pct.is-yellow { color: var(--wot-chop); } .v2-wkday-pct.is-red { color: var(--wot-bear); }
.v2-wkday-caret { display: inline-flex; color: var(--wot-text-2); transition: transform .18s; transform: rotate(90deg); }
.v2-wkday-caret .v2-icon { width: 14px; height: 14px; }
.v2-wkday-caret.is-open { transform: rotate(-90deg); }
.v2-daydetail { padding: 4px 13px 13px; border-top: 1px solid var(--wot-border); overflow-x: auto; }

.v2-rulemoves { display: flex; flex-direction: column; gap: 4px; }
.v2-rulemove { display: flex; align-items: center; gap: 11px; padding: 8px 2px; border-bottom: 1px solid var(--wot-border); }
.v2-rulemove:last-child { border-bottom: none; }
.v2-rulemove-rule { flex: 1 1 auto; min-width: 120px; font-size: 13px; font-weight: 600; color: var(--wot-text-1); }
.v2-rulemove-rule b { color: var(--wot-text-2); }
.v2-rulemove-bar { flex: 0 0 96px; height: 7px; border-radius: 999px; background: var(--wot-bg-3); overflow: hidden; }
.v2-rulemove-bar i { display: block; height: 100%; border-radius: 999px; background: var(--wot-text-2); }
.v2-rulemove.is-good .v2-rulemove-bar i { background: var(--wot-bull); } .v2-rulemove.is-caution .v2-rulemove-bar i { background: var(--wot-chop); } .v2-rulemove.is-danger .v2-rulemove-bar i { background: var(--wot-bear); }
.v2-rulemove-pct { flex: 0 0 42px; text-align: right; font-size: 13px; font-weight: 800; font-variant-numeric: tabular-nums; color: var(--wot-text-1); }
.v2-rulemove-up, .v2-rulemove-down, .v2-rulemove-flat, .v2-rulemove-new { flex: 0 0 46px; text-align: right; font-size: 12px; font-weight: 800; font-variant-numeric: tabular-nums; display: inline-flex; align-items: center; justify-content: flex-end; gap: 2px; }
.v2-rulemove-up { color: var(--wot-bull); } .v2-rulemove-up .v2-icon { width: 11px; height: 11px; transform: rotate(-90deg); }
.v2-rulemove-down { color: var(--wot-bear); } .v2-rulemove-down .v2-icon { width: 11px; height: 11px; transform: rotate(90deg); }
.v2-rulemove-flat { color: var(--wot-text-2); }
.v2-rulemove-new { color: #b6a5ff; font-size: 11px; }
.v2-rulemove-tested { flex: 0 0 64px; text-align: right; font-size: 11px; color: var(--wot-text-2); }
.v2-rulemove-note { margin-top: 10px; }
@media (max-width: 560px) { .v2-rulemove-tested { display: none; } .v2-rulemove-bar { flex-basis: 64px; } }

.v2-commit-fwd { margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--wot-border); }
.v2-commit-k { font-size: 14px; font-weight: 700; color: var(--wot-text-0); margin: 0 0 4px; }
.v2-commit-fwd .v2-rev-focus-grid { margin-top: 11px; }

/* ── Log — weekly rail that connects to Review ── */
.v2-weekrail-head { display: flex; flex-direction: column; gap: 2px; margin-bottom: 12px; }
.v2-weekrail-head strong { font-size: 14px; font-weight: 800; color: var(--wot-text-0); }
.v2-weekrow { display: flex; align-items: center; gap: 11px; padding: 11px 13px; border: 1px solid var(--wot-border); border-radius: 10px; margin-bottom: 7px; text-decoration: none; background: var(--wot-bg-1); transition: border-color .15s, transform .12s; }
.v2-weekrow:last-child { margin-bottom: 0; }
.v2-weekrow:hover { border-color: rgba(255,255,255,0.2); transform: translateX(2px); }
.v2-weekrow-dot { width: 11px; height: 11px; border-radius: 50%; flex: 0 0 auto; background: var(--wot-text-2); }
.v2-weekrow-dot.is-green { background: var(--wot-bull); } .v2-weekrow-dot.is-yellow { background: var(--wot-chop); } .v2-weekrow-dot.is-red { background: var(--wot-bear); } .v2-weekrow-dot.is-rest { background: var(--wot-bg-3); }
.v2-weekrow-label { font-size: 13px; font-weight: 700; color: var(--wot-text-0); flex: 0 0 auto; min-width: 116px; }
.v2-weekrow-now { color: var(--wot-grad-end); font-weight: 800; }
.v2-weekrow-meta { flex: 1 1 auto; font-size: 12px; color: var(--wot-text-2); }
.v2-weekrow-pct { font-size: 14px; font-weight: 800; font-variant-numeric: tabular-nums; color: var(--wot-text-2); }
.v2-weekrow-pct.is-green { color: var(--wot-bull); } .v2-weekrow-pct.is-yellow { color: var(--wot-chop); } .v2-weekrow-pct.is-red { color: var(--wot-bear); }
.v2-weekrow-go { display: inline-flex; align-items: center; gap: 3px; font-size: 12px; font-weight: 700; color: var(--wot-text-1); flex: 0 0 auto; }
.v2-weekrow-go .v2-icon { width: 13px; height: 13px; }
.v2-day-review { margin-top: 14px; }
@media (max-width: 560px) { .v2-weekrow-go span { display: none; } .v2-weekrow-label { min-width: 0; } }

/* ══ Import a day · multi-leg entry · daily reckoning (v0.22) ═══════════════ */

/* ── CSV import + grade sheet ─────────────────────────────────────────────── */
.ci-root { position: fixed; inset: 0; z-index: 3200; display: flex; align-items: center; justify-content: center; padding: 16px;
  background: rgba(0,0,0,.66); backdrop-filter: blur(6px); animation: ewIn .2s ease; }
.ci-root.is-out { animation: ewOut .2s ease forwards; }
.ci-modal { width: min(640px, 100%); max-height: calc(100vh - 32px); 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-card); overflow: hidden; }
.ci-head { display: flex; align-items: center; gap: 12px; padding: 16px 18px; border-bottom: 1px solid var(--wot-border); }
.ci-head-l { display: flex; align-items: center; gap: 12px; min-width: 0; }
.ci-head-ic { width: 38px; height: 38px; flex: 0 0 auto; border-radius: 11px; display: flex; align-items: center; justify-content: center;
  background: var(--wot-grad); color: #fff; box-shadow: var(--wot-grad-glow); }
.ci-head-title { font-size: 16px; font-weight: 800; }
.ci-head-sub { font-size: 12px; color: var(--wot-text-2); margin-top: 1px; }
.ci-summary { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; padding: 14px 18px 0; }
.ci-sum-stat { display: flex; flex-direction: column; align-items: center; padding: 11px; border-radius: 12px; background: var(--wot-bg-0); border: 1px solid var(--wot-border); }
.ci-sum-stat b { font-size: 20px; font-weight: 800; font-variant-numeric: tabular-nums; }
.ci-sum-stat small { font-size: 10px; color: var(--wot-text-2); text-transform: uppercase; letter-spacing: .04em; margin-top: 2px; }
.ci-note { margin: 12px 18px 0; padding: 10px 12px; border-radius: 11px; font-size: 12.5px; line-height: 1.5; color: var(--wot-text-1);
  background: color-mix(in srgb, var(--wot-grad-start) 7%, var(--wot-bg-0)); border: 1px solid var(--wot-border); display: flex; gap: 8px; }
.ci-note .v2-icon { flex: 0 0 auto; color: var(--wot-grad-start); margin-top: 1px; }
.ci-list { padding: 14px 18px; overflow-y: auto; display: flex; flex-direction: column; gap: 12px; }
.ci-trade { padding: 13px 14px; border-radius: 14px; border: 1px solid var(--wot-border); background: var(--wot-bg-2); display: flex; flex-direction: column; gap: 9px; }
.ci-trade-top { display: flex; align-items: center; gap: 8px; }
.ci-trade-top strong { font-size: 15px; }
.ci-trade-pnl { margin-left: auto; font-weight: 800; font-variant-numeric: tabular-nums; }
.ci-trade-pnl small { font-weight: 600; opacity: .8; }
.ci-trade-legs { font-size: 12px; color: var(--wot-text-2); }
.ci-attr { display: flex; flex-wrap: wrap; gap: 6px; }
.ci-attr-btn { padding: 5px 11px; border-radius: 999px; border: 1px solid var(--wot-border); background: var(--wot-bg-0); color: var(--wot-text-2);
  font: inherit; font-size: 12px; font-weight: 700; cursor: pointer; transition: .15s; }
.ci-attr-btn:hover { border-color: var(--wot-border-strong); color: var(--wot-text-0); }
.ci-attr-btn.is-on { border-color: var(--wot-grad-end); background: color-mix(in srgb, var(--wot-grad-end) 14%, transparent); color: var(--wot-text-0); }
.ci-grade-toggle { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 8px 11px; border-radius: 10px;
  border: 1px dashed var(--wot-border-strong); background: var(--wot-bg-0); color: var(--wot-text-1); font: inherit; font-size: 12.5px; font-weight: 700; cursor: pointer; }
.ci-grade-toggle:hover { color: var(--wot-text-0); }
.ci-grade-toggle .v2-icon { transition: transform .2s; }
.ci-trade.is-grading .ci-grade-toggle .v2-icon { transform: rotate(180deg); }
.ci-gate { display: none; flex-direction: column; gap: 6px; padding-top: 2px; }
.ci-trade.is-grading .ci-gate { display: flex; }
.ci-gaterow { display: flex; align-items: center; gap: 9px; }
.ci-gate-n { width: 20px; height: 20px; flex: 0 0 auto; border-radius: 6px; display: flex; align-items: center; justify-content: center;
  font-size: 11px; font-weight: 800; background: var(--wot-bg-0); color: var(--wot-text-2); }
.ci-gate-t { flex: 1; min-width: 0; font-size: 13px; font-weight: 600; }
.ci-yn { display: flex; gap: 6px; flex: 0 0 auto; }
.ci-yn-btn { padding: 5px 13px; border: 1px solid var(--wot-border); border-radius: 8px; background: var(--wot-bg-0); color: var(--wot-text-2); font: inherit; font-size: 12px; font-weight: 700; cursor: pointer; transition: .12s; }
.ci-yn-btn.is-yes.is-on { border-color: var(--wot-bull); background: rgba(34,197,94,0.16); color: var(--wot-bull); }
.ci-yn-btn.is-no.is-on { border-color: var(--wot-bear); background: rgba(239,68,68,0.16); color: var(--wot-bear); }
.ci-foot { display: flex; align-items: center; gap: 10px; padding: 13px 18px; border-top: 1px solid var(--wot-border); }
.ci-btn-ghost { padding: 10px 16px; border-radius: 10px; border: 1px solid var(--wot-border-strong); background: transparent; color: var(--wot-text-1); font: inherit; font-weight: 700; cursor: pointer; }
.ci-btn-ghost:hover { color: var(--wot-text-0); border-color: rgba(255,255,255,.3); }
.ci-msg { width: min(420px, 100%); padding: 26px; text-align: center; gap: 14px; display: flex; flex-direction: column; align-items: center; position: relative; }
.ci-msg .ew-x { position: absolute; top: 12px; right: 12px; }
.ci-msg-ic { width: 46px; height: 46px; border-radius: 14px; display: flex; align-items: center; justify-content: center; background: color-mix(in srgb, var(--wot-chop) 18%, transparent); color: var(--wot-chop); }
.ci-msg p { margin: 0; color: var(--wot-text-1); font-size: 14px; line-height: 1.5; white-space: pre-wrap; }
@media (max-width: 560px) { .ci-gaterow { flex-wrap: wrap; } .ci-gate-t { flex-basis: calc(100% - 90px); } }

/* ── Log: import button, legs row, ungraded trade ─────────────────────────── */
.lg-importbtn .v2-icon { width: 15px; height: 15px; }
.lg-trade-legs { display: flex; align-items: center; gap: 6px; font-size: 12px; color: var(--wot-text-2); font-variant-numeric: tabular-nums; }
.lg-trade-legs .v2-icon { width: 13px; height: 13px; opacity: .7; }
.lg-trade.is-ungraded { border-style: dashed; border-color: var(--wot-border-strong); }
.lg-trade-verdict.is-na { color: var(--wot-text-2); }
.lg-trade-gradehint { margin-left: 8px; font-size: 11px; font-weight: 600; color: var(--wot-text-2); font-style: italic; align-self: center; }

/* ── Log day sheet: the reckoning reflection ──────────────────────────────── */
.lg-day-reflect { display: flex; flex-direction: column; gap: 8px; margin: 10px 0 4px; }
.lg-day-reflect-row { display: flex; flex-direction: column; gap: 2px; padding: 8px 11px; border-radius: 10px; background: var(--wot-bg-0); }
.lg-day-reflect-k { font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: .04em; color: var(--wot-text-2); display: inline-flex; align-items: center; gap: 5px; }
.lg-day-reflect-k.is-up { color: var(--wot-bull); } .lg-day-reflect-k.is-down { color: var(--wot-bear); }
.lg-day-reflect-k .v2-icon { width: 13px; height: 13px; }
.lg-day-reflect-v { font-size: 13px; color: var(--wot-text-1); }

/* ── Log wizard: multi-leg fills editor ───────────────────────────────────── */
/* Wider than the shared edge-wizard modal so the legs grid + money rows fit. */
.lw-root .ew-modal { width: min(840px, 100%); }
.lw-leg-add { display: flex; gap: 12px; }
.lw-optmeta { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.lw-legs { display: flex; flex-direction: column; gap: 8px; }
.lw-leg { display: grid; grid-template-columns: auto 1fr 58px 54px 54px 30px; gap: 7px; align-items: end; }
.lw-leg-side { height: 36px; flex: 0 0 auto; }
.lw-leg-side button { font-size: 12px; padding: 6px 11px; white-space: nowrap; }
.lw-leg-f { display: flex; flex-direction: column; gap: 3px; }
.lw-leg-f span { font-size: 10px; font-weight: 700; color: var(--wot-text-2); text-transform: uppercase; letter-spacing: .03em; }
.lw-leg-f input { padding: 8px 8px; border: 1px solid var(--wot-border); border-radius: 8px; background: var(--wot-bg-1); color: var(--wot-text-0); font: inherit; font-size: 13px; width: 100%; box-sizing: border-box; }
.lw-leg-f input:focus { outline: none; border-color: var(--wot-grad-end); }
.lw-leg-del { height: 36px; width: 30px; border: 1px solid var(--wot-border); border-radius: 8px; background: var(--wot-bg-1); color: var(--wot-text-2); cursor: pointer; display: flex; align-items: center; justify-content: center; }
.lw-leg-del:hover { color: var(--wot-bear); border-color: var(--wot-bear); }
.lw-leg-del .v2-icon { width: 14px; height: 14px; }
.lw-leg-sum { display: flex; flex-direction: column; gap: 3px; padding: 11px 13px; border-radius: 12px; background: var(--wot-bg-0); border: 1px solid var(--wot-border); }
.lw-leg-sum-line { font-size: 12px; color: var(--wot-text-2); }
.lw-leg-sum-money { font-size: 14px; font-weight: 700; font-variant-numeric: tabular-nums; }
.lw-leg-sum-money i { font-style: normal; font-size: 11px; color: var(--wot-text-2); text-transform: uppercase; letter-spacing: .03em; }
@media (max-width: 560px) {
  .lw-leg { grid-template-columns: 1fr 1fr 30px; }
  .lw-leg-side { grid-column: 1 / -1; }
  .lw-leg-del { grid-column: 3; }
}

/* ── Daily reckoning: reflect stage (plan-vs-reality + repeat/kill) ────────── */
.dbf-chips { display: flex; gap: 8px; flex-wrap: wrap; }
.dbf-chip { padding: 8px 15px; border-radius: 999px; border: 1px solid var(--wot-border); background: var(--wot-bg-2); color: var(--wot-text-1); font: inherit; font-size: 13px; font-weight: 700; cursor: pointer; transition: .15s; }
.dbf-chip:hover { border-color: var(--wot-border-strong); }
.dbf-chip.is-on { border-color: var(--wot-grad-end); background: color-mix(in srgb, var(--wot-grad-end) 16%, transparent); color: var(--wot-text-0); }
.dbf-reflect-block { display: flex; flex-direction: column; gap: 8px; margin-top: 14px; }
.dbf-reflect-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.dbf-reflect-grid .dbf-reflect-block { margin-top: 0; }
@media (max-width: 560px) { .dbf-reflect-grid { grid-template-columns: 1fr; } }

/* ════════════════════════════════════════════════════════════════════════
   THE CLIMB — split: bold manifesto (left) + zoomable mountain stage (right)
   (everest.js / views/everest.js). TradeByFire-styled. No snow.
   ════════════════════════════════════════════════════════════════════════ */
.ev-open { overflow: hidden; }
.ev-root { position: fixed; inset: 0; z-index: 9600; background: var(--wot-bg-0, #0a0a0a);
  opacity: 0; transition: opacity .3s ease; }
.ev-root.is-in { opacity: 1; } .ev-root.is-out { opacity: 0; }
/* No default focus box on tap/click (the big blue outline). Keyboard users still
   get a subtle ring via :focus-visible. */
.ev-root :focus { outline: none; }
.ev-root :focus:not(:focus-visible) { outline: none; box-shadow: none; }
.ev-root [tabindex]:focus-visible, .ev-root button:focus-visible { outline: 2px solid rgba(255,31,143,.7); outline-offset: 2px; border-radius: 8px; }
.ev-mk:focus, .ev-mk:focus-visible { outline: none; }
.ev-x { position: absolute; top: 16px; right: 18px; z-index: 20; width: 42px; height: 42px; border-radius: 50%;
  border: 1px solid var(--wot-border); background: rgba(20,20,26,.6); color: #fff; font-size: 16px; cursor: pointer;
  backdrop-filter: blur(8px); transition: background .15s; }
.ev-x:hover { background: rgba(255,31,143,.25); }
.ev-grid { position: absolute; inset: 0; display: grid; grid-template-columns: var(--ev-side, 340px) 8px 1fr; }
.ev-split { position: relative; cursor: col-resize; background: var(--wot-bg-1, #111114); border-left: 1px solid var(--wot-border); border-right: 1px solid var(--wot-border); display: grid; place-items: center; }
.ev-split span { width: 4px; height: 44px; border-radius: 999px; background: rgba(255,255,255,.18); transition: background .15s, height .15s; }
.ev-split:hover span { background: linear-gradient(180deg,#FF6B1F,#FF1F8F); height: 70px; }

/* ── LEFT · the manifesto, bold + prominent ── */
.ev-side { min-height: 0; overflow-y: auto; padding: clamp(26px,5vh,60px) clamp(22px,2.6vw,48px) 40px;
  display: flex; flex-direction: column; gap: 20px; border-right: 1px solid var(--wot-border);
  background: linear-gradient(180deg, #111016, #0a0a0a); }
.ev-side::-webkit-scrollbar { width: 8px; } .ev-side::-webkit-scrollbar-thumb { background: rgba(255,255,255,.14); border-radius: 8px; }
.ev-eyebrow { font-size: 12px; font-weight: 800; letter-spacing: .22em; text-transform: uppercase; margin: 0;
  background: linear-gradient(90deg,#FF6B1F,#FF1F8F); -webkit-background-clip: text; background-clip: text; color: transparent; }
.ev-headline { font-size: clamp(30px, 3.5vw, 50px); font-weight: 900; line-height: 1.03; letter-spacing: -.015em; color: #fff; margin: -2px 0 0; }
.ev-headline .ev-grad { background: linear-gradient(100deg,#fff 10%,#FF1F8F); -webkit-background-clip: text; background-clip: text; color: transparent; }
.ev-manifesto { font-size: clamp(15px, 1.35vw, 18px); line-height: 1.62; color: var(--wot-text-1,#c9c9d1); font-weight: 500; margin: 0; }
.ev-manifesto b { color: #fff; font-weight: 800; }

.ev-where { border: 1px solid var(--wot-border); border-radius: 16px; padding: 15px 17px; background: var(--wot-bg-2,#16161b); }
.ev-where-l { display: block; font-size: 13px; font-weight: 800; color: #fff; margin-bottom: 12px; }
.ev-slider { -webkit-appearance: none; appearance: none; width: 100%; height: 8px; border-radius: 999px; outline: none;
  background: linear-gradient(90deg,#FF6B1F,#FF1F8F) 0/var(--ev-fill,8%) no-repeat, rgba(255,255,255,.12); }
.ev-slider::-webkit-slider-thumb { -webkit-appearance:none; width:26px; height:26px; border-radius:50%;
  background: radial-gradient(circle at 35% 30%,#fff,#ffd0a8 40%,#FF6B1F 75%); border:2px solid #fff; cursor:grab;
  box-shadow:0 0 0 6px rgba(255,107,31,.18),0 6px 18px rgba(0,0,0,.5); }
.ev-slider::-moz-range-thumb { width:24px; height:24px; border-radius:50%; border:2px solid #fff; background:radial-gradient(circle at 35% 30%,#fff,#FF6B1F 75%); cursor:grab; }
.ev-where-read { margin-top: 12px; display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.ev-where-read b { font-size: 15px; font-weight: 900; color: #fff; }
.ev-where-read span { font-size: 12px; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; color: #FFC061; }

.ev-routehead { font-size: 17px; font-weight: 900; color: #fff; margin: 4px 0 -6px; }
.ev-routehead span { color: var(--wot-text-2,#7a7a85); font-weight: 700; }

/* summit hall — prominent, bold */
.ev-hall { border: 1px solid rgba(255,200,90,.34); border-radius: 18px; padding: 16px 18px; cursor: pointer;
  background: linear-gradient(180deg, rgba(255,107,31,.16), rgba(20,16,22,.55)); transition: border-color .18s; }
.ev-hall:hover, .ev-hall.is-active { border-color: rgba(255,200,90,.7); }
.ev-hall-head { font-size: 15.5px; font-weight: 900; color: #fff; display: flex; align-items: center; gap: 8px; }
.ev-hall-tri { color: #FFC061; }
.ev-hall-names { display: flex; flex-wrap: wrap; gap: 7px; margin: 13px 0 11px; }
.ev-name { font-size: 13px; font-weight: 800; color: #fff; padding: 6px 13px; border-radius: 999px; cursor: pointer;
  background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.14); transition: all .15s; }
.ev-name:hover, .ev-name.is-active { background: linear-gradient(135deg,#FF6B1F,#FF1F8F); border-color: transparent; transform: translateY(-1px); }
.ev-hall-toll { font-size: 14px; line-height: 1.55; color: #fff; font-weight: 600; margin: 0; }

/* the three great camps */
.ev-camps { display: flex; flex-direction: column; gap: 10px; }
.ev-camp { border: 1px solid var(--wot-border); border-radius: 16px; padding: 12px 14px; background: var(--wot-bg-1,#111114); transition: border-color .18s, background .18s; }
.ev-camp.is-reached { border-color: rgba(255,107,31,.34); }
.ev-camp.is-here { border-color: rgba(255,31,143,.7); background: rgba(255,31,143,.08); }
.ev-camp-head { display: flex; align-items: flex-start; gap: 12px; width: 100%; text-align: left; background: none; border: 0; cursor: pointer; padding: 0; }
.ev-camp-n { flex: none; width: 28px; height: 28px; border-radius: 50%; display: grid; place-items: center; font-size: 14px; font-weight: 900; color: #fff; background: rgba(255,255,255,.12); }
.ev-camp.is-reached .ev-camp-n { background: linear-gradient(135deg,#FF6B1F,#FF1F8F); }
.ev-camp-t b { display: block; font-size: 15px; font-weight: 900; color: #fff; line-height: 1.2; }
.ev-camp-t small { display: block; font-size: 12px; line-height: 1.45; color: var(--wot-text-1,#c9c9d1); margin-top: 3px; }
.ev-rules { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; padding-left: 40px; }
.ev-rule { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 700; cursor: pointer; color: var(--wot-text-2,#7a7a85);
  padding: 4px 10px; border-radius: 999px; background: rgba(255,255,255,.04); border: 1px solid var(--wot-border); transition: all .15s; }
.ev-rule span { width: 7px; height: 7px; border-radius: 50%; background: rgba(255,255,255,.25); }
.ev-rule.is-got { color: #fff; border-color: rgba(255,107,31,.4); } .ev-rule.is-got span { background: linear-gradient(135deg,#FF6B1F,#FF1F8F); }
.ev-rule:hover, .ev-rule.is-active { border-color: #fff; color: #fff; }

.ev-side-foot { display: flex; flex-direction: column; gap: 14px; margin-top: 4px; }
.ev-survived { display: flex; align-items: center; gap: 14px; }
.ev-survived-n { font-size: 46px; font-weight: 900; line-height: 1; background: linear-gradient(135deg,#FF6B1F,#FF1F8F); -webkit-background-clip: text; background-clip: text; color: transparent; }
.ev-survived-l { font-size: 12.5px; font-weight: 700; line-height: 1.45; color: var(--wot-text-1,#c9c9d1); }
.ev-enter { padding: 15px 22px; border: none; border-radius: 14px; cursor: pointer; background: linear-gradient(135deg,#FF6B1F,#FF1F8F); color: #fff; font-size: 15px; font-weight: 800; box-shadow: 0 12px 32px rgba(255,31,143,.3); transition: transform .15s, box-shadow .15s; }
.ev-enter:hover { transform: translateY(-2px); box-shadow: 0 18px 40px rgba(255,31,143,.45); }
.ev-foot { font-size: 12.5px; line-height: 1.55; color: var(--wot-text-2,#7a7a85); font-style: italic; margin: 0; }

/* ── RIGHT · the mountain stage ── */
.ev-stage { position: relative; min-width: 0; display: flex; flex-direction: column; background: radial-gradient(120% 80% at 68% 4%, #15131c, #0a0a0a); }
.ev-stage-bar { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 14px 18px; z-index: 6; }
.ev-stage-hint { font-size: 12.5px; font-weight: 600; color: var(--wot-text-2,#7a7a85); }
.ev-zoom { display: inline-flex; gap: 6px; }
.ev-zoom-b { width: 38px; height: 38px; border-radius: 11px; border: 1px solid var(--wot-border); background: rgba(20,20,26,.7); color: #fff; font-size: 18px; font-weight: 700; cursor: pointer; transition: all .15s; }
.ev-zoom-b:hover { border-color: rgba(255,107,31,.5); background: rgba(255,107,31,.12); }
.ev-stage-view { position: relative; flex: 1; min-height: 0; overflow: hidden; touch-action: none; cursor: grab; }
.ev-stage-zoom { position: absolute; inset: 0; transform-origin: center center; transition: transform .1s ease-out; }
.ev-scene, .ev-scene .ev-svg { width: 100%; height: 100%; display: block; }

/* the floating point-of-interaction card */
.ev-poi { position: absolute; left: 16px; bottom: 16px; width: min(360px, 78%); z-index: 6; }
.ev-poi-inner { position: relative; border: 1px solid var(--wot-border); border-radius: 16px; padding: 14px 16px; background: rgba(14,14,18,.9); backdrop-filter: blur(12px); box-shadow: 0 18px 50px rgba(0,0,0,.55); animation: evPoi .24s ease both; }
@keyframes evPoi { from { opacity: 0; transform: translateY(8px) scale(.98); } to { opacity: 1; transform: none; } }
/* caret pointing at the marker */
.ev-poi-inner::after { content: ''; position: absolute; left: var(--ev-caret, 50%); bottom: -7px; transform: translateX(-50%) rotate(45deg);
  width: 12px; height: 12px; background: rgba(14,14,18,.9); border-right: 1px solid var(--wot-border); border-bottom: 1px solid var(--wot-border); }
.ev-poi.is-below .ev-poi-inner::after { bottom: auto; top: -7px; border: 0; border-left: 1px solid var(--wot-border); border-top: 1px solid var(--wot-border); }
.ev-poi-eyebrow { font-size: 10.5px; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; color: #FFC061; }
.ev-poi-legend .ev-poi-eyebrow { color: #FF8FB0; }
.ev-poi-title { display: block; font-size: 18px; font-weight: 900; color: #fff; margin: 5px 0 6px; }
.ev-poi-text { font-size: 13.5px; line-height: 1.55; color: var(--wot-text-1,#c9c9d1); margin: 0; }

/* ── SVG chart markers + motion ── */
.ev-svg text { font-family: var(--wot-font, sans-serif); }
.ev-mk { cursor: pointer; }
.ev-mk:hover, .ev-mk.is-selected { filter: drop-shadow(0 0 8px rgba(255,107,31,.9)); }
.ev-campnum { font-weight: 900; font-size: 12px; fill: #fff; text-anchor: middle; dominant-baseline: middle; }
.ev-megaring { animation: evRingPulse 2.4s ease-in-out infinite; transform-box: fill-box; transform-origin: center; }
@keyframes evRingPulse { 0%,100% { opacity:.95; transform: scale(1);} 50% { opacity:.45; transform: scale(1.12);} }
.ev-legend { animation: evLegendGlow 4s ease-in-out infinite; }
@keyframes evLegendGlow { 0%,100% { opacity:.7; } 50% { opacity:1; } }
.ev-flag-lit { animation: evFlagLit 3s ease-in-out infinite; }
@keyframes evFlagLit { 0%,100% { opacity:.85; } 50% { opacity:1; } }
.ev-climber-aura { fill: rgba(255,107,31,.3); animation: evPulse 2.4s ease-in-out infinite; }
.ev-mk-you .ev-climber-aura { fill: rgba(63,224,255,.34); }
.ev-mk-you .ev-megaring { animation: evRingPulse 2s ease-in-out infinite; }
@keyframes evPulse { 0%,100% { opacity:.55; transform: scale(1);} 50% { opacity:.18; transform: scale(1.12);} }
.ev-mk-you .ev-climber-aura { transform-box: fill-box; transform-origin: center; }
.ev-progress { opacity: .92; }
.ev-summitflag { transform-box: fill-box; transform-origin: left center; animation: evWave 3.4s ease-in-out infinite; }
@keyframes evWave { 0%,100% { transform: skewX(0); } 50% { transform: skewX(-8deg); } }
.ev-sky-k { font-weight: 800; font-size: 12px; letter-spacing: .14em; fill: rgba(255,255,255,.55); }
.ev-sky-s { font-weight: 600; font-size: 11px; fill: rgba(255,255,255,.34); }
.ev-star { animation: evTwinkle ease-in-out infinite alternate; }
@keyframes evTwinkle { from { opacity:.15; } to { opacity:.9; } }

/* responsive: stack the manifesto over a shorter stage */
@media (max-width: 880px) {
  .ev-grid { grid-template-columns: 1fr !important; grid-template-rows: auto 1fr; }
  .ev-split { display: none; }
  .ev-side { border-right: none; border-bottom: 1px solid var(--wot-border); max-height: 46vh; }
  .ev-stage { min-height: 50vh; }
}
@media (prefers-reduced-motion: reduce) {
  .ev-scene .ev-svg, .ev-progress, .ev-climber-aura, .ev-star, .ev-megaring, .ev-legend, .ev-flag-lit, .ev-poi-inner { animation: none; }
}

/* ── Vision tab mini-mountain ── */
.ev-mini { position: relative; margin: 26px 0; border-radius: 22px; overflow: hidden;
  border: 1px solid var(--wot-border); background: #0a0612; cursor: pointer;
  box-shadow: 0 20px 50px rgba(0,0,0,.4); transition: transform .2s, box-shadow .2s; }
.ev-mini:hover { transform: translateY(-2px); box-shadow: 0 26px 60px rgba(255,31,143,.16); }
.ev-mini .ev-svg { width: 100%; height: clamp(200px, 34vw, 320px); display: block; }
.ev-mini-veil { position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(0deg, rgba(10,6,18,.92) 4%, rgba(10,6,18,.2) 38%, rgba(10,6,18,0) 60%); }
.ev-mini-ui { position: absolute; inset: 0; display: flex; flex-direction: column; justify-content: flex-end;
  padding: clamp(16px, 3vw, 28px); }
.ev-mini-k { font-size: 11px; font-weight: 800; letter-spacing: .2em; text-transform: uppercase;
  color: transparent; background: linear-gradient(90deg, #FF6B1F, #FF1F8F); -webkit-background-clip: text; background-clip: text; margin: 0 0 6px; }
.ev-mini-h { font-size: clamp(17px, 2.4vw, 24px); font-weight: 900; color: #fff; margin: 0; line-height: 1.12; max-width: 540px; }
.ev-mini-sub { font-size: 13px; line-height: 1.5; color: rgba(255,255,255,.74); margin: 8px 0 0; max-width: 520px; }
.ev-mini-row { display: flex; align-items: center; gap: 14px; margin-top: 14px; flex-wrap: wrap; }
.ev-mini-stat { display: inline-flex; align-items: baseline; gap: 6px; }
.ev-mini-stat b { font-size: 22px; font-weight: 900; color: transparent;
  background: linear-gradient(135deg, #FF6B1F, #FF1F8F); -webkit-background-clip: text; background-clip: text; }
.ev-mini-stat span { font-size: 12px; font-weight: 700; color: rgba(255,255,255,.7); }
.ev-mini-cta { margin-left: auto; font-size: 13px; font-weight: 800; color: #fff;
  padding: 8px 16px; border-radius: 999px; background: rgba(255,255,255,.08); border: 1px solid rgba(255,255,255,.18); }
.ev-mini:hover .ev-mini-cta { background: linear-gradient(135deg, #FF6B1F, #FF1F8F); border-color: transparent; }

/* ── Landing · The Climb showcase + the desk feature grid ── */
.tl-climb-stage { margin: 32px 0 0; border-radius: 22px; overflow: hidden; border: 1px solid var(--wot-border);
  background: #0a0a0a; box-shadow: 0 26px 64px rgba(0,0,0,.5); }
.tl-climb-stage .ev-svg { width: 100%; height: clamp(260px, 42vw, 460px); display: block; }
.tl-climb-pills { display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; margin: 18px 0 0; }
.tl-climb-pills span { display: inline-flex; align-items: center; gap: 7px; font-size: 13px; font-weight: 800; color: var(--wot-text-1);
  padding: 7px 14px; border-radius: 999px; border: 1px solid var(--wot-border); background: var(--wot-bg-2); }
.tl-climb-pills b { display: grid; place-items: center; width: 18px; height: 18px; border-radius: 50%; font-size: 11px; color: #fff; background: var(--wot-grad); }
.tl-climb-pills .is-summit { color: #FFC061; border-color: rgba(255,200,90,.4); }

.tl-feat-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; margin: 32px 0 0; }
.tl-feature { text-align: left; padding: 22px 20px; border-radius: 18px; border: 1px solid var(--wot-border);
  background: var(--wot-bg-1); transition: border-color .2s, transform .2s, box-shadow .2s; }
.tl-feature:hover { border-color: rgba(255,107,31,.34); transform: translateY(-3px); box-shadow: 0 18px 44px rgba(255,31,143,.12); }
.tl-feat-glyph { width: 30px; height: 30px; }
.tl-feat-glyph path { fill: none; stroke: url(#tlFeatGrad); stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.tl-feature h3 { font-size: 16px; font-weight: 900; color: var(--wot-text-0); margin: 13px 0 6px; letter-spacing: -.01em; }
.tl-feature p { font-size: 13.5px; line-height: 1.55; color: var(--wot-text-1); margin: 0; }
@media (max-width: 880px) { .tl-feat-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .tl-feat-grid { grid-template-columns: 1fr; } }

/* ── Screener (CANSLIM / Minervini momentum desk) + shared group filter ───── */
.v2-scr-hero { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.v2-scr-week { display: inline-block; margin-left: 8px; padding: 2px 8px; border-radius: 999px; background: var(--wot-bg-2); color: var(--wot-text-2); font-size: 11.5px; font-weight: 700; letter-spacing: .02em; }
.v2-scr-market { display: inline-flex; align-items: center; gap: 8px; padding: 7px 13px; border-radius: 999px; font-size: 12.5px; font-weight: 800; border: 1px solid var(--wot-border); white-space: nowrap; }
.v2-scr-market-dot { width: 8px; height: 8px; border-radius: 50%; background: currentColor; box-shadow: 0 0 8px currentColor; }
.v2-scr-market.is-up   { color: var(--wot-bull, #22c55e); background: rgba(34,197,94,.08); }
.v2-scr-market.is-mid  { color: #f5b400; background: rgba(245,180,0,.08); }
.v2-scr-market.is-down { color: var(--wot-bear, #ef4444); background: rgba(239,68,68,.08); }

/* shared group filter chip bar */
.v2-scr-filter { margin: 4px 0 14px; }
.v2-grpbar { display: flex; gap: 8px; flex-wrap: wrap; }
.v2-grp-chip { appearance: none; border: 1px solid var(--wot-border); background: var(--wot-bg-1); color: var(--wot-text-1);
  padding: 7px 15px; border-radius: 999px; font-size: 13px; font-weight: 700; cursor: pointer; transition: all .14s ease; }
.v2-grp-chip:hover { border-color: var(--wot-grad-end); color: var(--wot-text-0); }
.v2-grp-chip.is-on { background: var(--wot-grad); border-color: transparent; color: #fff; box-shadow: var(--wot-grad-glow); }

/* two-pane: ranked list left, plan panel right (reuses .wot-charts-main grid) */
.v2-scr-main-wrap { align-items: start; }
.v2-scr-list { display: flex; flex-direction: column; gap: 10px; min-width: 0; }
.v2-scr-empty, .v2-scr-pending { color: var(--wot-text-2); font-size: 13.5px; }
.v2-scr-empty { padding: 40px 20px; text-align: center; border: 1px dashed var(--wot-border); border-radius: var(--wot-r-md, 14px); }

.v2-scr-card { display: grid; grid-template-columns: 26px 12px minmax(0,1fr) minmax(120px,1.1fr) auto; align-items: center; gap: 12px;
  width: 100%; text-align: left; padding: 13px 15px; border: 1px solid var(--wot-border); border-radius: var(--wot-r-md, 14px);
  background: var(--wot-bg-1); color: var(--wot-text-0); cursor: pointer; transition: border-color .14s ease, transform .08s ease, background .14s ease; }
.v2-scr-card:hover { border-color: var(--wot-grad-end); }
.v2-scr-card.is-sel { border-color: var(--wot-grad-end); background: linear-gradient(90deg, rgba(255,31,143,.06), transparent 60%); box-shadow: inset 3px 0 0 var(--wot-grad-end); }
.v2-scr-card.is-empty { grid-template-columns: 12px minmax(0,1fr) auto; opacity: .62; cursor: pointer; }

.v2-scr-rank { font-size: 12px; font-weight: 800; color: var(--wot-text-2); text-align: right; }
.v2-scr-dot { width: 10px; height: 10px; border-radius: 50%; }
.v2-scr-symwrap { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.v2-scr-sym { font-size: 15px; font-weight: 900; letter-spacing: -.01em; display: flex; align-items: center; gap: 8px; }
.v2-scr-name { font-size: 11.5px; color: var(--wot-text-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.v2-scr-chips { display: flex; gap: 5px; flex-wrap: wrap; margin-top: 2px; }
.v2-scr-chip { font-size: 10.5px; font-weight: 700; padding: 2px 7px; border-radius: 6px; background: var(--wot-bg-2); color: var(--wot-text-1); border: 1px solid var(--wot-border); }
.v2-scr-chip.is-rs  { color: #c9b8ff; }
.v2-scr-chip.is-nh  { color: var(--wot-bull, #22c55e); border-color: rgba(34,197,94,.3); }
.v2-scr-chip.is-c, .v2-scr-chip.is-a { color: #8fd14f; }
.v2-scr-chip.is-vol { color: #f5b400; }

.v2-scr-verdict { font-size: 10px; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; padding: 2px 7px; border-radius: 6px; }
.v2-scr-verdict.is-leader  { color: var(--wot-bull, #22c55e); background: rgba(34,197,94,.12); }
.v2-scr-verdict.is-setup   { color: #b9a3ff; background: rgba(124,92,255,.14); }
.v2-scr-verdict.is-watch   { color: #f5b400; background: rgba(245,180,0,.12); }
.v2-scr-verdict.is-laggard { color: var(--wot-text-2); background: var(--wot-bg-2); }

.v2-scr-mid { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.v2-scr-trend { display: inline-flex; gap: 3px; }
.v2-scr-seg { width: 12px; height: 5px; border-radius: 2px; background: var(--wot-bg-2); }
.v2-scr-seg.is-on { background: linear-gradient(90deg, var(--wot-grad-start), var(--wot-grad-end)); }
.v2-scr-note { font-size: 11.5px; color: var(--wot-text-2); line-height: 1.4; overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }

.v2-scr-score { display: flex; flex-direction: column; align-items: center; justify-content: center; min-width: 56px; }
.v2-scr-score b { font-size: 26px; font-weight: 900; line-height: 1; color: var(--sc, var(--wot-text-0)); letter-spacing: -.02em; }
.v2-scr-score small { font-size: 9px; text-transform: uppercase; letter-spacing: .06em; color: var(--wot-text-2); margin-top: 3px; }

/* horizon toggle inside the reused plan panel */
.v2-scr-hztoggle { display: inline-flex; gap: 4px; margin: 8px 0 2px; background: var(--wot-bg-2); padding: 3px; border-radius: 9px; }
.v2-scr-hztoggle button { appearance: none; border: 0; background: transparent; color: var(--wot-text-2); font-size: 12px; font-weight: 800; padding: 5px 14px; border-radius: 7px; cursor: pointer; }
.v2-scr-hztoggle button.is-on { background: var(--wot-bg-0); color: var(--wot-text-0); }

@media (max-width: 720px) {
  .v2-scr-card { grid-template-columns: 22px 10px minmax(0,1fr) auto; }
  .v2-scr-mid { display: none; }
}

/* ── Levels: Chart | CANSLIM mode ─────────────────────────────────────────── */
.v2-lv-hero { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; flex-wrap: wrap; }
.v2-lv-modetabs { display: inline-flex; gap: 4px; background: var(--wot-bg-2); padding: 4px; border-radius: 12px; flex: 0 0 auto; }
.v2-lv-modetabs button { appearance: none; border: 0; background: transparent; color: var(--wot-text-2); font-size: 14px; font-weight: 800; padding: 8px 22px; border-radius: 9px; cursor: pointer; transition: all .14s ease; }
.v2-lv-modetabs button:hover { color: var(--wot-text-0); }
.v2-lv-modetabs button.is-on { background: var(--wot-grad); color: #fff; box-shadow: var(--wot-grad-glow); }

/* CANSLIM is a daily analytical view — hide the Chart-only controls in that mode. */
.v2-levels.is-canslim .wot-chart-tabs[aria-label="Timeframe"],
.v2-levels.is-canslim .wot-chart-modes,
.v2-levels.is-canslim [data-action="edit-levels"],
.v2-levels.is-canslim [data-action="add-level"] { display: none; }

/* ── CANSLIM scorecard (above the chart, left column) — compact + prominent ── */
.cs-panel { padding: 14px 16px; border-bottom: 1px solid var(--wot-border); background: linear-gradient(180deg, rgba(124,92,255,0.05), transparent 70%); }

/* Legend — a readable pill bar, prominent above the card. */
.cs-legend { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 13px; }
.cs-legchip { display: inline-flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 700; color: var(--wot-text-1);
  background: var(--wot-bg-2); border: 1px solid var(--wot-border); border-radius: 999px; padding: 5px 13px; }
.cs-legchip i { width: 18px; height: 4px; border-radius: 2px; display: inline-block; }

.cs-card { display: flex; flex-direction: column; gap: 14px; }
.cs-card-loading, .cs-card-empty { color: var(--wot-text-2); font-size: 14px; }
.cs-card-empty .cs-empty-h { font-weight: 800; color: var(--wot-text-1); margin-bottom: 4px; font-size: 15px; }

/* Prominent horizontal top band: score · verdict/trend · RS + RS-line. */
.cs-top { display: flex; align-items: center; gap: 26px; flex-wrap: wrap; }
.cs-score { display: flex; flex-direction: column; }
.cs-score b { font-size: 48px; font-weight: 900; line-height: .95; color: var(--sc, var(--wot-text-0)); letter-spacing: -.03em; }
.cs-score small { font-size: 11px; text-transform: uppercase; letter-spacing: .07em; color: var(--wot-text-2); margin-top: 5px; font-weight: 700; }
.cs-top-mid { display: flex; flex-direction: column; align-items: flex-start; gap: 9px; }
.cs-verdict { font-size: 13px; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; padding: 6px 14px; border-radius: 8px; }
.cs-verdict.is-leader { color: var(--wot-bull,#22c55e); background: rgba(34,197,94,.14); }
.cs-verdict.is-setup { color: #b9a3ff; background: rgba(124,92,255,.16); }
.cs-verdict.is-watch { color: #f5b400; background: rgba(245,180,0,.14); }
.cs-verdict.is-laggard { color: var(--wot-text-2); background: var(--wot-bg-2); }
.cs-trendcount { font-size: 16px; font-weight: 700; color: var(--wot-text-1); }
.cs-trendcount b { font-size: 20px; font-weight: 900; color: var(--wot-text-0); }
.cs-trendcount i { font-style: normal; color: var(--wot-text-2); }
.cs-rs { display: flex; flex-direction: column; align-items: center; margin-left: auto; }
.cs-rs-num { font-size: 34px; font-weight: 900; line-height: 1; }
.cs-rs-cap { font-size: 10px; text-transform: uppercase; letter-spacing: .06em; color: var(--wot-text-2); margin-top: 4px; font-weight: 700; }
.cs-rs-spark { margin-top: 6px; width: 120px; height: 30px; opacity: .95; }

/* Two compact columns: Trend Template | Fundamentals & range. */
.cs-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px 34px; }
.cs-col-h { font-size: 11px; text-transform: uppercase; letter-spacing: .07em; font-weight: 800; color: var(--wot-text-2); margin-bottom: 9px; padding-bottom: 6px; border-bottom: 1px solid var(--wot-border); }
.cs-gates { display: grid; grid-template-columns: 1fr 1fr; gap: 8px 16px; }
.cs-gate { font-size: 13px; color: var(--wot-text-2); display: flex; gap: 7px; align-items: center; }
.cs-gate.is-on { color: var(--wot-text-0); }
.cs-gate-tick { width: 13px; text-align: center; font-weight: 900; color: var(--wot-text-3,#555); }
.cs-gate.is-on .cs-gate-tick { color: var(--wot-bull,#22c55e); }

.cs-stats { display: grid; grid-template-columns: 1fr 1fr; gap: 0 26px; }
.cs-stat { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; font-size: 13px; border-bottom: 1px dashed var(--wot-border); padding: 6px 0; }
.cs-stat-l { color: var(--wot-text-2); }
.cs-stat-v { color: var(--wot-text-0); font-weight: 800; font-variant-numeric: tabular-nums; }
.cs-note { font-size: 13px; color: var(--wot-text-1); line-height: 1.5; padding-top: 4px; }

@media (max-width: 900px) { .cs-grid { grid-template-columns: 1fr; } }
@media (max-width: 560px) { .cs-gates, .cs-stats { grid-template-columns: 1fr; } .cs-rs { margin-left: 0; } }

.cs-why { font-size: 12.5px; color: var(--wot-text-2); line-height: 1.55; margin: 0; }

/* ── Levels · selected-ticker head + Financials/Filings sub-tabs ─────────────
   The company name shows clearly above the chart; the two doc sub-tabs replace
   the chart stage with a clean SEC-data reading view in the WOT dark style. */
.v2-lv-symhead { display: flex; align-items: baseline; gap: 10px; margin: 2px 2px 12px; min-height: 22px; }
.v2-lv-symhead-dot { align-self: center; width: 10px; height: 10px; border-radius: 50%; flex: 0 0 auto; }
/* Company name is primary; ticker is the secondary tag after it. */
.v2-lv-symhead-name { font-size: 20px; font-weight: 800; letter-spacing: .1px; color: var(--wot-text-0); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.v2-lv-symhead-tk { font-size: 14px; font-weight: 700; letter-spacing: .4px; color: var(--wot-text-2); }
.v2-levels.is-doc .v2-lv-stage[hidden] { display: none; }

.v2-lv-docpanel { border: 1px solid var(--wot-border); border-radius: var(--wot-r-lg); background: linear-gradient(180deg, var(--wot-bg-1), var(--wot-bg-0)); overflow: hidden; }
.tdoc { display: flex; flex-direction: column; max-height: calc(100vh - 260px); min-height: 360px; }
.tdoc-bar { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; padding: 12px 14px; border-bottom: 1px solid var(--wot-border); }
.tdoc-seg { display: inline-flex; gap: 4px; padding: 4px; border-radius: 11px; background: var(--wot-bg-2); border: 1px solid var(--wot-border); }
.tdoc-seg button { border: 0; background: none; color: var(--wot-text-2); font-size: 12.5px; font-weight: 700; padding: 6px 13px; border-radius: 8px; cursor: pointer; }
.tdoc-seg button.is-on { background: var(--wot-bg-0); color: var(--wot-text-0); box-shadow: 0 1px 3px rgba(0,0,0,.4); }
.tdoc-meta { margin-left: auto; font-size: 11.5px; color: var(--wot-text-3); font-variant-numeric: tabular-nums; }
.tdoc-body { overflow: auto; flex: 1; }
.tdoc-empty { padding: 26px; color: var(--wot-text-2); font-size: 13.5px; display: flex; align-items: center; gap: 8px; }
.tdoc-empty-lg { flex-direction: column; align-items: flex-start; gap: 4px; }
.tdoc-empty-lg h3 { margin: 0; font-size: 15px; color: var(--wot-text-1); } .tdoc-empty-lg p { margin: 0; line-height: 1.5; }

/* Financials table — Yahoo-style hierarchy, sticky head, TTM accent */
.tdoc-tablewrap { min-width: 100%; }
.tdoc-table { width: 100%; border-collapse: collapse; font-variant-numeric: tabular-nums; }
.tdoc-table thead th { position: sticky; top: 0; z-index: 1; background: var(--wot-bg-2); font-size: 11px; text-transform: uppercase; letter-spacing: .04em; color: var(--wot-text-2); font-weight: 700; padding: 10px 12px; text-align: right; white-space: nowrap; border-bottom: 1px solid var(--wot-border); }
.tdoc-table th.tdoc-lbl { text-align: left; }
.tdoc-table th.is-ttm { color: var(--wot-grad-end); }
.tdoc-lbl { text-align: left; font-size: 13px; color: var(--wot-text-1); white-space: nowrap; }
.tdoc-num { text-align: right; font-size: 13px; color: var(--wot-text-1); padding: 8px 12px; white-space: nowrap; }
.tdoc-row:nth-child(even) { background: rgba(255,255,255,.014); }
.tdoc-row.is-total .tdoc-lbl, .tdoc-row.is-total .tdoc-num { font-weight: 800; color: var(--wot-text-0); }
.tdoc-row.is-total td { border-top: 1px solid var(--wot-border); }
.tdoc-table td.tdoc-num:nth-child(2) { color: var(--wot-text-0); }  /* newest / TTM column pops */

/* Filings — 10-Q/K brief cards, tap to expand */
.tdoc-filings { display: flex; flex-direction: column; gap: 10px; padding: 14px; }
.tdoc-brief { border: 1px solid var(--wot-border); border-radius: 14px; background: var(--wot-bg-2); padding: 14px 16px; cursor: pointer; transition: border-color .15s; }
.tdoc-brief:hover { border-color: var(--wot-text-3); }
.tdoc-brief.is-open { border-color: color-mix(in srgb, var(--wot-grad-end) 40%, transparent); background: color-mix(in srgb, var(--wot-grad-end) 5%, var(--wot-bg-2)); cursor: default; }
.tdoc-brief-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 8px; }
.tdoc-brief-tags { display: inline-flex; align-items: center; gap: 8px; flex-wrap: wrap; font-size: 11.5px; color: var(--wot-text-2); }
.tdoc-brief-form { font-weight: 800; color: var(--wot-text-0); background: rgba(255,255,255,.06); padding: 2px 8px; border-radius: 6px; }
.tdoc-brief-pills { margin-left: auto; display: inline-flex; gap: 6px; }
.tdoc-pill { font-size: 10.5px; font-weight: 800; letter-spacing: .03em; padding: 3px 9px; border-radius: 999px; }
.tdoc-pill.is-good { color: var(--wot-bull); background: color-mix(in srgb, var(--wot-bull) 15%, transparent); }
.tdoc-pill.is-danger { color: var(--wot-bear); background: color-mix(in srgb, var(--wot-bear) 15%, transparent); }
.tdoc-pill.is-caution { color: var(--wot-chop); background: color-mix(in srgb, var(--wot-chop) 15%, transparent); }
.tdoc-pill.is-na { color: var(--wot-text-2); background: rgba(255,255,255,.06); }
.tdoc-brief-headline { margin: 0 0 10px; font-size: 14.5px; font-weight: 600; color: var(--wot-text-0); line-height: 1.45; }
.tdoc-brief-take { margin: 0; padding-left: 18px; display: flex; flex-direction: column; gap: 5px; }
.tdoc-brief-take li { font-size: 13px; color: var(--wot-text-1); line-height: 1.5; }
.tdoc-brief-block { margin-top: 12px; padding-top: 10px; border-top: 1px solid var(--wot-border); }
.tdoc-brief-block b { display: block; font-size: 11px; text-transform: uppercase; letter-spacing: .05em; color: var(--wot-text-2); margin-bottom: 6px; }
.tdoc-brief-block ul { margin: 0; padding-left: 18px; display: flex; flex-direction: column; gap: 5px; }
.tdoc-brief-block li { font-size: 12.5px; color: var(--wot-text-1); line-height: 1.5; }
.tdoc-brief-angle { margin-top: 12px; padding: 11px 13px; border-radius: 11px; background: color-mix(in srgb, var(--wot-grad-end) 8%, var(--wot-bg-0)); border: 1px solid color-mix(in srgb, var(--wot-grad-end) 22%, transparent); }
.tdoc-brief-angle b { display: block; font-size: 11px; text-transform: uppercase; letter-spacing: .05em; color: var(--wot-grad-end); margin-bottom: 4px; }
.tdoc-brief-angle p { margin: 0; font-size: 13px; color: var(--wot-text-0); line-height: 1.5; }
.tdoc-brief-foot { display: flex; align-items: center; justify-content: space-between; margin-top: 10px; }
.tdoc-brief-more { font-size: 12px; font-weight: 700; color: var(--wot-text-2); }
.tdoc-brief.is-open .tdoc-brief-more { color: var(--wot-grad-end); }
.tdoc-brief-sec { font-size: 12px; color: var(--wot-text-2); text-decoration: none; }
.tdoc-brief-sec:hover { color: var(--wot-text-0); }

@media (max-width: 680px) { .tdoc { max-height: none; } .v2-lv-symhead-name { font-size: 12.5px; } }

/* ── Levels · 10-Q/K brief: Ollama summary + inline full-filing viewer ─────── */
.tdoc-brief-summary { margin: 0 0 10px; font-size: 13.5px; line-height: 1.55; color: var(--wot-text-1); padding: 11px 13px; border-radius: 11px; background: var(--wot-bg-0); border: 1px solid var(--wot-border); }
.tdoc-fulldoc-wrap { margin-top: 12px; padding-top: 10px; border-top: 1px solid var(--wot-border); display: flex; flex-wrap: wrap; align-items: center; gap: 14px; }
.tdoc-fulldoc-btn { border: 1px solid color-mix(in srgb, var(--wot-grad-end) 40%, transparent); background: color-mix(in srgb, var(--wot-grad-end) 10%, transparent); color: var(--wot-text-0); font-weight: 700; font-size: 13px; padding: 8px 14px; border-radius: 10px; cursor: pointer; }
.tdoc-fulldoc-btn:hover { background: color-mix(in srgb, var(--wot-grad-end) 18%, transparent); }
.tdoc-fulldoc { flex-basis: 100%; margin-top: 10px; }
.tdoc-fulldoc-frame { width: 100%; height: 70vh; min-height: 460px; border: 1px solid var(--wot-border); border-radius: 12px; background: #fff; }

/* ── Levels · full-screen control bar ────────────────────────────────────────
   In full-screen the stage is a fixed overlay; we relocate the company-name
   head + desk-group chips + ticker rail into this top bar so they stay reachable
   without leaving full-screen. Each row scrolls horizontally so long desks fit. */
.v2-lv-fsbar { display: flex; flex-direction: column; gap: 8px; flex: none; padding-bottom: 4px; border-bottom: 1px solid var(--wot-border); }
.v2-lv-fsbar .v2-lv-symhead { margin: 0; }
.v2-lv-fsbar .v2-scr-filter { margin: 0; }
.v2-lv-fsbar .v2-grpbar { flex-wrap: nowrap; overflow-x: auto; padding-bottom: 4px; -webkit-overflow-scrolling: touch; }
.v2-lv-fsbar .v2-lv-rail { flex-wrap: nowrap; overflow-x: auto; padding-bottom: 4px; -webkit-overflow-scrolling: touch; }
.v2-lv-fsbar .v2-lv-rail::-webkit-scrollbar, .v2-lv-fsbar .v2-grpbar::-webkit-scrollbar { height: 6px; }
.v2-lv-fsbar .v2-lv-chip, .v2-lv-fsbar .v2-grp-chip { flex: 0 0 auto; }
