/* ============================================================
   Nexus Design System — Foundations (from Claude Design export)
   Mobile-first dashboard for Solana memecoin trading bot.
   Light, clean palette. No dark mode. No neon/cyber.
   ============================================================ */

@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600&display=swap');

:root {
  --nx-primary:        #2563EB;
  --nx-primary-hover:  #1D4FD7;
  --nx-primary-press:  #1E40AF;
  --nx-primary-soft:   #EFF4FF;
  --nx-primary-ring:   rgba(37, 99, 235, 0.18);

  --nx-positive:       #16A34A;
  --nx-positive-soft:  #ECFDF3;
  --nx-positive-deep:  #137A3A;

  --nx-negative:       #DC2626;
  --nx-negative-soft:  #FEF2F2;
  --nx-negative-deep:  #B91C1C;

  --nx-warning:        #D97706;
  --nx-warning-soft:   #FFF7ED;

  --nx-info:           #0EA5E9;
  --nx-info-soft:      #F0F9FF;

  --nx-white:          #FFFFFF;
  --nx-bg:             #FFFFFF;
  --nx-bg-elev:        #FFFFFF;
  --nx-bg-muted:       #F8FAFC;
  --nx-bg-sunken:      #F1F5F9;

  --nx-border:         #E2E8F0;
  --nx-border-strong:  #CBD5E1;
  --nx-divider:        #F1F5F9;

  --nx-fg-1:           #0F172A;
  --nx-fg-2:           #334155;
  --nx-fg-3:           #64748B;
  --nx-fg-4:           #94A3B8;
  --nx-fg-inverse:     #FFFFFF;

  --nx-font-sans:      'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --nx-font-mono:      'JetBrains Mono', ui-monospace, Menlo, monospace;
  --nx-font-num:       'Inter', ui-monospace, monospace;
  --nx-feature-num:    "tnum" 1, "cv01" 1, "cv11" 1;

  --nx-size-xxs:       11px;
  --nx-size-xs:        12px;
  --nx-size-sm:        13px;
  --nx-size-base:      15px;
  --nx-size-md:        16px;
  --nx-size-lg:        18px;
  --nx-size-xl:        22px;
  --nx-size-2xl:       28px;
  --nx-size-3xl:       34px;
  --nx-size-display:   44px;

  --nx-weight-regular: 400;
  --nx-weight-medium:  500;
  --nx-weight-semi:    600;
  --nx-weight-bold:    700;

  --nx-lh-tight:       1.15;
  --nx-lh-snug:        1.3;
  --nx-lh-normal:      1.5;

  --nx-tracking-tight: -0.02em;
  --nx-tracking-normal:0;
  --nx-tracking-wide:  0.04em;

  --nx-space-0:        0;
  --nx-space-1:        4px;
  --nx-space-2:        8px;
  --nx-space-3:        12px;
  --nx-space-4:        16px;
  --nx-space-5:        20px;
  --nx-space-6:        24px;
  --nx-space-8:        32px;
  --nx-space-10:       40px;
  --nx-space-12:       48px;

  --nx-radius-input:   8px;
  --nx-radius-card:    12px;
  --nx-radius-button:  24px;
  --nx-radius-sm:      8px;
  --nx-radius-md:      12px;
  --nx-radius-lg:      16px;
  --nx-radius-xl:      20px;
  --nx-radius-2xl:     24px;
  --nx-radius-pill:    999px;

  --nx-shadow-xs:      0 1px 2px rgba(15, 23, 42, 0.04);
  --nx-shadow-sm:      0 1px 3px rgba(15, 23, 42, 0.06), 0 1px 2px rgba(15, 23, 42, 0.04);
  --nx-shadow-md:      0 4px 12px rgba(15, 23, 42, 0.06), 0 1px 3px rgba(15, 23, 42, 0.04);
  --nx-shadow-lg:      0 10px 30px rgba(15, 23, 42, 0.08), 0 2px 6px rgba(15, 23, 42, 0.04);
  --nx-shadow-pop:     0 12px 40px rgba(37, 99, 235, 0.18);

  --nx-ease:           cubic-bezier(0.2, 0.8, 0.2, 1);
  --nx-ease-out:       cubic-bezier(0.16, 1, 0.3, 1);
  --nx-dur-fast:       120ms;
  --nx-dur-base:       180ms;
  --nx-dur-slow:       260ms;

  --nx-app-max-w:      440px;
  --nx-tab-h:          84px;
  --nx-header-h:       56px;
  --nx-fab-size:       64px;
  --nx-safe-bottom:    env(safe-area-inset-bottom, 0px);
}

* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
html, body {
  font-family: var(--nx-font-sans);
  font-size: var(--nx-size-base);
  line-height: var(--nx-lh-normal);
  color: var(--nx-fg-1);
  background: var(--nx-bg);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

h1, .nx-h1 { font-size: var(--nx-size-3xl); line-height: var(--nx-lh-tight); letter-spacing: var(--nx-tracking-tight); font-weight: 700; color: var(--nx-fg-1); margin: 0; }
h2, .nx-h2 { font-size: var(--nx-size-2xl); line-height: var(--nx-lh-tight); letter-spacing: var(--nx-tracking-tight); font-weight: 700; color: var(--nx-fg-1); margin: 0; }
h3, .nx-h3 { font-size: var(--nx-size-xl); line-height: var(--nx-lh-snug); font-weight: 600; color: var(--nx-fg-1); margin: 0; }
p, .nx-body { font-size: var(--nx-size-base); line-height: var(--nx-lh-normal); color: var(--nx-fg-2); margin: 0; }
a { color: var(--nx-primary); text-decoration: none; }
a:hover { color: var(--nx-primary-hover); }

.nx-label { font-size: var(--nx-size-xs); font-weight: 600; letter-spacing: var(--nx-tracking-wide); text-transform: uppercase; color: var(--nx-fg-3); }
.nx-caption { font-size: var(--nx-size-xs); color: var(--nx-fg-3); line-height: var(--nx-lh-snug); }
.nx-mono { font-family: var(--nx-font-mono); font-size: var(--nx-size-sm); }
.nx-pos { color: var(--nx-positive); }
.nx-neg { color: var(--nx-negative); }
.hidden { display: none !important; }

/* --- Stage / Phone frame ---------------------------------- */
.nx-stage {
  min-height: 100vh;
  background: radial-gradient(80% 60% at 50% 0%, #EEF2FF 0%, #F8FAFC 60%, #F1F5F9 100%);
  display: flex;
  align-items: stretch;
  justify-content: center;
  padding: 0;
}
@media (min-width: 700px) { .nx-stage { padding: 32px 16px; } }

.nx-phone {
  width: 100%;
  max-width: var(--nx-app-max-w);
  background: var(--nx-bg);
  position: relative;
  display: flex;
  flex-direction: column;
  min-height: 100vh;
}
@media (min-width: 700px) {
  .nx-phone {
    min-height: 880px;
    height: 90vh;
    max-height: 920px;
    border-radius: 36px;
    box-shadow: var(--nx-shadow-lg), 0 30px 60px rgba(15,23,42,0.10);
    overflow: hidden;
    border: 1px solid var(--nx-border);
  }
}

/* --- Top app bar ------------------------------------------ */
.nx-appbar {
  height: var(--nx-header-h);
  display: flex; align-items: center; justify-content: space-between;
  padding: 0 var(--nx-space-4);
  background: var(--nx-bg);
  border-bottom: 1px solid var(--nx-divider);
  flex-shrink: 0;
}
.nx-appbar__brand { display: flex; align-items: center; gap: 10px; font-weight: 700; font-size: 17px; letter-spacing: -0.01em; color: var(--nx-fg-1); }
.nx-appbar__brand img { width: 28px; height: 28px; display: block; }
.nx-appbar__right { display: flex; align-items: center; gap: var(--nx-space-2); }
.nx-appbar__title { font-size: 16px; font-weight: 600; color: var(--nx-fg-1); }

.nx-balance-pill {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: 13px; font-weight: 600;
  background: var(--nx-bg-muted); border: 1px solid var(--nx-border);
  border-radius: var(--nx-radius-pill); padding: 6px 10px;
  color: var(--nx-fg-1); font-variant-numeric: tabular-nums; cursor: pointer;
}
.nx-balance-pill .unit { color: var(--nx-fg-3); }

.nx-mode-badge {
  display: inline-flex; align-items: center; gap: 5px;
  font-size: 11px; font-weight: 700; letter-spacing: 0.06em;
  padding: 4px 8px; border-radius: var(--nx-radius-pill);
  text-transform: uppercase; cursor: pointer; border: none;
}
.nx-mode-badge.live { background: var(--nx-positive-soft); color: var(--nx-positive-deep); }
.nx-mode-badge.sim  { background: var(--nx-warning-soft); color: var(--nx-warning); }
.nx-mode-badge .dot { width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
.nx-mode-badge.live .dot { animation: nx-pulse 2s ease-in-out infinite; }
@keyframes nx-pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.45; } }

/* --- Scroll area ------------------------------------------ */
.nx-scroll {
  flex: 1; overflow-y: auto;
  padding: var(--nx-space-4) var(--nx-space-4) calc(var(--nx-tab-h) + var(--nx-space-6)) var(--nx-space-4);
  scrollbar-width: thin;
}
.nx-scroll::-webkit-scrollbar { width: 6px; }
.nx-scroll::-webkit-scrollbar-thumb { background: #E2E8F0; border-radius: 999px; }

/* --- Screen visibility ------------------------------------ */
.nx-screen { display: none; flex-direction: column; flex: 1; min-height: 0; }
.nx-screen.active { display: flex; }

/* --- Section heading -------------------------------------- */
.nx-section-head { display: flex; align-items: baseline; justify-content: space-between; margin: var(--nx-space-6) 0 var(--nx-space-3); }
.nx-section-head h3 { font-size: 15px; font-weight: 600; letter-spacing: -0.01em; color: var(--nx-fg-1); }
.nx-section-head .link { font-size: 13px; font-weight: 500; color: var(--nx-fg-3); background: none; border: none; cursor: pointer; font-family: inherit; }

/* --- Card ------------------------------------------------- */
.nx-card { background: var(--nx-bg-elev); border: 1px solid var(--nx-border); border-radius: var(--nx-radius-card); box-shadow: var(--nx-shadow-sm); padding: var(--nx-space-5); }
.nx-card--hero { padding: 22px; }

/* --- Delta badge ------------------------------------------ */
.nx-delta { display: inline-flex; align-items: center; gap: 4px; font-size: 13px; font-weight: 600; padding: 4px 8px; border-radius: 8px; font-variant-numeric: tabular-nums; }
.nx-delta.pos { background: var(--nx-positive-soft); color: var(--nx-positive-deep); }
.nx-delta.neg { background: var(--nx-negative-soft); color: var(--nx-negative-deep); }
.nx-delta.flat{ background: var(--nx-bg-muted); color: var(--nx-fg-3); }
.nx-delta.lg { font-size: 14px; padding: 5px 10px; }

/* --- Big number ------------------------------------------- */
.nx-bignum { font-size: 36px; font-weight: 700; letter-spacing: -0.02em; font-variant-numeric: tabular-nums; color: var(--nx-fg-1); line-height: 1.1; }
.nx-bignum .unit { font-size: 18px; font-weight: 600; color: var(--nx-fg-3); margin-left: 6px; }

/* --- Stat grid -------------------------------------------- */
.nx-stat-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.nx-stat { background: var(--nx-bg-muted); border: 1px solid var(--nx-border); border-radius: 12px; padding: 12px 14px; }
.nx-stat__label { font-size: 11px; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase; color: var(--nx-fg-3); margin-bottom: 6px; }
.nx-stat__value { font-size: 18px; font-weight: 700; font-variant-numeric: tabular-nums; color: var(--nx-fg-1); }
.nx-stat__sub { font-size: 12px; color: var(--nx-fg-3); margin-top: 2px; }

/* --- Buttons ---------------------------------------------- */
.nx-btn { appearance: none; border: none; cursor: pointer; font-family: inherit; font-weight: 600; font-size: 15px; border-radius: var(--nx-radius-button); padding: 14px 20px; display: inline-flex; align-items: center; justify-content: center; gap: 8px; transition: background var(--nx-dur-fast) var(--nx-ease), transform var(--nx-dur-fast) var(--nx-ease), box-shadow var(--nx-dur-base) var(--nx-ease); letter-spacing: -0.005em; }
.nx-btn:active { transform: scale(0.97); }
.nx-btn:disabled { opacity: 0.5; cursor: not-allowed; }
.nx-btn--primary { background: var(--nx-primary); color: #fff; box-shadow: 0 6px 16px rgba(37,99,235,0.25); }
.nx-btn--primary:hover { background: var(--nx-primary-hover); }
.nx-btn--primary:active { background: var(--nx-primary-press); }
.nx-btn--block { width: 100%; }
.nx-btn--ghost { background: var(--nx-bg-muted); color: var(--nx-fg-1); }
.nx-btn--ghost:hover { background: var(--nx-bg-sunken); }
.nx-btn--danger { background: var(--nx-negative); color: #fff; }
.nx-btn--danger:hover { background: var(--nx-negative-deep); }
.nx-btn--danger-outline { background: transparent; color: var(--nx-negative); border: 1.5px solid var(--nx-negative); }
.nx-btn--sm { font-size: 13px; padding: 8px 14px; border-radius: 999px; }
.nx-btn--icon { width: 36px; height: 36px; padding: 0; border-radius: 12px; background: var(--nx-bg-muted); color: var(--nx-fg-2); }
.nx-btn--icon-sm { width: 32px; height: 32px; border-radius: 10px; }

/* --- Chips / segmented ------------------------------------ */
.nx-chips { display: flex; gap: 8px; overflow-x: auto; padding-bottom: 4px; margin: 0 calc(-1 * var(--nx-space-4)); padding-left: var(--nx-space-4); padding-right: var(--nx-space-4); scrollbar-width: none; }
.nx-chips::-webkit-scrollbar { display: none; }
.nx-chip { flex-shrink: 0; border: 1px solid var(--nx-border); background: var(--nx-bg-elev); color: var(--nx-fg-2); border-radius: var(--nx-radius-pill); padding: 8px 14px; font-size: 13px; font-weight: 500; cursor: pointer; transition: all var(--nx-dur-fast) var(--nx-ease); white-space: nowrap; font-family: inherit; }
.nx-chip.active { background: var(--nx-fg-1); color: #fff; border-color: var(--nx-fg-1); }
.nx-chip:hover:not(.active) { background: var(--nx-bg-muted); }

/* --- Search input ----------------------------------------- */
.nx-search { display: flex; align-items: center; gap: 10px; background: var(--nx-bg-muted); border: 1px solid var(--nx-border); border-radius: 12px; padding: 11px 14px; color: var(--nx-fg-3); }
.nx-search input { flex: 1; background: transparent; border: none; outline: none; font: inherit; font-size: 15px; color: var(--nx-fg-1); }
.nx-search input::placeholder { color: var(--nx-fg-4); }

/* --- Inputs ----------------------------------------------- */
.nx-field { display: flex; flex-direction: column; gap: 6px; }
.nx-field__label { font-size: 12px; font-weight: 600; color: var(--nx-fg-2); }
.nx-field__error { font-size: 12px; color: var(--nx-negative-deep); min-height: 14px; }
.nx-input { width: 100%; background: var(--nx-bg-muted); border: 1px solid var(--nx-border); border-radius: var(--nx-radius-input); padding: 11px 14px; font: inherit; font-size: 14px; color: var(--nx-fg-1); outline: none; transition: border-color var(--nx-dur-fast) var(--nx-ease), box-shadow var(--nx-dur-fast) var(--nx-ease); font-variant-numeric: tabular-nums; }
.nx-input:focus { border-color: var(--nx-primary); box-shadow: 0 0 0 3px var(--nx-primary-ring); }
.nx-input--mono { font-family: var(--nx-font-mono); font-size: 13px; }
.nx-input-with-action { position: relative; }
.nx-input-with-action .nx-input { padding-right: 44px; }
.nx-input-with-action .icon-btn { position: absolute; right: 8px; top: 50%; transform: translateY(-50%); width: 32px; height: 32px; border-radius: 8px; background: transparent; border: none; color: var(--nx-fg-3); cursor: pointer; display: flex; align-items: center; justify-content: center; }
.nx-input-with-action .icon-btn:hover { background: var(--nx-bg-muted); color: var(--nx-fg-1); }

/* --- Slider ----------------------------------------------- */
.nx-slider-row { display: flex; flex-direction: column; gap: 8px; padding: 12px 0; }
.nx-slider-row__head { display: flex; justify-content: space-between; align-items: baseline; }
.nx-slider-row__label { font-size: 14px; font-weight: 500; color: var(--nx-fg-1); }
.nx-slider-row__value { font-size: 14px; font-weight: 700; color: var(--nx-primary); font-variant-numeric: tabular-nums; }
input[type="range"].nx-range { -webkit-appearance: none; appearance: none; width: 100%; height: 6px; background: var(--nx-bg-sunken); border-radius: 999px; outline: none; }
input[type="range"].nx-range::-webkit-slider-thumb { -webkit-appearance: none; width: 22px; height: 22px; border-radius: 50%; background: var(--nx-primary); border: 3px solid #fff; box-shadow: 0 2px 8px rgba(37,99,235,0.35); cursor: pointer; }
input[type="range"].nx-range::-moz-range-thumb { width: 22px; height: 22px; border-radius: 50%; background: var(--nx-primary); border: 3px solid #fff; box-shadow: 0 2px 8px rgba(37,99,235,0.35); cursor: pointer; }

/* --- Pill switch (Sim/Live) ------------------------------- */
.nx-pill-switch { display: inline-flex; background: var(--nx-bg-muted); border: 1px solid var(--nx-border); border-radius: var(--nx-radius-pill); padding: 4px; position: relative; width: 100%; }
.nx-pill-switch__opt { flex: 1; border: none; background: transparent; padding: 10px 16px; border-radius: var(--nx-radius-pill); font: inherit; font-size: 14px; font-weight: 600; color: var(--nx-fg-3); cursor: pointer; transition: color var(--nx-dur-base) var(--nx-ease); position: relative; z-index: 1; }
.nx-pill-switch__opt.active { color: #fff; }
.nx-pill-switch__thumb { position: absolute; top: 4px; bottom: 4px; width: calc(50% - 4px); border-radius: var(--nx-radius-pill); transition: transform var(--nx-dur-base) var(--nx-ease), background var(--nx-dur-base) var(--nx-ease); }
.nx-pill-switch.sim .nx-pill-switch__thumb { transform: translateX(0); background: var(--nx-warning); }
.nx-pill-switch.live .nx-pill-switch__thumb { transform: translateX(100%); background: var(--nx-positive); }

/* --- Token row -------------------------------------------- */
.nx-token-row { display: grid; grid-template-columns: 36px 1fr 72px auto; align-items: center; gap: 10px; padding: 12px 0; border-bottom: 1px solid var(--nx-divider); }
.nx-token-row:last-child { border-bottom: none; }
.nx-token-ico { width: 36px; height: 36px; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: #fff; font-weight: 700; font-size: 14px; letter-spacing: -0.01em; }
.nx-token-meta__name { font-size: 14px; font-weight: 600; color: var(--nx-fg-1); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 120px; }
.nx-token-meta__sub { font-size: 12px; color: var(--nx-fg-3); font-variant-numeric: tabular-nums; margin-top: 1px; }
.nx-token-right { text-align: right; display: flex; flex-direction: column; align-items: flex-end; gap: 4px; }
.nx-token-price { font-size: 13px; font-weight: 600; font-variant-numeric: tabular-nums; color: var(--nx-fg-1); }
.nx-score-badge { display: inline-flex; align-items: center; gap: 3px; font-size: 11px; font-weight: 700; padding: 2px 7px; border-radius: 999px; font-variant-numeric: tabular-nums; }
.nx-score-badge.green  { background: var(--nx-positive-soft); color: var(--nx-positive-deep); }
.nx-score-badge.yellow { background: var(--nx-warning-soft);  color: var(--nx-warning); }
.nx-score-badge.red    { background: var(--nx-negative-soft); color: var(--nx-negative-deep); }
.nx-token-buy { background: var(--nx-primary-soft); color: var(--nx-primary); padding: 4px 12px; font-size: 11px; border: none; border-radius: 999px; font-weight: 600; cursor: pointer; font-family: inherit; }
.nx-token-buy.force { background: var(--nx-warning-soft); color: var(--nx-warning); }

/* --- Sparkline -------------------------------------------- */
.nx-spark { display: block; }

/* --- TP ladder -------------------------------------------- */
.nx-ladder { background: var(--nx-bg-sunken); border-radius: 999px; height: 8px; display: flex; overflow: hidden; gap: 2px; }
.nx-ladder__seg { height: 100%; background: var(--nx-positive); transition: width var(--nx-dur-slow) var(--nx-ease); }
.nx-ladder__seg.pending { background: var(--nx-border-strong); }
.nx-ladder-labels { display: flex; justify-content: space-between; margin-top: 6px; font-size: 11px; color: var(--nx-fg-3); font-variant-numeric: tabular-nums; }

/* --- Position card row ------------------------------------ */
.nx-pos-row { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 8px; margin-top: var(--nx-space-3); padding-top: var(--nx-space-3); border-top: 1px dashed var(--nx-divider); }
.nx-pos-cell .lbl { font-size: 10px; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase; color: var(--nx-fg-3); }
.nx-pos-cell .val { font-size: 13px; font-weight: 600; color: var(--nx-fg-1); font-variant-numeric: tabular-nums; margin-top: 2px; }

.nx-strategy-tag { display: inline-flex; align-items: center; gap: 5px; font-size: 11px; font-weight: 600; padding: 4px 9px; border-radius: 999px; background: var(--nx-primary-soft); color: var(--nx-primary); letter-spacing: 0.02em; }
.nx-exit-tag { display: inline-flex; align-items: center; gap: 5px; font-size: 11px; font-weight: 600; padding: 3px 8px; border-radius: 6px; }
.nx-exit-tag.tp { background: var(--nx-positive-soft); color: var(--nx-positive-deep); }
.nx-exit-tag.sl { background: var(--nx-negative-soft); color: var(--nx-negative-deep); }
.nx-exit-tag.tr { background: var(--nx-primary-soft);  color: var(--nx-primary); }
.nx-exit-tag.ts { background: var(--nx-bg-sunken);     color: var(--nx-fg-2); }

/* --- Empty states ----------------------------------------- */
.nx-empty { text-align: center; padding: 40px 24px; }
.nx-empty__illus { width: 120px; height: 120px; margin: 0 auto 16px; display: flex; align-items: center; justify-content: center; }
.nx-empty__title { font-size: 16px; font-weight: 600; color: var(--nx-fg-1); margin-bottom: 4px; }
.nx-empty__sub { font-size: 13px; color: var(--nx-fg-3); max-width: 240px; margin: 0 auto; text-wrap: pretty; }

/* --- Bottom nav + FAB ------------------------------------- */
.nx-bottomnav { position: absolute; left: 0; right: 0; bottom: 0; height: var(--nx-tab-h); background: rgba(255,255,255,0.92); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); border-top: 1px solid var(--nx-border); display: flex; align-items: flex-start; padding-top: 10px; z-index: 10; }
.nx-bottomnav__tab { flex: 1; display: flex; flex-direction: column; align-items: center; gap: 4px; background: transparent; border: none; cursor: pointer; color: var(--nx-fg-3); padding: 4px 0; font: inherit; font-size: 11px; font-weight: 500; position: relative; transition: color var(--nx-dur-fast) var(--nx-ease); }
.nx-bottomnav__tab.active { color: var(--nx-primary); font-weight: 600; }
.nx-bottomnav__tab.active::before { content: ''; position: absolute; top: -10px; left: 50%; transform: translateX(-50%); width: 22px; height: 3px; border-radius: 0 0 3px 3px; background: var(--nx-primary); }
.nx-bottomnav__tab svg { width: 22px; height: 22px; }

.nx-fab { position: absolute; left: 50%; transform: translateX(-50%); bottom: calc(var(--nx-tab-h) - var(--nx-fab-size) / 2 - 6px); width: var(--nx-fab-size); height: var(--nx-fab-size); border-radius: 50%; border: 4px solid #fff; background: var(--nx-primary); color: #fff; cursor: pointer; display: flex; align-items: center; justify-content: center; box-shadow: 0 10px 28px rgba(37,99,235,0.35); z-index: 11; transition: background var(--nx-dur-base) var(--nx-ease), transform var(--nx-dur-fast) var(--nx-ease), box-shadow var(--nx-dur-base) var(--nx-ease); }
.nx-fab:hover { transform: translateX(-50%) translateY(-2px); }
.nx-fab:active { transform: translateX(-50%) scale(0.95); }
.nx-fab.running { background: var(--nx-negative); box-shadow: 0 10px 28px rgba(220,38,38,0.35); }
.nx-fab.running::after { content: ''; position: absolute; inset: -8px; border-radius: 50%; border: 2px solid var(--nx-negative); opacity: 0.3; animation: nx-ring 1.6s ease-out infinite; }
@keyframes nx-ring { 0% { transform: scale(0.85); opacity: 0.5; } 100% { transform: scale(1.25); opacity: 0; } }
.nx-fab__label { position: absolute; bottom: -22px; left: 50%; transform: translateX(-50%); font-size: 10px; font-weight: 700; letter-spacing: 0.06em; color: var(--nx-fg-2); }

/* --- Settings list ---------------------------------------- */
.nx-list { background: var(--nx-bg-elev); border: 1px solid var(--nx-border); border-radius: var(--nx-radius-card); overflow: hidden; }
.nx-list__row { display: flex; align-items: center; gap: 12px; padding: 14px 16px; border-bottom: 1px solid var(--nx-divider); }
.nx-list__row:last-child { border-bottom: none; }
.nx-list__icon { width: 32px; height: 32px; border-radius: 10px; background: var(--nx-bg-muted); display: flex; align-items: center; justify-content: center; color: var(--nx-fg-2); }
.nx-list__body { flex: 1; min-width: 0; }
.nx-list__title { font-size: 14px; font-weight: 500; color: var(--nx-fg-1); }
.nx-list__sub { font-size: 12px; color: var(--nx-fg-3); margin-top: 2px; font-variant-numeric: tabular-nums; }

/* --- Avatar circle ---------------------------------------- */
.nx-avatar { width: 52px; height: 52px; border-radius: 50%; background: var(--nx-primary); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 18px; font-weight: 700; letter-spacing: -0.01em; }

/* --- Strategy cards --------------------------------------- */
.nx-strat-card { border: 1.5px solid var(--nx-border); border-radius: 12px; padding: 14px; cursor: pointer; transition: all var(--nx-dur-fast) var(--nx-ease); background: var(--nx-bg-elev); }
.nx-strat-card.active { border-color: var(--nx-primary); background: var(--nx-primary-soft); }
.nx-strat-card:hover:not(.active) { border-color: var(--nx-border-strong); }
.nx-strat-card__top { display: flex; align-items: center; gap: 10px; }
.nx-strat-card__icon { font-size: 20px; }
.nx-strat-card__name { font-size: 14px; font-weight: 600; color: var(--nx-fg-1); }
.nx-strat-card__desc { font-size: 12px; color: var(--nx-fg-3); margin-top: 6px; line-height: 1.4; }
.nx-strat-card__stats { display: flex; gap: 16px; margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--nx-divider); }
.nx-strat-stat { text-align: center; }
.nx-strat-stat__val { font-size: 13px; font-weight: 700; font-variant-numeric: tabular-nums; color: var(--nx-fg-1); }
.nx-strat-stat__val.up { color: var(--nx-positive-deep); }
.nx-strat-stat__val.down { color: var(--nx-negative-deep); }
.nx-strat-stat__lbl { font-size: 10px; color: var(--nx-fg-3); text-transform: uppercase; letter-spacing: 0.04em; margin-top: 2px; }

/* --- Monthly PnL bar chart -------------------------------- */
.nx-bar-axis { display: flex; justify-content: space-between; margin-top: 6px; font-size: 10px; color: var(--nx-fg-3); font-variant-numeric: tabular-nums; }

/* --- Loading skeleton ------------------------------------- */
.nx-skel { background: linear-gradient(90deg, #F1F5F9 0%, #E2E8F0 50%, #F1F5F9 100%); background-size: 200% 100%; animation: nx-shimmer 1.4s ease-in-out infinite; border-radius: 8px; }
@keyframes nx-shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }

/* --- Misc helpers ----------------------------------------- */
.nx-row { display: flex; align-items: center; gap: 10px; }
.nx-between { display: flex; align-items: center; justify-content: space-between; }
.nx-stack-2 > * + * { margin-top: 8px; }
.nx-stack-3 > * + * { margin-top: 12px; }
.nx-stack-4 > * + * { margin-top: 16px; }
.nx-stack-6 > * + * { margin-top: 24px; }
.nx-grow { flex: 1; }

/* --- Warning strip ---------------------------------------- */
.nx-warn-strip { background: var(--nx-warning-soft); color: var(--nx-warning); font-size: 12px; padding: 8px 16px; border-bottom: 1px solid #FCE7C3; line-height: 1.4; }

/* ============================================================
   Additions: auth, modals, toast, boot — wired to the bot
   ============================================================ */

/* --- Boot / loading overlay ------------------------------- */
.nx-boot { position: fixed; inset: 0; background: radial-gradient(80% 60% at 50% 0%, #EEF2FF 0%, #F8FAFC 60%, #F1F5F9 100%); display: flex; align-items: center; justify-content: center; z-index: 1000; transition: opacity 0.4s var(--nx-ease); }
.nx-boot.hidden { opacity: 0; pointer-events: none; }
.nx-boot__box { text-align: center; }
.nx-boot__mark { width: 56px; height: 56px; border-radius: 16px; background: var(--nx-primary); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 28px; font-weight: 800; margin: 0 auto 16px; box-shadow: var(--nx-shadow-pop); }
.nx-boot__name { font-size: 20px; font-weight: 700; letter-spacing: -0.01em; color: var(--nx-fg-1); }
.nx-boot__bar { width: 180px; height: 4px; background: var(--nx-bg-sunken); border-radius: 999px; overflow: hidden; margin: 16px auto 0; }
.nx-boot__bar-fill { height: 100%; width: 40%; background: var(--nx-primary); border-radius: 999px; animation: nx-boot-load 1.4s var(--nx-ease) infinite; }
@keyframes nx-boot-load { 0% { transform: translateX(-100%); } 100% { transform: translateX(350%); } }

/* --- Modal ------------------------------------------------- */
.nx-modal { position: fixed; inset: 0; background: rgba(15,23,42,0.45); backdrop-filter: blur(4px); display: flex; align-items: center; justify-content: center; z-index: 900; padding: 16px; }
.nx-modal-card { background: var(--nx-bg); border-radius: 20px; box-shadow: var(--nx-shadow-lg); width: 100%; max-width: 380px; padding: 24px; max-height: 90vh; overflow-y: auto; }
.nx-modal-head { display: flex; align-items: center; gap: 10px; margin-bottom: 18px; }
.nx-modal-head .nx-boot__mark { width: 36px; height: 36px; font-size: 18px; border-radius: 10px; margin: 0; }
.nx-modal-title { font-size: 18px; font-weight: 700; color: var(--nx-fg-1); }
.nx-modal-foot { text-align: center; font-size: 12px; color: var(--nx-fg-3); margin-top: 14px; }
.nx-modal-close { position: absolute; top: 14px; right: 14px; background: var(--nx-bg-muted); border: none; width: 30px; height: 30px; border-radius: 8px; cursor: pointer; color: var(--nx-fg-3); font-size: 16px; }

/* --- Auth tabs -------------------------------------------- */
.nx-seg { display: flex; background: var(--nx-bg-muted); border-radius: 12px; padding: 4px; margin-bottom: 16px; }
.nx-seg-btn { flex: 1; border: none; background: transparent; padding: 9px; border-radius: 9px; font: inherit; font-size: 14px; font-weight: 600; color: var(--nx-fg-3); cursor: pointer; transition: all var(--nx-dur-fast) var(--nx-ease); }
.nx-seg-btn.active { background: #fff; color: var(--nx-fg-1); box-shadow: var(--nx-shadow-xs); }

/* --- Toast ------------------------------------------------- */
.nx-toast-wrap { position: fixed; top: 16px; left: 50%; transform: translateX(-50%); z-index: 1100; display: flex; flex-direction: column; gap: 8px; align-items: center; width: max-content; max-width: 90vw; }
.nx-toast { background: var(--nx-fg-1); color: #fff; padding: 11px 18px; border-radius: 12px; font-size: 13px; font-weight: 500; box-shadow: var(--nx-shadow-lg); animation: nx-toast-in 0.25s var(--nx-ease-out); display: flex; align-items: center; gap: 8px; }
.nx-toast.success { background: var(--nx-positive-deep); }
.nx-toast.error { background: var(--nx-negative-deep); }
.nx-toast.warn { background: var(--nx-warning); }
@keyframes nx-toast-in { from { opacity: 0; transform: translateY(-12px); } to { opacity: 1; transform: translateY(0); } }
.nx-toast.out { opacity: 0; transform: translateY(-12px); transition: all 0.25s var(--nx-ease); }

/* --- Mode confirm warning box ----------------------------- */
.nx-mode-warn { background: var(--nx-negative-soft); border: 1px solid #FECACA; border-radius: 12px; padding: 14px; font-size: 13px; line-height: 1.5; color: var(--nx-fg-2); margin: 14px 0; }
.nx-mode-warn strong { color: var(--nx-negative-deep); }

/* --- Scanner mini-metrics --------------------------------- */
.nx-scan-stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; margin-bottom: 4px; }
.nx-scan-stat { background: var(--nx-bg-muted); border-radius: 10px; padding: 8px; text-align: center; }
.nx-scan-stat__val { font-size: 16px; font-weight: 700; font-variant-numeric: tabular-nums; }
.nx-scan-stat__lbl { font-size: 9px; color: var(--nx-fg-3); text-transform: uppercase; letter-spacing: 0.03em; margin-top: 2px; }
.nx-rug-badge { font-size: 11px; font-weight: 600; }
.nx-rug-badge.ok { color: var(--nx-positive-deep); }
.nx-rug-badge.bad { color: var(--nx-negative-deep); }
