/* ════════════════════════════════════════════════════════
   NxTGen Trading Journal — styles.css
   NXTGEN LIQUID GLASS PREMIUM DESIGN SYSTEM v3
   Apple-inspired · Fintech quality · Full dark/light parity
   ════════════════════════════════════════════════════════ */

@import url('https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:ital,wght@0,300;0,400;0,500;0,600;0,700;0,800;1,400;1,500&family=JetBrains+Mono:ital,wght@0,300;0,400;0,500;0,600;0,700;1,400&display=swap');

/* ════════════════════════════════════════════════════════
   NXTGEN — LIQUID GLASS PREMIUM DESIGN SYSTEM v3
   Apple-inspired · Fintech quality · Full dark/light parity
   ════════════════════════════════════════════════════════ */

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}

/* ── Token System ───────────────────────────────────── */
:root{
  /* Dark palette */
  --bg-base:       #080b12;
  --bg:            #080b12;
  --bg2:           rgba(13,17,26,0.94);
  --bg3:           rgba(19,24,36,0.82);
  --bg4:           rgba(26,33,50,0.72);
  --bg5:           rgba(36,46,68,0.60);

  /* Liquid glass surfaces */
  --glass-0:       rgba(255,255,255,0.02);
  --glass-1:       rgba(255,255,255,0.04);
  --glass-2:       rgba(255,255,255,0.07);
  --glass-3:       rgba(255,255,255,0.11);
  --glass-4:       rgba(255,255,255,0.16);
  --glass-border:  rgba(255,255,255,0.08);
  --glass-border-h:rgba(255,255,255,0.15);
  --glass-shine:   rgba(255,255,255,0.06);

  /* Blur levels */
  --blur-xs: blur(6px);
  --blur-sm: blur(10px);
  --blur-md: blur(16px);
  --blur-lg: blur(24px);
  --blur-xl: blur(32px);

  /* Borders */
  --border:        rgba(255,255,255,0.07);
  --border2:       rgba(255,255,255,0.04);
  --border-focus:  rgba(96,165,250,0.55);

  /* Semantic colors */
  --accent:    #f87171;
  --accent2:   #fb923c;
  --green:     #34d399;
  --green-dim: rgba(52,211,153,0.15);
  --green-glow:rgba(52,211,153,0.20);
  --red:       #f87171;
  --red-dim:   rgba(248,113,113,0.13);
  --red-glow:  rgba(248,113,113,0.20);
  --blue:      #60a5fa;
  --blue-dim:  rgba(96,165,250,0.13);
  --blue-glow: rgba(96,165,250,0.20);
  --teal:      #2dd4bf;
  --gold:      #fbbf24;
  --gold-glow: rgba(251,191,36,0.20);
  --purple:    #a78bfa;

  /* Text hierarchy */
  --text:   rgba(248,250,252,0.95);
  --text2:  rgba(148,163,184,0.82);
  --text3:  rgba(100,116,139,0.65);

  /* Elevation shadows */
  --shadow-xs: 0 1px 2px rgba(0,0,0,0.35);
  --shadow-sm: 0 2px 8px rgba(0,0,0,0.45), 0 1px 2px rgba(0,0,0,0.3);
  --shadow-md: 0 4px 20px rgba(0,0,0,0.55), 0 2px 6px rgba(0,0,0,0.35);
  --shadow-lg: 0 12px 40px rgba(0,0,0,0.65), 0 4px 12px rgba(0,0,0,0.4);
  --shadow-xl: 0 24px 72px rgba(0,0,0,0.72), 0 8px 24px rgba(0,0,0,0.5);

  /* Glow shadows */
  --glow-blue:  0 0 28px rgba(96,165,250,0.14), 0 0 8px rgba(96,165,250,0.08);
  --glow-green: 0 0 24px rgba(52,211,153,0.16), 0 0 8px rgba(52,211,153,0.10);
  --glow-red:   0 0 20px rgba(248,113,113,0.15), 0 0 6px rgba(248,113,113,0.10);
  --glow-gold:  0 0 20px rgba(251,191,36,0.18), 0 0 6px rgba(251,191,36,0.10);

  /* Radii */
  --r-xs:   6px;
  --r-sm:   8px;
  --r-md:   12px;
  --r-lg:   16px;
  --r-xl:   20px;
  --r-2xl:  28px;
  --r-full: 9999px;

  /* Layout */
  --sidebar: 220px;
  --topbar:  52px;

  /* Typography */
  --font-head: 'Plus Jakarta Sans', system-ui, -apple-system, sans-serif;
  --font-body: 'Plus Jakarta Sans', system-ui, -apple-system, sans-serif;
  --font-mono: 'JetBrains Mono', ui-monospace, 'SF Mono', monospace;
  --surface:   #0d1117;

  /* Easing */
  --ease-spring: cubic-bezier(0.34,1.56,0.64,1);
  --ease-out:    cubic-bezier(0.0,0.0,0.2,1);
  --ease-in-out: cubic-bezier(0.4,0.0,0.2,1);

  /* Transitions */
  --t-fast:   background 0.14s var(--ease-in-out), border-color 0.14s var(--ease-in-out), box-shadow 0.14s var(--ease-in-out), color 0.14s var(--ease-in-out), opacity 0.14s var(--ease-in-out), transform 0.14s var(--ease-in-out), fill 0.14s var(--ease-in-out), stroke 0.14s var(--ease-in-out);
  --t-med:    background 0.24s var(--ease-in-out), border-color 0.24s var(--ease-in-out), box-shadow 0.24s var(--ease-in-out), color 0.24s var(--ease-in-out), opacity 0.24s var(--ease-in-out), transform 0.24s var(--ease-in-out), fill 0.24s var(--ease-in-out), stroke 0.24s var(--ease-in-out);
  --t-slow:   background 0.4s  var(--ease-in-out), border-color 0.4s  var(--ease-in-out), box-shadow 0.4s  var(--ease-in-out), color 0.4s  var(--ease-in-out), opacity 0.4s  var(--ease-in-out), transform 0.4s  var(--ease-in-out), fill 0.4s  var(--ease-in-out), stroke 0.4s  var(--ease-in-out);
  --t-spring: background 0.32s var(--ease-spring), border-color 0.32s var(--ease-spring), box-shadow 0.32s var(--ease-spring), color 0.32s var(--ease-spring), opacity 0.32s var(--ease-spring), transform 0.32s var(--ease-spring), fill 0.32s var(--ease-spring), stroke 0.32s var(--ease-spring);
}

/* ── Light Mode ─────────────────────────────────────── */
[data-theme="light"]{
  /* Warmer, deeper base — not flat white so surfaces can "lift" off it */
  --bg-base:       #e7ebf5;
  --bg:            #e3e8f3;
  --bg2:           rgba(255,255,255,0.94);
  --bg3:           rgba(255,255,255,0.86);
  --bg4:           rgba(234,238,248,0.85);
  --bg5:           rgba(210,217,238,0.72);

  /* Liquid glass surfaces — high-opacity whites for real card separation */
  --glass-0:       rgba(255,255,255,0.60);
  --glass-1:       rgba(255,255,255,0.86);
  --glass-2:       rgba(255,255,255,0.95);
  --glass-3:       rgba(255,255,255,0.99);
  --glass-4:       rgba(255,255,255,1);
  --glass-border:  rgba(30,41,59,0.11);
  --glass-border-h:rgba(30,41,59,0.20);
  --glass-shine:   rgba(255,255,255,0.95);

  --border:        rgba(30,41,59,0.11);
  --border2:       rgba(30,41,59,0.07);
  --border-focus:  rgba(79,70,229,0.55);

  --accent:    #e11d48;
  --accent2:   #ea580c;
  --green:     #04875e;
  --green-dim: rgba(4,135,94,0.12);
  --green-glow:rgba(4,135,94,0.18);
  --red:       #dc2626;
  --red-dim:   rgba(220,38,38,0.11);
  --red-glow:  rgba(220,38,38,0.18);
  --blue:      #4f46e5;
  --blue-dim:  rgba(79,70,229,0.12);
  --blue-glow: rgba(79,70,229,0.18);
  --teal:      #0d9488;
  --gold:      #b45309;
  --gold-glow: rgba(180,83,9,0.16);
  --purple:    #7c3aed;

  --text:   #0f1729;
  --text2:  rgba(30,41,59,0.80);
  --text3:  rgba(71,85,105,0.68);
  --surface: #ffffff;

  /* Deeper, more directional shadows so cards visibly lift off the page */
  --shadow-xs: 0 1px 2px rgba(15,23,42,0.07);
  --shadow-sm: 0 3px 10px rgba(15,23,42,0.09), 0 1px 3px rgba(15,23,42,0.06);
  --shadow-md: 0 8px 26px rgba(15,23,42,0.11), 0 2px 8px rgba(15,23,42,0.07);
  --shadow-lg: 0 18px 48px rgba(15,23,42,0.14), 0 6px 16px rgba(15,23,42,0.08);
  --shadow-xl: 0 30px 80px rgba(15,23,42,0.17), 0 10px 28px rgba(15,23,42,0.10);

  --glow-blue:  0 0 26px rgba(79,70,229,0.16);
  --glow-green: 0 0 22px rgba(4,135,94,0.16);
  --glow-red:   0 0 18px rgba(220,38,38,0.16);
  --glow-gold:  0 0 18px rgba(180,83,9,0.16);
}

/* ── Theme transition (smooth, no flicker) ──────────── */
html{transition:background-color 0.35s var(--ease-in-out)}
body{transition:background-color 0.35s var(--ease-in-out),color 0.2s}
.topbar,.sidebar,.tabs,.modal,.detail-panel,.kpi-card,.glass-card,
.wl-pair-card,.acc-card,.rule-card,.model-card,.data-table th,
.data-table td,.trash-card,.cover,.cal-kpi{
  transition:background 0.3s var(--ease-in-out),
             border-color 0.3s var(--ease-in-out),
             box-shadow 0.3s var(--ease-in-out),
             color 0.2s;
}
button,a,.cal-day,.sb-item,.tab,.trade-log-row,input,select,textarea{
  transition:var(--t-fast);
}

/* ── Base ────────────────────────────────────────────── */
html{height:100%;font-size:14px;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  text-rendering:optimizeLegibility;
}
body{
  height:100%;
  min-height:100dvh;
  background:var(--bg-base);
  color:var(--text);
  font-family:var(--font-body);
  font-feature-settings:'cv02','cv03','cv04','cv11','ss01';
  display:flex;flex-direction:column;overflow:hidden;
  background-image:
    radial-gradient(ellipse 90% 70% at 15% -15%, rgba(96,165,250,0.07) 0%, transparent 55%),
    radial-gradient(ellipse 70% 60% at 85% 115%, rgba(167,139,250,0.05) 0%, transparent 55%),
    radial-gradient(ellipse 50% 40% at 50% 50%,  rgba(45,212,191,0.02) 0%, transparent 60%);
  background-attachment:fixed;
}
[data-theme="light"] body{
  background-image:
    radial-gradient(ellipse 90% 70% at 15% -15%, rgba(79,70,229,0.07) 0%, transparent 55%),
    radial-gradient(ellipse 70% 60% at 85% 115%, rgba(124,58,237,0.04) 0%, transparent 55%);
}

/* ════════════ TOPBAR ═══════════════════════════════ */
.topbar{
  height:var(--topbar);
  background:var(--glass-2);
  backdrop-filter:var(--blur-md);
  -webkit-backdrop-filter:var(--blur-md);
  border-bottom:1px solid var(--glass-border);
  display:flex;align-items:center;justify-content:space-between;
  padding:0 20px;flex-shrink:0;z-index:100;
  box-shadow:var(--shadow-sm),inset 0 1px 0 var(--glass-shine);
  position:relative;
}
.topbar::after{
  content:'';position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(90deg,
    rgba(96,165,250,0.025) 0%,transparent 30%,
    rgba(167,139,250,0.020) 100%);
}
.topbar-left{display:flex;align-items:center;gap:10px;position:relative;z-index:1}
/* ── NxTGen Logo Brand ── */
.topbar-left .brand {
  display: flex; align-items: center;
  cursor: pointer; flex-shrink: 0;
  transition: opacity .15s;
  max-width: 200px;
}
.topbar-left .brand:hover { opacity: .85; }

.brand-logo-img {
  height: 30px;
  width: auto;
  display: block;
  object-fit: contain;
  /* Dark mode default: logo is white (brightness(0) invert(1) = white) */
  filter: brightness(0) invert(1);
  transition: filter .25s ease;
  max-width: 190px;
}
/* Light mode: logo is black (brightness(0) = black) */
[data-theme="light"] .brand-logo-img {
  filter: brightness(0);
}

/* Also fix the SVG internal filters for light mode via CSS variables */
[data-theme="light"] .logo-dark {
  filter: invert(1);
}
[data-theme="light"] .logo-light-text {
  filter: none;
}

/* Legacy .brand-icon — keep for any edge case */
.brand-icon {
  width: 26px; height: 26px; border-radius: 7px;
  background: linear-gradient(135deg, rgba(251,191,36,0.25), rgba(251,191,36,0.12));
  border: 1px solid rgba(251,191,36,0.25);
  display: flex; align-items: center; justify-content: center;
  font-size: 14px; flex-shrink: 0;
  box-shadow: 0 0 12px rgba(251,191,36,0.15);
}
.topbar-left .sep{color:var(--text3);font-weight:300;font-size:16px;opacity:0.5}
.topbar-left .page-name{color:var(--text2);font-size:12px;font-weight:400}
.topbar-right{display:flex;gap:8px;align-items:center;position:relative;z-index:1}

.theme-toggle{
  width:32px;height:32px;border-radius:var(--r-sm);
  background:var(--glass-1);border:1px solid var(--glass-border);
  color:var(--text2);cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  font-size:14px;transition:var(--t-fast);flex-shrink:0;
}
.theme-toggle:hover{
  background:var(--glass-2);color:var(--text);
  border-color:var(--glass-border-h);
  transform:rotate(15deg) scale(1.08);
  box-shadow:var(--shadow-sm);
}

/* ════════════ BUTTONS ══════════════════════════════ */
.btn{
  padding:7px 15px;border-radius:var(--r-sm);
  font-size:12px;font-family:var(--font-body);
  font-weight:500;cursor:pointer;letter-spacing:0.1px;
  border:1px solid var(--glass-border);
  background:var(--glass-1);color:var(--text2);
  backdrop-filter:var(--blur-xs);
  transition:var(--t-fast);white-space:nowrap;
}
.btn:hover{
  background:var(--glass-2);color:var(--text);
  border-color:var(--glass-border-h);
  transform:translateY(-1px);box-shadow:var(--shadow-sm);
}
.btn:active{transform:translateY(0);box-shadow:none}
.btn-primary{
  background:linear-gradient(135deg,
    rgba(96,165,250,0.22) 0%,
    rgba(96,165,250,0.14) 100%);
  border-color:rgba(96,165,250,0.35);
  color:var(--blue);font-weight:600;
  box-shadow:var(--glow-blue),var(--shadow-sm);
}
.btn-primary:hover{
  background:linear-gradient(135deg,
    rgba(96,165,250,0.32) 0%,
    rgba(96,165,250,0.22) 100%);
  border-color:rgba(96,165,250,0.55);
  box-shadow:0 0 32px rgba(96,165,250,0.25),var(--shadow-md);
  transform:translateY(-1px);
}
[data-theme="light"] .btn-primary{
  background:linear-gradient(135deg,rgba(79,70,229,0.14),rgba(79,70,229,0.08));
  border-color:rgba(79,70,229,0.3);color:var(--blue);
  box-shadow:var(--glow-blue),var(--shadow-sm);
}

/* Glass buttons (modal/panel) */
.glass-btn{
  padding:9px 22px;border-radius:var(--r-md);
  font-size:13px;font-weight:500;cursor:pointer;border:1px solid;
  font-family:var(--font-body);transition:var(--t-fast);letter-spacing:0.1px;
  backdrop-filter:var(--blur-xs);
}
.glass-btn-cancel{
  background:var(--glass-1);border-color:var(--glass-border);color:var(--text2);
}
.glass-btn-cancel:hover{
  background:var(--glass-2);color:var(--text);
  border-color:var(--glass-border-h);transform:translateY(-1px);
}
.glass-btn-danger{
  background:linear-gradient(135deg,rgba(248,113,113,0.15),rgba(248,113,113,0.08));
  border-color:rgba(248,113,113,0.35);color:var(--red);
  box-shadow:var(--glow-red);
}
.glass-btn-danger:hover{
  background:linear-gradient(135deg,rgba(248,113,113,0.28),rgba(248,113,113,0.16));
  border-color:rgba(248,113,113,0.55);
  box-shadow:0 0 28px rgba(248,113,113,0.3),var(--shadow-md);
  transform:translateY(-1px);
}
.glass-btn-restore{
  background:linear-gradient(135deg,rgba(52,211,153,0.15),rgba(52,211,153,0.08));
  border-color:rgba(52,211,153,0.35);color:var(--green);
  box-shadow:var(--glow-green);
}
.glass-btn-restore:hover{
  background:linear-gradient(135deg,rgba(52,211,153,0.28),rgba(52,211,153,0.16));
  border-color:rgba(52,211,153,0.55);
  box-shadow:0 0 28px rgba(52,211,153,0.3),var(--shadow-md);
  transform:translateY(-1px);
}

/* ════════════ LAYOUT ═══════════════════════════════ */
.layout{display:flex;flex:1;overflow:hidden;height:100%}

/* ════════════ SIDEBAR ══════════════════════════════ */

/* ── Sidebar logo header ── */
.sb-logo-header {
  padding: 16px 16px 10px;
  border-bottom: 1px solid var(--glass-border);
  margin-bottom: 6px;
  display: flex; align-items: center; justify-content: center;
}
.sb-logo-img {
  height: 40px; width: auto;
  object-fit: contain; display: block;
  /* Dark mode: white */
  filter: brightness(0) invert(1);
  transition: filter .25s ease;
}
[data-theme="light"] .sb-logo-img {
  /* Light mode: black */
  filter: brightness(0);
}

.sidebar{
  width:var(--sidebar);
  background:var(--glass-2);
  backdrop-filter:var(--blur-xl);
  -webkit-backdrop-filter:var(--blur-xl);
  border-right:1px solid var(--glass-border);
  display:flex;flex-direction:column;overflow-y:auto;flex-shrink:0;
  padding:14px 8px;
  box-shadow:2px 0 24px rgba(0,0,0,0.18);
}
[data-theme="light"] .sidebar{box-shadow:2px 0 20px rgba(0,0,0,0.07)}
.sb-section{margin-bottom:22px}
.sb-section-label{
  font-size:9.5px;font-weight:700;color:var(--text3);
  text-transform:uppercase;letter-spacing:.15em;
  padding:0 10px;margin-bottom:6px;
}
.sb-item{
  display:flex;align-items:center;gap:9px;
  padding:7px 10px;border-radius:var(--r-sm);cursor:pointer;
  font-size:12.5px;color:var(--text2);
  transition:var(--t-fast);user-select:none;
  border:1px solid transparent;font-weight:400;
  position:relative;
}
.sb-item:hover{
  background:var(--glass-2);color:var(--text);
  border-color:var(--glass-border);
}
.sb-item.active{
  background:linear-gradient(135deg,
    rgba(96,165,250,0.16) 0%,
    rgba(96,165,250,0.08) 100%);
  color:var(--blue);
  border-color:rgba(96,165,250,0.22);
  font-weight:600;
  box-shadow:var(--glow-blue),inset 0 1px 0 rgba(96,165,250,0.10);
}
[data-theme="light"] .sb-item.active{
  background:linear-gradient(135deg,rgba(79,70,229,0.12),rgba(79,70,229,0.06));
  color:var(--blue);border-color:rgba(79,70,229,0.22);
}
.sb-item .ico{font-size:14px;width:16px;text-align:center;flex-shrink:0;opacity:.75}
.sb-item.active .ico{opacity:1}
.sb-item .lbl{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sb-item.q2 .ico{color:var(--blue);opacity:1}
.sb-sep{height:1px;background:var(--glass-border);margin:8px 6px;opacity:0.7}
.sb-badge{
  background:rgba(248,113,113,0.18);color:var(--red);
  font-size:9.5px;font-weight:700;padding:1px 6px;
  border-radius:var(--r-full);margin-left:auto;
  font-family:var(--font-mono);border:1px solid rgba(248,113,113,0.28);
  text-shadow:0 0 8px rgba(248,113,113,0.4);
}

/* ════════════ MAIN + TABS ══════════════════════════ */
.main{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0}
.tabs{
  height:44px;
  background:var(--glass-1);
  backdrop-filter:var(--blur-sm);
  -webkit-backdrop-filter:var(--blur-sm);
  border-bottom:1px solid var(--glass-border);
  display:flex;align-items:flex-end;padding:0 20px;flex-shrink:0;gap:0;
}
.tab{
  padding:10px 16px;font-size:12.5px;color:var(--text2);cursor:pointer;
  border-bottom:2px solid transparent;transition:var(--t-fast);
  font-weight:400;white-space:nowrap;letter-spacing:0.1px;
  position:relative;
}
.tab:hover{color:var(--text)}
.tab.active{color:var(--text);border-bottom-color:var(--blue);font-weight:600}

/* ════════════ PAGE ════════════════════════════════ */
.page{flex:1;overflow-y:auto;padding:24px;display:none;scroll-behavior:smooth;min-width:0}
#page-dashboard{padding:0}
.page.active{display:block}
.page-inner{max-width:920px;margin:0 auto;min-width:0}
.dash-layout .page-inner,.dash-left .page-inner{max-width:none;margin:0}
/* Full-width ("port view") pages — same edge-to-edge treatment as
   Trade Log, Calendar, and Dashboard. Everything else still uses the
   centered 920px column above by default. */
#page-watchlist .page-inner,
#page-accounts .page-inner,
#page-ai .page-inner,
#page-playbook .page-inner,
#page-goals .page-inner,
#page-quarter .page-inner,
#page-monthly .page-inner,
#page-trash .page-inner,
#page-profile .page-inner{
  max-width:none;
  width:100%;
  margin:0;
  box-sizing:border-box;
}

@keyframes pageIn{
  from{opacity:0;transform:translateY(10px)}
  to{opacity:1;transform:translateY(0)}
}
.page.active .page-inner{animation:pageIn 0.24s var(--ease-out)}

/* ════════════ COVER BANNER ════════════════════════ */
.cover{
  background:linear-gradient(135deg,
    rgba(13,18,32,0.96) 0%,
    rgba(20,30,54,0.92) 55%,
    rgba(15,22,40,0.96) 100%);
  backdrop-filter:var(--blur-md);
  -webkit-backdrop-filter:var(--blur-md);
  border-radius:var(--r-xl);
  padding:22px 26px;margin-bottom:20px;
  border:1px solid var(--glass-border);
  position:relative;overflow:hidden;
  box-shadow:var(--shadow-lg),inset 0 1px 0 var(--glass-shine);
}
.cover::before{
  content:'';position:absolute;top:-60%;right:-5%;
  width:360px;height:360px;border-radius:50%;
  background:radial-gradient(circle,rgba(96,165,250,0.08) 0%,transparent 65%);
  pointer-events:none;
}
.cover::after{
  content:'';position:absolute;bottom:-40%;left:15%;
  width:240px;height:240px;border-radius:50%;
  background:radial-gradient(circle,rgba(167,139,250,0.06) 0%,transparent 65%);
  pointer-events:none;
}
[data-theme="light"] .cover{
  background:linear-gradient(135deg,rgba(79,70,229,0.88),rgba(79,70,229,0.82),rgba(79,70,229,0.88));
  border-color:rgba(255,255,255,0.18);
  box-shadow:var(--shadow-lg),inset 0 1px 0 rgba(255,255,255,0.2);
}
[data-theme="light"] .cover .cover-label{color:rgba(255,255,255,0.7)}
[data-theme="light"] .cover .cover-title{color:#fff}
[data-theme="light"] .cover .cover-sub{color:rgba(255,255,255,0.6)}
.cover-label{font-size:10px;font-weight:700;color:var(--blue);text-transform:uppercase;letter-spacing:.14em;margin-bottom:5px;position:relative;z-index:1}
.cover-title{font-family:var(--font-head);font-size:22px;font-weight:800;color:var(--text);line-height:1.2;letter-spacing:-0.5px;position:relative;z-index:1}
.cover-sub{font-size:12px;color:var(--text2);margin-top:5px;position:relative;z-index:1;line-height:1.5}

/* ════════════ KPI CARDS ══════════════════════════ */
.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:10px}
.kpi-card{
  background:var(--glass-1);
  backdrop-filter:var(--blur-md);
  -webkit-backdrop-filter:var(--blur-md);
  border:1px solid var(--glass-border);
  border-radius:var(--r-lg);padding:15px 16px;
  transition:var(--t-med);position:relative;overflow:hidden;
  box-shadow:var(--shadow-sm);
}
.kpi-card::before{
  content:'';position:absolute;top:0;left:0;right:0;height:1px;
  background:linear-gradient(90deg,transparent 0%,var(--glass-shine) 50%,transparent 100%);
}
.kpi-card::after{
  content:'';position:absolute;bottom:0;left:0;right:0;height:40%;
  background:linear-gradient(to top,rgba(0,0,0,0.06),transparent);
  pointer-events:none;
}
.kpi-card:hover{
  background:var(--glass-2);border-color:var(--glass-border-h);
  box-shadow:var(--shadow-md);transform:translateY(-2px);
}
/* Net PnL toggle card */
.kpi-card--toggle{cursor:pointer;user-select:none;}
.kpi-card--toggle:hover{border-color:rgba(99,179,237,0.35);}
.kpi-card--toggle:active{transform:scale(0.97);}
.kpi-toggle-hint{
  font-size:8px;color:var(--text3);text-transform:uppercase;
  letter-spacing:.06em;opacity:.7;margin-left:4px;
  font-family:var(--font-body);
}
.kpi-pnl-flipping .kpi-value,
.kpi-pnl-flipping .cal-an-value{
  animation:pnl-flip .28s ease;
}
@keyframes pnl-flip{
  0%{opacity:1;transform:rotateX(0deg);}
  45%{opacity:0;transform:rotateX(90deg);}
  55%{opacity:0;transform:rotateX(-90deg);}
  100%{opacity:1;transform:rotateX(0deg);}
}
.kpi-label{
  font-size:10px;color:var(--text3);margin-bottom:8px;
  font-weight:600;text-transform:uppercase;letter-spacing:.08em;
  display:flex;align-items:center;gap:5px;flex-wrap:wrap;
}
.kpi-label .cal-kpi-icon{font-size:11px;line-height:1;flex-shrink:0}
.kpi-value{
  font-family:var(--font-mono);font-size:24px;font-weight:700;
  line-height:1;letter-spacing:-0.8px;position:relative;z-index:1;
}
.kpi-value.green{color:var(--green);text-shadow:0 0 24px var(--green-glow)}
.kpi-value.red{color:var(--red);text-shadow:0 0 24px var(--red-glow)}
.kpi-value.blue{color:var(--blue);text-shadow:0 0 24px var(--blue-glow)}
.kpi-value.gold{color:var(--gold);text-shadow:0 0 24px var(--gold-glow)}
.kpi-value.teal{color:var(--teal);text-shadow:0 0 20px rgba(45,212,191,0.25)}
.kpi-value.white{color:var(--text)}

/* ════════════ INSIGHT BOX ════════════════════════ */
.insight{
  display:flex;gap:12px;
  background:linear-gradient(135deg,
    rgba(96,165,250,0.08) 0%,
    rgba(96,165,250,0.04) 100%);
  border:1px solid rgba(96,165,250,0.16);
  border-radius:var(--r-md);
  padding:13px 16px;margin-bottom:20px;align-items:flex-start;
  backdrop-filter:var(--blur-xs);
  box-shadow:inset 0 1px 0 rgba(96,165,250,0.08);
}
.insight-ico{font-size:16px;flex-shrink:0;margin-top:2px}
.insight-text{font-size:12.5px;color:rgba(148,188,255,0.88);line-height:1.55;font-weight:400}
[data-theme="light"] .insight-text{color:rgba(79,70,229,0.82)}
[data-theme="light"] .insight{background:linear-gradient(135deg,rgba(79,70,229,0.07),rgba(79,70,229,0.03));border-color:rgba(79,70,229,0.15)}

/* ════════════ SECTION HEADERS ════════════════════ */
.sec-head{
  font-size:10px;font-weight:700;color:var(--text3);
  text-transform:uppercase;letter-spacing:.14em;margin:22px 0 10px;
  display:flex;align-items:center;gap:10px;
}
.sec-head::after{content:'';flex:1;height:1px;background:var(--glass-border);opacity:.8}

/* ════════════ DATA TABLES ════════════════════════ */
.data-table{width:100%;border-collapse:collapse}
.data-table th{
  text-align:left;font-size:10px;font-weight:700;color:var(--text3);
  padding:9px 12px;border-bottom:1px solid var(--glass-border);
  text-transform:uppercase;letter-spacing:.09em;
}
.data-table td{
  padding:10px 12px;border-bottom:1px solid var(--border2);
  font-size:12.5px;color:var(--text2);
}
.data-table tbody tr{
  transition:var(--t-fast);cursor:pointer;
}
.data-table tbody tr:hover{
  background:var(--glass-1);
}
.data-table tbody tr:hover td{color:var(--text)}
.data-table tbody tr:last-child td{border-bottom:none}
.data-table td.bold{font-weight:600;color:var(--text)}
.data-table td.mono{font-family:var(--font-mono);font-size:12px;letter-spacing:-0.2px}

/* ── Compact Table View (Settings > Compact Table View) ── */
.data-table.compact-table th{ padding:5px 10px; font-size:9.5px }
.data-table.compact-table td{ padding:4px 10px; font-size:11.5px }
.data-table.compact-table tbody tr{ line-height:1.2 }

/* ════════════ PILLS ══════════════════════════════ */
.pill{
  display:inline-flex;align-items:center;
  padding:2px 9px;border-radius:var(--r-full);
  font-size:11px;font-weight:600;
  font-family:var(--font-mono);letter-spacing:0.1px;
}
.pill-green{background:var(--green-dim);color:var(--green);border:1px solid rgba(52,211,153,0.22)}
.pill-red{background:var(--red-dim);color:var(--red);border:1px solid rgba(248,113,113,0.22)}
.pill-blue{background:var(--blue-dim);color:var(--blue);border:1px solid rgba(96,165,250,0.22)}
.pill-gold{background:rgba(251,191,36,0.10);color:var(--gold);border:1px solid rgba(251,191,36,0.20)}
.pill-grey{background:var(--glass-1);color:var(--text2);border:1px solid var(--glass-border)}

/* ════════════ WIN BARS ══════════════════════════ */
.win-bar-wrap{display:flex;align-items:center;gap:8px}
.win-bar-bg{
  flex:1;height:3px;
  background:var(--glass-2);border-radius:var(--r-full);
  overflow:hidden;min-width:60px;
}
.win-bar-fill{
  height:100%;border-radius:var(--r-full);
  transition:width 0.9s var(--ease-out);
}
.win-bar-fill.green{background:linear-gradient(90deg,var(--green),rgba(52,211,153,0.5))}
.win-bar-fill.red{background:linear-gradient(90deg,var(--red),rgba(248,113,113,0.5))}

/* ════════════ OUTCOME COLORS ════════════════════ */
.outcome-win{color:var(--green);font-weight:600}
.outcome-loss{color:var(--red);font-weight:600}
.outcome-be{color:var(--blue);font-weight:600}
.pos-buy{color:var(--green);font-size:11px;font-weight:700;font-family:var(--font-mono)}
.pos-sell{color:var(--red);font-size:11px;font-weight:700;font-family:var(--font-mono)}
.stars{color:var(--gold);font-size:12px;letter-spacing:.5px;text-shadow:0 0 10px var(--gold-glow)}
.stars .empty{color:var(--text3);text-shadow:none}

/* ════════════ NEW TRADE MODAL ═══════════════════ */
.modal-overlay{
  position:fixed;inset:0;
  background:rgba(0,0,0,0.72);
  backdrop-filter:blur(22px);
  -webkit-backdrop-filter:blur(22px);
  z-index:200;display:none;
  align-items:center;justify-content:center;
  animation:fadeInBG 0.2s var(--ease-out);
}
.modal-overlay.open{display:flex}
.modal{
  background:var(--glass-2);
  backdrop-filter:var(--blur-xl);
  -webkit-backdrop-filter:var(--blur-xl);
  border:1px solid var(--glass-border);
  border-radius:var(--r-xl);
  width:640px;max-width:calc(100vw - 32px);max-height:88vh;
  display:flex;flex-direction:column;
  box-shadow:var(--shadow-xl),inset 0 1px 0 var(--glass-shine);
  animation:slideUp 0.24s var(--ease-spring);
}
.modal-body{ padding:0 28px 4px; overflow-y:auto; flex:1; }
.modal-head{ padding:20px 28px 0; display:flex;align-items:center;justify-content:space-between;margin-bottom:18px;flex-shrink:0; }
.form-actions{
  display:flex;gap:10px;justify-content:flex-end;
  padding:16px 28px 20px;
  border-top:1px solid var(--glass-border);
  flex-shrink:0;
  margin-top:0;
}

.modal-form-grid{ display:grid;grid-template-columns:1fr 1fr;gap:14px }
.modal-title{font-family:var(--font-head);font-size:17px;font-weight:700;letter-spacing:-0.3px}
.modal-close{
  background:var(--glass-1);border:1px solid var(--glass-border);
  color:var(--text2);font-size:18px;cursor:pointer;
  padding:4px 10px;border-radius:var(--r-sm);transition:var(--t-fast);
}
.modal-close:hover{background:var(--glass-2);color:var(--text);transform:scale(1.05)}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.form-field{display:flex;flex-direction:column;gap:5px}
.form-field.full{grid-column:1/-1}
.form-label{
  font-size:10px;font-weight:700;color:var(--text3);
  text-transform:uppercase;letter-spacing:.09em;
}
.form-input,.form-select,.form-textarea{
  background:var(--glass-1);
  border:1px solid var(--glass-border);
  border-radius:var(--r-sm);padding:9px 12px;
  font-size:13px;color:var(--text);
  font-family:var(--font-body);transition:var(--t-fast);
  outline:none;width:100%;box-sizing:border-box;
  backdrop-filter:var(--blur-xs);
}
.form-input:focus,.form-select:focus,.form-textarea:focus{
  border-color:rgba(96,165,250,0.5);
  background:var(--glass-2);
  box-shadow:0 0 0 3px rgba(96,165,250,0.10);
}
[data-theme="light"] .form-input,[data-theme="light"] .form-select,[data-theme="light"] .form-textarea{
  background:rgba(255,255,255,0.7);border-color:var(--glass-border);
}
.form-select option{background:var(--bg2)}
.form-textarea{resize:vertical;min-height:80px;line-height:1.55}

/* ════════════ DETAIL PANEL ══════════════════════ */
.detail-panel{
  position:fixed;right:0;top:var(--topbar);bottom:0;width:420px;
  background:var(--glass-2);
  backdrop-filter:var(--blur-xl);
  -webkit-backdrop-filter:var(--blur-xl);
  border-left:1px solid var(--glass-border);
  overflow-y:auto;
  transform:translateX(100%);
  transition:transform 0.28s var(--ease-spring);
  z-index:150;padding:22px;
  box-shadow:-8px 0 40px rgba(0,0,0,0.3);
}
[data-theme="light"] .detail-panel{background:rgba(255,255,255,0.9);box-shadow:-6px 0 30px rgba(0,0,0,0.10)}
.detail-panel.open{transform:translateX(0)}
.detail-panel.resizing{transition:none!important}
/* Resize handle — lets desktop users drag the panel's left edge to widen/narrow it */
.detail-panel-resize-handle{
  position:absolute;top:0;left:-4px;bottom:0;width:8px;
  cursor:ew-resize;z-index:20;background:transparent;touch-action:none;
}
.detail-panel-resize-handle::after{
  content:'';position:absolute;top:0;bottom:0;left:3px;width:2px;
  border-radius:2px;background:transparent;transition:background .15s ease;
}
.detail-panel-resize-handle:hover::after,
.detail-panel.resizing .detail-panel-resize-handle::after{background:var(--blue)}
body.detail-resizing{cursor:ew-resize!important;user-select:none!important}
body.detail-resizing *{user-select:none!important}
/* Mobile is a bottom-sheet, not a resizable side panel — and fullscreen is a fixed 100vw state */
@media (max-width: 768px){
  .detail-panel-resize-handle{display:none}
}
.detail-panel.fullscreen .detail-panel-resize-handle{display:none}
.det-panel-header{
  display:flex;align-items:center;justify-content:space-between;
  margin-bottom:14px;padding-bottom:12px;border-bottom:1px solid var(--glass-border);
}
.det-panel-close{
  width:30px;height:30px;border-radius:var(--r-sm);
  background:var(--glass-1);border:1px solid var(--glass-border);
  color:var(--text2);cursor:pointer;font-size:16px;
  display:flex;align-items:center;justify-content:center;
  transition:var(--t-fast);flex-shrink:0;
}
.det-panel-close:hover{background:var(--red-dim);border-color:rgba(248,113,113,0.35);color:var(--red);transform:scale(1.08)}
.det-panel-expand{
  width:30px;height:30px;border-radius:var(--r-sm);
  background:var(--glass-1);border:1px solid var(--glass-border);
  color:var(--text2);cursor:pointer;font-size:13px;
  display:flex;align-items:center;justify-content:center;
  transition:var(--t-fast);flex-shrink:0;
}
.det-panel-expand:hover{background:var(--glass-2);border-color:var(--glass-border-h);color:var(--text);transform:scale(1.08)}
/* full-screen mode */
.detail-panel.fullscreen{
  width:100vw!important;
  left:0!important;right:0!important;
  top:var(--topbar)!important;
  border-left:none;border-radius:0;
  z-index:160;
  padding:24px 28px;
}
.detail-panel.fullscreen #detail-content{
  max-width:1100px;margin:0 auto;
}
/* expand icon set via JS textContent */
.detail-pair{
  font-family:var(--font-head);font-size:26px;font-weight:800;
  margin-bottom:4px;letter-spacing:-0.8px;
}
.detail-meta{font-size:12px;color:var(--text2);margin-bottom:18px;font-weight:400}
.detail-stats{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:18px}
.detail-stat{
  background:var(--glass-1);border:1px solid var(--glass-border);
  border-radius:var(--r-md);padding:11px 13px;transition:var(--t-fast);
}
.detail-stat:hover{background:var(--glass-2);border-color:var(--glass-border-h)}
.detail-stat-label{font-size:10px;color:var(--text3);text-transform:uppercase;letter-spacing:.08em;margin-bottom:4px;font-weight:600}
.detail-stat-val{font-family:var(--font-mono);font-size:14px;font-weight:600;letter-spacing:-0.2px}
.detail-section{margin-bottom:16px}
.detail-section-label{font-size:10px;font-weight:700;color:var(--text3);text-transform:uppercase;letter-spacing:.10em;margin-bottom:8px}
.checklist{display:flex;flex-direction:column;gap:5px}
.check-item{
  display:flex;align-items:center;gap:9px;font-size:12px;
  padding:7px 11px;background:var(--glass-0);
  border:1px solid var(--glass-border);
  border-radius:var(--r-sm);color:var(--text2);
  transition:var(--t-fast);cursor:pointer;
}
.check-item:hover{background:var(--glass-1)}
.check-item .ci{
  width:15px;height:15px;border-radius:4px;
  border:1.5px solid var(--glass-border);flex-shrink:0;
  display:flex;align-items:center;justify-content:center;
  font-size:9px;transition:var(--t-fast);
}
.check-item.checked .ci{background:var(--green);border-color:var(--green);color:#fff;box-shadow:0 0 8px var(--green-glow)}
.notes-area{
  width:100%;background:var(--glass-1);
  border:1px solid var(--glass-border);
  border-radius:var(--r-md);padding:11px 12px;
  font-size:12px;color:var(--text);font-family:var(--font-body);
  resize:vertical;min-height:90px;outline:none;line-height:1.55;
  transition:var(--t-fast);
}
.notes-area:focus{border-color:rgba(96,165,250,0.45);background:var(--glass-2);box-shadow:0 0 0 3px rgba(96,165,250,0.08)}
.img-upload-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:6px}
.img-slot{
  aspect-ratio:16/10;
  border:1.5px dashed var(--glass-border);
  border-radius:var(--r-md);
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  cursor:pointer;background:var(--glass-0);
  transition:var(--t-fast);position:relative;overflow:hidden;font-size:20px;
}
.img-slot:hover{border-color:rgba(96,165,250,0.4);background:var(--glass-1);transform:scale(1.02)}
.img-slot .slot-label{font-size:10px;color:var(--text3);margin-top:4px;text-align:center}
.img-slot img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:10px}
.img-slot .img-overlay{
  position:absolute;inset:0;background:rgba(0,0,0,.55);
  display:flex;align-items:center;justify-content:center;
  opacity:0;transition:var(--t-fast);border-radius:10px;font-size:12px;color:#fff;
}
.img-slot:hover .img-overlay{opacity:1}
.emotion-btns{display:flex;flex-wrap:wrap;gap:6px}
.emo-btn{
  padding:5px 12px;border-radius:var(--r-full);
  border:1px solid var(--glass-border);background:var(--glass-1);
  color:var(--text2);font-size:11px;cursor:pointer;transition:var(--t-fast);font-weight:500;
}
.emo-btn:hover{background:var(--glass-2);color:var(--text);border-color:var(--glass-border-h)}
.emo-btn.active{background:var(--blue-dim);border-color:rgba(96,165,250,0.35);color:var(--blue);box-shadow:var(--glow-blue)}
.save-btn{
  width:100%;padding:11px;
  background:linear-gradient(135deg,rgba(96,165,250,0.22),rgba(96,165,250,0.14));
  border:1px solid rgba(96,165,250,0.35);
  border-radius:var(--r-md);color:var(--blue);font-size:13px;
  font-weight:600;font-family:var(--font-body);cursor:pointer;
  margin-top:14px;transition:var(--t-fast);
  box-shadow:var(--glow-blue);letter-spacing:0.2px;
}
.save-btn:hover{background:linear-gradient(135deg,rgba(96,165,250,0.32),rgba(96,165,250,0.22));box-shadow:0 0 28px rgba(96,165,250,0.25);transform:translateY(-1px)}
.save-btn.saved{background:linear-gradient(135deg,rgba(52,211,153,0.22),rgba(52,211,153,0.12));border-color:rgba(52,211,153,0.35);color:var(--green);box-shadow:var(--glow-green)}

/* ════════════ WATCHLIST ════════════════════════ */
.wl-pair-card{
  background:var(--glass-1);
  backdrop-filter:var(--blur-sm);
  border:1px solid var(--glass-border);
  border-radius:var(--r-lg);padding:16px;margin-bottom:10px;
  transition:var(--t-med);box-shadow:var(--shadow-sm);
}
.wl-pair-card:hover{background:var(--glass-2);border-color:var(--glass-border-h);box-shadow:var(--shadow-md);transform:translateY(-1px)}
.wl-pair-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.wl-pair-name{font-family:var(--font-head);font-size:16px;font-weight:700;letter-spacing:-0.3px}
.wl-priority{display:flex;align-items:center;gap:5px;font-size:11px;font-weight:500}
.wl-tf-row{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px}
.tf-chip{font-size:11px;padding:3px 10px;border-radius:var(--r-full);border:1px solid;font-family:var(--font-mono);font-weight:500}
.tf-bull{background:var(--green-dim);color:var(--green);border-color:rgba(52,211,153,0.25)}
.tf-bear{background:var(--red-dim);color:var(--red);border-color:rgba(248,113,113,0.25)}
.tf-neu{background:var(--glass-1);color:var(--text2);border-color:var(--glass-border)}
.wl-note{font-size:12.5px;color:var(--text2);line-height:1.55}


/* ════════════ WATCHLIST REDESIGN ════════════════ */

/* Quarter navigator */
.wl-quarter-nav{display:flex;gap:8px;margin-bottom:20px;flex-wrap:wrap}
.wl-q-tab{padding:7px 16px;border-radius:var(--r-full);border:1px solid var(--glass-border);
  background:var(--glass-1);color:var(--text2);font-size:11.5px;font-weight:600;cursor:pointer;
  transition:var(--t-fast);font-family:var(--font-mono);letter-spacing:.5px;white-space:nowrap}
.wl-q-tab:hover{background:var(--glass-2);color:var(--text);border-color:var(--glass-border-h)}
.wl-q-tab.active{background:var(--blue-dim);color:var(--blue);border-color:rgba(96,165,250,0.35);
  box-shadow:var(--glow-blue)}

/* Week bar */
.wl-week-bar{display:flex;align-items:center;gap:10px;margin-bottom:24px;padding-bottom:18px;
  border-bottom:1px solid var(--glass-border)}
.wl-week-scroll{display:flex;gap:7px;flex-wrap:wrap;flex:1}
.wl-week-chip{padding:5px 13px;border-radius:var(--r-full);border:1px solid var(--glass-border);
  background:var(--glass-1);color:var(--text2);font-size:11px;font-weight:600;cursor:pointer;
  transition:var(--t-fast);font-family:var(--font-mono);white-space:nowrap}
.wl-week-chip:hover{background:var(--glass-2);color:var(--text);border-color:var(--glass-border-h)}
.wl-week-chip.active{background:rgba(52,211,153,0.12);color:var(--green);
  border-color:rgba(52,211,153,0.35);box-shadow:var(--glow-green)}
.wl-add-week-btn{flex-shrink:0;padding:5px 14px;border-radius:var(--r-full);
  border:1.5px dashed rgba(96,165,250,0.25);background:transparent;color:var(--text3);
  font-size:11px;font-weight:700;cursor:pointer;transition:var(--t-fast);white-space:nowrap;
  letter-spacing:.3px}
.wl-add-week-btn:hover{border-color:var(--blue);color:var(--blue);background:var(--blue-dim)}

/* Week header */
.wl-week-header{display:flex;align-items:flex-start;justify-content:space-between;
  margin-bottom:22px;gap:14px;flex-wrap:wrap;
  padding:16px 18px;background:var(--glass-1);border:1px solid var(--glass-border);
  border-radius:var(--r-lg)}
.wl-week-meta{flex:1;min-width:0}
.wl-week-title{font-family:var(--font-head);font-size:17px;font-weight:800;color:var(--text);
  letter-spacing:-.4px;margin-bottom:3px}
.wl-week-date{font-size:11px;color:var(--text3);font-family:var(--font-mono);letter-spacing:.3px}
.wl-week-badges{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:8px}
.wl-badge{display:inline-flex;align-items:center;gap:4px;padding:4px 11px;border-radius:var(--r-full);
  border:1px solid;font-size:11px;font-weight:700;font-family:var(--font-mono);letter-spacing:.3px;
  line-height:1}
.wl-badge.bull{background:rgba(52,211,153,0.12);color:var(--green);border-color:rgba(52,211,153,0.28)}
.wl-badge.bear{background:rgba(248,113,113,0.12);color:var(--red);border-color:rgba(248,113,113,0.28)}
.wl-badge.neu{background:var(--glass-2);color:var(--text2);border-color:var(--glass-border)}
.wl-badge.risk-off{background:rgba(248,113,113,0.10);color:var(--red);border-color:rgba(248,113,113,0.25)}
.wl-badge.risk-on{background:rgba(52,211,153,0.10);color:var(--green);border-color:rgba(52,211,153,0.25)}
.wl-week-actions{display:flex;gap:6px;flex-shrink:0}
.wl-week-btn{padding:5px 13px;border-radius:var(--r-full);border:1px solid var(--glass-border);
  background:var(--glass-1);color:var(--text2);font-size:11px;font-weight:600;cursor:pointer;
  transition:var(--t-fast)}
.wl-week-btn:hover{background:var(--glass-2);color:var(--text);border-color:var(--glass-border-h)}
.wl-week-btn.danger:hover{background:rgba(248,113,113,0.12);color:var(--red);
  border-color:rgba(248,113,113,0.3)}
.wl-week-btn.archive:hover{background:rgba(148,163,184,0.15);color:var(--text)}
.wl-week-btn.restore{color:var(--green);border-color:rgba(52,211,153,0.3)}
.wl-week-btn.restore:hover{background:rgba(52,211,153,0.12);border-color:rgba(52,211,153,0.5)}
.wl-week-btn.primary{color:var(--green);border-color:rgba(52,211,153,0.35);background:rgba(52,211,153,0.08)}
.wl-week-btn.primary:hover{background:rgba(52,211,153,0.18);border-color:rgba(52,211,153,0.55);color:var(--green)}

/* Inline edit input for milestones + goal items */
.cl-item.editing{cursor:default;box-shadow:0 0 0 2px var(--blue),inset 0 0 0 1px rgba(96,165,250,0.15)}
.cl-edit-input{
  flex:1;font-size:12px;color:var(--text);background:var(--glass-1);
  border:1px solid var(--glass-border-h);border-radius:6px;padding:5px 8px;
  font-family:inherit;outline:none;min-width:0;
}
.cl-edit-input:focus{border-color:var(--blue);box-shadow:0 0 0 2px rgba(96,165,250,0.2)}

/* Pair grid */
.wl-pairs-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));
  gap:14px;margin-bottom:24px}
.wl-pair-card-v2{background:var(--glass-1);border:1px solid var(--glass-border);
  border-radius:var(--r-lg);overflow:hidden;cursor:pointer;transition:var(--t-med);position:relative}
.wl-pair-card-v2:hover{background:var(--glass-2);border-color:var(--glass-border-h);
  box-shadow:var(--shadow-md);transform:translateY(-2px)}
.wl-pair-card-v2.high{border-top:2px solid var(--red)}
.wl-pair-card-v2.med{border-top:2px solid var(--gold)}
.wl-pair-card-v2.low{border-top:2px solid var(--green)}

/* Chart image area */
.wl-card-chart{width:100%;height:148px;display:block;background:var(--glass-1);
  position:relative;overflow:hidden;border-bottom:1px solid var(--glass-border)}
.wl-card-chart-img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .3s ease}
.wl-pair-card-v2:hover .wl-card-chart-img{transform:scale(1.03)}
.wl-card-chart-placeholder{width:100%;height:100%;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:6px;
  background:linear-gradient(135deg,rgba(96,165,250,0.04) 0%,rgba(52,211,153,0.04) 100%)}
.wl-card-chart-placeholder span{font-size:24px;opacity:.6}
.wl-card-chart-placeholder p{font-size:11px;color:var(--text3);font-family:var(--font-mono)}
.wl-card-chart-count{position:absolute;bottom:7px;right:8px;background:rgba(0,0,0,0.6);
  backdrop-filter:var(--blur-xs);border-radius:var(--r-full);padding:2px 9px;
  font-size:10px;font-family:var(--font-mono);color:rgba(255,255,255,0.75);letter-spacing:.3px}
.wl-card-body{padding:12px 14px 14px}
.wl-card-pair-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.wl-card-pair-name{font-family:var(--font-head);font-size:15px;font-weight:800;
  letter-spacing:-.3px;color:var(--text)}
.wl-card-badges{display:flex;gap:5px;align-items:center}
.wl-card-tfs{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:9px}
.wl-card-note{font-size:11.5px;color:var(--text2);line-height:1.55;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

/* Add pair card */
.wl-add-pair-card{background:transparent;border:1.5px dashed rgba(96,165,250,0.18);
  border-radius:var(--r-lg);display:flex;flex-direction:column;align-items:center;
  justify-content:center;gap:8px;min-height:220px;cursor:pointer;transition:var(--t-fast);
  color:var(--text3)}
.wl-add-pair-card:hover{border-color:var(--blue);color:var(--blue);background:var(--blue-dim)}
.wl-add-pair-card span{font-size:28px;opacity:.7}
.wl-add-pair-card p{font-size:12px;font-weight:600;letter-spacing:.3px}

/* ══════════════════════════════════════════════════════════════════
   WATCHLIST v2 — Readiness Card, Market Overview, Rings & Gauges
   ══════════════════════════════════════════════════════════════════ */

/* Generic ring (readiness score + confidence rings) */
.wl-ring-wrap{position:relative;display:inline-flex;align-items:center;justify-content:center}
.wl-ring-svg{width:100%;height:100%;transform:rotate(-90deg)}
.wl-ring-track{fill:none;stroke:var(--glass-2)}
.wl-ring-fill{fill:none;stroke-linecap:round;transition:stroke-dashoffset 1s var(--ease-out)}
.wl-ring-fill.wl-ring-good{stroke:var(--green)}
.wl-ring-fill.wl-ring-mid{stroke:var(--gold)}
.wl-ring-fill.wl-ring-low{stroke:var(--red)}
.wl-ring-center{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}

/* Weekly Readiness card */
.wl-readiness-card{display:flex;align-items:center;gap:26px;
  background:linear-gradient(135deg,rgba(96,165,250,0.07),rgba(52,211,153,0.05));
  border:1px solid var(--glass-border);border-radius:var(--r-lg);
  padding:24px 28px;margin-bottom:18px;backdrop-filter:blur(20px)}
.wl-readiness-ring-col{display:flex;flex-direction:column;align-items:center;gap:10px;flex-shrink:0}
.wl-readiness-num{font-family:var(--font-head);font-size:26px;font-weight:800;color:var(--text)}
.wl-readiness-pct{font-size:14px;font-weight:600;color:var(--text2)}
.wl-readiness-status{font-size:12px;font-weight:700;color:var(--text2);text-align:center;
  letter-spacing:.2px;white-space:nowrap}
.wl-readiness-divider{width:1px;align-self:stretch;background:var(--glass-border)}
.wl-readiness-factors{flex:1;display:flex;flex-direction:column;gap:8px;min-width:0}
.wl-readiness-title{font-family:var(--font-head);font-size:14px;font-weight:800;
  color:var(--text);margin-bottom:4px}
.wl-factor-row{display:flex;align-items:center;gap:10px;font-size:12px}
.wl-factor-label{display:flex;align-items:center;gap:7px;color:var(--text2);min-width:150px;flex-shrink:0}
.wl-factor-dot{width:7px;height:7px;border-radius:50%;background:var(--glass-3);flex-shrink:0}
.wl-factor-dot.part{background:var(--gold)}
.wl-factor-dot.done{background:var(--green)}
.wl-factor-bar-track{flex:1;height:5px;border-radius:var(--r-full);background:var(--glass-2);overflow:hidden}
.wl-factor-bar-fill{height:100%;border-radius:var(--r-full);
  background:linear-gradient(90deg,var(--blue),var(--green));transition:width .6s var(--ease-out)}
.wl-factor-pct{width:34px;text-align:right;color:var(--text3);font-family:var(--font-mono);font-size:11px}

@media (max-width: 780px){
  .wl-readiness-card{flex-direction:column;gap:16px}
  .wl-readiness-divider{width:100%;height:1px}
  .wl-factor-label{min-width:120px}
}

/* Market Overview quick-glance row */
.wl-overview-row{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin-bottom:18px}
.wl-overview-widget{background:var(--glass-1);border:1px solid var(--glass-border);
  border-radius:var(--r-md);padding:13px 14px;cursor:pointer;transition:var(--t-fast);
  display:flex;flex-direction:column;gap:8px;align-items:flex-start}
.wl-overview-widget:hover{background:var(--glass-2);border-color:var(--glass-border-h);transform:translateY(-1px)}
.wl-overview-label{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--text3);font-weight:700}
.wl-overview-gauge{align-items:center}
@media (max-width: 980px){.wl-overview-row{grid-template-columns:repeat(3,1fr)}}
@media (max-width: 600px){.wl-overview-row{grid-template-columns:repeat(2,1fr)}}

/* Dollar Strength gauge (semi-circle) */
.wl-gauge-wrap{display:flex;flex-direction:column;align-items:center;gap:2px;width:100%}
.wl-gauge-svg{width:100px;height:54px}
.wl-gauge-track{fill:none;stroke:var(--glass-2);stroke-width:7;stroke-linecap:round}
.wl-gauge-fill{fill:none;stroke:var(--blue);stroke-width:7;
  stroke-linecap:round;transition:stroke-dashoffset .8s var(--ease-out)}
.wl-gauge-needle-base{fill:var(--text2)}
.wl-gauge-readout{font-size:11px;font-weight:700;color:var(--text2);margin-top:-6px}

/* ── Redesigned pair cards ── */
.wl-card-confidence-ring{position:absolute;top:8px;left:8px;background:rgba(0,0,0,0.55);
  border-radius:50%;padding:2px}
.wl-mini-ring-num{font-size:11px;font-weight:800;color:#fff}
.wl-card-chart{position:relative}
.wl-card-quick-actions{position:absolute;top:8px;right:8px;display:flex;gap:4px;
  opacity:0;transition:opacity .18s ease}
.wl-pair-card-v2:hover .wl-card-quick-actions{opacity:1}
.wl-card-quick-actions button{width:26px;height:26px;border-radius:7px;border:1px solid rgba(255,255,255,0.15);
  background:rgba(0,0,0,0.55);color:#fff;display:flex;align-items:center;justify-content:center;
  cursor:pointer;transition:var(--t-fast)}
.wl-card-quick-actions button:hover{background:rgba(0,0,0,0.8)}
.wl-card-quick-actions button.wl-qa-danger:hover{background:var(--red);border-color:var(--red)}
.wl-card-quick-actions .icn{width:13px;height:13px}
.wl-pair-archived{opacity:.55}

.wl-card-meta-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:8px 0}
.wl-model-chip{font-size:10px;font-weight:600;color:var(--text2);background:var(--glass-2);
  border:1px solid var(--glass-border);border-radius:var(--r-full);padding:3px 9px}
.wl-confluence-chip{font-size:10px;font-weight:600;color:var(--blue);background:var(--blue-dim);
  border:1px solid rgba(96,165,250,0.25);border-radius:var(--r-full);padding:3px 9px;font-family:var(--font-mono)}
.tf-chip.tf-analyzed{box-shadow:inset 0 0 0 1px currentColor}

.wl-card-stars-row{display:flex;align-items:center;gap:6px;margin-bottom:6px}
.wl-card-stars .icn{width:12px;height:12px}
.wl-card-stars-label{font-size:10px;color:var(--text3);text-transform:uppercase;letter-spacing:.05em}
.wl-card-expected{font-size:11.5px;color:var(--text2);line-height:1.5;margin-bottom:6px}
.wl-card-expected strong{color:var(--text);font-weight:700}

/* Archived section */
.wl-archived-toggle{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:600;
  color:var(--text3);cursor:pointer;padding:10px 2px;transition:var(--t-fast)}
.wl-archived-toggle:hover{color:var(--text2)}
.wl-archived-toggle .icn{width:14px;height:14px}
.wl-pairs-grid--archived{margin-bottom:16px}

/* Economic calendar "mark reviewed" */
.wl-cal-reviewed-btn{display:flex;align-items:center;gap:5px;background:var(--glass-1);
  border:1px solid var(--glass-border);color:var(--text2);border-radius:var(--r-sm);
  padding:5px 11px;font-size:11px;font-weight:600;cursor:pointer;transition:var(--t-fast)}
.wl-cal-reviewed-btn:hover{background:var(--glass-2)}
.wl-cal-reviewed-btn.active{background:var(--green-dim);color:var(--green);border-color:rgba(52,211,153,0.3)}
.wl-cal-reviewed-btn .icn{width:13px;height:13px}

/* ── Stage timeline (Expandable Pair Analysis modal) ── */
.wl-stage-timeline{display:flex;flex-direction:column;gap:0;margin:12px 0 18px}
.wl-stage-block{position:relative;padding:0 0 20px 26px}
.wl-stage-connector{position:absolute;left:6px;top:6px;bottom:-4px;width:2px;background:var(--glass-border)}
.wl-stage-connector.first{top:6px}
.wl-stage-block:last-child .wl-stage-connector{bottom:auto;height:14px}
.wl-stage-block::before{content:'';position:absolute;left:2px;top:4px;width:10px;height:10px;
  border-radius:50%;background:var(--blue);border:2px solid var(--bg);box-shadow:0 0 0 1px var(--glass-border)}
.wl-stage-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.wl-stage-name{font-family:var(--font-head);font-weight:800;font-size:13px;color:var(--text)}
.wl-stage-body{background:var(--glass-1);border:1px solid var(--glass-border);
  border-radius:var(--r-md);padding:14px 16px;display:flex;flex-direction:column;gap:12px}
.wl-stage-charts{display:flex;gap:8px;flex-wrap:wrap}
.wl-stage-chart-thumb{width:84px;height:60px;object-fit:cover;border-radius:8px;cursor:pointer;
  border:1px solid var(--glass-border);transition:var(--t-fast)}
.wl-stage-chart-thumb:hover{border-color:var(--blue);transform:scale(1.04)}
.wl-stage-no-chart{font-size:11px;color:var(--text3);font-style:italic;padding:6px 0}
.wl-stage-field label{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.06em;
  color:var(--text3);font-weight:700;margin-bottom:5px}
.wl-stage-field textarea{width:100%;background:var(--glass-1);border:1px solid var(--glass-border);
  border-radius:var(--r-sm);padding:8px 10px;color:var(--text);font-size:12.5px;font-family:var(--font-body);
  resize:vertical;transition:var(--t-fast)}
.wl-stage-field textarea:focus{outline:none;border-color:var(--blue);background:var(--glass-2)}
.wl-stage-risk-row{display:flex;align-items:center;gap:10px}
.wl-stage-risk-row label{margin-bottom:0}

.wl-stage-liq-grid{display:flex;flex-wrap:wrap;gap:6px}
.wl-stage-liq-chip{display:flex;align-items:center;gap:5px;font-size:10.5px;font-weight:600;
  background:var(--glass-1);border:1px solid var(--glass-border);color:var(--text3);
  border-radius:var(--r-full);padding:4px 10px;cursor:pointer;transition:var(--t-fast)}
.wl-stage-liq-chip:hover{border-color:var(--glass-border-h);color:var(--text2)}
.wl-stage-liq-chip.checked{background:var(--green-dim);border-color:rgba(52,211,153,0.3);color:var(--green)}
.wl-stage-liq-chip .icn{width:11px;height:11px}

.wl-view-header-row2{display:flex;align-items:center;gap:14px;margin-top:10px}
.wl-star-row{display:inline-flex;gap:2px}
.wl-star-row .icn{width:14px;height:14px}
.wl-star-btn{cursor:pointer;display:inline-flex}
.wl-star-btn .icn{width:16px;height:16px}

/* Chart tag select on pending chart thumbnails (add/edit pair form) */
.wl-chart-thumb-tag{width:100%;margin-top:4px;font-size:10px;background:var(--glass-2);
  border:1px solid var(--glass-border);color:var(--text2);border-radius:6px;padding:2px 4px}

[data-theme="light"] .wl-readiness-card{background:linear-gradient(135deg,rgba(37,99,235,0.05),rgba(4,135,94,0.04))}
[data-theme="light"] .wl-overview-widget{background:rgba(255,255,255,0.7)}
[data-theme="light"] .wl-stage-body{background:rgba(255,255,255,0.7)}

/* ── Daily Gameplan v2 additions ── */
.wl-day-session-row{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:16px}
.wl-day-session-item{display:flex;flex-direction:column;gap:6px;background:var(--glass-1);
  border:1px solid var(--glass-border);border-radius:var(--r-sm);padding:10px 12px}
.wl-day-session-item .wl-badge{cursor:pointer;width:fit-content}
@media (max-width: 780px){.wl-day-session-row{grid-template-columns:repeat(2,1fr)}}

.wl-day-session-setup{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px;margin-top:8px}
@media (max-width: 780px){.wl-day-session-setup{grid-template-columns:1fr}}

.wl-day-vitals-row{display:flex;gap:18px;margin-top:10px;flex-wrap:wrap}
.wl-day-vital{display:flex;flex-direction:column;gap:5px}
.wl-day-sleep-input{width:64px;padding:5px 8px;font-size:12px}

/* ── Weekly Checklist + Weekly Focus ── */
.wl-checklist-focus-row{display:grid;grid-template-columns:1.1fr 1fr;gap:16px;margin-bottom:18px}
@media (max-width: 900px){.wl-checklist-focus-row{grid-template-columns:1fr}}
.wl-checklist-card,.wl-focus-card{background:var(--glass-1);border:1px solid var(--glass-border);
  border-radius:var(--r-lg);padding:18px 20px}
.wl-checklist-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.wl-checklist-title{font-family:var(--font-head);font-weight:800;font-size:14px;color:var(--text)}
.wl-checklist-pct-wrap{display:flex;align-items:center;gap:8px}
.wl-checklist-pct{font-family:var(--font-mono);font-size:12px;font-weight:700;color:var(--text2);width:32px;text-align:right}
.wl-checklist-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}
@media (max-width: 520px){.wl-checklist-grid{grid-template-columns:1fr}}
.wl-checklist-row{display:flex;align-items:center;gap:9px;background:transparent;border:none;
  color:var(--text2);font-size:12.5px;padding:7px 6px;border-radius:8px;cursor:pointer;
  text-align:left;transition:var(--t-fast);width:100%}
.wl-checklist-row:hover{background:var(--glass-2)}
.wl-checklist-row.checked{color:var(--text)}
.wl-checklist-box{display:flex;color:var(--text3)}
.wl-checklist-box .icn{width:15px;height:15px}
.wl-checklist-row.checked .wl-checklist-box{color:var(--green)}
.wl-checklist-row.checked span:last-child{text-decoration:line-through;text-decoration-color:var(--glass-border-h)}

.wl-focus-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media (max-width: 520px){.wl-focus-grid{grid-template-columns:1fr}}

/* ── AI Trading Coach ── */
.wl-coach-card{background:linear-gradient(135deg,rgba(139,92,246,0.06),rgba(96,165,250,0.04));
  border:1px solid var(--glass-border);border-radius:var(--r-lg);padding:16px 20px;margin-bottom:16px}
.wl-coach-head{display:flex;align-items:center;justify-content:space-between;cursor:pointer;user-select:none}
.wl-coach-head-left{display:flex;align-items:center;gap:10px}
.wl-coach-brain{display:flex;color:var(--blue)}
.wl-coach-brain .icn{width:17px;height:17px}
.wl-coach-badge{background:var(--red);color:#fff;font-size:10px;font-weight:800;border-radius:var(--r-full);
  padding:2px 7px;line-height:1.4}
.wl-coach-chevron{display:flex;color:var(--text3);transition:transform .2s var(--ease-out)}
.wl-coach-chevron.open{transform:rotate(90deg)}
.wl-coach-chevron .icn{width:14px;height:14px}
.wl-coach-body{margin-top:14px;display:flex;flex-direction:column;gap:8px}
.wl-coach-row{display:flex;align-items:flex-start;gap:10px;font-size:12.5px;line-height:1.5;
  padding:10px 12px;border-radius:var(--r-sm);background:var(--glass-1);color:var(--text2)}
.wl-coach-row.warn{border-left:3px solid var(--gold)}
.wl-coach-row.info{border-left:3px solid var(--blue)}
.wl-coach-row.good{border-left:3px solid var(--green)}
.wl-coach-icon{flex-shrink:0;margin-top:1px}
.wl-coach-row.warn .wl-coach-icon{color:var(--gold)}
.wl-coach-row.info .wl-coach-icon{color:var(--blue)}
.wl-coach-row.good .wl-coach-icon{color:var(--green)}
.wl-coach-icon .icn{width:14px;height:14px}

/* ── Performance Insights ── */
.wl-insights-card{background:var(--glass-1);border:1px solid var(--glass-border);
  border-radius:var(--r-lg);padding:18px 20px;margin-bottom:16px}
.wl-insight-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px 20px}
@media (max-width: 600px){.wl-insight-grid{grid-template-columns:1fr}}
.wl-insight-row{display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:9px 0;border-bottom:1px solid var(--glass-border)}
.wl-insight-label{font-size:12px;color:var(--text3);font-weight:600}
.wl-insight-value{font-size:12.5px;color:var(--text);font-weight:700;font-family:var(--font-mono);text-align:right}
.wl-insight-corr{margin-top:14px;padding-top:14px;border-top:1px solid var(--glass-border);
  font-size:12px;color:var(--text2);line-height:1.6}

/* ── Weekly Reflection ── */
.wl-reflection-card{background:var(--glass-1);border:1px solid var(--glass-border);
  border-radius:var(--r-lg);padding:18px 20px;margin-bottom:16px}
.wl-reflection-locked{text-align:center;padding:28px 20px}
.wl-reflection-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:8px}
@media (max-width: 700px){.wl-reflection-grid{grid-template-columns:1fr}}

/* Empty state */
.wl-empty-state{text-align:center;padding:70px 20px}
.wl-empty-icon{font-size:46px;margin-bottom:14px;opacity:.7}
.wl-empty-title{font-family:var(--font-head);font-size:18px;font-weight:700;
  color:var(--text);margin-bottom:8px}
.wl-empty-sub{font-size:13px;color:var(--text2);line-height:1.65;
  max-width:340px;margin:0 auto}

/* ── Modals ── */
.wl-modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.70);
  backdrop-filter:blur(4px);z-index:900;opacity:0;pointer-events:none;transition:opacity .2s}
.wl-modal-overlay.open{opacity:1;pointer-events:all}
.wl-modal{position:fixed;top:50%;left:50%;
  transform:translate(-50%,-48%) scale(0.96);
  background:var(--surface);
  border:1px solid var(--glass-border);
  border-radius:18px;box-shadow:var(--shadow-xl);z-index:901;
  width:92%;max-width:480px;max-height:88vh;overflow-y:auto;
  opacity:0;pointer-events:none;
  transition:all .22s cubic-bezier(0.34,1.56,0.64,1)}
.wl-modal.wl-modal-wide{max-width:760px}
.wl-modal.open{opacity:1;pointer-events:all;transform:translate(-50%,-50%) scale(1)}
.wl-modal-head{display:flex;align-items:center;justify-content:space-between;
  padding:16px 20px 13px;border-bottom:1px solid var(--glass-border);
  position:sticky;top:0;background:var(--surface);z-index:2;border-radius:18px 18px 0 0}
.wl-modal-title{font-family:var(--font-head);font-size:15px;font-weight:800;color:var(--text)}
.wl-modal-close{background:var(--glass-1);border:1px solid var(--glass-border);
  color:var(--text2);cursor:pointer;font-size:13px;width:28px;height:28px;
  border-radius:50%;display:flex;align-items:center;justify-content:center;
  transition:var(--t-fast)}
.wl-modal-close:hover{background:var(--glass-2);color:var(--text)}
.wl-modal-body{padding:18px 20px 22px}

/* ── Form elements — dark-mode correct ── */
.wl-form-row{margin-bottom:14px}
.wl-form-label{font-size:10.5px;font-weight:700;color:var(--text3);letter-spacing:.7px;
  text-transform:uppercase;margin-bottom:5px;display:block}
.wl-form-input,.wl-form-select,.wl-form-textarea{
  width:100%;
  background:var(--glass-2);
  border:1px solid var(--glass-border);
  border-radius:10px;padding:9px 12px;
  color:var(--text);
  font-size:13px;font-family:var(--font-body);
  transition:var(--t-fast);box-sizing:border-box;
  -webkit-appearance:none;appearance:none}
.wl-form-input:focus,.wl-form-select:focus,.wl-form-textarea:focus{
  outline:none;border-color:var(--border-focus);background:var(--glass-3);
  box-shadow:0 0 0 3px rgba(96,165,250,0.12)}
.wl-form-textarea{resize:vertical;min-height:80px;line-height:1.55}
.wl-form-select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2394a3b8' d='M6 8L1 3h10z'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 12px center;padding-right:32px;cursor:pointer}
.wl-form-select option{background:#1a2032;color:#f0f4ff}
.wl-form-2col{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.wl-form-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:18px;
  padding-top:14px;border-top:1px solid var(--glass-border)}

/* ── Buttons ── */
.wl-btn-primary{padding:8px 20px;border-radius:var(--r-full);border:none;
  background:var(--blue);color:#fff;font-size:12.5px;font-weight:700;cursor:pointer;
  transition:var(--t-fast);letter-spacing:.2px}
.wl-btn-primary:hover{opacity:.88;transform:translateY(-1px);box-shadow:var(--glow-blue)}
.wl-btn-secondary{padding:8px 16px;border-radius:var(--r-full);
  border:1px solid var(--glass-border);background:var(--glass-2);color:var(--text2);
  font-size:12.5px;font-weight:600;cursor:pointer;transition:var(--t-fast)}
.wl-btn-secondary:hover{background:var(--glass-3);color:var(--text)}
.wl-btn-danger{padding:8px 16px;border-radius:var(--r-full);
  border:1px solid rgba(248,113,113,0.3);background:rgba(248,113,113,0.1);
  color:var(--red);font-size:12.5px;font-weight:600;cursor:pointer;transition:var(--t-fast)}
.wl-btn-danger:hover{background:rgba(248,113,113,0.2)}

/* ── TF selector in modal ── */
.wl-tf-selector{display:flex;gap:7px;flex-wrap:wrap}
.wl-tf-opt{display:flex;align-items:center;gap:6px;padding:5px 10px;border-radius:9px;
  border:1px solid var(--glass-border);background:var(--glass-2);cursor:pointer;
  font-size:11px;font-family:var(--font-mono);font-weight:500;transition:var(--t-fast)}
.wl-tf-opt span{color:var(--text2);min-width:44px}
.wl-tf-opt select{background:transparent;border:none;color:var(--text);font-size:11px;
  font-family:var(--font-mono);outline:none;cursor:pointer;padding:0 2px;
  -webkit-appearance:none}
.wl-tf-opt select option{background:#1a2032;color:#f0f4ff}

/* ── Chart upload zone ── */
.wl-chart-upload-zone{border:1.5px dashed rgba(96,165,250,0.22);border-radius:12px;
  padding:26px 20px;text-align:center;cursor:pointer;transition:var(--t-fast);margin-top:4px}
.wl-chart-upload-zone:hover{border-color:var(--blue);background:var(--blue-dim)}
.wl-chart-upload-zone p{font-size:11.5px;color:var(--text3);margin-top:6px}
.wl-chart-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));
  gap:9px;margin-bottom:12px}
.wl-chart-thumb-wrap{position:relative;border-radius:9px;overflow:hidden;aspect-ratio:16/9;
  border:1px solid var(--glass-border)}
.wl-chart-thumb{width:100%;height:100%;object-fit:cover;display:block}
.wl-chart-thumb-label{position:absolute;bottom:0;left:0;right:0;background:rgba(0,0,0,0.72);
  padding:3px 7px;font-size:9.5px;color:rgba(255,255,255,0.8);font-family:var(--font-mono);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wl-chart-thumb-del{position:absolute;top:4px;right:4px;background:rgba(0,0,0,0.65);
  border:none;color:#fff;width:20px;height:20px;border-radius:50%;cursor:pointer;
  font-size:10px;display:flex;align-items:center;justify-content:center;transition:var(--t-fast)}
.wl-chart-thumb-del:hover{background:var(--red)}

/* ── VIEW modal styles ── */
.wl-view-header{margin-bottom:18px;padding-bottom:16px;border-bottom:1px solid var(--glass-border)}
.wl-view-note{margin-top:12px;font-size:13px;color:var(--text2);line-height:1.6;
  padding:11px 13px;background:var(--glass-1);border-radius:10px;
  border-left:2px solid rgba(96,165,250,0.3)}
.wl-view-charts-section{margin-bottom:4px}
.wl-view-section-label{font-size:10px;font-weight:700;color:var(--text3);
  letter-spacing:.8px;text-transform:uppercase;margin-bottom:10px}
.wl-view-chart-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:10px}
.wl-view-chart-item{border-radius:10px;overflow:hidden;border:1px solid var(--glass-border);
  aspect-ratio:16/9;cursor:pointer;position:relative;transition:var(--t-fast)}
.wl-view-chart-item:hover{border-color:var(--glass-border-h);box-shadow:var(--shadow-sm);
  transform:scale(1.01)}
.wl-view-chart-item img{width:100%;height:100%;object-fit:cover;display:block}
.wl-view-chart-label{position:absolute;bottom:0;left:0;right:0;background:rgba(0,0,0,0.7);
  padding:4px 8px;font-size:9.5px;color:rgba(255,255,255,0.8);font-family:var(--font-mono);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wl-view-no-charts{text-align:center;padding:30px 20px;color:var(--text3);
  font-size:12px;font-style:italic;background:var(--glass-1);border-radius:10px;
  border:1px dashed var(--glass-border)}

/* ── Full-screen lightbox ── */
.wl-lightbox{position:fixed;inset:0;background:rgba(0,0,0,0.94);z-index:1000;
  display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;
  transition:opacity .2s;flex-direction:column}
.wl-lightbox.open{opacity:1;pointer-events:all}
.wl-lightbox img{max-width:94vw;max-height:90vh;object-fit:contain;border-radius:8px;
  box-shadow:0 0 80px rgba(0,0,0,0.8)}
.wl-lightbox-close{position:fixed;top:16px;right:20px;
  background:rgba(255,255,255,0.12);border:1px solid rgba(255,255,255,0.15);
  color:#fff;font-size:18px;width:36px;height:36px;border-radius:50%;cursor:pointer;
  display:flex;align-items:center;justify-content:center;transition:var(--t-fast)}
.wl-lightbox-close:hover{background:rgba(255,255,255,0.22)}

/* Lightbox v2 — toolbar, pan/zoom stage */
.wl-lb-toolbar{position:fixed;top:16px;left:50%;transform:translateX(-50%);display:flex;gap:8px;
  background:rgba(20,22,28,0.9);border:1px solid rgba(255,255,255,0.12);border-radius:var(--r-full);
  padding:6px;z-index:1001}
.wl-lb-toolbar button{width:34px;height:34px;border-radius:50%;border:none;background:transparent;
  color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:var(--t-fast)}
.wl-lb-toolbar button:hover{background:rgba(255,255,255,0.14)}
.wl-lb-toolbar .icn{width:15px;height:15px}
.wl-lb-stage{width:100%;height:100%;display:flex;align-items:center;justify-content:center;overflow:hidden;cursor:grab}
.wl-lb-stage:active{cursor:grabbing}
#wl-lb-img{transition:transform .1s linear;transform-origin:center center}

/* Annotation tool */
.wl-annotate-modal .wl-ann-toolbar{position:fixed;top:16px;left:50%;transform:translateX(-50%);
  display:flex;gap:8px;align-items:center;background:rgba(20,22,28,0.94);
  border:1px solid rgba(255,255,255,0.12);border-radius:var(--r-full);padding:6px 10px;z-index:1001}
.wl-ann-tool{display:flex;align-items:center;gap:5px;background:transparent;border:1px solid transparent;
  color:rgba(255,255,255,0.7);border-radius:var(--r-full);padding:6px 12px;font-size:12px;font-weight:600;
  cursor:pointer;transition:var(--t-fast)}
.wl-ann-tool:hover{background:rgba(255,255,255,0.1)}
.wl-ann-tool.active{background:rgba(96,165,250,0.2);border-color:rgba(96,165,250,0.4);color:#fff}
.wl-ann-toolbar .icn{width:13px;height:13px}
.wl-ann-toolbar button{color:rgba(255,255,255,0.8);background:transparent;border:none;border-radius:var(--r-full);
  padding:6px 10px;font-size:12px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:5px}
.wl-ann-toolbar button:hover{background:rgba(255,255,255,0.1)}
.wl-ann-toolbar input[type="color"]{width:28px;height:28px;border:none;border-radius:50%;background:none;cursor:pointer;padding:0}
.wl-ann-stage{position:relative;display:inline-flex;max-width:94vw;max-height:88vh}
.wl-ann-stage img{display:block;max-width:94vw;max-height:88vh;object-fit:contain;border-radius:8px}
.wl-ann-stage canvas{position:absolute;top:0;left:0;cursor:crosshair;border-radius:8px}

/* Compare viewer */
.wl-compare-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;max-width:92vw;max-height:86vh}
.wl-compare-grid img{width:100%;height:100%;object-fit:contain;border-radius:8px;background:#000}
@media (max-width: 780px){.wl-compare-grid{grid-template-columns:1fr;max-height:none;overflow-y:auto}}

/* Chart drag-reorder handle (pair form + day gallery) */
.wl-chart-thumb-drag{position:absolute;top:6px;left:6px;z-index:2;background:rgba(0,0,0,0.55);
  border-radius:6px;padding:3px;color:#fff;cursor:grab;display:flex}
.wl-chart-thumb-drag .icn{width:12px;height:12px}
.wl-chart-thumb-wrap,.wl-day-chart-thumb-wrap{position:relative}
.wl-chart-thumb-wrap.dragging,.wl-day-chart-thumb-wrap.dragging{opacity:.4}

/* Compare-select checkbox on screenshot grid thumbnails */
.wl-view-chart-item{position:relative}
.wl-compare-check{position:absolute;top:6px;left:6px;z-index:2;width:16px;height:16px;cursor:pointer}

/* ── Light theme overrides ── */
[data-theme="light"] .wl-form-select option,
[data-theme="light"] .wl-tf-opt select option{background:#f0f4ff;color:#0f172a}
[data-theme="light"] .wl-modal{background:#fff;border-color:rgba(0,0,0,0.08)}
[data-theme="light"] .wl-modal-head{background:#fff}
[data-theme="light"] .wl-form-input,
[data-theme="light"] .wl-form-select,
[data-theme="light"] .wl-form-textarea{
  background:rgba(241,245,251,0.9);border-color:rgba(0,0,0,0.10);color:#0f172a}
[data-theme="light"] .wl-form-input:focus,
[data-theme="light"] .wl-form-select:focus,
[data-theme="light"] .wl-form-textarea:focus{
  background:#fff;border-color:rgba(79,70,229,0.5)}
[data-theme="light"] .wl-tf-opt{background:rgba(241,245,251,0.9);border-color:rgba(0,0,0,0.09)}
[data-theme="light"] .wl-tf-opt select{color:#0f172a}
[data-theme="light"] .wl-tf-opt span{color:#475569}
[data-theme="light"] .wl-q-tab{background:rgba(241,245,251,0.8);border-color:rgba(0,0,0,0.08);color:#64748b}
[data-theme="light"] .wl-q-tab:hover{background:#e2e8f0;color:#0f172a}
[data-theme="light"] .wl-week-header{background:rgba(241,245,251,0.6);border-color:rgba(0,0,0,0.07)}
[data-theme="light"] .wl-week-btn{background:rgba(241,245,251,0.8);border-color:rgba(0,0,0,0.08);color:#475569}
[data-theme="light"] .wl-pair-card-v2{background:rgba(255,255,255,0.7);border-color:rgba(0,0,0,0.08)}
[data-theme="light"] .wl-pair-card-v2:hover{background:#fff;border-color:rgba(0,0,0,0.14)}
[data-theme="light"] .wl-card-chart-placeholder{background:linear-gradient(135deg,rgba(79,70,229,0.04),rgba(5,150,105,0.04))}
[data-theme="light"] .wl-add-pair-card{border-color:rgba(79,70,229,0.2)}
[data-theme="light"] .wl-view-note{background:rgba(241,245,251,0.8);border-left-color:rgba(79,70,229,0.3)}
[data-theme="light"] .wl-view-chart-item{border-color:rgba(0,0,0,0.09)}
[data-theme="light"] .wl-view-no-charts{background:rgba(241,245,251,0.5);border-color:rgba(0,0,0,0.08)}
[data-theme="light"] .wl-week-chip{background:rgba(241,245,251,0.8);border-color:rgba(0,0,0,0.08);color:#475569}
[data-theme="light"] .wl-chart-thumb-wrap{border-color:rgba(0,0,0,0.09)}
[data-theme="light"] .wl-badge.neu{background:rgba(241,245,251,0.9);color:#64748b;border-color:rgba(0,0,0,0.09)}

/* Responsive */
@media (max-width: 640px){
  .wl-pairs-grid{grid-template-columns:1fr}
  .wl-form-2col{grid-template-columns:1fr}
  .wl-week-bar{flex-wrap:wrap}
  .wl-modal,.wl-modal.wl-modal-wide{max-width:96%;border-radius:14px}
  .wl-modal-head{border-radius:14px 14px 0 0}
  .wl-view-chart-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}
}




/* ════════════════════════════════════════════════════
   AI COACH — Premium Intelligence Interface
   Aesthetic: dark neural / bioluminescent glow
   ════════════════════════════════════════════════════ */

/* Sidebar glow for AI nav item */
.sb-item.ai-glow .ico { filter: drop-shadow(0 0 6px rgba(167,139,250,0.7)); }
.sb-item.ai-glow:hover,
.sb-item.ai-glow.active {
  background: linear-gradient(135deg, rgba(167,139,250,0.12), rgba(96,165,250,0.08));
  border-left-color: var(--purple) !important;
}

/* Cover — gradient shimmer */
.ai-cover {
  background: linear-gradient(135deg,
    rgba(167,139,250,0.18) 0%,
    rgba(96,165,250,0.14) 40%,
    rgba(45,212,191,0.10) 100%) !important;
  border: 1px solid rgba(167,139,250,0.22) !important;
  position: relative; overflow: hidden;
}
.ai-cover::before {
  content: '';
  position: absolute; inset: 0;
  background: radial-gradient(ellipse 60% 80% at 80% 20%, rgba(167,139,250,0.15), transparent);
  pointer-events: none;
}
.ai-cover .cover-label { color: var(--purple) !important; opacity: 1 !important; }

/* ── Mode bar ── */
.ai-mode-bar {
  display: flex; gap: 6px; flex-wrap: wrap;
  margin-bottom: 22px;
  padding: 6px;
  background: var(--glass-1);
  border: 1px solid var(--glass-border);
  border-radius: var(--r-lg);
}
.ai-mode-btn {
  flex: 1; min-width: 100px;
  padding: 8px 12px;
  border-radius: 10px;
  border: 1px solid transparent;
  background: transparent;
  color: var(--text2);
  font-size: 12px; font-weight: 600;
  font-family: var(--font-body);
  cursor: pointer;
  transition: var(--t-fast);
  white-space: nowrap;
  text-align: center;
}
.ai-mode-btn:hover {
  background: var(--glass-2);
  color: var(--text);
  border-color: var(--glass-border);
}
.ai-mode-btn.active {
  background: linear-gradient(135deg, rgba(167,139,250,0.18), rgba(96,165,250,0.12));
  color: var(--purple);
  border-color: rgba(167,139,250,0.30);
  box-shadow: 0 0 16px rgba(167,139,250,0.10);
}

/* ── Context panel ── */
.ai-context-panel {
  background: var(--glass-1);
  border: 1px solid var(--glass-border);
  border-radius: var(--r-lg);
  padding: 14px 16px;
  margin-bottom: 16px;
  font-size: 12px;
  color: var(--text2);
  line-height: 1.6;
  min-height: 40px;
}
.ai-context-stat {
  display: inline-flex; align-items: center; gap: 5px;
  background: var(--glass-2);
  border: 1px solid var(--glass-border);
  border-radius: var(--r-full);
  padding: 3px 10px;
  font-family: var(--font-mono);
  font-size: 11px; font-weight: 600;
  color: var(--text2);
  margin: 3px 3px 3px 0;
}
.ai-context-stat.green { color: var(--green); border-color: rgba(52,211,153,0.25); background: rgba(52,211,153,0.08); }
.ai-context-stat.red   { color: var(--red);   border-color: rgba(248,113,113,0.25); background: rgba(248,113,113,0.08); }
.ai-context-stat.blue  { color: var(--blue);  border-color: rgba(96,165,250,0.25);  background: rgba(96,165,250,0.08); }
.ai-context-stat.purple{ color: var(--purple);border-color: rgba(167,139,250,0.25); background: rgba(167,139,250,0.08); }

/* ── Chart upload zone ── */
.ai-chart-upload-wrap { margin-bottom: 16px; }
.ai-chart-upload-zone {
  border: 2px dashed rgba(167,139,250,0.25);
  border-radius: var(--r-lg);
  padding: 32px 20px;
  text-align: center;
  cursor: pointer;
  transition: var(--t-fast);
  background: linear-gradient(135deg, rgba(167,139,250,0.04), rgba(96,165,250,0.03));
}
.ai-chart-upload-zone:hover {
  border-color: rgba(167,139,250,0.55);
  background: rgba(167,139,250,0.08);
}
.ai-chart-upload-zone.drag-over {
  border-color: var(--purple, #a78bfa);
  border-style: solid;
  background: rgba(167,139,250,0.14);
  box-shadow: 0 0 0 2px rgba(167,139,250,0.25);
}
.ai-upload-icon { font-size: 32px; margin-bottom: 10px; }
.ai-upload-text { font-size: 14px; font-weight: 600; color: var(--text); margin-bottom: 4px; }
.ai-upload-hint { font-size: 11px; color: var(--text3); font-family: var(--font-mono); }

/* Chart thumbnails */
.ai-chart-thumbs {
  display: flex; gap: 10px; flex-wrap: wrap; margin-top: 12px;
}
.ai-chart-thumb {
  position: relative; width: 120px; flex-shrink: 0;
}
.ai-chart-thumb img {
  width: 100%; aspect-ratio: 16/9; object-fit: cover;
  border-radius: 9px; border: 1px solid rgba(167,139,250,0.25);
  display: block;
}
.ai-chart-thumb-del {
  position: absolute; top: 4px; right: 4px;
  background: rgba(0,0,0,0.7); border: none; color: #fff;
  width: 20px; height: 20px; border-radius: 50%;
  cursor: pointer; font-size: 10px;
  display: flex; align-items: center; justify-content: center;
  transition: var(--t-fast);
}
.ai-chart-thumb-del:hover { background: var(--red); }
.ai-chart-thumb-name {
  font-size: 9.5px; color: var(--text3);
  font-family: var(--font-mono);
  margin-top: 4px; text-align: center;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}

/* ── Prompt area ── */
.ai-prompt-wrap {
  background: var(--glass-1);
  border: 1px solid var(--glass-border);
  border-radius: var(--r-lg);
  padding: 14px 16px;
  margin-bottom: 20px;
  transition: border-color .2s;
}
.ai-prompt-wrap:focus-within {
  border-color: rgba(167,139,250,0.40);
  box-shadow: 0 0 0 3px rgba(167,139,250,0.08);
}
.ai-prompt-input {
  width: 100%; background: transparent; border: none;
  color: var(--text); font-size: 13px; font-family: var(--font-body);
  line-height: 1.6; resize: none; outline: none;
  min-height: 60px;
}
.ai-prompt-input::placeholder { color: var(--text3); }
.ai-prompt-actions {
  display: flex; align-items: center; justify-content: space-between;
  margin-top: 10px; padding-top: 10px;
  border-top: 1px solid var(--glass-border);
  gap: 10px; flex-wrap: wrap;
}
.ai-prompt-chips {
  display: flex; gap: 6px; flex-wrap: wrap; flex: 1;
}
.ai-chip {
  padding: 4px 11px; border-radius: var(--r-full);
  border: 1px solid var(--glass-border);
  background: var(--glass-1); color: var(--text2);
  font-size: 11px; font-weight: 500; cursor: pointer;
  transition: var(--t-fast); white-space: nowrap;
}
.ai-chip:hover { background: var(--glass-2); color: var(--text); border-color: var(--glass-border-h); }
.ai-chip.active {
  background: rgba(167,139,250,0.12); color: var(--purple);
  border-color: rgba(167,139,250,0.35);
}

/* Analyse button */
.ai-analyse-btn {
  display: flex; align-items: center; gap: 8px;
  padding: 9px 22px; border-radius: var(--r-full);
  border: none; cursor: pointer; font-size: 13px; font-weight: 700;
  font-family: var(--font-body);
  background: linear-gradient(135deg, #7c3aed, #6366f1, #3b82f6);
  color: #fff;
  box-shadow: 0 4px 20px rgba(124,58,237,0.35), 0 1px 4px rgba(0,0,0,0.3);
  transition: all .2s var(--ease-out);
  position: relative; overflow: hidden;
  flex-shrink: 0;
}
.ai-analyse-btn::before {
  content: '';
  position: absolute; inset: 0;
  background: linear-gradient(135deg, rgba(255,255,255,0.15), transparent);
  opacity: 0; transition: opacity .2s;
}
.ai-analyse-btn:hover { transform: translateY(-1px); box-shadow: 0 6px 28px rgba(124,58,237,0.45), 0 2px 6px rgba(0,0,0,0.35); }
.ai-analyse-btn:hover::before { opacity: 1; }
.ai-analyse-btn:active { transform: translateY(0); }
.ai-analyse-btn:disabled { opacity: .6; cursor: not-allowed; transform: none; }
.ai-btn-icon {
  font-size: 16px;
  animation: none;
}
.ai-analyse-btn.loading .ai-btn-icon {
  animation: ai-spin 1.2s linear infinite;
}
@keyframes ai-spin {
  from { transform: rotate(0deg); }
  to   { transform: rotate(360deg); }
}

/* ── Response area ── */
.ai-response-wrap {
  background: var(--glass-1);
  border: 1px solid rgba(167,139,250,0.18);
  border-radius: var(--r-lg);
  overflow: hidden;
  margin-bottom: 20px;
  box-shadow: 0 0 40px rgba(167,139,250,0.06);
}
.ai-response-header {
  display: flex; align-items: center; gap: 10px;
  padding: 12px 16px;
  border-bottom: 1px solid var(--glass-border);
  background: linear-gradient(90deg, rgba(167,139,250,0.08), transparent);
}
.ai-response-badge {
  display: flex; align-items: center; gap: 7px;
  font-size: 12px; font-weight: 700; color: var(--purple);
  letter-spacing: .3px;
}
.ai-badge-dot {
  width: 7px; height: 7px; border-radius: 50%;
  background: var(--purple);
  box-shadow: 0 0 8px rgba(167,139,250,0.7);
  animation: ai-pulse 2s ease-in-out infinite;
}
@keyframes ai-pulse {
  0%, 100% { opacity: 1; box-shadow: 0 0 8px rgba(167,139,250,0.7); }
  50%       { opacity: .6; box-shadow: 0 0 14px rgba(167,139,250,0.4); }
}
.ai-response-meta {
  font-size: 11px; color: var(--text3);
  font-family: var(--font-mono); margin-right: auto;
}
.ai-response-body {
  padding: 20px 22px;
  font-size: 13.5px;
  line-height: 1.72;
  color: var(--text);
  max-height: 680px;
  width: 100%;
  overflow-y: auto;
}

/* Response formatting */
.ai-p { margin-bottom: 12px; }
.ai-p:last-child { margin-bottom: 0; }
.ai-section-head {
  font-size: 13px; font-weight: 800;
  color: var(--text);
  letter-spacing: -.2px;
  margin: 18px 0 8px;
  padding-bottom: 6px;
  border-bottom: 1px solid var(--glass-border);
  display: flex; align-items: center; gap: 8px;
}
.ai-section-head:first-child { margin-top: 0; }
.ai-emoji-head {
  display: flex; align-items: flex-start; gap: 10px;
  font-size: 13px; font-weight: 700; color: var(--text);
  margin: 16px 0 6px;
  padding: 10px 14px;
  background: var(--glass-1);
  border-radius: 10px;
  border-left: 2px solid rgba(167,139,250,0.4);
}
.ai-emoji-head:first-child { margin-top: 0; }
.ai-list-item {
  display: flex; align-items: flex-start; gap: 10px;
  padding: 5px 0;
  font-size: 13px;
}
.ai-list-item.numbered { align-items: flex-start; }
.ai-list-num {
  display: inline-flex; align-items: center; justify-content: center;
  width: 20px; height: 20px; border-radius: 50%;
  background: rgba(167,139,250,0.15);
  color: var(--purple);
  font-size: 10.5px; font-weight: 800;
  flex-shrink: 0; margin-top: 1px;
  font-family: var(--font-mono);
}
.ai-bullet {
  color: rgba(167,139,250,0.7);
  font-size: 10px;
  margin-top: 4px;
  flex-shrink: 0;
}
.ai-hr {
  border: none;
  border-top: 1px solid var(--glass-border);
  margin: 16px 0;
}
.ai-response-body strong { color: var(--text); font-weight: 700; }

/* Thinking animation */
.ai-thinking {
  display: flex; gap: 7px; padding: 18px 0; align-items: center;
}
.ai-thinking span {
  width: 8px; height: 8px; border-radius: 50%;
  background: var(--purple);
  animation: ai-bounce 1.4s ease-in-out infinite;
}
.ai-thinking span:nth-child(1) { animation-delay: 0s; }
.ai-thinking span:nth-child(2) { animation-delay: .18s; }
.ai-thinking span:nth-child(3) { animation-delay: .36s; }
@keyframes ai-bounce {
  0%, 80%, 100% { transform: scale(0.7); opacity: .4; }
  40%            { transform: scale(1.15); opacity: 1; box-shadow: 0 0 10px rgba(167,139,250,0.5); }
}

/* Error */
.ai-error {
  padding: 16px; border-radius: 10px;
  background: var(--red-dim); border: 1px solid rgba(248,113,113,0.25);
  color: var(--red); font-size: 13px; line-height: 1.6;
}

/* ── History ── */
.ai-history-wrap { margin-bottom: 20px; }
.ai-history { display: flex; flex-direction: column; gap: 12px; }
.ai-history-turn {
  border-radius: var(--r-lg); padding: 13px 16px;
  border: 1px solid var(--glass-border);
  font-size: 12.5px; line-height: 1.6;
}
.ai-history-turn.user {
  background: var(--glass-1);
  border-color: var(--glass-border);
}
.ai-history-turn.assistant {
  background: linear-gradient(135deg, rgba(167,139,250,0.06), rgba(96,165,250,0.04));
  border-color: rgba(167,139,250,0.14);
}
.ai-history-role {
  font-size: 10.5px; font-weight: 700;
  color: var(--text3); letter-spacing: .5px;
  text-transform: uppercase; margin-bottom: 6px;
}
.ai-history-turn.assistant .ai-history-role { color: var(--purple); }
.ai-history-content { color: var(--text2); }

/* ── Light theme overrides ── */
[data-theme="light"] .ai-cover {
  background: linear-gradient(135deg,
    rgba(124,58,237,0.10) 0%,
    rgba(99,102,241,0.08) 40%,
    rgba(20,184,166,0.07) 100%) !important;
  border-color: rgba(124,58,237,0.15) !important;
}
[data-theme="light"] .ai-mode-bar {
  background: rgba(255,255,255,0.7);
  border-color: rgba(0,0,0,0.07);
}
[data-theme="light"] .ai-mode-btn.active {
  background: linear-gradient(135deg, rgba(124,58,237,0.12), rgba(99,102,241,0.08));
}
[data-theme="light"] .ai-prompt-wrap {
  background: rgba(255,255,255,0.8);
  border-color: rgba(0,0,0,0.08);
}
[data-theme="light"] .ai-prompt-wrap:focus-within {
  border-color: rgba(124,58,237,0.35);
  box-shadow: 0 0 0 3px rgba(124,58,237,0.07);
}
[data-theme="light"] .ai-prompt-input { color: #0f172a; }
[data-theme="light"] .ai-response-wrap {
  background: rgba(255,255,255,0.85);
  border-color: rgba(124,58,237,0.15);
}
[data-theme="light"] .ai-response-header { background: linear-gradient(90deg, rgba(124,58,237,0.06), transparent); }
[data-theme="light"] .ai-response-body { color: #1e293b; }
[data-theme="light"] .ai-response-body strong { color: #0f172a; }
[data-theme="light"] .ai-emoji-head {
  background: rgba(241,245,251,0.8);
  border-left-color: rgba(124,58,237,0.3);
}
[data-theme="light"] .ai-context-panel {
  background: rgba(255,255,255,0.7);
  border-color: rgba(0,0,0,0.07);
}
[data-theme="light"] .ai-chart-upload-zone {
  border-color: rgba(124,58,237,0.20);
  background: linear-gradient(135deg, rgba(124,58,237,0.04), rgba(99,102,241,0.03));
}
[data-theme="light"] .ai-chart-upload-zone:hover {
  border-color: rgba(124,58,237,0.45);
  background: rgba(124,58,237,0.06);
}
[data-theme="light"] .ai-history-turn.user { background: rgba(241,245,251,0.7); }
[data-theme="light"] .ai-history-turn.assistant {
  background: linear-gradient(135deg, rgba(124,58,237,0.06), rgba(99,102,241,0.04));
  border-color: rgba(124,58,237,0.12);
}
[data-theme="light"] .ai-list-num {
  background: rgba(124,58,237,0.10);
}
[data-theme="light"] .ai-chip:hover {
  background: rgba(241,245,251,0.9);
}
[data-theme="light"] .ai-chip.active {
  background: rgba(124,58,237,0.08);
  color: #6d28d9;
  border-color: rgba(124,58,237,0.25);
}
[data-theme="light"] .ai-analyse-btn {
  box-shadow: 0 4px 18px rgba(124,58,237,0.28), 0 1px 3px rgba(0,0,0,0.12);
}
[data-theme="light"] .ai-analyse-btn:hover {
  box-shadow: 0 6px 24px rgba(124,58,237,0.38), 0 2px 5px rgba(0,0,0,0.14);
}

/* Responsive */
@media (max-width: 640px){
  .ai-mode-bar {
    flex-wrap: nowrap;
    overflow-x: auto;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    gap: 6px; padding: 5px;
    margin-left: -14px; margin-right: -14px;
    padding-left: 14px; padding-right: 14px;
    border-radius: 0;
    border-left: none; border-right: none;
    mask-image: linear-gradient(to right, transparent 0, #000 14px, #000 calc(100% - 14px), transparent 100%);
  }
  .ai-mode-bar::-webkit-scrollbar { display: none; }
  .ai-mode-btn {
    flex: none; min-width: max-content;
    font-size: 11.5px; padding: 8px 13px;
  }
  .ai-response-body { padding: 14px 15px; font-size: 13px; }
  .ai-prompt-actions { flex-direction: column; align-items: stretch; }
  .ai-analyse-btn { width: 100%; justify-content: center; }
  .ai-prompt-chips { justify-content: flex-start; }
}


/* ════════════════════════════════════════════════════
   WATCHLIST ECONOMIC CALENDAR
   ════════════════════════════════════════════════════ */

/* Section wrapper */
.wl-cal-section {
  margin-top: 24px;
  background: var(--glass-1);
  border: 1px solid var(--glass-border);
  border-radius: var(--r-lg);
  overflow: hidden;
}

/* Header */
.wl-cal-header {
  display: flex; align-items: center; justify-content: space-between;
  gap: 12px; flex-wrap: wrap;
  padding: 12px 16px;
  border-bottom: 1px solid var(--glass-border);
  background: linear-gradient(90deg, rgba(251,191,36,0.06), transparent);
}
.wl-cal-title {
  display: flex; align-items: center; gap: 8px;
  font-family: var(--font-head); font-size: 13px; font-weight: 700;
  color: var(--text);
}
.wl-cal-icon { font-size: 14px; }
.wl-cal-week-range {
  font-family: var(--font-mono); font-size: 10px;
  color: var(--text3); font-weight: 400; letter-spacing: .3px;
}
.wl-cal-controls {
  display: flex; align-items: center; gap: 8px;
}
.wl-cal-filter-wrap {
  display: flex; gap: 4px;
}
.wl-cal-filter-btn {
  padding: 4px 10px; border-radius: var(--r-full);
  border: 1px solid var(--glass-border);
  background: var(--glass-1); color: var(--text3);
  font-size: 10.5px; font-weight: 600; cursor: pointer;
  transition: var(--t-fast); white-space: nowrap;
}
.wl-cal-filter-btn:hover { background: var(--glass-2); color: var(--text); }
.wl-cal-filter-btn.active {
  background: rgba(251,191,36,0.12); color: var(--gold);
  border-color: rgba(251,191,36,0.28);
}
.wl-cal-refresh-btn {
  width: 26px; height: 26px; border-radius: 50%;
  border: 1px solid var(--glass-border);
  background: var(--glass-1); color: var(--text2);
  cursor: pointer; font-size: 13px; display: flex;
  align-items: center; justify-content: center;
  transition: var(--t-fast);
}
.wl-cal-refresh-btn:hover {
  background: var(--glass-2); color: var(--text);
  transform: rotate(180deg);
}

/* Body */
.wl-cal-body {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
  gap: 0;
}

/* Loading dots */
.wl-cal-loading {
  grid-column: 1 / -1;
  display: flex; gap: 6px; padding: 24px;
  align-items: center; justify-content: center;
}
.wl-cal-loading span {
  width: 7px; height: 7px; border-radius: 50%;
  background: var(--gold); opacity: .4;
  animation: wl-cal-bounce 1.3s ease-in-out infinite;
}
.wl-cal-loading span:nth-child(1) { animation-delay: 0s; }
.wl-cal-loading span:nth-child(2) { animation-delay: .18s; }
.wl-cal-loading span:nth-child(3) { animation-delay: .36s; }
@keyframes wl-cal-bounce {
  0%,80%,100% { transform: scale(.7); opacity: .3; }
  40%          { transform: scale(1.2); opacity: 1; }
}

/* Error / empty */
.wl-cal-error, .wl-cal-empty {
  grid-column: 1 / -1;
  display: flex; gap: 8px; align-items: center;
  padding: 20px; font-size: 12px; color: var(--text3);
  justify-content: center;
}
.wl-cal-retry {
  background: none; border: 1px solid var(--glass-border);
  color: var(--blue); font-size: 11px; padding: 2px 8px;
  border-radius: var(--r-full); cursor: pointer;
  transition: var(--t-fast);
}
.wl-cal-retry:hover { background: var(--blue-dim); }

/* Day column */
.wl-cal-day {
  border-right: 1px solid var(--glass-border);
  min-width: 0;
}
.wl-cal-day:last-child { border-right: none; }
.wl-cal-day.past { opacity: .65; }
.wl-cal-day.today { background: rgba(251,191,36,0.04); }

.wl-cal-day-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 9px 12px 7px;
  border-bottom: 1px solid var(--glass-border);
  background: var(--glass-1);
  position: sticky; top: 0; z-index: 1;
}
.wl-cal-day-label {
  display: flex; align-items: baseline; gap: 5px;
}
.wl-cal-day-label.today .wl-cal-day-name { color: var(--gold); }
.wl-cal-day-label.today .wl-cal-day-num  { color: var(--gold); }
.wl-cal-day-name {
  font-size: 10px; font-weight: 700; color: var(--text2);
  text-transform: uppercase; letter-spacing: .5px;
}
.wl-cal-day-num {
  font-family: var(--font-head); font-size: 17px; font-weight: 800;
  color: var(--text); line-height: 1;
}
.wl-cal-day-count {
  display: flex; align-items: center; gap: 5px;
  font-size: 10px; color: var(--text3); font-family: var(--font-mono);
}
.wl-cal-high-dot {
  width: 6px; height: 6px; border-radius: 50%;
  background: var(--red);
  box-shadow: 0 0 6px rgba(248,113,113,0.7);
  animation: wl-cal-pulse 1.8s ease-in-out infinite;
}
@keyframes wl-cal-pulse {
  0%,100% { opacity: 1; }
  50%      { opacity: .4; }
}

/* Events list */
.wl-cal-events { padding: 8px 0; }

/* Individual event */
.wl-cal-event {
  display: flex; gap: 0; align-items: stretch;
  margin: 0 8px 5px;
  border-radius: 8px;
  border: 1px solid var(--glass-border);
  background: var(--glass-1);
  overflow: hidden;
  transition: var(--t-fast);
}
.wl-cal-event:hover {
  background: var(--glass-2);
  border-color: var(--glass-border-h);
}
.wl-cal-event.my-pair {
  border-color: rgba(251,191,36,0.25);
  background: rgba(251,191,36,0.05);
}
.wl-cal-event.released { opacity: .7; }

/* Impact stripe */
.wl-cal-event-impact {
  width: 3px; flex-shrink: 0; border-radius: 0;
}
.wl-cal-event-impact.high   { background: var(--red); }
.wl-cal-event-impact.med    { background: var(--gold); }
.wl-cal-event-impact.low    { background: var(--text3); }

/* Event body */
.wl-cal-event-body { padding: 6px 8px; flex: 1; min-width: 0; }
.wl-cal-event-row {
  display: flex; align-items: center; gap: 5px; margin-bottom: 3px;
  flex-wrap: nowrap; overflow: hidden;
}
.wl-cal-currency {
  font-family: var(--font-mono); font-size: 9.5px; font-weight: 700;
  color: var(--text2); flex-shrink: 0;
  background: var(--glass-2); padding: 1px 5px;
  border-radius: 4px; letter-spacing: .3px;
}
.wl-cal-event-name {
  font-size: 11px; font-weight: 600; color: var(--text);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  flex: 1;
}
.wl-cal-pair-tag {
  font-size: 10px; color: var(--gold); flex-shrink: 0;
}
.wl-cal-event-meta {
  display: flex; align-items: center; gap: 6px; flex-wrap: wrap;
}
.wl-cal-time {
  font-family: var(--font-mono); font-size: 9.5px; color: var(--text3);
}
.wl-cal-meta-val {
  font-family: var(--font-mono); font-size: 9.5px; color: var(--text3);
  background: var(--glass-1); padding: 1px 5px; border-radius: 4px;
}
.wl-cal-meta-val.actual {
  color: var(--green); background: rgba(52,211,153,0.08);
}

/* Light theme */
[data-theme="light"] .wl-cal-section {
  background: rgba(255,255,255,0.7);
  border-color: rgba(0,0,0,0.07);
}
[data-theme="light"] .wl-cal-header {
  background: linear-gradient(90deg, rgba(251,191,36,0.05), transparent);
}
[data-theme="light"] .wl-cal-day-head { background: rgba(241,245,251,0.8); }
[data-theme="light"] .wl-cal-day.today { background: rgba(251,191,36,0.04); }
[data-theme="light"] .wl-cal-event { background: rgba(255,255,255,0.7); border-color: rgba(0,0,0,0.07); }
[data-theme="light"] .wl-cal-event:hover { background: rgba(255,255,255,0.95); }
[data-theme="light"] .wl-cal-event.my-pair {
  border-color: rgba(217,119,6,0.22);
  background: rgba(251,191,36,0.04);
}
[data-theme="light"] .wl-cal-currency { background: rgba(0,0,0,0.05); }

/* Responsive — stack days vertically on mobile */
@media (max-width: 640px){
  .wl-cal-body { grid-template-columns: 1fr; }
  .wl-cal-day { border-right: none; border-bottom: 1px solid var(--glass-border); }
  .wl-cal-day:last-child { border-bottom: none; }
  .wl-cal-filter-wrap { flex-wrap: wrap; }
}

/* Calendar iframe & fallback states */
.wl-cal-iframe-wrap { display: flex; flex-direction: column; }
.wl-cal-iframe-notice {
  display: flex; align-items: center; gap: 10px;
  padding: 12px 16px;
  border-bottom: 1px solid var(--glass-border);
  background: rgba(251,191,36,0.05);
}
.wl-cal-iframe-icon { font-size: 16px; flex-shrink: 0; }
.wl-cal-iframe-title {
  font-size: 12px; font-weight: 700; color: var(--text); margin-bottom: 2px;
}
.wl-cal-iframe-sub {
  font-size: 10.5px; color: var(--text3); font-family: var(--font-mono);
}
.wl-cal-ff-link {
  margin-left: auto; flex-shrink: 0;
  padding: 5px 12px; border-radius: var(--r-full);
  background: rgba(251,191,36,0.12); color: var(--gold);
  border: 1px solid rgba(251,191,36,0.28);
  font-size: 11px; font-weight: 700; text-decoration: none;
  transition: var(--t-fast);
}
.wl-cal-ff-link:hover { background: rgba(251,191,36,0.2); }
.wl-cal-iframe {
  width: 100%; height: 480px; border: none;
  background: var(--glass-1);
}

/* Fallback card when iframe also fails */
.wl-cal-ff-fallback {
  grid-column: 1 / -1;
  display: flex; flex-direction: column; align-items: center;
  text-align: center; padding: 36px 20px; gap: 10px;
}
.wl-cal-ff-fallback-icon { font-size: 36px; margin-bottom: 4px; }
.wl-cal-ff-fallback-title {
  font-family: var(--font-head); font-size: 15px; font-weight: 700; color: var(--text);
}
.wl-cal-ff-fallback-sub {
  font-size: 12px; color: var(--text2); max-width: 320px; line-height: 1.6;
}

/* Light theme */
[data-theme="light"] .wl-cal-iframe-notice {
  background: rgba(217,119,6,0.04);
}
[data-theme="light"] .wl-cal-iframe { background: #fff; }

/* ════════════════════════════════════════════════════
   AI PAGE TABS (Coach / Chat switcher)
   ════════════════════════════════════════════════════ */
.ai-page-tabs {
  display: flex; gap: 6px; margin-bottom: 20px;
  background: var(--glass-1);
  border: 1px solid var(--glass-border);
  border-radius: var(--r-lg);
  padding: 5px;
  width: fit-content;
}
.ai-page-tab {
  display: flex; align-items: center; gap: 7px;
  padding: 8px 20px; border-radius: 10px;
  border: none; background: transparent;
  color: var(--text2); font-size: 13px; font-weight: 600;
  font-family: var(--font-body); cursor: pointer;
  transition: var(--t-fast); position: relative;
}
.ai-page-tab:hover { background: var(--glass-2); color: var(--text); }
.ai-page-tab.active {
  background: linear-gradient(135deg, rgba(167,139,250,0.2), rgba(96,165,250,0.12));
  color: var(--purple);
  box-shadow: 0 1px 8px rgba(167,139,250,0.15);
}
.ai-chat-badge {
  position: absolute; top: 4px; right: 4px;
  width: 8px; height: 8px; border-radius: 50%;
  background: var(--red);
  box-shadow: 0 0 6px rgba(248,113,113,0.7);
}

/* ════════════════════════════════════════════════════
   CHAT INTERFACE
   ════════════════════════════════════════════════════ */
.chat-container {
  display: flex; flex-direction: column;
  height: calc(100vh - 280px); /* fallback for browsers without :has() support */
  min-height: 500px;
  background: var(--glass-1);
  border: 1px solid var(--glass-border);
  border-radius: var(--r-lg);
  overflow: hidden;
  position: relative;
}

/* Chat tab: make the whole AI page a fixed-height flex column so the
   chat container fills all remaining space under the tab bar, instead
   of relying on a guessed "100vh - 280px" offset that leaves dead
   space (or overflows) depending on screen size / chrome above it. */
#page-ai.ai-chat-active {
  display: flex;
  flex-direction: column;
  height: calc(100vh - var(--topbar));
  padding-bottom: 0;
}
#page-ai.ai-chat-active .page-inner {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-height: 0;
}
#page-ai.ai-chat-active #ai-chat-panel {
  flex: 1;
  min-height: 0;
  display: flex;
}
#page-ai.ai-chat-active .chat-container {
  height: auto;
  flex: 1;
  min-height: 0;
}

/* Header */
.chat-header {
  display: flex; align-items: center; justify-content: space-between;
  padding: 12px 16px;
  border-bottom: 1px solid var(--glass-border);
  background: linear-gradient(90deg, rgba(167,139,250,0.08), transparent);
  flex-shrink: 0;
}
.chat-header-info { display: flex; align-items: center; gap: 10px; }
.chat-avatar {
  width: 36px; height: 36px; border-radius: 50%;
  background: linear-gradient(135deg, #7c3aed, #3b82f6);
  display: flex; align-items: center; justify-content: center;
  font-size: 15px; color: #fff; flex-shrink: 0;
  box-shadow: 0 0 14px rgba(124,58,237,0.35);
}
.chat-header-name {
  font-family: var(--font-head); font-size: 13px; font-weight: 700; color: var(--text);
}
.chat-header-status {
  font-size: 11px; color: var(--text3);
  display: flex; align-items: center; gap: 5px; margin-top: 1px;
}
.chat-online-dot {
  width: 6px; height: 6px; border-radius: 50%;
  background: var(--green);
  box-shadow: 0 0 6px rgba(52,211,153,0.6);
  animation: ai-pulse 2s ease-in-out infinite;
}
.chat-header-actions { display: flex; gap: 6px; }
.chat-action-btn {
  width: 30px; height: 30px; border-radius: 50%;
  border: 1px solid var(--glass-border);
  background: var(--glass-1); color: var(--text2);
  cursor: pointer; font-size: 13px;
  display: flex; align-items: center; justify-content: center;
  transition: var(--t-fast);
}
.chat-action-btn:hover { background: var(--glass-2); color: var(--text); }

/* Messages area */
.chat-messages {
  flex: 1; overflow-y: auto; overflow-x: hidden;
  padding: 16px 14px 8px;
  display: flex; flex-direction: column; gap: 6px;
  scroll-behavior: smooth;
}
.chat-messages::-webkit-scrollbar { width: 4px; }
.chat-messages::-webkit-scrollbar-thumb { background: var(--glass-border); border-radius: 2px; }

/* Message rows */
.chat-msg-row {
  display: flex; align-items: flex-end; gap: 8px;
  max-width: 100%;
  opacity: 0; transform: translateY(10px);
  transition: opacity .25s ease, transform .25s ease;
}
.chat-msg-row.animate-in { opacity: 0; transform: translateY(10px); }
.chat-msg-row.visible,
.chat-msg-row:not(.animate-in) { opacity: 1; transform: none; }
.chat-msg-row.user { flex-direction: row-reverse; }
.chat-msg-row.assistant { flex-direction: row; }

/* Small avatars */
.chat-avatar-sm {
  width: 26px; height: 26px; border-radius: 50%;
  background: linear-gradient(135deg, #7c3aed, #3b82f6);
  display: flex; align-items: center; justify-content: center;
  font-size: 11px; color: #fff; flex-shrink: 0;
  align-self: flex-end;
}
.chat-avatar-sm.user {
  background: var(--glass-2); border: 1px solid var(--glass-border);
  font-size: 12px;
}

/* Bubbles */
.chat-bubble {
  max-width: min(78%, 640px); border-radius: 16px;
  padding: 10px 13px 7px;
  font-size: 13px; line-height: 1.62;
  position: relative; word-break: break-word;
}
.chat-bubble.user {
  background: linear-gradient(135deg, #7c3aed, #6366f1);
  color: #fff; border-radius: 16px 4px 16px 16px;
}
.chat-bubble.assistant {
  background: var(--glass-2);
  border: 1px solid var(--glass-border);
  color: var(--text);
  border-radius: 4px 16px 16px 16px;
}
.chat-bubble.error {
  background: var(--red-dim);
  border: 1px solid rgba(248,113,113,0.25);
  border-radius: 4px 16px 16px 16px;
}
.chat-bubble.typing { padding: 12px 16px 10px; }
.chat-err-text { color: var(--red); font-size: 12.5px; }

/* Bubble images */
.chat-bubble-img-wrap { margin-bottom: 8px; }
.chat-bubble-img {
  max-width: 100%; border-radius: 10px; display: block;
  cursor: zoom-in; transition: opacity .2s;
  border: 1px solid rgba(255,255,255,0.1);
}
.chat-bubble-img:hover { opacity: .9; }

/* Bubble content — assistant messages use AI formatter */
.chat-bubble.user .chat-bubble-content { color: rgba(255,255,255,0.95); }
.chat-bubble.assistant .chat-bubble-content .ai-p { margin-bottom: 8px; }
.chat-bubble.assistant .chat-bubble-content .ai-section-head {
  font-size: 12px; margin: 12px 0 5px;
}
.chat-bubble.assistant .chat-bubble-content .ai-list-item { padding: 3px 0; font-size: 12.5px; }
.chat-bubble.assistant .chat-bubble-content .ai-emoji-head { font-size: 12.5px; padding: 7px 10px; }

/* Bubble meta (time + copy) */
.chat-bubble-meta {
  display: flex; align-items: center; gap: 6px;
  margin-top: 5px; justify-content: flex-end;
}
.chat-bubble-time {
  font-family: var(--font-mono); font-size: 9.5px;
  color: rgba(255,255,255,0.45);
}
.chat-bubble.assistant .chat-bubble-time { color: var(--text3); }
.chat-bubble-copy {
  background: none; border: none; cursor: pointer;
  font-size: 11px; color: var(--text3); padding: 0;
  transition: var(--t-fast); line-height: 1;
}
.chat-bubble-copy:hover { color: var(--text); }

/* Typing dots */
.chat-typing-dots {
  display: flex; gap: 5px; align-items: center; height: 16px;
}
.chat-typing-dots span {
  width: 7px; height: 7px; border-radius: 50%;
  background: var(--purple); opacity: .5;
  animation: ai-bounce 1.4s ease-in-out infinite;
}
.chat-typing-dots span:nth-child(1) { animation-delay: 0s; }
.chat-typing-dots span:nth-child(2) { animation-delay: .18s; }
.chat-typing-dots span:nth-child(3) { animation-delay: .36s; }

/* Quick-start chips */
.chat-quick-chips {
  display: flex; flex-wrap: wrap; gap: 7px;
  padding: 8px 0 4px;
}
.chat-quick-chip {
  padding: 6px 13px; border-radius: var(--r-full);
  border: 1px solid var(--glass-border);
  background: var(--glass-1); color: var(--text2);
  font-size: 11.5px; font-weight: 500; cursor: pointer;
  transition: var(--t-fast); white-space: nowrap;
}
.chat-quick-chip:hover {
  background: rgba(167,139,250,0.10);
  color: var(--purple); border-color: rgba(167,139,250,0.28);
}

/* Slash command palette */
.chat-cmd-palette {
  position: absolute; bottom: 68px; left: 12px; right: 12px;
  background: var(--surface);
  border: 1px solid var(--glass-border);
  border-radius: 12px;
  box-shadow: var(--shadow-xl);
  z-index: 10; overflow: hidden;
  max-height: 240px; overflow-y: auto;
}
.chat-cmd-item {
  display: flex; align-items: center; gap: 10px;
  padding: 10px 14px; cursor: pointer;
  transition: var(--t-fast);
  border-bottom: 1px solid var(--glass-border);
}
.chat-cmd-item:last-child { border-bottom: none; }
.chat-cmd-item:hover { background: var(--glass-2); }
.chat-cmd-icon { font-size: 14px; flex-shrink: 0; }
.chat-cmd-name {
  font-family: var(--font-mono); font-size: 12px; font-weight: 700;
  color: var(--purple); flex-shrink: 0; min-width: 80px;
}
.chat-cmd-desc { font-size: 11.5px; color: var(--text2); }

/* Image preview strip */
.chat-image-preview {
  display: flex; gap: 8px; flex-wrap: wrap;
  padding: 8px 12px 0;
  border-top: 1px solid var(--glass-border);
  flex-shrink: 0;
}
.chat-img-thumb {
  position: relative; width: 60px; height: 60px;
  border-radius: 8px; overflow: hidden;
  border: 1px solid var(--glass-border);
  flex-shrink: 0;
}
.chat-img-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.chat-img-del {
  position: absolute; top: 2px; right: 2px;
  width: 18px; height: 18px; border-radius: 50%;
  background: rgba(0,0,0,0.7); border: none; color: #fff;
  font-size: 9px; cursor: pointer; display: flex;
  align-items: center; justify-content: center;
}
.chat-img-del:hover { background: var(--red); }

/* Input area */
.chat-input-wrap {
  display: flex; align-items: flex-end; gap: 8px;
  padding: 10px 12px 12px;
  border-top: 1px solid var(--glass-border);
  flex-shrink: 0;
  background: var(--glass-1);
}
.chat-attach-btn {
  width: 36px; height: 36px; border-radius: 50%;
  border: 1px solid var(--glass-border);
  background: var(--glass-2); color: var(--text2);
  font-size: 15px; cursor: pointer; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  transition: var(--t-fast); align-self: flex-end;
}
.chat-attach-btn:hover { background: var(--glass-3); color: var(--text); }
.chat-input {
  flex: 1; background: var(--glass-2);
  border: 1px solid var(--glass-border);
  border-radius: 18px; padding: 9px 14px;
  color: var(--text); font-size: 13px; font-family: var(--font-body);
  resize: none; outline: none; line-height: 1.5;
  max-height: 140px; overflow-y: auto;
  transition: border-color .2s;
  min-height: 36px;
}
.chat-input:focus {
  border-color: rgba(167,139,250,0.4);
  box-shadow: 0 0 0 3px rgba(167,139,250,0.08);
}
.chat-input::placeholder { color: var(--text3); }
.chat-send-btn {
  width: 36px; height: 36px; border-radius: 50%;
  border: none; flex-shrink: 0;
  background: linear-gradient(135deg, #7c3aed, #3b82f6);
  color: #fff; cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  transition: var(--t-fast);
  box-shadow: 0 2px 12px rgba(124,58,237,0.3);
  align-self: flex-end;
}
.chat-send-btn:hover { transform: scale(1.08); box-shadow: 0 4px 18px rgba(124,58,237,0.45); }
.chat-send-btn:disabled { opacity: .5; cursor: not-allowed; transform: none; }
.chat-send-btn.loading svg { animation: ai-spin 1s linear infinite; }

/* Drag-drop overlay */
.chat-drop-overlay {
  position: absolute; inset: 0;
  background: rgba(124,58,237,0.18);
  backdrop-filter: blur(4px);
  display: none; align-items: center; justify-content: center;
  border: 2px dashed rgba(167,139,250,0.5);
  border-radius: var(--r-lg); z-index: 20;
}
.chat-drop-content {
  display: flex; flex-direction: column; align-items: center; gap: 10px;
  font-size: 14px; font-weight: 700; color: var(--purple);
}
.chat-drop-content span:first-child { font-size: 36px; }

/* Light theme */
[data-theme="light"] .chat-container {
  background: rgba(255,255,255,0.8);
  border-color: rgba(0,0,0,0.08);
}
[data-theme="light"] .chat-header {
  background: linear-gradient(90deg, rgba(124,58,237,0.06), transparent);
}
[data-theme="light"] .chat-bubble.assistant {
  background: rgba(241,245,251,0.9);
  border-color: rgba(0,0,0,0.07);
  color: #1e293b;
}
[data-theme="light"] .chat-bubble.assistant .chat-bubble-time { color: #94a3b8; }
[data-theme="light"] .chat-input {
  background: rgba(241,245,251,0.9);
  border-color: rgba(0,0,0,0.09); color: #0f172a;
}
[data-theme="light"] .chat-input-wrap { background: rgba(241,245,251,0.5); }
[data-theme="light"] .chat-cmd-palette { background: #fff; border-color: rgba(0,0,0,0.08); }
[data-theme="light"] .chat-quick-chip {
  background: rgba(241,245,251,0.8);
  border-color: rgba(0,0,0,0.07); color: #475569;
}
[data-theme="light"] .ai-page-tabs {
  background: rgba(255,255,255,0.7);
  border-color: rgba(0,0,0,0.07);
}
[data-theme="light"] .ai-page-tab.active {
  background: linear-gradient(135deg, rgba(124,58,237,0.12), rgba(99,102,241,0.08));
}

/* Responsive */
@media (max-width: 640px){
  .chat-container { height: calc(100vh - 220px); }
  .chat-bubble { max-width: 90%; font-size: 12.5px; }
  .ai-page-tabs { width: 100%; }
  .ai-page-tab { flex: 1; justify-content: center; }
}

/* ── Calendar currency picker button & dropdown ── */
.wl-cal-cur-btn {
  display: flex; align-items: center; gap: 5px;
  padding: 4px 10px; border-radius: var(--r-full);
  border: 1px solid var(--glass-border);
  background: var(--glass-1); color: var(--text2);
  font-size: 10.5px; font-weight: 600; cursor: pointer;
  transition: var(--t-fast); white-space: nowrap;
  max-width: 180px; overflow: hidden; text-overflow: ellipsis;
}
.wl-cal-cur-btn:hover { background: var(--glass-2); color: var(--text); border-color: var(--glass-border-h); }

.wl-cal-cur-picker {
  padding: 10px 12px 12px;
  border-bottom: 1px solid var(--glass-border);
  background: var(--glass-1);
}
.wl-cal-cur-picker-head {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: 10px; gap: 8px;
  font-size: 11px; font-weight: 700; color: var(--text2);
  letter-spacing: .4px; text-transform: uppercase;
}
.wl-cal-cur-quick {
  padding: 3px 9px; border-radius: var(--r-full);
  border: 1px solid var(--glass-border);
  background: var(--glass-2); color: var(--text2);
  font-size: 10px; font-weight: 600; cursor: pointer;
  transition: var(--t-fast);
}
.wl-cal-cur-quick:hover { background: var(--glass-3); color: var(--text); }
.wl-cal-cur-done {
  padding: 3px 10px; border-radius: var(--r-full);
  border: 1px solid rgba(52,211,153,0.3);
  background: rgba(52,211,153,0.1); color: var(--green);
  font-size: 10px; font-weight: 700; cursor: pointer;
  transition: var(--t-fast);
}
.wl-cal-cur-done:hover { background: rgba(52,211,153,0.2); }
.wl-cal-cur-grid {
  display: flex; gap: 6px; flex-wrap: wrap;
}
.wl-cal-cur-item {
  display: flex; align-items: center; gap: 5px;
  padding: 5px 11px; border-radius: var(--r-full);
  border: 1px solid var(--glass-border);
  background: var(--glass-1); color: var(--text2);
  font-size: 11px; font-weight: 600; cursor: pointer;
  transition: var(--t-fast); user-select: none;
}
.wl-cal-cur-item input { display: none; }
.wl-cal-cur-item:hover { background: var(--glass-2); color: var(--text); }
.wl-cal-cur-item.checked {
  background: rgba(251,191,36,0.12); color: var(--gold);
  border-color: rgba(251,191,36,0.30);
}
.wl-cal-cur-flag { font-size: 13px; }

/* Light theme */
[data-theme="light"] .wl-cal-cur-picker { background: rgba(241,245,251,0.7); }
[data-theme="light"] .wl-cal-cur-item { background: rgba(255,255,255,0.7); border-color: rgba(0,0,0,0.08); color: #475569; }
[data-theme="light"] .wl-cal-cur-item.checked { background: rgba(217,119,6,0.08); color: #92400e; border-color: rgba(217,119,6,0.25); }

/* ════════════════════════════════════════════════════
   CHART SLOT SORTABLE GRID
   ════════════════════════════════════════════════════ */

.chart-sort-hint {
  font-size: 11px; color: var(--text3);
  margin-bottom: 10px; padding: 6px 10px;
  background: var(--glass-1); border: 1px solid var(--glass-border);
  border-radius: 8px; text-align: center;
  font-family: var(--font-mono); letter-spacing: .2px;
}

.chart-sort-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
  user-select: none;
  -webkit-user-select: none;
}

/* Each draggable slot */
.chart-sort-item {
  display: flex; flex-direction: column;
  border-radius: 10px;
  transition: transform .18s ease, box-shadow .18s ease, opacity .18s ease;
  cursor: default;
  position: relative;
}
.chart-sort-item[draggable="true"] { cursor: grab; }
.chart-sort-item[draggable="true"]:active { cursor: grabbing; }

/* Drag states */
.chart-sort-item.dragging {
  opacity: .35;
  transform: scale(0.96);
}
.chart-sort-item.drag-over {
  transform: scale(1.04);
  box-shadow: 0 0 0 2px var(--blue), 0 4px 20px rgba(96,165,250,0.25);
  z-index: 2;
}
.chart-sort-item.touch-dragging {
  opacity: .3;
  transform: scale(0.94);
}

/* Thumbnail area */
.chart-sort-thumb {
  position: relative;
  aspect-ratio: 16/10;
  border-radius: 8px;
  overflow: hidden;
  background: var(--glass-1);
  border: 1px solid var(--glass-border);
  display: flex; align-items: center; justify-content: center;
  transition: border-color .15s, box-shadow .15s;
}
.chart-sort-thumb.edit-mode {
  cursor: pointer;
}
.chart-sort-thumb.edit-mode:hover {
  border-color: rgba(96,165,250,0.4);
  box-shadow: 0 0 0 2px rgba(96,165,250,0.15);
}
.chart-sort-thumb img {
  width: 100%; height: 100%;
  object-fit: cover; display: block;
  pointer-events: none;
}
.chart-sort-overlay {
  position: absolute; inset: 0;
  background: rgba(0,0,0,0.48);
  display: flex; align-items: center; justify-content: center;
  gap: 6px;
  font-size: 12px; font-weight: 600; color: #fff;
  opacity: 0; transition: opacity .15s;
}
.chart-sort-thumb:hover .chart-sort-overlay { opacity: 1; }

.drag-handle {
  font-size: 16px; opacity: .7; cursor: grab;
  margin-right: 4px;
}

/* Empty slot */
.chart-sort-empty {
  display: flex; flex-direction: column;
  align-items: center; justify-content: center;
  gap: 5px; width: 100%; height: 100%;
  padding: 14px 8px;
}
.chart-sort-empty span:first-child { font-size: 22px; opacity: .35; }
.chart-sort-empty span:nth-child(2)  { font-size: 10px; color: var(--text3); }
.chart-sort-empty-hint { font-size: 9px; color: var(--text3); opacity: .6; }

/* Editable empty slots read as mini dropzones — dashed border, glow on
   drag-over, focus ring for keyboard users */
.chart-sort-item:not(.has-img) .chart-sort-thumb.edit-mode {
  border: 1.5px dashed var(--glass-border-h);
  border-radius: inherit;
  transition: border-color .2s var(--ease-out), background .2s var(--ease-out),
              transform .2s var(--ease-out), box-shadow .2s var(--ease-out);
}
.chart-sort-item:not(.has-img) .chart-sort-thumb.edit-mode:hover {
  border-color: var(--blue);
  background: var(--blue-dim);
}
.chart-sort-thumb.edit-mode:focus-visible,
.chart-sort-thumb[tabindex]:focus-visible {
  outline: 2px solid var(--blue);
  outline-offset: 2px;
}

/* Footer row: label input + delete */
.chart-sort-footer {
  display: flex; align-items: center; gap: 4px;
  margin-top: 5px;
}
.chart-sort-label {
  flex: 1; font-size: 10px;
  background: var(--glass-1);
  border: 1px solid var(--glass-border);
  border-radius: 5px; padding: 3px 6px;
  color: var(--text2); outline: none;
  font-family: var(--font-mono);
  transition: border-color .15s;
  min-width: 0;
}
.chart-sort-label[readonly] {
  background: transparent; border-color: transparent;
  color: var(--text3); cursor: default;
}
.chart-sort-del {
  background: none; border: none;
  color: var(--text3); cursor: pointer;
  font-size: 13px; padding: 2px 4px;
  border-radius: 4px; flex-shrink: 0;
  transition: color .15s;
  line-height: 1;
}
.chart-sort-del:hover { color: var(--red); }

.chart-sort-clear {
  font-size: 10px; color: var(--red);
  background: none; border: none;
  cursor: pointer; margin-top: 3px;
  padding: 0; align-self: flex-start;
  font-family: var(--font-mono);
  opacity: .75;
  transition: opacity .15s;
}
.chart-sort-clear:hover { opacity: 1; }

/* Ghost element for touch drag */
.drag-ghost {
  position: fixed; z-index: 9999;
  pointer-events: none;
  opacity: .85;
  border-radius: 10px;
  box-shadow: 0 8px 32px rgba(0,0,0,0.45);
  transform: scale(1.06) rotate(1.5deg);
  transition: none;
  overflow: hidden;
  background: var(--surface);
}

/* Light theme */
[data-theme="light"] .chart-sort-thumb {
  background: rgba(241,245,251,0.8);
  border-color: rgba(0,0,0,0.09);
}
[data-theme="light"] .chart-sort-label {
  background: rgba(241,245,251,0.8);
  border-color: rgba(0,0,0,0.08);
  color: #475569;
}
[data-theme="light"] .chart-sort-label[readonly] {
  background: transparent; color: #94a3b8;
}
[data-theme="light"] .chart-sort-hint {
  background: rgba(241,245,251,0.6);
  border-color: rgba(0,0,0,0.07);
}
[data-theme="light"] .drag-ghost { background: #fff; }

/* Responsive — 2 cols on mobile */
@media (max-width: 520px){
  .chart-sort-grid { grid-template-columns: repeat(2, 1fr); gap: 8px; }
}
/* ════════════ MONTHLY REVIEW ════════════════════════ */
.mr-nav{display:flex;align-items:center;gap:12px;margin-bottom:20px;
  padding:10px 14px;background:var(--glass-1);border:1px solid var(--glass-border);
  border-radius:var(--r-lg);width:fit-content}
.mr-nav-btn{background:var(--glass-2);border:1px solid var(--glass-border);
  color:var(--text2);width:30px;height:30px;border-radius:50%;cursor:pointer;
  font-size:16px;display:flex;align-items:center;justify-content:center;
  transition:var(--t-fast)}
.mr-nav-btn:hover{background:var(--glass-3);color:var(--text)}
.mr-nav-label{font-family:var(--font-head);font-size:14px;font-weight:700;
  color:var(--text);min-width:140px;text-align:center}
.mr-reflect-block{background:var(--glass-1);border:1px solid var(--glass-border);
  border-radius:12px;padding:14px 16px;margin-bottom:10px}
.mr-reflect-label{font-size:10.5px;font-weight:700;color:var(--text3);
  text-transform:uppercase;letter-spacing:.7px;margin-bottom:7px}
.mr-reflect-ta{min-height:75px;width:100%;box-sizing:border-box}

[data-theme="light"] .mr-nav{background:rgba(241,245,251,0.7);border-color:rgba(0,0,0,0.08)}
[data-theme="light"] .mr-reflect-block{background:rgba(241,245,251,0.6);border-color:rgba(0,0,0,0.07)}

/* ════════════ ACCOUNTS REDESIGN ════════════════════ */

/* Grid */
.acc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;margin-bottom:6px}
.acc-empty{grid-column:1/-1;color:var(--text3);text-align:center;padding:30px;
  font-style:italic;background:var(--glass-1);border:1px dashed var(--glass-border);
  border-radius:var(--r-lg)}

/* Cards — clickable */
.acc-card{background:var(--glass-1);border:1px solid var(--glass-border);
  border-radius:var(--r-lg);padding:16px 18px;cursor:pointer;
  transition:var(--t-med);position:relative;border-top:2px solid rgba(52,211,153,0.3)}
.acc-card:hover{background:var(--glass-2);border-color:var(--glass-border-h);
  box-shadow:var(--shadow-md);transform:translateY(-2px)}
.acc-card-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.acc-name{font-family:var(--font-head);font-size:14px;font-weight:800;letter-spacing:-.2px}
.acc-status{font-size:10px;font-weight:700;padding:3px 10px;border-radius:var(--r-full);
  letter-spacing:.4px}
.acc-status.active{background:var(--green-dim);color:var(--green);
  border:1px solid rgba(52,211,153,0.28)}
.acc-status.pending{background:rgba(251,191,36,0.10);color:var(--gold);
  border:1px solid rgba(251,191,36,0.22)}
.acc-status.completed{background:rgba(251,191,36,0.14);color:var(--gold);
  border:1px solid rgba(251,191,36,0.32);display:inline-flex;align-items:center}
.acc-row{display:flex;justify-content:space-between;font-size:12px;margin-bottom:6px}
.acc-row .k{color:var(--text3);font-weight:500}
.acc-row .v{font-family:var(--font-mono);font-weight:600}
.acc-pnl-toggle{cursor:pointer;border-radius:6px;margin:0 -6px 6px;padding:2px 6px;
  transition:background .15s var(--ease-out)}
.acc-pnl-toggle:hover{background:var(--glass-2)}
.acc-pnl-toggle:hover .v::after{content:'⇄';margin-left:5px;font-size:10px;color:var(--text3)}

/* Recent outcomes dots */
.acc-recent-dots{display:flex;align-items:center;gap:4px;margin-top:11px;
  padding-top:11px;border-top:1px solid var(--glass-border)}
.acc-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}
.acc-dot.w{background:var(--green)}
.acc-dot.l{background:var(--red)}
.acc-dot.b{background:var(--text3)}
.acc-recent-label{font-size:10px;color:var(--text3);font-family:var(--font-mono);
  margin-left:4px;letter-spacing:.3px}

/* Detail drawer */
.acc-detail-drawer{background:var(--glass-1);border:1px solid var(--glass-border);
  border-radius:var(--r-lg);margin-bottom:20px;overflow:visible;
  opacity:0;transform:translateY(-8px);pointer-events:none;
  transition:opacity .3s var(--ease-out), transform .3s var(--ease-out)}
.acc-detail-drawer.open{opacity:1;transform:translateY(0);pointer-events:auto}
.acc-detail-body{padding:16px 18px}
.acc-detail-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:16px}
.acc-ds{background:var(--glass-1);border:1px solid var(--glass-border);
  border-radius:12px;padding:11px 14px;text-align:center}
.acc-ds-label{font-size:10px;color:var(--text3);text-transform:uppercase;
  letter-spacing:.6px;margin-bottom:4px;font-weight:600}
.acc-ds-val{font-family:var(--font-head);font-size:18px;font-weight:800}
.acc-ds-val.green{color:var(--green)}
.acc-ds-val.red{color:var(--red)}
.acc-ds-val.blue{color:var(--blue)}
.acc-ds-val.gold{color:var(--gold)}

/* ════════ ACCOUNT ANALYTICS — institutional dashboard ════════ */
.acc-an{ animation:pageIn .3s var(--ease-out) }

/* — Hero — */
.acc-hero{
  display:grid;grid-template-columns:1fr auto;gap:20px;align-items:center;
  background:linear-gradient(145deg,var(--glass-2) 0%,var(--glass-0) 100%);
  border:1px solid var(--glass-border);border-radius:var(--r-xl);
  padding:20px 48px 20px 22px;margin-bottom:16px;position:relative;overflow:hidden;
}
.acc-hero-close{
  position:absolute;top:14px;right:14px;z-index:2;width:26px;height:26px;
  display:flex;align-items:center;justify-content:center;border-radius:50%;
  background:var(--glass-2);border:1px solid var(--glass-border);color:var(--text2);
  cursor:pointer;font-size:12px;line-height:1;padding:0;
  transition:background .15s var(--ease-out),color .15s var(--ease-out);
}
.acc-hero-close:hover{background:var(--glass-3);color:var(--text1)}
.acc-hero::before{
  content:'';position:absolute;inset:0;border-radius:inherit;pointer-events:none;
  background:radial-gradient(ellipse 70% 60% at 85% 15%,rgba(96,165,250,0.07) 0%,transparent 60%);
}
.acc-hero-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px;position:relative;z-index:1}
.acc-hero-name{font-family:var(--font-head);font-size:19px;font-weight:800;letter-spacing:-.02em}
.acc-hero-badges{display:flex;gap:6px;flex-wrap:wrap}
.acc-hero-badge{font-size:10px;font-weight:700;letter-spacing:.03em;padding:3px 9px;border-radius:var(--r-full);
  background:var(--glass-2);border:1px solid var(--glass-border);color:var(--text2)}
.acc-hero-badge.status-active{background:var(--green-dim);border-color:rgba(52,211,153,.3);color:var(--green)}
.acc-hero-badge.status-archived{background:var(--glass-2);color:var(--text3)}
.acc-hero-badge.status-completed{background:rgba(251,191,36,0.14);border-color:rgba(251,191,36,.32);color:var(--gold);display:inline-flex;align-items:center}
.acc-hero-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:14px 18px;position:relative;z-index:1}
.acc-hero-stat{min-width:0}
.acc-hero-stat-label{font-size:9.5px;color:var(--text3);text-transform:uppercase;letter-spacing:.06em;font-weight:600;margin-bottom:3px}
.acc-hero-stat-val{font-family:var(--font-head);font-size:17px;font-weight:800;letter-spacing:-.01em;font-feature-settings:'tnum'}
.acc-hero-stat-val.green{color:var(--green)}
.acc-hero-stat-val.red{color:var(--red)}
.acc-hero-stat-val.gold{color:var(--gold)}
.acc-hero-stat-val.blue{color:var(--blue)}

/* Health gauge (right side of hero) */
.acc-health{display:flex;flex-direction:column;align-items:center;gap:2px;position:relative;z-index:1;flex-shrink:0}
.acc-health-ring-wrap{position:relative;width:104px;height:104px;flex-shrink:0}
.acc-health-ring-wrap svg{position:absolute;inset:0;width:100%;height:100%}
.acc-health-center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.acc-health-grade{font-family:var(--font-head);font-size:22px;font-weight:800;line-height:1}
.acc-health-score{font-size:9.5px;color:var(--text3);margin-top:2px;font-weight:600}
.acc-health-label{font-size:9.5px;color:var(--text3);text-transform:uppercase;letter-spacing:.06em;font-weight:600;margin-top:6px}
.acc-health-why{position:relative;z-index:1;margin-top:2px}
.acc-health-why-btn{font-size:10px;color:var(--blue);background:none;border:none;cursor:pointer;font-family:var(--font-body);font-weight:600;padding:2px 4px}
.acc-health-why-panel{
  display:none;position:absolute;right:0;top:calc(100% + 6px);width:230px;z-index:20;
  background:var(--bg2);border:1px solid var(--glass-border);border-radius:var(--r-md);
  padding:10px 12px;box-shadow:var(--shadow-lg);font-size:11px;color:var(--text2);line-height:1.5;
}
.acc-health-why-panel.show{display:block}
.acc-health-why-panel ul{margin:0;padding-left:16px}
.acc-health-why-panel li{margin-bottom:3px}

@media (max-width: 640px){
  .acc-hero{grid-template-columns:1fr}
  .acc-health{flex-direction:row;justify-content:flex-start;gap:12px;margin-top:4px}
  .acc-health-ring-wrap{width:76px;height:76px}
  .acc-health-grade{font-size:17px}
}

/* — KPI Scorecard — */
.acc-kpi-scorecard{
  display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-bottom:16px;
}
.acc-kpi-card{
  position:relative;background:var(--glass-1);border:1px solid var(--glass-border);
  border-radius:var(--r-md);padding:12px 13px;overflow:hidden;
  transition:transform .18s var(--ease-out),border-color .18s var(--ease-out),box-shadow .18s var(--ease-out);
}
.acc-kpi-card:hover{transform:translateY(-2px);border-color:var(--glass-border-h);box-shadow:var(--shadow-sm)}
.acc-kpi-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:6px;margin-bottom:6px}
.acc-kpi-card-label{font-size:9.5px;color:var(--text3);text-transform:uppercase;letter-spacing:.05em;font-weight:600;
  display:flex;align-items:center;gap:4px;cursor:help}
.acc-kpi-card-trend{font-size:9.5px;font-weight:700;white-space:nowrap;display:flex;align-items:center;gap:2px}
.acc-kpi-card-trend.up{color:var(--green)}
.acc-kpi-card-trend.down{color:var(--red)}
.acc-kpi-card-trend.flat{color:var(--text3)}
.acc-kpi-card-val{font-family:var(--font-head);font-size:18px;font-weight:800;letter-spacing:-.01em;
  font-feature-settings:'tnum';margin-bottom:6px}
.acc-kpi-card-val.green{color:var(--green)}
.acc-kpi-card-val.red{color:var(--red)}
.acc-kpi-card-val.gold{color:var(--gold)}
.acc-kpi-card-spark{width:100%;height:26px;display:block}

@media (max-width: 1080px){ .acc-kpi-scorecard{grid-template-columns:repeat(4,1fr)} }
@media (max-width: 900px){ .acc-kpi-scorecard{grid-template-columns:repeat(3,1fr)} }
@media (max-width: 640px){ .acc-kpi-scorecard{grid-template-columns:repeat(2,1fr);gap:8px} }

/* — Equity curve section — */
.acc-eq-section{
  background:var(--glass-0);border:1px solid var(--glass-border);border-radius:var(--r-lg);
  padding:16px 18px 12px;margin-bottom:16px;
}
.acc-eq-head{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;margin-bottom:10px}
.acc-eq-title{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text2)}
.acc-eq-toggles{display:flex;gap:6px;flex-wrap:wrap}
.acc-eq-canvas-wrap{position:relative;width:100%}
.acc-eq-empty{color:var(--text3);text-align:center;padding:40px 10px;font-style:italic;font-size:12px}

/* Section headers reused for new analytics blocks */
.acc-an-sec-head{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text2);
  margin:0 0 10px}

/* Milestone edit/delete buttons */
.acc-ms-actions{margin-left:auto;display:flex;gap:4px;opacity:0;transition:opacity .15s}
.cl-item:hover .acc-ms-actions{opacity:1}
.aff-card:hover .acc-ms-actions{opacity:1}

/* Progress bar (kept for future use) */
.acc-progress-wrap{margin-top:12px}
.acc-progress-label{display:flex;justify-content:space-between;font-size:11px;
  color:var(--text2);margin-bottom:5px}
.acc-progress-bg{height:4px;background:var(--glass-2);border-radius:var(--r-full);overflow:hidden}
.acc-progress-fill{height:100%;background:linear-gradient(90deg,var(--green),rgba(52,211,153,0.6));
  border-radius:var(--r-full);transition:width .9s var(--ease-out)}

/* ════════ CHALLENGE PROGRESS TRACKER (Prop Firm Challenge accounts) ════════ */
.acc-chal-card{
  position:relative;overflow:hidden;
  background:linear-gradient(150deg,var(--glass-2) 0%,var(--glass-0) 100%);
  border:1px solid var(--glass-border);border-radius:var(--r-xl);
  padding:20px 22px 22px;margin-bottom:16px;
  animation:pageIn .35s var(--ease-out);
}
.acc-chal-card::before{
  content:'';position:absolute;inset:0;border-radius:inherit;pointer-events:none;
  background:radial-gradient(ellipse 65% 55% at 12% 10%,rgba(52,211,153,0.08) 0%,transparent 60%);
}
.acc-chal-card.complete{border-color:rgba(251,191,36,0.35);box-shadow:0 0 0 1px rgba(251,191,36,0.12),0 8px 32px rgba(251,191,36,0.08)}
.acc-chal-card.complete::before{background:radial-gradient(ellipse 65% 55% at 12% 10%,rgba(251,191,36,0.14) 0%,transparent 60%)}
/* Phase 1 complete uses a blue theme so it reads distinctly from Phase 2's gold "ready for verification" state */
.acc-chal-card.complete.phase1{border-color:rgba(96,165,250,0.35);box-shadow:0 0 0 1px rgba(96,165,250,0.12),0 8px 32px rgba(96,165,250,0.08)}
.acc-chal-card.complete.phase1::before{background:radial-gradient(ellipse 65% 55% at 12% 10%,rgba(96,165,250,0.14) 0%,transparent 60%)}

.acc-chal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap;position:relative;z-index:1;margin-bottom:16px}
.acc-chal-title{font-family:var(--font-head);font-size:16px;font-weight:800;letter-spacing:-.01em;color:var(--text)}
.acc-chal-sub{font-size:11.5px;color:var(--text3);margin-top:3px;max-width:420px;line-height:1.4}
.acc-chal-badge{
  font-size:10px;font-weight:800;letter-spacing:.05em;padding:6px 12px;border-radius:var(--r-full);
  background:linear-gradient(135deg,rgba(251,191,36,0.22),rgba(251,191,36,0.10));
  border:1px solid rgba(251,191,36,0.4);color:var(--gold);white-space:nowrap;
  box-shadow:0 0 16px rgba(251,191,36,0.18);
}
/* Phase 1 complete uses the blue theme, matching the border/progress-bar/checkmark above */
.acc-chal-card.complete.phase1 .acc-chal-badge{
  background:linear-gradient(135deg,rgba(96,165,250,0.22),rgba(96,165,250,0.10));
  border:1px solid rgba(96,165,250,0.4);color:var(--blue);
  box-shadow:0 0 16px rgba(96,165,250,0.18);
}

.acc-chal-target-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;position:relative;z-index:1;margin-bottom:16px}
.acc-chal-target-lbl{font-size:9.5px;color:var(--text3);text-transform:uppercase;letter-spacing:.06em;font-weight:700;white-space:nowrap}
.acc-chal-tbtns{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.acc-chal-tbtn{
  font-family:var(--font-body);font-size:11.5px;font-weight:700;padding:6px 14px;border-radius:var(--r-full);
  background:var(--glass-1);border:1px solid var(--glass-border);color:var(--text2);cursor:pointer;
  transition:background .15s var(--ease-out),border-color .15s var(--ease-out),color .15s var(--ease-out),transform .15s var(--ease-out);
}
.acc-chal-tbtn:hover{background:var(--glass-2);border-color:var(--glass-border-h);transform:translateY(-1px)}
.acc-chal-tbtn.active{background:var(--green-dim);border-color:rgba(52,211,153,.4);color:var(--green)}
.acc-chal-card.complete .acc-chal-tbtn.active{background:rgba(251,191,36,0.16);border-color:rgba(251,191,36,.4);color:var(--gold)}
.acc-chal-card.complete.phase1 .acc-chal-tbtn.active{background:rgba(96,165,250,0.16);border-color:rgba(96,165,250,.4);color:var(--blue)}
.acc-chal-custom-input{
  width:64px;font-family:var(--font-body);font-size:11.5px;font-weight:700;padding:6px 10px;border-radius:var(--r-full);
  background:var(--glass-1);border:1px solid var(--glass-border-h);color:var(--text);text-align:center;
}
.acc-chal-custom-input:focus{outline:none;border-color:var(--green)}

.acc-chal-complete-banner{
  display:flex;align-items:center;gap:10px;position:relative;z-index:1;margin-bottom:14px;
  font-family:var(--font-head);font-size:14px;font-weight:800;color:var(--gold);
}
.acc-chal-card.phase1 .acc-chal-complete-banner{color:var(--blue)}
.acc-chal-check{width:26px;height:26px;flex-shrink:0}
.acc-chal-check-circle{stroke:var(--gold);stroke-width:2.5;stroke-dasharray:146;stroke-dashoffset:146;animation:chalCheckCircle .5s var(--ease-out) forwards}
.acc-chal-check-mark{stroke:var(--gold);stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:36;stroke-dashoffset:36;animation:chalCheckMark .35s var(--ease-out) .4s forwards}
.acc-chal-card.phase1 .acc-chal-check-circle{stroke:var(--blue)}
.acc-chal-card.phase1 .acc-chal-check-mark{stroke:var(--blue)}
@keyframes chalCheckCircle{to{stroke-dashoffset:0}}
@keyframes chalCheckMark{to{stroke-dashoffset:0}}

.acc-chal-progress-wrap{position:relative;z-index:1;margin-bottom:34px}
.acc-chal-progress-outer{
  position:relative;width:100%;height:30px;border-radius:var(--r-full);
  background:var(--glass-2);border:1px solid var(--glass-border);overflow:hidden;
  box-shadow:inset 0 1px 3px rgba(0,0,0,0.15);
}
.acc-chal-progress-fill{
  position:relative;height:100%;border-radius:var(--r-full);min-width:30px;
  background:linear-gradient(90deg,#065f46 0%,#059669 55%,#10b981 100%);
  transition:width 1s var(--ease-out),background 0.5s var(--ease-out);
  box-shadow:0 0 16px rgba(5,150,105,0.4);
  display:flex;align-items:center;justify-content:flex-end;
}
.acc-chal-progress-fill.gold{
  background:linear-gradient(90deg,#92400e 0%,#b45309 55%,#d97706 100%);
  box-shadow:0 0 20px rgba(180,83,9,0.5);
}
.acc-chal-card.phase1 .acc-chal-progress-fill.gold{
  background:linear-gradient(90deg,#1e3a8a 0%,#2563eb 55%,#3b82f6 100%);
  box-shadow:0 0 20px rgba(37,99,235,0.5);
}
.acc-chal-progress-glow{
  position:absolute;top:0;right:0;bottom:0;width:36px;
  background:none;
}
[data-theme="light"] .acc-chal-progress-glow{
  background:linear-gradient(90deg,transparent,rgba(255,255,255,0.18));
  animation:chalGlowPulse 2.2s ease-in-out infinite;
}
@keyframes chalGlowPulse{0%,100%{opacity:.4}50%{opacity:.8}}
.acc-chal-progress-pct{
  position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  font-family:var(--font-head);font-size:12.5px;font-weight:800;letter-spacing:.01em;
  color:var(--text);text-shadow:0 1px 2px rgba(0,0,0,0.35);pointer-events:none;z-index:2;
}
.acc-chal-milestones{position:relative;height:20px;margin-top:6px}
.acc-chal-ms{position:absolute;top:0;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:3px}
.acc-chal-ms-dot{width:7px;height:7px;border-radius:50%;background:var(--glass-3);border:1px solid var(--glass-border-h);transition:background .3s,border-color .3s,box-shadow .3s}
.acc-chal-ms.reached .acc-chal-ms-dot{background:var(--green);border-color:var(--green);box-shadow:0 0 8px rgba(52,211,153,0.6)}
.acc-chal-card.complete .acc-chal-ms.reached .acc-chal-ms-dot{background:var(--gold);border-color:var(--gold);box-shadow:0 0 8px rgba(251,191,36,0.6)}
.acc-chal-card.complete.phase1 .acc-chal-ms.reached .acc-chal-ms-dot{background:var(--blue);border-color:var(--blue);box-shadow:0 0 8px rgba(96,165,250,0.6)}
.acc-chal-ms-lbl{font-size:9px;color:var(--text3);font-weight:600}
.acc-chal-ms.reached .acc-chal-ms-lbl{color:var(--text2)}

.acc-chal-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;position:relative;z-index:1}
.acc-chal-stat{background:var(--glass-1);border:1px solid var(--glass-border);border-radius:var(--r-md);padding:11px 13px}
.acc-chal-stat-lbl{font-size:9.5px;color:var(--text3);text-transform:uppercase;letter-spacing:.05em;font-weight:600;margin-bottom:4px}
.acc-chal-stat-val{font-family:var(--font-head);font-size:16px;font-weight:800;letter-spacing:-.01em;font-feature-settings:'tnum';color:var(--text)}
.acc-chal-stat-val.green{color:var(--green)}
.acc-chal-stat-val.red{color:var(--red)}
.acc-chal-stat-val.gold{color:var(--gold)}
.acc-chal-stat-val.blue{color:var(--blue)}
.acc-chal-card.complete.phase1 .acc-chal-stat-val.gold{color:var(--blue)}

.acc-chal-confetti{
  position:absolute;top:-10px;width:6px;height:6px;border-radius:1px;opacity:0;z-index:0;
  animation:chalConfettiFall 2.4s ease-in infinite;
}
@keyframes chalConfettiFall{
  0%{opacity:0;transform:translateY(0) rotate(0deg)}
  8%{opacity:.75}
  85%{opacity:.4}
  100%{opacity:0;transform:translateY(180px) rotate(340deg)}
}

@media (max-width: 900px){ .acc-chal-stats{grid-template-columns:repeat(2,1fr)} }
@media (max-width: 640px){
  .acc-chal-card{padding:16px 14px 18px}
  .acc-chal-target-row{flex-direction:column;align-items:flex-start;gap:8px}
  .acc-chal-progress-outer{height:26px}
}

[data-theme="light"] .acc-chal-progress-pct{color:#0f172a;text-shadow:0 1px 2px rgba(255,255,255,0.6)}
[data-theme="light"] .acc-chal-progress-fill.gold .acc-chal-progress-pct,
[data-theme="light"] .acc-chal-progress-fill:not(.gold) .acc-chal-progress-pct{color:#0f172a}

/* Light theme */
[data-theme="light"] .acc-card{background:rgba(255,255,255,0.7);border-color:rgba(0,0,0,0.08)}
[data-theme="light"] .acc-card:hover{background:#fff;border-color:rgba(0,0,0,0.14)}
[data-theme="light"] .acc-detail-drawer{background:rgba(241,245,251,0.6);border-color:rgba(0,0,0,0.08)}
[data-theme="light"] .acc-ds{background:rgba(255,255,255,0.7);border-color:rgba(0,0,0,0.08)}
[data-theme="light"] .acc-empty{background:rgba(241,245,251,0.5);border-color:rgba(0,0,0,0.08)}

@media (max-width: 640px){
  .acc-grid{grid-template-columns:1fr}
  .acc-detail-stats{grid-template-columns:repeat(2,1fr)}
}

/* ════════════ DASHBOARD — SINGLE ORGANIZED COLUMN ══════════════ */
.page#page-dashboard { overflow-y: auto; overflow-x: clip; }
.page#page-dashboard > .dash-layout { max-width: none; margin: 0; width: 100%; }

.dash-layout {
  display: block;
  width: 100%;
  box-sizing: border-box;
}

.dash-left {
  min-width: 0;
  overflow: visible; /* was hidden — clips child data-table-wrap scroll context */
  padding: 20px 24px 40px;
  box-sizing: border-box;
}

/* ── Widgets row: KPI bento grid + NxTGen Score, side by side ── */
.dash-widgets-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 260px;
  gap: 14px;
  align-items: stretch;
  margin-bottom: 10px;
}
.dash-widgets-row .kpi-grid-bento { margin-bottom: 0; height: 100%; }

/* ── Dashboard analytics stack (hero shape-gauge rows + mini stat chips) ── */
.dash-kpi-analytics { display: flex; flex-direction: column; gap: 10px; height: 100%; min-width: 0; }
.dash-an-row1 { flex: none; }
.dash-an-row2 { flex: none; }
.dash-kpi-mini { grid-template-columns: repeat(4, 1fr); gap: 10px; margin-bottom: 0; flex: 1; }
@media (max-width: 900px){
  .dash-kpi-mini { grid-template-columns: repeat(4, 1fr); }
}
@media (max-width: 640px){
  .dash-kpi-mini { grid-template-columns: repeat(2, 1fr); gap: 8px; }
}
@media (max-width: 420px){
  .dash-kpi-mini { gap: 6px; }
}

/* ── Calendar panel: normal in-flow section, styled like other dashboard cards ── */
.dash-cal-panel {
  background: var(--glass-0);
  border: 1px solid var(--glass-border);
  border-radius: var(--r-lg);
  padding: 16px 18px 20px;
  position: relative;
  width: 100%;
  box-sizing: border-box;
  margin-bottom: 20px;
  overflow: visible;
}
.dash-cal-panel::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0; bottom: 0;
  border-radius: inherit;
  background: radial-gradient(ellipse 70% 45% at 60% 0%,
    rgba(96,165,250,0.05) 0%, transparent 60%);
  pointer-events: none;
}
[data-theme="light"] .dash-cal-panel {
  background: var(--glass-1);
  box-shadow: var(--shadow-md), inset 0 1px 0 var(--glass-shine);
}

.dash-cal-top {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  margin-bottom: 12px;
  gap: 8px;
  position: relative;
  z-index: 1;
}
.dash-cal-controls {
  display: flex;
  gap: 6px;
  align-items: center;
  flex-shrink: 0;
}

/* Compact KPI strip — 4 col on desktop */
.dash-cal-panel .cal-kpi-row {
  grid-template-columns: repeat(4, 1fr);
  gap: 8px;
  padding: 0 0 12px;
}
.dash-cal-panel .cal-kpi {
  padding: 10px 12px;
  border-radius: var(--r-md);
}
.dash-cal-panel .cal-kpi-val { font-size: 15px; }
.dash-cal-panel .cal-kpi-label { font-size: 8.5px; }

/* Calendar day cells */
.dash-cal-panel .cal-day {
  min-height: 64px;
  padding: 6px 7px;
}
.dash-cal-panel .cal-day-num { font-size: 11px; }
.dash-cal-panel .cal-day-pnl { font-size: 9.5px; }
.dash-cal-panel .cal-day-count { font-size: 8px; }
.dash-cal-panel .cal-day-pairs { font-size: 7px; }
.dash-cal-panel .cal-month-label { font-size: 15px; }
.dash-cal-panel .cal-grid-wrap { border-radius: var(--r-lg); }
.dash-cal-panel .cal-dow { font-size: 8px; padding: 5px 0; }
.dash-cal-panel .cal-nav { width: 28px; height: 28px; font-size: 15px; }

/* ── Responsive breakpoints ── */
@media (max-width: 1080px){
  .dash-widgets-row { grid-template-columns: minmax(0, 1fr) 220px; }
}

@media (max-width: 900px){
  .dash-widgets-row { grid-template-columns: 1fr; }
  .nxt-score-card { max-width: 380px; margin: 0 auto; width: 100%; }
  .dash-cal-panel .cal-kpi-row { grid-template-columns: repeat(3, 1fr); gap: 6px; }
}

@media (max-width: 640px){
  .dash-left { padding: 12px 12px 20px; }
  .dash-cal-panel {
    padding: 12px;
    border-radius: var(--r-lg);
  }
  .dash-cal-panel .cal-kpi-row { grid-template-columns: repeat(2, 1fr); gap: 4px; }
  .dash-cal-controls #cal-acc-filter { display: none; }
  .dash-cal-panel .cal-day { min-height: 46px; padding: 3px 4px; }
  .dash-cal-panel .cal-day-num { font-size: 9px; }
  .dash-cal-panel .cal-day-pnl { font-size: 8px; }
  .dash-cal-panel .cal-day-count { font-size: 7px; }
  .dash-cal-panel .cal-day-pairs { display: none; }
  .dash-cal-panel .cal-dow { font-size: 7px; padding: 4px 0; }
  .dash-cal-panel .cal-nav { width: 24px; height: 24px; font-size: 12px; }
  .dash-cal-panel .cal-month-label { font-size: 13px; min-width: 120px; }
}

/* ════════════ NXTGEN SCORE WIDGET ══════════════ */
.nxt-score-card {
  background: var(--glass-0);
  border: 1px solid var(--glass-border);
  border-radius: var(--r-lg);
  padding: 14px 16px 16px;
  display: flex;
  flex-direction: column;
  box-sizing: border-box;
  position: relative;
  overflow: hidden;
}
.nxt-score-card::before {
  content: '';
  position: absolute; inset: 0;
  background: radial-gradient(ellipse 80% 60% at 80% 0%, rgba(167,139,250,0.08) 0%, transparent 65%);
  pointer-events: none;
}
[data-theme="light"] .nxt-score-card { background: var(--glass-1); box-shadow: var(--shadow-md), inset 0 1px 0 var(--glass-shine); }
.nxt-score-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  position: relative;
  z-index: 1;
}
.nxt-score-title {
  font-family: var(--font-head);
  font-size: 11.5px;
  font-weight: 800;
  color: var(--text);
  letter-spacing: -0.1px;
}
.nxt-score-badge {
  font-size: 8px;
  font-weight: 800;
  letter-spacing: 0.08em;
  color: var(--purple);
  background: rgba(167,139,250,0.14);
  border: 1px solid rgba(167,139,250,0.3);
  border-radius: 5px;
  padding: 2px 6px;
}
.nxt-score-body {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 120px;
  position: relative;
  z-index: 1;
}
.nxt-score-tri-wrap { width: 100%; max-width: 170px; }
.nxt-score-tri-wrap svg { width: 100%; height: auto; display: block; }
.nxt-score-foot {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
  padding-top: 6px;
  border-top: 1px solid var(--glass-border);
  position: relative;
  z-index: 1;
}
.nxt-score-foot-label {
  font-size: 9.5px;
  color: var(--text3);
  text-transform: uppercase;
  letter-spacing: 0.06em;
}
.nxt-score-value {
  font-family: var(--font-mono);
  font-size: 22px;
  font-weight: 700;
  color: var(--purple);
  letter-spacing: -0.5px;
}

/* ════════════ CHECKLIST ════════════════════════ */
.checklist-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.cl-item{
  display:flex;align-items:center;gap:10px;
  padding:8px 12px;
  background:var(--glass-0);border:1px solid var(--glass-border);
  border-radius:var(--r-sm);cursor:pointer;user-select:none;
  transition:var(--t-fast);
}
.cl-item:hover{background:var(--glass-1);border-color:var(--glass-border-h)}
.cl-item.checked{border-color:rgba(52,211,153,0.3);background:rgba(52,211,153,0.06);box-shadow:inset 0 0 0 1px rgba(52,211,153,0.1)}
.cl-box{
  width:16px;height:16px;border-radius:4px;
  border:1.5px solid var(--glass-border);
  display:flex;align-items:center;justify-content:center;
  flex-shrink:0;font-size:10px;transition:var(--t-spring);
}
.cl-item.checked .cl-box{background:var(--green);border-color:var(--green);color:#fff;box-shadow:0 0 8px var(--green-glow);transform:scale(1.05)}
.cl-text{font-size:12px;color:var(--text2)}
.cl-item.checked .cl-text{color:var(--text)}

/* Drag-to-reorder for checklist items (milestones + goals) */
#milestones-list .cl-item,.goals-group .cl-item{cursor:grab}
#milestones-list .cl-item:active,.goals-group .cl-item:active{cursor:grabbing}
#milestones-list .cl-item.editing,.goals-group .cl-item.editing{cursor:default}
.cl-item.dragging{opacity:.35;transform:scale(0.97)}
.cl-item.drag-over{box-shadow:0 0 0 2px var(--blue),inset 0 0 0 1px rgba(96,165,250,0.15);transform:scale(1.02)}
.aff-card.dragging{opacity:.35;transform:scale(0.97)}
.aff-card.drag-over{box-shadow:0 0 0 2px var(--blue),inset 0 0 0 1px rgba(96,165,250,0.15);transform:scale(1.02)}
.cl-drag-handle{
  font-size:13px;opacity:.45;cursor:grab;flex-shrink:0;
  line-height:1;transition:var(--t-fast);border-radius:4px;
  width:16px;height:16px;display:flex;align-items:center;justify-content:center;
}
.cl-drag-handle:hover{opacity:.9}
.cl-drag-handle:active{cursor:grabbing}
.cl-drag-handle.selected{opacity:1;color:var(--blue);background:rgba(96,165,250,0.15);box-shadow:0 0 0 1px rgba(96,165,250,0.4)}

/* ════════════ ACCOUNTS ═════════════════════════ */


/* ════════════ PLAYBOOK ═════════════════════════ */
.rule-card{
  background:var(--glass-0);border:1px solid var(--glass-border);
  border-radius:var(--r-md);padding:13px 16px;margin-bottom:8px;
  transition:var(--t-fast);
}
.rule-card:hover{background:var(--glass-1);border-color:var(--glass-border-h)}
.rule-num{font-family:var(--font-mono);font-size:10px;color:var(--accent);margin-bottom:4px;font-weight:700;letter-spacing:.08em}
.rule-text{font-size:13px;color:var(--text2);line-height:1.55}

/* Morning Affirmations — draggable/editable cards */
.aff-card{display:flex;align-items:flex-start;gap:10px;cursor:grab}
.aff-card:active{cursor:grabbing}
.aff-card.editing{cursor:default}
.aff-card .cl-drag-handle{margin-top:2px}
.aff-card .acc-ms-actions{margin-top:2px}
.aff-card .cl-edit-input{margin-top:2px;font-style:italic}
.model-card{
  background:var(--glass-1);border:1px solid var(--glass-border);
  border-radius:var(--r-lg);padding:18px;margin-bottom:10px;
  transition:var(--t-med);box-shadow:var(--shadow-sm);
}
.model-card:hover{background:var(--glass-2);border-color:var(--glass-border-h);transform:translateY(-1px)}
.model-card-archived{opacity:.55;border-style:dashed}
.model-card-archived:hover{opacity:.75}
.model-title{font-family:var(--font-head);font-size:15px;font-weight:700;margin-bottom:4px;letter-spacing:-0.2px}
.model-sub{font-size:11.5px;color:var(--text2);margin-bottom:12px;line-height:1.5}
.model-steps{display:flex;flex-direction:column;gap:6px;counter-reset:step}
.model-step{display:flex;gap:10px;font-size:12.5px;color:var(--text2);line-height:1.5}
.model-step::before{
  content:counter(step);counter-increment:step;
  width:20px;height:20px;
  background:var(--blue-dim);border:1px solid rgba(96,165,250,0.22);
  border-radius:50%;display:flex;align-items:center;justify-content:center;
  font-size:10px;font-family:var(--font-mono);color:var(--blue);
  flex-shrink:0;margin-top:1px;font-weight:600;
  box-shadow:0 0 8px var(--blue-glow);
}

/* ════════════ MONTHLY ══════════════════════════ */
.month-summary-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:20px}
.month-stat{
  background:var(--glass-1);border:1px solid var(--glass-border);
  border-radius:var(--r-lg);padding:13px 14px;
  transition:var(--t-fast);
}
.month-stat:hover{background:var(--glass-2)}
.month-stat-label{font-size:10px;color:var(--text3);margin-bottom:5px;font-weight:600;text-transform:uppercase;letter-spacing:.06em}
.month-stat-val{font-family:var(--font-mono);font-size:19px;font-weight:700;letter-spacing:-0.4px}
.month-stat-val.blue{color:var(--blue)}
.month-stat-val.green{color:var(--green)}
.month-stat-val.red{color:var(--red)}
.month-stat-val.gold{color:var(--gold)}

/* ════════════ SCROLLBAR ════════════════════════ */
::-webkit-scrollbar{width:4px;height:4px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--glass-2);border-radius:var(--r-full)}
::-webkit-scrollbar-thumb:hover{background:var(--glass-3)}

/* ════════════ CALENDAR — FUTURISTIC REDESIGN ══════ */
.cal-wrap{display:flex;flex-direction:column;height:100%;min-height:0;gap:0}

/* Month navigator */
.cal-header{
  display:flex;align-items:center;justify-content:center;gap:16px;
  padding:0 0 12px;flex-shrink:0;
}
.cal-nav{
  width:30px;height:30px;border-radius:var(--r-sm);
  background:var(--glass-1);border:1px solid var(--glass-border);
  display:flex;align-items:center;justify-content:center;
  cursor:pointer;color:var(--text2);font-size:16px;
  transition:var(--t-fast);user-select:none;
  backdrop-filter:var(--blur-xs);
}
.cal-nav:hover{
  background:var(--glass-2);color:var(--text);
  border-color:var(--glass-border-h);transform:scale(1.1);
  box-shadow:var(--shadow-sm);
}
.cal-nav:active{transform:scale(0.94)}
.cal-month-label{
  font-family:var(--font-head);font-size:16px;font-weight:800;
  min-width:150px;text-align:center;letter-spacing:-0.5px;
  background:linear-gradient(135deg,var(--text) 30%,var(--text2) 100%);
  -webkit-background-clip:text;background-clip:text;
}

/* KPI strip — horizontal scrollable on mobile */
.cal-kpi-row{
  display:grid;grid-template-columns:repeat(5,1fr);
  gap:7px;padding:0 0 10px;flex-shrink:0;
}
@media (max-width: 900px){.cal-kpi-row{grid-template-columns:repeat(3,1fr)}}
@media (max-width: 600px){.cal-kpi-row{grid-template-columns:repeat(2,1fr)}}

.cal-kpi{
  background:var(--glass-1);border:1px solid var(--glass-border);
  border-radius:var(--r-lg);padding:10px 12px;
  transition:var(--t-fast);position:relative;overflow:hidden;
  box-shadow:var(--shadow-sm);
  min-width:0;
}
.cal-kpi::before{
  content:'';position:absolute;top:0;left:0;right:0;height:1px;
  background:linear-gradient(90deg,transparent,var(--glass-shine),transparent);
}
.cal-kpi:hover{background:var(--glass-2);border-color:var(--glass-border-h);transform:translateY(-1px);box-shadow:var(--shadow-md)}
.cal-kpi-label{
  font-size:9px;color:var(--text3);text-transform:uppercase;
  letter-spacing:.1em;margin-bottom:4px;font-weight:700;
  display:flex;align-items:center;gap:3px;min-width:0;
}
.cal-kpi-icon{flex-shrink:0;line-height:1;display:inline-flex;align-items:center;justify-content:center}
.cal-kpi-text{line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.cal-kpi-sub-row{font-size:9px;color:var(--text3);margin-top:3px;display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.cal-kpi-sub{display:inline-flex;align-items:center;gap:1px;white-space:nowrap;line-height:1}
.cal-kpi-sub.green{color:var(--green)}
.cal-kpi-sub.red{color:var(--red)}
.cal-kpi-val{font-family:var(--font-mono);font-size:18px;font-weight:700;letter-spacing:-0.5px;line-height:1}
.cal-kpi-val.green{color:var(--green);text-shadow:0 0 20px var(--green-glow)}
.cal-kpi-val.red{color:var(--red);text-shadow:0 0 20px var(--red-glow)}
.cal-kpi-val.blue{color:var(--blue)}
.cal-kpi-val.white{color:var(--text)}

/* Calendar grid wrapper */
.cal-grid-wrap{
  flex:1;display:flex;flex-direction:column;min-height:0;
  border-radius:var(--r-xl);overflow:hidden;
  border:1px solid var(--glass-border);
  background:var(--glass-0);
  box-shadow:var(--shadow-lg),inset 0 1px 0 var(--glass-shine);
  backdrop-filter:var(--blur-sm);
  position:relative;
}
/* Subtle grid glow orbs */
.cal-grid-wrap::before{
  content:'';position:absolute;top:-30%;left:-10%;
  width:50%;height:60%;border-radius:50%;
  background:radial-gradient(circle,rgba(96,165,250,0.04) 0%,transparent 65%);
  pointer-events:none;z-index:0;
}
.cal-grid-wrap::after{
  content:'';position:absolute;bottom:-20%;right:-5%;
  width:40%;height:50%;border-radius:50%;
  background:radial-gradient(circle,rgba(167,139,250,0.03) 0%,transparent 65%);
  pointer-events:none;z-index:0;
}

/* Day-of-week header */
.cal-dow-row{
  display:grid;grid-template-columns:repeat(7,1fr);
  border-bottom:1px solid var(--glass-border);
  flex-shrink:0;
  background:var(--glass-1);
  position:relative;z-index:1;
}
.cal-dow{
  text-align:center;font-size:9px;font-weight:800;color:var(--text3);
  text-transform:uppercase;letter-spacing:.12em;padding:7px 0;
}

/* Days grid */
.cal-days{
  display:grid;grid-template-columns:repeat(7,1fr);
  grid-auto-rows:1fr;flex:1;
  gap:1px;background:var(--glass-border);
  position:relative;z-index:1;
}

/* Individual day cell */
.cal-day{
  background:var(--bg);padding:7px 8px;
  display:flex;flex-direction:column;
  cursor:default;min-height:74px;
  transition:background .15s,box-shadow .15s;
  position:relative;overflow:hidden;
}
.cal-day.other-month{
  background:rgba(0,0,0,0.18);opacity:.38;
}
[data-theme="light"] .cal-day{background:rgba(255,255,255,.72)}
[data-theme="light"] .cal-day.other-month{background:rgba(0,0,0,0.04);opacity:.5}

/* Today */
.cal-day.today{
  background:rgba(251,191,36,0.06);
  box-shadow:inset 0 0 0 1.5px rgba(251,191,36,0.32);
}
.cal-day.today::after{
  content:'';position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(ellipse at 50% 0%,rgba(251,191,36,0.07) 0%,transparent 65%);
}

/* Win day */
.cal-day.win-day{
  background:rgba(52,211,153,0.055);
  box-shadow:inset 3px 0 0 rgba(52,211,153,0.55),inset 0 0 0 1px rgba(52,211,153,0.14);
}
.cal-day.win-day::before{
  content:'';position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none;
  background:radial-gradient(ellipse at 10% 50%,rgba(52,211,153,0.06) 0%,transparent 60%);
}
.cal-day.win-day:hover{
  background:rgba(52,211,153,0.10);
  box-shadow:inset 3px 0 0 rgba(52,211,153,0.7),inset 0 0 0 1px rgba(52,211,153,0.25),
             0 0 18px rgba(52,211,153,0.08);
}

/* Loss day */
.cal-day.loss-day{
  background:rgba(248,113,113,0.055);
  box-shadow:inset 3px 0 0 rgba(248,113,113,0.55),inset 0 0 0 1px rgba(248,113,113,0.14);
}
.cal-day.loss-day::before{
  content:'';position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none;
  background:radial-gradient(ellipse at 10% 50%,rgba(248,113,113,0.06) 0%,transparent 60%);
}
.cal-day.loss-day:hover{
  background:rgba(248,113,113,0.10);
  box-shadow:inset 3px 0 0 rgba(248,113,113,0.7),inset 0 0 0 1px rgba(248,113,113,0.25),
             0 0 16px rgba(248,113,113,0.08);
}

/* Breakeven day */
.cal-day.mixed-day{
  background:rgba(96,165,250,0.04);
  box-shadow:inset 3px 0 0 rgba(96,165,250,0.45),inset 0 0 0 1px rgba(96,165,250,0.12);
}

.cal-day.has-trades{cursor:pointer}

/* Day number */
.cal-day-num{
  font-size:11px;font-weight:700;color:var(--text3);
  line-height:1;margin-bottom:auto;letter-spacing:-.2px;
  position:relative;z-index:1;
}
.cal-day.win-day .cal-day-num{color:rgba(52,211,153,.6)}
.cal-day.loss-day .cal-day-num{color:rgba(248,113,113,.6)}

/* Today number badge */
.cal-today-badge{
  display:inline-flex;align-items:center;justify-content:center;
  width:22px;height:22px;border-radius:50%;
  background:var(--gold);color:#0a0a0a;
  font-size:10px;font-weight:900;
  box-shadow:0 0 12px rgba(251,191,36,0.45);
  font-family:var(--font-mono);letter-spacing:0;
}

/* Dot indicator */
.cal-day-dot{
  width:5px;height:5px;border-radius:50%;
  position:absolute;top:8px;right:8px;z-index:1;
}
.cal-day-dot.green{background:var(--green);box-shadow:0 0 7px var(--green-glow)}
.cal-day-dot.red{background:var(--red);box-shadow:0 0 6px var(--red-glow)}
.cal-day-dot.blue{background:var(--blue);box-shadow:0 0 6px var(--blue-glow)}

/* PnL amount */
.cal-day-pnl{
  font-family:var(--font-mono);font-size:11px;font-weight:800;
  margin-top:5px;line-height:1;letter-spacing:-.4px;
  position:relative;z-index:1;
}
.cal-day-pnl.green{color:var(--green)}
.cal-day-pnl.red{color:var(--red)}
.cal-day-pnl.zero{color:var(--text3)}

/* Trade count */
.cal-day-count{
  font-size:9px;color:var(--text3);margin-top:3px;
  font-weight:600;letter-spacing:.02em;position:relative;z-index:1;
}
.cal-day.win-day .cal-day-count{color:rgba(52,211,153,.55)}
.cal-day.loss-day .cal-day-count{color:rgba(248,113,113,.55)}

/* Pairs mini list */
.cal-day-pairs{
  font-size:8.5px;color:var(--text3);margin-top:2px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  position:relative;z-index:1;letter-spacing:.01em;
}

/* Light mode overrides */
[data-theme="light"] .cal-grid-wrap{background:rgba(241,245,251,0.5)}
[data-theme="light"] .cal-day.win-day{background:rgba(5,150,105,0.055);box-shadow:inset 3px 0 0 rgba(5,150,105,.55),inset 0 0 0 1px rgba(5,150,105,.14)}
[data-theme="light"] .cal-day.win-day:hover{background:rgba(5,150,105,0.10)}
[data-theme="light"] .cal-day.loss-day{background:rgba(220,38,38,0.055);box-shadow:inset 3px 0 0 rgba(220,38,38,.55),inset 0 0 0 1px rgba(220,38,38,.14)}
[data-theme="light"] .cal-day.loss-day:hover{background:rgba(220,38,38,0.10)}
[data-theme="light"] .cal-day.today{background:rgba(180,83,9,.06);box-shadow:inset 0 0 0 1.5px rgba(180,83,9,.28)}
[data-theme="light"] .cal-day.mixed-day{background:rgba(79,70,229,0.04);box-shadow:inset 3px 0 0 rgba(79,70,229,.4),inset 0 0 0 1px rgba(79,70,229,.1)}
[data-theme="light"] .cal-days{background:rgba(0,0,0,0.06)}
[data-theme="light"] .cal-dow-row{background:rgba(255,255,255,.5)}
[data-theme="light"] .cal-kpi{background:rgba(255,255,255,.72);border-color:rgba(0,0,0,.07)}
[data-theme="light"] .cal-kpi:hover{background:rgba(255,255,255,.92)}

/* Calendar popup — glassmorphism card */
.cal-popup{
  position:fixed;
  background:var(--glass-2);
  backdrop-filter:var(--blur-xl);-webkit-backdrop-filter:var(--blur-xl);
  border:1px solid var(--glass-border);
  border-radius:var(--r-xl);padding:16px;z-index:300;
  min-width:275px;max-width:340px;
  box-shadow:var(--shadow-xl),inset 0 1px 0 var(--glass-shine);
  animation:popupIn .18s var(--ease-spring);
}
@keyframes popupIn{from{opacity:0;transform:scale(.94) translateY(6px)}to{opacity:1;transform:scale(1) translateY(0)}}
[data-theme="light"] .cal-popup{background:rgba(255,255,255,.96)}
.cal-popup-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.cal-popup-date{font-family:var(--font-head);font-size:13px;font-weight:700;letter-spacing:-.2px}
.cal-popup-close{
  background:var(--glass-1);border:1px solid var(--glass-border);
  color:var(--text2);cursor:pointer;font-size:14px;
  padding:3px 8px;border-radius:var(--r-xs);transition:var(--t-fast);
}
.cal-popup-close:hover{background:var(--red-dim);border-color:rgba(248,113,113,.35);color:var(--red)}
.cal-popup-trade{
  display:flex;align-items:center;gap:9px;
  padding:8px 10px;border-radius:var(--r-md);
  background:var(--glass-1);border:1px solid var(--glass-border);
  margin-bottom:5px;cursor:pointer;transition:var(--t-fast);
}
.cal-popup-trade:hover{background:var(--glass-2);border-color:var(--glass-border-h);transform:translateX(3px)}
.cal-popup-trade:last-of-type{margin-bottom:0}
.cal-popup-pair{font-size:12px;font-weight:700;min-width:56px;letter-spacing:-.1px}
.cal-popup-meta{flex:1;font-size:10.5px;color:var(--text2)}
.cal-popup-pnl{font-family:var(--font-mono);font-size:12px;font-weight:700;letter-spacing:-.2px}
.cal-popup-sum{
  display:flex;justify-content:space-between;
  padding:9px 0 0;border-top:1px solid var(--glass-border);margin-top:8px;
  font-size:12px;color:var(--text2);
}
[data-theme="light"] .cal-popup-trade{background:rgba(241,245,251,.8)}
[data-theme="light"] .cal-popup{background:rgba(255,255,255,.97)}

/* Tooltip */
.cal-tooltip{
  position:fixed;
  background:var(--glass-2);
  backdrop-filter:var(--blur-xl);-webkit-backdrop-filter:var(--blur-xl);
  border:1px solid var(--glass-border);
  border-radius:var(--r-lg);padding:12px 14px;z-index:400;
  min-width:200px;pointer-events:none;
  box-shadow:var(--shadow-xl),inset 0 1px 0 var(--glass-shine);
  animation:fadeInBG .1s ease;
}
[data-theme="light"] .cal-tooltip{background:rgba(255,255,255,.96)}
.cal-tooltip-date{font-family:var(--font-head);font-size:12px;font-weight:700;margin-bottom:8px}
.cal-tooltip-row{display:flex;justify-content:space-between;gap:14px;font-size:11.5px;margin-bottom:3px}
.cal-tooltip-row .k{color:var(--text3);font-weight:500}
.cal-tooltip-row .v{font-family:var(--font-mono);font-weight:600;letter-spacing:-.1px}
.cal-tooltip-divider{border:none;border-top:1px solid var(--glass-border);margin:6px 0}
.cal-tooltip-outcome{text-align:center;font-size:11px;font-weight:700;padding:3px 0 0;letter-spacing:.03em}

/* Account size bar */
.acc-size-bar{display:flex;align-items:center;gap:10px;padding:0 0 12px;flex-shrink:0;flex-wrap:wrap}
.acc-size-label{font-size:11px;color:var(--text3);font-weight:500}
.acc-size-input{
  background:var(--glass-1);border:1px solid var(--glass-border);
  border-radius:var(--r-sm);padding:5px 10px;
  font-size:12px;color:var(--text);font-family:var(--font-mono);
  width:110px;outline:none;transition:var(--t-fast);font-weight:500;
}
.acc-size-input:focus{border-color:rgba(96,165,250,0.4);background:var(--glass-2);box-shadow:0 0 0 3px rgba(96,165,250,0.08)}
.acc-size-hint{font-size:10px;color:var(--text3)}

/* ════════════ DETAIL PANEL EDIT ════════════════ */
.det-toolbar{display:flex;gap:6px;margin-bottom:16px;padding-bottom:14px;border-bottom:1px solid var(--glass-border)}
.det-btn{
  display:flex;align-items:center;gap:5px;padding:6px 12px;
  border-radius:var(--r-sm);font-size:12px;font-weight:500;cursor:pointer;
  border:1px solid var(--glass-border);background:var(--glass-1);
  color:var(--text2);font-family:var(--font-body);transition:var(--t-fast);
}
.det-btn:hover{background:var(--glass-2);color:var(--text);border-color:var(--glass-border-h)}
.det-btn.edit-active{background:var(--blue-dim);border-color:rgba(96,165,250,0.3);color:var(--blue)}
.det-btn.del-btn{border-color:rgba(248,113,113,0.25);color:var(--red)}
.det-btn.del-btn:hover{background:var(--red-dim);border-color:rgba(248,113,113,0.4)}
.det-tabs{display:flex;gap:0;border-bottom:1px solid var(--glass-border);margin-bottom:14px}
.det-tab{padding:7px 14px;font-size:12px;color:var(--text2);cursor:pointer;border-bottom:2px solid transparent;transition:var(--t-fast)}
.det-tab:hover{color:var(--text)}
.det-tab.active{color:var(--text);border-bottom-color:var(--blue);font-weight:600}
.det-tab-content{display:none}
.det-tab-content.active{display:block}
.edit-field{display:flex;flex-direction:column;gap:4px;margin-bottom:10px}
.edit-label{font-size:10px;font-weight:700;color:var(--text3);text-transform:uppercase;letter-spacing:.08em}
.edit-input,.edit-select{
  background:var(--glass-1);border:1px solid var(--glass-border);
  border-radius:var(--r-sm);padding:8px 11px;
  font-size:13px;color:var(--text);font-family:var(--font-body);
  outline:none;width:100%;transition:var(--t-fast);
}
.edit-input:focus,.edit-select:focus{border-color:rgba(96,165,250,0.45);background:var(--glass-2);box-shadow:0 0 0 3px rgba(96,165,250,0.08)}
.edit-select option{background:var(--bg2)}
.edit-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.star-editor{display:flex;gap:4px;cursor:pointer}
.star-editor span{font-size:22px;transition:var(--t-spring);color:var(--text3)}
.star-editor span.lit{color:var(--gold);text-shadow:0 0 10px var(--gold-glow)}
.star-editor span:hover{transform:scale(1.22)}
.del-confirm{
  background:linear-gradient(135deg,rgba(248,113,113,0.08),rgba(248,113,113,0.04));
  border:1px solid rgba(248,113,113,0.25);border-radius:var(--r-md);
  padding:16px;text-align:center;box-shadow:inset 0 0 0 1px rgba(248,113,113,0.05);
}
.del-confirm-text{font-size:13px;color:var(--text2);margin-bottom:12px;line-height:1.5}
.del-confirm-btns{display:flex;gap:8px;justify-content:center}
.del-yes{
  background:linear-gradient(135deg,rgba(248,113,113,0.25),rgba(248,113,113,0.15));
  border:1px solid rgba(248,113,113,0.4);border-radius:var(--r-sm);
  padding:8px 20px;color:var(--red);font-size:13px;font-weight:600;
  cursor:pointer;font-family:var(--font-body);box-shadow:var(--glow-red);
  transition:var(--t-fast);
}
.del-yes:hover{background:linear-gradient(135deg,rgba(248,113,113,0.38),rgba(248,113,113,0.25));box-shadow:0 0 24px rgba(248,113,113,0.3);transform:translateY(-1px)}
.del-no{
  background:var(--glass-1);border:1px solid var(--glass-border);
  border-radius:var(--r-sm);padding:8px 20px;color:var(--text2);
  font-size:13px;cursor:pointer;font-family:var(--font-body);transition:var(--t-fast);
}
.del-no:hover{background:var(--glass-2);color:var(--text)}
.det-stat-editable{cursor:pointer;position:relative}
.det-stat-editable::after{
  content:'';position:absolute;top:6px;right:6px;width:10px;height:10px;
  background-color:currentColor;opacity:0;transition:opacity .15s;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' d='M4.5 19.5l.9-3.7L16.6 4.6a1.7 1.7 0 012.4 0l.4.4a1.7 1.7 0 010 2.4L8.2 18.6l-3.7.9z'/%3E%3C/svg%3E") center/contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' d='M4.5 19.5l.9-3.7L16.6 4.6a1.7 1.7 0 012.4 0l.4.4a1.7 1.7 0 010 2.4L8.2 18.6l-3.7.9z'/%3E%3C/svg%3E") center/contain no-repeat;
}
.det-stat-editable:hover::after{opacity:0.7}
.det-stat-editable:hover{border-color:rgba(96,165,250,0.35)}

/* ════════════ TRASH SYSTEM ═════════════════════ */
.trash-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;flex-wrap:wrap;gap:10px}
.trash-filters{display:flex;gap:6px;flex-wrap:wrap}
.trash-filter-btn{
  padding:5px 13px;border-radius:var(--r-full);
  border:1px solid var(--glass-border);background:var(--glass-1);
  color:var(--text2);font-size:12px;cursor:pointer;transition:var(--t-fast);font-weight:500;
}
.trash-filter-btn:hover{background:var(--glass-2);color:var(--text)}
.trash-filter-btn.active{background:var(--red-dim);border-color:rgba(248,113,113,0.35);color:var(--red);box-shadow:var(--glow-red)}
.trash-auto-delete-bar{
  display:flex;align-items:center;gap:10px;
  padding:11px 14px;
  background:linear-gradient(135deg,rgba(248,113,113,0.06),rgba(248,113,113,0.03));
  border:1px solid rgba(248,113,113,0.16);
  border-radius:var(--r-md);margin-bottom:14px;
  font-size:12px;color:var(--text2);flex-wrap:wrap;
}
.trash-auto-delete-bar strong{color:var(--red)}
.trash-days-input{
  background:var(--glass-1);border:1px solid var(--glass-border);
  border-radius:var(--r-sm);padding:4px 8px;width:52px;
  font-size:12px;color:var(--text);font-family:var(--font-mono);
  outline:none;text-align:center;transition:var(--t-fast);font-weight:600;
}
.trash-days-input:focus{border-color:rgba(248,113,113,0.4);background:var(--glass-2)}
.trash-card{
  background:var(--glass-1);border:1px solid var(--glass-border);
  border-radius:var(--r-lg);padding:14px 16px;margin-bottom:8px;
  display:flex;align-items:center;gap:14px;
  transition:var(--t-fast);position:relative;overflow:hidden;
  box-shadow:var(--shadow-sm);
}
.trash-card::before{
  content:'';position:absolute;left:0;top:0;bottom:0;width:3px;
  background:linear-gradient(to bottom,rgba(248,113,113,0.7),rgba(248,113,113,0.3));
  border-radius:var(--r-lg) 0 0 var(--r-lg);
}
.trash-card:hover{background:var(--glass-2);border-color:rgba(248,113,113,0.25);box-shadow:var(--shadow-md)}
.trash-card-info{flex:1;min-width:0}
.trash-card-pair{font-family:var(--font-head);font-size:15px;font-weight:700;margin-bottom:3px;letter-spacing:-0.2px}
.trash-card-meta{font-size:11px;color:var(--text3);line-height:1.6}
.trash-card-pnl{font-family:var(--font-mono);font-size:14px;font-weight:700;letter-spacing:-0.3px}
.trash-card-actions{display:flex;gap:6px;flex-shrink:0}
.trash-expiry{font-size:10px;padding:2px 9px;border-radius:var(--r-full);font-weight:600}
.trash-expiry.urgent{background:var(--red-dim);color:var(--red);border:1px solid rgba(248,113,113,0.28);box-shadow:var(--glow-red)}
.trash-expiry.warning{background:rgba(251,191,36,0.10);color:var(--gold);border:1px solid rgba(251,191,36,0.22)}
.trash-expiry.ok{background:var(--glass-1);color:var(--text3);border:1px solid var(--glass-border)}
.trash-empty-state{text-align:center;padding:70px 20px}
.trash-section-label{font-size:10px;font-weight:700;color:var(--text3);text-transform:uppercase;letter-spacing:.12em;padding:10px 0 6px}

/* ════════════ GLASS MODAL (confirm) ════════════ */
.glass-modal-overlay{
  position:fixed;inset:0;
  background:rgba(0,0,0,0.75);
  backdrop-filter:var(--blur-md);
  -webkit-backdrop-filter:var(--blur-md);
  z-index:9000;display:none;
  align-items:center;justify-content:center;
}
.glass-modal-overlay.open{display:flex;animation:fadeInBG 0.2s var(--ease-out)}
.glass-modal{
  background:var(--glass-2);
  backdrop-filter:var(--blur-xl);
  -webkit-backdrop-filter:var(--blur-xl);
  border:1px solid var(--glass-border);
  border-radius:var(--r-xl);
  padding:30px 28px 24px;max-width:400px;width:90%;
  box-shadow:var(--shadow-xl),inset 0 1px 0 var(--glass-shine);
  animation:slideUp 0.22s var(--ease-spring);
}
[data-theme="light"] .glass-modal{background:rgba(255,255,255,0.94)}
.glass-modal-icon{font-size:38px;text-align:center;margin-bottom:12px}
.glass-modal-title{font-family:var(--font-head);font-size:18px;font-weight:700;text-align:center;margin-bottom:8px;letter-spacing:-0.3px}
.glass-modal-body{font-size:13px;color:var(--text2);text-align:center;line-height:1.6;margin-bottom:22px}
.glass-modal-trade-pill{
  display:inline-flex;align-items:center;gap:7px;
  background:var(--glass-1);border:1px solid var(--glass-border);
  border-radius:var(--r-md);padding:7px 14px;margin:8px auto;font-size:13px;
}
.glass-modal-actions{display:flex;gap:8px;justify-content:center}

/* ════════════ AFFIRMATION ON LOAD ════════════════ */
.affirmation-overlay{
  position:fixed;inset:0;
  background:rgba(0,0,0,0.28);
  backdrop-filter:blur(11px);
  -webkit-backdrop-filter:blur(11px);
  z-index:9100;display:none;
  align-items:center;justify-content:center;
  padding:20px;
}
.affirmation-overlay.open{display:flex;animation:fadeInBG 0.25s var(--ease-out)}
.affirmation-card{
  position:relative;overflow:hidden;
  background:rgba(255,255,255,0.04);
  backdrop-filter:blur(11px);
  -webkit-backdrop-filter:blur(11px);
  border:1px solid var(--glass-border);
  border-radius:var(--r-xl);
  padding:22px 24px 20px;max-width:360px;width:100%;
  box-shadow:var(--shadow-xl),inset 0 1px 0 var(--glass-shine);
  animation:slideUp 0.25s var(--ease-spring);
  text-align:left;color:var(--text);
}
[data-theme="light"] .affirmation-card{background:rgba(255,255,255,0.45)}
.affirmation-card::before{
  content:'';position:absolute;inset:0 0 auto 0;height:3px;
  background:linear-gradient(90deg,var(--blue) 0%,var(--purple) 100%);
}
.affirmation-head{
  display:flex;align-items:center;gap:9px;margin:-22px -24px 16px;
  padding:14px 24px;border-radius:var(--r-xl) var(--r-xl) 0 0;
  background:rgba(10,12,20,0.82);
}
[data-theme="light"] .affirmation-head{background:rgba(15,18,28,0.88)}
.affirmation-icon{
  width:30px;height:30px;flex:none;border-radius:50%;
  background:linear-gradient(135deg,var(--blue) 0%,var(--purple) 100%);
  display:flex;align-items:center;justify-content:center;
  font-size:14px;box-shadow:0 0 0 1px rgba(255,255,255,.08) inset;
}
.affirmation-label{font-size:11.5px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:#fff}
.affirmation-count{font-size:10.5px;color:rgba(255,255,255,0.65);font-family:var(--font-mono);margin-top:1px}
.affirmation-text{
  font-family:var(--font-head);font-style:italic;font-weight:600;color:var(--text);
  font-size:clamp(13px,3.6vw,15.5px);line-height:1.48;margin-bottom:18px;
  max-height:50vh;overflow-y:auto;
}
.affirmation-item{display:flex;gap:9px;align-items:baseline;padding:9px 0;border-bottom:1px solid var(--glass-2)}
.affirmation-item:last-child{border-bottom:none}
.affirmation-item-num{
  flex:none;font-family:var(--font-mono);font-style:normal;font-weight:700;
  font-size:11px;color:var(--text3);
}
.affirmation-close-btn{
  display:block;width:100%;
  background:linear-gradient(135deg,var(--blue) 0%,var(--purple) 100%);
  border:none;color:#fff;border-radius:var(--r-md);padding:10px 18px;
  font-size:12.5px;font-weight:700;letter-spacing:.01em;
  cursor:pointer;transition:var(--t-fast);
}
.affirmation-close-btn:hover{filter:brightness(1.1)}
.affirmation-fab{
  position:fixed;right:20px;bottom:90px;
  width:53px;height:53px;border-radius:50%;
  background:linear-gradient(135deg,var(--blue) 0%,var(--purple) 100%);
  border:1px solid var(--glass-border);
  box-shadow:0 3px 10px rgba(0,0,0,0.3);
  font-size:25px;cursor:grab;
  display:flex;align-items:center;justify-content:center;
  z-index:600;transition:box-shadow .15s ease,transform .15s ease;
  touch-action:none;user-select:none;-webkit-user-select:none;
}
.affirmation-fab:hover{box-shadow:0 4px 14px rgba(0,0,0,0.36)}
.affirmation-fab.dragging{cursor:grabbing;transition:none;box-shadow:0 6px 18px rgba(0,0,0,0.4)}
@media (max-width: 768px){
  .affirmation-fab{ width:49px;height:49px;font-size:23px }

}

/* Sparkle-mode icon (Daily Affirmations) — crisp SVG, consistent across themes */
.affirmation-fab .fab-aff-svg{width:25px;height:25px;display:block}
/* Chat-mode variant of the FAB icon — distinct glyph from the affirmation sparkle icon */
.affirmation-fab .fab-chat-svg{width:25px;height:25px;display:block}
.affirmation-fab.mode-chat{box-shadow:0 3px 10px rgba(124,58,237,0.4)}
.affirmation-fab.mode-chat:hover{box-shadow:0 4px 16px rgba(124,58,237,0.5)}
@media (max-width: 768px){
  .affirmation-fab .fab-chat-svg{width:23px;height:23px}
  .affirmation-fab .fab-aff-svg{width:23px;height:23px}
}

/* ════════════ FLOATING AI CHAT (FAB's second function) ════════════════ */
.ai-float-chat-overlay{
  position:fixed;inset:0;
  background:rgba(0,0,0,0.22);
  backdrop-filter:blur(6px);
  -webkit-backdrop-filter:blur(6px);
  z-index:9100;display:none;
  align-items:flex-end;justify-content:flex-end;
  padding:20px;
}
.ai-float-chat-overlay.open{display:flex;animation:fadeInBG 0.2s var(--ease-out)}
.ai-float-chat-card{
  width:380px;max-width:100%;
  height:min(640px,82vh);
  background:var(--surface);
  border:1px solid var(--glass-border);
  border-radius:var(--r-xl);
  box-shadow:var(--shadow-xl),inset 0 1px 0 var(--glass-shine);
  overflow:hidden;display:flex;flex-direction:column;
  animation:slideUp 0.25s var(--ease-spring);
}
.ai-float-chat-topbar{
  display:flex;align-items:center;justify-content:space-between;
  padding:12px 14px;flex:none;
  background:linear-gradient(90deg,rgba(167,139,250,0.16),rgba(96,165,250,0.08));
  border-bottom:1px solid var(--glass-border);
}
.ai-float-chat-title{
  font-family:var(--font-head);font-size:13px;font-weight:800;color:var(--text);
  display:flex;align-items:center;gap:7px;
}
.ai-float-chat-topbar-actions{display:flex;gap:6px}
.ai-float-chat-body{flex:1;min-height:0;display:flex}
.ai-float-chat-body .chat-container{
  flex:1;height:auto;min-height:0;
  border:none;border-radius:0;background:transparent;
}
@media (max-width: 640px){
  .ai-float-chat-overlay{padding:0;align-items:flex-end;justify-content:center}
  .ai-float-chat-card{width:100%;height:86vh;border-radius:var(--r-xl) var(--r-xl) 0 0}
}

/* ════════════ APP TOAST ════════════════════════ */
.app-toast{
  position:fixed;bottom:24px;left:50%;
  transform:translateX(-50%) translateY(0);
  background:var(--glass-2);
  backdrop-filter:var(--blur-xl);
  -webkit-backdrop-filter:var(--blur-xl);
  border:1px solid var(--glass-border);
  border-radius:var(--r-xl);padding:12px 20px;
  font-size:13px;color:var(--text);z-index:999;
  display:flex;gap:12px;align-items:center;
  box-shadow:var(--shadow-xl),inset 0 1px 0 var(--glass-shine);
  transition:opacity 0.4s var(--ease-out),transform 0.4s var(--ease-spring);
  opacity:0;pointer-events:none;font-weight:500;
  min-width:240px;max-width:380px;
}
.app-toast.show{opacity:1;pointer-events:all}
.app-toast.hide{opacity:0;transform:translateX(-50%) translateY(14px)}
[data-theme="light"] .app-toast{background:rgba(255,255,255,0.96)}

/* ════════════ ROW ACTIONS ══════════════════════ */
.row-actions button{
  transition:var(--t-fast);backdrop-filter:var(--blur-xs);
}
.row-actions button:hover{transform:scale(1.08)}

/* ════════════ ANIMATIONS ═══════════════════════ */
@keyframes fadeInBG{from{opacity:0}to{opacity:1}}
@keyframes slideUp{
  from{transform:translateY(18px);opacity:0}
  to{transform:translateY(0);opacity:1}
}
@keyframes pageIn{
  from{opacity:0;transform:translateY(10px)}
  to{opacity:1;transform:translateY(0)}
}
@keyframes pulse{
  0%,100%{opacity:1}
  50%{opacity:0.6}
}
@keyframes shimmer{
  0%{background-position:-200% 0}
  100%{background-position:200% 0}
}

/* ════════════ LIGHT MODE OVERRIDES ═════════════ */
[data-theme="light"] .data-table tbody tr:hover{background:rgba(79,70,229,0.04)}
[data-theme="light"] .sb-item.active .ico{color:var(--blue)}
[data-theme="light"] .kpi-value.green{text-shadow:0 0 16px rgba(5,150,105,0.2)}
[data-theme="light"] .kpi-value.red{text-shadow:0 0 16px rgba(220,38,38,0.2)}
[data-theme="light"] .cal-day.win-day{background:rgba(5,150,105,0.05);box-shadow:inset 0 0 0 1px rgba(5,150,105,0.2),inset 2px 0 0 rgba(5,150,105,0.5)}
[data-theme="light"] .cal-day.loss-day{background:rgba(220,38,38,0.05);box-shadow:inset 0 0 0 1px rgba(220,38,38,0.2),inset 2px 0 0 rgba(220,38,38,0.5)}
[data-theme="light"] .cal-day.other-month{background:rgba(0,0,0,0.04);opacity:0.6}
[data-theme="light"] .cal-days{background:rgba(0,0,0,0.05)}
[data-theme="light"] .cal-day{background:rgba(255,255,255,0.7)}
[data-theme="light"] .topbar::after{display:none}

/* ════════════ RESPONSIVE ════════════════════ */
/* ── Mobile hamburger — hidden on desktop ── */
/* ── Sidebar toggle button (desktop + mobile) ── */
.mob-ham { display: none; } /* legacy — hidden */
.sb-toggle-btn {
  width: 36px; height: 36px;
  border-radius: 10px;
  border: 1px solid var(--glass-border);
  background: var(--glass-1);
  cursor: pointer; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  transition: var(--t-fast);
  padding: 0;
}
.sb-toggle-btn:hover { background: var(--glass-2); border-color: var(--glass-border-h); }
.sb-toggle-icon {
  display: flex; flex-direction: column; gap: 4px;
  width: 16px;
}
.sb-toggle-icon span {
  display: block; height: 2px; border-radius: 1px;
  background: var(--text2); transition: all .22s ease;
  transform-origin: center;
}
/* Active (sidebar open) state — animate to X */
.sb-toggle-btn.active .sb-toggle-icon span:nth-child(1) {
  transform: translateY(6px) rotate(45deg);
  background: var(--text);
}
.sb-toggle-btn.active .sb-toggle-icon span:nth-child(2) {
  opacity: 0; transform: scaleX(0);
}
.sb-toggle-btn.active .sb-toggle-icon span:nth-child(3) {
  transform: translateY(-6px) rotate(-45deg);
  background: var(--text);
}
.mob-overlay{ display:none }
.sb-close-btn{ display:none }

/* ── Desktop sidebar collapse ── */
.sidebar {
  transition: width .28s cubic-bezier(0.4,0,0.2,1),
              opacity .2s ease,
              transform .28s cubic-bezier(0.4,0,0.2,1);
}
.sidebar.sb-collapsed {
  width: 0 !important;
  padding: 0 !important;
  overflow: hidden;
  border-right-width: 0;
  opacity: 0;
}
/* Main content expands when sidebar collapses */
.layout.sidebar-hidden .main-content {
  /* handled by sidebar width going to 0 — flex does the rest */
}

/* ── Only one logo visible at a time ──
   When the sidebar is expanded (desktop) or open (mobile overlay), its own
   logo header is showing, so hide the topbar logo to avoid showing the
   brand twice. The topbar logo reappears once the sidebar is closed/collapsed. */
@media (min-width: 769px){
  body.sb-expanded .topbar-left .brand { display: none; }
}
@media (max-width: 768px){
  body.sb-expanded .topbar-left .brand { display: none; }
}

/* ── Table scroll wrapper ── */
.data-table-wrap{
  overflow-x:auto;
  overflow-y:visible;
  -webkit-overflow-scrolling:touch;
  border-radius:var(--r-md);
  margin-bottom:0;
  position:relative;
}

/* ════════════════════════════════════════════════════
   MOBILE RESPONSIVE — Complete overhaul
   ════════════════════════════════════════════════════ */

/* ── Tablet (≤900px) ── */

/* ══════════════════════════════════════════════════════
   RESPONSIVE BREAKPOINTS
   ══════════════════════════════════════════════════════ */

/* ── 900px: tablet adjustments ── */
@media (max-width: 900px){
  :root{ --sidebar:200px }
  .topbar-clock{ display:none }
  .data-table th:nth-child(8),
  .data-table td:nth-child(8),
  .data-table th:nth-child(9),
  .data-table td:nth-child(9){ display:none }
  #page-tradelog .data-table th:nth-child(8),
  #page-tradelog .data-table td:nth-child(8),
  #page-tradelog .data-table th:nth-child(9),
  #page-tradelog .data-table td:nth-child(9){ display:table-cell }
  .detail-panel{ width:360px }
}

/* ══════════════════════════════════════════════════════
   MOBILE ≤768px — Telegram-style bottom navigation
   ══════════════════════════════════════════════════════ */
@media (max-width: 768px){
  :root{
    --sidebar:0px;
    --topbar:54px;
    --mob-nav-h:62px;
    --mob-safe:env(safe-area-inset-bottom,0px);
  }

  /* ── Body ── */
  body{ overflow:hidden }

  /* ── Topbar — lean pill-style header ── */
  .topbar{
    padding:0 14px;
    height:var(--topbar);
    background:rgba(8,11,18,0.92);
    backdrop-filter:blur(48px) saturate(2.2);
    -webkit-backdrop-filter:blur(48px) saturate(2.2);
    box-shadow:0 1px 0 rgba(255,255,255,0.05),0 2px 20px rgba(0,0,0,0.45);
    position:fixed;top:0;left:0;right:0;z-index:300;
  }
  [data-theme="light"] .topbar{
    background:rgba(245,248,255,0.93);
    box-shadow:0 1px 0 rgba(0,0,0,0.07),0 2px 14px rgba(0,0,0,0.07);
  }
  .topbar-left{ flex:1;display:flex;align-items:center;gap:10px }
  .topbar-right{ display:flex;align-items:center;gap:6px }
  .brand-logo-img{ height:24px;max-width:130px }
  .sb-toggle-btn{ width:36px;height:36px;border-radius:50%;background:var(--glass-2);border:1px solid var(--glass-border) }
  .topbar-left .sep,
  .topbar-left .page-name{ display:none }
  .topbar-clock{ display:none }
  /* Hide Share + New Trade from topbar (New Trade is in bottom nav) */
  .topbar-share-btn{ display:none !important }
  .topbar-right .btn-primary{ display:none !important }
  .theme-toggle{ width:34px;height:34px;border-radius:50%;font-size:15px;display:flex;align-items:center;justify-content:center }
  .topbar-avatar{ width:34px;height:34px;border-radius:50%;font-size:11px;font-weight:700 }

  /* ── Hide horizontal tabs (replaced by bottom nav) ── */
  .tabs{ display:none !important }

  /* ── Layout: fill between topbar and bottom nav ── */
  .layout{
    display:flex;flex-direction:column;
    margin-top:var(--topbar);
    height:calc(100dvh - var(--topbar) - calc(62px + env(safe-area-inset-bottom,0px)));
    overflow:hidden;
  }
  .main{ flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0 }

  /* ── Pages — scrollable content area ── */
  .page{
    padding:14px 14px calc(72px + env(safe-area-inset-bottom, 0px));
    overflow-y:auto;overflow-x:clip;
    -webkit-overflow-scrolling:touch;
    overscroll-behavior-y:contain;
    height:100%;
    box-sizing:border-box;
  }
  .page-inner{ max-width:100%;width:100% }

  /* ── Sidebar — slides in from left over content ── */
  .sidebar{
    display:flex !important;
    position:fixed;left:0;top:var(--topbar);bottom:0;
    width:76vw;max-width:300px;z-index:400;
    transform:translateX(-105%);
    transition:transform 0.3s cubic-bezier(0.22,1,0.36,1),box-shadow 0.3s;
    border-right:1px solid var(--glass-border);
    background:rgba(9,12,20,0.97);
    backdrop-filter:blur(40px) saturate(1.8);
    -webkit-backdrop-filter:blur(40px) saturate(1.8);
    border-radius:0 var(--r-xl) var(--r-xl) 0;
    box-shadow:none;
    overflow-y:auto;
  }
  [data-theme="light"] .sidebar{ background:rgba(248,251,255,0.97) }
  .sidebar.mob-open{
    transform:translateX(0);
    box-shadow:4px 0 44px rgba(0,0,0,0.6);
  }
  .mob-overlay{
    display:none;position:fixed;inset:0;top:var(--topbar);z-index:399;
    background:rgba(0,0,0,0.62);
    backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);
  }
  .mob-overlay.show{ display:block }
  .sb-close-btn{
    display:flex;align-items:center;justify-content:flex-end;
    padding:8px 12px 6px;
  }
  .sb-close-btn button{
    background:var(--glass-2);border:1px solid var(--glass-border);
    cursor:pointer;color:var(--text2);font-size:16px;
    padding:6px 10px;border-radius:var(--r-md);transition:var(--t-fast);
  }
  .sb-close-btn button:hover{ color:var(--text);background:var(--glass-3) }

  /* ── KPI grid 2-col ── */
  .kpi-grid{ grid-template-columns:repeat(2,1fr);gap:8px }
  .kpi-card{ padding:13px 12px;border-radius:var(--r-md) }
  .kpi-value{ font-size:20px;letter-spacing:-0.02em }
  .kpi-label{ font-size:10px }

  /* ── Cover ── */
  .cover{ padding:18px 16px;margin-bottom:14px;border-radius:var(--r-lg) }
  .cover-label{ font-size:9px;letter-spacing:0.08em }
  .cover-title{ font-size:21px;line-height:1.2 }
  .cover-sub{ font-size:11px;margin-top:4px }

  /* ── Section headings ── */
  .sec-head{ font-size:11px;margin:16px 0 8px;letter-spacing:0.06em }

  /* ── Tables ── */
  .data-table-wrap,.table-wrap{
    overflow-x:auto;overflow-y:visible;
    -webkit-overflow-scrolling:touch;border-radius:var(--r-md);
    margin-bottom:14px;
    scrollbar-width:thin;
    scrollbar-color:rgba(255,255,255,0.2) transparent;
  }
  .data-table-wrap::-webkit-scrollbar,.table-wrap::-webkit-scrollbar{ height:3px }
  .data-table-wrap::-webkit-scrollbar-thumb,.table-wrap::-webkit-scrollbar-thumb{
    background:rgba(255,255,255,0.22);border-radius:3px;
  }
  /* Dashboard 4-5 col tables don't need 540px */
  .data-table{ min-width:360px;font-size:12px }
  .data-table th,.data-table td{ padding:8px 10px }
  .data-table th:nth-child(8),.data-table td:nth-child(8){ display:none }
  .data-table th:nth-child(9),.data-table td:nth-child(9){ display:none }
  .data-table th:last-child,.data-table td:last-child{ display:none }
  .col-winbar{ display:none }

  /* Trade Log: keep every column and let the table scroll sideways
     to reveal them — vertical scroll stays with the page itself
     (single scroll region, not a second one nested inside it).
     (html-prefixed for specificity so it wins over the desktop
     defaults declared later in the stylesheet.) */
  #page-tradelog .data-table{ min-width:900px }
  #page-tradelog .data-table th,
  #page-tradelog .data-table td{ display:table-cell }
  html body #page-tradelog.page{ padding-left:0; padding-right:0 }
  html body #page-tradelog .page-inner{ padding:0 14px }
  html body #page-tradelog .data-table-wrap{
    margin:0 0 14px;
    padding:0;
    overflow-x:auto;
    overflow-y:visible;
    max-height:none;
  }

  /* ── Filter bar ── */
  .filter-bar{ flex-wrap:wrap;gap:6px;padding:0 0 10px }
  .filter-bar input,.filter-bar select{
    font-size:16px;padding:9px 12px;min-width:0;flex:1 1 130px;border-radius:var(--r-md)
  }

  /* ── Forms ── */
  .form-grid{ grid-template-columns:1fr 1fr;gap:10px }
  .form-input,.form-select{ font-size:16px;padding:10px 12px;border-radius:var(--r-md) }
  .form-textarea{ font-size:14px;padding:10px 12px;border-radius:var(--r-md) }
  .form-label{ font-size:10.5px;letter-spacing:0.04em }

  /* ── Modal — compact ~60% bottom sheet, sits above bottom nav ── */
  .modal-overlay{ align-items:flex-end;padding:0 }
  .modal{
    width:100% !important;max-width:100% !important;
    /* ~60% of screen height; never taller than the gap between topbar and nav */
    height: 62vh;
    max-height: calc(100dvh - var(--topbar) - 62px - env(safe-area-inset-bottom,0px) - 8px);
    min-height: 340px;
    margin: 0;
    border-radius: var(--r-2xl) var(--r-2xl) 0 0;
    position: fixed;
    bottom: calc(62px + env(safe-area-inset-bottom,0px));
    left: 0; right: 0;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    background: rgba(10,14,24,0.97);
    backdrop-filter: blur(60px) saturate(2.0);
    -webkit-backdrop-filter: blur(60px) saturate(2.0);
    box-shadow: 0 -8px 48px rgba(0,0,0,0.65), 0 -1px 0 rgba(255,255,255,0.07);
    animation: none !important; /* disable desktop slide-up on mobile */
  }
  [data-theme="light"] .modal{
    background: rgba(252,254,255,0.99);
    box-shadow: 0 -6px 32px rgba(0,0,0,0.14), 0 -1px 0 rgba(0,0,0,0.07);
  }
  /* Drag handle pill */
  .modal::before{
    content:''; flex-shrink:0;
    display:block; width:36px; height:4px; border-radius:var(--r-full);
    background:rgba(255,255,255,0.18); margin:10px auto 0;
  }
  [data-theme="light"] .modal::before{ background:rgba(0,0,0,0.14) }

  /* Header: fixed height, never scrolls */
  .modal-head{
    flex-shrink: 0;
    padding: 8px 16px 8px;
    border-bottom: 1px solid var(--glass-border);
    display: flex; align-items: center; justify-content: space-between;
    background: inherit;
  }
  .modal-title { font-size: 14px !important; font-weight: 700 !important; }
  .modal-close { padding: 4px 8px; font-size: 14px; }

  /* Body: scrollable — flex:1 + min-height:0 is the key combo */
  .modal-body{
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    overflow-x: hidden;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior: contain;
    padding: 10px 14px 4px;
  }

  /* Tight 2-col grid so all fields are visible with minimal scrolling */
  .modal-form-grid, .form-grid { grid-template-columns:1fr 1fr; gap:7px }
  .form-field { gap: 2px; display:flex; flex-direction:column; }
  .form-label { font-size: 9px; letter-spacing: 0.07em; margin-bottom:1px; }
  .form-input, .form-select {
    font-size: 16px; /* exactly 16px prevents iOS auto-zoom */
    padding: 8px 10px;
    border-radius: var(--r-sm);
    line-height: 1.2;
  }
  .form-textarea {
    font-size: 14px; padding: 6px 10px;
    min-height: 44px; border-radius: var(--r-sm);
  }

  /* Save bar: pinned, never scrolls */
  .form-actions{
    flex-shrink: 0;
    background: inherit;
    padding: 8px 14px calc(10px);
    margin-top: 0;
    border-top: 1px solid var(--glass-border);
    display: flex;
    gap: 8px;
  }
  .form-actions .btn {
    flex: 1;
    padding: 12px 10px;
    font-size: 13px;
    font-weight: 600;
    border-radius: var(--r-md);
    text-align: center;
    justify-content: center;
  }
  .form-actions .btn-primary {
    flex: 2;
    background: linear-gradient(135deg, rgba(96,165,250,0.28), rgba(96,165,250,0.16));
    border-color: rgba(96,165,250,0.55);
    color: var(--blue);
    box-shadow: 0 0 18px rgba(96,165,250,0.18), var(--shadow-sm);
    font-size: 13px;
    font-weight: 700;
  }
  [data-theme="light"] .form-actions .btn-primary {
    background: linear-gradient(135deg, rgba(79,70,229,0.16), rgba(79,70,229,0.09));
    border-color: rgba(79,70,229,0.38);
    color: var(--blue);
  }

  /* ── Detail panel ── */
  .detail-panel{
    width:100% !important;left:0;right:0;border-left:none;
    border-top:1px solid var(--glass-border);
    top:auto;
    height: 62vh;
    max-height: calc(100dvh - var(--topbar) - 62px - env(safe-area-inset-bottom,0px) - 8px);
    min-height: 340px;
    bottom: calc(62px + env(safe-area-inset-bottom,0px));
    border-radius:var(--r-2xl) var(--r-2xl) 0 0;z-index:500;
  }
  .detail-panel::before{
    content:'';position:absolute;top:10px;left:50%;transform:translateX(-50%);
    width:36px;height:4px;border-radius:var(--r-full);
    background:var(--glass-border-h);pointer-events:none;
  }
  .detail-panel.fullscreen{
    width:100% !important;height:calc(100vh - var(--topbar));
    border-radius:0;top:var(--topbar);bottom:0;
  }
  .det-panel-header{ padding:14px 16px }
  #detail-content{ padding:14px 16px 100px }
  .det-tabs{ gap:4px;margin-bottom:12px }
  .det-tab{ padding:7px 14px;font-size:12px }
  .detail-pair{ font-size:22px }

  /* ── Accounts ── */
  .acc-grid{ grid-template-columns:1fr }
  .acc-card{ padding:16px;border-radius:var(--r-lg) }

  /* ── Calendar ── */
  .cal-kpi-row{ grid-template-columns:repeat(2,1fr);gap:6px }
  .cal-kpi{ padding:10px 8px;border-radius:var(--r-md) }
  .cal-kpi-label{ font-size:9px }
  .cal-kpi-val{ font-size:15px }
  .cal-day{ min-height:52px;padding:4px 5px;font-size:10px }
  .cal-day-num{ font-size:10px }
  .cal-day-pnl{ font-size:9px }
  .cal-day-count{ font-size:9px }
  .cal-day-pairs{ font-size:7.5px }
  #cal-popup{
    position:fixed !important;left:50% !important;top:50% !important;
    transform:translate(-50%,-50%) !important;
    max-width:calc(100vw - 24px);width:340px;z-index:600;
  }

  /* ── Dashboard: single-column on mobile, cal is a normal in-flow section ── */
  .dash-layout{
    display: block;
    padding: 0;
  }
  .dash-left{ width:100%; min-width:0; padding:12px 12px 16px; }
  .dash-cal-panel{
    width:100%;
    height:auto;
    overflow:visible;
    border-radius: var(--r-lg);
    padding: 12px;
    background: var(--glass-0);
  }
  .dash-cal-panel .cal-kpi-row{ grid-template-columns:repeat(2,1fr);gap:4px }

  /* ── Misc ── */
  .insight{ font-size:12px;padding:12px 14px;border-radius:var(--r-md) }
  .trash-card{ flex-wrap:wrap;gap:8px;padding:12px;border-radius:var(--r-md) }
  .trash-card-actions{ width:100%;justify-content:flex-end;margin-top:4px }
  .trash-card-info{ font-size:11px }
  .wl-pair-card{ padding:14px;border-radius:var(--r-md) }
  .wl-pair-head{ flex-wrap:wrap;gap:6px }
  .checklist-grid{ grid-template-columns:1fr }
  .model-card{ padding:16px;border-radius:var(--r-md) }
  .rule-card{ padding:12px 14px;border-radius:var(--r-md) }
  .profile-form-grid{ grid-template-columns:1fr }
  .profile-tabs{ overflow-x:auto;scrollbar-width:none }
  .profile-tabs::-webkit-scrollbar{ display:none }
  .billing-plans{ grid-template-columns:1fr;gap:12px }
  .glass-modal{ width:calc(100vw - 32px);max-width:340px;border-radius:var(--r-xl);padding:24px 20px 20px }
  .mob-ham{ display:none }
}

/* ══ small mobile ≤420px ══ */
@media (max-width: 420px){
  .kpi-grid{ gap:6px }
  .kpi-value{ font-size:18px }
  .cover-title{ font-size:18px }
  .data-table{ min-width:320px }
  .modal-form-grid{ grid-template-columns:1fr }
  .form-grid{ grid-template-columns:1fr }
  .det-tab{ padding:5px 10px;font-size:11px }
  .dash-layout{ padding:10px 10px 80px }
  .dash-cal-panel .cal-day{ min-height:40px;padding:2px 3px }
  .dash-cal-panel .cal-kpi-val{ font-size:12px }
  .dash-cal-panel .cal-kpi-label{ font-size:7px }
}

/* ══════════════════════════════════════════════════════
   BOTTOM NAV BAR (mobile only)
   ══════════════════════════════════════════════════════ */
.mob-bottom-nav{
  display:none; /* shown via JS on mobile */
  position:fixed;bottom:0;left:0;right:0;
  z-index:300;
  height:calc(62px + env(safe-area-inset-bottom,0px));
  padding-bottom:env(safe-area-inset-bottom,0px);
  border-top:1px solid var(--glass-border);
  background:rgba(8,11,18,0.95);
  backdrop-filter:blur(40px) saturate(2);
  -webkit-backdrop-filter:blur(40px) saturate(2);
  box-shadow:0 -1px 0 rgba(255,255,255,0.04),0 -4px 28px rgba(0,0,0,0.4);
}
[data-theme="light"] .mob-bottom-nav{
  background:rgba(245,248,255,0.96);
  box-shadow:0 -1px 0 rgba(0,0,0,0.07),0 -4px 22px rgba(0,0,0,0.07);
}
@media (min-width: 769px){ .mob-bottom-nav{ display:none !important } }
@media (max-width: 768px){ .mob-bottom-nav{ display:flex } }
/* Also hide mobile-only sheets on desktop */
@media (min-width: 769px){
  .mob-more-sheet{ display:none !important }
  .mob-more-overlay{ display:none !important }
}

.mob-bottom-nav-item{
  flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
  padding:8px 4px;cursor:pointer;
  background:transparent;border:none;
  color:var(--text3);font-family:var(--font-body);font-size:10px;font-weight:500;
  letter-spacing:0.01em;position:relative;
  transition:color 0.18s ease,transform 0.18s ease;
  -webkit-tap-highlight-color:transparent;
}
.mob-bottom-nav-item:active{ transform:scale(0.85) }
.mob-bottom-nav-item.active{ color:var(--blue) }
[data-theme="light"] .mob-bottom-nav-item.active{ color:var(--blue) }

/* Active top-notch indicator */
.mob-bottom-nav-item.active::before{
  content:'';position:absolute;top:0;left:50%;transform:translateX(-50%);
  width:32px;height:3px;border-radius:0 0 3px 3px;
  background:var(--blue);box-shadow:0 0 10px var(--blue-glow);
}

.mob-nav-icon{
  font-size:20px;line-height:1;
  transition:transform 0.2s var(--ease-spring);
}
.mob-bottom-nav-item.active .mob-nav-icon{ transform:translateY(-1px) scale(1.1) }
.mob-nav-label{ font-size:10px;line-height:1;white-space:nowrap }
.mob-nav-badge{
  position:absolute;top:5px;right:calc(50% - 20px);
  min-width:16px;height:16px;border-radius:var(--r-full);
  background:var(--red);color:#fff;font-size:9px;font-weight:700;
  padding:0 4px;display:flex;align-items:center;justify-content:center;
  box-shadow:0 0 0 2px var(--bg-base);line-height:1;
}

/* Centre "+" button — elevated circle */
.mob-nav-add-btn .mob-nav-icon{
  width:46px;height:46px;border-radius:50%;
  background:var(--blue);color:#fff;
  display:flex;align-items:center;justify-content:center;
  font-size:24px !important;line-height:1 !important;
  box-shadow:0 4px 20px rgba(96,165,250,0.5);
  transition:transform 0.2s var(--ease-spring),box-shadow 0.2s ease;
  margin-top:-12px;
}
[data-theme="light"] .mob-nav-add-btn .mob-nav-icon{
  background:var(--blue);box-shadow:0 4px 20px rgba(79,70,229,0.4);
}
.mob-nav-add-btn:active .mob-nav-icon{ transform:scale(0.88);box-shadow:0 2px 8px rgba(96,165,250,0.3) }
.mob-nav-add-btn .mob-nav-label{ color:var(--blue);font-weight:600 }
.mob-nav-add-btn.active::before{ display:none }

/* ══════════════════════════════════════════════════════
   MORE BOTTOM SHEET
   ══════════════════════════════════════════════════════ */
.mob-more-overlay{
  display:none;position:fixed;
  top:0;left:0;right:0;
  bottom:calc(62px + env(safe-area-inset-bottom,0px));
  z-index:499;
  background:rgba(0,0,0,0.55);
  backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);
}
.mob-more-overlay.show{ display:block }

.mob-more-sheet{
  position:fixed;
  bottom:calc(62px + env(safe-area-inset-bottom,0px));
  left:0;right:0;z-index:500;
  border-radius:var(--r-2xl) var(--r-2xl) 0 0;
  border-top:1px solid var(--glass-border);
  max-height:calc(100dvh - var(--topbar) - 62px - env(safe-area-inset-bottom,0px) - 8px);
  overflow-y:auto;
  -webkit-overflow-scrolling:touch;
  background:rgba(9,12,21,0.97);
  backdrop-filter:blur(44px) saturate(1.8);
  -webkit-backdrop-filter:blur(44px) saturate(1.8);
  box-shadow:0 -4px 48px rgba(0,0,0,0.55);
  transform:translateY(110%);
  opacity:0;
  visibility:hidden;
  pointer-events:none;
  transition:transform 0.32s cubic-bezier(0.22,1,0.36,1),
             opacity 0.22s ease,
             visibility 0s linear 0.32s;
}
[data-theme="light"] .mob-more-sheet{
  background:rgba(248,251,255,0.98);
  box-shadow:0 -4px 36px rgba(0,0,0,0.12);
}
.mob-more-sheet.open{
  transform:translateY(0);
  opacity:1;
  visibility:visible;
  pointer-events:auto;
  transition:transform 0.32s cubic-bezier(0.22,1,0.36,1),
             opacity 0.22s ease,
             visibility 0s linear 0s;
}

.mob-more-handle{
  width:36px;height:4px;border-radius:var(--r-full);
  background:var(--glass-border-h);margin:12px auto 6px;
}
.mob-more-title{
  font-size:11px;font-weight:700;letter-spacing:0.1em;
  color:var(--text3);text-transform:uppercase;
  padding:0 20px 10px;
}
.mob-more-grid{
  display:grid;grid-template-columns:repeat(4,1fr);gap:0;
  padding:0 8px 18px;
}
.mob-more-item{
  display:flex;flex-direction:column;align-items:center;gap:6px;
  padding:12px 8px 10px;border-radius:var(--r-lg);cursor:pointer;
  background:transparent;border:none;font-family:var(--font-body);
  color:var(--text2);font-size:11px;font-weight:500;
  transition:background 0.15s ease,transform 0.15s ease;
  -webkit-tap-highlight-color:transparent;position:relative;
}
.mob-more-item:active{ transform:scale(0.86);background:var(--glass-2) }
.mob-more-icon{
  width:46px;height:46px;border-radius:var(--r-md);
  background:var(--glass-2);border:1px solid var(--glass-border);
  display:flex;align-items:center;justify-content:center;font-size:20px;
  transition:background 0.15s;
}
.mob-more-item:active .mob-more-icon{ background:var(--glass-3) }

/* cal-toggle-btn removed — replaced by cal-slide-toggle */
/* dash-cal-body collapse removed — now using grid slide */

/* ══════════════════════════════════════════════════════
   GLASS BLUR ENHANCEMENTS (all components)
   ══════════════════════════════════════════════════════ */
.topbar{
  backdrop-filter:blur(44px) saturate(2.1);
  -webkit-backdrop-filter:blur(44px) saturate(2.1);
}
.sidebar{
  backdrop-filter:blur(60px) saturate(2.0);
  -webkit-backdrop-filter:blur(60px) saturate(2.0);
}
.modal{
  backdrop-filter:blur(60px) saturate(2.0);
  -webkit-backdrop-filter:blur(60px) saturate(2.0);
}
.detail-panel{
  backdrop-filter:blur(60px) saturate(2.0);
  -webkit-backdrop-filter:blur(60px) saturate(2.0);
}
.kpi-card{
  backdrop-filter:blur(28px) saturate(1.7);
  -webkit-backdrop-filter:blur(28px) saturate(1.7);
}
.dash-cal-panel{
  backdrop-filter:blur(36px) saturate(1.8);
  -webkit-backdrop-filter:blur(36px) saturate(1.8);
}


/* ════ MICRO-INTERACTIONS & POLISH ════════════════════ */

/* Topbar live clock */
.topbar-clock{font-family:var(--font-mono);font-size:11px;color:var(--text3);letter-spacing:.05em;padding:4px 10px;background:var(--glass-0);border:1px solid var(--glass-border);border-radius:var(--r-sm)}

/* Sidebar item — active left indicator */
.sb-item.active::before{content:'';position:absolute;left:0;top:25%;bottom:25%;width:2.5px;border-radius:0 3px 3px 0;background:var(--blue);box-shadow:0 0 8px var(--blue-glow)}

/* KPI card accent bar top */
.kpi-card-accent{position:absolute;top:0;left:16px;right:16px;height:2px;border-radius:0 0 var(--r-sm) var(--r-sm);opacity:.5}
.kpi-card-accent.green{background:linear-gradient(90deg,transparent,var(--green),transparent)}
.kpi-card-accent.blue{background:linear-gradient(90deg,transparent,var(--blue),transparent)}
.kpi-card-accent.gold{background:linear-gradient(90deg,transparent,var(--gold),transparent)}
.kpi-card-accent.red{background:linear-gradient(90deg,transparent,var(--red),transparent)}

/* Table row left accent on hover — via td:first-child (tr::before causes column shift in tables) */
.data-table tbody tr td:first-child{
  position:relative;
}
.data-table tbody tr td:first-child::before{
  content:'';position:absolute;left:0;top:0;bottom:0;width:0;
  background:var(--blue);border-radius:0 2px 2px 0;opacity:.6;
  transition:width .18s ease;
}
.data-table tbody tr:hover td:first-child::before{
  width:3px;
}

/* Glass card shimmer on hover */
@keyframes glassShimmer{
  0%{transform:translateX(-100%) skewX(-12deg)}
  100%{transform:translateX(200%) skewX(-12deg)}
}
.kpi-card:hover::after{
  content:'';position:absolute;top:0;bottom:0;left:0;width:40%;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,0.04),transparent);
  animation:glassShimmer 0.7s var(--ease-out) forwards;
  pointer-events:none;z-index:1;
}

/* Pill with glow on hover */
.pill:hover{filter:brightness(1.15);cursor:default}

/* Sidebar bottom gradient fade */
.sidebar::after{
  content:'';position:sticky;bottom:0;left:0;right:0;height:32px;
  background:linear-gradient(to top,var(--bg2),transparent);
  pointer-events:none;display:block;flex-shrink:0;
  margin-top:auto;
}

/* Tab active underline animated */
.tab.active{
  position:relative;
}
.tab.active::after{
  content:'';position:absolute;bottom:-1px;left:16px;right:16px;height:2px;
  background:var(--blue);border-radius:var(--r-full) var(--r-full) 0 0;
  box-shadow:0 0 10px var(--blue-glow);
}

/* Search input glass */
#search-input{
  background:var(--glass-1);
  backdrop-filter:var(--blur-xs);
  border:1px solid var(--glass-border);
  border-radius:var(--r-md);
  transition:var(--t-fast);
}
#search-input:focus{
  background:var(--glass-2);
  border-color:rgba(96,165,250,0.4);
  box-shadow:0 0 0 3px rgba(96,165,250,0.08);
}

/* Filter selects */
#filter-outcome,#filter-kz,#filter-pair,#cal-acc-filter{
  background:var(--glass-1);
  backdrop-filter:var(--blur-xs);
  border:1px solid var(--glass-border);
  border-radius:var(--r-md);
  transition:var(--t-fast);
}
#filter-outcome:focus,#filter-kz:focus,#filter-pair:focus,#cal-acc-filter:focus{
  background:var(--glass-2);
  border-color:rgba(96,165,250,0.4);
}

/* Detail panel slide + fade */
.detail-panel{
  will-change:transform;
}

/* Row action buttons upgrade */
.trade-log-row .row-actions button{
  font-size:11px;padding:3px 8px;border-radius:var(--r-sm);
  backdrop-filter:var(--blur-xs);font-weight:600;
  letter-spacing:.02em;
}

/* Watchlist priority dots */
.wl-priority-dot{
  width:7px;height:7px;border-radius:50%;flex-shrink:0;
  box-shadow:0 0 6px currentColor;
}
.wl-priority-dot.high{background:var(--red);color:var(--red)}
.wl-priority-dot.med{background:var(--gold);color:var(--gold)}
.wl-priority-dot.low{background:var(--green);color:var(--green)}

/* Calendar — today cell golden shine */
.cal-day.today::after{
  content:'';position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(ellipse at 50% 0%,rgba(251,191,36,0.06) 0%,transparent 70%);
}

/* Calendar nav arrows with spring */
.cal-nav:active{transform:scale(0.92)}

/* Modal overlay blur upgrade */
.modal-overlay{
  backdrop-filter:var(--blur-md);
  -webkit-backdrop-filter:var(--blur-md);
}

/* Form input placeholder */
.form-input::placeholder,.form-textarea::placeholder,.notes-area::placeholder{
  color:var(--text3);font-style:italic;
}

/* Trash card hover lift */
.trash-card:hover{transform:translateX(3px)}
.trash-card{will-change:transform,border-color}

/* Glass modal backdrop shimmer */
.glass-modal::before{
  content:'';position:absolute;top:0;left:0;right:0;height:1px;
  background:linear-gradient(90deg,transparent,var(--glass-shine),transparent);
  border-radius:var(--r-xl) var(--r-xl) 0 0;
}
.glass-modal{position:relative;overflow:hidden}

/* Playbook model step number glow pulse */
.model-step:first-child::before{
  animation:pulse 3s ease-in-out infinite;
}

/* Progress bar animated fill */
@keyframes fillBar{
  from{width:0}
  to{width:var(--target-width,100%)}
}
.acc-progress-fill{
  animation:fillBar 1.2s var(--ease-out) forwards;
}

/* Scrollbar styled for pages */
.page::-webkit-scrollbar{width:4px}
.page::-webkit-scrollbar-thumb{background:var(--glass-2);border-radius:var(--r-full)}
.sidebar::-webkit-scrollbar{width:3px}
.sidebar::-webkit-scrollbar-thumb{background:var(--glass-1);border-radius:var(--r-full)}

/* Section head icon */
.sec-head-icon{
  width:16px;height:16px;border-radius:4px;
  background:var(--glass-1);border:1px solid var(--glass-border);
  display:inline-flex;align-items:center;justify-content:center;
  font-size:9px;flex-shrink:0;
}

/* Calendar KPI shimmer on hover */
.cal-kpi:hover::before{
  content:'';position:absolute;top:0;left:0;right:0;height:1px;
  background:linear-gradient(90deg,transparent,var(--glass-shine),transparent);
  border-radius:var(--r-lg) var(--r-lg) 0 0;pointer-events:none;
}
.cal-kpi{position:relative;overflow:hidden}

/* Quarter page KPI grid spacing */
#quarter-page-inner .cover{
  background:linear-gradient(135deg,
    rgba(10,20,40,0.97) 0%,rgba(18,32,64,0.93) 55%,rgba(12,24,48,0.97) 100%);
}

/* Insight box left accent */
.insight{
  border-left:3px solid rgba(96,165,250,0.4);
  padding-left:14px;
}

/* acc-size bar glass */
.acc-size-bar{
  background:var(--glass-0);
  border:1px solid var(--glass-border);
  border-radius:var(--r-md);
  padding:10px 14px;
  backdrop-filter:var(--blur-xs);
}

/* Theme toggle spin animation */
.theme-toggle.spinning{
  animation:spin 0.4s var(--ease-spring);
}
@keyframes spin{
  from{transform:rotate(0deg) scale(0.8)}
  to{transform:rotate(360deg) scale(1)}
}

/* ── Light mode form inputs ──────────────────────────── */
[data-theme="light"] .form-input,
[data-theme="light"] .form-select,
[data-theme="light"] .form-textarea,
[data-theme="light"] .edit-input,
[data-theme="light"] .edit-select,
[data-theme="light"] .notes-area{
  background:rgba(255,255,255,0.7);
  border-color:rgba(0,0,0,0.1);
  color:rgba(15,23,42,0.95);
}
[data-theme="light"] .form-select option,[data-theme="light"] .edit-select option{
  background:#fff;color:#0f172a;
}
[data-theme="light"] .modal{background:rgba(255,255,255,0.95)}
[data-theme="light"] .glass-modal-overlay{background:rgba(255,255,255,0.3)}
[data-theme="light"] .glass-modal{
  background:rgba(255,255,255,0.96);
  border-color:rgba(0,0,0,0.09);
}
[data-theme="light"] .detail-panel{
  background:rgba(255,255,255,0.94);
  border-color:rgba(0,0,0,0.09);
}
[data-theme="light"] .check-item,[data-theme="light"] .cl-item{
  background:rgba(255,255,255,0.6);
  border-color:rgba(0,0,0,0.08);
}
[data-theme="light"] .wl-pair-card,[data-theme="light"] .acc-card,
[data-theme="light"] .rule-card,[data-theme="light"] .model-card,
[data-theme="light"] .kpi-card,[data-theme="light"] .cal-kpi{
  background:rgba(255,255,255,0.7);
  border-color:rgba(0,0,0,0.07);
}
[data-theme="light"] .kpi-card:hover,[data-theme="light"] .cal-kpi:hover,
[data-theme="light"] .wl-pair-card:hover,[data-theme="light"] .acc-card:hover{
  background:rgba(255,255,255,0.90);
  border-color:rgba(0,0,0,0.12);
}
[data-theme="light"] .cover.trash-cover{
  background:linear-gradient(135deg,rgba(220,38,38,0.85),rgba(185,28,28,0.80));
}
[data-theme="light"] .insight{
  background:linear-gradient(135deg,rgba(79,70,229,0.07),rgba(79,70,229,0.03));
  border-color:rgba(79,70,229,0.18);
  border-left-color:rgba(79,70,229,0.5);
}
[data-theme="light"] .trash-card{
  background:rgba(255,255,255,0.75);border-color:rgba(0,0,0,0.07);
}
[data-theme="light"] .trash-card:hover{
  background:rgba(255,255,255,0.92);border-color:rgba(220,38,38,0.25);
}
[data-theme="light"] .app-toast{
  background:rgba(255,255,255,0.98);
  border-color:rgba(0,0,0,0.09);
  color:rgba(15,23,42,0.95);
}
[data-theme="light"] .cal-popup,[data-theme="light"] .cal-tooltip{
  background:rgba(255,255,255,0.97);
  border-color:rgba(0,0,0,0.09);
}
[data-theme="light"] .cal-popup-trade{
  background:rgba(241,245,251,0.8);
  border-color:rgba(0,0,0,0.07);
}
[data-theme="light"] .cal-popup-trade:hover{background:rgba(255,255,255,0.95)}
[data-theme="light"] .tabs{background:rgba(255,255,255,0.6)}
[data-theme="light"] .tab.active::after{box-shadow:0 0 8px rgba(79,70,229,0.25)}
[data-theme="light"] .topbar{
  background:rgba(255,255,255,0.85);
  border-color:rgba(0,0,0,0.09);
  box-shadow:0 2px 8px rgba(0,0,0,0.06),inset 0 -1px 0 rgba(0,0,0,0.05);
}
[data-theme="light"] .sidebar{
  background:rgba(255,255,255,0.82);
  border-color:rgba(0,0,0,0.09);
}
[data-theme="light"] .sb-item:hover{
  background:rgba(79,70,229,0.05);
  border-color:rgba(79,70,229,0.12);
}
[data-theme="light"] .det-btn{
  background:rgba(255,255,255,0.7);
  border-color:rgba(0,0,0,0.09);
}
[data-theme="light"] .det-btn:hover{background:rgba(255,255,255,0.95)}
[data-theme="light"] .emo-btn{
  background:rgba(255,255,255,0.6);
  border-color:rgba(0,0,0,0.09);
}
[data-theme="light"] .img-slot{
  background:rgba(255,255,255,0.5);
  border-color:rgba(0,0,0,0.1);
}
[data-theme="light"] .notes-area{
  background:rgba(255,255,255,0.7);
  border-color:rgba(0,0,0,0.09);
}
[data-theme="light"] .data-table th{border-color:rgba(0,0,0,0.08)}
[data-theme="light"] .data-table td{border-color:rgba(0,0,0,0.05)}
[data-theme="light"] .sec-head::after{background:rgba(0,0,0,0.09)}
[data-theme="light"] .sb-sep{background:rgba(0,0,0,0.08)}
[data-theme="light"] .detail-stat{background:rgba(241,245,251,0.8);border-color:rgba(0,0,0,0.07)}
[data-theme="light"] .trash-auto-delete-bar{
  background:rgba(220,38,38,0.05);
  border-color:rgba(220,38,38,0.15);
}
[data-theme="light"] .trash-filter-btn{background:rgba(255,255,255,0.6);border-color:rgba(0,0,0,0.09)}
[data-theme="light"] .trash-filter-btn.active{background:rgba(220,38,38,0.08);border-color:rgba(220,38,38,0.3)}
[data-theme="light"] .acc-size-bar{background:rgba(241,245,251,0.8);border-color:rgba(0,0,0,0.08)}
[data-theme="light"] .acc-size-input{background:rgba(255,255,255,0.7);border-color:rgba(0,0,0,0.09)}
[data-theme="light"] .sb-badge{background:rgba(220,38,38,0.12);border-color:rgba(220,38,38,0.2)}
[data-theme="light"] .month-stat{background:rgba(255,255,255,0.7);border-color:rgba(0,0,0,0.07)}
[data-theme="light"] .wl-tf-row .tf-neu{background:rgba(241,245,251,0.9);border-color:rgba(0,0,0,0.09)}
[data-theme="light"] .el-confirm{background:rgba(255,255,255,0.8)}

/* ── Final polish: focus ring system ────────────────── */
:focus-visible{
  outline:2px solid rgba(96,165,250,0.6);
  outline-offset:2px;
  border-radius:var(--r-xs);
}
[data-theme="light"] :focus-visible{outline-color:rgba(79,70,229,0.55)}

/* ── Premium loading state ──────────────────────────── */
.loading-shimmer{
  background:linear-gradient(90deg,
    var(--glass-1) 0%,var(--glass-2) 50%,var(--glass-1) 100%);
  background-size:200% 100%;
  animation:shimmer 1.6s ease-in-out infinite;
}
@keyframes shimmer{
  0%{background-position:200% 0}
  100%{background-position:-200% 0}
}

/* ── Glassmorphism card variant ──────────────────────── */
.glass-card{
  background:var(--glass-1);
  backdrop-filter:var(--blur-md);
  -webkit-backdrop-filter:var(--blur-md);
  border:1px solid var(--glass-border);
  border-radius:var(--r-lg);
  box-shadow:var(--shadow-md);
  transition:var(--t-med);
}
.glass-card:hover{
  background:var(--glass-2);
  border-color:var(--glass-border-h);
  box-shadow:var(--shadow-lg);
  transform:translateY(-1px);
}

/* ════════════ RICH DARK / LIGHT THEME UPGRADES ══════ */

/* Dark body — deeper starfield mesh */
body{
  background-image:
    radial-gradient(ellipse 100% 80% at 10% -20%, rgba(96,165,250,0.10) 0%, transparent 50%),
    radial-gradient(ellipse 70%  60% at 90% 110%, rgba(167,139,250,0.07) 0%, transparent 50%),
    radial-gradient(ellipse 50%  45% at 50%  50%, rgba(45,212,191,0.04)  0%, transparent 55%),
    radial-gradient(ellipse 40%  35% at 20%  85%, rgba(251,191,36,0.03)  0%, transparent 45%);
  background-attachment:fixed;
}

/* Light body — layered, warm mesh so the canvas never reads flat/pale */
[data-theme="light"] body{
  background:#e7ebf5;
  background-image:
    radial-gradient(ellipse 100% 70% at 12% -12%, rgba(79,70,229,0.13)  0%, transparent 52%),
    radial-gradient(ellipse 70%  55% at 88% 108%, rgba(124,58,237,0.09) 0%, transparent 55%),
    radial-gradient(ellipse 45%  40% at 50%  46%, rgba(13,148,136,0.05) 0%, transparent 55%),
    radial-gradient(ellipse 38%  32% at 22%  88%, rgba(180,83,9,0.045)  0%, transparent 48%);
  background-attachment:fixed;
}

/* Dark topbar — richer glass */
.topbar{
  background:linear-gradient(135deg,
    rgba(13,17,26,0.96) 0%,
    rgba(18,24,38,0.92) 100%);
  box-shadow:0 1px 0 var(--glass-border),0 4px 24px rgba(0,0,0,0.35),
             inset 0 1px 0 rgba(255,255,255,0.04);
}
[data-theme="light"] .topbar{
  background:linear-gradient(135deg,rgba(255,255,255,0.92),rgba(248,250,252,0.88));
  box-shadow:0 1px 0 rgba(0,0,0,0.09),0 2px 12px rgba(0,0,0,0.07),
             inset 0 1px 0 rgba(255,255,255,0.95);
}

/* Sidebar — rich glass */
.sidebar{
  background:linear-gradient(180deg,
    rgba(13,17,26,0.97) 0%,
    rgba(11,15,24,0.95) 100%);
  box-shadow:1px 0 0 var(--glass-border),4px 0 24px rgba(0,0,0,0.25);
}
[data-theme="light"] .sidebar{
  background:linear-gradient(180deg,rgba(255,255,255,0.90),rgba(248,250,252,0.85));
  box-shadow:1px 0 0 rgba(0,0,0,0.08),4px 0 20px rgba(0,0,0,0.06);
}

/* Active sidebar item — gradient glow */
.sb-item.active{
  background:linear-gradient(90deg,
    rgba(96,165,250,0.18) 0%,
    rgba(96,165,250,0.07) 60%,
    transparent 100%);
  border-color:rgba(96,165,250,0.20);
  box-shadow:inset 0 1px 0 rgba(96,165,250,0.08);
}
[data-theme="light"] .sb-item.active{
  background:linear-gradient(90deg,rgba(79,70,229,0.12),rgba(79,70,229,0.04) 60%,transparent);
}

/* Cover banners per page */
#page-dashboard .cover{
  background:linear-gradient(135deg,
    rgba(8,14,28,0.98) 0%,
    rgba(14,26,54,0.94) 40%,
    rgba(20,36,76,0.92) 70%,
    rgba(10,18,40,0.97) 100%);
}
#page-tradelog .cover{
  background:linear-gradient(135deg,
    rgba(8,14,28,0.98) 0%,
    rgba(12,28,24,0.94) 50%,
    rgba(8,22,20,0.97) 100%);
}
#page-watchlist .cover{
  background:linear-gradient(135deg,
    rgba(14,8,28,0.98) 0%,
    rgba(28,14,50,0.94) 50%,
    rgba(18,10,36,0.97) 100%);
}
#page-entry .cover{
  background:linear-gradient(135deg,
    rgba(8,18,14,0.98) 0%,
    rgba(12,30,22,0.94) 50%,
    rgba(8,24,16,0.97) 100%);
}
#page-accounts .cover{
  background:linear-gradient(135deg,
    rgba(18,14,8,0.98) 0%,
    rgba(36,24,8,0.94) 50%,
    rgba(22,16,8,0.97) 100%);
}
[data-theme="light"] .cover{
  background:linear-gradient(135deg,rgba(79,70,229,0.88),rgba(79,70,229,0.82),rgba(79,70,229,0.88))!important;
}

/* KPI cards — richer glass */
.kpi-card{
  background:linear-gradient(135deg,
    rgba(255,255,255,0.04) 0%,
    rgba(255,255,255,0.02) 100%);
  box-shadow:var(--shadow-sm),
    inset 0 1px 0 rgba(255,255,255,0.06),
    inset 0 -1px 0 rgba(0,0,0,0.12);
}
[data-theme="light"] .kpi-card{
  background:linear-gradient(135deg,rgba(255,255,255,0.85),rgba(248,250,252,0.70));
  box-shadow:0 2px 12px rgba(0,0,0,0.07),0 1px 0 rgba(255,255,255,0.9),
             inset 0 1px 0 rgba(255,255,255,0.95);
}

/* Data table — subtle row banding */
.data-table tbody tr:nth-child(even) td{
  background:rgba(255,255,255,0.015);
}
[data-theme="light"] .data-table tbody tr:nth-child(even) td{
  background:rgba(0,0,0,0.02);
}

/* Detail panel — richer glass */
.detail-panel{
  background:linear-gradient(180deg,
    rgba(14,19,32,0.97) 0%,
    rgba(12,16,28,0.95) 100%);
}
[data-theme="light"] .detail-panel{
  background:linear-gradient(180deg,rgba(255,255,255,0.97),rgba(248,250,252,0.94));
}

/* Modals — richer glass */
.modal, .glass-modal{
  background:linear-gradient(135deg,
    rgba(18,24,38,0.96) 0%,
    rgba(14,20,34,0.94) 100%);
}
[data-theme="light"] .modal,[data-theme="light"] .glass-modal{
  background:rgba(255,255,255,0.98);
}

/* Watch/account/playbook cards */
.wl-pair-card,.acc-card,.model-card{
  background:linear-gradient(135deg,
    rgba(255,255,255,0.04) 0%,
    rgba(255,255,255,0.02) 100%);
}
[data-theme="light"] .wl-pair-card,[data-theme="light"] .acc-card,[data-theme="light"] .model-card{
  background:linear-gradient(135deg,rgba(255,255,255,0.85),rgba(248,250,252,0.70));
}

/* Tabs bar — richer glass */
.tabs{
  background:linear-gradient(to bottom,
    rgba(13,17,26,0.92) 0%,
    rgba(10,14,22,0.95) 100%);
}
[data-theme="light"] .tabs{
  background:linear-gradient(to bottom,rgba(255,255,255,0.75),rgba(248,250,252,0.65));
}

/* Tab active underline glow */
.tab.active::after{
  box-shadow:0 0 12px rgba(96,165,250,0.5),0 0 4px rgba(96,165,250,0.8);
}

/* Calendar grid wrap — starfield glass */
.cal-grid-wrap{
  background:linear-gradient(135deg,
    rgba(8,12,22,0.96) 0%,
    rgba(10,16,30,0.94) 50%,
    rgba(8,12,24,0.96) 100%);
}
[data-theme="light"] .cal-grid-wrap{
  background:linear-gradient(135deg,rgba(248,250,252,0.6),rgba(241,245,251,0.5));
}

/* Cal KPI — match card style */
.cal-kpi{
  background:linear-gradient(135deg,
    rgba(255,255,255,0.04) 0%,
    rgba(255,255,255,0.02) 100%);
}
[data-theme="light"] .cal-kpi{
  background:linear-gradient(135deg,rgba(255,255,255,0.82),rgba(248,250,252,0.68));
}

/* Trash page cover gets a deep red dark gradient */
#page-trash .cover{
  background:linear-gradient(135deg,
    rgba(30,8,8,0.98) 0%,
    rgba(48,12,12,0.95) 45%,
    rgba(34,8,8,0.98) 100%)!important;
}
[data-theme="light"] #page-trash .cover{
  background:linear-gradient(135deg,rgba(185,28,28,0.88),rgba(220,38,38,0.80),rgba(185,28,28,0.88))!important;
}
/* Label needs strong, reliable contrast against the red cover background —
   the background is a saturated red in BOTH themes (dark maroon in dark
   mode, bright red in light mode), so white text works in both cases and
   doesn't need to branch by theme. Also set inline in the HTML as a
   belt-and-suspenders guard against any other rule overriding it. */
#page-trash .cover-label,
[data-theme="light"] #page-trash .cover-label{
  color:rgba(255,255,255,.85)!important;
  opacity:1!important;
  text-shadow:none!important;
}
#page-trash .cover-sub,
[data-theme="light"] #page-trash .cover-sub{
  color:rgba(255,255,255,.85)!important;
  opacity:1!important;
}

/* Scrollbar — match theme */
[data-theme="light"] ::-webkit-scrollbar-thumb{background:rgba(0,0,0,0.15)}
[data-theme="light"] ::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,0.25)}


/* ════ DETAIL PANEL FULLSCREEN ════════════════════════ */
.detail-panel.fullscreen{
  width:100vw!important;
  left:0!important;right:0!important;
  border-left:none;
  border-radius:0;
  z-index:160;
  max-width:none;
}
.detail-panel.fullscreen .page-inner-det{
  max-width:1100px;margin:0 auto;
  display:grid;grid-template-columns:1fr 1fr;gap:20px;
}
/* In fullscreen the img grid becomes 4 cols */
.detail-panel.fullscreen .img-upload-grid{
  grid-template-columns:repeat(4,1fr)!important;
}
/* Expand button icon flip */
/* expand icon set via JS */
/* expand icon set via JS */
.det-panel-expand{font-size:15px;font-family:var(--font-mono)}

/* ════ ACCOUNT SIZE BAR — glass pill ══════════════════ */
.acc-size-bar{
  display:flex;align-items:center;gap:10px;
  padding:10px 16px;
  background:var(--glass-1);
  backdrop-filter:var(--blur-sm);
  border:1px solid var(--glass-border);
  border-radius:var(--r-xl);
  margin-bottom:12px;flex-wrap:wrap;
  box-shadow:var(--shadow-sm),inset 0 1px 0 var(--glass-shine);
}
[data-theme="light"] .acc-size-bar{
  background:rgba(255,255,255,.8);border-color:rgba(0,0,0,.07);
}

/* ════ FILTER BAR — glass pills ═══════════════════════ */
#search-input,#filter-outcome,#filter-kz,#filter-pair,#cal-acc-filter{
  background:var(--glass-1);
  backdrop-filter:var(--blur-xs);
  border:1px solid var(--glass-border);
  border-radius:var(--r-md);
  color:var(--text);font-family:var(--font-body);
  font-size:12.5px;padding:8px 12px;
  transition:var(--t-fast);outline:none;
}
#search-input:focus,#filter-outcome:focus,#filter-kz:focus,
#filter-pair:focus,#cal-acc-filter:focus{
  background:var(--glass-2);border-color:rgba(96,165,250,.45);
  box-shadow:0 0 0 3px rgba(96,165,250,.08);
}
[data-theme="light"] #search-input,[data-theme="light"] #filter-outcome,
[data-theme="light"] #filter-kz,[data-theme="light"] #filter-pair,
[data-theme="light"] #cal-acc-filter{
  background:rgba(255,255,255,.75);border-color:rgba(0,0,0,.09);
}

/* ════ SEC-HEAD refined ═══════════════════════════════ */
.sec-head{
  font-size:9.5px;font-weight:800;color:var(--text3);
  text-transform:uppercase;letter-spacing:.16em;margin:20px 0 9px;
  display:flex;align-items:center;gap:10px;
}
.sec-head::before{content:'';width:3px;height:12px;
  background:linear-gradient(to bottom,var(--blue),transparent);
  border-radius:var(--r-full);flex-shrink:0}
.sec-head::after{content:'';flex:1;height:1px;
  background:linear-gradient(to right,var(--glass-border),transparent);opacity:.8}

/* ════ COVER — subtle animated gradient ══════════════ */
@keyframes coverPulse{
  0%,100%{background-position:0% 50%}
  50%{background-position:100% 50%}
}
.cover{background-size:200% 200%!important;animation:coverPulse 12s ease infinite}

/* ════ TABLE top-left accent on hover ═══════════════ */
/* accent handled via td:first-child::before below — tr::before removed (caused column shift) */

/* ════ MONTH STAT VAL text-shadow ════════════════════ */
.month-stat-val.blue{text-shadow:0 0 20px rgba(96,165,250,0.3)}
.month-stat-val.green{text-shadow:0 0 20px rgba(52,211,153,0.3)}
.month-stat-val.red{text-shadow:0 0 20px rgba(248,113,113,0.3)}
.month-stat-val.gold{text-shadow:0 0 20px rgba(251,191,36,0.3)}

/* ════ CAL page layout — compact + full page ════════ */
#page-calendar{padding:16px 20px;overflow:hidden}
#page-calendar>div{height:100%}
.cal-wrap{height:100%}

/* Grid auto-sizing so calendar fills available vertical space */
.cal-days{min-height:0}
.cal-day{min-height:68px}

/* Responsive cal kpi */
@media (max-width: 1024px){
  .cal-kpi-val{font-size:16px}
  .cal-day{min-height:58px}
  .cal-day-pnl{font-size:10px}
}
@media (max-width: 768px){
  .cal-kpi-row{grid-template-columns:repeat(2,1fr)}
  .cal-kpi-val{font-size:14px}
  .cal-day{min-height:50px;padding:4px 5px}
  .cal-day-pairs{font-size:7.5px}
}

/* ════ TRASH card left bar gradient on hover ════════ */
.trash-card::before{
  background:linear-gradient(to bottom,rgba(248,113,113,.8),rgba(248,113,113,.2));
  transition:opacity .15s;
}
.trash-card:hover::before{opacity:1}

/* ════ STAR EDITOR larger hit area ═════════════════ */
.star-editor span{font-size:24px;cursor:pointer;transition:var(--t-spring)}
.star-editor span.lit{color:var(--gold);text-shadow:0 0 12px var(--gold-glow)}
.star-editor span:hover{transform:scale(1.28)}

/* ════ CUSTOM chart slot input  ════════════════════ */
.chart-slot-label-input{
  flex:1;font-size:10px;
  background:var(--glass-1);border:1px solid var(--glass-border);
  border-radius:4px;padding:3px 7px;color:var(--text2);
  outline:none;font-family:var(--font-mono);letter-spacing:.03em;
  transition:var(--t-fast);
}
.chart-slot-label-input:hover{border-color:var(--glass-border-h)}
.chart-slot-label-input:focus{border-color:rgba(96,165,250,.45);background:var(--glass-2);color:var(--text)}
[data-theme="light"] .chart-slot-label-input{background:rgba(255,255,255,.7);border-color:rgba(0,0,0,.09)}

/* ════ BRAND ICON glow pulse ═════════════════════════ */
.brand-icon{animation:brandPulse 4s ease-in-out infinite}
@keyframes brandPulse{
  0%,100%{box-shadow:0 0 12px rgba(251,191,36,0.15)}
  50%{box-shadow:0 0 22px rgba(251,191,36,0.32),0 0 8px rgba(251,191,36,0.2)}
}

/* ════ GLASSMORPHISM overlay on long modals ═══════════ */
.glass-modal-overlay{backdrop-filter:var(--blur-lg);-webkit-backdrop-filter:var(--blur-lg)}

/* ════ TOAST — richer glass ══════════════════════════ */
.app-toast{
  background:linear-gradient(135deg,
    rgba(18,24,38,0.97) 0%,rgba(14,20,34,0.95) 100%);
  border-color:rgba(255,255,255,0.09);
  min-width:260px;max-width:400px;
}
[data-theme="light"] .app-toast{
  background:linear-gradient(135deg,rgba(255,255,255,.98),rgba(248,250,252,.96));
}

/* ════ WLPAIR priority badge ═════════════════════════ */
.wl-priority{
  padding:3px 10px;border-radius:var(--r-full);
  font-size:10.5px;font-weight:700;
  background:var(--glass-1);border:1px solid var(--glass-border);
}

/* ════ PLAYBOOK steps — numbered glow ════════════════ */
.model-step::before{
  background:linear-gradient(135deg,var(--blue-dim),rgba(96,165,250,.05));
  box-shadow:0 0 10px var(--blue-glow);
}

/* ════ MONTHLY stat card hover ═══════════════════════ */
.month-stat{transition:var(--t-fast)}
.month-stat:hover{
  background:var(--glass-2)!important;
  border-color:var(--glass-border-h)!important;
  transform:translateY(-1px);
  box-shadow:var(--shadow-md);
}

/* ════ COVER LABEL glow on dashboard ════════════════ */
.cover-label{
  text-shadow:0 0 20px currentColor;
  letter-spacing:.16em;
}

/* ════ DETAIL PAIR HEADING ════════════════════════════ */
.detail-pair{
  font-size:28px;font-weight:900;letter-spacing:-1px;
  line-height:1;margin-bottom:4px;
}

/* ════ IMG SLOT upgrade ══════════════════════════════ */
.img-slot:not(:has(img)){
  background:linear-gradient(135deg,var(--glass-0),var(--glass-1));
}
.img-slot:not(:has(img)):hover{
  background:linear-gradient(135deg,var(--blue-dim),var(--glass-1));
  border-color:rgba(96,165,250,.45);
}

/* ════ Quarter page cover unique gradient ════════════ */
#page-quarter .cover{
  background:linear-gradient(135deg,
    rgba(10,14,30,0.98) 0%,
    rgba(18,28,58,0.94) 40%,
    rgba(24,38,80,0.92) 70%,
    rgba(12,18,42,0.97) 100%)!important;
}


/* ══════════════════════════════════════════════════════
   VIEW MODE — Stats grid (replaces cramped stat-rows)
   ══════════════════════════════════════════════════════ */
.view-stats-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  margin-bottom: 16px;
}
.view-stat-card {
  background: var(--glass-1);
  border: 1px solid var(--glass-border);
  border-radius: var(--r-md, 10px);
  padding: 12px 14px;
  display: flex;
  flex-direction: column;
  gap: 5px;
  transition: background 0.15s;
}
.view-stat-card:hover { background: var(--glass-2); }
.view-stat-label {
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.6px;
  color: var(--text3);
}
.view-stat-val {
  font-size: 20px;
  font-weight: 800;
  color: var(--text);
  letter-spacing: -0.5px;
  line-height: 1.1;
  font-variant-numeric: tabular-nums;
}
.view-stat-val.green { color: var(--green); }
.view-stat-val.red   { color: var(--red); }
.view-stat-val.blue  { color: var(--blue); }
.view-stat-val.view-stat-val-sm { font-size: 15px; letter-spacing: -0.2px; }
.view-stat-val.stars {
  font-size: 18px;
  letter-spacing: 2px;
  color: #fbbf24;
}
.view-stat-val.stars .empty { opacity: 0.2; }
[data-theme="light"] .view-stat-val.stars { color: #b45309; }

/* ══════════════════════════════════════════════════════
   SHARE BUTTON in detail panel header
   ══════════════════════════════════════════════════════ */
.det-share-btn {
  background: rgba(251,191,36,0.10) !important;
  border-color: rgba(251,191,36,0.28) !important;
  color: #fbbf24 !important;
}
.det-share-btn:hover {
  background: rgba(251,191,36,0.22) !important;
  border-color: rgba(251,191,36,0.55) !important;
}
[data-theme="light"] .det-share-btn { color: #b45309 !important; }

/* ══════════════════════════════════════════════════════
   EMOTION CHIPS — selectable grid
   ══════════════════════════════════════════════════════ */
.emo-chip-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
  margin-top: 4px;
}
.emo-chip {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 6px 13px;
  border-radius: 20px;
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
  background: var(--glass-1);
  border: 1px solid var(--glass-border);
  color: var(--text2);
  transition: background 0.15s, border-color 0.15s, color 0.15s, transform 0.1s;
  user-select: none;
  letter-spacing: 0.1px;
}
.emo-chip:hover {
  background: var(--glass-2);
  border-color: var(--glass-border-h);
  color: var(--text);
  transform: translateY(-1px);
}
.emo-chip.active {
  background: rgba(251,191,36,0.14);
  border-color: rgba(251,191,36,0.40);
  color: #fbbf24;
  box-shadow: 0 0 12px rgba(251,191,36,0.12);
}
[data-theme="light"] .emo-chip { background: rgba(0,0,0,0.04); border-color: rgba(0,0,0,0.08); color: var(--text2); }
[data-theme="light"] .emo-chip:hover { background: rgba(0,0,0,0.07); color: var(--text); }
[data-theme="light"] .emo-chip.active { background: rgba(180,83,9,0.10); border-color: rgba(180,83,9,0.35); color: #b45309; box-shadow: none; }

/* ══════════════════════════════════════════════════════
   STAR RATING EDITOR — 3 tap-card options
   ══════════════════════════════════════════════════════ */
.star-editor-row {
  display: flex;
  gap: 8px;
  margin-top: 4px;
}
.star-opt {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  padding: 10px 16px;
  background: var(--glass-1);
  border: 1px solid var(--glass-border);
  border-radius: 10px;
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s, transform 0.12s, box-shadow 0.15s;
  user-select: none;
  min-width: 68px;
}
.star-opt:hover {
  background: var(--glass-2);
  border-color: var(--glass-border-h);
  transform: translateY(-2px);
}
.star-opt.selected {
  background: rgba(251,191,36,0.12);
  border-color: rgba(251,191,36,0.45);
  box-shadow: 0 0 16px rgba(251,191,36,0.14);
  transform: translateY(-2px);
}
.star-pips {
  font-size: 16px;
  letter-spacing: 1px;
  color: #fbbf24;
  line-height: 1;
}
.star-opt:not(.selected) .star-pips { opacity: 0.4; }
.star-lbl {
  font-size: 10px;
  font-weight: 700;
  color: var(--text3);
  letter-spacing: 0.3px;
  text-transform: uppercase;
}
.star-opt.selected .star-lbl { color: #fbbf24; }
[data-theme="light"] .star-opt { background: rgba(0,0,0,0.03); border-color: rgba(0,0,0,0.08); }
[data-theme="light"] .star-opt:hover { background: rgba(0,0,0,0.06); }
[data-theme="light"] .star-opt.selected { background: rgba(180,83,9,0.09); border-color: rgba(180,83,9,0.40); box-shadow: none; }
[data-theme="light"] .star-pips { color: #b45309; }
[data-theme="light"] .star-opt.selected .star-lbl { color: #b45309; }

/* custom TF input */
.form-input[id$="-custom"] {
  border-style: dashed;
  border-color: rgba(251,191,36,0.35);
  background: rgba(251,191,36,0.04);
  font-size: 13px;
}
.form-input[id$="-custom"]:focus {
  border-color: rgba(251,191,36,0.60);
  background: rgba(251,191,36,0.08);
}
[data-theme="light"] .form-input[id$="-custom"] {
  border-color: rgba(180,83,9,0.30);
  background: rgba(180,83,9,0.04);
}

/* ══════════════════════════════════════════════════════
   ACCOUNT MANAGER MODAL
   ══════════════════════════════════════════════════════ */
.acc-manager-overlay {
  position: fixed;
  inset: 0;
  background: rgba(4,8,18,0.55);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  z-index: 4000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
  opacity: 0;
  transition: opacity 0.2s;
}
.acc-manager-overlay.open { opacity: 1; }
[data-theme="light"] .acc-manager-overlay { background: rgba(15,23,42,0.42); }

.acc-manager-modal {
  width: 100%;
  max-width: 460px;
  background: rgba(13,17,26,0.78);
  backdrop-filter: blur(24px) saturate(1.7);
  -webkit-backdrop-filter: blur(24px) saturate(1.7);
  border: 1px solid var(--glass-border);
  border-radius: var(--r-lg, 14px);
  overflow: hidden;
  box-shadow: 0 16px 40px rgba(0,0,0,0.32), var(--glass-spec-top, inset 0 1px 0 rgba(255,255,255,0.10));
  transform: translateY(16px) scale(0.97);
  transition: transform 0.22s cubic-bezier(0.22,1,0.36,1);
  max-height: 90vh;
  display: flex; flex-direction: column;
}
.acc-manager-overlay.open .acc-manager-modal { transform: translateY(0) scale(1); }

.acc-manager-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 18px;
  border-bottom: 1px solid var(--glass-border);
  font-size: 13px;
  font-weight: 700;
  color: var(--text);
  background: var(--glass-1);
}
.acc-mgr-close {
  background: var(--glass-2);
  border: 1px solid var(--glass-border);
  border-radius: 6px;
  width: 26px; height: 26px;
  display: flex; align-items: center; justify-content: center;
  font-size: 12px;
  cursor: pointer;
  color: var(--text2);
  transition: background 0.15s, color 0.15s;
  font-family: inherit;
}
.acc-mgr-close:hover { background: rgba(248,113,113,0.15); color: var(--red); border-color: rgba(248,113,113,0.3); }

.acc-manager-body { padding: 12px 16px 16px; display: flex; flex-direction: column; gap: 8px; overflow-y: auto; }
/* Prevent the table wrap from being squashed to fit the visible area —
   it must keep its full natural height so THIS element (not the table)
   is what scrolls inside .acc-manager-body. */
.acc-manager-body .data-table-wrap { flex-shrink: 0; }
.acc-mgr-list { display: flex; flex-direction: column; gap: 6px; }
.acc-mgr-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 10px 12px;
  background: var(--glass-1);
  border: 1px solid var(--glass-border);
  border-radius: var(--r-md, 10px);
  transition: background 0.15s;
}
.acc-mgr-item:hover { background: var(--glass-2); }
.acc-mgr-name { font-size: 13px; font-weight: 600; color: var(--text); flex: 1; }
.acc-mgr-actions { display: flex; gap: 5px; flex-shrink: 0; }
.acc-mgr-btn {
  width: 30px; height: 30px;
  display: flex; align-items: center; justify-content: center;
  border-radius: 7px;
  border: 1px solid var(--glass-border);
  background: var(--glass-2);
  cursor: pointer;
  flex-shrink: 0;
  transition: background 0.15s, color 0.15s, border-color 0.15s;
}
.acc-mgr-btn:disabled { opacity: 0.30; cursor: not-allowed; }
/* Blue edit */
.acc-mgr-btn.edit { background: rgba(96,165,250,0.10); color: #60a5fa; border-color: rgba(96,165,250,0.25); }
.acc-mgr-btn.edit:not(:disabled):hover { background: rgba(96,165,250,0.22); border-color: rgba(96,165,250,0.5); }
/* Archive/restore neutral */
.acc-mgr-btn.archive { background: rgba(148,163,184,0.10); color: var(--text2); border-color: rgba(148,163,184,0.25); }
.acc-mgr-btn.archive:hover { background: rgba(148,163,184,0.20); color: var(--text); }
.acc-mgr-btn.restore { background: rgba(52,211,153,0.10); color: var(--green); border-color: rgba(52,211,153,0.25); }
.acc-mgr-btn.restore:hover { background: rgba(52,211,153,0.20); }
/* Red delete */
.acc-mgr-btn.del { background: rgba(248,113,113,0.10); color: #f87171; border-color: rgba(248,113,113,0.25); }
.acc-mgr-btn.del:not(:disabled):hover { background: rgba(248,113,113,0.22); border-color: rgba(248,113,113,0.5); }
.acc-mgr-add-row {
  display: flex;
  gap: 6px;
  margin-top: 2px;
  padding-top: 10px;
  border-top: 1px solid var(--glass-border);
  flex-wrap: wrap;
}
.acc-mgr-input {
  flex: 1;
  min-width: 0;
  background: var(--glass-1);
  border: 1px solid var(--glass-border);
  border-radius: var(--r-sm, 6px);
  padding: 8px 10px;
  font-size: 13px;
  color: var(--text);
  font-family: inherit;
  outline: none;
  transition: border-color 0.15s;
  height: 36px;
  box-sizing: border-box;
}
.acc-mgr-input:focus { border-color: rgba(251,191,36,0.50); }
.acc-mgr-add-btn {
  padding: 8px 14px;
  background: rgba(251,191,36,0.12);
  border: 1px solid rgba(251,191,36,0.30);
  border-radius: var(--r-sm, 6px);
  color: #fbbf24;
  font-size: 12px;
  font-weight: 700;
  cursor: pointer;
  font-family: inherit;
  white-space: nowrap;
  transition: background 0.15s, border-color 0.15s;
}
.acc-mgr-add-btn:hover { background: rgba(251,191,36,0.20); border-color: rgba(251,191,36,0.50); }
[data-theme="light"] .acc-manager-modal { background: rgba(255,255,255,0.80); border-color: rgba(0,0,0,0.09); }
[data-theme="light"] .acc-manager-header { background: rgba(0,0,0,0.02); border-color: rgba(0,0,0,0.07); }
[data-theme="light"] .acc-mgr-item { background: rgba(0,0,0,0.03); border-color: rgba(0,0,0,0.07); }
[data-theme="light"] .acc-mgr-input { background: rgba(0,0,0,0.03); border-color: rgba(0,0,0,0.09); }
[data-theme="light"] .acc-mgr-add-btn { background: rgba(180,83,9,0.09); border-color: rgba(180,83,9,0.28); color: #b45309; }
[data-theme="light"] .acc-mgr-add-btn:hover { background: rgba(180,83,9,0.16); }

/* ══════════════════════════════════════════════════════
   SHARE MODAL — full styles
   ══════════════════════════════════════════════════════ */
#share-modal-overlay {
  position: fixed;
  inset: 0;
  height: 100vh;
  height: 100dvh;
  /* No backdrop-filter here on purpose. Blurring a position:fixed layer
     that also gets resized/re-transformed by Chrome's dynamic address bar
     (which happens on ANY touch/scroll while the modal is open) is what
     produced the torn frames, blank gaps, and "half visible" content —
     Android Chrome fails to recomposite the blurred layer correctly during
     that resize. A solid darkened background gives the same dimmed-page
     effect without triggering the bug. */
  background: rgba(4,8,18,0.90);
  z-index: 3000;
  display: none;
  align-items: center;
  justify-content: center;
  padding: 16px;
  opacity: 0;
  transition: opacity 0.22s ease;
  /* The overlay itself no longer scrolls — only .sm-modal does. Letting both
     the overlay AND the modal scroll on mobile is what caused the layout to
     jump/glitch (rubber-banding, the header appearing detached from the
     card) whenever the browser's address bar showed/hid in compact view. */
  overflow: hidden;
  overscroll-behavior: contain;
  isolation: isolate;
  contain: layout paint;
  transform-origin: top left;
}
#share-modal-overlay.open { opacity: 1; }
[data-theme="light"] #share-modal-overlay { background: rgba(15,23,42,0.80); }

.sm-modal {
  width: 100%;
  max-width: 560px;
  max-height: 100%;
  display: flex;
  flex-direction: column;
  background: var(--bg2);
  border: 1px solid var(--glass-border);
  border-radius: var(--r-lg, 14px);
  overflow: hidden;
  box-shadow: 0 40px 100px rgba(0,0,0,0.70), 0 0 0 1px rgba(255,255,255,0.04) inset;
  transform: translateY(20px);
  transition: transform 0.26s cubic-bezier(0.22,1,0.36,1), max-width 0.32s cubic-bezier(0.22,1,0.36,1);
  margin: auto;
  /* Own compositor layer + hard clip so nothing behind it can ever show
     through mid-repaint, regardless of what the overlay above is doing. */
  isolation: isolate;
  contain: layout paint;
  background-color: var(--bg2);
}
#share-modal-overlay.open .sm-modal { transform: translateY(0); }
[data-theme="light"] .sm-modal {
  background: #f5f7fc;
  border-color: rgba(0,0,0,0.09);
  box-shadow: 0 40px 100px rgba(0,0,0,0.18);
}

.sm-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 15px 20px;
  border-bottom: 1px solid var(--glass-border);
  background: var(--glass-1);
  flex-shrink: 0;
}
[data-theme="light"] .sm-header { border-color: rgba(0,0,0,0.07); background: rgba(0,0,0,0.02); }
.sm-title { display: flex; align-items: center; gap: 7px; font-size: 15px; font-weight: 700; color: var(--text); letter-spacing: -0.2px; }
.sm-header-right { display: flex; align-items: center; gap: 6px; }
.sm-icon-btn {
  background: var(--glass-2);
  border: 1px solid var(--glass-border);
  border-radius: 8px;
  padding: 5px 11px;
  font-size: 14px;
  cursor: pointer;
  color: var(--text);
  transition: background 0.16s, border-color 0.16s;
  line-height: 1.4;
  font-family: inherit;
}
.sm-icon-btn:hover { background: var(--glass-3, rgba(255,255,255,0.10)); border-color: var(--glass-border-h); }
.sm-close-btn:hover { background: rgba(248,113,113,0.15); color: var(--red); border-color: rgba(248,113,113,0.35); }
[data-theme="light"] .sm-icon-btn { background: rgba(0,0,0,0.05); border-color: rgba(0,0,0,0.09); color: var(--text); }

.sm-body {
  padding: 18px 20px;
  display: flex;
  flex-direction: column;
  gap: 16px;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
}
.sm-card-wrap { display: flex; justify-content: center; width: 100%; }

/* ── Card outer ──────────────────────────────────────────────────────
   Mirrors nxtgen-share-card.html: a plain, fixed-width wrapper — no
   separate "frame"/backdrop/letterbox concept. The card itself becomes
   the exact aspect ratio the user picked (its height is set explicitly,
   in px, by smSyncCardHeight — CSS aspect-ratio alone is unreliable once
   html2canvas has to resolve it inside an offscreen clone). Whatever the
   resulting shape, smFitCardContent() shrinks the card's own content
   (real font-sizes/paddings, via the --s custom property below — not a
   visual transform) until it actually fits that height, so nothing is
   ever cropped or letterboxed, at any export size. */
.sm-card-outer { position: relative; width: 100%; }

/* ── Card ──
   --s is the shrink-to-fit factor (see smFitCardContent in app.js): every
   spacing/font-size value on every element inside the card is expressed
   as calc(Npx * var(--s)), so dialing --s down uniformly shrinks the
   WHOLE layout in real content terms until it fits inside whatever
   height the current export aspect ratio allows — never a visual
   scale/crop, always real content that truly fits. */
.sm-card {
  --s: 1;
  position: relative;
  width: 100%;
  isolation: isolate;
  border-radius: 0;
  font-family: var(--font-body);
  box-shadow: 0 24px 60px rgba(0,0,0,0.35);
  /* Flex column so the card's real content — not just a visual scale —
     always reaches the top AND bottom edge of whatever height
     smSyncCardHeight assigns it (square, landscape, or a very tall
     portrait/story shape). .sm-top-bar stays pinned to the top edge,
     and .sm-card-body (flex:1) absorbs/distributes any extra height
     below it — so a tall export never ends in a blank gap below the
     last row. */
  display: flex;
  flex-direction: column;
}
/* Flexible middle region: everything below the top bar. Rather than
   justify-content:space-between (flex-computed gap distribution, which
   html2canvas rasterizes unreliably — it was the cause of rows drifting
   down and overlapping the bottom of the card in exports), the extra
   vertical space is measured in JS (smFitCardContent) and applied here
   as a literal --fill-gap pixel value via the CSS gap property. That's
   just fixed spacing between block-level rows, which html2canvas renders
   exactly like real margins — no auto-distribution math for it to get
   wrong. min-height:0 still lets this shrink below its natural content
   size for the existing --s shrink-to-fit path. */
.sm-card-body {
  --fill-gap: 0px;
  display: flex;
  flex-direction: column;
  flex: 1;
  min-height: 0;
  gap: var(--fill-gap);
  /* Always-present breathing room at the bottom of the card. Without this,
     short/wide shapes (Square, Landscape, Wallpaper) — where the computed
     --fill-gap ends up tiny or zero because content already nearly fills
     the height — leave the last row sitting flush against the card's
     bottom edge. Tall shapes (Portrait, Phone Story) already get
     generous --fill-gap spacing everywhere else, so this fixed amount
     is invisible there. */
  padding-bottom: calc(24px*var(--s));
}
/* Instagram Square and Twitter Landscape get a touch more bottom
   breathing room than the default 24px — 30px brings the gap between
   the checklist and the card's bottom edge closer in line with the
   spacing already present at the top of the card for these short/wide
   shapes. Portrait keeps the default, since its generous --fill-gap
   already handles spacing.
   Deliberately NOT multiplied by var(--s) here: these are exactly the
   shapes whose content overflows the fixed export height, so
   smFitCardContent()'s binary search shrinks --s to make everything
   (padding included) fit. A scaled padding-bottom gets shrunk right
   along with it — the search just picks a slightly smaller --s to
   absorb the increase, so the extra px is diluted away and the gap
   barely changes. Keeping this fixed carves it out of that budget:
   the search still converges, but only the rest of the content (fonts,
   gaps, rings) shrinks to make room, so this 30px always renders at
   its full size. */
.sm-card[data-size-preset="ig_square"] .sm-card-body,
.sm-card[data-size-preset="tw_landscape"] .sm-card-body {
  padding-bottom: 30px;
}
.sm-card.dark {
  background: linear-gradient(145deg, #0d1424 0%, #0a0f1c 60%, #0d1530 100%);
  border: 1px solid rgba(255,255,255,0.08);
  box-shadow: 0 24px 60px rgba(0,0,0,0.6);
  color: rgba(248,250,252,0.95);
}
.sm-card.light {
  background: linear-gradient(145deg, #ffffff 0%, #f4f7ff 60%, #eef2fc 100%);
  border: 1px solid rgba(0,0,0,0.08);
  box-shadow: 0 24px 60px rgba(0,0,0,0.10);
  color: rgba(15,23,42,0.95);
}

.sm-chart-bg { width: 100%; height: 100%; pointer-events: none; opacity: 0.85; }
.sm-card.light .sm-chart-bg { opacity: 0.35; }
.sm-card-noise {
  position: absolute; inset: 0;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='4' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23n)' opacity='0.03'/%3E%3C/svg%3E");
  z-index: 0; pointer-events: none; opacity: 0.5;
}
.sm-card.light .sm-card-noise { display: none; }
.sm-glow-blob { width: calc(260px*var(--s)); height: calc(260px*var(--s)); border-radius: 50%; filter: blur(70px); pointer-events: none; opacity: 0.55; transition: background 0.3s; }
.sm-card.light .sm-glow-blob { opacity: 0.22; }
.glow-win  { background: radial-gradient(circle, rgba(52,211,153,0.45) 0%, transparent 65%); }
.glow-loss { background: radial-gradient(circle, rgba(248,113,113,0.45) 0%, transparent 65%); }
.glow-be   { background: radial-gradient(circle, rgba(251,191,36,0.40) 0%, transparent 65%); }
.sm-bg-layer {
  position: absolute; inset: 0; z-index: 0;
  pointer-events: none; overflow: hidden;
}
/* Anchored to the TOP-right corner behind the hero/pnl area, with a
   fixed pixel height rather than a % of the card's own height. It was
   previously bottom:0 with height:55% of the whole card — harmless
   while the card stayed short, but once the card is made genuinely
   taller (to fill Square/Landscape/Wallpaper/Portrait/Story edge to
   edge) that percentage stretched this decorative line into a long
   diagonal streak crossing straight through the checklist/rating rows
   below. Fixed height keeps it a subtle accent behind the hero only,
   regardless of how tall the card becomes. */
.sm-bg-layer .sm-chart-bg { position: absolute; right: 0; top: 0; width: 65%; height: calc(230px*var(--s)); }
.sm-bg-layer .sm-glow-blob { position: absolute; top: -60px; right: -60px; }
.sm-card > *:not(.sm-bg-layer) { position: relative; z-index: 1; }

.sm-top-bar { display: flex; align-items: center; justify-content: space-between; padding: calc(18px*var(--s)) calc(22px*var(--s)) 0; flex-shrink: 0; }
.sm-brand { display: flex; align-items: center; gap: calc(9px*var(--s)); }
.sm-brand-icon {
  width: calc(32px*var(--s)); height: calc(32px*var(--s)); border-radius: 0;
  display: flex; align-items: center; justify-content: center;
  background: transparent;
}
.sm-brand-logo {
  width: calc(80px*var(--s)); height: auto;
  object-fit: contain;
  filter: none;
}
/* Logo in the share card — adapts to card theme (dark/light) */
.sm-card-logo {
  height: calc(32px*var(--s)); width: auto;
  object-fit: contain; display: block;
  /* Dark card: logo has white wordmark + white text — show as-is */
  filter: brightness(0) invert(1);
}
.sm-card.light .sm-card-logo {
  /* Light card: force entire logo to solid black — clean on white bg */
  filter: brightness(0);
}
[data-theme="light"] .sm-brand-logo {
  filter: brightness(0);
}
.sm-brand-text { display: flex; flex-direction: column; gap: 1px; }
.sm-brand-name { font-size: calc(14px*var(--s)); font-weight: 800; letter-spacing: -0.3px; line-height: 1; }
.sm-brand-sub  { font-size: calc(10px*var(--s)); opacity: 0.45; letter-spacing: 0.2px; }
.sm-badge { font-size: calc(11px*var(--s)); font-weight: 800; letter-spacing: 1px; padding: calc(5px*var(--s)) calc(14px*var(--s)); border-radius: 0; }
.sm-badge-win  { background: rgba(52,211,153,0.13); color: #34d399; border: 1px solid rgba(52,211,153,0.28); }
.sm-badge-loss { background: rgba(248,113,113,0.13); color: #f87171; border: 1px solid rgba(248,113,113,0.28); }
.sm-badge-be   { background: rgba(251,191,36,0.13); color: #fbbf24; border: 1px solid rgba(251,191,36,0.28); }
.sm-card.light .sm-badge-win  { background: rgba(5,150,105,0.09); color: #059669; border-color: rgba(5,150,105,0.22); }
.sm-card.light .sm-badge-loss { background: rgba(220,38,38,0.09); color: #dc2626; border-color: rgba(220,38,38,0.22); }
.sm-card.light .sm-badge-be   { background: rgba(180,83,9,0.09);  color: #b45309; border-color: rgba(180,83,9,0.22); }

.sm-hero { display: flex; align-items: flex-end; justify-content: space-between; padding: calc(14px*var(--s)) calc(22px*var(--s)) calc(16px*var(--s)); gap: calc(12px*var(--s)); }
.sm-pair { font-size: calc(42px*var(--s)); font-weight: 900; letter-spacing: -2px; line-height: 0.95; }
.sm-direction { display: flex; align-items: center; gap: calc(6px*var(--s)); margin-top: calc(7px*var(--s)); font-size: calc(12px*var(--s)); opacity: 0.5; font-weight: 600; }
.sm-dir-arrow { font-size: calc(10px*var(--s)); }
.arr-buy  { color: #34d399; opacity: 1 !important; }
.arr-sell { color: #f87171; opacity: 1 !important; }
.sm-card.light .arr-buy  { color: #059669; }
.sm-card.light .arr-sell { color: #dc2626; }
.sm-hero-right { text-align: right; flex-shrink: 0; }
.sm-pnl-block  { display: flex; flex-direction: column; align-items: flex-end; gap: calc(2px*var(--s)); }
.sm-pnl-main { font-size: calc(38px*var(--s)); font-weight: 800; letter-spacing: 0.5px; line-height: 1; font-variant-numeric: tabular-nums; }
.sm-pnl-sub  { font-size: calc(15px*var(--s)); font-weight: 700; letter-spacing: 0.2px; opacity: 0.75; }
.pnl-win  { color: #34d399; }
.pnl-loss { color: #f87171; }
.pnl-be   { color: #fbbf24; }
.sm-card.light .pnl-win  { color: #059669; }
.sm-card.light .pnl-loss { color: #dc2626; }
.sm-card.light .pnl-be   { color: #b45309; }
.sm-pnl-label { font-size: calc(10px*var(--s)); opacity: 0.4; margin-top: calc(3px*var(--s)); font-weight: 600; letter-spacing: 0.3px; }

.sm-rule { height: 1px; margin: 0 calc(22px*var(--s)); }
.sm-card.dark  .sm-rule { background: rgba(255,255,255,0.07); }
.sm-card.light .sm-rule { background: rgba(0,0,0,0.08); }

.sm-stats { display: grid; grid-template-columns: repeat(2,1fr); padding: 0 calc(22px*var(--s)); }
.sm-stat { display: flex; flex-direction: column; gap: calc(5px*var(--s)); padding: calc(14px*var(--s)) 0; }
.sm-stat-center { border-left: 1px solid; border-right: 1px solid; padding-left: calc(14px*var(--s)); padding-right: calc(14px*var(--s)); margin-left: calc(4px*var(--s)); margin-right: calc(4px*var(--s)); }
.sm-card.dark  .sm-stat-center { border-color: rgba(255,255,255,0.07); }
.sm-card.light .sm-stat-center { border-color: rgba(0,0,0,0.08); }
.sm-stat-lbl { font-size: calc(9px*var(--s)); font-weight: 700; letter-spacing: 0.8px; opacity: 0.38; text-transform: uppercase; }
.sm-stat-val { font-size: calc(18px*var(--s)); font-weight: 800; letter-spacing: -0.5px; line-height: 1.1; }
.sm-stat-val-sm { font-size: calc(14px*var(--s)); letter-spacing: -0.2px; }

.sm-tags { display: flex; flex-wrap: wrap; gap: calc(7px*var(--s)); padding: calc(12px*var(--s)) calc(22px*var(--s)) calc(10px*var(--s)); }
.sm-tag { display: flex; align-items: center; gap: calc(6px*var(--s)); padding: calc(5px*var(--s)) calc(12px*var(--s)); border-radius: 0; font-size: calc(11px*var(--s)); font-weight: 600; letter-spacing: 0.1px; white-space: nowrap; }
.sm-card.dark  .sm-tag { background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.08); }
.sm-card.light .sm-tag { background: rgba(0,0,0,0.04); border: 1px solid rgba(0,0,0,0.08); }
.sm-dot { width: calc(6px*var(--s)); height: calc(6px*var(--s)); border-radius: 50%; flex-shrink: 0; }
.sm-tag-gold  .sm-dot { background: #fbbf24; }
.sm-tag-blue  .sm-dot { background: #60a5fa; }
.sm-tag-green .sm-dot { background: #34d399; }
.sm-card.light .sm-tag-gold  .sm-dot { background: #b45309; }
.sm-card.light .sm-tag-blue  .sm-dot { background: #4f46e5; }
.sm-card.light .sm-tag-green .sm-dot { background: #059669; }
.sm-tag-dir-buy  .sm-dot { background: #34d399; }
.sm-tag-dir-sell .sm-dot { background: #f87171; }
.sm-card.light .sm-tag-dir-buy  .sm-dot { background: #059669; }
.sm-card.light .sm-tag-dir-sell .sm-dot { background: #dc2626; }

/* ── Trend hero (big backdrop line behind ticker/pnl) ── */
.sm-trend-hero { position: relative; height: calc(46px*var(--s)); margin: 0 calc(22px*var(--s)) calc(-30px*var(--s)); pointer-events: none; }
.sm-trend-hero svg { width: 100%; height: 100%; overflow: visible; }
.sm-trend-hero path { fill: none; stroke-width: 2; opacity: 1; }
.sm-card.dark  .sm-trend-hero path.trend-win  { stroke: #34d399; }
.sm-card.dark  .sm-trend-hero path.trend-loss { stroke: #f87171; }
.sm-card.dark  .sm-trend-hero path.trend-be   { stroke: #fbbf24; }
.sm-card.light .sm-trend-hero path.trend-win  { stroke: #059669; }
.sm-card.light .sm-trend-hero path.trend-loss { stroke: #dc2626; }
.sm-card.light .sm-trend-hero path.trend-be   { stroke: #b45309; }

/* ── Score rings (execution / discipline / efficiency + edge grade) ── */
.sm-rings { display: flex; align-items: center; justify-content: space-between; padding: calc(14px*var(--s)) calc(22px*var(--s)) calc(4px*var(--s)); gap: calc(8px*var(--s)); }
.sm-ring-item { display: flex; flex-direction: column; align-items: center; gap: calc(6px*var(--s)); flex: 1; }
.sm-ring-svg { width: calc(52px*var(--s)); height: calc(52px*var(--s)); transform: rotate(-90deg); }
.sm-ring-track { fill: none; stroke-width: 5; }
.sm-card.dark  .sm-ring-track { stroke: rgba(255,255,255,0.08); }
.sm-card.light .sm-ring-track { stroke: rgba(0,0,0,0.08); }
.sm-ring-fill { fill: none; stroke-width: 5; stroke-linecap: round; transition: stroke-dashoffset 0.3s; }
.sm-ring-wrap { position: relative; width: calc(52px*var(--s)); height: calc(52px*var(--s)); }
.sm-ring-num { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font-size: calc(12px*var(--s)); font-weight: 800; }
.sm-ring-label { font-size: calc(8.5px*var(--s)); font-weight: 700; letter-spacing: 0.5px; text-transform: uppercase; opacity: 0.45; text-align: center; }
.sm-edge-grade { display: flex; flex-direction: column; align-items: center; gap: calc(6px*var(--s)); flex: 0 0 auto; padding-left: calc(10px*var(--s)); border-left: 1px solid; }
.sm-card.dark  .sm-edge-grade { border-color: rgba(255,255,255,0.09); }
.sm-card.light .sm-edge-grade { border-color: rgba(0,0,0,0.09); }
.sm-edge-grade-val { font-size: calc(24px*var(--s)); font-weight: 900; letter-spacing: -0.5px; line-height: 1; }
.sm-edge-grade-lbl { font-size: calc(8.5px*var(--s)); font-weight: 700; letter-spacing: 0.5px; text-transform: uppercase; opacity: 0.45; }

/* ── Mini stat row (risk / checklist score / rating) ── */
.sm-mini-stats { display: flex; padding: calc(10px*var(--s)) calc(22px*var(--s)) 0; gap: 0; }
.sm-mini-stat { flex: 1; display: flex; flex-direction: column; gap: calc(2px*var(--s)); text-align: center; padding: calc(8px*var(--s)) calc(4px*var(--s)); }
.sm-mini-stat + .sm-mini-stat { border-left: 1px solid; }
.sm-card.dark  .sm-mini-stat + .sm-mini-stat { border-color: rgba(255,255,255,0.07); }
.sm-card.light .sm-mini-stat + .sm-mini-stat { border-color: rgba(0,0,0,0.08); }
.sm-mini-stat-val { display: flex; align-items: center; justify-content: center; gap: calc(5px*var(--s)); font-size: calc(15px*var(--s)); font-weight: 800; letter-spacing: -0.3px; }
.sm-mini-stat-lbl { font-size: calc(8.5px*var(--s)); font-weight: 700; letter-spacing: 0.5px; text-transform: uppercase; opacity: 0.4; }
.sm-mini-stat-val .sm-mini-stat-icon { flex-shrink: 0; opacity: 0.55; width: calc(13px*var(--s)); height: calc(13px*var(--s)); }

/* ── Checklist grid ── */
.sm-checklist-divider { height: 2px; margin: calc(6px*var(--s)) calc(22px*var(--s)) 0; background: #fbbf24; }
.sm-card.light .sm-checklist-divider { background: #b45309; }
.sm-checklist-lbl { font-size: calc(10px*var(--s)); font-weight: 700; letter-spacing: 0.6px; text-transform: uppercase; padding: calc(14px*var(--s)) calc(22px*var(--s)) calc(6px*var(--s)); text-align: center; }
.sm-card.dark  .sm-checklist-lbl { color: #fbbf24; }
.sm-card.light .sm-checklist-lbl { color: #b45309; }
.sm-checklist-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: calc(6px*var(--s)) calc(10px*var(--s)); padding: 0 calc(22px*var(--s)) calc(14px*var(--s)); }
.sm-check-item { display: flex; align-items: center; justify-content: flex-start; gap: calc(7px*var(--s)); font-size: calc(11px*var(--s)); font-weight: 600; min-width: 0; }
/* Vertical dividers between the 3 columns — items 2 and 3 of every row
   (nth-child(3n+2) / nth-child(3n)) get a left border, matching the gold
   accent used for the divider above the section. */
.sm-check-item:nth-child(3n+2), .sm-check-item:nth-child(3n) { border-left: 1px solid rgba(251,191,36,0.35); padding-left: calc(10px*var(--s)); }
.sm-card.light .sm-check-item:nth-child(3n+2), .sm-card.light .sm-check-item:nth-child(3n) { border-left-color: rgba(180,83,9,0.35); }
.sm-check-item span:last-child { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sm-check-icon { flex: 0 0 auto; width: calc(15px*var(--s)); height: calc(15px*var(--s)); border-radius: 50%; display: flex; align-items: center; justify-content: center; border: 1.5px solid; }
.sm-card.dark  .sm-check-icon { border-color: rgba(255,255,255,0.18); }
.sm-card.light .sm-check-icon { border-color: rgba(0,0,0,0.18); }
.sm-check-icon svg { width: calc(9px*var(--s)); height: calc(9px*var(--s)); stroke: #fff; fill: none; stroke-width: 3; stroke-linecap: round; stroke-linejoin: round; }
.sm-check-icon.checked { background: #059669; border-color: #059669; }
.sm-check-item:not(.checked) { opacity: 0.35; }

/* ── Narrative quote (pretrade thesis / trade notes) ── */
.sm-narrative-lbl { font-size: calc(10px*var(--s)); font-weight: 700; letter-spacing: 0.6px; text-transform: uppercase; opacity: 0.4; padding: calc(8px*var(--s)) calc(22px*var(--s)) calc(4px*var(--s)); }

.sm-notes-row { padding: 0 calc(22px*var(--s)) calc(10px*var(--s)); }
.sm-notes { padding: calc(10px*var(--s)) calc(14px*var(--s)); border-radius: 0; font-size: calc(12px*var(--s)); line-height: 1.6; font-style: italic; border-left: 3px solid #fbbf24; }
.sm-card.dark  .sm-notes { background: rgba(255,255,255,0.03); color: rgba(240,244,255,0.60); }
.sm-card.light .sm-notes { background: rgba(0,0,0,0.03); color: rgba(15,23,42,0.60); border-left-color: #b45309; }

/* ── Share modal controls ── */
.sm-section { display: flex; flex-direction: column; gap: 8px; }
.sm-section-lbl { font-size: 10px; font-weight: 700; letter-spacing: 0.6px; text-transform: uppercase; color: var(--text3); }

.sm-seg { display: flex; border: 1px solid rgba(255,255,255,0.08); border-radius: 0; overflow: hidden; }
[data-theme="light"] .sm-seg { border-color: rgba(0,0,0,0.09); }
.sm-seg-btn { flex: 1; padding: 9px 0; background: rgba(255,255,255,0.03); border: none; border-right: 1px solid rgba(255,255,255,0.08); color: var(--text2); font-family: inherit; font-size: 12px; font-weight: 600; cursor: pointer; transition: background 0.16s, color 0.16s; }
.sm-seg-btn:last-child { border-right: none; }
.sm-seg-btn:hover { background: rgba(255,255,255,0.07); color: var(--text); }
.sm-seg-btn.active { background: rgba(251,191,36,0.14); color: #fbbf24; }
[data-theme="light"] .sm-seg-btn { background: rgba(0,0,0,0.03); border-color: rgba(0,0,0,0.08); }
[data-theme="light"] .sm-seg-btn.active { background: rgba(180,83,9,0.10); color: #b45309; }

.sm-usd-row { display: flex; flex-direction: column; gap: 6px; }
.sm-usd-label { font-size: 11px; color: var(--text3); }
.sm-usd-input-wrap { display: flex; align-items: center; border: 1px solid rgba(255,255,255,0.09); border-radius: 0; overflow: hidden; }
[data-theme="light"] .sm-usd-input-wrap { border-color: rgba(0,0,0,0.10); }
.sm-usd-prefix { padding: 8px 12px; background: rgba(255,255,255,0.04); font-size: 13px; font-weight: 700; color: var(--text3); border-right: 1px solid rgba(255,255,255,0.09); font-family: var(--font-mono, monospace); }
[data-theme="light"] .sm-usd-prefix { background: rgba(0,0,0,0.03); border-color: rgba(0,0,0,0.09); }
.sm-usd-input { flex: 1; padding: 8px 12px; background: transparent; border: none; outline: none; color: var(--text); font-family: var(--font-mono, monospace); font-size: 13px; }

.sm-select-wrap { position: relative; }
.sm-select { width: 100%; appearance: none; padding: 10px 34px 10px 12px; background: rgba(255,255,255,0.04); border: 1px solid rgba(255,255,255,0.09); border-radius: 0; color: var(--text); font-family: inherit; font-size: 13px; font-weight: 600; cursor: pointer; }
[data-theme="light"] .sm-select { background: rgba(0,0,0,0.03); border-color: rgba(0,0,0,0.09); }
/* The dropdown's OPTION list is rendered by the browser itself, outside
   any element .sm-select's own styles apply to, so without this it
   falls back to the browser default — a plain white list with dark
   text — regardless of the card/modal's own dark theme. Setting
   background/color directly on the <option> elements is honored by
   Chrome/Edge/Firefox for the popup list (unlike most other select
   styling), so this keeps the list legible on dark backgrounds instead
   of requiring a hover to reveal each row. */
.sm-select option { background: #12172a; color: var(--text); }
[data-theme="light"] .sm-select option { background: #ffffff; color: var(--text); }
.sm-select-wrap::after { content: ''; position: absolute; right: 13px; top: 50%; width: 7px; height: 7px; border-right: 1.5px solid var(--text3); border-bottom: 1.5px solid var(--text3); transform: translateY(-70%) rotate(45deg); pointer-events: none; }
.sm-dpi-hint { font-size: 10.5px; color: var(--text3); display: flex; align-items: center; gap: 5px; }
.sm-dpi-hint .sm-dpi-good { color: #34d399; font-weight: 700; }

.sm-fmt-row { display: grid; grid-template-columns: repeat(3,1fr); gap: 8px; }
.sm-fmt-btn { display: flex; align-items: center; gap: 12px; padding: 12px 14px; background: rgba(255,255,255,0.04); border: 1px solid rgba(255,255,255,0.08); border-radius: 0; cursor: pointer; text-align: left; color: var(--text); font-family: inherit; transition: background 0.16s, border-color 0.16s, transform 0.12s; }
.sm-fmt-btn:hover { background: rgba(255,255,255,0.08); border-color: rgba(255,255,255,0.15); transform: translateY(-1px); }
.sm-fmt-btn.active { background: rgba(251,191,36,0.10); border-color: rgba(251,191,36,0.40); }
.sm-fmt-icon { font-size: 22px; }
.sm-fmt-name { font-size: 13px; font-weight: 700; }
.sm-fmt-desc { font-size: 11px; color: var(--text3); margin-top: 2px; }
[data-theme="light"] .sm-fmt-btn { background: rgba(0,0,0,0.03); border-color: rgba(0,0,0,0.08); }
[data-theme="light"] .sm-fmt-btn:hover { background: rgba(0,0,0,0.06); }
[data-theme="light"] .sm-fmt-btn.active { background: rgba(180,83,9,0.09); border-color: rgba(180,83,9,0.35); }

.sm-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.sm-btn { position: relative; display: flex; align-items: center; justify-content: center; padding: 14px 18px; border: none; border-radius: 0; font-family: inherit; font-size: 14px; font-weight: 700; cursor: pointer; overflow: hidden; transition: opacity 0.15s, transform 0.15s, box-shadow 0.15s; letter-spacing: -0.1px; }
.sm-btn:disabled { opacity: 0.55; cursor: not-allowed; transform: none !important; }
.sm-btn:not(:disabled):hover { transform: translateY(-2px); }
.sm-btn:not(:disabled):active { transform: translateY(0); }
.sm-btn-primary { background: linear-gradient(135deg,#fbbf24 0%,#d97706 100%); color: #07090f; box-shadow: 0 4px 20px rgba(251,191,36,0.30); }
.sm-btn-primary:not(:disabled):hover { box-shadow: 0 8px 28px rgba(251,191,36,0.45); }
.sm-btn-ghost { background: var(--glass-2); border: 1px solid var(--glass-border-h); color: var(--text); }
.sm-btn-ghost:not(:disabled):hover { background: var(--glass-3, rgba(255,255,255,0.10)); }
[data-theme="light"] .sm-btn-ghost { background: rgba(0,0,0,0.05); border-color: rgba(0,0,0,0.12); }
[data-theme="light"] .sm-btn-ghost:hover { background: rgba(0,0,0,0.09); }

.sm-spinner { display: none; position: absolute; width: 16px; height: 16px; border: 2px solid rgba(0,0,0,0.2); border-top-color: #07090f; border-radius: 50%; animation: sm-spin 0.6s linear infinite; }
.sm-spinner-light { border-color: rgba(255,255,255,0.15); border-top-color: rgba(255,255,255,0.9); }
.sm-spinner.active { display: block; }
@keyframes sm-spin { to { transform: rotate(360deg); } }

@media (max-width: 520px){
  /* On mobile, dock the modal to a bottom-sheet-style layout with a fixed
     viewport-relative cap instead of relying on centered auto-height —
     this is what stopped it from jumping/glitching when the browser's
     address bar collapses (compact view) and the visible viewport height
     changes mid-interaction. */
  #share-modal-overlay { padding: 0; align-items: flex-end; }
  .sm-modal {
    max-height: 92vh;
    max-height: 92dvh;
    border-radius: 14px 14px 0 0;
    margin: 0;
  }
  .sm-body { padding: 12px; gap: 12px; }
  .view-stats-grid { grid-template-columns: 1fr 1fr; gap: 8px; }
  .star-editor-row { gap: 6px; }
  .star-opt { min-width: 56px; padding: 8px 10px; }
  .sm-fmt-desc { display: none; }
  .sm-fmt-btn { padding: 10px 8px; justify-content: center; text-align: center; flex-direction: column; gap: 6px; }
}
@media (max-width: 380px){
  .sm-actions { grid-template-columns: 1fr; }
  .sm-fmt-row  { grid-template-columns: 1fr; }
  .view-stats-grid { grid-template-columns: 1fr; }
}

/* ══════════════════════════════════════════════════════
   EMPTY STATES — new user / no data
   ══════════════════════════════════════════════════════ */
.empty-state-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 36px 24px;
  background: var(--glass-1);
  border: 1px dashed var(--glass-border);
  border-radius: var(--r-lg, 14px);
  gap: 8px;
}
.empty-icon  { font-size: 32px; line-height: 1; margin-bottom: 4px; }
.empty-title { font-size: 15px; font-weight: 700; color: var(--text); }
.empty-sub   { font-size: 12px; color: var(--text3); max-width: 280px; line-height: 1.6; }

/* Quarter page empty state */
.q-empty-state {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 56px 24px;
  background: var(--glass-1);
  border: 1px dashed var(--glass-border);
  border-radius: var(--r-lg, 14px);
  gap: 10px;
  margin-top: 8px;
}
.q-empty-icon  { font-size: 44px; line-height: 1; margin-bottom: 4px; }
.q-empty-title { font-size: 18px; font-weight: 800; color: var(--text); letter-spacing: -0.3px; }
.q-empty-sub   { font-size: 13px; color: var(--text3); max-width: 320px; line-height: 1.65; margin-bottom: 8px; }
.q-empty-btn {
  padding: 11px 24px;
  background: linear-gradient(135deg, #fbbf24, #d97706);
  color: #07090f;
  border: none;
  border-radius: var(--r-sm, 8px);
  font-size: 14px;
  font-weight: 700;
  cursor: pointer;
  font-family: inherit;
  box-shadow: 0 4px 16px rgba(251,191,36,0.28);
  transition: transform 0.15s, box-shadow 0.15s;
}
.q-empty-btn:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 24px rgba(251,191,36,0.40);
}
[data-theme="light"] .empty-state-card,
[data-theme="light"] .q-empty-state {
  background: rgba(0,0,0,0.02);
  border-color: rgba(0,0,0,0.10);
}

/* ══════════════════════════════════════════════════════
   NEW TRADE MODAL — custom input fields (strategy / TF)
   ══════════════════════════════════════════════════════ */
#m-strat-custom,
#m-tf-custom {
  border-style: dashed;
  border-color: rgba(251,191,36,0.38);
  background: rgba(251,191,36,0.05);
  font-size: 13px;
  transition: border-color 0.18s, background 0.18s;
}
#m-strat-custom:focus,
#m-tf-custom:focus {
  border-color: rgba(251,191,36,0.65);
  background: rgba(251,191,36,0.09);
  outline: none;
}
[data-theme="light"] #m-strat-custom,
[data-theme="light"] #m-tf-custom {
  border-color: rgba(180,83,9,0.32);
  background: rgba(180,83,9,0.04);
}

/* ══ Chart Upload Progress Animation ══ */
.chart-upload-progress {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 8px;
  width: 100%;
  height: 100%;
  min-height: 90px;
  padding: 12px;
  background: rgba(96,165,250,0.06);
  border-radius: 6px;
}
.cup-spinner {
  width: 28px;
  height: 28px;
  border: 3px solid rgba(96,165,250,0.2);
  border-top-color: var(--blue, #60a5fa);
  border-radius: 50%;
  animation: cup-spin 0.7s linear infinite;
}
@keyframes cup-spin {
  to { transform: rotate(360deg); }
}
.cup-label {
  font-size: 11px;
  color: var(--blue, #60a5fa);
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
.cup-bar-wrap {
  width: 80%;
  max-width: 120px;
  height: 4px;
  background: rgba(96,165,250,0.15);
  border-radius: 99px;
  overflow: hidden;
}
.cup-bar {
  height: 100%;
  width: 0%;
  background: linear-gradient(90deg, var(--blue, #60a5fa), #34d399);
  border-radius: 99px;
  transition: width 0.12s ease;
}

/* ════════════════════════════════════════════════════════
   TOPBAR — user email + avatar
   ════════════════════════════════════════════════════════ */
.topbar-user-email { display: none !important; }

.topbar-avatar {
  width:32px; height:32px; border-radius:50%;
  background:linear-gradient(135deg,rgba(96,165,250,0.28),rgba(52,211,153,0.20));
  border:1.5px solid rgba(96,165,250,0.35);
  color:var(--blue); font-size:11px; font-weight:700; letter-spacing:.5px;
  cursor:pointer; display:flex; align-items:center; justify-content:center;
  transition:var(--t-fast); flex-shrink:0; overflow:hidden; padding:0;
}
.topbar-avatar:hover {
  border-color:rgba(96,165,250,0.65);
  box-shadow:0 0 0 3px rgba(96,165,250,0.12);
  transform:scale(1.07);
}
.topbar-avatar img { width:100%; height:100%; object-fit:cover; border-radius:50%; }
@media (max-width: 768px){
  .topbar-share-btn { display:none !important; }
  .topbar-avatar { width:30px; height:30px; font-size:10px; }
}

/* ════════════════════════════════════════════════════════
   ACCOUNTS — status badge + archived divider + type badge
   ════════════════════════════════════════════════════════ */
.acc-status.archived {
  background:rgba(107,114,128,0.15); color:var(--text3);
  border:1px solid rgba(107,114,128,0.25);
}
.acc-card-archived {
  opacity:0.6; cursor:default !important;
  border-style:dashed !important;
}
.acc-archived-divider {
  grid-column:1/-1;
  display:flex; align-items:center; gap:10px;
  margin:8px 0 4px;
  font-size:10px; font-weight:700; text-transform:uppercase;
  letter-spacing:.08em; color:var(--text3);
}
.acc-archived-divider::before,
.acc-archived-divider::after {
  content:''; flex:1; height:1px; background:var(--border2);
}
.acc-restore-btn {
  margin-top:10px; width:100%; padding:6px;
  background:transparent; border:1px solid var(--glass-border-h);
  border-radius:var(--r-sm); color:var(--text2); font-size:11px;
  cursor:pointer; transition:var(--t-fast); font-family:var(--font-body);
}
.acc-restore-btn:hover { background:var(--glass-2); color:var(--text); }
.acc-type-badge {
  display:inline-block; margin-left:6px;
  padding:1px 6px; border-radius:var(--r-full);
  font-size:9px; font-weight:700; letter-spacing:.04em; text-transform:uppercase;
  background:rgba(96,165,250,0.12); color:var(--blue);
  border:1px solid rgba(96,165,250,0.2);
}

/* ── Manage Accounts modal — tabs ── */
.acc-mgr-tabs {
  display:flex; gap:4px; margin-bottom:12px;
  border-bottom:1px solid var(--glass-border); padding-bottom:8px;
}
.acc-mgr-tab {
  padding:5px 14px; border-radius:var(--r-sm);
  border:1px solid transparent; background:transparent;
  color:var(--text2); font-size:12px; font-weight:500;
  cursor:pointer; transition:var(--t-fast); font-family:var(--font-body);
}
.acc-mgr-tab:hover { color:var(--text); background:var(--glass-1); }
.acc-mgr-tab.active {
  background:var(--glass-2); color:var(--text);
  border-color:var(--glass-border-h);
}
.acc-mgr-item-left {
  display:flex; align-items:center; gap:8px; flex:1; min-width:0;
}
.acc-mgr-type-badge {
  padding:1px 7px; border-radius:var(--r-full);
  font-size:9px; font-weight:700; text-transform:uppercase; letter-spacing:.04em;
  background:rgba(96,165,250,0.12); color:var(--blue);
  border:1px solid rgba(96,165,250,0.2); white-space:nowrap; flex-shrink:0;
}
.acc-mgr-btn.archive {
  background:rgba(251,191,36,0.1); border-color:rgba(251,191,36,0.25); color:#fbbf24;
}
.acc-mgr-btn.restore {
  background:rgba(52,211,153,0.1); border-color:rgba(52,211,153,0.25); color:var(--green);
}
.acc-mgr-empty {
  padding:16px; text-align:center; color:var(--text3);
  font-size:12px; font-style:italic;
}

/* ════════════════════════════════════════════════════════
   PROFILE PAGE
   ════════════════════════════════════════════════════════ */
.profile-hero {
  position:relative; border-radius:var(--r-xl); overflow:hidden;
  margin-bottom:20px; border:1px solid var(--glass-border);
}
.profile-hero-bg {
  position:absolute; inset:0;
  background:linear-gradient(135deg,rgba(96,165,250,0.15) 0%,rgba(52,211,153,0.08) 40%,rgba(167,139,250,0.12) 100%);
  backdrop-filter:var(--blur-md);
}
.profile-hero-content {
  position:relative; z-index:1;
  display:flex; align-items:center; gap:20px; padding:28px;
}
.profile-avatar-wrap { position:relative; flex-shrink:0; }
.profile-avatar-ring {
  width:80px; height:80px; border-radius:50%; padding:3px;
  background:linear-gradient(135deg,var(--blue),var(--teal));
}
.profile-avatar {
  width:100%; height:100%; border-radius:50%;
  background:var(--bg2); border:2px solid var(--bg);
  display:flex; align-items:center; justify-content:center;
  font-size:22px; font-weight:700; color:var(--blue); overflow:hidden;
}
.profile-avatar img { width:100%; height:100%; object-fit:cover; border-radius:50%; }
.profile-avatar-edit-btn {
  position:absolute; bottom:-2px; right:-2px;
  width:24px; height:24px; border-radius:50%;
  background:var(--bg3); border:1.5px solid var(--glass-border-h);
  font-size:10px; cursor:pointer;
  display:flex; align-items:center; justify-content:center;
  color:var(--text2); transition:var(--t-fast);
}
.profile-avatar-edit-btn:hover { background:var(--blue); color:#fff; border-color:var(--blue); }
.profile-hero-info { flex:1; min-width:0; }
.profile-hero-name { font-size:22px; font-weight:700; color:var(--text); line-height:1.2; margin-bottom:4px; }
.profile-hero-email { font-size:13px; color:var(--text2); margin-bottom:10px; }
.profile-hero-badges { display:flex; gap:6px; flex-wrap:wrap; }
.profile-badge { padding:3px 10px; border-radius:var(--r-full); font-size:11px; font-weight:600; letter-spacing:.3px; }
.profile-badge.blue { background:var(--blue-dim); color:var(--blue); border:1px solid rgba(96,165,250,0.2); }
.profile-badge.green { background:var(--green-dim); color:var(--green); border:1px solid rgba(52,211,153,0.2); }
.profile-tabs {
  display:flex; gap:4px; margin-bottom:20px; padding:4px;
  background:var(--glass-1); border:1px solid var(--glass-border);
  border-radius:var(--r-lg); width:fit-content; flex-wrap:wrap;
}
.profile-tab {
  padding:7px 18px; border-radius:calc(var(--r-lg) - 2px);
  border:none; background:transparent; color:var(--text2);
  font-size:13px; font-weight:500; cursor:pointer;
  transition:var(--t-fast); font-family:var(--font-body);
}
.profile-tab:hover { color:var(--text); background:var(--glass-2); }
.profile-tab.active {
  background:var(--glass-3); color:var(--text);
  box-shadow:var(--shadow-xs); border:1px solid var(--glass-border-h);
}
.profile-section { display:none; }
.profile-section.active { display:block; }
.profile-card {
  background:var(--glass-1); border:1px solid var(--glass-border);
  border-radius:var(--r-xl); padding:22px 24px; margin-bottom:16px;
  transition:border-color 0.2s;
}
.profile-card:hover { border-color:var(--glass-border-h); }
.profile-card-head {
  display:flex; align-items:flex-start; gap:14px; margin-bottom:20px; flex-wrap:wrap;
}
.profile-card-icon { font-size:20px; flex-shrink:0; margin-top:1px; }
.profile-card-title { font-size:15px; font-weight:600; color:var(--text); margin-bottom:3px; }
.profile-card-sub { font-size:12px; color:var(--text3); }
.profile-save-btn { margin-left:auto; white-space:nowrap; flex-shrink:0; }
.profile-form-grid { display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.profile-field { display:flex; flex-direction:column; gap:6px; }
.profile-field.full { grid-column:1/-1; }
.profile-label { font-size:11px; font-weight:600; color:var(--text2); letter-spacing:.5px; text-transform:uppercase; }
.profile-input,.profile-select,.profile-textarea {
  background:var(--glass-2); border:1px solid var(--glass-border);
  border-radius:var(--r-md); color:var(--text);
  font-family:var(--font-body); font-size:13px; padding:9px 12px;
  transition:var(--t-fast); outline:none; width:100%;
}
.profile-input:focus,.profile-select:focus,.profile-textarea:focus {
  border-color:var(--border-focus); background:var(--glass-3);
  box-shadow:0 0 0 3px rgba(96,165,250,0.08);
}
/* Native <option> popups render on a plain white background in most
   browsers regardless of page theme/color-scheme, so a light theme
   text color (var(--text)) becomes near-invisible until the browser's
   own hover/selection highlight kicks in. Force a readable dark-on-light
   pairing for the options themselves, independent of theme. */
.profile-select option, .form-select option {
  color:#0f172a;
  background:#ffffff;
}
.profile-textarea { resize:vertical; min-height:72px; }
.profile-toggle-row {
  display:flex; align-items:center; justify-content:space-between;
  padding:14px 0; border-bottom:1px solid var(--border2); gap:16px;
}
.profile-toggle-row:last-child { border-bottom:none; }
.profile-toggle-label { font-size:13px; font-weight:500; color:var(--text); }
.profile-toggle-sub { font-size:11px; color:var(--text3); margin-top:2px; }
.profile-toggle-switch { position:relative; width:40px; height:22px; flex-shrink:0; cursor:pointer; }
.profile-toggle-switch input { opacity:0; width:0; height:0; position:absolute; }
.profile-toggle-track {
  position:absolute; inset:0;
  background:var(--glass-3); border:1px solid var(--glass-border-h);
  border-radius:var(--r-full); transition:var(--t-med);
}
.profile-toggle-track::after {
  content:''; position:absolute; left:3px; top:50%; transform:translateY(-50%);
  width:14px; height:14px; border-radius:50%;
  background:var(--text3); transition:var(--t-med);
}
.profile-toggle-switch input:checked + .profile-toggle-track { background:rgba(52,211,153,0.20); border-color:rgba(52,211,153,0.35); }
.profile-toggle-switch input:checked + .profile-toggle-track::after { left:calc(100% - 17px); background:var(--green); }
.billing-plans { display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:14px; }
.billing-plan {
  position:relative; padding:20px; border-radius:var(--r-lg);
  border:1.5px solid var(--glass-border); background:var(--glass-1); transition:var(--t-med);
}
.billing-plan.active { border-color:rgba(96,165,250,0.35); background:var(--blue-dim); }
.billing-plan:hover { border-color:var(--glass-border-h); transform:translateY(-1px); }
.billing-plan-name { font-size:16px; font-weight:700; color:var(--text); margin-bottom:4px; }
.billing-plan-price { font-size:26px; font-weight:800; color:var(--text); margin-bottom:14px; }
.billing-plan-price span { font-size:13px; font-weight:400; color:var(--text2); }
.billing-plan-features { list-style:none; display:flex; flex-direction:column; gap:8px; font-size:12px; color:var(--text2); margin-bottom:4px; }
.billing-plan-current-badge { margin-top:12px; text-align:center; font-size:11px; color:var(--blue); font-weight:600; }
.billing-plan-badge {
  position:absolute; top:-10px; left:50%; transform:translateX(-50%);
  background:linear-gradient(90deg,var(--blue),var(--teal));
  color:var(--bg); font-size:10px; font-weight:700;
  padding:2px 10px; border-radius:var(--r-full); white-space:nowrap;
}
.billing-empty-state { text-align:center; padding:28px 0; }
.profile-data-actions { display:flex; flex-direction:column; gap:8px; }
.profile-data-btn {
  display:flex; align-items:center; gap:14px; padding:14px 16px;
  background:var(--glass-2); border:1px solid var(--glass-border);
  border-radius:var(--r-md); color:var(--text);
  font-size:13px; font-weight:500; cursor:pointer; text-align:left;
  transition:var(--t-fast); font-family:var(--font-body);
}
.profile-data-btn:hover { background:var(--glass-3); border-color:var(--glass-border-h); }
.profile-data-btn.danger { color:var(--red); border-color:rgba(248,113,113,0.18); }
.profile-data-btn.danger:hover { background:var(--red-dim); border-color:rgba(248,113,113,0.35); }
.profile-data-btn span { font-size:18px; flex-shrink:0; }
.profile-data-btn-sub { font-size:11px; color:var(--text3); margin-top:2px; }
.profile-session-row {
  display:flex; align-items:center; gap:12px;
  padding:12px 0; border-bottom:1px solid var(--border2);
}
.profile-session-row:last-child { border-bottom:none; }
.profile-session-icon { font-size:20px; flex-shrink:0; }
.profile-session-name { font-size:13px; font-weight:500; color:var(--text); }
.profile-session-meta { font-size:11px; color:var(--text3); margin-top:2px; }
.danger-zone { border-color:rgba(248,113,113,0.15) !important; }
.danger-zone:hover { border-color:rgba(248,113,113,0.30) !important; }

/* Profile mobile */
@media (max-width: 768px){
  .profile-hero-content { flex-direction:column; align-items:flex-start; padding:18px 14px; gap:14px; }
  .profile-tabs { width:100%; }
  .profile-tab { flex:1; min-width:60px; text-align:center; padding:7px 6px; font-size:11px; }
  .profile-form-grid { grid-template-columns:1fr; }
  .profile-field.full { grid-column:1; }
  .profile-card { padding:16px 14px; }
  .profile-save-btn { width:100%; margin-left:0; }
  .billing-plans { grid-template-columns:1fr; }
  .profile-toggle-row { gap:10px; }
}

/* ── Avatar dropdown ──────────────────────────────────────── */
.avatar-dropdown {
  position: absolute;
  top: calc(100% + 8px);
  right: 0;
  width: 210px;
  background: var(--bg2);
  border: 1px solid var(--glass-border);
  border-radius: 12px;
  box-shadow: 0 16px 48px rgba(0,0,0,0.45);
  z-index: 9999;
  overflow: hidden;
  opacity: 0;
  transform: translateY(-6px) scale(0.97);
  pointer-events: none;
  transition: opacity 0.15s ease, transform 0.15s cubic-bezier(0.22,1,0.36,1);
}
.avatar-dropdown.open {
  opacity: 1;
  transform: translateY(0) scale(1);
  pointer-events: all;
}
.avd-header { padding: 12px 14px 10px; }
.avd-name {
  font-size: 13px; font-weight: 700; color: var(--text);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.avd-email {
  font-size: 11px; color: var(--text3); margin-top: 2px;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  font-family: var(--font-mono);
}
.avd-sep { height: 1px; background: var(--glass-border); }
.avd-item {
  display: flex; align-items: center; gap: 9px;
  width: 100%; padding: 10px 14px;
  background: transparent; border: none;
  font-size: 13px; font-weight: 500; color: var(--text2);
  cursor: pointer; font-family: var(--font-body);
  transition: background 0.12s, color 0.12s;
  text-align: left;
}
.avd-item:hover { background: var(--glass-1); color: var(--text); }
.avd-item.danger { color: #f87171; }
.avd-item.danger:hover { background: rgba(248,113,113,0.10); }
[data-theme="light"] .avatar-dropdown {
  background: #fff;
  box-shadow: 0 12px 40px rgba(0,0,0,0.18);
}

/* ── Sidebar New Trade wrapper (mobile only) ── */
.sb-new-trade-wrap{
  display:none;
  padding:10px 8px 4px;
}
.sb-new-trade-btn{
  width:100%;
  padding:11px 16px;
  font-size:13px;
  font-weight:700;
  border-radius:var(--r-md);
  text-align:center;
  justify-content:center;
  display:flex;
  align-items:center;
  gap:6px;
}
@media (max-width: 768px){
  .sb-new-trade-wrap{ display:block }
}

/* ── Account manager mobile responsive ───────────────────── */
@media (max-width: 480px){
  .acc-manager-overlay { padding: 10px; }
  .acc-manager-modal { border-radius: 12px; }
  .acc-mgr-add-row { flex-wrap: wrap; }
  .acc-mgr-add-row .acc-mgr-input { min-width: 120px; }
  .acc-mgr-add-btn { width: 100%; justify-content: center; }
  .acc-mgr-name { font-size: 12px; max-width: 120px; }
  .acc-mgr-item { gap: 6px; padding: 8px 10px; }
}

/* ══ Pair row drilldown hover ══ */
.pair-row-clickable:hover td {
  background: rgba(96,165,250,0.06) !important;
  transition: background 0.15s;
}
.pair-row-clickable td:first-child {
  position: relative;
}
.pair-row-clickable td:first-child::after {
  content: '›';
  color: var(--blue);
  opacity: 0;
  margin-left: 6px;
  font-size: 14px;
  transition: opacity 0.15s;
}
.pair-row-clickable:hover td:first-child::after {
  opacity: 0.7;
}

/* ══ Manage Accounts — Dark mode redesign ══
   (background/blur now handled in the base .acc-manager-modal rule
   for a consistent frosted-glass look) */

/* Deleted tab styling */
.acc-mgr-tab-del { color: var(--red) !important; opacity: .75; }
.acc-mgr-tab-del.active { opacity: 1; border-bottom-color: var(--red) !important; color: var(--red) !important; }

/* Deleted item strikethrough row */
.acc-mgr-item-deleted {
  opacity: 0.7;
  border-color: rgba(248,113,113,0.15) !important;
  background: rgba(248,113,113,0.04) !important;
}
.acc-mgr-item-deleted:hover {
  background: rgba(248,113,113,0.08) !important;
  opacity: 1;
}

/* Archived item muted */
.acc-mgr-item-archived {
  opacity: 0.75;
  border-color: rgba(148,163,184,0.15) !important;
  background: rgba(148,163,184,0.04) !important;
}
.acc-mgr-item-archived:hover {
  opacity: 1;
  background: rgba(148,163,184,0.08) !important;
}

/* Empty deleted state */
.acc-mgr-empty-deleted {
  text-align: center;
  padding: 24px 16px;
  color: var(--text3);
  font-size: 12px;
  line-height: 1.8;
}

/* Dark mode tab fixes */
.acc-mgr-tabs {
  background: transparent !important;
  border-bottom: 1px solid var(--glass-border) !important;
  margin-bottom: 8px;
  padding-bottom: 0;
}
.acc-mgr-tab {
  background: transparent !important;
  border: none !important;
  border-bottom: 2px solid transparent !important;
  border-radius: 0 !important;
  padding: 8px 14px !important;
  font-size: 12px !important;
  font-weight: 600 !important;
  color: var(--text3) !important;
  cursor: pointer;
  transition: color 0.15s, border-color 0.15s;
  font-family: inherit;
  margin-bottom: -1px;
}
.acc-mgr-tab:hover { color: var(--text) !important; background: transparent !important; }
.acc-mgr-tab.active {
  color: var(--text) !important;
  border-bottom-color: #fbbf24 !important;
  background: transparent !important;
}

/* Dark mode: fix select dropdown white flash */
.acc-mgr-input option,
select.acc-mgr-input option {
  background: var(--bg2, #1a2035);
  color: var(--text, #e2e8f0);
}






/* ══ Pair drilldown trade rows ══ */
.pair-drill-row { cursor: pointer; transition: background 0.12s; }
.pair-drill-row:hover td { background: rgba(96,165,250,0.07) !important; }

/* ══════════════════════════════════════════════════════
   MT5 INTEGRATION — MetaTrader 5 Connection UI
   ══════════════════════════════════════════════════════ */

/* Overlay */
.mt5-overlay {
  position: fixed; inset: 0; z-index: 900;
  background: rgba(8,11,18,0.82);
  backdrop-filter: var(--blur-sm);
  opacity: 0; pointer-events: none;
  transition: opacity 0.22s ease;
}
.mt5-overlay.open { opacity: 1; pointer-events: all; }

/* Modal */
.mt5-modal {
  position: fixed; top: 50%; left: 50%; z-index: 901;
  transform: translate(-50%, -50%) scale(0.96);
  width: min(540px, 96vw);
  background: var(--bg2);
  border: 1px solid var(--glass-border);
  border-radius: var(--r-xl);
  box-shadow: var(--shadow-xl), 0 0 0 1px rgba(255,255,255,0.04) inset;
  opacity: 0; pointer-events: none;
  transition: opacity 0.22s ease, transform 0.22s cubic-bezier(0.34,1.56,0.64,1);
  max-height: 90vh; overflow-y: auto;
}
.mt5-modal.open { opacity: 1; pointer-events: all; transform: translate(-50%,-50%) scale(1); }

/* Modal head */
.mt5-modal-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 16px 20px 14px;
  border-bottom: 1px solid var(--glass-border);
  background: linear-gradient(135deg, rgba(96,165,250,0.06), rgba(167,139,250,0.04));
  border-radius: var(--r-xl) var(--r-xl) 0 0;
}
.mt5-modal-logo { display: flex; align-items: center; gap: 10px; }
.mt5-logo-icon {
  width: 34px; height: 34px; border-radius: var(--r-md);
  background: linear-gradient(135deg, #3b82f6, #8b5cf6);
  display: flex; align-items: center; justify-content: center;
  font-size: 16px; font-weight: 900; color: #fff;
  box-shadow: 0 4px 14px rgba(59,130,246,0.40);
  flex-shrink: 0;
}
.mt5-logo-text {
  font-family: var(--font-head); font-size: 15px; font-weight: 800;
  color: var(--text); letter-spacing: -0.3px;
}
.mt5-logo-badge {
  font-size: 10px; font-weight: 700; padding: 2px 8px;
  border-radius: var(--r-full);
  background: var(--blue-dim); color: var(--blue);
  border: 1px solid rgba(96,165,250,0.25);
}
.mt5-modal-body { padding: 20px; }

/* Steps indicator */
.mt5-steps {
  display: flex; align-items: center; gap: 0;
  margin-bottom: 22px; position: relative;
}
.mt5-step {
  display: flex; align-items: center; gap: 7px;
  font-size: 11px; font-weight: 600;
  color: var(--text3); transition: color 0.2s;
  flex: 1; position: relative;
}
.mt5-step:not(:last-child)::after {
  content: ''; position: absolute;
  top: 13px; left: calc(26px + 7px); right: -7px;
  height: 1px;
  background: var(--glass-border);
  transition: background 0.3s;
}
.mt5-step.done:not(:last-child)::after { background: var(--blue); }
.mt5-step-num {
  width: 26px; height: 26px; border-radius: 50%; flex-shrink: 0;
  border: 2px solid var(--glass-border);
  display: flex; align-items: center; justify-content: center;
  font-size: 11px; font-weight: 700;
  transition: all 0.2s;
}
.mt5-step.active .mt5-step-num {
  border-color: var(--blue); background: var(--blue-dim); color: var(--blue);
}
.mt5-step.done .mt5-step-num {
  border-color: var(--green); background: var(--green-dim); color: var(--green);
}
.mt5-step.active .mt5-step-label,
.mt5-step.done .mt5-step-label { color: var(--text2); }
.mt5-step-label { font-size: 10px; }

/* Form fields */
.mt5-field { margin-bottom: 14px; }
.mt5-label {
  display: block; font-size: 10px; font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.8px;
  color: var(--text3); margin-bottom: 6px;
}
.mt5-label span { font-weight: 400; text-transform: none; letter-spacing: 0; margin-left: 4px; color: var(--text3); opacity: 0.7; }
.mt5-input, .mt5-select {
  width: 100%; padding: 10px 13px;
  background: var(--glass-1); border: 1px solid var(--glass-border);
  border-radius: var(--r-sm); color: var(--text);
  font-size: 13px; font-family: var(--font-body);
  transition: border-color 0.15s, background 0.15s, box-shadow 0.15s;
  outline: none;
}
.mt5-input:focus, .mt5-select:focus {
  border-color: rgba(96,165,250,0.5);
  background: var(--glass-2);
  box-shadow: 0 0 0 3px rgba(96,165,250,0.10);
}
.mt5-input::placeholder { color: var(--text3); }
.mt5-input.mono { font-family: var(--font-mono); letter-spacing: 0.5px; }

/* Two-col grid */
.mt5-grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }

/* Info alert */
.mt5-info {
  background: var(--blue-dim); border: 1px solid rgba(96,165,250,0.20);
  border-radius: var(--r-sm); padding: 11px 13px;
  font-size: 12px; color: var(--text2); line-height: 1.55;
  display: flex; gap: 10px; align-items: flex-start;
  margin-bottom: 16px;
}
.mt5-info-icon { font-size: 15px; flex-shrink: 0; margin-top: 1px; }
.mt5-info strong { color: var(--blue); font-weight: 700; }

/* Warning alert */
.mt5-warn {
  background: rgba(251,191,36,0.08); border: 1px solid rgba(251,191,36,0.22);
  border-radius: var(--r-sm); padding: 11px 13px;
  font-size: 12px; color: var(--text2); line-height: 1.55;
  display: flex; gap: 10px; align-items: flex-start;
  margin-bottom: 16px;
}
.mt5-warn-icon { font-size: 15px; flex-shrink: 0; margin-top: 1px; }

/* EA code block */
.mt5-code-block {
  background: rgba(8,11,18,0.7); border: 1px solid var(--glass-border);
  border-radius: var(--r-sm); padding: 12px 14px;
  margin-bottom: 14px; position: relative;
}
.mt5-code-block pre {
  font-family: var(--font-mono); font-size: 11px;
  color: var(--green); line-height: 1.65; overflow-x: auto;
  white-space: pre-wrap; word-break: break-all;
}
.mt5-copy-btn {
  position: absolute; top: 8px; right: 8px;
  padding: 3px 9px; font-size: 10px; font-weight: 600;
  background: var(--glass-2); border: 1px solid var(--glass-border);
  border-radius: var(--r-sm); color: var(--text2);
  cursor: pointer; transition: all 0.15s;
  font-family: var(--font-body);
}
.mt5-copy-btn:hover { background: var(--glass-3); color: var(--text); }

/* Action row */
.mt5-actions {
  display: flex; gap: 10px; justify-content: flex-end;
  margin-top: 20px; padding-top: 16px;
  border-top: 1px solid var(--glass-border);
}
.mt5-btn-cancel {
  padding: 9px 20px; border-radius: var(--r-sm);
  background: var(--glass-1); border: 1px solid var(--glass-border);
  color: var(--text2); font-size: 13px; font-weight: 600;
  cursor: pointer; font-family: var(--font-body);
  transition: all 0.15s;
}
.mt5-btn-cancel:hover { background: var(--glass-2); color: var(--text); }
.mt5-btn-primary {
  padding: 9px 22px; border-radius: var(--r-sm);
  background: linear-gradient(135deg, rgba(59,130,246,0.85), rgba(139,92,246,0.85));
  border: 1px solid rgba(96,165,250,0.35);
  color: #fff; font-size: 13px; font-weight: 700;
  cursor: pointer; font-family: var(--font-body);
  transition: all 0.15s; letter-spacing: 0.1px;
  box-shadow: 0 4px 14px rgba(59,130,246,0.30);
}
.mt5-btn-primary:hover { box-shadow: 0 4px 22px rgba(59,130,246,0.50); filter: brightness(1.1); }
.mt5-btn-primary:disabled { opacity: 0.45; cursor: not-allowed; filter: none; }
.mt5-btn-danger {
  padding: 9px 22px; border-radius: var(--r-sm);
  background: rgba(248,113,113,0.10); border: 1px solid rgba(248,113,113,0.30);
  color: var(--red); font-size: 13px; font-weight: 700;
  cursor: pointer; font-family: var(--font-body);
  transition: all 0.15s;
}
.mt5-btn-danger:hover { background: rgba(248,113,113,0.20); }

/* Sync status badge on account cards */
.mt5-sync-badge {
  display: inline-flex; align-items: center; gap: 4px;
  font-size: 9px; font-weight: 700; padding: 2px 7px;
  border-radius: var(--r-full); margin-left: 6px;
  vertical-align: middle;
}
.mt5-sync-badge.connected {
  background: rgba(52,211,153,0.13); color: var(--green);
  border: 1px solid rgba(52,211,153,0.25);
}
.mt5-sync-badge.pending {
  background: rgba(251,191,36,0.10); color: var(--gold);
  border: 1px solid rgba(251,191,36,0.25);
}
.mt5-sync-badge.error {
  background: rgba(248,113,113,0.10); color: var(--red);
  border: 1px solid rgba(248,113,113,0.25);
}
.mt5-sync-badge.syncing {
  background: rgba(96,165,250,0.10); color: var(--blue);
  border: 1px solid rgba(96,165,250,0.25);
}
.mt5-sync-dot {
  width: 5px; height: 5px; border-radius: 50%;
  background: currentColor; flex-shrink: 0;
}
.mt5-sync-badge.connected .mt5-sync-dot { animation: mt5-pulse 2.2s ease-in-out infinite; }
.mt5-sync-badge.syncing .mt5-sync-dot { animation: mt5-pulse 0.8s ease-in-out infinite; }
@keyframes mt5-pulse { 0%,100%{opacity:1} 50%{opacity:0.3} }

/* MT5 button on account card / manage modal */
.mt5-connect-btn {
  width: 100%; margin-top: 10px; padding: 8px 12px;
  background: linear-gradient(135deg, rgba(59,130,246,0.10), rgba(139,92,246,0.08));
  border: 1px solid rgba(96,165,250,0.25);
  border-radius: var(--r-sm); color: var(--blue);
  font-size: 11px; font-weight: 700; font-family: var(--font-body);
  cursor: pointer; transition: all 0.15s;
  display: flex; align-items: center; justify-content: center; gap: 6px;
  letter-spacing: 0.2px;
}
.mt5-connect-btn:hover {
  background: linear-gradient(135deg, rgba(59,130,246,0.18), rgba(139,92,246,0.14));
  border-color: rgba(96,165,250,0.45);
}
.mt5-connect-btn.connected {
  background: rgba(52,211,153,0.08); border-color: rgba(52,211,153,0.25);
  color: var(--green);
}
.mt5-connect-btn.connected:hover {
  background: rgba(52,211,153,0.14); border-color: rgba(52,211,153,0.40);
}

/* Sync row in card */
.acc-mt5-row {
  font-size: 11px; color: var(--text3);
  margin-top: 8px; padding-top: 8px;
  border-top: 1px solid var(--glass-border);
  display: flex; align-items: center; justify-content: space-between;
}
.acc-mt5-last { font-family: var(--font-mono); font-size: 10px; }

/* Manage modal — MT5 row in account list item */
.acc-mgr-mt5-indicator {
  display: inline-flex; align-items: center; gap: 4px;
  font-size: 9px; font-weight: 700; padding: 2px 7px;
  border-radius: var(--r-full); margin-left: 6px;
  background: rgba(96,165,250,0.10); color: var(--blue);
  border: 1px solid rgba(96,165,250,0.22);
}
/* Sync spinner */
.mt5-spinner {
  width: 14px; height: 14px; border-radius: 50%;
  border: 2px solid rgba(96,165,250,0.20);
  border-top-color: var(--blue);
  animation: mt5-spin 0.75s linear infinite;
  display: inline-block;
}
@keyframes mt5-spin { to { transform: rotate(360deg); } }

/* Step 2 — EA instructions */
.mt5-ea-steps { list-style: none; counter-reset: ea-step; padding: 0; margin: 0 0 14px; }
.mt5-ea-steps li {
  counter-increment: ea-step;
  display: flex; gap: 10px; align-items: flex-start;
  font-size: 12px; color: var(--text2); line-height: 1.55;
  padding: 5px 0; border-bottom: 1px solid var(--glass-border);
}
.mt5-ea-steps li:last-child { border-bottom: none; }
.mt5-ea-steps li::before {
  content: counter(ea-step);
  flex-shrink: 0; width: 20px; height: 20px; border-radius: 50%;
  background: var(--blue-dim); border: 1px solid rgba(96,165,250,0.25);
  color: var(--blue); font-size: 10px; font-weight: 800;
  display: flex; align-items: center; justify-content: center; margin-top: 1px;
}

/* Step 3 — success state */
.mt5-success-banner {
  background: rgba(52,211,153,0.08); border: 1px solid rgba(52,211,153,0.22);
  border-radius: var(--r-md); padding: 18px 20px;
  text-align: center; margin-bottom: 18px;
}
.mt5-success-icon { font-size: 32px; margin-bottom: 8px; }
.mt5-success-title {
  font-family: var(--font-head); font-size: 16px; font-weight: 800;
  color: var(--green); margin-bottom: 4px;
}
.mt5-success-sub { font-size: 12px; color: var(--text3); line-height: 1.5; }

/* Frequency selector */
.mt5-freq-row { display: flex; gap: 8px; margin-top: 6px; }
.mt5-freq-opt {
  flex: 1; padding: 8px 4px; text-align: center;
  border: 1px solid var(--glass-border);
  border-radius: var(--r-sm); font-size: 11px; font-weight: 600;
  color: var(--text2); cursor: pointer; transition: all 0.15s;
  background: var(--glass-1);
}
.mt5-freq-opt:hover { background: var(--glass-2); color: var(--text); }
.mt5-freq-opt.active {
  border-color: rgba(96,165,250,0.45); background: var(--blue-dim);
  color: var(--blue);
}

/* Import trades table */
.mt5-import-table { width: 100%; border-collapse: collapse; font-size: 11px; }
.mt5-import-table th {
  text-align: left; padding: 5px 8px;
  color: var(--text3); font-size: 10px; font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.6px;
  border-bottom: 1px solid var(--glass-border);
}
.mt5-import-table td {
  padding: 6px 8px; border-bottom: 1px solid rgba(255,255,255,0.03);
  color: var(--text2); font-family: var(--font-mono);
}
.mt5-import-table tr:hover td { background: var(--glass-1); }
.mt5-import-cb { accent-color: var(--blue); width: 13px; height: 13px; cursor: pointer; }

/* Light mode overrides */
[data-theme="light"] .mt5-modal { background: rgba(241,245,251,0.97); }
[data-theme="light"] .mt5-modal-head {
  background: linear-gradient(135deg, rgba(59,130,246,0.06), rgba(139,92,246,0.04));
  border-color: rgba(0,0,0,0.08);
}
[data-theme="light"] .mt5-input, [data-theme="light"] .mt5-select {
  background: rgba(255,255,255,0.7); border-color: rgba(0,0,0,0.09); color: #0f172a;
}
[data-theme="light"] .mt5-input:focus, [data-theme="light"] .mt5-select:focus {
  background: #fff; border-color: rgba(59,130,246,0.4);
}
[data-theme="light"] .mt5-code-block { background: rgba(15,23,42,0.06); }
[data-theme="light"] .mt5-code-block pre { color: #059669; }

/* ── Account detail — clickable trade rows ─────────────────── */
.acc-trade-row {
  cursor: pointer;
  transition: background 0.12s;
}
.acc-trade-row:hover td {
  background: rgba(96,165,250,0.06) !important;
}

/* ══════════════════════════════════════════════════════
   NXTGEN — NEW FEATURES CSS (v4 additions)
   ══════════════════════════════════════════════════════ */

/* ── Skeleton loaders ─────────────────────────────── */
.skel {
  background: linear-gradient(90deg,var(--glass-1) 25%,var(--glass-3) 50%,var(--glass-1) 75%);
  background-size: 200% 100%;
  animation: skel-shimmer 1.4s infinite;
  border-radius: 4px;
}
@keyframes skel-shimmer {
  0%   { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}
.skel-kpi  { height: 28px; width: 70%; margin: 4px auto; border-radius: 6px; }
.skel-name { height: 12px; width: 80%; }
.skel-num  { height: 12px; width: 40%; }
.skel-pill { height: 18px; width: 44px; border-radius: 99px; }

/* ── Dashboard filter bar ─────────────────────────── */
.dash-filter-bar {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 6px;
  margin-bottom: 12px;
  padding: 8px 10px;
  background: var(--glass-0);
  border: 0.5px solid var(--glass-border);
  border-radius: var(--r-md);
}
.dash-filter-btn {
  background: var(--glass-1);
  border: 0.5px solid var(--glass-border);
  color: var(--text2);
  border-radius: 99px;
  padding: 4px 12px;
  font-size: 11px;
  font-weight: 500;
  cursor: pointer;
  transition: all .15s;
  font-family: var(--font-body);
  letter-spacing: .02em;
}
.dash-filter-btn:hover { background: var(--glass-2); color: var(--text); }
.dash-filter-btn.active {
  background: rgba(58,134,255,.18);
  border-color: rgba(58,134,255,.4);
  color: var(--blue);
}

/* ── Sortable table headers ───────────────────────── */
.sortable-th {
  cursor: pointer;
  user-select: none;
  white-space: nowrap;
  transition: color .15s;
}
.sortable-th:hover { color: var(--blue); }
.sort-icon {
  font-size: 10px;
  opacity: .45;
  margin-left: 3px;
  display: inline-block;
}
.sort-icon.active { opacity: 1; color: var(--blue); }

/* ── Empty state rows ─────────────────────────────── */
.empty-state-row {
  text-align: center;
  padding: 28px 16px;
  color: var(--text3);
  font-size: 13px;
}
.empty-cta {
  background: rgba(58,134,255,.15);
  border: 1px solid rgba(58,134,255,.3);
  color: var(--blue);
  border-radius: 6px;
  padding: 4px 12px;
  font-size: 12px;
  cursor: pointer;
  margin-left: 6px;
  font-family: var(--font-body);
  transition: background .15s;
}
.empty-cta:hover { background: rgba(58,134,255,.25); }

/* ── Bulk select in Trade Log ─────────────────────── */
.bulk-chk { cursor: pointer; accent-color: var(--blue); width: 14px; height: 14px; }
.bulk-selected { background: rgba(58,134,255,.06) !important; }
.bulk-selected td { color: var(--text) !important; }

/* ── Calendar weekly summary column ──────────────── */
.cal-week-sum {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  justify-content: center;
  padding: 4px 8px;
  background: var(--glass-0);
  border-radius: var(--r-sm);
  border: 0.5px solid var(--glass-border);
  min-width: 64px;
  margin: 2px 0 2px 4px;
  font-size: 10px;
  grid-column: span 1;
}
.wsm-pnl  { font-weight: 600; font-family: var(--font-mono); font-size: 11px; }
.wsm-meta { color: var(--text3); font-size: 10px; margin-top: 1px; }
.wsm-empty { color: var(--text3); font-size: 11px; }

/* ── Max drawdown KPI card (single wide) ─────────── */
#kpi-dd-row { grid-template-columns: 1fr; }
.kpi-grid.kpi-dd-row { margin-bottom: 10px; }

/* ── Expectancy (PF toggle) ──────────────────────── */
#kpi-pf-card .kpi-value { transition: color .2s; }

/* Light mode overrides ───────────────────────────── */
[data-theme="light"] .dash-filter-btn { background: rgba(0,0,0,.04); border-color: rgba(0,0,0,.1); color: var(--text2); }
[data-theme="light"] .dash-filter-btn.active { background: rgba(79,70,229,.1); border-color: rgba(79,70,229,.3); }
[data-theme="light"] .skel { background: linear-gradient(90deg,rgba(0,0,0,.06) 25%,rgba(0,0,0,.12) 50%,rgba(0,0,0,.06) 75%); background-size: 200% 100%; }
[data-theme="light"] .bulk-selected { background: rgba(79,70,229,.05) !important; }
[data-theme="light"] .cal-week-sum { background: rgba(0,0,0,.03); border-color: rgba(0,0,0,.08); }
[data-theme="light"] .empty-cta { background: rgba(79,70,229,.08); border-color: rgba(79,70,229,.2); }

/* Mobile adjustments ─────────────────────────────── */
@media (max-width: 768px){
  .dash-filter-bar { gap: 4px; padding: 6px 8px; }
  .dash-filter-btn { padding: 3px 9px; font-size: 10px; }
  .cal-week-sum { display: none; } /* hide weekly sum on very small screens */
  #bulk-action-bar { flex-wrap: wrap; }
}
/* ══════════════════════════════════════════════════════════════════
   NXTGEN — APPLE LIQUID GLASS PREMIUM LAYER v4
   Applied ON TOP of the existing design system.
   This file supersedes conflicting rules via specificity / cascade.
   Every change preserves all existing functionality — only elevates.
   ══════════════════════════════════════════════════════════════════ */

/* ────────────────────────────────────────────────────────────────
   1. FONT SYSTEM — SF Pro equivalent via system stack
   ──────────────────────────────────────────────────────────────── */
@import url('https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:ital,wght@0,300;0,400;0,500;0,600;0,700;0,800;1,400;1,500&family=JetBrains+Mono:ital,wght@0,300;0,400;0,500;0,600;0,700;1,400&display=swap');

:root {
  /* Override font stack: Plus Jakarta Sans for headings & body, JetBrains Mono for all numeric data */
  --font-head: 'Plus Jakarta Sans', -apple-system, 'SF Pro Display', 'Helvetica Neue', system-ui, sans-serif;
  --font-body: 'Plus Jakarta Sans', -apple-system, 'SF Pro Text', 'Helvetica Neue', system-ui, sans-serif;
  --font-mono: 'JetBrains Mono', ui-monospace, 'SF Mono', monospace;
  
  /* Apple Liquid Glass — refined token system */
  /* Vibrancy levels — backdrop saturate is the key Apple technique */
  --vibrancy-xs:  blur(10px)  saturate(1.6);
  --vibrancy-sm:  blur(20px)  saturate(1.8);
  --vibrancy-md:  blur(32px)  saturate(2.0);
  --vibrancy-lg:  blur(48px)  saturate(2.2);
  --vibrancy-xl:  blur(64px)  saturate(2.4);
  --vibrancy-2xl: blur(80px)  saturate(2.6);

  /* Liquid Glass specular — the refraction shimmer layers */
  --glass-spec-top:    inset 0 1px 0 rgba(255,255,255,0.12), inset 0 0.5px 0 rgba(255,255,255,0.18);
  --glass-spec-bot:    inset 0 -1px 0 rgba(0,0,0,0.10);
  --glass-spec-full:   inset 0 1px 0 rgba(255,255,255,0.12), inset 0 -1px 0 rgba(0,0,0,0.08), inset 1px 0 0 rgba(255,255,255,0.04), inset -1px 0 0 rgba(255,255,255,0.04);
  --glass-rim:         inset 0 0 0 0.5px rgba(255,255,255,0.12);
  
  /* Apple elevation system — richer than before */
  --elev-1: 0 1px 3px rgba(0,0,0,0.22), 0 1px 1px rgba(0,0,0,0.16);
  --elev-2: 0 3px 8px rgba(0,0,0,0.28), 0 1px 3px rgba(0,0,0,0.18), 0 0 1px rgba(0,0,0,0.10);
  --elev-3: 0 8px 24px rgba(0,0,0,0.34), 0 3px 8px rgba(0,0,0,0.20), 0 1px 2px rgba(0,0,0,0.12);
  --elev-4: 0 16px 48px rgba(0,0,0,0.42), 0 6px 16px rgba(0,0,0,0.24), 0 2px 4px rgba(0,0,0,0.14);
  --elev-5: 0 32px 80px rgba(0,0,0,0.52), 0 12px 32px rgba(0,0,0,0.28), 0 4px 8px rgba(0,0,0,0.16);

  /* Spring easing — authentic iOS feel */
  --spring-1: cubic-bezier(0.175, 0.885, 0.320, 1.275);  /* gentle spring */
  --spring-2: cubic-bezier(0.340, 1.560, 0.640, 1.000);  /* medium spring */
  --spring-3: cubic-bezier(0.680, -0.550, 0.265, 1.550); /* bouncy spring */
  
  /* Transition overrides — more fluid */
  --t-fast:   all 0.12s var(--spring-1);
  --t-med:    all 0.22s cubic-bezier(0.25,0.46,0.45,0.94);
  --t-slow:   all 0.38s cubic-bezier(0.25,0.46,0.45,0.94);
  --t-spring: all 0.36s var(--spring-2);
  
  /* Topbar height refinement */
  --topbar: 56px;
  
  /* Premium spacing */
  --sidebar: 224px;
}

/* ────────────────────────────────────────────────────────────────
   2. GLOBAL BASE — Apple-grade rendering
   ──────────────────────────────────────────────────────────────── */
html {
  font-feature-settings: 'cv01', 'cv02', 'cv03', 'cv04', 'cv05', 'cv06', 'cv11', 'ss01', 'ss02';
  text-rendering: geometricPrecision;
  -webkit-text-size-adjust: none;
}

body {
  font-optical-sizing: auto;
  letter-spacing: -0.01em;
}

/* Smooth theme transitions — all surfaces */
*, *::before, *::after {
  transition-property: background-color, border-color, box-shadow, color, opacity;
  transition-duration: 0.18s;
  transition-timing-function: cubic-bezier(0.25, 0.46, 0.45, 0.94);
}
/* Override for interactive elements that should have faster feedback */
button, a, .sb-item, .tab, .cal-day, .kpi-card, .pill, .btn, input, select {
  transition: all 0.14s var(--spring-1);
}

/* ────────────────────────────────────────────────────────────────
   3. BODY BACKGROUND — Richer iOS-style gradient mesh
   ──────────────────────────────────────────────────────────────── */
body {
  background-image:
    radial-gradient(ellipse 80% 60% at 10% -10%,  rgba(59,130,246,0.09) 0%,  transparent 50%),
    radial-gradient(ellipse 60% 50% at 90% 110%,  rgba(139,92,246,0.07) 0%,  transparent 50%),
    radial-gradient(ellipse 40% 35% at 50% 50%,   rgba(20,184,166,0.03) 0%,  transparent 65%),
    radial-gradient(ellipse 70% 30% at 80% 20%,   rgba(59,130,246,0.04) 0%,  transparent 55%),
    radial-gradient(ellipse 50% 40% at 20% 80%,   rgba(167,139,250,0.04) 0%, transparent 60%);
  background-attachment: fixed;
}

[data-theme="light"] body {
  background-image:
    radial-gradient(ellipse 80% 60% at 10% -10%,  rgba(59,130,246,0.08) 0%,  transparent 50%),
    radial-gradient(ellipse 60% 50% at 90% 110%,  rgba(99,102,241,0.06) 0%,  transparent 50%),
    radial-gradient(ellipse 50% 40% at 60% 35%,   rgba(14,165,233,0.04) 0%,  transparent 60%),
    radial-gradient(ellipse 40% 30% at 30% 70%,   rgba(124,58,237,0.03) 0%,  transparent 55%);
  background-attachment: fixed;
}

/* ────────────────────────────────────────────────────────────────
   4. TOPBAR — Apple-grade vibrancy + premium status bar feel
   ──────────────────────────────────────────────────────────────── */
.topbar {
  height: var(--topbar);
  background: rgba(8,11,18,0.78);
  backdrop-filter: var(--vibrancy-2xl);
  -webkit-backdrop-filter: var(--vibrancy-2xl);
  border-bottom: 0.5px solid rgba(255,255,255,0.09);
  box-shadow:
    var(--glass-spec-top),
    0 1px 0 rgba(255,255,255,0.04),
    var(--elev-1);
  padding: 0 22px;
}

[data-theme="light"] .topbar {
  background: rgba(250,252,255,0.82);
  backdrop-filter: var(--vibrancy-2xl);
  -webkit-backdrop-filter: var(--vibrancy-2xl);
  border-bottom: 0.5px solid rgba(0,0,0,0.07);
  box-shadow:
    0 0.5px 0 rgba(255,255,255,0.8),
    0 1px 3px rgba(0,0,0,0.06),
    0 4px 16px rgba(0,0,0,0.04);
}

.topbar::after {
  background: linear-gradient(90deg,
    rgba(59,130,246,0.035) 0%, transparent 25%,
    rgba(99,102,241,0.025) 75%, rgba(139,92,246,0.03) 100%);
}

/* Clock refinement */
.topbar-clock {
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: 0.06em;
  font-variant-numeric: tabular-nums;
  color: var(--text2);
  font-weight: 600;
  padding: 5px 11px;
  background: rgba(255,255,255,0.07);
  border: 0.5px solid rgba(255,255,255,0.12);
  border-radius: 8px;
  box-shadow: var(--glass-spec-top);
}
[data-theme="light"] .topbar-clock {
  color: var(--text);
  background: rgba(0,0,0,0.05);
  border-color: rgba(0,0,0,0.10);
}

/* Avatar button — Apple style */
.topbar-avatar {
  width: 30px; height: 30px;
  border-radius: 50%;
  background: linear-gradient(135deg, rgba(96,165,250,0.3), rgba(139,92,246,0.25));
  border: 1.5px solid rgba(255,255,255,0.18);
  display: flex; align-items: center; justify-content: center;
  font-size: 11px; font-weight: 700; color: rgba(255,255,255,0.9);
  cursor: pointer;
  transition: all 0.18s var(--spring-2);
  box-shadow: 0 2px 8px rgba(96,165,250,0.25), var(--glass-spec-top);
  letter-spacing: -0.02em;
}
.topbar-avatar:hover {
  transform: scale(1.1);
  box-shadow: 0 4px 16px rgba(96,165,250,0.35), var(--glass-spec-top);
}
[data-theme="light"] .topbar-avatar {
  background: linear-gradient(135deg, rgba(79,70,229,0.22), rgba(124,58,237,0.18));
  border-color: rgba(255,255,255,0.5);
  color: #1e40af;
  box-shadow: 0 2px 8px rgba(79,70,229,0.2);
}

/* Share button */
.topbar-share-btn {
  font-size: 12px !important;
  padding: 6px 14px !important;
}

/* ────────────────────────────────────────────────────────────────
   5. SIDEBAR — Apple-quality floating panel with deep vibrancy
   ──────────────────────────────────────────────────────────────── */
.sidebar {
  width: var(--sidebar);
  background: rgba(10,13,22,0.82);
  backdrop-filter: var(--vibrancy-2xl);
  -webkit-backdrop-filter: var(--vibrancy-2xl);
  border-right: 0.5px solid rgba(255,255,255,0.08);
  box-shadow:
    1px 0 0 rgba(255,255,255,0.04),
    var(--elev-3);
  padding: 16px 10px 20px;
}

[data-theme="light"] .sidebar {
  background: rgba(248,251,255,0.88);
  border-right: 0.5px solid rgba(0,0,0,0.06);
  box-shadow: 1px 0 0 rgba(255,255,255,0.9), var(--elev-2);
}

/* Sidebar item — Apple highlight style */
.sb-item {
  padding: 8px 11px;
  border-radius: 10px;
  font-size: 13px;
  font-weight: 400;
  letter-spacing: -0.01em;
  border: 0.5px solid transparent;
  transition: all 0.14s var(--spring-1);
}

.sb-item:hover {
  background: rgba(255,255,255,0.07);
  border-color: rgba(255,255,255,0.08);
}

.sb-item.active {
  background: linear-gradient(135deg,
    rgba(96,165,250,0.18) 0%,
    rgba(96,165,250,0.10) 60%,
    rgba(96,165,250,0.06) 100%);
  border-color: rgba(96,165,250,0.25);
  box-shadow:
    var(--glass-spec-top),
    0 1px 8px rgba(96,165,250,0.12),
    inset 0 0 0 0.5px rgba(96,165,250,0.15);
}

[data-theme="light"] .sb-item:hover {
  background: rgba(0,0,0,0.05);
}

[data-theme="light"] .sb-item.active {
  background: linear-gradient(135deg,
    rgba(79,70,229,0.14) 0%,
    rgba(79,70,229,0.08) 60%,
    rgba(79,70,229,0.04) 100%);
  border-color: rgba(79,70,229,0.2);
  box-shadow: 0 1px 6px rgba(79,70,229,0.10);
}

.sb-item .ico { font-size: 15px; }

/* Section labels */
.sb-section-label {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.12em;
  color: var(--text3);
  padding: 0 11px;
  margin-bottom: 4px;
}

/* ────────────────────────────────────────────────────────────────
   6. TABS — Refined Apple-style segment control feel
   ──────────────────────────────────────────────────────────────── */
.tabs {
  height: 42px;
  background: rgba(8,11,18,0.72);
  backdrop-filter: var(--vibrancy-md);
  -webkit-backdrop-filter: var(--vibrancy-md);
  border-bottom: 0.5px solid rgba(255,255,255,0.07);
  box-shadow: var(--glass-spec-bot), 0 1px 0 rgba(255,255,255,0.03);
  padding: 0 22px;
}

[data-theme="light"] .tabs {
  background: rgba(248,251,255,0.78);
  border-bottom: 0.5px solid rgba(0,0,0,0.06);
  box-shadow: 0 -0.5px 0 rgba(255,255,255,0.9) inset, 0 1px 3px rgba(0,0,0,0.04);
}

.tab {
  font-size: 12.5px;
  font-weight: 500;
  letter-spacing: -0.01em;
  padding: 10px 16px;
}

.tab.active {
  font-weight: 600;
  color: var(--text);
}

.tab.active::after {
  height: 2px;
  background: var(--blue);
  box-shadow: 0 0 8px rgba(96,165,250,0.6), 0 0 16px rgba(96,165,250,0.3);
  border-radius: 2px 2px 0 0;
  left: 10px;
  right: 10px;
}

/* ────────────────────────────────────────────────────────────────
   7. KPI CARDS — Authentic Apple glass with specular depth
   ──────────────────────────────────────────────────────────────── */
.kpi-card {
  background: linear-gradient(145deg,
    rgba(255,255,255,0.055) 0%,
    rgba(255,255,255,0.028) 50%,
    rgba(255,255,255,0.018) 100%);
  backdrop-filter: var(--vibrancy-md);
  -webkit-backdrop-filter: var(--vibrancy-md);
  border: 0.5px solid rgba(255,255,255,0.10);
  border-radius: 16px;
  padding: 16px 18px;
  box-shadow:
    var(--glass-spec-full),
    var(--elev-1),
    inset 0 0 20px rgba(255,255,255,0.012);
  transition: all 0.22s var(--spring-2);
  transform-origin: center bottom;
  will-change: transform;
}

.kpi-card:hover {
  background: linear-gradient(145deg,
    rgba(255,255,255,0.08) 0%,
    rgba(255,255,255,0.045) 50%,
    rgba(255,255,255,0.028) 100%);
  border-color: rgba(255,255,255,0.14);
  transform: translateY(-3px) scale(1.008);
  box-shadow:
    var(--glass-spec-full),
    var(--elev-3),
    inset 0 0 24px rgba(255,255,255,0.018);
}

/* KPI card top shimmer line — richer gradient */
.kpi-card::before {
  background: linear-gradient(90deg,
    transparent 0%,
    rgba(255,255,255,0.10) 30%,
    rgba(255,255,255,0.18) 50%,
    rgba(255,255,255,0.10) 70%,
    transparent 100%);
  height: 0.5px;
}

/* KPI values — larger, more impactful */
.kpi-value {
  font-size: 26px;
  font-weight: 800;
  font-optical-sizing: auto;
  letter-spacing: -1px;
  font-variant-numeric: tabular-nums;
}

.kpi-label {
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.06em;
  color: var(--text3);
  margin-bottom: 10px;
}

/* Light mode KPI cards */
[data-theme="light"] .kpi-card {
  background: linear-gradient(145deg,
    rgba(255,255,255,0.92) 0%,
    rgba(255,255,255,0.78) 100%);
  border: 0.5px solid rgba(0,0,0,0.08);
  box-shadow:
    0 0.5px 0 rgba(255,255,255,0.95) inset,
    0 -0.5px 0 rgba(0,0,0,0.04) inset,
    0 2px 12px rgba(0,0,0,0.06),
    0 1px 3px rgba(0,0,0,0.04);
}

[data-theme="light"] .kpi-card:hover {
  background: linear-gradient(145deg,
    rgba(255,255,255,0.97) 0%,
    rgba(255,255,255,0.88) 100%);
  box-shadow:
    0 0.5px 0 rgba(255,255,255,1) inset,
    0 -0.5px 0 rgba(0,0,0,0.05) inset,
    0 6px 24px rgba(0,0,0,0.10),
    0 2px 6px rgba(0,0,0,0.06);
}

/* ────────────────────────────────────────────────────────────────
   8. COVER BANNER — Premium gradient + depth
   ──────────────────────────────────────────────────────────────── */
.cover {
  border-radius: 20px;
  padding: 24px 28px;
  border: 0.5px solid rgba(255,255,255,0.10);
  box-shadow:
    var(--glass-spec-top),
    var(--elev-3),
    inset 0 0 60px rgba(96,165,250,0.04);
  background-size: 200% 200% !important;
  animation: coverPulse 14s ease infinite;
  backdrop-filter: var(--vibrancy-sm);
  -webkit-backdrop-filter: var(--vibrancy-sm);
}

.cover-title {
  font-size: 24px;
  font-weight: 900;
  letter-spacing: -0.8px;
  font-optical-sizing: auto;
}

.cover-label {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-shadow: none;
  opacity: 0.75;
}

.cover-sub {
  font-size: 12.5px;
  margin-top: 6px;
  opacity: 0.7;
  letter-spacing: -0.01em;
}

[data-theme="light"] .cover {
  border-color: rgba(255,255,255,0.22) !important;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.35),
    var(--elev-3);
}

/* ────────────────────────────────────────────────────────────────
   9. BUTTONS — Apple-quality with spring physics
   ──────────────────────────────────────────────────────────────── */
.btn {
  border-radius: 10px;
  font-size: 12.5px;
  font-weight: 500;
  letter-spacing: -0.01em;
  padding: 7px 16px;
  border: 0.5px solid rgba(255,255,255,0.09);
  background: rgba(255,255,255,0.07);
  backdrop-filter: var(--vibrancy-xs);
  transition: all 0.14s var(--spring-2);
  box-shadow: var(--glass-spec-top), var(--elev-1);
}

.btn:hover {
  background: rgba(255,255,255,0.11);
  border-color: rgba(255,255,255,0.14);
  transform: translateY(-1px);
  box-shadow: var(--glass-spec-top), var(--elev-2);
}

.btn:active {
  transform: scale(0.96);
  box-shadow: var(--glass-spec-top), var(--elev-1);
}

.btn-primary {
  background: linear-gradient(135deg,
    rgba(96,165,250,0.28) 0%,
    rgba(96,165,250,0.16) 100%);
  border-color: rgba(96,165,250,0.38);
  color: var(--blue);
  box-shadow:
    var(--glass-spec-top),
    0 0 20px rgba(96,165,250,0.15),
    var(--elev-1);
}

.btn-primary:hover {
  background: linear-gradient(135deg,
    rgba(96,165,250,0.38) 0%,
    rgba(96,165,250,0.24) 100%);
  border-color: rgba(96,165,250,0.55);
  box-shadow:
    var(--glass-spec-top),
    0 0 28px rgba(96,165,250,0.25),
    var(--elev-2);
}

[data-theme="light"] .btn {
  background: rgba(255,255,255,0.72);
  border-color: rgba(0,0,0,0.08);
  box-shadow: 0 0.5px 0 rgba(255,255,255,0.9) inset, var(--elev-1);
}

[data-theme="light"] .btn-primary {
  background: linear-gradient(135deg, rgba(79,70,229,0.16), rgba(79,70,229,0.09));
  border-color: rgba(79,70,229,0.28);
  box-shadow: 0 0.5px 0 rgba(255,255,255,0.5) inset, 0 2px 8px rgba(79,70,229,0.12);
}

/* ────────────────────────────────────────────────────────────────
   10. PAGE TRANSITIONS — Apple fluid navigation
   ──────────────────────────────────────────────────────────────── */
@keyframes pageSlideIn {
  from {
    opacity: 0;
    transform: translateY(12px) scale(0.995);
    filter: blur(0.5px);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
    filter: blur(0px);
  }
}

.page.active .page-inner {
  animation: pageSlideIn 0.28s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

/* ────────────────────────────────────────────────────────────────
   11. DATA TABLES — Premium glass material
   ──────────────────────────────────────────────────────────────── */
.data-table-wrap {
  border-radius: 14px;
  overflow-x: auto;
  overflow-y: visible;
  -webkit-overflow-scrolling: touch;
  border: 0.5px solid rgba(255,255,255,0.09);
  background: rgba(255,255,255,0.022);
  backdrop-filter: var(--vibrancy-xs);
  box-shadow: var(--elev-1), var(--glass-spec-top);
  margin-bottom: 16px;
}

[data-theme="light"] .data-table-wrap {
  background: rgba(255,255,255,0.72);
  border-color: rgba(0,0,0,0.06);
  box-shadow: 0 0.5px 0 rgba(255,255,255,0.95) inset, var(--elev-2);
}

/* ────────────────────────────────────────────────────────────────
   11b. TRADE LOG — full-width, unconfined, dual-axis scroll
   Overrides the "card" treatment above: no rounded box, no max-width
   column, table gets its own scroll region so it can scroll both
   horizontally (wide columns) and vertically (long trade lists)
   independent of the outer page, on every viewport size.
   ──────────────────────────────────────────────────────────────── */
#page-tradelog.page{ padding-left:0; padding-right:0 }
#page-tradelog .page-inner{
  max-width:none;
  width:100%;
  margin:0;
  padding:0 24px;
  box-sizing:border-box;
}
#page-tradelog .cover,
#page-tradelog .filter-bar,
#page-tradelog #bulk-action-bar,
#page-tradelog #trade-count{
  margin-left:0;
  margin-right:0;
}
#page-tradelog .data-table-wrap{
  border-radius:16px;
  border:0.5px solid var(--glass-border);
  background:var(--glass-1);
  backdrop-filter:var(--vibrancy-xs);
  -webkit-backdrop-filter:var(--vibrancy-xs);
  box-shadow:var(--elev-1), var(--glass-spec-top);
  margin:0 0 16px;
  padding:0;
  width:auto;
  max-width:none;
  /* Horizontal scroll only — vertical scroll belongs to the page,
     not a second nested scroll region (that's what made scrolling
     feel disjointed). */
  overflow-x:auto;
  overflow-y:visible;
  -webkit-overflow-scrolling:touch;
  scrollbar-width:thin;
  scrollbar-color:rgba(255,255,255,0.22) transparent;
  /* The table body is populated by JS after first paint. Without this,
     the browser's scroll-anchoring "helpfully" shifts scrollLeft when
     that content lands, leaving the table scrolled a few pixels right
     on load and clipping the first column's header/text under the
     sticky checkbox column. */
  overflow-anchor:none;
}
[data-theme="light"] #page-tradelog .data-table-wrap{
  background:rgba(255,255,255,0.80);
  border-color:rgba(30,41,59,0.10);
  box-shadow:0 0.5px 0 rgba(255,255,255,0.95) inset, var(--elev-2);
}
#page-tradelog .data-table-wrap::-webkit-scrollbar{ height:6px; width:6px }
#page-tradelog .data-table-wrap::-webkit-scrollbar-thumb{
  background:rgba(255,255,255,0.22); border-radius:4px;
}
[data-theme="light"] #page-tradelog .data-table-wrap::-webkit-scrollbar-thumb{
  background:rgba(30,41,59,0.22);
}
#page-tradelog .data-table{
  min-width:1000px;
  width:100%;
  /* table-layout:fixed makes column widths strictly obey what's
     specified below — no browser guesswork, no ambiguous leftover
     space to dump anywhere. */
  table-layout:fixed;
}
/* box-sizing defaults to content-box, meaning a declared `width` on a
   cell EXCLUDES its own padding — so a 40px-wide checkbox column with
   16px of padding was actually rendering ~56px wide, throwing every
   percentage below off by a different, inconsistent amount per column.
   border-box makes the declared width the true, final rendered width,
   padding included — which is what makes exact percentages possible. */
#page-tradelog .data-table th,
#page-tradelog .data-table td{
  box-sizing:border-box;
}
/* Every column gets a flat percentage width (no px, no calc — those
   don't combine reliably with a min-width-overridden table, which is
   what broke this on mobile). They sum to exactly 100%, so the table
   fills its container edge-to-edge with nothing left over, at any
   viewport width. */
#page-tradelog .data-table th:nth-child(1),
#page-tradelog .data-table td:nth-child(1){ width:3% !important; overflow:hidden }
#page-tradelog .data-table th:nth-child(2),
#page-tradelog .data-table td:nth-child(2){ width:10%; overflow:hidden }
#page-tradelog .data-table th:nth-child(3),
#page-tradelog .data-table td:nth-child(3){ width:9%; overflow:hidden }
#page-tradelog .data-table th:nth-child(4),
#page-tradelog .data-table td:nth-child(4){ width:6%; overflow:hidden }
#page-tradelog .data-table th:nth-child(5),
#page-tradelog .data-table td:nth-child(5){ width:6%; overflow:hidden }
#page-tradelog .data-table th:nth-child(6),
#page-tradelog .data-table td:nth-child(6){ width:9%; overflow:hidden }
#page-tradelog .data-table th:nth-child(7),
#page-tradelog .data-table td:nth-child(7){ width:8%; overflow:hidden }
#page-tradelog .data-table th:nth-child(8),
#page-tradelog .data-table td:nth-child(8){ width:11%; overflow:hidden }
#page-tradelog .data-table th:nth-child(9),
#page-tradelog .data-table td:nth-child(9){ width:11%; overflow:hidden }
#page-tradelog .data-table th:nth-child(10),
#page-tradelog .data-table td:nth-child(10){ width:13%; overflow:hidden }
#page-tradelog .data-table th:nth-child(11),
#page-tradelog .data-table td:nth-child(11){ width:8%; overflow:hidden }
#page-tradelog .data-table th:last-child,
#page-tradelog .data-table td:last-child{ width:6% !important; overflow:hidden }
/* Fixed layout clips overflow instead of wrapping/growing — keep long
   cell text (account names, strategy tags) truncating cleanly rather
   than spilling or breaking the grid. */
#page-tradelog .data-table td{
  white-space:nowrap;
  text-overflow:ellipsis;
}
#page-tradelog .data-table td.stars,
#page-tradelog .data-table td:first-child,
#page-tradelog .data-table td.row-actions{
  white-space:nowrap;
}

/* Sticky header — stuck to the page's own scroll (the wrap no longer
   scrolls vertically), painted to match the card so it never reads as
   a mismatched slab against the banded rows behind it. */
#page-tradelog .data-table thead th{
  position:sticky; top:0; z-index:2;
  background:rgba(15,19,31,0.94);
  backdrop-filter:var(--vibrancy-xs);
  -webkit-backdrop-filter:var(--vibrancy-xs);
}
[data-theme="light"] #page-tradelog .data-table thead th{
  background:rgba(248,249,252,0.94);
}

/* First column (checkbox) stays reachable while scrolling horizontally.
   Uses the same frosted family as the card + row banding instead of a
   flat opaque fill, so it blends in rather than showing up as a stray
   rectangle while scrolling. */
#page-tradelog .data-table th:first-child,
#page-tradelog .data-table td:first-child{
  position:sticky; left:0; z-index:1;
  background:rgba(15,19,31,0.90);
  backdrop-filter:var(--vibrancy-xs);
  -webkit-backdrop-filter:var(--vibrancy-xs);
}
#page-tradelog .data-table tbody tr:nth-child(even) td:first-child{
  background:rgba(19,24,37,0.90);
}
#page-tradelog .data-table tbody tr:hover td:first-child{
  background:rgba(30,35,50,0.90);
}
[data-theme="light"] #page-tradelog .data-table th:first-child,
[data-theme="light"] #page-tradelog .data-table td:first-child{
  background:rgba(250,250,252,0.92);
}
[data-theme="light"] #page-tradelog .data-table tbody tr:nth-child(even) td:first-child{
  background:rgba(242,244,249,0.92);
}
[data-theme="light"] #page-tradelog .data-table tbody tr:hover td:first-child{
  background:rgba(232,232,250,0.55);
}
#page-tradelog .data-table thead th:first-child{ z-index:3 }

.data-table th {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.08em;
  color: var(--text3);
  padding: 10px 14px;
  background: rgba(255,255,255,0.025);
  border-bottom: 0.5px solid rgba(255,255,255,0.08);
}

[data-theme="light"] .data-table th {
  background: rgba(0,0,0,0.025);
  border-bottom-color: rgba(0,0,0,0.06);
}

.data-table td {
  padding: 11px 14px;
  font-size: 12.5px;
  letter-spacing: -0.01em;
  border-bottom: 0.5px solid rgba(255,255,255,0.04);
}

[data-theme="light"] .data-table td {
  border-bottom-color: rgba(0,0,0,0.04);
}

.data-table tbody tr:hover {
  background: rgba(255,255,255,0.04);
}

[data-theme="light"] .data-table tbody tr:hover {
  background: rgba(79,70,229,0.04);
}

.data-table tbody tr:hover td { color: var(--text); }

/* ────────────────────────────────────────────────────────────────
   12. MODAL — Authentic Apple sheet with deep glass
   ──────────────────────────────────────────────────────────────── */
.modal-overlay {
  background: rgba(0,0,0,0.55);
  backdrop-filter: var(--vibrancy-sm);
  -webkit-backdrop-filter: var(--vibrancy-sm);
}

.modal {
  background: linear-gradient(160deg,
    rgba(18,24,40,0.97) 0%,
    rgba(14,19,34,0.95) 100%);
  backdrop-filter: var(--vibrancy-2xl);
  -webkit-backdrop-filter: var(--vibrancy-2xl);
  border: 0.5px solid rgba(255,255,255,0.10);
  border-radius: 22px;
  box-shadow:
    var(--glass-spec-full),
    var(--elev-5);
  overflow: hidden;
}

[data-theme="light"] .modal {
  background: rgba(252,254,255,0.98);
  border-color: rgba(0,0,0,0.07);
  box-shadow:
    0 0.5px 0 rgba(255,255,255,0.95) inset,
    var(--elev-5);
}

.modal-head {
  padding: 18px 22px 14px;
  border-bottom: 0.5px solid rgba(255,255,255,0.07);
  background: linear-gradient(to bottom, rgba(255,255,255,0.025), transparent);
}

.modal-title {
  font-size: 16px !important;
  font-weight: 700;
  letter-spacing: -0.3px;
}

.modal-close {
  width: 28px; height: 28px;
  border-radius: 50%;
  background: rgba(255,255,255,0.07);
  border: 0.5px solid rgba(255,255,255,0.10);
  display: flex; align-items: center; justify-content: center;
  font-size: 12px;
  transition: all 0.12s var(--spring-2);
}
.modal-close:hover {
  background: rgba(248,113,113,0.20);
  border-color: rgba(248,113,113,0.35);
  color: var(--red);
  transform: scale(1.1) rotate(90deg);
}

@keyframes modalIn {
  from {
    opacity: 0;
    transform: scale(0.94) translateY(16px);
    filter: blur(2px);
  }
  to {
    opacity: 1;
    transform: scale(1) translateY(0);
    filter: blur(0);
  }
}

.modal-overlay.open .modal {
  animation: modalIn 0.26s var(--spring-2);
}

/* ────────────────────────────────────────────────────────────────
   13. FORM INPUTS — Apple focus states
   ──────────────────────────────────────────────────────────────── */
.form-input, .form-select, .form-textarea {
  background: rgba(255,255,255,0.06);
  border: 0.5px solid rgba(255,255,255,0.10);
  border-radius: 10px;
  padding: 9px 12px;
  font-size: 13.5px;
  letter-spacing: -0.01em;
  color: var(--text);
  backdrop-filter: var(--vibrancy-xs);
  transition: all 0.16s var(--spring-1);
  box-shadow: var(--glass-spec-bot);
}

.form-input:focus, .form-select:focus, .form-textarea:focus {
  background: rgba(255,255,255,0.09);
  border-color: rgba(96,165,250,0.5);
  box-shadow:
    0 0 0 3px rgba(96,165,250,0.12),
    var(--glass-spec-bot);
  outline: none;
}

[data-theme="light"] .form-input,
[data-theme="light"] .form-select,
[data-theme="light"] .form-textarea {
  background: rgba(255,255,255,0.85);
  border-color: rgba(0,0,0,0.09);
  box-shadow: 0 1px 2px rgba(0,0,0,0.04) inset;
}

[data-theme="light"] .form-input:focus,
[data-theme="light"] .form-select:focus,
[data-theme="light"] .form-textarea:focus {
  background: rgba(255,255,255,0.97);
  border-color: rgba(79,70,229,0.4);
  box-shadow: 0 0 0 3px rgba(79,70,229,0.10), 0 1px 2px rgba(0,0,0,0.04) inset;
}

.form-label {
  font-size: 10.5px;
  font-weight: 600;
  letter-spacing: 0.05em;
  color: var(--text3);
}

/* ────────────────────────────────────────────────────────────────
   14. DETAIL PANEL — Deep glass slide-in panel
   ──────────────────────────────────────────────────────────────── */
.detail-panel {
  background: linear-gradient(170deg,
    rgba(12,17,32,0.97) 0%,
    rgba(10,14,28,0.96) 100%);
  backdrop-filter: var(--vibrancy-2xl);
  -webkit-backdrop-filter: var(--vibrancy-2xl);
  border-left: 0.5px solid rgba(255,255,255,0.09);
  box-shadow:
    -1px 0 0 rgba(255,255,255,0.04),
    var(--elev-4);
}

[data-theme="light"] .detail-panel {
  background: linear-gradient(170deg,
    rgba(253,254,255,0.98) 0%,
    rgba(248,251,255,0.96) 100%);
  border-left-color: rgba(0,0,0,0.06);
  box-shadow: -1px 0 0 rgba(255,255,255,0.9), var(--elev-3);
}

.detail-pair {
  font-size: 30px;
  font-weight: 900;
  letter-spacing: -1.2px;
  font-optical-sizing: auto;
}

/* ────────────────────────────────────────────────────────────────
   15. CALENDAR — Apple Calendar-inspired grid
   ──────────────────────────────────────────────────────────────── */
.cal-grid-wrap {
  border: 0.5px solid rgba(255,255,255,0.09);
  border-radius: 16px;
  box-shadow:
    var(--glass-spec-top),
    var(--elev-2),
    inset 0 0 40px rgba(8,11,18,0.3);
  overflow: hidden;
}

[data-theme="light"] .cal-grid-wrap {
  border-color: rgba(0,0,0,0.06);
  box-shadow: 0 0.5px 0 rgba(255,255,255,0.95) inset, var(--elev-2);
}

.cal-dow {
  font-size: 9px;
  font-weight: 800;
  letter-spacing: 0.10em;
  padding: 8px 0;
}

.cal-day {
  padding: 8px 9px;
  min-height: 78px;
  transition: background 0.12s, box-shadow 0.12s;
}

.cal-day.has-trades:hover {
  background: rgba(255,255,255,0.04) !important;
}

.cal-day-num {
  font-size: 11px;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}

.cal-today-badge {
  width: 22px; height: 22px;
  font-size: 10.5px;
  font-weight: 900;
  box-shadow: 0 2px 8px rgba(251,191,36,0.4), 0 0 0 1.5px rgba(251,191,36,0.3);
}

.cal-day-pnl {
  font-size: 11.5px;
  font-weight: 800;
  letter-spacing: -0.5px;
  font-variant-numeric: tabular-nums;
}

/* Calendar month label */
.cal-month-label {
  font-size: 17px;
  font-weight: 800;
  letter-spacing: -0.5px;
}

/* Calendar nav buttons */
.cal-nav {
  width: 28px; height: 28px;
  border-radius: 8px;
  border: 0.5px solid rgba(255,255,255,0.10);
  background: rgba(255,255,255,0.05);
  backdrop-filter: var(--vibrancy-xs);
  box-shadow: var(--glass-spec-top);
  transition: all 0.14s var(--spring-2);
}

.cal-nav:hover {
  background: rgba(255,255,255,0.10);
  border-color: rgba(255,255,255,0.15);
  transform: scale(1.08);
  box-shadow: var(--glass-spec-top), var(--elev-1);
}

.cal-nav:active { transform: scale(0.92); }

/* Cal KPI cards */
.cal-kpi {
  background: linear-gradient(145deg,
    rgba(255,255,255,0.05) 0%,
    rgba(255,255,255,0.025) 100%);
  border: 0.5px solid rgba(255,255,255,0.09);
  border-radius: 14px;
  backdrop-filter: var(--vibrancy-xs);
  box-shadow: var(--glass-spec-top), var(--elev-1);
}

[data-theme="light"] .cal-kpi {
  background: linear-gradient(145deg, rgba(255,255,255,0.88), rgba(255,255,255,0.72));
  border-color: rgba(0,0,0,0.07);
  box-shadow: 0 0.5px 0 rgba(255,255,255,0.95) inset, var(--elev-1);
}

/* Calendar popup */
.cal-popup {
  border: 0.5px solid rgba(255,255,255,0.12);
  border-radius: 18px;
  backdrop-filter: var(--vibrancy-2xl);
  -webkit-backdrop-filter: var(--vibrancy-2xl);
  box-shadow: var(--glass-spec-full), var(--elev-5);
}

/* ────────────────────────────────────────────────────────────────
   16. SECTION HEADERS — Refined Apple divider style
   ──────────────────────────────────────────────────────────────── */
.sec-head {
  font-size: 9.5px;
  font-weight: 800;
  letter-spacing: 0.14em;
  margin: 24px 0 10px;
}

.sec-head::before {
  width: 2.5px;
  height: 13px;
  background: linear-gradient(to bottom, var(--blue), rgba(96,165,250,0));
  border-radius: 2px;
}

.sec-head::after {
  background: linear-gradient(to right, rgba(255,255,255,0.08), transparent);
}

[data-theme="light"] .sec-head::after {
  background: linear-gradient(to right, rgba(0,0,0,0.08), transparent);
}

/* ────────────────────────────────────────────────────────────────
   17. PILLS — Premium micro labels
   ──────────────────────────────────────────────────────────────── */
.pill {
  padding: 3px 10px;
  border-radius: 99px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.02em;
  font-variant-numeric: tabular-nums;
}

.pill:hover { filter: brightness(1.10); }

/* ────────────────────────────────────────────────────────────────
   18. DASHBOARD LAYOUT — Better proportions
   ──────────────────────────────────────────────────────────────── */
#page-dashboard { overflow-y: auto; }

.dash-layout {
  min-height: 100%;
}

.dash-left {
  padding: 20px 22px 32px;
}

/* ────────────────────────────────────────────────────────────────
   19. DASHBOARD CAL PANEL — Floating glass card
   ──────────────────────────────────────────────────────────────── */
.dash-cal-panel {
  background: rgba(10,14,24,0.85);
  backdrop-filter: var(--vibrancy-lg);
  -webkit-backdrop-filter: var(--vibrancy-lg);
  border-left: 0.5px solid rgba(255,255,255,0.08);
  box-shadow:
    -1px 0 0 rgba(255,255,255,0.03),
    var(--elev-2);
}

[data-theme="light"] .dash-cal-panel {
  background: rgba(248,251,255,0.90);
  border-left-color: rgba(0,0,0,0.06);
  box-shadow: -1px 0 0 rgba(255,255,255,0.9), var(--elev-1);
}

.dash-cal-title {
  font-size: 12.5px;
  font-weight: 700;
  letter-spacing: -0.01em;
}

/* ────────────────────────────────────────────────────────────────
   20. INSIGHT BOX — Premium info card
   ──────────────────────────────────────────────────────────────── */
.insight {
  background: linear-gradient(135deg,
    rgba(96,165,250,0.09) 0%,
    rgba(96,165,250,0.05) 100%);
  border: 0.5px solid rgba(96,165,250,0.18);
  border-radius: 14px;
  padding: 14px 17px;
  backdrop-filter: var(--vibrancy-xs);
  box-shadow:
    inset 0 1px 0 rgba(96,165,250,0.10),
    var(--elev-1);
}

.insight-text {
  font-size: 13px;
  line-height: 1.6;
  letter-spacing: -0.01em;
}

[data-theme="light"] .insight {
  background: linear-gradient(135deg, rgba(79,70,229,0.07), rgba(79,70,229,0.03));
  border-color: rgba(79,70,229,0.14);
}

/* ────────────────────────────────────────────────────────────────
   21. GLASS CARDS — Watchlist, Account, Playbook
   ──────────────────────────────────────────────────────────────── */
.wl-pair-card, .acc-card, .model-card, .wl-pair-card-v2 {
  background: linear-gradient(145deg,
    rgba(255,255,255,0.05) 0%,
    rgba(255,255,255,0.025) 100%);
  border: 0.5px solid rgba(255,255,255,0.09);
  border-radius: 16px;
  backdrop-filter: var(--vibrancy-xs);
  box-shadow: var(--glass-spec-top), var(--elev-1);
  transition: all 0.22s var(--spring-2);
}

.wl-pair-card:hover, .model-card:hover, .wl-pair-card-v2:hover {
  background: linear-gradient(145deg,
    rgba(255,255,255,0.08) 0%,
    rgba(255,255,255,0.04) 100%);
  border-color: rgba(255,255,255,0.14);
  transform: translateY(-3px);
  box-shadow: var(--glass-spec-top), var(--elev-3);
}

[data-theme="light"] .wl-pair-card,
[data-theme="light"] .acc-card,
[data-theme="light"] .model-card,
[data-theme="light"] .wl-pair-card-v2 {
  background: linear-gradient(145deg, rgba(255,255,255,0.88), rgba(255,255,255,0.72));
  border-color: rgba(0,0,0,0.07);
  box-shadow: 0 0.5px 0 rgba(255,255,255,0.95) inset, var(--elev-2);
}

/* ────────────────────────────────────────────────────────────────
   22. MOBILE BOTTOM NAV — iPhone tab bar style
   ──────────────────────────────────────────────────────────────── */
.mob-bottom-nav {
  background: rgba(8,11,18,0.92);
  backdrop-filter: var(--vibrancy-2xl);
  -webkit-backdrop-filter: var(--vibrancy-2xl);
  border-top: 0.5px solid rgba(255,255,255,0.09);
  box-shadow:
    0 -0.5px 0 rgba(255,255,255,0.05),
    0 -1px 0 rgba(255,255,255,0.02),
    var(--elev-4);
}

[data-theme="light"] .mob-bottom-nav {
  background: rgba(248,251,255,0.95);
  border-top: 0.5px solid rgba(0,0,0,0.06);
  box-shadow: 0 -0.5px 0 rgba(255,255,255,0.9), var(--elev-3);
}

.mob-bottom-nav-item {
  font-size: 10px;
  font-weight: 500;
  letter-spacing: -0.01em;
}

.mob-bottom-nav-item.active { color: var(--blue); }

.mob-bottom-nav-item.active::before {
  width: 28px; height: 2.5px;
  border-radius: 0 0 2px 2px;
  background: var(--blue);
  box-shadow: 0 0 8px rgba(96,165,250,0.5);
}

/* Center + button — iOS action button style */
.mob-nav-add-btn .mob-nav-icon {
  width: 48px; height: 48px;
  border-radius: 16px;
  background: linear-gradient(145deg, #4da6ff, #4f46e5);
  box-shadow:
    0 4px 20px rgba(96,165,250,0.45),
    0 1px 4px rgba(0,0,0,0.25),
    inset 0 1px 0 rgba(255,255,255,0.25);
  margin-top: -14px;
  font-size: 22px !important;
  transition: all 0.18s var(--spring-2);
}

.mob-nav-add-btn:active .mob-nav-icon {
  transform: scale(0.88) translateY(2px);
  box-shadow: 0 2px 10px rgba(96,165,250,0.3);
}

/* ────────────────────────────────────────────────────────────────
   23. MORE SHEET — iOS-style bottom sheet
   ──────────────────────────────────────────────────────────────── */
.mob-more-sheet {
  background: rgba(10,13,22,0.97);
  backdrop-filter: var(--vibrancy-2xl);
  -webkit-backdrop-filter: var(--vibrancy-2xl);
  border-radius: 26px 26px 0 0;
  border-top: 0.5px solid rgba(255,255,255,0.10);
  box-shadow: var(--glass-spec-top), var(--elev-5);
}

[data-theme="light"] .mob-more-sheet {
  background: rgba(249,252,255,0.98);
  border-top-color: rgba(0,0,0,0.06);
}

.mob-more-handle {
  width: 34px; height: 4px;
  border-radius: 2px;
  background: rgba(255,255,255,0.22);
  margin: 13px auto 8px;
}
[data-theme="light"] .mob-more-handle {
  background: rgba(0,0,0,0.16);
}

.mob-more-icon {
  width: 48px; height: 48px;
  border-radius: 14px;
  border: 0.5px solid rgba(255,255,255,0.09);
  background: rgba(255,255,255,0.08);
  backdrop-filter: var(--vibrancy-xs);
  box-shadow: var(--glass-spec-top), var(--elev-1);
  transition: all 0.14s var(--spring-2);
  font-size: 21px;
}
[data-theme="light"] .mob-more-icon {
  background: rgba(255,255,255,0.82);
  border-color: rgba(0,0,0,0.07);
  box-shadow: 0 0.5px 0 rgba(255,255,255,0.95) inset, var(--elev-1);
}
.mob-more-item:active .mob-more-icon {
  background: rgba(255,255,255,0.14);
  transform: scale(0.88);
}

/* ────────────────────────────────────────────────────────────────
   24. TOAST — Apple notification style
   ──────────────────────────────────────────────────────────────── */
.app-toast {
  border-radius: 16px !important;
  background: linear-gradient(135deg,
    rgba(22,28,45,0.97) 0%,
    rgba(18,24,40,0.96) 100%) !important;
  backdrop-filter: var(--vibrancy-2xl);
  -webkit-backdrop-filter: var(--vibrancy-2xl);
  border: 0.5px solid rgba(255,255,255,0.10) !important;
  box-shadow: var(--glass-spec-full), var(--elev-4) !important;
  font-size: 13px;
  letter-spacing: -0.01em;
  padding: 12px 18px;
  min-width: 280px;
}

[data-theme="light"] .app-toast {
  background: rgba(253,254,255,0.97) !important;
  border-color: rgba(0,0,0,0.07) !important;
  box-shadow: 0 0.5px 0 rgba(255,255,255,0.95) inset, var(--elev-4) !important;
}

/* ────────────────────────────────────────────────────────────────
   25. THEME TOGGLE — Premium icon button
   ──────────────────────────────────────────────────────────────── */
.theme-toggle {
  width: 32px; height: 32px;
  border-radius: 10px;
  background: rgba(255,255,255,0.07);
  border: 0.5px solid rgba(255,255,255,0.10);
  box-shadow: var(--glass-spec-top);
  font-size: 14px;
  transition: all 0.18s var(--spring-2);
}

.theme-toggle:hover {
  background: rgba(255,255,255,0.12);
  border-color: rgba(255,255,255,0.16);
  transform: rotate(20deg) scale(1.1);
  box-shadow: var(--glass-spec-top), var(--elev-2);
}

.theme-toggle:active { transform: scale(0.88) rotate(0deg); }

/* ────────────────────────────────────────────────────────────────
   26. SCROLLBAR — Premium thin scrollbar
   ──────────────────────────────────────────────────────────────── */
::-webkit-scrollbar { width: 3px; height: 3px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb {
  background: rgba(255,255,255,0.12);
  border-radius: 99px;
}
::-webkit-scrollbar-thumb:hover {
  background: rgba(255,255,255,0.20);
}
[data-theme="light"] ::-webkit-scrollbar-thumb {
  background: rgba(0,0,0,0.12);
}
[data-theme="light"] ::-webkit-scrollbar-thumb:hover {
  background: rgba(0,0,0,0.20);
}

/* Firefox */
* { scrollbar-width: thin; scrollbar-color: rgba(255,255,255,0.12) transparent; }
[data-theme="light"] * { scrollbar-color: rgba(0,0,0,0.12) transparent; }

/* ────────────────────────────────────────────────────────────────
   27. PROFILE PAGE — Premium card system
   ──────────────────────────────────────────────────────────────── */
.profile-card {
  border-radius: 18px;
  border: 0.5px solid rgba(255,255,255,0.09);
  box-shadow: var(--glass-spec-top), var(--elev-1);
  backdrop-filter: var(--vibrancy-xs);
}
[data-theme="light"] .profile-card {
  border-color: rgba(0,0,0,0.06);
  box-shadow: 0 0.5px 0 rgba(255,255,255,0.95) inset, var(--elev-2);
}

.profile-hero {
  border-radius: 20px;
  overflow: hidden;
  margin-bottom: 22px;
  box-shadow: var(--elev-3);
}

.profile-avatar-ring {
  box-shadow: 0 0 0 3px rgba(96,165,250,0.4), 0 4px 16px rgba(0,0,0,0.35);
}

.profile-input, .profile-select, .profile-textarea {
  border-radius: 10px;
  border: 0.5px solid rgba(255,255,255,0.10);
  background: rgba(255,255,255,0.06);
  font-size: 13.5px;
  letter-spacing: -0.01em;
}

.profile-input:focus, .profile-select:focus, .profile-textarea:focus {
  border-color: rgba(96,165,250,0.45);
  background: rgba(255,255,255,0.10);
  box-shadow: 0 0 0 3px rgba(96,165,250,0.10);
  outline: none;
}

/* ────────────────────────────────────────────────────────────────
   28. SIDEBAR TOGGLE BUTTON — Hamburger refinement
   ──────────────────────────────────────────────────────────────── */
.sb-toggle-btn {
  width: 32px; height: 32px;
  border-radius: 9px;
  background: rgba(255,255,255,0.06);
  border: 0.5px solid rgba(255,255,255,0.09);
  display: flex; align-items: center; justify-content: center;
  cursor: pointer;
  box-shadow: var(--glass-spec-top);
  transition: all 0.14s var(--spring-2);
  flex-shrink: 0;
}

.sb-toggle-btn:hover {
  background: rgba(255,255,255,0.10);
  border-color: rgba(255,255,255,0.14);
  box-shadow: var(--glass-spec-top), var(--elev-1);
}

.sb-toggle-btn:active { transform: scale(0.9); }

.sb-toggle-icon span {
  display: block;
  width: 16px; height: 1.5px;
  background: var(--text2);
  border-radius: 2px;
  margin: 3px 0;
  transition: all 0.2s var(--spring-2);
}

/* ────────────────────────────────────────────────────────────────
   29. WATCHLIST MODALS — Elevated glass panels
   ──────────────────────────────────────────────────────────────── */
.wl-modal {
  background: var(--surface);
  border: 0.5px solid rgba(255,255,255,0.10);
  border-radius: 20px;
  box-shadow: var(--glass-spec-top), var(--elev-5);
  backdrop-filter: var(--vibrancy-xl);
  -webkit-backdrop-filter: var(--vibrancy-xl);
}

[data-theme="light"] .wl-modal {
  background: rgba(252,254,255,0.98);
  border-color: rgba(0,0,0,0.07);
}

.wl-modal-close {
  width: 26px; height: 26px;
  border-radius: 50%;
  background: rgba(255,255,255,0.08);
  border: 0.5px solid rgba(255,255,255,0.10);
  transition: all 0.14s var(--spring-2);
}
.wl-modal-close:hover {
  background: rgba(248,113,113,0.18);
  border-color: rgba(248,113,113,0.35);
  color: var(--red);
  transform: scale(1.1) rotate(90deg);
}

/* ────────────────────────────────────────────────────────────────
   30. GLASS MODAL (generic) — elevated
   ──────────────────────────────────────────────────────────────── */
.glass-modal {
  background: linear-gradient(145deg,
    rgba(18,24,40,0.97) 0%,
    rgba(14,19,34,0.95) 100%);
  border: 0.5px solid rgba(255,255,255,0.10);
  border-radius: 22px;
  backdrop-filter: var(--vibrancy-2xl);
  -webkit-backdrop-filter: var(--vibrancy-2xl);
  box-shadow: var(--glass-spec-full), var(--elev-5);
}

[data-theme="light"] .glass-modal {
  background: rgba(252,254,255,0.98);
  border-color: rgba(0,0,0,0.07);
}

/* ────────────────────────────────────────────────────────────────
   31. ACCOUNT CARDS — Premium fintech style
   ──────────────────────────────────────────────────────────────── */
.acc-card {
  border-radius: 18px;
  padding: 20px;
  transition: all 0.22s var(--spring-2);
}
.acc-card:hover {
  transform: translateY(-2px);
  box-shadow: var(--glass-spec-top), var(--elev-3);
}

/* ────────────────────────────────────────────────────────────────
   32. FILTER BAR — Dashboard date filters
   ──────────────────────────────────────────────────────────────── */
.dash-filter-bar {
  background: rgba(255,255,255,0.025);
  border: 0.5px solid rgba(255,255,255,0.08);
  border-radius: 12px;
  padding: 8px 12px;
  backdrop-filter: var(--vibrancy-xs);
}

[data-theme="light"] .dash-filter-bar {
  background: rgba(255,255,255,0.60);
  border-color: rgba(0,0,0,0.07);
}

.dash-filter-btn {
  border-radius: 99px;
  padding: 5px 13px;
  font-size: 11.5px;
  font-weight: 500;
  letter-spacing: -0.01em;
  border: 0.5px solid rgba(255,255,255,0.08);
  background: rgba(255,255,255,0.05);
  transition: all 0.14s var(--spring-2);
}

.dash-filter-btn:hover {
  background: rgba(255,255,255,0.10);
  border-color: rgba(255,255,255,0.14);
  transform: scale(1.02);
}

.dash-filter-btn.active {
  background: rgba(96,165,250,0.18);
  border-color: rgba(96,165,250,0.38);
  color: var(--blue);
  box-shadow: 0 0 12px rgba(96,165,250,0.12);
}

/* ────────────────────────────────────────────────────────────────
   33. MONTHLY REVIEW STATS — Match KPI card style
   ──────────────────────────────────────────────────────────────── */
.month-stat {
  background: linear-gradient(145deg,
    rgba(255,255,255,0.05) 0%,
    rgba(255,255,255,0.025) 100%);
  border: 0.5px solid rgba(255,255,255,0.09);
  border-radius: 14px;
  backdrop-filter: var(--vibrancy-xs);
  box-shadow: var(--glass-spec-top), var(--elev-1);
}

[data-theme="light"] .month-stat {
  background: linear-gradient(145deg, rgba(255,255,255,0.88), rgba(255,255,255,0.72));
  border-color: rgba(0,0,0,0.07);
  box-shadow: 0 0.5px 0 rgba(255,255,255,0.95) inset, var(--elev-1);
}

/* ────────────────────────────────────────────────────────────────
   34. AI PAGE — Premium assistant UI
   ──────────────────────────────────────────────────────────────── */
.ai-mode-bar {
  border-radius: 14px;
  border: 0.5px solid rgba(255,255,255,0.09);
  background: rgba(255,255,255,0.03);
  backdrop-filter: var(--vibrancy-xs);
  box-shadow: var(--glass-spec-top);
}

.ai-response-wrap {
  border-radius: 16px;
  border: 0.5px solid rgba(167,139,250,0.20);
  backdrop-filter: var(--vibrancy-xs);
  box-shadow: var(--glass-spec-top), 0 0 32px rgba(167,139,250,0.07), var(--elev-1);
}

.ai-prompt-wrap {
  border-radius: 14px;
  border: 0.5px solid rgba(255,255,255,0.09);
  background: rgba(255,255,255,0.04);
  backdrop-filter: var(--vibrancy-xs);
  box-shadow: var(--glass-spec-bot);
}

.ai-prompt-wrap:focus-within {
  border-color: rgba(167,139,250,0.42);
  background: rgba(255,255,255,0.06);
  box-shadow: 0 0 0 3px rgba(167,139,250,0.10), var(--glass-spec-bot);
}

/* ────────────────────────────────────────────────────────────────
   35. PLAYBOOK CARDS — Teaching moment cards
   ──────────────────────────────────────────────────────────────── */
.rule-card {
  border: 0.5px solid rgba(255,255,255,0.07);
  border-radius: 12px;
  backdrop-filter: var(--vibrancy-xs);
  background: rgba(255,255,255,0.025);
  transition: all 0.16s var(--spring-1);
}
.rule-card:hover {
  background: rgba(255,255,255,0.05);
  border-color: rgba(255,255,255,0.11);
  transform: translateX(3px);
}

/* ────────────────────────────────────────────────────────────────
   36. DETAIL STATS — In the trade detail panel
   ──────────────────────────────────────────────────────────────── */
.detail-stat {
  background: rgba(255,255,255,0.04);
  border: 0.5px solid rgba(255,255,255,0.09);
  border-radius: 12px;
  backdrop-filter: var(--vibrancy-xs);
  box-shadow: var(--glass-spec-top);
  transition: all 0.14s var(--spring-1);
}
.detail-stat:hover {
  background: rgba(255,255,255,0.07);
  border-color: rgba(255,255,255,0.13);
}

/* ────────────────────────────────────────────────────────────────
   37. GLASS BUTTON VARIANTS — Elevated
   ──────────────────────────────────────────────────────────────── */
.glass-btn {
  border-radius: 12px;
  backdrop-filter: var(--vibrancy-xs);
  box-shadow: var(--glass-spec-top), var(--elev-1);
  transition: all 0.16s var(--spring-2);
}

.glass-btn:hover {
  transform: translateY(-1px);
  box-shadow: var(--glass-spec-top), var(--elev-2);
}

.glass-btn:active { transform: scale(0.96); }

/* ────────────────────────────────────────────────────────────────
   38. EMOTION CHIPS — Richer interactive
   ──────────────────────────────────────────────────────────────── */
.emo-chip, .emo-btn {
  border-radius: 20px;
  border: 0.5px solid rgba(255,255,255,0.09);
  backdrop-filter: var(--vibrancy-xs);
  transition: all 0.14s var(--spring-2);
}
.emo-chip:hover, .emo-btn:hover {
  transform: translateY(-1px) scale(1.03);
}
.emo-chip:active, .emo-btn:active {
  transform: scale(0.94);
}

/* ────────────────────────────────────────────────────────────────
   39. IMAGE SLOTS — Premium chart upload zones
   ──────────────────────────────────────────────────────────────── */
.img-slot {
  border: 1px dashed rgba(255,255,255,0.12);
  border-radius: 12px;
  background: rgba(255,255,255,0.03);
  backdrop-filter: var(--vibrancy-xs);
  transition: all 0.18s var(--spring-2);
}
.img-slot:hover {
  border-color: rgba(96,165,250,0.45);
  background: rgba(96,165,250,0.06);
  transform: scale(1.03);
  box-shadow: 0 4px 16px rgba(96,165,250,0.12);
}

/* ────────────────────────────────────────────────────────────────
   40. ACCESSIBILITY & REDUCED MOTION
   ──────────────────────────────────────────────────────────────── */
@media (prefers-reduced-motion: reduce){
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
  .cover { animation: none !important; }
}

/* ────────────────────────────────────────────────────────────────
   41. SHIMMER ANIMATION — On KPI card hover (refined)
   ──────────────────────────────────────────────────────────────── */
@keyframes glassShimmer {
  0%   { transform: translateX(-120%) skewX(-12deg); opacity: 0; }
  20%  { opacity: 1; }
  80%  { opacity: 1; }
  100% { transform: translateX(220%) skewX(-12deg); opacity: 0; }
}

.kpi-card:hover::after {
  content: '';
  position: absolute; top: 0; bottom: 0; left: 0; width: 35%;
  background: linear-gradient(90deg,
    transparent,
    rgba(255,255,255,0.06),
    rgba(255,255,255,0.10),
    rgba(255,255,255,0.06),
    transparent);
  animation: glassShimmer 0.65s ease forwards;
  pointer-events: none; z-index: 1;
  border-radius: inherit;
}

/* ────────────────────────────────────────────────────────────────
   42. SAVE BUTTON — Premium CTA
   ──────────────────────────────────────────────────────────────── */
.save-btn {
  border-radius: 14px;
  font-size: 14px;
  font-weight: 700;
  letter-spacing: -0.02em;
  padding: 12px;
  box-shadow: var(--glass-spec-top), var(--glow-blue), var(--elev-1);
  transition: all 0.18s var(--spring-2);
}

.save-btn:hover {
  transform: translateY(-2px) scale(1.01);
  box-shadow: var(--glass-spec-top), 0 0 32px rgba(96,165,250,0.3), var(--elev-3);
}

.save-btn:active {
  transform: scale(0.97);
}

/* ────────────────────────────────────────────────────────────────
   43. WATCHLIST BUTTONS — Consistent style
   ──────────────────────────────────────────────────────────────── */
.wl-btn-primary {
  border-radius: 99px;
  font-size: 13px;
  font-weight: 600;
  letter-spacing: -0.01em;
  transition: all 0.16s var(--spring-2);
}
.wl-btn-primary:hover {
  transform: translateY(-2px) scale(1.02);
  box-shadow: var(--glow-blue), var(--elev-2);
}

.wl-add-week-btn {
  border-radius: 99px;
  transition: all 0.14s var(--spring-2);
}
.wl-add-week-btn:hover {
  transform: scale(1.04);
}

/* ────────────────────────────────────────────────────────────────
   44. MOBILE OVERLAY — Refined blur
   ──────────────────────────────────────────────────────────────── */
.mob-overlay {
  background: rgba(0,0,0,0.5);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}

/* ────────────────────────────────────────────────────────────────
   45. SIDEBAR TOGGLE — Desktop collapse slide
   ──────────────────────────────────────────────────────────────── */
.cal-slide-toggle {
  background: rgba(16,21,38,0.88);
  border: 0.5px solid rgba(255,255,255,0.10);
  backdrop-filter: var(--vibrancy-md);
  -webkit-backdrop-filter: var(--vibrancy-md);
  box-shadow: var(--glass-spec-top), var(--elev-2);
  transition: all 0.18s var(--spring-2);
}
.cal-slide-toggle:hover {
  background: rgba(24,31,55,0.95);
  border-color: rgba(255,255,255,0.16);
  box-shadow: var(--glass-spec-top), var(--elev-3);
}

[data-theme="light"] .cal-slide-toggle {
  background: rgba(248,251,255,0.92);
  border-color: rgba(0,0,0,0.08);
  box-shadow: 0 0.5px 0 rgba(255,255,255,0.95) inset, var(--elev-2);
}

/* ────────────────────────────────────────────────────────────────
   46. MT5 MODAL — Premium connection UI
   ──────────────────────────────────────────────────────────────── */
.mt5-modal {
  background: linear-gradient(145deg,
    rgba(12,17,32,0.97) 0%,
    rgba(10,14,28,0.96) 100%);
  border: 0.5px solid rgba(255,255,255,0.10);
  border-radius: 22px;
  backdrop-filter: var(--vibrancy-2xl);
  -webkit-backdrop-filter: var(--vibrancy-2xl);
  box-shadow: var(--glass-spec-full), var(--elev-5);
}

/* ────────────────────────────────────────────────────────────────
   47. FOCUS VISIBLE — Keyboard navigation
   ──────────────────────────────────────────────────────────────── */
:focus-visible {
  outline: 2px solid rgba(96,165,250,0.6);
  outline-offset: 2px;
  border-radius: 4px;
}

/* ────────────────────────────────────────────────────────────────
   48. SELECTION COLOR — Brand-consistent
   ──────────────────────────────────────────────────────────────── */
::selection {
  background: rgba(96,165,250,0.25);
  color: inherit;
}

/* ────────────────────────────────────────────────────────────────
   49. RESPONSIVE OVERRIDES — Mobile premium touches
   ──────────────────────────────────────────────────────────────── */
@media (max-width: 768px){
  .kpi-value { font-size: 22px; }
  .cover-title { font-size: 20px; }
  
  .modal {
    border-radius: 24px 24px 0 0;
    backdrop-filter: var(--vibrancy-2xl);
    -webkit-backdrop-filter: var(--vibrancy-2xl);
  }
  
  .detail-panel {
    border-radius: 24px 24px 0 0;
    backdrop-filter: var(--vibrancy-2xl);
    -webkit-backdrop-filter: var(--vibrancy-2xl);
  }
  
  .kpi-card { border-radius: 14px; }
  .cover { border-radius: 16px; }
  
  /* Touch targets minimum 44px */
  .sb-item { min-height: 44px; }
  .btn { min-height: 36px; }
}

@media (max-width: 420px){
  .kpi-value { font-size: 19px; }
  .kpi-card { padding: 13px 14px; border-radius: 12px; }
  .cover { padding: 18px 20px; border-radius: 14px; }
}

/* ────────────────────────────────────────────────────────────────
   50. LARGE DESKTOP — Optimize for 1400px+
   ──────────────────────────────────────────────────────────────── */
@media (min-width: 1400px){
  :root { --sidebar: 240px; }
  .kpi-value { font-size: 28px; }
  .cover-title { font-size: 26px; }
  .data-table th, .data-table td { padding: 12px 16px; }
  .kpi-card { padding: 18px 20px; border-radius: 18px; }
  .cover { padding: 26px 32px; border-radius: 22px; }
}

/* ────────────────────────────────────────────────────────────────
   51. INLINE DATA TABLE WRAP — ensure rounded corners on tables
   ──────────────────────────────────────────────────────────────── */
div[style*="data-table"] .data-table-wrap,
.page-inner > .data-table-wrap {
  border-radius: 14px;
  overflow: hidden;
}

/* ────────────────────────────────────────────────────────────────
   52. NOTE AREAS & TEXTAREAS — consistent with glass system
   ──────────────────────────────────────────────────────────────── */
.notes-area {
  background: rgba(255,255,255,0.05);
  border: 0.5px solid rgba(255,255,255,0.09);
  border-radius: 12px;
  font-size: 13px;
  letter-spacing: -0.01em;
  backdrop-filter: var(--vibrancy-xs);
  box-shadow: var(--glass-spec-bot);
}
.notes-area:focus {
  border-color: rgba(96,165,250,0.45);
  background: rgba(255,255,255,0.07);
  box-shadow: 0 0 0 3px rgba(96,165,250,0.10), var(--glass-spec-bot);
  outline: none;
}

/* ────────────────────────────────────────────────────────────────
   53. GRADIENT SYSTEM — Additional per-page accent colors
   ──────────────────────────────────────────────────────────────── */
#page-ai .cover {
  background: linear-gradient(135deg,
    rgba(16,8,38,0.98) 0%,
    rgba(28,14,60,0.95) 40%,
    rgba(20,12,50,0.97) 100%) !important;
}

#page-calendar {
  padding: 16px 20px;
  overflow: hidden;
}

/* ────────────────────────────────────────────────────────────────
   54. COVER BANNER — Animated shimmer effect (overlay)
   ──────────────────────────────────────────────────────────────── */
@keyframes coverShimmer {
  0%   { left: -40%; opacity: 0; }
  10%  { opacity: 1; }
  90%  { opacity: 1; }
  100% { left: 100%; opacity: 0; }
}

.cover::after {
  content: '';
  position: absolute;
  top: 0;
  left: -40%;
  width: 40%;
  height: 100%;
  background: linear-gradient(90deg,
    transparent 0%,
    rgba(255,255,255,0.10) 50%,
    transparent 100%);
  border-radius: inherit;
  pointer-events: none;
  animation: coverShimmer 6s ease-in-out infinite;
  animation-delay: 2s;
}

/* Light mode cover — preserve text readability */
[data-theme="light"] .cover::after {
  background: linear-gradient(90deg,
    transparent 0%,
    rgba(255,255,255,0.18) 50%,
    transparent 100%);
  animation: coverShimmer 7s ease-in-out infinite;
  animation-delay: 1.5s;
}

/* ────────────────────────────────────────────────────────────────
   55. SIDEBAR — Close button premium styling
   ──────────────────────────────────────────────────────────────── */
.sb-close-btn button {
  background: rgba(255,255,255,0.07);
  border: 0.5px solid rgba(255,255,255,0.10);
  border-radius: 8px;
  color: var(--text2);
  width: 28px; height: 28px;
  display: flex; align-items: center; justify-content: center;
  cursor: pointer;
  transition: all 0.14s var(--spring-2);
  font-size: 12px;
}
.sb-close-btn button:hover {
  background: rgba(248,113,113,0.16);
  border-color: rgba(248,113,113,0.30);
  color: var(--red);
  transform: rotate(90deg) scale(1.08);
}

/* ────────────────────────────────────────────────────────────────
   56. NEW FEATURES — Equity Curve, Heatmap, Review Tab,
       Consistency KPI, Daily Loss Alert, Pre-Trade Checklist
   ──────────────────────────────────────────────────────────────── */

/* ── Modal Pre-Trade Checklist ─────────────────────────────────── */
.modal-checklist-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
  gap: 6px;
  margin-top: 6px;
}
.mcl-item {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 7px 10px;
  border-radius: var(--r-sm);
  background: var(--glass-0);
  border: 1px solid var(--glass-border);
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s;
  font-size: 12px;
  color: var(--text2);
  user-select: none;
}
.mcl-item:hover { background: rgba(255,255,255,0.07); border-color: rgba(255,255,255,0.15); }
.mcl-item.checked { background: rgba(34,197,94,0.1); border-color: rgba(34,197,94,0.35); color: var(--text); }
.mcl-item .cl-box {
  width: 16px; height: 16px;
  border-radius: 4px;
  border: 1.5px solid var(--glass-border);
  display: flex; align-items: center; justify-content: center;
  font-size: 11px; font-weight: 700; color: var(--green);
  flex-shrink: 0;
  transition: border-color 0.15s, background 0.15s;
}
.mcl-item.checked .cl-box { border-color: var(--green); background: rgba(34,197,94,0.18); }
.mcl-item .cl-text { line-height: 1.3; }

/* ── Daily Loss Alert ──────────────────────────────────────────── */
#daily-loss-alert {
  animation: alertSlideIn 0.3s var(--spring-2);
}
@keyframes alertSlideIn {
  from { opacity: 0; transform: translateY(-8px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* ── Review Tab ────────────────────────────────────────────────── */
.review-rr-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
  margin-top: 8px;
}
.review-stat {
  background: var(--glass-0);
  border: 1px solid var(--glass-border);
  border-radius: var(--r-sm);
  padding: 10px 12px;
}
.review-stat-label {
  font-size: 10px;
  color: var(--text3);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  font-weight: 500;
  margin-bottom: 4px;
}
.review-stat-val {
  font-size: 16px;
  font-weight: 700;
  font-family: var(--font-mono);
  color: var(--text);
}

/* Would-retake buttons */
.retake-btn {
  flex: 1;
  padding: 9px 12px;
  border-radius: var(--r-sm);
  border: 1px solid var(--glass-border);
  background: var(--glass-0);
  color: var(--text2);
  font-size: 12px;
  font-weight: 500;
  cursor: pointer;
  transition: all 0.15s;
  text-align: center;
}
.retake-btn:hover { background: rgba(255,255,255,0.08); border-color: rgba(255,255,255,0.2); }
.retake-btn.active-yes { background: rgba(34,197,94,0.15); border-color: rgba(34,197,94,0.4); color: var(--green); font-weight: 600; }
.retake-btn.active-no  { background: rgba(239,68,68,0.15);  border-color: rgba(239,68,68,0.4);  color: var(--red);   font-weight: 600; }

/* ── Equity Curve Canvas ────────────────────────────────────────── */
#equity-curve-canvas {
  display: block;
  width: 100%;
  height: 180px;
  border-radius: var(--r-sm);
}

/* ── Heatmap table ──────────────────────────────────────────────── */
#corr-heatmap-wrap table td {
  transition: opacity 0.15s;
}
#corr-heatmap-wrap table tr:hover td { opacity: 0.88; }

/* ── Consistency KPI sub-label ──────────────────────────────────── */
#kpi-consistency-sub {
  font-size: 10px;
  color: var(--text3);
  margin-top: 2px;
  line-height: 1.4;
}

/* ── Mobile tweaks for new features ─────────────────────────────── */
@media (max-width: 600px){
  .modal-checklist-grid { grid-template-columns: 1fr 1fr; }
  .review-rr-grid { grid-template-columns: 1fr 1fr; }
  .review-rr-grid .review-stat:last-child { grid-column: span 2; }
  .retake-btn { font-size: 11px; padding: 8px 8px; }
  #equity-curve-canvas { height: 140px; }
  .mcl-item { font-size: 11px; padding: 6px 8px; }
}

[data-theme="light"] .mcl-item { background: rgba(0,0,0,0.04); border-color: rgba(0,0,0,0.1); }
[data-theme="light"] .mcl-item:hover { background: rgba(0,0,0,0.07); }
[data-theme="light"] .mcl-item.checked { background: rgba(34,197,94,0.08); }
[data-theme="light"] .retake-btn { background: rgba(0,0,0,0.04); border-color: rgba(0,0,0,0.12); color: var(--text2); }
[data-theme="light"] .review-stat { background: rgba(0,0,0,0.03); border-color: rgba(0,0,0,0.08); }

/* ────────────────────────────────────────────────────────────────
   57. WATCHLIST — Daily Gameplan Section
   ──────────────────────────────────────────────────────────────── */

/* ── Section wrapper ─────────────────────────────────────────── */
.wl-daily-section {
  margin: 24px 0 20px;
  border-radius: var(--r-lg);
  background: var(--glass-0);
  border: 1px solid var(--glass-border);
  overflow: hidden;
}

/* ── Section header ──────────────────────────────────────────── */
.wl-daily-header {
  padding: 16px 20px 14px;
  border-bottom: 1px solid var(--glass-border);
  background: rgba(255,255,255,0.02);
}
.wl-daily-title {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 15px;
  font-weight: 700;
  color: var(--text);
  letter-spacing: -0.01em;
  margin-bottom: 3px;
}
.wl-daily-icon { font-size: 16px; }
.wl-daily-subtitle {
  font-size: 12px;
  color: var(--text3);
  line-height: 1.4;
}

/* ── Day tabs ────────────────────────────────────────────────── */
.wl-day-tabs {
  display: flex;
  border-bottom: 1px solid var(--glass-border);
  overflow-x: auto;
  scrollbar-width: none;
}
.wl-day-tabs::-webkit-scrollbar { display: none; }

.wl-day-tab {
  flex: 1;
  min-width: 64px;
  padding: 10px 8px 8px;
  background: none;
  border: none;
  border-bottom: 2px solid transparent;
  cursor: pointer;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
  position: relative;
  transition: background 0.14s, border-color 0.14s;
  color: var(--text3);
}
.wl-day-tab:hover { background: rgba(255,255,255,0.04); color: var(--text2); }
.wl-day-tab.active {
  border-bottom-color: var(--accent);
  color: var(--text);
  background: rgba(255,255,255,0.03);
}
.wl-day-tab.today .wl-day-tab-short { color: var(--accent); font-weight: 700; }
.wl-day-tab-short {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
.wl-day-tab-date {
  font-size: 10px;
  color: var(--text3);
  font-family: var(--font-mono);
}
.wl-day-tab.active .wl-day-tab-date { color: var(--text2); }
.wl-day-tab-dot {
  width: 5px; height: 5px;
  border-radius: 50%;
  background: var(--accent);
  position: absolute;
  top: 6px;
  right: 10px;
}

/* ── Day content ─────────────────────────────────────────────── */
.wl-day-content { padding: 18px 20px 20px; }
.wl-day-content-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 14px;
  flex-wrap: wrap;
  gap: 8px;
}
.wl-day-full-label {
  font-size: 14px;
  font-weight: 600;
  color: var(--text);
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}
.wl-day-traded-badge {
  font-size: 11px;
  font-family: var(--font-mono);
  font-weight: 600;
  padding: 2px 8px;
  border-radius: 20px;
  background: rgba(255,255,255,0.06);
  border: 1px solid var(--glass-border);
}

/* ── Overall day note ────────────────────────────────────────── */
.wl-day-overall-note {
  width: 100%;
  background: var(--glass-0);
  border: 1px solid var(--glass-border);
  border-radius: var(--r-sm);
  color: var(--text);
  font-size: 13px;
  font-family: inherit;
  padding: 10px 12px;
  resize: vertical;
  min-height: 72px;
  transition: border-color 0.15s;
  box-sizing: border-box;
}
.wl-day-overall-note:focus {
  outline: none;
  border-color: rgba(99,102,241,0.5);
  background: rgba(255,255,255,0.04);
}
.wl-day-overall-note::placeholder { color: var(--text3); }

/* ── Per-pair rows ───────────────────────────────────────────── */
.wl-day-pairs-section { margin-top: 4px; }
.wl-day-pairs-label {
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-size: 11px;
  font-weight: 600;
  color: var(--text3);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  margin-bottom: 8px;
}
.wl-day-pair-rows { display: flex; flex-direction: column; gap: 8px; }

.wl-day-pair-row {
  display: grid;
  grid-template-columns: 80px 80px 1fr;
  gap: 8px;
  align-items: start;
  padding: 10px 12px;
  background: rgba(255,255,255,0.03);
  border: 1px solid var(--glass-border);
  border-radius: var(--r-sm);
  transition: border-color 0.14s;
}
.wl-day-pair-row:focus-within {
  border-color: rgba(99,102,241,0.35);
  background: rgba(255,255,255,0.05);
}

.wl-day-pair-name {
  font-size: 12px;
  font-weight: 700;
  color: var(--text);
  padding-top: 6px;
  font-family: var(--font-mono);
}

/* ── Bias cycle button ───────────────────────────────────────── */
.wl-day-bias-btn {
  width: 100%;
  padding: 5px 6px;
  border-radius: var(--r-sm);
  border: 1px solid var(--glass-border);
  font-size: 11px;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.13s;
  text-align: center;
  margin-top: 2px;
}
.wl-day-bias-btn.bull {
  background: rgba(34,197,94,0.12);
  border-color: rgba(34,197,94,0.35);
  color: var(--green);
}
.wl-day-bias-btn.bear {
  background: rgba(239,68,68,0.12);
  border-color: rgba(239,68,68,0.35);
  color: var(--red);
}
.wl-day-bias-btn.neu {
  background: rgba(255,255,255,0.05);
  border-color: var(--glass-border);
  color: var(--text3);
}
.wl-day-bias-btn:hover { filter: brightness(1.15); transform: scale(1.03); }

/* ── Per-pair day note textarea ──────────────────────────────── */
.wl-day-pair-note {
  width: 100%;
  background: transparent;
  border: none;
  border-bottom: 1px solid var(--glass-border);
  color: var(--text);
  font-size: 12px;
  font-family: inherit;
  padding: 4px 0 4px;
  resize: none;
  min-height: 32px;
  transition: border-color 0.15s;
  box-sizing: border-box;
  line-height: 1.5;
}
.wl-day-pair-note:focus {
  outline: none;
  border-bottom-color: var(--accent);
}
.wl-day-pair-note::placeholder { color: var(--text3); font-size: 11px; }

/* ── Footer row (mindset + clear) ────────────────────────────── */
.wl-day-footer {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 12px;
  margin-top: 16px;
  padding-top: 14px;
  border-top: 1px solid var(--glass-border);
  flex-wrap: wrap;
}
.wl-day-mindset-wrap { flex: 1; min-width: 200px; }
.wl-day-mindset-btns { display: flex; gap: 6px; flex-wrap: wrap; }
.wl-day-mindset-btn {
  padding: 5px 10px;
  border-radius: 20px;
  border: 1px solid var(--glass-border);
  background: var(--glass-0);
  color: var(--text2);
  font-size: 11px;
  cursor: pointer;
  transition: all 0.13s;
}
.wl-day-mindset-btn:hover { background: rgba(255,255,255,0.08); border-color: rgba(255,255,255,0.2); }
.wl-day-mindset-btn.selected {
  background: rgba(99,102,241,0.18);
  border-color: rgba(99,102,241,0.4);
  color: var(--text);
  font-weight: 600;
}

.wl-day-clear-btn {
  padding: 6px 12px;
  border-radius: var(--r-sm);
  border: 1px solid rgba(239,68,68,0.25);
  background: rgba(239,68,68,0.06);
  color: var(--red);
  font-size: 11px;
  cursor: pointer;
  opacity: 0.7;
  transition: opacity 0.14s;
  white-space: nowrap;
}
.wl-day-clear-btn:hover { opacity: 1; }

/* ── Daily plan action buttons (Save / Edit / Delete) ─────────── */
.wl-day-action-btns {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-shrink: 0;
}
.wl-day-save-btn {
  padding: 6px 12px;
  border-radius: var(--r-sm);
  border: 1px solid rgba(52,211,153,0.35);
  background: rgba(52,211,153,0.1);
  color: var(--green);
  font-size: 11px;
  cursor: pointer;
  white-space: nowrap;
  transition: background 0.14s, opacity 0.14s;
  font-weight: 600;
}
.wl-day-save-btn:hover { background: rgba(52,211,153,0.18); }
.wl-day-edit-btn {
  padding: 6px 12px;
  border-radius: var(--r-sm);
  border: 1px solid rgba(96,165,250,0.3);
  background: rgba(96,165,250,0.08);
  color: var(--blue);
  font-size: 11px;
  cursor: pointer;
  white-space: nowrap;
  transition: background 0.14s;
}
.wl-day-edit-btn:hover { background: rgba(96,165,250,0.15); }

/* ── Light theme overrides ───────────────────────────────────── */
[data-theme="light"] .wl-daily-section { background: rgba(0,0,0,0.02); }
[data-theme="light"] .wl-daily-header  { background: rgba(0,0,0,0.02); }
[data-theme="light"] .wl-day-tab:hover { background: rgba(0,0,0,0.04); }
[data-theme="light"] .wl-day-tab.active { background: rgba(0,0,0,0.03); }
[data-theme="light"] .wl-day-overall-note { background: rgba(0,0,0,0.03); border-color: rgba(0,0,0,0.1); }
[data-theme="light"] .wl-day-overall-note:focus { background: rgba(0,0,0,0.05); }
[data-theme="light"] .wl-day-pair-row { background: rgba(0,0,0,0.03); border-color: rgba(0,0,0,0.08); }
[data-theme="light"] .wl-day-pair-row:focus-within { background: rgba(0,0,0,0.05); }
[data-theme="light"] .wl-day-bias-btn.neu { background: rgba(0,0,0,0.05); }
[data-theme="light"] .wl-day-mindset-btn { background: rgba(0,0,0,0.04); border-color: rgba(0,0,0,0.1); }

/* ── Mobile ──────────────────────────────────────────────────── */
@media (max-width: 600px){
  .wl-day-content { padding: 14px 14px 16px; }
  .wl-day-pair-row {
    grid-template-columns: 64px 70px 1fr;
    gap: 6px;
    padding: 8px 10px;
  }
  .wl-day-pair-name { font-size: 11px; }
  .wl-day-footer { flex-direction: column; align-items: stretch; }
  .wl-day-action-btns { align-self: flex-end; }
  .wl-day-clear-btn { align-self: flex-end; }
  .wl-daily-header { padding: 12px 14px 10px; }
  /* 7-day tabs — shrink to fit on narrow screens */
  .wl-day-tab { min-width: 44px; padding: 8px 4px 6px; }
  .wl-day-tab-short { font-size: 10px; letter-spacing: 0; }
  .wl-day-tab-date { font-size: 9px; }
}

/* ────────────────────────────────────────────────────────────────
   58. WATCHLIST — Daily Gameplan Chart Images
   ──────────────────────────────────────────────────────────────── */

/* ── Chart grid ─────────────────────────────────────────────── */
.wl-day-chart-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
  gap: 10px;
  margin-bottom: 10px;
}
.wl-day-chart-grid--empty { display: none; }
.wl-day-chart-grid:not(:empty) { display: grid; }

.wl-day-chart-thumb-wrap {
  position: relative;
  border-radius: var(--r-sm);
  overflow: hidden;
  border: 1px solid var(--glass-border);
  aspect-ratio: 16 / 10;
  background: rgba(0,0,0,0.2);
  cursor: pointer;
  transition: border-color 0.15s, transform 0.15s;
}
.wl-day-chart-thumb-wrap:hover {
  border-color: rgba(255,255,255,0.25);
  transform: scale(1.02);
}
.wl-day-chart-thumb {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.wl-day-chart-label {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  padding: 4px 6px;
  font-size: 10px;
  color: #fff;
  background: linear-gradient(transparent, rgba(0,0,0,0.65));
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  pointer-events: none;
}
.wl-day-chart-del {
  position: absolute;
  top: 5px;
  right: 5px;
  width: 20px; height: 20px;
  border-radius: 50%;
  background: rgba(0,0,0,0.65);
  border: 1px solid rgba(255,255,255,0.2);
  color: #fff;
  font-size: 10px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  transition: opacity 0.15s;
  line-height: 1;
}
.wl-day-chart-thumb-wrap:hover .wl-day-chart-del { opacity: 1; }

/* ── Upload zone ─────────────────────────────────────────────── */
.wl-day-upload-zone {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 4px;
  padding: 16px 12px;
  border-radius: var(--r-sm);
  border: 1.5px dashed var(--glass-border);
  background: rgba(255,255,255,0.02);
  cursor: pointer;
  transition: border-color 0.15s, background 0.15s;
  text-align: center;
}
.wl-day-upload-zone:hover {
  border-color: rgba(99,102,241,0.5);
  background: rgba(99,102,241,0.05);
}
.wl-day-upload-icon { font-size: 22px; }
.wl-day-upload-text {
  font-size: 12px;
  color: var(--text2);
  font-weight: 500;
}
.wl-day-upload-hint {
  font-size: 10px;
  color: var(--text3);
}

/* ── Light theme ─────────────────────────────────────────────── */
[data-theme="light"] .wl-day-chart-thumb-wrap { background: rgba(0,0,0,0.06); border-color: rgba(0,0,0,0.1); }
[data-theme="light"] .wl-day-upload-zone { background: rgba(0,0,0,0.02); border-color: rgba(0,0,0,0.15); }
[data-theme="light"] .wl-day-upload-zone:hover { background: rgba(99,102,241,0.04); }

/* ── Mobile ──────────────────────────────────────────────────── */
@media (max-width: 600px){
  .wl-day-chart-grid { grid-template-columns: repeat(auto-fill, minmax(110px, 1fr)); gap: 7px; }
  .wl-day-chart-del { opacity: 1; } /* always visible on mobile */
  .wl-day-upload-zone { padding: 12px 10px; }
}


/* ══════════════════════════════════════════════════════════════════
   NXTGEN DESIGN UPGRADE LAYER — v5
   Implements: Bento KPI grid · Semantic killzone colors · DM Mono
   numerics · Mobile table collapse · Typography hierarchy sharpening
   ══════════════════════════════════════════════════════════════════ */

/* ── 1. SEMANTIC KILLZONE COLOR TOKENS ───────────────────────────
   Used system-wide: tables, calendar, heatmaps, pills, dots
   London = teal/cyan · New York = amber/gold · Asian = purple/violet
   ─────────────────────────────────────────────────────────────── */
:root {
  /* London (08:00–12:00 WAT) */
  --kz-london:        #22d3ee;
  --kz-london-dim:    rgba(34,211,238,0.13);
  --kz-london-border: rgba(34,211,238,0.28);
  --kz-london-glow:   0 0 18px rgba(34,211,238,0.20);

  /* New York (13:00–17:00 WAT) */
  --kz-ny:        #fbbf24;
  --kz-ny-dim:    rgba(251,191,36,0.13);
  --kz-ny-border: rgba(251,191,36,0.28);
  --kz-ny-glow:   0 0 18px rgba(251,191,36,0.20);

  /* Asian (01:00–05:00 WAT) */
  --kz-asian:        #a78bfa;
  --kz-asian-dim:    rgba(167,139,250,0.13);
  --kz-asian-border: rgba(167,139,250,0.28);
  --kz-asian-glow:   0 0 18px rgba(167,139,250,0.18);
}
[data-theme="light"] {
  --kz-london:        #0891b2;
  --kz-london-dim:    rgba(8,145,178,0.10);
  --kz-london-border: rgba(8,145,178,0.25);
  --kz-ny:            #b45309;
  --kz-ny-dim:        rgba(180,83,9,0.10);
  --kz-ny-border:     rgba(180,83,9,0.25);
  --kz-asian:         #6d28d9;
  --kz-asian-dim:     rgba(109,40,217,0.10);
  --kz-asian-border:  rgba(109,40,217,0.25);
}

/* ── 2. KILLZONE PILL VARIANTS ───────────────────────────────────
   .pill-kz-london / .pill-kz-ny / .pill-kz-asian
   ─────────────────────────────────────────────────────────────── */
.pill-kz-london {
  background: var(--kz-london-dim);
  color: var(--kz-london);
  border: 1px solid var(--kz-london-border);
  box-shadow: var(--kz-london-glow);
}
.pill-kz-ny {
  background: var(--kz-ny-dim);
  color: var(--kz-ny);
  border: 1px solid var(--kz-ny-border);
  box-shadow: var(--kz-ny-glow);
}
.pill-kz-asian {
  background: var(--kz-asian-dim);
  color: var(--kz-asian);
  border: 1px solid var(--kz-asian-border);
  box-shadow: var(--kz-asian-glow);
}

/* ── 3. KILLZONE TABLE ROW ACCENTS ───────────────────────────────
   Applied to .kz-row-london / .kz-row-ny / .kz-row-asian
   ─────────────────────────────────────────────────────────────── */
.kz-row-london td:first-child::before { background: var(--kz-london) !important; width: 3px; }
.kz-row-ny     td:first-child::before { background: var(--kz-ny)     !important; width: 3px; }
.kz-row-asian  td:first-child::before { background: var(--kz-asian)  !important; width: 3px; }

/* ── 4. KILLZONE CALENDAR DOT VARIANTS ──────────────────────────*/
.cal-day-dot.london { background: var(--kz-london); box-shadow: 0 0 7px rgba(34,211,238,0.6); }
.cal-day-dot.ny     { background: var(--kz-ny);     box-shadow: 0 0 7px rgba(251,191,36,0.6); }
.cal-day-dot.asian  { background: var(--kz-asian);  box-shadow: 0 0 7px rgba(167,139,250,0.6); }

/* ── 5. BENTO GRID — Dashboard KPI cards ────────────────────────
   Primary metrics (Win Rate + Net PnL) are 2× width.
   Secondary metrics fill 1× cells.
   ─────────────────────────────────────────────────────────────── */
.kpi-grid-bento {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  grid-template-rows: auto auto;
  gap: 10px;
  margin-bottom: 10px;
}

/* 2× wide cards — Win Rate and Net PnL */
.kpi-card-hero {
  grid-column: span 2;
  padding: 20px 22px;
  background: linear-gradient(145deg,
    rgba(255,255,255,0.07) 0%,
    rgba(255,255,255,0.03) 100%);
  position: relative;
  overflow: hidden;
}
.kpi-card-hero::after {
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient(ellipse 80% 60% at 80% 20%,
    rgba(96,165,250,0.06) 0%, transparent 65%);
  pointer-events: none;
}
.kpi-card-hero .kpi-value {
  font-size: 32px;
  letter-spacing: -1.2px;
  font-feature-settings: 'tnum';
}
.kpi-card-hero .kpi-label {
  font-size: 10.5px;
  margin-bottom: 12px;
}

/* PnL hero card gets green tint */
.kpi-card-hero.pnl-hero::after {
  background: radial-gradient(ellipse 70% 50% at 90% 30%,
    rgba(52,211,153,0.07) 0%, transparent 65%);
}

[data-theme="light"] .kpi-card-hero {
  background: linear-gradient(145deg,
    rgba(255,255,255,0.95) 0%,
    rgba(248,250,252,0.80) 100%);
}

/* Responsive: stack to 2-col on tablet */
@media (max-width: 900px){
  .kpi-grid-bento { grid-template-columns: 1fr 1fr; }
  .kpi-card-hero  { grid-column: span 2; }
}
/* Mobile: 2-col, hero full width */
@media (max-width: 600px){
  .kpi-grid-bento { grid-template-columns: 1fr 1fr; gap: 8px; }
  .kpi-card-hero  { grid-column: span 2; }
  .kpi-card-hero .kpi-value { font-size: 26px; }
}

/* ── 6. DM MONO — Force all numeric data to use DM Mono ─────────
   Covers KPI values, table mono cells, calendar PnL, pills
   ─────────────────────────────────────────────────────────────── */
.kpi-value,
.kpi-value.green,
.kpi-value.red,
.kpi-value.blue,
.kpi-value.gold,
.kpi-value.teal,
.kpi-value.white,
.cal-kpi-val,
.cal-day-pnl,
.cal-day-num,
.cal-popup-pnl,
.detail-stat-val,
.view-stat-val,
.acc-ds-val,
.month-stat-val,
.data-table td.mono,
.acc-row .v,
.kpi-toggle-hint,
.topbar-clock,
.trash-card-pnl,
.pill,
.tf-chip,
.wl-cal-time,
.wl-cal-meta-val,
.sm-pnl-main,
.sm-stat-val {
  font-family: var(--font-mono);
  font-feature-settings: 'tnum', 'zero';
}

/* DM Mono for all KPI on calendar right panel */
.dash-cal-panel .cal-kpi-val,
.dash-cal-panel .cal-day-pnl {
  font-family: var(--font-mono);
  font-feature-settings: 'tnum';
}

/* ── 7. TYPOGRAPHY HIERARCHY — L1 / L2 / L3 ─────────────────────
   L1: primary metric (large, high contrast)
   L2: label       (small, muted)
   L3: supporting  (very small, 45% opacity)
   ─────────────────────────────────────────────────────────────── */
.kpi-value     { color: var(--text);   line-height: 1.05; }
.kpi-label     { color: var(--text3);  font-weight: 700; letter-spacing: 0.06em; }
.kpi-sub-text  { color: var(--text3);  font-size: 10px; opacity: 0.55; margin-top: 3px; }

/* Cover hierarchy */
.cover-label   { letter-spacing: 0.16em; opacity: 0.7; }
.cover-title   { letter-spacing: -0.6px; line-height: 1.15; }
.cover-sub     { opacity: 0.65; letter-spacing: -0.01em; }

/* Section header — sharper */
.sec-head {
  font-size: 9px;
  letter-spacing: 0.18em;
  font-weight: 800;
}

/* ── 8. MOBILE TABLE COLLAPSE ────────────────────────────────────
   On mobile: Trade Log shows Date, Pair, PnL, Outcome only.
   All other columns hidden. Horizontal scroll wrapper activates.
   ─────────────────────────────────────────────────────────────── */
@media (max-width: 768px){
  /* Show only essential trade log columns */
  .data-table th.col-pos,
  .data-table td.col-pos,
  .data-table th.col-rr,
  .data-table td.col-rr,
  .data-table th.col-kz,
  .data-table td.col-kz,
  .data-table th.col-strat,
  .data-table td.col-strat,
  .data-table th.col-acc,
  .data-table td.col-acc,
  .data-table th.col-rating,
  .data-table td.col-rating,
  .data-table th.col-actions,
  .data-table td.col-actions {
    display: none;
  }

  /* Compact remaining cells */
  .data-table td,
  .data-table th {
    padding: 9px 10px;
    font-size: 12px;
  }

  /* Make pair cell slightly bolder on mobile for easy scanning */
  .data-table td.col-pair {
    font-weight: 700;
    color: var(--text);
    font-family: var(--font-mono);
    font-size: 12px;
  }

  /* Outcome pill compact */
  .data-table td.col-outcome .pill {
    font-size: 10px;
    padding: 2px 7px;
  }

  /* PnL cell - prominent on mobile */
  .data-table td.col-pnl {
    font-size: 13px;
    font-weight: 700;
    font-family: var(--font-mono);
  }
}

/* ── 9. MOBILE BOTTOM NAV — 5-item tighter layout ───────────────*/
@media (max-width: 768px){
  .mob-bottom-nav {
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    align-items: center;
    justify-items: center;
  }

  .mob-bottom-nav-item {
    width: 100%;
    padding: 8px 2px;
  }

  /* FAB center button — pill shape on mobile for better tap target */
  .mob-nav-add-btn .mob-nav-icon {
    width: 48px;
    height: 48px;
    border-radius: 16px; /* squircle, not circle */
    font-size: 22px !important;
  }

  /* Labels: hide on very small screens, show on ≥375px */
  @media (max-width: 360px){
    .mob-nav-label { display: none; }
    .mob-nav-icon  { font-size: 22px; }
  }
}

/* ── 10. KILLZONE INSIGHT PILLS (in tables) ──────────────────────
   When JS renders killzone names, these semantic classes apply.
   ─────────────────────────────────────────────────────────────── */
.kz-pill-london {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 2px 9px; border-radius: 99px;
  font-size: 11px; font-weight: 600;
  font-family: var(--font-mono);
  background: var(--kz-london-dim);
  color: var(--kz-london);
  border: 1px solid var(--kz-london-border);
}
.kz-pill-ny {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 2px 9px; border-radius: 99px;
  font-size: 11px; font-weight: 600;
  font-family: var(--font-mono);
  background: var(--kz-ny-dim);
  color: var(--kz-ny);
  border: 1px solid var(--kz-ny-border);
}
.kz-pill-asian {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 2px 9px; border-radius: 99px;
  font-size: 11px; font-weight: 600;
  font-family: var(--font-mono);
  background: var(--kz-asian-dim);
  color: var(--kz-asian);
  border: 1px solid var(--kz-asian-border);
}

/* ── 11. KILLZONE HEATMAP CELL COLORS ───────────────────────────
   Session × Pair heatmap cells use these backgrounds
   ─────────────────────────────────────────────────────────────── */
.hm-london { background: var(--kz-london-dim) !important; color: var(--kz-london) !important; }
.hm-ny     { background: var(--kz-ny-dim)     !important; color: var(--kz-ny)     !important; }
.hm-asian  { background: var(--kz-asian-dim)  !important; color: var(--kz-asian)  !important; }

/* ── 12. KPI CARD MICRO-DELTA (change vs prev period) ────────────
   Small delta row below main KPI value
   ─────────────────────────────────────────────────────────────── */
.kpi-delta {
  display: inline-flex; align-items: center; gap: 3px;
  font-size: 10px; font-weight: 600;
  font-family: var(--font-mono);
  margin-top: 5px;
  opacity: 0.8;
}
.kpi-delta.up   { color: var(--green); }
.kpi-delta.down { color: var(--red); }
.kpi-delta.flat { color: var(--text3); }
.kpi-delta::before {
  content: attr(data-arrow);
  font-size: 9px;
}

/* ── 13. TABLE HEADER SORT INDICATOR — DM Mono ──────────────────*/
.sortable-th {
  font-family: var(--font-body);
  cursor: pointer;
}
.sort-icon {
  font-family: var(--font-mono);
  font-size: 9px;
}

/* ── 14. DATA TABLE PAIR CELL — always DM Mono ──────────────────*/
.data-table td:first-child,
.data-table .col-pair {
  font-family: var(--font-mono);
  font-weight: 600;
  letter-spacing: 0.02em;
}

/* ── 15. CALENDAR PNL CELLS — tighter DM Mono ───────────────────*/
.cal-day-pnl {
  font-family: var(--font-mono);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: -0.3px;
  font-feature-settings: 'tnum';
}

/* ── 16. DETAIL PANEL PAIR HEADING — DM Sans ─────────────────────*/
.detail-pair {
  font-family: var(--font-head);
  font-size: 30px;
  font-weight: 800;
  letter-spacing: -1px;
}

/* ── 17. COVER TITLE — DM Sans for max display weight ───────────*/
.cover-title {
  font-family: var(--font-head);
  font-weight: 800;
}

/* ── 18. ACCOUNT TRACKER VALUES — DM Mono ───────────────────────*/
.acc-ds-val {
  font-family: var(--font-mono);
  font-feature-settings: 'tnum';
}

/* ── 19. TOPBAR CLOCK — tighter DM Mono ─────────────────────────*/
.topbar-clock {
  font-family: var(--font-mono);
  font-feature-settings: 'tnum';
  letter-spacing: 0.03em;
}

/* ── 20. SIDEBAR ACTIVE BADGE — keep consistent ─────────────────*/
.sb-badge {
  font-family: var(--font-mono);
  letter-spacing: 0;
}

/* ── 21. KILLZONE FILTER BUTTONS — semantic accent ───────────────
   When filtering by session in Trade Log
   ─────────────────────────────────────────────────────────────── */
.filter-kz-london.active,
select[id="filter-kz"] option[value="London"] {
  color: var(--kz-london);
}

/* ── 22. FORM SELECT — killzone option color hints ───────────────*/
.kz-option-london { color: var(--kz-london); }
.kz-option-ny     { color: var(--kz-ny); }
.kz-option-asian  { color: var(--kz-asian); }

/* ── 23. RESPONSIVE POLISH — tablet KPI grid ────────────────────*/
@media (max-width: 900px){
  .kpi-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 8px;
  }
}

/* ── 24. COVER per-page unique gradients override ────────────────
   Each page has a distinct tinted cover — sharper than before
   ─────────────────────────────────────────────────────────────── */
#page-dashboard .cover  { border-left: 3px solid rgba(96,165,250,0.4); }
#page-tradelog  .cover  { border-left: 3px solid rgba(52,211,153,0.4); }
#page-watchlist .cover  { border-left: 3px solid rgba(167,139,250,0.4); }
#page-accounts  .cover  { border-left: 3px solid rgba(251,191,36,0.4); }
#page-ai        .cover  { border-left: 3px solid rgba(167,139,250,0.6); }
#page-monthly   .cover  { border-left: 3px solid rgba(96,165,250,0.4); }

/* ── 25. SCROLLBAR — refined 2px ultra-thin ─────────────────────*/
::-webkit-scrollbar { width: 2px; height: 2px; }
::-webkit-scrollbar-thumb { border-radius: 99px; }


/* ════════════════════════════════════════════════════════════════
   ██╗     ██╗ ██████╗ ██╗   ██╗██╗██████╗      ██████╗ ██╗      █████╗ ███████╗███████╗
   ██║     ██║██╔═══██╗██║   ██║██║██╔══██╗    ██╔════╝ ██║     ██╔══██╗██╔════╝██╔════╝
   ██║     ██║██║   ██║██║   ██║██║██║  ██║    ██║  ███╗██║     ███████║███████╗███████╗
   ██║     ██║██║▄▄ ██║██║   ██║██║██║  ██║    ██║   ██║██║     ██╔══██║╚════██║╚════██║
   ███████╗██║╚██████╔╝╚██████╔╝██║██████╔╝    ╚██████╔╝███████╗██║  ██║███████║███████║
   ╚══════╝╚═╝ ╚══▀▀═╝  ╚═════╝ ╚═╝╚═════╝      ╚═════╝ ╚══════╝╚═╝  ╚═╝╚══════╝╚══════╝
   TRUE LIQUID GLASS OVERRIDE — Telegram-style floating pill nav + glass everything
   ════════════════════════════════════════════════════════════════ */

/* ── LIQUID GLASS TOKENS ─────────────────────────────────────────
   Real transparency: you see what's behind, tinted + blurred
   ─────────────────────────────────────────────────────────────── */
:root {
  --lg-bg-dark:         rgba(12, 16, 28, 0.45);
  --lg-bg-dark-hover:   rgba(20, 26, 46, 0.55);
  --lg-bg-nav:          rgba(10, 14, 26, 0.38);
  --lg-border-top:      rgba(255, 255, 255, 0.14);
  --lg-border:          rgba(255, 255, 255, 0.10);
  --lg-border-inner:    rgba(255, 255, 255, 0.06);
  --lg-shine-top:       rgba(255, 255, 255, 0.18);
  --lg-shine-inner:     rgba(255, 255, 255, 0.08);
  --lg-blur-nav:        blur(48px) saturate(2.2) brightness(1.05);
  --lg-blur-sidebar:    blur(36px) saturate(1.9) brightness(1.02);
  --lg-blur-surface:    blur(24px) saturate(1.8);
  --lg-shadow-nav:      0 -8px 40px rgba(0,0,0,0.28),
                        0 -1px 0 rgba(255,255,255,0.06),
                        0 2px 0 rgba(0,0,0,0.15);
  --lg-shadow-float:    0 20px 60px rgba(0,0,0,0.5),
                        0 8px 20px rgba(0,0,0,0.3),
                        0 0 0 0.5px rgba(255,255,255,0.12);
  --lg-active-pill:     rgba(96, 165, 250, 0.18);
  --lg-nav-radius:      30px; /* Telegram-style generous pill corners */
}

[data-theme="light"] {
  --lg-bg-dark:         rgba(255, 255, 255, 0.90);
  --lg-bg-dark-hover:   rgba(255, 255, 255, 0.97);
  --lg-bg-nav:          rgba(255, 255, 255, 0.90);
  --lg-border-top:      rgba(30, 41, 59, 0.10);
  --lg-border:          rgba(30, 41, 59, 0.08);
  --lg-border-inner:    rgba(30, 41, 59, 0.05);
  --lg-shine-top:       rgba(255, 255, 255, 0.95);
  --lg-shine-inner:     rgba(255, 255, 255, 0.7);
  --lg-blur-nav:        blur(32px) saturate(1.7) brightness(1.02);
  --lg-shadow-nav:      0 -8px 32px rgba(15,23,42,0.10),
                        0 -1px 0 rgba(255,255,255,0.9),
                        0 2px 0 rgba(15,23,42,0.05);
  --lg-shadow-float:    0 20px 50px rgba(15,23,42,0.16),
                        0 8px 20px rgba(15,23,42,0.09),
                        0 0 0 1px rgba(30,41,59,0.07);
  --lg-active-pill:     rgba(67, 56, 202, 0.12);
}

/* ════════════════════════════════════════════════════════════════
   1. BOTTOM NAV — Telegram floating pill style
   ════════════════════════════════════════════════════════════════ */

/* Wrapper: floating above content, NOT edge-to-edge */
.mob-bottom-nav {
  display: none;
  position: fixed !important;
  bottom: calc(10px + env(safe-area-inset-bottom, 0px)) !important;
  left: 12px !important;
  right: 12px !important;
  width: auto !important;

  /* Pill shape — Telegram style */
  border-radius: var(--lg-nav-radius) !important;

  /* TRUE liquid glass: low opacity so content bleeds through */
  background: var(--lg-bg-nav) !important;
  backdrop-filter: var(--lg-blur-nav) !important;
  -webkit-backdrop-filter: var(--lg-blur-nav) !important;

  /* Glass border: bright on top (light catches top edge), dim on sides */
  border: 0px !important;
  box-shadow:
    inset 0 1px 0 var(--lg-shine-top),
    inset 0 -0.5px 0 var(--lg-border-inner),
    inset 1px 0 0 var(--lg-border-inner),
    inset -1px 0 0 var(--lg-border-inner),
    var(--lg-shadow-float) !important;

  /* Height with padding for the pill shape */
  height: auto !important;
  padding: 8px 8px calc(8px) !important;
  padding-bottom: 8px !important;

  z-index: 1000 !important;
  overflow: hidden !important;
}

/* Glass refraction layer — pseudo shimmer across the pill */
.mob-bottom-nav::before {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: var(--lg-nav-radius);
  background: linear-gradient(
    168deg,
    rgba(255,255,255,0.12) 0%,
    rgba(255,255,255,0.03) 30%,
    transparent 60%,
    rgba(255,255,255,0.04) 100%
  );
  pointer-events: none;
  z-index: 0;
}

/* Edge glow — subtle ambient from bottom (floor bounce) */
.mob-bottom-nav::after {
  content: '';
  position: absolute;
  bottom: 0; left: 15%; right: 15%;
  height: 1px;
  background: linear-gradient(90deg,
    transparent 0%,
    rgba(96,165,250,0.35) 30%,
    rgba(167,139,250,0.35) 70%,
    transparent 100%
  );
  border-radius: 0 0 var(--lg-nav-radius) var(--lg-nav-radius);
  pointer-events: none;
}

[data-theme="light"] .mob-bottom-nav::after {
  background: linear-gradient(90deg,
    transparent 0%,
    rgba(79,70,229,0.2) 30%,
    rgba(124,58,237,0.2) 70%,
    transparent 100%
  );
}

@media (min-width: 769px){ .mob-bottom-nav { display: none !important; } }
@media (max-width: 768px){ .mob-bottom-nav { display: flex !important; } }
@media (min-width: 769px){
  .mob-more-sheet { display: none !important; }
  .mob-more-overlay { display: none !important; }
}

/* Items sit above pseudo layers */
.mob-bottom-nav-item {
  position: relative;
  z-index: 1;
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 4px;
  padding: 6px 4px;
  border-radius: var(--r-full);
  transition: color 0.2s ease, background 0.2s ease, transform 0.2s var(--ease-spring);
  -webkit-tap-highlight-color: transparent;
}

/* Active state: glass pill highlight */
.mob-bottom-nav-item.active {
  background: var(--lg-active-pill) !important;
  box-shadow:
    inset 0 1px 0 rgba(96,165,250,0.25),
    0 0 16px rgba(96,165,250,0.12);
  color: var(--blue) !important;
  border-radius: var(--r-full) !important;
}

/* Remove old top-notch indicator, replace with pill glow */
.mob-bottom-nav-item.active::before {
  content: '' !important;
  position: absolute !important;
  inset: 0 !important;
  border-radius: var(--r-full) !important;
  background: radial-gradient(ellipse at 50% 0%, rgba(96,165,250,0.22) 0%, transparent 65%) !important;
  width: auto !important;
  height: auto !important;
  transform: none !important;
  top: 0 !important;
  left: 0 !important;
  box-shadow: none !important;
}

.mob-bottom-nav-item:active {
  transform: scale(0.88) !important;
}

.mob-nav-icon {
  font-size: 21px;
  line-height: 1;
  transition: transform 0.22s var(--ease-spring);
  filter: drop-shadow(0 0 0 transparent);
}

.mob-bottom-nav-item.active .mob-nav-icon {
  transform: translateY(-1px) scale(1.08) !important;
  filter: drop-shadow(0 0 8px rgba(96,165,250,0.5));
}

.mob-nav-label {
  font-size: 10px;
  font-weight: 500;
  letter-spacing: 0.01em;
  line-height: 1;
}

/* FAB center button — glass orb */
.mob-nav-add-btn .mob-nav-icon {
  width: 46px !important;
  height: 46px !important;
  border-radius: 18px !important;
  background: linear-gradient(145deg,
    rgba(96, 165, 250, 0.85) 0%,
    rgba(37, 99, 235, 0.9) 100%
  ) !important;
  backdrop-filter: blur(12px) !important;
  -webkit-backdrop-filter: blur(12px) !important;
  box-shadow:
    0 4px 20px rgba(96,165,250,0.5),
    0 1px 4px rgba(0,0,0,0.3),
    inset 0 1px 0 rgba(255,255,255,0.4),
    inset 0 -1px 0 rgba(0,0,0,0.15) !important;
  margin-top: -12px !important;
  font-size: 22px !important;
  transition: all 0.2s var(--ease-spring) !important;
}

.mob-nav-add-btn:active .mob-nav-icon {
  transform: scale(0.88) translateY(2px) !important;
  box-shadow:
    0 2px 10px rgba(96,165,250,0.35),
    0 1px 2px rgba(0,0,0,0.3),
    inset 0 1px 0 rgba(255,255,255,0.3) !important;
}

/* ════════════════════════════════════════════════════════════════
   2. SIDEBAR — True liquid glass (not flat colour)
   ════════════════════════════════════════════════════════════════ */

.sidebar {
  background: rgba(8, 12, 22, 0.35) !important;
  backdrop-filter: var(--lg-blur-sidebar) !important;
  -webkit-backdrop-filter: var(--lg-blur-sidebar) !important;
  border-right: 0.5px solid rgba(255,255,255,0.08) !important;
  box-shadow:
    inset -1px 0 0 rgba(255,255,255,0.04),
    4px 0 32px rgba(0,0,0,0.25) !important;
}

/* Subtle inner shimmer on sidebar */
.sidebar::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 120px;
  background: linear-gradient(180deg,
    rgba(255,255,255,0.05) 0%,
    transparent 100%
  );
  pointer-events: none;
  z-index: 0;
}

[data-theme="light"] .sidebar {
  background: linear-gradient(180deg, rgba(255,255,255,0.97), rgba(238,241,251,0.93)) !important;
  border-right: 1px solid rgba(30,41,59,0.10) !important;
  box-shadow:
    inset -1px 0 0 rgba(255,255,255,0.8),
    4px 0 28px rgba(15,23,42,0.08) !important;
}

/* Mobile: sidebar drawer gets glass treatment */
@media (max-width: 768px){
  .sidebar.mob-open {
    background: rgba(8, 12, 22, 0.42) !important;
    backdrop-filter: blur(52px) saturate(2.4) brightness(1.05) !important;
    -webkit-backdrop-filter: blur(52px) saturate(2.4) brightness(1.05) !important;
    box-shadow:
      inset 0 0 0 0.5px rgba(255,255,255,0.10),
      8px 0 40px rgba(0,0,0,0.5) !important;
  }

  [data-theme="light"] .sidebar.mob-open {
    background: linear-gradient(180deg, rgba(255,255,255,0.99), rgba(240,243,251,0.97)) !important;
  }
}

/* ════════════════════════════════════════════════════════════════
   3. TOPBAR — Glass strip
   ════════════════════════════════════════════════════════════════ */

.topbar {
  background: rgba(8, 12, 22, 0.32) !important;
  backdrop-filter: blur(40px) saturate(2) brightness(1.03) !important;
  -webkit-backdrop-filter: blur(40px) saturate(2) brightness(1.03) !important;
  border-bottom: 0.5px solid rgba(255,255,255,0.08) !important;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.10),
    inset 0 -0.5px 0 rgba(255,255,255,0.04),
    0 2px 24px rgba(0,0,0,0.2) !important;
}

[data-theme="light"] .topbar {
  background: rgba(255, 255, 255, 0.88) !important;
  border-bottom: 1px solid rgba(30,41,59,0.09) !important;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.9),
    0 2px 18px rgba(15,23,42,0.07) !important;
}

/* ════════════════════════════════════════════════════════════════
   4. TABS bar — glass
   ════════════════════════════════════════════════════════════════ */

.tabs {
  background: rgba(10, 14, 28, 0.28) !important;
  backdrop-filter: blur(28px) saturate(1.8) !important;
  -webkit-backdrop-filter: blur(28px) saturate(1.8) !important;
  border-bottom: 0.5px solid rgba(255,255,255,0.07) !important;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.07),
    0 1px 16px rgba(0,0,0,0.12) !important;
}

[data-theme="light"] .tabs {
  background: rgba(255, 255, 255, 0.85) !important;
  border-bottom: 1px solid rgba(30,41,59,0.09) !important;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.85),
    0 1px 12px rgba(15,23,42,0.05) !important;
}

/* ════════════════════════════════════════════════════════════════
   5. KPI CARDS — liquid glass surface
   ════════════════════════════════════════════════════════════════ */

.kpi-card, .glass-card {
  background: rgba(15, 20, 38, 0.40) !important;
  backdrop-filter: blur(20px) saturate(1.7) !important;
  -webkit-backdrop-filter: blur(20px) saturate(1.7) !important;
  border: 0.5px solid rgba(255,255,255,0.09) !important;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.10),
    inset 0 -0.5px 0 rgba(0,0,0,0.2),
    0 4px 24px rgba(0,0,0,0.25) !important;
}

[data-theme="light"] .kpi-card,
[data-theme="light"] .glass-card {
  background: linear-gradient(150deg, rgba(255,255,255,0.97), rgba(246,248,253,0.90)) !important;
  border: 1px solid rgba(30,41,59,0.09) !important;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.9),
    0 6px 22px rgba(15,23,42,0.08) !important;
}

/* ════════════════════════════════════════════════════════════════
   6. MODAL — Deep liquid glass overlay
   ════════════════════════════════════════════════════════════════ */

.modal {
  background: rgba(8, 12, 22, 0.42) !important;
  backdrop-filter: blur(52px) saturate(2.2) brightness(1.04) !important;
  -webkit-backdrop-filter: blur(52px) saturate(2.2) brightness(1.04) !important;
  border: 0.5px solid rgba(255,255,255,0.11) !important;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.16),
    inset 0 -0.5px 0 rgba(255,255,255,0.04),
    0 32px 80px rgba(0,0,0,0.6),
    0 8px 24px rgba(0,0,0,0.4) !important;
}

[data-theme="light"] .modal {
  background: rgba(255, 255, 255, 0.97) !important;
  border: 1px solid rgba(30,41,59,0.09) !important;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.9),
    0 32px 80px rgba(15,23,42,0.16),
    0 8px 24px rgba(15,23,42,0.09) !important;
}

/* ════════════════════════════════════════════════════════════════
   7. DETAIL PANEL
   ════════════════════════════════════════════════════════════════ */

.detail-panel {
  background: rgba(10, 14, 26, 0.38) !important;
  backdrop-filter: blur(36px) saturate(2) !important;
  -webkit-backdrop-filter: blur(36px) saturate(2) !important;
  border-left: 0.5px solid rgba(255,255,255,0.08) !important;
}

[data-theme="light"] .detail-panel {
  background: rgba(255, 255, 255, 0.95) !important;
  border-left: 1px solid rgba(30,41,59,0.09) !important;
}

/* ════════════════════════════════════════════════════════════════
   8. SIDEBAR OVERLAY (mobile backdrop) — dim glass
   ════════════════════════════════════════════════════════════════ */

.sidebar-overlay {
  background: rgba(4, 6, 14, 0.55) !important;
  backdrop-filter: blur(4px) !important;
  -webkit-backdrop-filter: blur(4px) !important;
}

/* ════════════════════════════════════════════════════════════════
   9. SB-ITEM active — refined glass pill
   ════════════════════════════════════════════════════════════════ */

.sb-item.active {
  background: rgba(96, 165, 250, 0.14) !important;
  box-shadow:
    inset 0 1px 0 rgba(96,165,250,0.20),
    inset 0 -0.5px 0 rgba(96,165,250,0.08),
    0 0 14px rgba(96,165,250,0.08) !important;
}

[data-theme="light"] .sb-item.active {
  background: rgba(79,70,229,0.10) !important;
  box-shadow:
    inset 0 1px 0 rgba(79,70,229,0.16),
    inset 0 -0.5px 0 rgba(79,70,229,0.06),
    0 0 14px rgba(79,70,229,0.06) !important;
}

/* ════════════════════════════════════════════════════════════════
   10. BODY / APP BACKGROUND — more aggressive ambient glow
       so the glass actually has something luminous to refract
   ════════════════════════════════════════════════════════════════ */

body {
  background-image:
    radial-gradient(ellipse 80% 60% at 20% -10%, rgba(96,165,250,0.12) 0%, transparent 55%),
    radial-gradient(ellipse 60% 50% at 80% 110%, rgba(167,139,250,0.10) 0%, transparent 55%),
    radial-gradient(ellipse 50% 40% at 60% 40%,  rgba(45,212,191,0.05) 0%, transparent 60%),
    radial-gradient(ellipse 40% 30% at 30% 70%,  rgba(251,191,36,0.04) 0%, transparent 60%) !important;
}

[data-theme="light"] body {
  background:#e7ebf5 !important;
  background-image:
    radial-gradient(ellipse 100% 65% at 14% -12%, rgba(79,70,229,0.14) 0%, transparent 52%),
    radial-gradient(ellipse 65% 55% at 86% 108%, rgba(124,58,237,0.09) 0%, transparent 55%),
    radial-gradient(ellipse 42% 34% at 55% 46%,  rgba(13,148,136,0.06) 0%, transparent 58%),
    radial-gradient(ellipse 36% 30% at 20% 86%,  rgba(180,83,9,0.045) 0%, transparent 48%) !important;
}

/* ════════════════════════════════════════════════════════════════
   11. DATA TABLE HEADERS — faint glass tint
   ════════════════════════════════════════════════════════════════ */

.data-table th {
  background: rgba(15,20,38,0.35) !important;
  backdrop-filter: blur(16px) !important;
  -webkit-backdrop-filter: blur(16px) !important;
}

[data-theme="light"] .data-table th {
  background: rgba(255,255,255,0.88) !important;
  color: var(--text2) !important;
  border-bottom: 1px solid rgba(30,41,59,0.09) !important;
}

/* ════════════════════════════════════════════════════════════════
   END LIQUID GLASS OVERRIDE
   ════════════════════════════════════════════════════════════════ */

/* ════════════════════════════════════════════════════════════════
   FEATURE: MENTAL STATE BUTTONS
   ════════════════════════════════════════════════════════════════ */
.mental-state-btns,
.followed-plan-btns {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
}
.ms-btn, .fp-btn {
  flex: 1;
  min-width: 80px;
  padding: 7px 10px;
  border-radius: var(--r-sm, 8px);
  border: 1px solid var(--glass-border, rgba(255,255,255,0.1));
  background: var(--glass-0, rgba(255,255,255,0.04));
  color: var(--text2);
  font-size: 11px;
  font-weight: 500;
  cursor: pointer;
  transition: all 0.2s ease;
  text-align: center;
  font-family: inherit;
  line-height: 1.4;
}
.ms-btn:hover, .fp-btn:hover {
  background: rgba(255,255,255,0.08);
  color: var(--text1);
}
.ms-btn.active.ms-focused  { background: rgba(52,211,153,0.15); border-color: rgba(52,211,153,0.4); color: var(--green); }
.ms-btn.active.ms-neutral  { background: rgba(96,165,250,0.12); border-color: rgba(96,165,250,0.3); color: var(--blue); }
.ms-btn.active.ms-distracted { background: rgba(248,113,113,0.12); border-color: rgba(248,113,113,0.3); color: var(--red); }
.fp-btn.active.fp-yes     { background: rgba(52,211,153,0.15); border-color: rgba(52,211,153,0.4); color: var(--green); }
.fp-btn.active.fp-partial { background: rgba(251,191,36,0.12); border-color: rgba(251,191,36,0.3); color: var(--gold); }
.fp-btn.active.fp-no      { background: rgba(248,113,113,0.12); border-color: rgba(248,113,113,0.3); color: var(--red); }

/* Light theme overrides */
[data-theme="light"] .ms-btn,
[data-theme="light"] .fp-btn {
  background: rgba(0,0,0,0.04);
  border-color: rgba(0,0,0,0.12);
  color: var(--text2);
}
[data-theme="light"] .ms-btn:hover,
[data-theme="light"] .fp-btn:hover {
  background: rgba(0,0,0,0.08);
}

/* ════════════════════════════════════════════════════════════════
   FEATURE: LOSS REASON FIELD — slide in smoothly
   ════════════════════════════════════════════════════════════════ */
#loss-reason-field {
  animation: slideDown 0.2s ease;
}
@keyframes slideDown {
  from { opacity: 0; transform: translateY(-6px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* ════════════════════════════════════════════════════════════════
   COMPACT REFRESH — Dashboard calendar KPI strip + Watchlist header
   ════════════════════════════════════════════════════════════════ */

/* ── Dashboard calendar: always a single compact row (Trades / P&L / Best / Worst / Day win rate) ── */
.dash-cal-panel .cal-kpi-row {
  display: flex;
  flex-wrap: nowrap;
  gap: 6px;
  padding: 0 0 8px;
  overflow-x: auto;
  scrollbar-width: none;
}
.dash-cal-panel .cal-kpi-row::-webkit-scrollbar { display: none; }
.dash-cal-panel .cal-kpi {
  flex: 1 1 0;
  min-width: 88px;
  padding: 7px 9px;
  border-radius: var(--r-sm, 8px);
}
.dash-cal-panel .cal-kpi-label { font-size: 7.5px; margin-bottom: 1px; letter-spacing: 0.05em; white-space: nowrap; }
.dash-cal-panel .cal-kpi-val { font-size: 13px; white-space: nowrap; }
.dash-cal-panel .cal-kpi-val .cal-kpi-sub,
.dash-cal-panel .cal-kpi small { font-size: 7px; }
.dash-cal-panel .cal-kpi-sub-row { font-size: 7.5px; gap: 4px; }

/* Slightly tighter panel chrome to match */
.dash-cal-panel { padding: 16px 14px 20px; }
.dash-cal-top { margin-bottom: 10px; }
.dash-cal-panel .cal-header { padding: 4px 0 6px !important; }
.dash-cal-panel .cal-month-label { font-size: 13px; }
.dash-cal-panel .cal-nav { width: 24px; height: 24px; font-size: 13px; }

@media (max-width: 1080px){
  .dash-cal-panel .cal-kpi { min-width: 78px; padding: 6px 8px; }
  .dash-cal-panel .cal-kpi-label { font-size: 7px; }
  .dash-cal-panel .cal-kpi-val { font-size: 12px; }
}

@media (max-width: 640px){
  .dash-cal-panel .cal-kpi-row { gap: 5px; }
  .dash-cal-panel .cal-kpi { min-width: 68px; padding: 6px 7px; flex: 0 0 auto; }
  .dash-cal-panel .cal-kpi-label { font-size: 6.5px; }
  .dash-cal-panel .cal-kpi-val { font-size: 11px; }
}

@media (max-width: 420px){
  .dash-cal-panel .cal-kpi { min-width: 62px; padding: 5px 6px; }
  .dash-cal-panel .cal-kpi-label { font-size: 6px; }
  .dash-cal-panel .cal-kpi-val { font-size: 10px; }
}

/* ── Watchlist: compact hero header ── */
#page-watchlist .cover { padding: 14px 18px; margin-bottom: 14px; }
#page-watchlist .cover-label { font-size: 9px; margin-bottom: 3px; }
#page-watchlist .cover-title { font-size: 18px; }
#page-watchlist .cover-sub { font-size: 11px; margin-top: 3px; }

/* ── Watchlist: quarter + week pill bar — compact, responsive, properly organized ── */
.wl-quarter-nav { gap: 6px; margin-bottom: 10px; }
.wl-q-tab { padding: 5px 12px; font-size: 10.5px; }

.wl-week-bar {
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 18px;
  padding-bottom: 12px;
  align-items: center;
}
.wl-week-scroll {
  gap: 6px;
  row-gap: 6px;
}
.wl-week-chip {
  padding: 4px 11px;
  font-size: 10.5px;
}
.wl-add-week-btn {
  padding: 4px 12px;
  font-size: 10.5px;
}

@media (max-width: 640px){
  #page-watchlist .cover { padding: 12px 14px; }
  #page-watchlist .cover-title { font-size: 16px; }
  .wl-quarter-nav { gap: 5px; margin-bottom: 8px; }
  .wl-q-tab { padding: 4px 10px; font-size: 10px; }
  .wl-week-bar {
    border-bottom: 1px solid var(--glass-border);
    padding-bottom: 10px;
    margin-bottom: 14px;
  }
  .wl-week-scroll { gap: 5px; }
  .wl-week-chip { padding: 4px 9px; font-size: 10px; }
  .wl-add-week-btn { width: 100%; text-align: center; padding: 6px 12px; }
}

/* ── Monthly Review: clickable Loss Audit / Pair Breakdown rows ── */
.mr-clickable-row { cursor: pointer; transition: background 0.12s; }
.mr-clickable-row:hover { background: var(--glass-2); }
.mr-pair-sub-row td { background: rgba(255,255,255,0.015); }
[data-theme="light"] .mr-pair-sub-row td { background: rgba(0,0,0,0.015); }

/* ── Watchlist: organized "Past Weeks" history dropdown ── */
.wl-week-chip-dot {
  display: inline-block; width: 6px; height: 6px; border-radius: 50%;
  background: var(--green); margin-right: 6px; vertical-align: middle;
  box-shadow: 0 0 6px rgba(52,211,153,0.6);
}
.wl-week-history { position: relative; flex-shrink: 0; }
.wl-week-history-btn {
  display: flex; align-items: center; gap: 6px;
  padding: 5px 12px; border-radius: var(--r-full);
  border: 1px solid var(--glass-border); background: var(--glass-1);
  color: var(--text2); font-size: 10px; font-weight: 600; cursor: pointer;
  transition: var(--t-fast); font-family: var(--font-mono); white-space: nowrap;
}
.wl-week-history-btn:hover { background: var(--glass-2); color: var(--text); border-color: var(--glass-border-h); }
.wl-week-history-ico { font-size: 10.5px; line-height: 1; }
.wl-week-history-count { color: var(--blue); font-weight: 700; }
.wl-week-history-arrow { font-size: 8.5px; transition: transform 0.15s ease; opacity: 0.7; }

/* Solid, opaque surface — deliberately NOT transparent glass here, since
   this panel floats over bright white chart thumbnails and a see-through
   background would wash out and become unreadable against them. */
.wl-week-history-panel {
  position: absolute; top: calc(100% + 8px); left: 0;
  min-width: 270px; max-width: 320px; max-height: 320px; overflow-y: auto;
  background: linear-gradient(180deg, rgba(15,19,30,0.99) 0%, rgba(11,14,23,0.99) 100%);
  border: 1px solid rgba(255,255,255,0.10);
  border-radius: var(--r-lg);
  box-shadow: 0 16px 40px rgba(0,0,0,0.55), 0 0 0 1px rgba(0,0,0,0.3), inset 0 1px 0 rgba(255,255,255,0.06);
  padding: 8px; z-index: 100;
  display: flex; flex-direction: column;
}
.wl-week-history-panel::before {
  content: 'PREVIOUS WATCHLISTS';
  display: block; font-size: 8.5px; font-weight: 800; letter-spacing: 0.12em;
  color: var(--text3); padding: 4px 8px 8px; font-family: var(--font-mono);
}
[data-theme="light"] .wl-week-history-panel {
  background: linear-gradient(180deg, rgba(255,255,255,0.99) 0%, rgba(248,250,252,0.99) 100%);
  border-color: rgba(0,0,0,0.08);
}
.wl-week-history-item {
  display: flex; align-items: center; justify-content: space-between; gap: 10px;
  width: 100%; text-align: left; padding: 9px 8px; border-radius: var(--r-sm, 8px);
  border: none; border-bottom: 1px solid rgba(255,255,255,0.06);
  background: transparent; color: var(--text2); cursor: pointer;
  transition: background 0.12s, color 0.12s, padding-left 0.12s;
  position: relative;
}
.wl-week-history-item::before {
  content: ''; position: absolute; left: 0; top: 6px; bottom: 6px; width: 2px;
  border-radius: 2px; background: transparent; transition: background 0.12s;
}
.wl-week-history-item:last-of-type { border-bottom: none; }
.wl-week-history-item:hover { background: rgba(96,165,250,0.07); color: var(--text); padding-left: 12px; }
.wl-week-history-item:hover::before { background: var(--blue); }
[data-theme="light"] .wl-week-history-item { border-bottom-color: rgba(0,0,0,0.06); }
.wl-week-history-item-label { font-size: 11px; font-weight: 700; font-family: var(--font-mono); color: var(--text); letter-spacing: -0.1px; }
.wl-week-history-item-range { font-size: 9px; color: var(--text3); font-family: var(--font-mono); white-space: nowrap; }
.wl-week-history-empty { padding: 14px 10px; text-align: center; font-size: 11px; color: var(--text3); font-style: italic; }

/* Slim accent scrollbar to match the panel's deliberate, polished feel */
.wl-week-history-panel::-webkit-scrollbar { width: 4px; }
.wl-week-history-panel::-webkit-scrollbar-thumb { background: var(--glass-2); border-radius: 99px; }

@media (max-width: 640px){
  .wl-week-history-panel { left: auto; right: 0; min-width: 230px; }
  .wl-week-history-btn { padding: 4px 10px; font-size: 9.5px; }
  .wl-week-history-item-label { font-size: 10.5px; }
  .wl-week-history-item-range { font-size: 8.5px; }
}

/* ════════════════════════════════════════════════════════
   CALENDAR PAGE — Analytics Overhaul (standalone Calendar page only)
   ════════════════════════════════════════════════════════ */
#page-calendar{padding:16px 20px;overflow-y:auto;overflow-x:hidden}
#page-calendar{overflow-x:hidden}
#page-calendar .cal-page-scroll{display:flex;flex-direction:column;gap:14px;min-height:100%;padding-bottom:8px;max-width:100%}
#page-calendar .cal-wrap{height:auto;flex:none}
#page-calendar .cal-grid-with-weeks{min-height:560px}

/* ── Analytics card grid ─────────────────────────── */
.cal-an-grid{display:grid;grid-template-columns:1.15fr 1fr 1fr;gap:12px}
.cal-an-grid.row2{grid-template-columns:1fr 1.35fr}

.cal-an-card{
  background:var(--glass-1);
  border:1px solid var(--glass-border);
  border-radius:var(--r-xl);
  padding:16px 18px;
  display:flex;align-items:center;justify-content:space-between;gap:14px;
  position:relative;overflow:hidden;
  box-shadow:var(--shadow-sm);
  min-height:112px;
  min-width:0;
  container-type:inline-size;
}
[data-theme="light"] .cal-an-card{background:var(--glass-2);box-shadow:var(--shadow-xs)}
.cal-an-card:hover{border-color:var(--glass-border-h);transform:translateY(-1px);box-shadow:var(--shadow-md)}
.cal-an-card--toggle{cursor:pointer;user-select:none}
.cal-an-card--toggle:hover{border-color:rgba(99,179,237,0.35)}
.cal-an-card--toggle:active{transform:scale(0.97)}
.cal-an-toggle-hint{
  font-size:8px;color:var(--text3);text-transform:uppercase;
  letter-spacing:.06em;opacity:.7;margin-left:2px;
  font-family:var(--font-body);font-weight:600;
}

.cal-an-left{display:flex;flex-direction:column;gap:8px;flex:1 1 auto;min-width:0;overflow:hidden}
.cal-an-label{font-size:11.5px;color:var(--text3);display:flex;align-items:center;gap:5px;font-weight:700;letter-spacing:.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cal-an-label .info-dot{width:13px;height:13px;border-radius:50%;border:1.4px solid var(--text3);display:inline-flex;align-items:center;justify-content:center;font-size:8.5px;opacity:.55;flex-shrink:0}
.cal-an-value{font-family:var(--font-mono);font-size:clamp(11px,10cqi,27px);font-weight:800;letter-spacing:-.6px;line-height:1;white-space:nowrap;overflow:visible}
.cal-an-value.green{color:var(--green);text-shadow:0 0 22px var(--green-glow)}
.cal-an-value.red{color:var(--red);text-shadow:0 0 22px var(--red-glow)}

.cal-an-badge{
  position:absolute;top:14px;right:16px;
  background:var(--glass-3);border:1px solid var(--glass-border);
  border-radius:var(--r-full);font-size:11px;font-weight:800;color:var(--text2);
  padding:3px 10px;font-family:var(--font-mono);
}
.cal-an-mini-icon{
  width:36px;height:36px;border-radius:var(--r-md);
  background:var(--green-dim);
  display:flex;align-items:center;justify-content:center;
  color:var(--green);flex-shrink:0;
}

/* ── Gauge column (semicircle) ───────────────────── */
.cal-an-gauge-col{display:flex;flex-direction:column;align-items:center;gap:5px;flex:0 0 auto;width:clamp(30px,28cqi,108px);min-width:0}
/* Lock intrinsic shape so a CSS width override can never squash/stretch the arc —
   this is what was distorting the win/BE/loss ring into a torn/uneven shape. */
.cal-an-gauge-col svg{display:block;width:100%;height:auto;aspect-ratio:108/68;overflow:visible}
.cal-an-gauge-legend{display:flex;gap:clamp(2px,1.5cqi,5px)}
.cal-an-legend-chip{
  padding:2px clamp(4px,2cqi,7px);border-radius:var(--r-full);font-size:clamp(8px,3.2cqi,10px);font-weight:800;
  font-family:var(--font-mono);background:var(--glass-2);color:var(--text2);white-space:nowrap;
}
.cal-an-legend-chip.green{color:var(--green);background:var(--green-dim)}
.cal-an-legend-chip.blue{color:var(--blue);background:var(--blue-dim)}
.cal-an-legend-chip.red{color:var(--red);background:var(--red-dim)}

/* ── Ring gauge (profit factor) ──────────────────── */
.cal-an-ring-col{flex:0 0 auto;width:clamp(22px,20cqi,76px);min-width:0}
.cal-an-ring-col svg{display:block;width:100%;height:auto;aspect-ratio:1/1;overflow:visible}

/* ── Avg win/loss bar card ───────────────────────── */
.cal-an-bar-wrap{flex:1;display:flex;flex-direction:column;justify-content:center;gap:9px;min-width:0}
.cal-an-bar-track{height:10px;border-radius:var(--r-full);overflow:hidden;display:flex;background:var(--glass-2);box-shadow:inset 0 1px 2px rgba(0,0,0,.25)}
.cal-an-bar-seg{height:100%;transition:width .3s var(--ease-out)}
.cal-an-bar-seg.green{background:var(--green)}
.cal-an-bar-seg.red{background:var(--red)}
.cal-an-bar-labels{display:flex;justify-content:space-between;font-family:var(--font-mono);font-size:13px;font-weight:800}
.cal-an-bar-labels .green{color:var(--green)}
.cal-an-bar-labels .red{color:var(--red)}
.cal-an-bar-stat{display:flex;flex-direction:column;gap:1px;line-height:1.25}
.cal-an-bar-stat.right{align-items:flex-end;text-align:right}
.cal-an-bar-main{font-family:var(--font-mono);font-size:13px;font-weight:800}
.cal-an-bar-sub{font-family:var(--font-mono);font-size:11px;font-weight:600;color:var(--text3)}

/* ── Calendar header row (month nav + today + icons) ─ */
.cal-page-header{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.cal-today-btn{
  font-size:12px;font-weight:700;padding:7px 15px;border-radius:var(--r-md);
  background:var(--glass-2);border:1px solid var(--glass-border);color:var(--text2);
  cursor:pointer;transition:var(--t-fast);
}
.cal-today-btn:hover{background:var(--glass-3);color:var(--text);border-color:var(--glass-border-h)}
.cal-header-spacer{flex:1}
.cal-header-icons{display:flex;gap:6px}
.cal-icon-btn{
  width:32px;height:32px;border-radius:var(--r-md);
  background:var(--glass-1);border:1px solid var(--glass-border);
  display:flex;align-items:center;justify-content:center;font-size:13.5px;
  color:var(--text2);cursor:pointer;transition:var(--t-fast);
}
.cal-icon-btn:hover{background:var(--glass-3);color:var(--text);border-color:var(--glass-border-h);transform:translateY(-1px)}
.cal-icon-btn svg{width:15px;height:15px;flex-shrink:0;display:block}

/* ── Monthly stats pill row ──────────────────────── */
.cal-stats-pill-row{display:flex;align-items:center;gap:9px;font-size:12.5px;color:var(--text2);font-weight:700;flex-wrap:wrap;padding:2px 2px 0}
.cal-stats-pill-row .lbl{color:var(--text3);font-weight:600}
.cal-pill{padding:4px 12px;border-radius:var(--r-full);background:var(--glass-2);border:1px solid var(--glass-border);font-family:var(--font-mono);font-weight:800;color:var(--text)}
.cal-pill.green{color:var(--green)}

/* ── Grid + week sidebar ──────────────────────────── */
.cal-grid-with-weeks{flex:1;display:flex;gap:10px;min-height:0;align-items:stretch}
.cal-grid-with-weeks .cal-grid-wrap{flex:1;min-width:0}
#cal-days-2{grid-auto-rows:1fr}
.cal-week-col-wrap{display:flex;flex-direction:column;gap:8px;width:148px;flex-shrink:0;min-width:0;max-width:148px;overflow:hidden}
.cal-week-col-heading{display:none}
.cal-week-col{display:flex;flex-direction:column;gap:8px;flex:1;min-height:0;min-width:0}
.cal-week-card{
  flex:1;background:var(--glass-1);border:1px solid var(--glass-border);
  border-radius:var(--r-lg);padding:12px 14px;display:flex;flex-direction:column;justify-content:center;gap:4px;
  min-height:0;min-width:0;max-width:100%;box-sizing:border-box;overflow:hidden;transition:var(--t-fast);
}
.cal-week-card:hover{background:var(--glass-2);border-color:var(--glass-border-h)}
.cal-week-label{font-size:11px;color:var(--text3);font-weight:700}
.cal-week-pnl{font-family:var(--font-mono);font-size:17px;font-weight:800;letter-spacing:-.4px}
.cal-week-pnl.green{color:var(--green)}
.cal-week-pnl.red{color:var(--red)}
.cal-week-pnl.zero{color:var(--text3)}
.cal-week-days{font-size:10px;color:var(--text3);background:var(--glass-2);border-radius:var(--r-full);padding:3px 9px;width:fit-content}

@media (max-width: 1180px){
  .cal-an-grid{grid-template-columns:1fr 1fr}
  .cal-an-grid > .cal-an-card:first-child{grid-column:1/3}
  .cal-an-grid.row2{grid-template-columns:1fr}
  .cal-week-col-wrap{width:118px}
}
@media (max-width: 760px){
  /* ── Analytics cards: compact 3-up / 2-up rows, matching desktop layout ── */
  .cal-an-grid{grid-template-columns:repeat(3,1fr);gap:7px}
  .cal-an-grid > .cal-an-card:first-child{grid-column:auto}
  .cal-an-grid.row2{grid-template-columns:repeat(2,1fr)}

  .cal-an-card{
    flex-direction:row;align-items:center;justify-content:space-between;
    gap:6px;padding:10px 10px;min-height:0;border-radius:var(--r-lg);
  }
  .cal-an-grid.row2 .cal-an-card{min-height:0}
  .cal-an-left{gap:3px;width:auto;min-width:0}
  .cal-an-label{font-size:9px;gap:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .cal-an-label .info-dot{width:10px;height:10px;font-size:7px}
  .cal-an-value{font-size:15px;letter-spacing:-.3px}
  .cal-an-badge{position:static;padding:1px 7px;font-size:9.5px;align-self:flex-start;margin-top:-2px}
  .cal-an-mini-icon{width:26px;height:26px}

  /* Gauge sizing now scales continuously via container query units on the base rule;
     just tighten gaps for the compact mobile card. */
  .cal-an-gauge-col{gap:3px}
  .cal-an-gauge-legend{gap:3px}
  .cal-an-legend-chip{padding:1px 5px}
  .cal-an-bar-wrap{gap:5px}
  .cal-an-bar-track{height:7px}
  .cal-an-bar-labels{font-size:10px}
  .cal-an-bar-main{font-size:10px}
  .cal-an-bar-sub{font-size:9px}

  /* ── Weekly summary: moved BELOW the calendar as its own roomy row, not squeezed to the side ── */
  .cal-grid-with-weeks{flex-direction:column;gap:14px;align-items:stretch}
  #page-calendar .cal-grid-with-weeks{min-height:0}
  .cal-week-col-wrap{width:100%;max-width:100%;flex-shrink:0;gap:8px}
  .cal-week-col-heading{
    display:block;font-size:10.5px;font-weight:800;color:var(--text3);
    text-transform:uppercase;letter-spacing:.08em;padding:0 2px;
  }
  /* ── Weekly summary: ONE row, split into equal columns — 1×4 or 1×5
     depending on how many weeks the month has. Each card stacks its
     label/pnl/day-count internally since columns are narrow on mobile. */
  .cal-week-col{
    display:flex;flex-direction:row;flex-wrap:nowrap;
    gap:6px;
    overflow-x:auto;-webkit-overflow-scrolling:touch;
    scrollbar-width:none;padding-bottom:2px;
  }
  .cal-week-col::-webkit-scrollbar{display:none}
  .cal-week-card{
    min-width:56px;width:auto;flex:1 1 0%;padding:10px 6px 9px;
    flex-direction:column;align-items:center;justify-content:center;
    text-align:center;gap:3px;
  }
  .cal-week-label{font-size:9px;flex-shrink:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
  .cal-week-pnl{
    font-size:12.5px;letter-spacing:-.2px;white-space:nowrap;
    overflow:hidden;text-overflow:ellipsis;max-width:100%;margin-left:0;
  }
  .cal-week-days{font-size:8px;padding:2px 6px;flex-shrink:0;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}

  /* ── Overall page rhythm: more breathing room, clear of the bottom nav ──
     The floating pill nav is ~63px tall + 10px offset + safe-area; pad well
     past that so nothing (esp. the Weekly P&L row) ever sits under it. */
  #page-calendar{
    padding:14px 12px calc(112px + env(safe-area-inset-bottom, 0px));
    scroll-padding-bottom:calc(112px + env(safe-area-inset-bottom, 0px));
  }
  .cal-page-scroll{gap:12px}
  /* Defensive spacer: guards against Android Chrome cases where a flex
     child's bottom padding gets clipped on overflow instead of scrolled to. */
  .cal-page-scroll::after{content:'';display:block;flex:none;height:1px}
  .cal-wrap{gap:12px}
  .cal-page-header{gap:8px}
  .cal-month-label{font-size:15px;min-width:0}
  .cal-today-btn{font-size:11px;padding:6px 12px}
  .cal-header-icons{gap:5px}
  .cal-icon-btn{width:28px;height:28px;font-size:12px}
  .cal-icon-btn svg{width:13px;height:13px}
  .cal-stats-pill-row{font-size:11px;gap:7px}
  .cal-dow{font-size:9px;padding:6px 0;letter-spacing:.05em}
  .cal-day{min-height:58px;padding:6px 5px}
  .cal-day-num{font-size:11px}
  .cal-today-badge{width:19px;height:19px;font-size:9.5px}
  .cal-day-dot{width:4px;height:4px;top:5px;right:5px}
  .cal-day-pnl{font-size:9.5px;margin-top:3px}
  .cal-day-count{font-size:8px;margin-top:1px}
  .cal-day-pairs{font-size:7px}
}
@media (max-width: 480px){
  /* Devices in the 344–430px range (Fold5 folded, SE, S8+, Pixel 7, XR,
     14 Pro Max, etc.) were still hitting the 760px 3-up/2-up compact grid,
     which left too little room per card and clipped labels/values
     ("Win rate" → "Win rat", "Profit factor" → "Profit facto", the
     Avg win/loss $ and % figures running off the edge). Ease up further
     here before the tighter 360px override kicks in. */
  .cal-an-grid{grid-template-columns:1fr 1fr;gap:7px}
  .cal-an-grid > .cal-an-card:first-child{grid-column:1/3}
  .cal-an-grid.row2{grid-template-columns:1fr}
  .cal-an-card{padding:12px 14px}
  .cal-an-label{font-size:10.5px}
  .cal-an-value{font-size:17px}
  .cal-an-bar-labels{font-size:12px}
  .cal-an-bar-main{font-size:12px}
  .cal-an-bar-sub{font-size:9.5px}
}
@media (max-width: 420px){
  .cal-day{min-height:50px;padding:5px 4px}
  .cal-day-num{font-size:10px}
  .cal-day-pnl{font-size:8.5px}
  .cal-day-count{font-size:7px}
  .cal-day-pairs{font-size:6.5px}
  .cal-week-card{padding:8px 4px 7px;gap:2px}
  .cal-week-label{font-size:8px}
  .cal-week-pnl{font-size:11px}
  .cal-week-days{font-size:7px;padding:1.5px 5px}
  .cal-an-grid{gap:5px}
  .cal-week-card.cal2-week-report{padding:7px 3px 6px !important}
  .cal-week-card.cal2-week-report .cal-week-label{font-size:8px !important}
  .cal-week-card.cal2-week-report .cal2-week-grade{font-size:9px !important}
  .cal-week-card.cal2-week-report .cal-week-pnl{font-size:11px !important}
  .cal-week-card.cal2-week-report .cal-week-days{font-size:7px !important;padding:1.5px 5px !important}
}
@media (max-width: 360px){
  #page-calendar{padding-left:8px;padding-right:8px}
  .cal-day{min-height:44px;padding:4px 3px}
  .cal-day-num{font-size:9.5px}
  .cal-day-pnl{font-size:8px}
  .cal-dow{font-size:8px}
  .cal-an-grid{grid-template-columns:1fr 1fr;gap:6px}
  .cal-an-grid > .cal-an-card:first-child{grid-column:1/3}
  .cal-week-card{padding:7px 3px 6px;gap:2px}
  .cal-week-label{font-size:7.5px}
  .cal-week-pnl{font-size:10px}
  .cal-week-days{font-size:6.5px;padding:1.5px 4px}
  .cal-month-label{font-size:14px}
  .cal-week-card.cal2-week-report{padding:6px 2px 5px !important}
  .cal-week-card.cal2-week-report .cal-week-label{font-size:7.5px !important}
  .cal-week-card.cal2-week-report .cal2-week-grade{font-size:8.5px !important}
  .cal-week-card.cal2-week-report .cal-week-pnl{font-size:10px !important}
  .cal-week-card.cal2-week-report .cal-week-days{font-size:6.5px !important;padding:1.5px 4px !important}
}

/* ── Calendar Settings modal ─────────────────────── */
.cal-settings-overlay{
  position:fixed;inset:0;z-index:400;
  background:rgba(4,6,10,0.55);backdrop-filter:blur(4px);
  display:flex;align-items:center;justify-content:center;padding:20px;
  animation:fadeIn .15s var(--ease-out);
}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
.cal-settings-modal{
  width:100%;max-width:400px;
  background:var(--glass-2);border:1px solid var(--glass-border);
  border-radius:var(--r-xl);padding:20px;
  box-shadow:var(--shadow-xl),inset 0 1px 0 var(--glass-shine);
  animation:popupIn .18s var(--ease-spring);
}
[data-theme="light"] .cal-settings-modal{background:rgba(255,255,255,.98)}
.cal-settings-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}
.cal-settings-title{font-family:var(--font-head);font-size:14px;font-weight:800;letter-spacing:-.2px}
.cal-settings-body{display:flex;flex-direction:column;gap:14px}
.cal-settings-field{display:flex;flex-direction:column;gap:6px}
.cal-settings-field label{font-size:11.5px;color:var(--text3);font-weight:700}
.cal-settings-foot{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}

/* ══════════════════════════════════════════════════════
   ICON SYSTEM — replaces emoji throughout the app.
   Inline SVGs reference a single <symbol> sprite (injected
   once in index.html) via <use>, so markup stays lightweight
   and every icon inherits color from its surrounding text.
═══════════════════════════════════════════════════════ */
.icn{
  display:inline-block;
  width:1em;height:1em;
  vertical-align:-0.15em;
  flex-shrink:0;
  color:currentColor;
  line-height:1;
}
.icn-sm{width:.85em;height:.85em}
.icn-lg{width:1.3em;height:1.3em}
.icn-xl{width:1.6em;height:1.6em;vertical-align:-0.2em}

/* Status-colored icon helpers (used where the emoji previously carried
   its own color, e.g. red/gold/green/blue/muted dots) */
.icn-red{color:var(--red)}
.icn-green{color:var(--green)}
.icn-gold,.icn-yellow{color:var(--gold)}
.icn-blue{color:var(--blue)}
.icn-muted{color:var(--text3)}

/* Buttons / labels that combine an icon + text keep them aligned
   and evenly spaced without layout shift */
.icn-label{display:inline-flex;align-items:center;gap:5px}

/* Sidebar year disclosure chevron (rotates instead of swapping glyphs) */
.yr-arrow-icon{display:inline-flex;color:var(--text3);transition:transform .15s ease}
.yr-arrow-icon.open{transform:rotate(90deg)}

/* ═══════════════════════════════════════════════════════════════════
   NxDropzone — universal drag & drop image upload component
   Single reusable visual language for every image upload field in
   the app. Respects light/dark theme automatically via CSS vars.
   Motion timings match the app's own scale (150–250ms, --ease-out).
═══════════════════════════════════════════════════════════════════ */

.nx-dropzone{
  position:relative;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:6px;
  text-align:center;
  padding:28px 20px;
  border-radius:14px;
  border:1.5px dashed var(--glass-border-h);
  background:var(--glass-1);
  cursor:pointer;
  transition:border-color .2s var(--ease-out),background .2s var(--ease-out),
             transform .2s var(--ease-out),box-shadow .2s var(--ease-out);
  outline:none;
  -webkit-tap-highlight-color:transparent;
}
.nx-dropzone:hover{
  border-color:var(--blue);
  background:var(--blue-dim);
}
.nx-dropzone:focus-visible{
  border-color:var(--blue);
  box-shadow:0 0 0 3px var(--blue-glow);
}
.nx-dropzone.nx-drag-over{
  border-color:var(--blue);
  border-style:solid;
  background:var(--blue-dim);
  transform:scale(1.02);
  box-shadow:0 0 0 4px var(--blue-glow),0 8px 28px var(--blue-glow);
}
.nx-dropzone.nx-has-error{
  border-color:rgba(248,113,113,0.55);
  background:rgba(248,113,113,0.06);
}
.nx-dropzone.nx-disabled{
  opacity:.5;pointer-events:none;
}

.nx-dropzone-icon{
  width:34px;height:34px;
  color:var(--blue);
  opacity:.85;
  transition:transform .2s var(--ease-spring);
}
.nx-dropzone.nx-drag-over .nx-dropzone-icon{ transform:translateY(-3px) scale(1.08); }
.nx-dropzone-icon svg{ width:100%;height:100%; }

.nx-dropzone-text-primary{
  font-size:13.5px;font-weight:600;color:var(--text);
  margin-top:4px;
}
.nx-dropzone-text-secondary{
  font-size:12px;color:var(--text2);
}
.nx-dropzone-meta{
  margin-top:6px;
  font-size:10.5px;color:var(--text3);
  letter-spacing:.02em;
}

/* Compact variant — used inside small grid slots (e.g. trade chart slots)
   where the full copy would overflow */
.nx-dropzone.nx-compact{
  padding:10px 8px;gap:3px;border-radius:10px;
}
.nx-dropzone.nx-compact .nx-dropzone-icon{ width:20px;height:20px; }
.nx-dropzone.nx-compact .nx-dropzone-text-primary{ font-size:10.5px; }
.nx-dropzone.nx-compact .nx-dropzone-text-secondary,
.nx-dropzone.nx-compact .nx-dropzone-meta{ display:none; }

.nx-dropzone-input{
  position:absolute;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;
}

/* ── Loading state ───────────────────────────────────────────────── */
.nx-dropzone-loading{
  display:flex;flex-direction:column;align-items:center;gap:8px;
  color:var(--text2);font-size:12px;
}
.nx-dropzone-spinner{
  width:22px;height:22px;border-radius:50%;
  border:2.5px solid var(--glass-border-h);
  border-top-color:var(--blue);
  animation:nx-spin .7s linear infinite;
}
@keyframes nx-spin{ to{ transform:rotate(360deg); } }

/* ── Inline error banner ─────────────────────────────────────────── */
.nx-dropzone-error{
  display:flex;align-items:center;gap:6px;
  margin-top:8px;padding:6px 10px;
  border-radius:8px;
  background:rgba(248,113,113,0.12);
  border:1px solid rgba(248,113,113,0.3);
  color:var(--red,#f87171);
  font-size:11.5px;font-weight:500;
  text-align:left;
  animation:nx-shake .32s var(--ease-out);
}
.nx-dropzone-error svg{ width:14px;height:14px;flex-shrink:0; }
@keyframes nx-shake{
  0%,100%{ transform:translateX(0); }
  25%{ transform:translateX(-3px); }
  75%{ transform:translateX(3px); }
}

/* ── Preview card (shown once a file is selected/dropped) ──────────── */
.nx-dropzone-preview{
  display:flex;align-items:center;gap:12px;
  width:100%;
  padding:10px 12px;
  border-radius:12px;
  border:1px solid var(--glass-border);
  background:var(--glass-2);
  text-align:left;
  animation:nx-fade-in .2s var(--ease-out);
}
@keyframes nx-fade-in{
  from{ opacity:0; transform:translateY(4px); }
  to{ opacity:1; transform:translateY(0); }
}
.nx-dropzone-preview-thumb{
  width:52px;height:52px;flex-shrink:0;
  border-radius:8px;overflow:hidden;
  background:var(--glass-1);
  border:1px solid var(--glass-border);
  display:flex;align-items:center;justify-content:center;
}
.nx-dropzone-preview-thumb img{
  width:100%;height:100%;object-fit:cover;display:block;
}
.nx-dropzone-preview-info{
  flex:1;min-width:0;
  display:flex;flex-direction:column;gap:2px;
}
.nx-dropzone-preview-name{
  font-size:12.5px;font-weight:600;color:var(--text);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.nx-dropzone-preview-meta{
  font-size:11px;color:var(--text3);
}
.nx-dropzone-preview-actions{
  display:flex;gap:6px;flex-shrink:0;
}
.nx-dropzone-preview-actions button{
  display:flex;align-items:center;justify-content:center;
  width:28px;height:28px;
  border-radius:7px;
  border:1px solid var(--glass-border);
  background:var(--glass-1);
  color:var(--text2);
  cursor:pointer;
  transition:all .15s var(--ease-out);
}
.nx-dropzone-preview-actions button:hover{
  background:var(--glass-3);color:var(--text);
  border-color:var(--glass-border-h);
  transform:translateY(-1px);
}
.nx-dropzone-preview-actions button.nx-remove:hover{
  background:rgba(248,113,113,0.14);color:var(--red,#f87171);
  border-color:rgba(248,113,113,0.35);
}
.nx-dropzone-preview-actions button svg{ width:14px;height:14px; }

@media (max-width: 640px){
  .nx-dropzone{ padding:20px 14px; }
  .nx-dropzone-icon{ width:28px;height:28px; }
  .nx-dropzone-text-primary{ font-size:12.5px; }
  .nx-dropzone-text-secondary,.nx-dropzone-meta{ font-size:11px; }
}

/* Reduced motion respect */
@media (prefers-reduced-motion: reduce){
  .nx-dropzone,.nx-dropzone-icon,.nx-dropzone-preview{ transition:none;animation:none; }
}

/* ── Progressive enhancement for existing legacy zones ──────────────
   These already have dragover/drop wired in JS (see aiChartDragOver /
   aiChartDrop in app.js) and toggle a `.drag-over` class — we simply
   give that state the same glow + scale language as .nx-dropzone so
   the whole app feels consistent even where the exact DOM predates
   this component. */
.ai-chart-upload-wrap.drag-over,
.wl-chart-upload-zone.drag-over,
.wl-day-upload-zone.drag-over{
  border-color:var(--blue) !important;
  border-style:solid !important;
  background:var(--blue-dim) !important;
  transform:scale(1.015);
  box-shadow:0 0 0 4px var(--blue-glow),0 8px 24px var(--blue-glow);
  transition:all .2s var(--ease-out);
}
.chart-sort-thumb.nx-drag-over{
  outline:2px solid var(--blue);
  outline-offset:-2px;
  background:var(--blue-dim);
  transform:scale(1.02);
  box-shadow:0 0 0 4px var(--blue-glow);
}
/* The dragenter/dragleave listeners actually live on `.chart-sort-item`
   (the outer slot), not `.chart-sort-thumb` — so the hover feedback needs
   its own rule on that element too, or nothing lights up while an OS file
   is being dragged across the grid (only the drop itself was visible). */
.chart-sort-item.nx-drag-over{
  transform:scale(1.04);
  z-index:2;
}
.chart-sort-item.nx-drag-over .chart-sort-thumb{
  outline:2px solid var(--blue);
  outline-offset:-2px;
  background:var(--blue-dim);
  box-shadow:0 0 0 4px var(--blue-glow);
  transition:outline-color .12s var(--ease-out), background .12s var(--ease-out), box-shadow .12s var(--ease-out);
}
.chart-sort-item.nx-drag-over .chart-sort-empty span:first-child{
  opacity:.7;
}

/* ═══════════════════════════════════════════════════════
   CALENDAR 2.0 — smarter stats, insights, score, heatmap,
   filters, view modes, weekly reports, richer day cells
   ═══════════════════════════════════════════════════════ */

/* sub-metric chip rows inside analytics cards */
.cal2-sub-row{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px}
.cal2-sub-chip{
  font-size:10px;font-weight:600;padding:3px 7px;border-radius:6px;
  background:var(--glass-2);border:1px solid var(--glass-border);color:var(--text2);
  display:inline-flex;align-items:center;gap:4px;white-space:nowrap;
}
.cal2-sub-chip.green{color:var(--green);border-color:rgba(52,211,153,.25);background:rgba(52,211,153,.08)}
.cal2-sub-chip.red{color:var(--red);border-color:rgba(248,113,113,.25);background:rgba(248,113,113,.08)}
.cal2-sub-chip.muted{color:var(--text3)}
.cal2-sub-dot{width:6px;height:6px;border-radius:50%;display:inline-block}
.cal2-sub-dot.green{background:var(--green);box-shadow:0 0 5px var(--green-glow)}
.cal2-sub-dot.red{background:var(--red);box-shadow:0 0 5px var(--red-glow)}
.cal2-sub-dot.blue{background:var(--blue);box-shadow:0 0 5px var(--blue-glow)}

/* Trading Score + Monthly Intelligence row */
.cal2-top-row{display:grid;grid-template-columns:minmax(220px,300px) 1fr;gap:14px;margin-top:2px;min-width:0}
@media (max-width: 900px){ .cal2-top-row{grid-template-columns:1fr} }
.cal2-score-card,.cal2-insights-card{min-width:0;
  background:var(--glass-1);border:1px solid var(--glass-border);border-radius:var(--r-xl);
  padding:16px 18px;box-shadow:var(--shadow-sm);min-width:0;
}
[data-theme="light"] .cal2-score-card,[data-theme="light"] .cal2-insights-card{background:var(--glass-2);box-shadow:var(--shadow-xs)}
.cal2-score-card{display:flex;align-items:center;gap:16px;min-width:0}
.cal2-score-card:empty,.cal2-insights-card:empty{display:none}
.cal2-score-ring{position:relative;flex:0 0 auto}
.cal2-score-ring-label{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.cal2-score-num{font-family:var(--font-mono,monospace);font-size:22px;font-weight:700;color:var(--text)}
.cal2-score-grade{font-size:11px;font-weight:800;letter-spacing:.03em}
.cal2-score-body{flex:1;min-width:0}
.cal2-score-title{font-size:12px;color:var(--text2);font-weight:600;display:flex;align-items:center;gap:5px}
.cal2-score-trend{font-size:10.5px;margin:3px 0 10px;font-weight:600}
.cal2-score-trend.green{color:var(--green)} .cal2-score-trend.red{color:var(--red)} .cal2-score-trend.muted{color:var(--text3)}
.cal2-score-bars{display:flex;flex-direction:column;gap:6px}
.cal2-score-bar-row{display:flex;align-items:center;gap:8px}
.cal2-score-bar-label{font-size:9.5px;color:var(--text3);width:66px;flex:0 0 auto}
.cal2-score-bar-track{flex:1;height:5px;border-radius:3px;background:var(--glass-3);overflow:hidden}
.cal2-score-bar-fill{height:100%;background:linear-gradient(90deg,var(--blue),var(--green));border-radius:3px;transition:width .4s var(--ease-out)}

.cal2-section-head{font-size:12px;font-weight:700;color:var(--text2);display:flex;align-items:center;gap:6px;margin-bottom:10px;text-transform:uppercase;letter-spacing:.04em}
.cal2-insight-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:8px}
.cal2-insight-card{
  display:flex;gap:9px;align-items:flex-start;padding:9px 10px;border-radius:10px;
  background:var(--glass-2);border:1px solid var(--glass-border);min-width:0;box-sizing:border-box;
}
.cal2-insight-card.green{border-color:rgba(52,211,153,.22)}
.cal2-insight-card.red{border-color:rgba(248,113,113,.22)}
.cal2-insight-card.blue{border-color:rgba(96,165,250,.22)}
.cal2-insight-card.amber{border-color:rgba(251,191,36,.25)}
.cal2-insight-icon{flex:0 0 auto;width:22px;height:22px;border-radius:6px;display:flex;align-items:center;justify-content:center}
.cal2-insight-card.green .cal2-insight-icon{background:rgba(52,211,153,.14);color:var(--green)}
.cal2-insight-card.red .cal2-insight-icon{background:rgba(248,113,113,.14);color:var(--red)}
.cal2-insight-card.blue .cal2-insight-icon{background:rgba(96,165,250,.14);color:var(--blue)}
.cal2-insight-card.amber .cal2-insight-icon{background:rgba(251,191,36,.16);color:var(--gold)}
.cal2-insight-icon svg{width:13px;height:13px}
.cal2-insight-text{font-size:11.5px;line-height:1.45;color:var(--text2);overflow-wrap:anywhere;min-width:0}

/* Filter bar */
.cal2-filter-bar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;min-width:0;max-width:100%}
.cal2-filter-sel{font-size:11px;padding:5px 8px;height:30px;width:auto;flex:1 1 150px;max-width:220px}
.cal2-filter-clear{
  display:inline-flex;align-items:center;gap:4px;font-size:11px;color:var(--text3);
  background:transparent;border:1px solid var(--glass-border);border-radius:6px;padding:5px 9px;cursor:pointer;
}
.cal2-filter-clear:hover{color:var(--red);border-color:rgba(248,113,113,.3)}

/* View mode / heatmap tabs */
.cal2-mode-tabs{display:flex;flex-wrap:wrap;align-items:center;gap:14px;padding:0 2px 12px}
.cal2-tab-group{display:flex;align-items:center;gap:4px;flex-wrap:wrap}
.cal2-heat-label{font-size:10.5px;color:var(--text3);display:flex;align-items:center;gap:4px;margin-right:2px}
.cal2-heat-label svg{width:12px;height:12px}
.cal2-tab{
  font-size:11px;font-weight:600;padding:5px 12px;border-radius:7px;cursor:pointer;
  background:transparent;border:1px solid transparent;color:var(--text3);transition:all .12s var(--ease-out);
}
.cal2-tab.sm{font-size:10px;padding:4px 9px}
.cal2-tab:hover{color:var(--text2);background:var(--glass-2)}
.cal2-tab.active{color:var(--bg);background:var(--blue);font-weight:700}

/* Richer day cells */
.cal2-day-meta{display:flex;align-items:center;gap:4px;margin-top:3px;flex-wrap:wrap}
.cal2-day-meta-2{margin-top:2px}
.cal2-day-sess{font-size:7.5px;font-weight:800;padding:1px 4px;border-radius:4px;letter-spacing:.02em;background:var(--glass-3);color:var(--text3)}
.cal2-day-sess.london{color:var(--kz-london);background:rgba(34,211,238,.14)}
.cal2-day-sess.ny{color:var(--kz-ny);background:rgba(251,191,36,.14)}
.cal2-day-sess.asian{color:var(--kz-asian);background:rgba(167,139,250,.14)}
.cal2-day-rr{font-size:7.5px;font-weight:700;color:var(--text3)}
.cal2-day-rule{display:inline-flex;align-items:center;justify-content:center;width:12px;height:12px;border-radius:50%}
.cal2-day-rule svg{width:8px;height:8px}
.cal2-day-rule.ok{color:var(--green)}
.cal2-day-rule.warn{color:var(--gold)}
.cal2-day-mistake{
  font-size:7px;color:var(--red);background:rgba(248,113,113,.12);border-radius:4px;
  padding:1px 4px;display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}

/* Weekly report cards */
.cal2-week-report{align-items:stretch !important;flex-direction:column;gap:4px}
.cal2-week-top{display:flex;align-items:center;justify-content:space-between}
.cal2-week-grade{font-size:12px;font-weight:800}
.cal2-week-stats{display:flex;flex-direction:column;gap:3px;margin-top:6px;padding-top:6px;border-top:1px solid var(--glass-border)}
.cal2-week-stat{display:flex;align-items:center;justify-content:space-between;gap:6px;font-size:10px;min-width:0}
.cal2-week-stat .k{color:var(--text3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cal2-week-stat .v{color:var(--text2);font-weight:600}
.cal2-week-stat .v.green{color:var(--green)}
.cal-week-card.empty{opacity:.55}

/* Agenda view */
.cal2-agenda-wrap{margin-top:4px}
.cal2-agenda{display:flex;flex-direction:column;gap:6px}
.cal2-agenda-empty{padding:32px;text-align:center;color:var(--text3);font-size:12px}
.cal2-agenda-row{min-width:0;box-sizing:border-box;
  display:flex;align-items:center;justify-content:space-between;padding:11px 14px;border-radius:10px;
  background:var(--glass-1);border:1px solid var(--glass-border);cursor:pointer;transition:all .12s var(--ease-out);
}
.cal2-agenda-row:hover{border-color:var(--glass-border-h);transform:translateX(2px)}
.cal2-agenda-row.win{box-shadow:inset 3px 0 0 var(--green)}
.cal2-agenda-row.loss{box-shadow:inset 3px 0 0 var(--red)}
.cal2-agenda-row.breakeven{box-shadow:inset 3px 0 0 var(--blue)}
.cal2-agenda-dow{font-size:12.5px;font-weight:600;color:var(--text)}
.cal2-agenda-sub{font-size:10.5px;color:var(--text3);margin-top:2px}
.cal2-agenda-pnl{font-size:14px;font-weight:700;font-family:var(--font-mono,monospace)}
.cal2-agenda-pnl.green{color:var(--green)} .cal2-agenda-pnl.red{color:var(--red)} .cal2-agenda-pnl.zero{color:var(--text3)}

/* Mobile tightening */
@media (max-width: 640px){
  .cal2-insight-grid{grid-template-columns:1fr}
  .cal2-score-card{flex-direction:row;padding:14px}
  .cal2-mode-tabs{gap:8px}
  .cal2-tab{padding:5px 9px;font-size:10.5px}
  .cal2-filter-sel{min-width:0;flex:1 1 45%}
}

/* ═══════════════════════════════════════════════════════
   CALENDAR 2.0 — Phase 4 (AI Coach tie-in) + Phase 5 (mobile)
   ═══════════════════════════════════════════════════════ */

/* AI Coach widget */
.cal2-coach-card{
  background:linear-gradient(160deg, rgba(96,165,250,.07), var(--glass-1) 55%);
  border:1px solid rgba(96,165,250,.18);border-radius:var(--r-xl);padding:16px 18px;
  box-shadow:var(--shadow-sm);
}
.cal2-coach-card:empty{display:none}
.cal2-coach-empty{display:flex;align-items:center;gap:8px;color:var(--text3);font-size:12px;padding:6px 2px}
.cal2-coach-empty svg{width:14px;height:14px}
.cal2-coach-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.cal2-coach-title{font-size:13px;font-weight:700;color:var(--text);display:flex;align-items:center;gap:7px}
.cal2-coach-title svg{width:14px;height:14px;color:var(--blue)}
.cal2-coach-conf{font-size:10.5px;font-weight:700;color:var(--blue);background:rgba(96,165,250,.12);padding:3px 9px;border-radius:20px}
.cal2-coach-cols{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:12px;min-width:0}
.cal2-coach-col{min-width:0}
.cal2-coach-col-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;margin-bottom:7px}
.cal2-coach-col-label.green{color:var(--green)} .cal2-coach-col-label.red{color:var(--red)}
.cal2-coach-item{display:flex;align-items:flex-start;gap:6px;font-size:11.5px;color:var(--text2);line-height:1.4;margin-bottom:6px;overflow-wrap:anywhere;min-width:0}
.cal2-coach-item svg{width:11px;height:11px;flex:0 0 auto;margin-top:2px}
.cal2-coach-item.green svg{color:var(--green)} .cal2-coach-item.red svg{color:var(--red)}
.cal2-coach-item.muted{color:var(--text3);font-style:italic}
.cal2-coach-rec{
  font-size:11.5px;color:var(--text2);line-height:1.5;background:var(--glass-2);border-radius:8px;
  padding:9px 11px;margin-bottom:12px;border:1px solid var(--glass-border);overflow-wrap:anywhere;box-sizing:border-box;
}
.cal2-coach-rec-label{display:block;font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--blue);margin-bottom:3px}
.cal2-coach-btn{
  width:100%;display:flex;align-items:center;justify-content:center;gap:7px;
  background:linear-gradient(135deg,var(--blue),#8b5cf6);color:#fff;border:none;border-radius:9px;
  padding:10px;font-size:12px;font-weight:700;cursor:pointer;transition:opacity .12s var(--ease-out), transform .12s var(--ease-out);
}
.cal2-coach-btn:hover{opacity:.9;transform:translateY(-1px)}
.cal2-coach-btn svg{width:13px;height:13px}
@media (max-width: 640px){ .cal2-coach-cols{grid-template-columns:1fr;gap:10px} }

/* Filter FAB (mobile only) + bottom sheet */
.cal2-filter-fab{
  display:none;align-items:center;gap:7px;position:relative;
  background:var(--glass-2);border:1px solid var(--glass-border);color:var(--text2);
  border-radius:20px;padding:9px 16px;font-size:12px;font-weight:600;cursor:pointer;width:fit-content;
}
.cal2-filter-fab-count{
  background:var(--blue);color:#fff;font-size:9.5px;font-weight:700;border-radius:10px;
  padding:1px 6px;min-width:14px;text-align:center;
}
.cal2-filter-sheet{position:fixed;inset:0;z-index:500;pointer-events:none;opacity:0;transition:opacity .2s var(--ease-out)}
.cal2-filter-sheet.open{pointer-events:auto;opacity:1}
.cal2-filter-sheet-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.6);backdrop-filter:blur(3px)}
.cal2-filter-sheet-panel{
  position:absolute;left:50%;bottom:0;transform:translate(-50%,100%);
  width:100%;max-width:480px;
  background:var(--bg2);border:1px solid var(--glass-border);border-bottom:none;
  border-radius:20px 20px 0 0;padding:10px 18px calc(22px + env(safe-area-inset-bottom, 0px));max-height:70vh;overflow-y:auto;
  box-shadow:0 -8px 40px rgba(0,0,0,.4);
  transition:transform .25s var(--ease-out);
}
.cal2-filter-sheet.open .cal2-filter-sheet-panel{transform:translate(-50%,0)}
.cal2-filter-sheet-handle{width:36px;height:4px;border-radius:2px;background:var(--glass-border);margin:6px auto 14px}
.cal2-filter-sheet-head{display:flex;align-items:center;justify-content:space-between;font-size:14px;font-weight:700;color:var(--text);margin-bottom:14px}
.cal2-filter-sheet-head button{background:none;border:none;color:var(--text3);cursor:pointer;padding:4px}
.cal2-filter-sheet-body{display:flex;flex-direction:column;gap:10px}
.cal2-filter-sheet-body select{
  width:100%;height:44px;flex:0 0 auto !important;background:var(--glass-3) !important;
  border:1px solid var(--glass-border-h,var(--glass-border));backdrop-filter:none !important;
}
.cal2-filter-sheet-body .cal2-filter-clear{width:100%;justify-content:center;padding:9px;background:var(--glass-3)}
.cal2-filter-sheet-apply{
  width:100%;margin-top:16px;background:var(--blue);color:#fff;border:none;border-radius:10px;
  padding:12px;font-size:13px;font-weight:700;cursor:pointer;
}
/* On short viewports (landscape phones, Nest Hub) the 70vh cap can still
   crowd out the Apply button below the fold — trim further. */
@media (max-height: 500px){ .cal2-filter-sheet-panel{max-height:88vh} }

/* Collapsible week cards (mobile) */
.cal2-week-expand-hint{display:none;font-size:9px;color:var(--text3);text-align:center;margin-top:6px}

/* ── Mobile-specific layout (Phase 5) ── */
@media (max-width: 900px){
  /* Filters: show FAB, hide inline desktop bar */
  .cal2-filter-fab{display:inline-flex}
  .cal2-filter-bar{display:none}

  /* Weekly report cards collapse to essentials until tapped */
  .cal2-week-report{cursor:pointer}
  .cal2-week-report .cal2-week-stats{
    max-height:0;overflow:hidden;opacity:0;margin-top:0;padding-top:0;border-top:none;
    transition:max-height .25s var(--ease-out), opacity .2s var(--ease-out);
  }
  .cal2-week-report.expanded .cal2-week-stats{
    max-height:200px;opacity:1;margin-top:6px;padding-top:6px;border-top:1px solid var(--glass-border);
  }
  .cal2-week-expand-hint{display:block}
  .cal2-week-report.expanded .cal2-week-expand-hint{display:none}
}

/* Weekly report cards carry more content (grade badge, stat rows) than
   the original label/pnl/days-pill card, but the summary still belongs
   in a single horizontal row like the rest of the mobile calendar —
   stacking one full-width card per week pushed this into a tall,
   scroll-heavy column. Keep it as one row of compact, equal-width cards;
   tapping a card expands its extra stats in place (siblings stay top
   aligned so they don't stretch to match the expanded card).
   NOTE: this must stay at the same breakpoint as the
   `.cal-week-col-wrap{width:100%}` rule above (760px) — that's what
   actually gives the row somewhere to grow into. The row-forcing rule
   used to live in the 900px block above and get squeezed into the
   desktop sidebar's 118px width for any viewport between 761–900px. */
@media (max-width: 760px){
  .cal-week-col{
    flex-direction:row !important;flex-wrap:nowrap !important;
    align-items:flex-start !important;gap:5px !important;
  }
  /* Cards stay flexible up to a floor width — below that (very narrow
     screens combined with a 5-6 week month) the row scrolls horizontally
     (see the base .cal-week-col overflow-x rule above) instead of
     clipping the PnL/day-count text. */
  .cal-week-card.cal2-week-report{
    flex:1 1 0% !important;width:auto !important;min-width:56px !important;
    text-align:center !important;align-items:center !important;justify-content:center !important;
    padding:9px 5px 8px !important;
  }
  .cal-week-card.cal2-week-report .cal2-week-top{
    flex-direction:column !important;gap:1px;align-items:center !important;justify-content:center !important;
  }
  .cal-week-card.cal2-week-report .cal-week-label{font-size:9px !important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
  .cal-week-card.cal2-week-report .cal2-week-grade{font-size:10px !important}
  .cal-week-card.cal2-week-report .cal-week-pnl{font-size:12.5px !important;margin-left:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
  .cal-week-card.cal2-week-report .cal-week-days{
    font-size:8px !important;padding:2px 6px !important;flex-shrink:0;
    white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis;
  }
  .cal-week-card.cal2-week-report .cal2-week-stats{width:100%}
  .cal-week-card.cal2-week-report .cal2-week-stat{font-size:9px}
  .cal-week-card.cal2-week-report .cal2-week-expand-hint{font-size:8px}
}

/* ═══════════════════════════════════════════════════════
   Dashboard <-> Calendar page: maximize / minimize buttons
   ═══════════════════════════════════════════════════════ */
.cal2-sec-head-row{display:flex;align-items:center;gap:12px;margin:22px 0 10px}
.cal2-max-btn, .cal2-min-btn{
  display:inline-flex;align-items:center;gap:6px;flex:0 0 auto;
  background:var(--glass-2);border:1px solid var(--glass-border);color:var(--text2);
  border-radius:8px;padding:6px 12px;font-size:11px;font-weight:600;cursor:pointer;
  transition:all .12s var(--ease-out);white-space:nowrap;
}
.cal2-max-btn:hover, .cal2-min-btn:hover{
  color:var(--blue);border-color:rgba(96,165,250,.3);background:rgba(96,165,250,.08);transform:translateY(-1px);
}
.cal2-max-btn svg, .cal2-min-btn svg{width:12px;height:12px}
.cal2-min-btn{margin-right:2px}
@media (max-width: 640px){
  .cal2-max-btn span, .cal2-min-btn span{display:none}
  .cal2-max-btn, .cal2-min-btn{padding:6px 9px}
}

/* ── Performance: reduce backdrop-filter cost on mobile ──────────────────
   backdrop-filter is one of the most GPU-expensive CSS properties, and
   phone GPUs handle it far worse than desktop ones. This further lowers
   blur radii (on top of the base reduction above) specifically for small
   screens/touch devices, where the lag was most noticeable. Visually the
   glass effect is still present, just lighter. */
@media (max-width: 768px){
  :root{
    --blur-xs: blur(3px);
    --blur-sm: blur(5px);
    --blur-md: blur(8px);
    --blur-lg: blur(12px);
    --blur-xl: blur(16px);
  }
}

/* ══════════════════════════════════════════════════════
   BACKTESTING LAB — Strategy Library (Phase 1)
═══════════════════════════════════════════════════════ */
.bl-tabs { display:flex; gap:4px; }
.bl-tab {
  padding:4px 13px; border-radius:var(--r-sm);
  border:1px solid transparent; background:transparent;
  color:var(--text2); font-size:11.5px; font-weight:500;
  cursor:pointer; transition:var(--t-fast); font-family:var(--font-body);
}
.bl-tab:hover { color:var(--text); background:var(--glass-1); }
.bl-tab.active { background:var(--glass-2); color:var(--text); border-color:var(--glass-border-h); }

.bl-strategy-grid {
  display:grid; grid-template-columns:repeat(auto-fill, minmax(300px, 1fr));
  gap:14px; margin-bottom:6px;
}
.bl-strategy-card {
  background:var(--glass-1); border:1px solid var(--glass-border);
  border-radius:var(--r-lg); padding:16px; transition:var(--t-med);
  box-shadow:var(--shadow-sm); position:relative; overflow:hidden;
  display:flex; flex-direction:column; gap:10px;
}
.bl-strategy-card::before {
  content:''; position:absolute; top:0; left:0; width:4px; height:100%;
  background:var(--bl-tag-color, var(--gold));
}
.bl-strategy-card:hover { background:var(--glass-2); border-color:var(--glass-border-h); transform:translateY(-1px); }
.bl-strategy-card-archived { opacity:.55; border-style:dashed; }
.bl-strategy-card-archived:hover { opacity:.8; }
.bl-card-head { display:flex; align-items:flex-start; justify-content:space-between; gap:8px; }
.bl-card-title { font-family:var(--font-head); font-size:15px; font-weight:700; letter-spacing:-.2px; }
.bl-card-meta { font-size:10.5px; color:var(--text3); margin-top:2px; font-family:var(--font-mono); text-transform:uppercase; letter-spacing:.04em; }
.bl-card-desc { font-size:11.5px; color:var(--text2); line-height:1.5; }
.bl-stat-grid { display:grid; grid-template-columns:repeat(3, 1fr); gap:8px; margin-top:2px; }
.bl-stat { background:var(--glass-0, rgba(255,255,255,.02)); border:1px solid var(--glass-border); border-radius:var(--r-sm); padding:7px 8px; text-align:center; }
.bl-stat-label { font-size:8.5px; color:var(--text3); text-transform:uppercase; letter-spacing:.05em; font-weight:600; }
.bl-stat-value { font-family:var(--font-mono); font-size:13px; font-weight:700; margin-top:2px; }
.bl-stat-value.empty { color:var(--text3); font-weight:500; }
.bl-card-actions { display:flex; gap:5px; flex-wrap:wrap; margin-top:2px; }
.bl-card-actions .wl-week-btn { font-size:10px; padding:3px 9px; }
.bl-empty-card {
  border:1.5px dashed var(--glass-border); border-radius:var(--r-lg);
  min-height:160px; display:flex; flex-direction:column; align-items:center;
  justify-content:center; gap:6px; color:var(--text3); cursor:pointer;
  transition:var(--t-fast); grid-column:1 / -1;
}
.bl-empty-card:hover { border-color:var(--gold); color:var(--gold); background:rgba(251,191,36,.04); }

.bl-color-row { display:flex; gap:8px; margin-top:4px; }
.bl-color-dot {
  width:24px; height:24px; border-radius:50%; cursor:pointer;
  border:2px solid transparent; transition:var(--t-fast); flex-shrink:0;
}
.bl-color-dot.selected { border-color:var(--text); transform:scale(1.12); }

.bl-version-item {
  display:flex; align-items:center; justify-content:space-between; gap:10px;
  padding:9px 11px; border:1px solid var(--glass-border); border-radius:var(--r-sm);
  margin-bottom:6px; font-size:11.5px;
}
.bl-version-ts { color:var(--text3); font-family:var(--font-mono); font-size:10.5px; }

@media (max-width:768px){
  .bl-strategy-grid { grid-template-columns:1fr; }
  .bl-stat-grid { grid-template-columns:repeat(3, 1fr); }
}

.bl-lbl { font-size:11px; color:var(--text3); font-weight:600; text-transform:uppercase; letter-spacing:.05em; display:block; margin-bottom:5px; }
.bl-lbl-sub { font-weight:400; text-transform:none; color:var(--gold); letter-spacing:normal; }

/* ══════════════════════════════════════════════════════
   BACKTESTING LAB — Sessions + Trade Simulator (Phase 2)
═══════════════════════════════════════════════════════ */
.bt-session-card {
  background:var(--glass-1); border:1px solid var(--glass-border);
  border-radius:var(--r-lg); padding:16px; transition:var(--t-med);
  box-shadow:var(--shadow-sm); display:flex; flex-direction:column; gap:10px;
}
.bt-session-card:hover { background:var(--glass-2); border-color:var(--glass-border-h); transform:translateY(-1px); }
.bt-session-card-completed { opacity:.75; }
.bt-session-head { display:flex; align-items:flex-start; justify-content:space-between; gap:8px; }
.bt-session-title { font-family:var(--font-head); font-size:15px; font-weight:700; letter-spacing:-.2px; }
.bt-session-meta { font-size:10.5px; color:var(--text3); margin-top:2px; font-family:var(--font-mono); text-transform:uppercase; letter-spacing:.04em; }
.bt-status-pill { font-size:9px; font-weight:700; text-transform:uppercase; letter-spacing:.05em; padding:3px 8px; border-radius:20px; flex-shrink:0; }
.bt-status-active { background:rgba(52,211,153,.14); color:var(--green); border:1px solid rgba(52,211,153,.3); }
.bt-status-completed { background:rgba(148,163,184,.14); color:var(--text3); border:1px solid var(--glass-border); }

.bt-detail-overlay { z-index:1000; }
.bt-detail-modal { max-width:920px; width:94vw; max-height:90vh; }
.bt-stat-bar { display:grid; grid-template-columns:repeat(auto-fit, minmax(100px, 1fr)); gap:8px; margin:14px 0; }
.bt-stat-bar .bl-stat-value { font-size:14px; }
.bt-timeline { display:flex; flex-direction:column; gap:8px; }
.bt-timeline-item {
  display:flex; align-items:center; gap:12px; padding:10px 12px;
  border:1px solid var(--glass-border); border-radius:var(--r-sm);
  background:var(--glass-0, rgba(255,255,255,.02)); cursor:pointer; transition:var(--t-fast);
}
.bt-timeline-item:hover { background:var(--glass-1); border-color:var(--glass-border-h); }
.bt-timeline-dir { font-size:10px; font-weight:700; padding:3px 8px; border-radius:6px; flex-shrink:0; text-transform:uppercase; }
.bt-timeline-dir.buy { background:rgba(52,211,153,.14); color:var(--green); }
.bt-timeline-dir.sell { background:rgba(248,113,113,.14); color:var(--red); }
.bt-timeline-main { flex:1; min-width:0; font-size:12px; }
.bt-timeline-time { font-family:var(--font-mono); font-size:10px; color:var(--text3); }
.bt-timeline-rr { font-family:var(--font-mono); font-size:13px; font-weight:700; flex-shrink:0; }
.bt-timeline-rr.pos { color:var(--green); }
.bt-timeline-rr.neg { color:var(--red); }
.bt-rating-row { display:grid; grid-template-columns:1fr 1fr 1fr; gap:10px; }
.bt-screenshot-row { display:grid; grid-template-columns:repeat(4, 1fr); gap:8px; }
.bt-screenshot-slot {
  border:1.5px dashed var(--glass-border); border-radius:var(--r-sm); padding:10px 6px;
  text-align:center; font-size:10px; color:var(--text3); cursor:pointer; transition:var(--t-fast);
  display:flex; flex-direction:column; align-items:center; gap:4px; min-height:70px; justify-content:center;
  background-size:cover; background-position:center; position:relative; overflow:hidden;
}
.bt-screenshot-slot:hover { border-color:var(--gold); color:var(--gold); }
.bt-screenshot-slot.filled { border-style:solid; color:transparent; }
.bt-screenshot-slot.filled span { display:none; }

/* ══════════════════════════════════════════════════════
   BACKTESTING LAB — Phase 5: Screenshot Gallery + Strategy Comparison
═══════════════════════════════════════════════════════ */
.bl-gallery-grid {
  display:grid; grid-template-columns:repeat(auto-fill, minmax(140px, 1fr)); gap:10px; margin-top:10px;
}
.bl-gallery-thumb {
  position:relative; aspect-ratio:4/3; border-radius:var(--r-sm); overflow:hidden;
  background-size:cover; background-position:center; cursor:pointer;
  border:1px solid var(--glass-border); transition:var(--t-fast);
}
.bl-gallery-thumb:hover { border-color:var(--gold); transform:translateY(-1px); }
.bl-gallery-thumb-tag {
  position:absolute; top:6px; left:6px; font-size:9px; font-weight:700; text-transform:uppercase;
  letter-spacing:.04em; padding:2px 7px; border-radius:5px;
  background:rgba(0,0,0,.55); color:#fff; backdrop-filter:blur(2px);
}
.bl-gallery-thumb-meta {
  position:absolute; bottom:0; left:0; right:0; display:flex; align-items:center; justify-content:space-between;
  padding:5px 7px; font-size:10px; font-family:var(--font-mono); color:#fff;
  background:linear-gradient(0deg, rgba(0,0,0,.75), transparent);
}
.bl-gallery-thumb-meta .pos { color:var(--green); font-weight:700; }
.bl-gallery-thumb-meta .neg { color:var(--red); font-weight:700; }

tr.bl-compare-best { background:rgba(251,191,36,.07); }
tr.bl-compare-best td { border-color:rgba(251,191,36,.2); }

.bt-export-menu {
  position:absolute; top:36px; right:0; z-index:20; flex-direction:column; min-width:190px;
  background:var(--bg-2, #0d1119); border:1px solid var(--glass-border); border-radius:var(--r-sm);
  box-shadow:0 10px 30px rgba(0,0,0,.4); padding:6px; gap:2px;
}
.bt-export-menu button {
  display:flex; align-items:center; gap:8px; width:100%; text-align:left; background:transparent;
  border:none; color:var(--text); font-size:12px; font-family:inherit; padding:8px 10px; border-radius:6px; cursor:pointer;
}
.bt-export-menu button:hover { background:var(--glass-1); color:var(--gold); }

/* ══════════════════════════════════════════════════════
   BACKTESTING LAB — Trading Workstation (Chart Replay)
   TradingView Lightweight Charts + custom drawing overlay,
   FXReplay-inspired layout. Modules: topbar / left toolbar /
   chart+overlay / floating replay pill / bottom dock.
═══════════════════════════════════════════════════════ */
.rep-fullscreen-overlay {
  position:fixed; inset:0; z-index:2000; background:var(--bg-base);
  background-image:radial-gradient(circle at 15% 0%, rgba(96,165,250,.05), transparent 45%),
                    radial-gradient(circle at 85% 100%, rgba(251,191,36,.04), transparent 45%);
  display:flex; flex-direction:column; opacity:0; transition:opacity .2s var(--ease-out);
  font-family:var(--font-body); color:var(--text); user-select:none;
}
.rep-fullscreen-overlay.open { opacity:1; }

/* ── Top bar ─────────────────────────────────────────── */
.rep-topbar {
  display:flex; align-items:center; justify-content:space-between; gap:12px;
  padding:0 14px; height:48px; flex-shrink:0; z-index:30;
  background:var(--bg3); backdrop-filter:var(--blur-md); border-bottom:1px solid var(--glass-border);
}
.rep-topbar-group { display:flex; align-items:center; gap:6px; min-width:0; }
.rep-topbar-title {
  font-family:var(--font-head); font-weight:800; font-size:13.5px; letter-spacing:.2px;
  display:flex; align-items:center; gap:7px; white-space:nowrap; color:var(--text);
}
.rep-topbar-title .rep-live-dot { width:6px; height:6px; border-radius:50%; background:var(--green); box-shadow:0 0 8px var(--green); flex-shrink:0; }
.rep-topbar-divider { width:1px; height:22px; background:var(--glass-border); flex-shrink:0; margin:0 2px; }

.rep-select, .rep-input {
  background:var(--glass-1); border:1px solid var(--glass-border); color:var(--text);
  border-radius:var(--r-sm); padding:6px 9px; font-size:11.5px; font-family:var(--font-body);
  transition:var(--t-fast); height:30px; cursor:pointer;
}
.rep-select:hover, .rep-input:hover { background:var(--glass-2); border-color:var(--glass-border-h); }
.rep-select:focus, .rep-input:focus { outline:none; border-color:var(--border-focus); }
.rep-input { cursor:text; width:88px; font-family:var(--font-mono); font-weight:600; }

.rep-icon-btn {
  width:30px; height:30px; display:flex; align-items:center; justify-content:center;
  background:transparent; border:1px solid transparent; color:var(--text2);
  border-radius:var(--r-sm); cursor:pointer; transition:var(--t-fast); flex-shrink:0; position:relative;
}
.rep-icon-btn svg { width:16px; height:16px; }
.rep-icon-btn:hover { background:var(--glass-2); color:var(--text); border-color:var(--glass-border); }
.rep-icon-btn.active { background:rgba(251,191,36,.14); color:var(--gold); border-color:rgba(251,191,36,.35); }
.rep-icon-btn:disabled { opacity:.35; cursor:not-allowed; }
.rep-icon-btn:disabled:hover { background:transparent; color:var(--text2); border-color:transparent; }

.rep-close-btn {
  width:30px; height:30px; display:flex; align-items:center; justify-content:center;
  background:var(--glass-1); border:1px solid var(--glass-border); color:var(--text2);
  border-radius:var(--r-sm); cursor:pointer; transition:var(--t-fast);
}
.rep-close-btn:hover { background:rgba(248,113,113,.14); border-color:rgba(248,113,113,.4); color:var(--red); }

/* ── Workspace: left toolbar + chart ─────────────────── */
.rep-workspace { flex:1; min-height:0; position:relative; display:flex; }

.rep-left-toolbar {
  width:46px; flex-shrink:0; z-index:25; background:var(--bg3); backdrop-filter:var(--blur-md);
  border-right:1px solid var(--glass-border); display:flex; flex-direction:column; align-items:center;
  padding:8px 0; gap:2px; overflow-y:auto; overflow-x:hidden;
}
.rep-left-toolbar::-webkit-scrollbar { width:0; }
.rep-tool-btn {
  width:34px; height:34px; flex-shrink:0; display:flex; align-items:center; justify-content:center;
  background:transparent; border:1px solid transparent; color:var(--text2); border-radius:var(--r-sm);
  cursor:pointer; transition:var(--t-fast); position:relative;
}
.rep-tool-btn svg { width:17px; height:17px; }
.rep-tool-btn:hover { background:var(--glass-2); color:var(--text); }
.rep-tool-btn.active { background:rgba(251,191,36,.18); color:var(--gold); box-shadow:inset 0 0 0 1px rgba(251,191,36,.4); }
.rep-tool-btn.on { color:var(--blue); }
.rep-tool-sep { width:22px; height:1px; background:var(--glass-border); margin:5px 0; flex-shrink:0; }
.rep-tool-btn .rep-tooltip {
  position:absolute; left:calc(100% + 8px); top:50%; transform:translateY(-50%) translateX(-4px);
  background:rgba(10,12,18,.96); border:1px solid var(--glass-border); color:var(--text);
  padding:5px 9px; border-radius:var(--r-sm); font-size:11px; font-weight:600; white-space:nowrap;
  pointer-events:none; opacity:0; transition:var(--t-fast); box-shadow:var(--shadow-md); z-index:60;
}
.rep-tool-btn:hover .rep-tooltip { opacity:1; transform:translateY(-50%) translateX(0); }

.rep-chart-area { flex:1; min-width:0; position:relative; }
.rep-chart-wrap { position:absolute; inset:0; }
/* rep-overlay-canvas: legacy hand-rolled drawing surface. No longer
   wired to mouse events now that the real TradingView chart owns
   drawing/crosshair/zoom — left in place (inert) rather than ripped
   out, so the #rep-overlay element some other code still references
   doesn't disappear. Safe to delete once you're fully migrated. */
.rep-overlay-canvas { position:absolute; inset:0; z-index:5; cursor:default; pointer-events:none; }
.rep-overlay-canvas.drawing { cursor:crosshair; pointer-events:auto; }
.rep-overlay-canvas.dragging { cursor:grabbing; }

/* ── TradingView-style symbol search dialog ── */
.rep-symbol-search-backdrop {
  display:none; position:fixed; inset:0; z-index:200;
  background:rgba(4,6,10,.55); backdrop-filter:blur(2px);
  align-items:flex-start; justify-content:center; padding-top:12vh;
}
.rep-symbol-search-backdrop.open { display:flex; }
.rep-symbol-search {
  width:520px; max-width:92vw; max-height:64vh; display:flex; flex-direction:column;
  background:var(--glass-1, #10141d); border:1px solid var(--glass-border, rgba(255,255,255,.08));
  border-radius:12px; box-shadow:0 24px 60px rgba(0,0,0,.55); overflow:hidden;
}
.rep-symsearch-input-row {
  display:flex; align-items:center; gap:8px; padding:12px 14px;
  border-bottom:1px solid var(--glass-border, rgba(255,255,255,.08));
}
.rep-symsearch-input-row svg { width:16px; height:16px; color:var(--text3, #8b96a8); flex:none; }
.rep-symsearch-input-row input {
  flex:1; background:transparent; border:none; outline:none; color:var(--text, #e2e8f0);
  font-family:var(--font-mono); font-size:14px; font-weight:600;
}
.rep-symsearch-tabs { display:flex; gap:2px; padding:8px 10px 0; overflow-x:auto; flex:none; }
.rep-symsearch-tab {
  background:transparent; border:none; color:var(--text3, #8b96a8); font-size:11.5px; font-weight:600;
  padding:6px 10px; border-radius:6px 6px 0 0; cursor:pointer; white-space:nowrap;
}
.rep-symsearch-tab:hover { color:var(--text, #e2e8f0); background:rgba(255,255,255,.04); }
.rep-symsearch-tab.active { color:var(--gold, #fbbf24); border-bottom:2px solid var(--gold, #fbbf24); }
.rep-symsearch-results { overflow-y:auto; padding:6px; }
.rep-symsearch-row {
  display:flex; align-items:center; gap:10px; padding:8px 8px; border-radius:6px; cursor:pointer;
}
.rep-symsearch-row:hover, .rep-symsearch-row.highlighted { background:rgba(255,255,255,.06); }
.rep-symsearch-type {
  font-size:9.5px; font-weight:700; text-transform:uppercase; letter-spacing:.04em;
  color:var(--text3, #8b96a8); background:rgba(255,255,255,.06); border-radius:4px; padding:2px 6px; flex:none;
}
.rep-symsearch-name { font-family:var(--font-mono); font-weight:700; color:var(--text, #e2e8f0); flex:none; width:96px; }
.rep-symsearch-desc { flex:1; font-size:12px; color:var(--text2, #a8b3c4); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.rep-symsearch-fav { background:none; border:none; color:var(--text3, #8b96a8); cursor:pointer; font-size:14px; padding:2px 4px; }
.rep-symsearch-fav.on, .rep-symsearch-fav:hover { color:var(--gold, #fbbf24); }
.rep-symsearch-empty { padding:24px 12px; text-align:center; color:var(--text3, #8b96a8); font-size:13px; }

.rep-loading, .rep-error {
  position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
  color:var(--text3); font-size:13px; text-align:center; padding:20px; flex-direction:column; gap:10px;
}
.rep-error { color:var(--red); }
.rep-spinner {
  width:22px; height:22px; border-radius:50%; border:2px solid var(--glass-border);
  border-top-color:var(--gold); animation:rep-spin .7s linear infinite;
}
@keyframes rep-spin { to { transform:rotate(360deg); } }

.rep-ohlc-badge {
  position:absolute; top:10px; left:10px; z-index:15; display:flex; align-items:center; gap:9px;
  background:rgba(10,12,18,.72); backdrop-filter:var(--blur-sm); border:1px solid var(--glass-border);
  border-radius:var(--r-md); padding:6px 12px; font-family:var(--font-mono); font-size:11px;
  color:var(--text2); pointer-events:none; box-shadow:var(--shadow-sm);
}
.rep-ohlc-badge b { color:var(--text); font-weight:700; }
.rep-ohlc-badge .up { color:var(--green); } .rep-ohlc-badge .dn { color:var(--red); }

.rep-symbol-badge {
  position:absolute; top:10px; left:50%; transform:translateX(-50%); z-index:15;
  font-family:var(--font-head); font-weight:700; font-size:12px; color:var(--text2);
  background:rgba(10,12,18,.55); border:1px solid var(--glass-border); border-radius:var(--r-full);
  padding:5px 14px; pointer-events:none; letter-spacing:.3px;
}

/* ── Floating replay control pill (FXReplay-style) ───── */
.rep-replay-pill {
  position:absolute; left:50%; bottom:18px; transform:translateX(-50%); z-index:20;
  display:flex; align-items:center; gap:10px; background:rgba(13,16,24,.85);
  backdrop-filter:var(--blur-lg); border:1px solid var(--glass-border-h); border-radius:var(--r-xl);
  padding:8px 14px; box-shadow:var(--shadow-lg); cursor:default;
}
.rep-replay-pill .rep-drag-handle { display:flex; gap:2px; cursor:grab; padding:2px; opacity:.4; }
.rep-replay-pill .rep-drag-handle:hover { opacity:.8; }
.rep-drag-handle span { width:3px; height:3px; border-radius:50%; background:var(--text2); }
.rep-play-btn {
  width:30px; height:30px; border-radius:50%; display:flex; align-items:center; justify-content:center;
  background:var(--gold); color:#1a1200; border:none; cursor:pointer; transition:var(--t-fast);
  box-shadow:0 0 14px rgba(251,191,36,.35);
}
.rep-play-btn:hover { transform:scale(1.06); box-shadow:0 0 18px rgba(251,191,36,.5); }
.rep-play-btn svg { width:14px; height:14px; }
.rep-step-btn {
  width:26px; height:26px; border-radius:50%; display:flex; align-items:center; justify-content:center;
  background:var(--glass-2); color:var(--text); border:1px solid var(--glass-border); cursor:pointer; transition:var(--t-fast);
}
.rep-step-btn:hover { background:var(--glass-3); }
.rep-step-btn svg { width:13px; height:13px; }
.rep-progress-track {
  width:180px; height:4px; border-radius:var(--r-full); background:var(--glass-2); position:relative; cursor:pointer;
}
.rep-progress-fill { position:absolute; inset:0; border-radius:var(--r-full); background:linear-gradient(90deg,var(--gold),var(--blue)); width:0%; }
.rep-progress-track input[type=range] {
  position:absolute; inset:-6px 0; width:100%; height:16px; opacity:0; cursor:pointer; margin:0;
}
.rep-candle-counter { font-family:var(--font-mono); font-size:10.5px; color:var(--text3); white-space:nowrap; min-width:80px; }
.rep-pill-toggle {
  display:flex; align-items:center; justify-content:center; width:26px; height:26px; border-radius:50%;
  background:transparent; border:1px solid var(--glass-border); color:var(--text3); cursor:pointer; transition:var(--t-fast);
}
.rep-pill-toggle svg { width:12px; height:12px; }
.rep-pill-toggle.active { color:var(--blue); border-color:rgba(96,165,250,.4); background:rgba(96,165,250,.1); }

/* ── Indicators / settings popovers ──────────────────── */
.rep-popover {
  position:absolute; top:44px; right:14px; z-index:40; width:220px;
  background:rgba(13,16,24,.94); backdrop-filter:var(--blur-lg); border:1px solid var(--glass-border-h);
  border-radius:var(--r-lg); box-shadow:var(--shadow-xl); padding:10px; display:none; flex-direction:column; gap:2px;
}
.rep-popover.open { display:flex; }
.rep-popover-title { font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.5px; color:var(--text3); padding:4px 6px 6px; }
.rep-popover-row {
  display:flex; align-items:center; justify-content:space-between; padding:7px 8px; border-radius:var(--r-sm);
  font-size:12px; cursor:pointer; transition:var(--t-fast); color:var(--text2);
}
.rep-popover-row:hover { background:var(--glass-1); color:var(--text); }
.rep-popover-row .dot { width:8px; height:8px; border-radius:50%; margin-right:8px; flex-shrink:0; }
.rep-popover-check { width:14px; height:14px; border-radius:4px; border:1px solid var(--glass-border-h); display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.rep-popover-row.on .rep-popover-check { background:var(--gold); border-color:var(--gold); }
.rep-popover-row.on .rep-popover-check svg { width:10px; height:10px; color:#1a1200; }

/* ── Right-click context menu for drawings ───────────── */
.rep-ctx-menu {
  position:fixed; z-index:100; min-width:170px; background:rgba(13,16,24,.97); backdrop-filter:var(--blur-lg);
  border:1px solid var(--glass-border-h); border-radius:var(--r-md); box-shadow:var(--shadow-xl); padding:5px; display:none;
}
.rep-ctx-menu.open { display:block; }
.rep-ctx-item {
  display:flex; align-items:center; gap:9px; padding:7px 10px; border-radius:var(--r-sm);
  font-size:12px; color:var(--text2); cursor:pointer; transition:var(--t-fast);
}
.rep-ctx-item:hover { background:var(--glass-2); color:var(--text); }
.rep-ctx-item.danger:hover { background:rgba(248,113,113,.14); color:var(--red); }
.rep-ctx-item svg { width:13px; height:13px; }
.rep-ctx-colors { display:flex; gap:5px; padding:6px 8px; }
.rep-ctx-color { width:16px; height:16px; border-radius:50%; cursor:pointer; border:1.5px solid rgba(255,255,255,.25); transition:var(--t-fast); }
.rep-ctx-color:hover { transform:scale(1.15); }
.rep-ctx-sep { height:1px; background:var(--glass-border); margin:4px 2px; }

/* ── Bottom trading dock ──────────────────────────────── */
.rep-bottom-dock {
  flex-shrink:0; z-index:30; display:flex; align-items:center; justify-content:space-between; gap:14px;
  padding:0 16px; height:52px; background:var(--bg3); backdrop-filter:var(--blur-md); border-top:1px solid var(--glass-border);
}
.rep-dock-stats { display:flex; align-items:center; gap:20px; overflow-x:auto; min-width:0; }
.rep-dock-stats::-webkit-scrollbar { display:none; }
.rep-dock-stat { display:flex; flex-direction:column; gap:1px; white-space:nowrap; }
.rep-dock-stat-label { font-size:9.5px; color:var(--text3); text-transform:uppercase; letter-spacing:.4px; font-weight:600; }
.rep-dock-stat-value { font-family:var(--font-mono); font-size:12.5px; font-weight:700; color:var(--text); }
.rep-dock-stat-value.up { color:var(--green); } .rep-dock-stat-value.dn { color:var(--red); }
.rep-dock-divider { width:1px; height:26px; background:var(--glass-border); flex-shrink:0; }
.rep-dock-actions { display:flex; align-items:center; gap:8px; flex-shrink:0; }
.rep-qty-input {
  width:88px; height:34px; background:var(--glass-1); border:1px solid var(--glass-border); color:var(--text);
  border-radius:var(--r-sm); padding:0 10px; font-family:var(--font-mono); font-size:12px; font-weight:600;
}
.rep-exec-btn {
  height:34px; padding:0 18px; border-radius:var(--r-sm); font-weight:700; font-size:12.5px;
  cursor:pointer; border:1px solid transparent; font-family:var(--font-body); display:flex; align-items:center; gap:6px;
  box-shadow:var(--shadow-sm); transition:var(--t-fast);
}
.rep-exec-btn svg { width:12px; height:12px; }
.rep-exec-buy { background:var(--green); border-color:var(--green); color:#04231a; }
.rep-exec-buy:hover { box-shadow:var(--glow-green); transform:translateY(-1px); }
.rep-exec-sell { background:var(--red); border-color:var(--red); color:#2b0a0a; }
.rep-exec-sell:hover { box-shadow:var(--glow-red); transform:translateY(-1px); }

/* ── Selection handles (drawn on overlay, styled via canvas — these are DOM fallbacks) ── */
.rep-tool-btn[data-tool="select"] { color:var(--blue); }

@media (max-width:900px){
  .rep-left-toolbar { width:40px; }
  .rep-tool-btn { width:30px; height:30px; }
  .rep-dock-stats { gap:12px; }
  .rep-replay-pill { padding:6px 10px; gap:7px; }
  .rep-progress-track { width:100px; }
}
@media (max-width:640px){
  .rep-topbar-title span.rep-title-text { display:none; }
  .rep-ohlc-badge { font-size:9.5px; padding:5px 8px; gap:6px; }
  .rep-symbol-badge { display:none; }
  .rep-dock-stat:nth-child(n+4) { display:none; }
  .rep-qty-input { width:64px; }
}

/* ══════════════════════════════════════════════════════
   BACKTESTING LAB — Phase 8: Playbook + Calendar Integration
   (Sections 13 & 14)
═══════════════════════════════════════════════════════ */

/* ── Section 13: Strong-setup badge + Save to Playbook ── */
.bl-strategy-card-strong { box-shadow:var(--shadow-sm), 0 0 0 1px rgba(251,191,36,.18); }
.bl-strategy-card-strong::before { box-shadow:0 0 10px var(--bl-tag-color, var(--gold)); }
.bl-strong-badge {
  display:inline-flex; align-items:center; gap:4px;
  padding:2px 8px; border-radius:var(--r-full);
  font-size:9px; font-weight:700; text-transform:uppercase; letter-spacing:.04em;
  background:rgba(251,191,36,.14); color:var(--gold);
  border:1px solid rgba(251,191,36,.3); white-space:nowrap;
}
.bl-strong-badge .icn { width:10px; height:10px; }
.bl-save-pb-strong {
  background:rgba(251,191,36,.12) !important; border-color:rgba(251,191,36,.35) !important;
  color:var(--gold) !important; font-weight:700 !important;
}
.bl-save-pb-strong:hover { background:rgba(251,191,36,.22) !important; }

/* Link badge shown on a Playbook model that was saved from the Lab */
.pb-lab-badge {
  background:rgba(52,211,153,.12) !important; color:var(--green) !important;
  border-color:rgba(52,211,153,.28) !important; display:inline-flex; align-items:center; gap:3px;
}
.pb-lab-badge .icn { width:9px; height:9px; }
.pb-lab-badge:hover { background:rgba(52,211,153,.22) !important; }

/* ── Section 14: Backtest sessions on the Calendar ── */
.cal-day-bt-badge {
  position:absolute; bottom:6px; right:6px; z-index:2;
  width:16px; height:16px; border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  background:rgba(168,139,250,.16); border:1px solid rgba(168,139,250,.4);
  color:#a78bfa; cursor:pointer; transition:var(--t-fast);
}
.cal-day-bt-badge:hover { background:rgba(168,139,250,.3); transform:scale(1.12); }
.cal-day-bt-badge .icn { width:9px; height:9px; }
.cal-day-bt-count {
  position:absolute; top:-4px; right:-4px; min-width:11px; height:11px; padding:0 2px;
  border-radius:var(--r-full); background:#a78bfa; color:#0a0a0a;
  font-size:7px; font-weight:800; display:flex; align-items:center; justify-content:center;
  font-family:var(--font-mono);
}
.cal-day.has-backtest:not(.has-trades) { cursor:default; }
[data-theme="light"] .cal-day-bt-badge { background:rgba(124,58,237,.1); border-color:rgba(124,58,237,.3); color:#7c3aed; }

/* Backtest day drill-down modal */
.bt-day-drilldown-modal { max-width:560px; width:92vw; max-height:86vh; }
.bt-day-session-row {
  border:1px solid var(--glass-border); border-radius:var(--r-lg);
  padding:12px; background:var(--glass-1); display:flex; flex-direction:column; gap:9px;
}
.bt-day-session-head { display:flex; align-items:flex-start; justify-content:space-between; gap:8px; }
.bt-day-session-title { font-family:var(--font-head); font-size:13.5px; font-weight:700; letter-spacing:-.2px; }
.bt-day-session-meta { font-size:10px; color:var(--text3); margin-top:2px; font-family:var(--font-mono); text-transform:uppercase; letter-spacing:.04em; }
.bt-day-trade-list { display:flex; gap:5px; flex-wrap:wrap; }
.bt-day-trade-chip {
  font-family:var(--font-mono); font-size:10px; font-weight:700;
  padding:3px 8px; border-radius:var(--r-full); cursor:pointer;
  background:var(--glass-0, rgba(255,255,255,.02)); border:1px solid var(--glass-border);
  transition:var(--t-fast);
}
.bt-day-trade-chip:hover { background:var(--glass-2); }
.bt-day-trade-chip.green { color:var(--green); border-color:rgba(52,211,153,.3); }
.bt-day-trade-chip.red { color:var(--red); border-color:rgba(248,113,113,.3); }
.bt-day-trade-chip.blue { color:var(--blue); border-color:rgba(96,165,250,.3); }
.bt-day-trade-chip.muted { color:var(--text3); cursor:default; }

@media (max-width:768px){
  .cal-day-bt-badge { width:13px; height:13px; bottom:4px; right:4px; }
  .cal-day-bt-badge .icn { width:7px; height:7px; }
}
