
    /* ── V3 Sidebar (desktop only) ── */
    .sidebar {
      display: none;
    }
    .sidebar.hidden {
      display: none !important;
    }
    /* Mobile settings popup — hidden on desktop */
    .mobile-settings-popup {
      display: none;
    }
    @media (min-width: 768px) {
      .sidebar {
        display: flex;
        flex-direction: column;
        position: fixed;
        top: 0;
        left: 0;
        bottom: 0;
        width: 220px;
        background: var(--bg);
        border-right: 1px solid var(--divider);
        z-index: 200;
        padding: 16px 16px;
      }
      .sidebar-logo {
        padding: 2px 8px 0;
      }
      .sidebar-nav {
        display: flex;
        flex-direction: column;
        gap: 2px;
        flex: 1;
        padding-top: 0;
      }
      .sidebar-item {
        display: flex;
        align-items: center;
        gap: 10px;
        padding: 10px 12px;
        border-radius: 10px;
        color: var(--text-2);
        font-family: var(--font-sans);
        font-size: 14px;
        font-weight: 400;
        letter-spacing: var(--ls-tight);
        cursor: pointer;
        transition: background var(--duration-normal) ease, color var(--duration-normal) ease, box-shadow var(--duration-normal) ease, border-color var(--duration-normal) ease;
        border: none;
        border-right: 2px solid transparent;
        background: none;
        width: 100%;
        text-align: left;
      }
      .sidebar-item:hover {
        background: var(--hover-bg);
        color: var(--text-1);
      }
      .sidebar-item.active {
        background: linear-gradient(to left, var(--surface-active) 0%, var(--surface-subtle) 100%);
        box-shadow: inset -2px 0 12px rgba(255,255,255,0.06);
        color: var(--text-1);
        font-weight: 400;
        border-right: 2px solid rgba(255,255,255,0.15);
        position: relative;
      }
      .sidebar-item.active::after {
        content: '';
        position: absolute;
        right: -18px;
        top: 20%;
        bottom: 20%;
        width: 1px;
        border-radius: 2px;
        background: rgba(255,255,255,0.5);
        box-shadow: 0 0 4px rgba(255,255,255,0.6), 0 0 12px rgba(255,255,255,0.25);
      }
      [data-theme="light"] .sidebar-item.active {
        background: linear-gradient(to left, rgba(0,0,0,0.06) 0%, rgba(0,0,0,0.02) 100%);
        box-shadow: inset -2px 0 12px rgba(0,0,0,0.04);
        border-right-color: rgba(0,0,0,0.1);
      }
      [data-theme="light"] .sidebar-item.active::after {
        background: rgba(0,0,0,0.4);
        box-shadow: 0 0 8px rgba(0,0,0,0.2), 0 0 20px rgba(0,0,0,0.08);
      }
      .sidebar-item svg {
        width: 18px;
        height: 18px;
        stroke: currentColor;
        fill: none;
        stroke-width: 2;
        stroke-linecap: round;
        stroke-linejoin: round;
        flex-shrink: 0;
      }
      .sidebar-bottom {
        border-top: 1px solid var(--divider);
        padding-top: 12px;
        margin-top: 12px;
      }

      /* Push all app content right of sidebar */
      #mainApp,
      #transactionsApp {
        margin-left: 220px;
      }
      /* Header should also respect sidebar */
      .header {
        left: 220px !important;
      }
      /* Bottom tabs hidden on desktop with sidebar */
      .txn-bottom-tabs {
        left: 220px !important;
      }
      /* Hide the nav pill on desktop — sidebar replaces it */
      #txnNavAnchor,
      #portfolioNavAnchor {
        display: none;
      }

      /* Move bottom tabs into header on desktop — pill style */
      .txn-bottom-tabs {
        position: static !important;
        background: transparent !important;
        backdrop-filter: none !important;
        -webkit-backdrop-filter: none !important;
        box-shadow: none !important;
        border-top: none !important;
        border-bottom: none !important;
        padding: 0 !important;
        justify-content: flex-start !important;
        gap: 2px !important;
      }
      .txn-bottom-tabs.scrolled {
        background: transparent !important;
        backdrop-filter: none !important;
        -webkit-backdrop-filter: none !important;
        box-shadow: none !important;
      }
      /* Hide the underline on desktop */
      .txn-bottom-tabs .tab-underline,
      .txn-bottom-tabs #txnTabUnderline {
        display: none !important;
      }
      .txn-bottom-tabs .tab {
        padding: 6px 12px !important;
        font-size: 12px !important;
        border-radius: 12px;
        transition: background var(--duration-normal) ease, color var(--duration-normal) ease;
        color: var(--text-3) !important;
      }
      /* Shrink controls pill to match tab height */
      .controls-pill {
        padding: 2px !important;
      }
      .ctrl-btn {
        width: 24px !important;
        height: 24px !important;
      }
      .ctrl-btn svg {
        width: 13px !important;
        height: 13px !important;
      }
      .ctrl-btn .theme-icon-wrap {
        width: 13px !important;
        height: 13px !important;
      }
      .ctrl-btn .theme-icon-wrap svg {
        width: 13px !important;
        height: 13px !important;
      }
      .txn-bottom-tabs .tab:hover {
        background: rgba(255,255,255,0.04);
        color: var(--text-2) !important;
      }
      .txn-bottom-tabs .tab.active {
        background: rgba(74,124,255,0.12) !important;
        color: var(--blue) !important;
      }
      [data-theme="light"] .txn-bottom-tabs .tab.active {
        background: rgba(59,130,246,0.08) !important;
        color: var(--blue) !important;
      }
      [data-theme="light"] .txn-bottom-tabs .tab:hover {
        background: rgba(0,0,0,0.03);
      }
      .txn-tab-spacer {
        display: none !important;
      }
      /* Align controls to bottom of header (same level as tabs) */
      .header-top {
        align-items: flex-end !important;
      }
      /* Anchor in header for the tabs */
      .header-tabs-anchor {
        display: block;
        margin-top: 16px;
      }

      /* Add gap between header and content */
      .content-filters {
        margin-top: 8px !important;
      }
      /* Match select pill radius to tab/controls radius */
      .txn-select {
        border-radius: 12px !important;
      }

      /* Desktop content padding (adjusted for sidebar) */
      .header {
        padding-left: clamp(24px, 4vw, 48px) !important;
        padding-right: clamp(24px, 4vw, 48px) !important;
      }
      .hero-section,
      .summary-grid,
      .summary-wl-row,
      .insight-cards-row,
      .insights-metrics-row,
      .insights-bottom-row,
      .insights-donuts-row,
      .tabs:not(.txn-bottom-tabs),
      .charts-section,
      .holdings-list,
      .filter-row,
      .txn-list-container,
      .content-filters,
      #holdingsTab,
      #tradesTab,
      #allocationTab,
      #advisorTab { padding-left: clamp(24px, 4vw, 48px) !important; padding-right: clamp(24px, 4vw, 48px) !important; }
      #allocationTab .allocation-list { padding-left: 0 !important; padding-right: 0 !important; }
      #allocationTab .section-title,
      #advisorTab .section-title { padding-left: 0 !important; padding-right: 0 !important; }
      .breakdown-section { margin-left: clamp(24px, 4vw, 48px) !important; margin-right: clamp(24px, 4vw, 48px) !important; }
      .bd-seg-wrap { padding: 12px clamp(24px, 4vw, 48px); }
    }

    html {
      overflow-x: hidden;
      overscroll-behavior-x: none;
    }
    body {
      font-family: var(--font-sans);
      font-weight: 300;
      background: var(--bg);
      color: var(--text-1);
      min-height: 100vh;
      padding: 0 0 24px;
      -webkit-font-smoothing: antialiased;
      transition: background var(--duration-enter) ease, color var(--duration-enter) ease;
      overflow-x: hidden;
      overscroll-behavior-x: none;
      max-width: 100vw;
      position: relative;
    }

    body::after { display: none; }
    [data-theme="dark"] body {
      background: #0B0E1A;
      background-image: radial-gradient(ellipse 80% 50% at 50% -10%, rgba(74,124,255,0.15) 0%, transparent 60%);
    }

    /* ── Shader bg (disabled) ── */

    /* ── Animations ── */
    @keyframes fadeUp {
      from { opacity: 0; transform: translateY(6px); }
      to { opacity: 1; transform: translateY(0); }
    }

    @keyframes spin { to { transform: rotate(360deg); } }

    @keyframes dangerPulseRed {
      0%, 100% { box-shadow: 0 0 8px rgba(255,50,50,0.6), 0 0 20px rgba(255,50,50,0.2); }
      50% { box-shadow: 0 0 14px rgba(255,50,50,0.9), 0 0 30px rgba(255,50,50,0.4); }
    }
    @keyframes dangerPulseGreen {
      0%, 100% { box-shadow: 0 0 8px rgba(74,222,128,0.6), 0 0 20px rgba(74,222,128,0.2); }
      50% { box-shadow: 0 0 14px rgba(74,222,128,0.9), 0 0 30px rgba(74,222,128,0.4); }
    }
    @keyframes dangerPulseBlue {
      0%, 100% { box-shadow: 0 0 8px rgba(10,132,255,0.6), 0 0 20px rgba(10,132,255,0.2); }
      50% { box-shadow: 0 0 14px rgba(10,132,255,0.9), 0 0 30px rgba(10,132,255,0.4); }
    }
    @keyframes dangerPulseAmber {
      0%, 100% { box-shadow: 0 0 8px rgba(255,159,10,0.6), 0 0 20px rgba(255,159,10,0.2); }
      50% { box-shadow: 0 0 14px rgba(255,159,10,0.9), 0 0 30px rgba(255,159,10,0.4); }
    }

    @keyframes tableFadeIn {
      from { opacity: 0; transform: translateY(6px); }
      to { opacity: 1; transform: translateY(0); }
    }

    .table-animate {
      animation: tableFadeIn 0.3s ease both;
    }

    /* ── Header ── */
    .header {
      background: var(--bg);
      backdrop-filter: none;
      -webkit-backdrop-filter: none;
      box-shadow: none;
      position: fixed;
      top: 0;
      left: 0;
      right: 0;
      z-index: 100;
      overflow: visible;
    }
    .header-main {
      padding: clamp(10px, 3vw, 16px) 16px 4px 16px;
      padding-top: calc(clamp(10px, 3vw, 16px) + env(safe-area-inset-top, 0px));
      transition: opacity 0.2s ease;
    }
    .header-sticky {
      position: absolute;
      top: 0;
      left: 0;
      right: 0;
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      padding: 6px var(--content-px) var(--sticky-pb, 100px);
      padding-top: calc(6px + env(safe-area-inset-top, 0px));
      opacity: 0;
      pointer-events: none;
      transform: translateY(-8px);
      transition: opacity 0.5s ease, transform 0.5s var(--ease-out);
      background: var(--bg);
      font-size: 14px;
      font-weight: 400;
      color: var(--text-1);
      letter-spacing: var(--ls-tight);
      overflow: hidden;
      border-bottom-left-radius: 16px;
      border-bottom-right-radius: 16px;
    }
    .header-sticky::before {
      content: '';
      position: absolute;
      inset: 0;
      background:
        radial-gradient(circle at 50% -10%, #7c3aed 0%, transparent 40%),
        radial-gradient(circle at 50% 0%, #2563eb 0%, transparent 55%),
        radial-gradient(circle at 20% 50%, #4f46e5 0%, transparent 50%),
        radial-gradient(circle at 80% 30%, #0284c7 0%, transparent 50%),
        radial-gradient(circle at 50% 80%, #1e40af 0%, transparent 50%);
      opacity: 0.55;
      pointer-events: none;
      z-index: 1;
    }
    @keyframes stickyGlow {
      from {
        opacity: 0;
        transform: translateX(-50%) scale(0.7);
      }
      to {
        opacity: 1;
        transform: translateX(-50%) scale(1);
      }
    }
    .header-sticky::after {
      display: none;
    }
    .header-sticky.visible {
      opacity: 1;
      pointer-events: auto;
      transform: translateY(0);
    }
    [data-theme="light"] .header-sticky {
      background: #0b0e1a;
      color: rgba(255,255,255,0.95);
    }
    [data-theme="light"] .header-sticky::before {
      background:
        radial-gradient(circle at 50% -10%, #7c3aed 0%, transparent 40%),
        radial-gradient(circle at 50% 0%, #2563eb 0%, transparent 55%),
        radial-gradient(circle at 20% 50%, #4f46e5 0%, transparent 50%),
        radial-gradient(circle at 80% 30%, #0284c7 0%, transparent 50%),
        radial-gradient(circle at 50% 80%, #1e40af 0%, transparent 50%);
      opacity: 0.55;
    }
    [data-theme="light"] .header-sticky::after {
      background: linear-gradient(to bottom, transparent, var(--bg));
    }

    /* ── Light-mode: dark-theme filter area when sticky is visible ── */
    /* The sticky header has a dark bg; filters sitting on top must match dark-mode styling */
    [data-theme="light"] .header:has(.header-sticky.visible) ~ .content-filters .txn-select {
      background: rgba(20, 25, 45, 0.6);
      border-color: rgba(255,255,255,0.08);
      color: rgba(255,255,255,0.95);
    }
    [data-theme="light"] .header:has(.header-sticky.visible) ~ .content-filters .txn-select option {
      background: #0b0e1a;
      color: rgba(255,255,255,0.95);
    }
    [data-theme="light"] .header:has(.header-sticky.visible) ~ .content-filters .txn-select-wrap::after {
      color: rgba(255,255,255,0.4);
    }
    [data-theme="light"] .header:has(.header-sticky.visible) ~ .content-filters .date-nav-arrow {
      color: rgba(255,255,255,0.4);
    }
    [data-theme="light"] .header:has(.header-sticky.visible) ~ .content-filters .date-nav-arrow:active {
      color: rgba(255,255,255,0.9);
      background: rgba(255,255,255,0.06);
    }
    [data-theme="light"] .header:has(.header-sticky.visible) ~ .content-filters .date-nav-label {
      color: rgba(255,255,255,0.95);
    }
    [data-theme="light"] .header:has(.header-sticky.visible) ~ .content-filters .txn-search {
      background: rgba(255,255,255,0.08);
      border-color: rgba(255,255,255,0.1);
      color: rgba(255,255,255,0.95);
    }
    [data-theme="light"] .header:has(.header-sticky.visible) ~ .content-filters .txn-search:focus {
      border-color: rgba(255,255,255,0.2);
    }
    [data-theme="light"] .header:has(.header-sticky.visible) ~ .content-filters .txn-search::placeholder {
      color: rgba(255,255,255,0.4);
    }
    [data-theme="light"] .header:has(.header-sticky.visible) ~ .content-filters .txn-search-icon {
      color: rgba(255,255,255,0.4);
    }
    [data-theme="light"] .header:has(.header-sticky.visible) ~ .content-filters .txn-cal-btn {
      background: rgba(255,255,255,0.08);
      border-color: rgba(255,255,255,0.1);
      color: rgba(255,255,255,0.6);
    }
    [data-theme="light"] .header:has(.header-sticky.visible) ~ .content-filters .txn-cal-btn:hover {
      border-color: rgba(255,255,255,0.2);
    }
    [data-theme="light"] .header:has(.header-sticky.visible) ~ .content-filters .budget-remaining-sticky.zero {
      background: rgba(255,255,255,0.04);
      border-color: rgba(255,255,255,0.06);
    }

    .header.scrolled {
      background: rgba(11,14,26,0.7);
      backdrop-filter: blur(40px) saturate(180%);
      -webkit-backdrop-filter: blur(40px) saturate(180%);
      box-shadow: inset 0 -1px 0 var(--divider);
    }
    [data-theme="light"] .header.scrolled {
      background: rgba(250,250,250,0.7);
    }
    /* Mobile: frosted glass header with faded bottom edge */
    @media (max-width: 767px) {
      .header {
        background: transparent !important;
        backdrop-filter: none !important;
        -webkit-backdrop-filter: none !important;
        box-shadow: none !important;
        border: none !important;
        outline: none !important;
        overflow: visible !important;
      }
      .header.scrolled {
        box-shadow: none !important;
        border: none !important;
      }
      /* Solid background layer — extends below header with fade at bottom */
      .header::before {
        content: '' !important;
        display: block !important;
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        bottom: -60px;
        background: linear-gradient(to bottom, var(--bg) 0%, var(--bg) 75%, transparent 100%);
        z-index: -1;
        pointer-events: none;
        opacity: 0;
        transition: opacity var(--duration-enter) ease;
      }
      .header.scrolled::before {
        opacity: 1;
      }
      /* Filter row handles its own fade — no header ::before overrides needed */
      [data-theme="light"] .header::before {
        background: linear-gradient(to bottom, var(--bg) 0%, var(--bg) 75%, transparent 100%);
      }
      .header-sticky {
        backdrop-filter: none;
        -webkit-backdrop-filter: none;
      }
      /* Kill the ::after gradient */
      .header::after {
        display: none !important;
      }
    }

    .header-spacer {
      height: 44px;
    }

    .header-sub {
      font-size: 9px;
      font-weight: 400;
      color: rgba(255,255,255,0.15);
      font-family: var(--font-mono);
      margin-top: 2px;
      letter-spacing: var(--ls-caps);
      transition: color var(--duration-slow) ease;
    }

    .header-top {
      position: relative;
      display: flex;
      justify-content: space-between;
      align-items: center;
      gap: 8px;
    }
    .header-title {
      font-family: var(--font-sans);
      font-size: 20px;
      font-weight: 400;
      letter-spacing: var(--ls-tight);
      color: var(--text-1);
      flex: 1;
      min-width: 0;
    }
    .header-left {
      flex: 1;
      min-width: 0;
    }
    @media (max-width: 767px) {
      .header-tabs-anchor {
        display: none;
      }
    }
    /* Desktop: nav pill centered absolutely */
    @media (min-width: 768px) {
      #txnNavAnchor,
      #portfolioNavAnchor {
        position: absolute;
        left: 50%;
        top: 50%;
        transform: translate(-50%, -50%);
      }
    }
    /* Mobile: multi-row header with scroll collapse */
    @media (max-width: 767px) {
      .header-top {
        flex-wrap: wrap;
        gap: 10px;
      }
      .header-left {
        display: flex;
        align-items: center;
        gap: 10px;
        flex: 1;
      }
      .header-title {
        display: flex;
        flex-direction: column;
        gap: 0;
        transition: opacity var(--duration-slow) ease;
      }
      /* ── Page Switcher (tappable header title) ── */
      .page-switcher {
        cursor: pointer;
        -webkit-tap-highlight-color: transparent;
        display: inline-flex;
        align-items: center;
        gap: 4px;
      }
      .page-switcher:active {
        opacity: 0.6;
      }
      .header-page-name {
        display: block;
        font-size: 12px;
        font-weight: 400;
        color: var(--text-3);
        letter-spacing: var(--ls-wide);
        text-transform: uppercase;
        line-height: var(--lh-none);
        transition: font-size var(--duration-normal) var(--ease-out);
      }
      .header-tab-indicator {
        display: block;
        color: var(--text-1);
        font-weight: 400;
        font-size: 20px;
        letter-spacing: var(--ls-tight);
        line-height: var(--lh-tight);
        pointer-events: none;
        transition: font-size var(--duration-normal) var(--ease-out);
      }
      .header-tab-indicator::before {
        display: none;
      }
      /* Make entire title area clickable */
      .page-switcher * {
        pointer-events: none;
      }
      .page-switcher-chevron {
        opacity: 0.4;
        transition: transform var(--duration-normal) var(--ease-out);
        flex-shrink: 0;
      }
      .page-switcher.open .page-switcher-chevron {
        transform: rotate(180deg);
      }

      /* Page switcher dropdown */
      .page-switcher-dropdown {
        position: fixed;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        z-index: 200;
        visibility: hidden;
        opacity: 0;
        transition: opacity var(--duration-normal) ease, visibility 0s var(--duration-normal);
      }
      .page-switcher-dropdown.open {
        visibility: visible;
        opacity: 1;
        transition: opacity var(--duration-normal) ease, visibility 0s;
      }
      .page-switcher-overlay {
        position: absolute;
        inset: 0;
        background: rgba(0,0,0,0.3);
      }
      [data-theme="light"] .page-switcher-overlay {
        background: rgba(0,0,0,0.15);
      }
      .page-switcher-menu {
        position: absolute;
        top: var(--page-switcher-top, 60px);
        left: var(--content-px, 12px);
        min-width: 180px;
        background: #2a2a2a;
        border: 1px solid rgba(255,255,255,0.1);
        border-radius: 16px;
        padding: 6px;
        box-shadow: var(--shadow-xl);
        transform: scale(0.9) translateY(-8px);
        transform-origin: top left;
        transition: transform var(--duration-normal) var(--ease-out);
      }
      .page-switcher-dropdown.open .page-switcher-menu {
        transform: scale(1) translateY(0);
      }
      [data-theme="light"] .page-switcher-menu {
        background: #ffffff;
        border-color: rgba(0,0,0,0.08);
        box-shadow: var(--shadow-xl);
      }
      .page-switcher-item {
        display: flex;
        align-items: center;
        gap: 10px;
        width: 100%;
        padding: 12px 16px;
        border: none;
        border-radius: 12px;
        background: transparent;
        color: var(--text-2);
        font-family: var(--font-sans);
        font-size: 16px;
        font-weight: 400;
        cursor: pointer;
        transition: background var(--duration-fast) ease;
        -webkit-tap-highlight-color: transparent;
      }
      .page-switcher-item:active {
        background: rgba(255,255,255,0.06);
      }
      [data-theme="light"] .page-switcher-item:active {
        background: rgba(0,0,0,0.04);
      }
      .page-switcher-item.active {
        color: var(--text-1);
        font-weight: 400;
      }
      .page-switcher-item svg {
        width: 20px;
        height: 20px;
        stroke: currentColor;
        stroke-width: 1.8;
        stroke-linecap: round;
        stroke-linejoin: round;
        fill: none;
        flex-shrink: 0;
      }
      .page-switcher-check {
        margin-left: auto;
        width: 16px;
        height: 16px;
        color: var(--emerald);
        display: none;
      }
      .page-switcher-item.active .page-switcher-check {
        display: block;
      }

      /* Show logo in mobile header */
      .mobile-header-logo {
        display: block !important;
        transition: opacity var(--duration-slow) ease, max-width var(--duration-slow) ease, margin var(--duration-slow) ease;
        overflow: hidden;
      }
      /* Collapsible elements fade out on scroll */
      .header-collapse-hide {
        transition: opacity var(--duration-normal) ease, max-height var(--duration-slow) ease, margin var(--duration-slow) ease, padding var(--duration-slow) ease;
        overflow: hidden;
        max-height: 200px;
      }
      /* Scrolled/collapsed state */
      .mobile-header-logo {
        transition: opacity var(--duration-normal) var(--ease-out), max-width var(--duration-normal) var(--ease-out), margin var(--duration-normal) var(--ease-out);
      }
      .header.header-compact .mobile-header-logo {
        opacity: 1 !important;
        max-width: 20px !important;
        margin-right: 6px !important;
      }
      .header.header-compact .mobile-header-logo svg {
        width: 14px !important;
        height: 14px !important;
      }
      .header-collapse-hide {
        transition: opacity var(--duration-normal) var(--ease-out), max-height var(--duration-normal) var(--ease-out), margin var(--duration-normal) var(--ease-out), padding var(--duration-normal) var(--ease-out);
        overflow: hidden;
        max-height: 200px;
      }
      .header.header-compact .header-collapse-hide {
        opacity: 0;
        max-height: 0 !important;
        margin: 0 !important;
        padding: 0 !important;
        pointer-events: none;
      }
      .header.header-compact .header-title {
        gap: 0;
      }
      .header.header-compact .header-page-name {
        font-size: 9px;
      }
      .header.header-compact .header-tab-indicator {
        font-size: 14px;
        font-weight: 400;
      }
      .header.header-compact {
        padding-top: calc(6px + env(safe-area-inset-top, 0px)) !important;
        padding-bottom: 6px !important;
      }
      .header.header-compact .header-top {
        gap: 0;
      }
      .header.header-compact .header-left {
        flex: 1;
        justify-content: flex-start;
      }
      .header.header-compact .header-right {
        opacity: 0;
        pointer-events: none;
      }
      .header.header-compact .page-switcher-chevron {
        width: 10px;
        height: 10px;
      }
      /* Hide controls pill on mobile — replaced by settings gear */
      .controls-pill { display: none !important; }
      .header-right {
        flex-shrink: 0;
        transition: opacity var(--duration-normal) var(--ease-out);
      }
      /* Settings gear button */
      .mobile-settings-btn {
        display: flex !important;
        align-items: center;
        justify-content: center;
        width: 32px;
        height: 32px;
        border: none;
        background: none;
        color: var(--text-2);
        cursor: pointer;
        padding: 0;
        -webkit-tap-highlight-color: transparent;
      }
      .mobile-settings-btn svg {
        width: 20px;
        height: 20px;
        stroke: currentColor;
        stroke-width: 1.8;
        fill: none;
        stroke-linecap: round;
        stroke-linejoin: round;
      }
      /* Settings popover bubble */
      .mobile-settings-popup {
        display: block !important;
        position: fixed;
        top: 0; left: 0; right: 0; bottom: 0;
        z-index: 500;
        pointer-events: none;
        visibility: hidden;
      }
      .mobile-settings-popup.open {
        pointer-events: auto;
        visibility: visible;
      }
      .mobile-settings-overlay {
        position: absolute;
        top: 0; left: 0; right: 0; bottom: 0;
      }
      .mobile-settings-backdrop {
        position: fixed;
        top: 0; left: 0; right: 0; bottom: 0;
        z-index: 0;
      }
      .mobile-settings-bubble {
        position: absolute;
        top: calc(env(safe-area-inset-top, 0px) + 52px);
        right: 12px;
        min-width: 210px;
        background: #1c1c1e;
        border: 1px solid rgba(255,255,255,0.1);
        border-radius: 16px;
        padding: 6px 0;
        box-shadow: var(--shadow-xl);
        transform: scale(0.4) translateY(-12px);
        transform-origin: top right;
        opacity: 0;
        transition: transform var(--duration-slow) var(--ease-spring), opacity var(--duration-normal) ease;
        z-index: 1;
        pointer-events: none;
      }
      .mobile-settings-popup.open .mobile-settings-bubble {
        transform: scale(1) translateY(0);
        opacity: 1;
        pointer-events: auto;
      }
      [data-theme="light"] .mobile-settings-bubble {
        background: #ffffff;
        border-color: rgba(0,0,0,0.1);
        box-shadow: var(--shadow-xl);
      }
      .settings-sheet-item {
        display: flex;
        align-items: center;
        gap: 12px;
        padding: 12px 16px;
        border: none;
        background: none;
        width: 100%;
        color: var(--text-1);
        font-family: var(--font-sans);
        font-size: 16px;
        font-weight: 400;
        cursor: pointer;
        -webkit-tap-highlight-color: transparent;
      }
      .settings-sheet-item:active {
        background: rgba(255,255,255,0.06);
      }
      [data-theme="light"] .settings-sheet-item:active {
        background: rgba(0,0,0,0.04);
      }
      .settings-sheet-item + .settings-sheet-item {
        border-top: 1px solid var(--divider);
      }
      .settings-sheet-item svg {
        width: 18px;
        height: 18px;
        stroke: currentColor;
        stroke-width: 1.8;
        fill: none;
        stroke-linecap: round;
        stroke-linejoin: round;
        flex-shrink: 0;
        color: var(--text-2);
      }
      .settings-sheet-item .settings-item-label { flex: 1; text-align: left; }
      .settings-sheet-item .settings-item-value {
        font-size: 12px;
        color: var(--text-3);
      }
      .settings-sheet-item.danger { color: #ff453a; }
      .settings-sheet-item.danger svg { color: #ff453a; }
      /* Hide nav pill on mobile — page switcher is in title */
      #txnNavAnchor,
      #portfolioNavAnchor {
        display: none !important;
      }
      #txnNavAnchor .nav-items-wrapper,
      #portfolioNavAnchor .nav-items-wrapper {
        width: 100%;
      }
      #txnNavAnchor .nav-item,
      #portfolioNavAnchor .nav-item {
        flex: 1;
      }
    }
    .content-filters {
      padding: 0 var(--content-px);
    }
    @media (max-width: 767px) {
      .content-filters {
        position: fixed !important;
        top: var(--header-h, 44px);
        left: 0;
        right: 0;
        z-index: 101;
        background: transparent;
        padding-top: 0px !important;
        padding-bottom: 8px !important;
        transition: top var(--duration-normal) var(--ease-out);
        border: none;
        box-shadow: none;
      }
      .content-filters::after {
        display: none;
      }
      .filters-spacer {
        display: block;
        height: 60px;
      }
      .budget-filters-spacer {
        height: 100px;
      }
    }

    /* ── Header controls pill bar ── */
    .header-right {
      flex-shrink: 0;
      display: flex;
      justify-content: flex-end;
      margin-left: auto;
    }
    @media (max-width: 640px) {
      .header-right { flex: none; margin-left: auto; }
    }
    .controls-pill {
      display: inline-flex;
      align-items: center;
      gap: 0;
      padding: 4px;
      border-radius: 12px;
      background: var(--surface-hover);
      border: 1px solid var(--border-subtle);
      box-shadow: none;
      transition: all var(--duration-enter) ease;
    }
    .controls-pill .ctrl-divider {
      width: 1px;
      height: 18px;
      flex-shrink: 0;
    }
    [data-theme="dark"] .controls-pill .ctrl-divider { background: rgba(255,255,255,0.1); }
    [data-theme="light"] .controls-pill .ctrl-divider { background: rgba(0,0,0,0.1); }

    .ctrl-btn {
      position: relative;
      width: 28px; height: 28px;
      display: flex; align-items: center; justify-content: center;
      background: transparent;
      border: none;
      border-radius: 50%;
      cursor: pointer;
      -webkit-tap-highlight-color: transparent;
      transition: color var(--duration-slow) ease, background var(--duration-normal) ease;
      flex-shrink: 0;
    }
    [data-theme="dark"] .ctrl-btn { color: rgba(255,255,255,0.5); }
    [data-theme="light"] .ctrl-btn { color: rgba(0,0,0,0.4); }
    .ctrl-btn:hover {
      background: rgba(128,128,128,0.15);
    }
    .ctrl-btn:active {
      transform: scale(0.85);
    }
    /* Tooltips */
    .ctrl-btn::after {
      content: attr(data-tip);
      position: absolute;
      top: calc(100% + 6px);
      left: 50%;
      transform: translateX(-50%) translateY(4px);
      background: #2c2c2e;
      color: rgba(255,255,255,0.8);
      font-family: var(--font-sans);
      font-size: 10px;
      font-weight: 400;
      letter-spacing: var(--ls-slight);
      padding: 4px 8px;
      border-radius: 6px;
      white-space: nowrap;
      pointer-events: none;
      opacity: 0;
      transition: opacity var(--duration-fast) ease, transform var(--duration-fast) var(--ease-out);
      z-index: 200;
      border: 1px solid rgba(255,255,255,0.08);
      box-shadow: var(--shadow-sm);
    }
    @media (hover: hover) {
      .ctrl-btn:hover::after {
        opacity: 1;
        transform: translateX(-50%) translateY(0);
      }
    }
    .ctrl-btn:not([data-tip])::after { display: none; }
    .ctrl-btn.ctrl-active {
      color: var(--emerald);
    }
    [data-theme="dark"] .ctrl-btn.ctrl-active { color: var(--emerald); }
    [data-theme="light"] .ctrl-btn.ctrl-active { color: var(--emerald); }

    .ctrl-btn svg {
      width: 16px; height: 16px;
      fill: none;
      stroke: currentColor;
      stroke-width: 2;
      stroke-linecap: round;
      stroke-linejoin: round;
    }
    .ctrl-btn.spinning svg { animation: spin 0.8s linear infinite; }

    /* Privacy toggle icon states */
    .ctrl-btn .icon-eye-open { display: block; }
    .ctrl-btn .icon-eye-closed { display: none; }
    .ctrl-btn.demo-active .icon-eye-open { display: none; }
    .ctrl-btn.demo-active .icon-eye-closed { display: block; }

    .header-filter-row {
      width: 100%;
      order: 3;
      overflow: visible;
      display: flex;
      align-items: center;
      gap: 0;
    }

    .filter-track-compact {
      padding: 4px;
      display: inline-flex;
      gap: 0;
    }

    .filter-track-compact .filter-chip {
      flex: 0 0 auto;
      padding: 8px 16px;
      font-size: 14px;
      text-align: center;
    }

    .currency-btn {
      font-family: var(--font-mono);
      font-size: clamp(11px, 3vw, 12px);
    }

    .currency-toggle {
      position: relative;
      margin-left: 6px;
      padding: 8px 16px;
      border-radius: 12px;
      font-family: var(--font-mono);
      font-size: 12px;
      font-weight: 400;
      letter-spacing: var(--ls-caps);
      cursor: pointer;
      border: 1px solid var(--glass-border);
      background: var(--glass-bg);
      color: var(--text-1);
      box-shadow: var(--shadow-card);
      transition: transform var(--duration-normal) var(--ease-out), all var(--duration-slow) ease;
      -webkit-tap-highlight-color: transparent;
      user-select: none;
      flex-shrink: 0;
    }
    .currency-toggle:active {
      transform: scale(0.9);
    }

    @media (max-width: 399px) {
      .filter-track-compact .filter-chip {
        padding: 6px 12px;
        font-size: 12px;
      }
    }

    /* Desktop: single row with filter centered */
    @media (min-width: 640px) {
      .header-top {
        display: flex;
        gap: 16px;
        align-items: center;
        flex-wrap: nowrap;
      }

      .header-filter-row {
        width: auto;
        order: unset;
        display: flex;
        justify-content: center;
      }
    }

    /* ── Theme toggle ── */
    .theme-toggle {
      width: 34px; height: 34px;
      background: var(--toggle-bg);
      border: 1px solid var(--toggle-border);
      border-radius: 50%;
      display: flex; align-items: center; justify-content: center;
      font-size: 16px;
      cursor: pointer;
      backdrop-filter: blur(12px);
      box-shadow: var(--shadow-subtle), inset 0 1px 0 var(--glass-shine);
      transition: all var(--duration-enter) ease;
      user-select: none;
      flex-shrink: 0;
    }

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

    .theme-icon-wrap {
      position: relative;
      width: 18px; height: 18px;
      pointer-events: none;
    }
    .theme-icon-wrap svg {
      position: absolute;
      top: 0; left: 0;
      width: 18px; height: 18px;
      transition: transform var(--duration-enter) var(--ease-spring), opacity var(--duration-slow) ease;
      stroke-width: 2.2;
      fill: none;
      stroke: currentColor;
      stroke-linecap: round;
      stroke-linejoin: round;
    }
    .theme-sun-icon { opacity: 1; transform: rotate(0deg) scale(1); }
    .theme-moon-icon { opacity: 0; transform: rotate(-90deg) scale(0); }
    [data-theme="dark"] .theme-sun-icon { opacity: 0; transform: rotate(90deg) scale(0); }
    [data-theme="dark"] .theme-moon-icon { opacity: 1; transform: rotate(0deg) scale(1); }

    .refresh-btn {
      background: none;
      border: none;
      color: var(--text-2);
      cursor: pointer;
      padding: 8px;
      transition: color var(--duration-slow) ease;
    }

    .refresh-btn svg { width: 18px; height: 18px; }
    .refresh-btn.spinning svg { animation: spin 0.8s linear infinite; }

    /* ── Sign In ── */
    .sign-in-container {
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: space-between;
      min-height: 100vh;
      min-height: 100dvh;
      width: 100%;
      padding: env(safe-area-inset-top, 0px) clamp(20px, 5vw, 60px) env(safe-area-inset-bottom, 32px);
      text-align: center;
      position: fixed;
      top: 0;
      left: 0;
      z-index: 100;
      overflow: hidden;
      background: #050510;
    }
    /* Animated gradient canvas */
    .sign-in-gradient {
      position: absolute;
      inset: 0;
      width: 100%;
      height: 100%;
      z-index: 0;
      opacity: 0;
      animation: gradientFadeIn 2s ease 0.3s forwards;
    }
    @keyframes gradientFadeIn {
      from { opacity: 0; }
      to { opacity: 1; }
    }
    .sign-in-container::before {
      display: none;
    }
    .sign-in-brand {
      flex: 1;
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      margin-top: -4vh;
      position: relative;
      z-index: 1;
    }
    .sign-in-brand .brand-mark {
      display: flex;
      align-items: center;
      justify-content: center;
      position: relative;
    }
    /* Primary ambient glow — breathes behind logo */
    .brand-mark::before {
      content: '';
      position: absolute;
      width: 300px;
      height: 300px;
      border-radius: 50%;
      background: radial-gradient(circle, rgba(74,124,255,0.22) 0%, transparent 70%);
      opacity: 0;
      animation: glowBreath 4s cubic-bezier(0.16,1,0.3,1) 1s forwards;
      pointer-events: none;
    }
    /* Secondary outer glow — wide halo */
    .brand-mark::after {
      content: '';
      position: absolute;
      width: 500px;
      height: 500px;
      border-radius: 50%;
      background: radial-gradient(circle, rgba(100,120,255,0.06) 0%, transparent 65%);
      opacity: 0;
      animation: glowBreath 4s cubic-bezier(0.16,1,0.3,1) 1.3s forwards;
      pointer-events: none;
    }
    @keyframes glowBreath {
      0% { opacity: 0; transform: scale(0.4); }
      60% { opacity: 1; transform: scale(1.05); }
      100% { opacity: 0.6; transform: scale(1); }
    }

    /* Logo SVG entrance — floats up from depth with deblur */
    .brand-mark svg {
      overflow: visible;
      opacity: 0;
      transform: scale(0.5) translateY(40px);
      filter: blur(20px);
      animation: logoFloat 1.8s cubic-bezier(0.16,1,0.3,1) 0.15s forwards;
      position: relative;
      z-index: 1;
    }
    @keyframes logoFloat {
      0%   { opacity: 0;   transform: scale(0.5) translateY(40px); filter: blur(20px); }
      40%  { opacity: 0.8; transform: scale(1.02) translateY(-4px); filter: blur(2px); }
      70%  { opacity: 1;   transform: scale(0.98) translateY(2px);  filter: blur(0px); }
      100% { opacity: 1;   transform: scale(1) translateY(0);       filter: blur(0px); }
    }

    /* Each letter path draws in with staggered rise */
    .brand-mark svg path {
      opacity: 0;
      transform: translateY(18px) scale(0.9);
      animation: letterReveal 1s cubic-bezier(0.16,1,0.3,1) forwards;
    }
    .brand-mark svg path:nth-of-type(1) { animation-delay: 0.7s; }   /* Z */
    .brand-mark svg path:nth-of-type(2) { animation-delay: 1.05s; }  /* d dot */
    .brand-mark svg path:nth-of-type(3) { animation-delay: 1.2s; }   /* d body */
    .brand-mark svg path:nth-of-type(4) { animation-delay: 0.85s; }  /* a */
    @keyframes letterReveal {
      0%   { opacity: 0; transform: translateY(18px) scale(0.9); filter: blur(6px); }
      50%  { opacity: 1; filter: blur(0px); }
      100% { opacity: 1; transform: translateY(0) scale(1); filter: blur(0px); }
    }
    /* Light theme — sign-in overrides */
    [data-theme="light"] .sign-in-container {
      background: #f0f2f8;
    }
    [data-theme="light"] .brand-mark::before {
      background: radial-gradient(circle, rgba(59,130,246,0.08) 0%, transparent 70%);
    }
    [data-theme="light"] .brand-mark::after {
      background: radial-gradient(circle, rgba(99,102,241,0.04) 0%, transparent 65%);
    }
    /* Sign-in button area */
    .sign-in-bottom {
      padding-bottom: max(32px, env(safe-area-inset-bottom, 32px));
      width: 100%;
      max-width: 360px;
      opacity: 0;
      transform: translateY(20px);
      animation: btnReveal 0.9s var(--ease-out) 1.8s forwards;
      position: relative;
      z-index: 1;
    }
    @keyframes btnReveal {
      to { opacity: 1; transform: translateY(0); }
    }
    /* Ambient light sweep across the whole container */
    .sign-in-container > .light-sweep {
      position: absolute;
      top: 0;
      left: -100%;
      width: 60%;
      height: 100%;
      background: linear-gradient(90deg, transparent, rgba(74,124,255,0.08), transparent);
      animation: lightSweep 2.5s ease-in-out 0.8s forwards;
      pointer-events: none;
      z-index: 0;
    }
    [data-theme="light"] .sign-in-container > .light-sweep {
      background: linear-gradient(90deg, transparent, rgba(0,0,0,0.03), transparent);
    }
    @keyframes lightSweep {
      to { left: 200%; }
    }
    /* Sign-in screen exit animation */
    .sign-in-container.exiting {
      animation: signInExit 0.5s var(--ease-out) forwards;
    }
    @keyframes signInExit {
      to { opacity: 0; transform: scale(0.96); }
    }

    .sign-in-bottom .btn-glass {
      background: rgba(255,255,255,0.08);
      backdrop-filter: blur(20px) saturate(180%);
      -webkit-backdrop-filter: blur(20px) saturate(180%);
      border: 1px solid rgba(255,255,255,0.1);
      box-shadow: var(--shadow-lg);
      color: rgba(245,245,247,0.85);
      width: 100%;
      font-weight: 400;
      letter-spacing: var(--ls-slight);
      display: flex;
      align-items: center;
      justify-content: center;
      gap: 10px;
      transition: background var(--duration-normal) ease, border-color var(--duration-normal) ease, box-shadow var(--duration-normal) ease, transform var(--duration-fast) ease;
    }
    .sign-in-bottom .btn-glass:hover {
      background: rgba(255,255,255,0.12);
      border-color: rgba(255,255,255,0.18);
      box-shadow: var(--shadow-lg), 0 0 30px rgba(255,255,255,0.04);
    }
    .sign-in-bottom .btn-glass:focus-visible {
      outline: 2px solid rgba(255,255,255,0.4);
      outline-offset: 2px;
    }
    .sign-in-bottom .btn-glass:active {
      background: rgba(255,255,255,0.15);
      transform: scale(0.97);
    }
    .sign-in-bottom .btn-glass .btn-spinner {
      display: none;
      width: 16px;
      height: 16px;
      border: 2px solid rgba(255,255,255,0.2);
      border-top-color: rgba(255,255,255,0.8);
      border-radius: 50%;
      animation: spin 0.7s linear infinite;
    }
    .sign-in-bottom .btn-glass.loading .btn-spinner { display: block; }
    .sign-in-bottom .btn-glass.loading .btn-label { opacity: 0.6; }
    /* Google icon in sign-in button */
    .btn-glass .google-icon {
      width: 18px;
      height: 18px;
      flex-shrink: 0;
    }
    /* Light theme buttons */
    [data-theme="light"] .sign-in-bottom .btn-glass {
      background: rgba(0,0,0,0.05);
      border: 1px solid rgba(0,0,0,0.1);
      color: rgba(0,0,0,0.75);
    }
    [data-theme="light"] .sign-in-bottom .btn-glass:hover {
      background: rgba(0,0,0,0.08);
      border-color: rgba(0,0,0,0.15);
      box-shadow: var(--shadow-lg), 0 0 30px rgba(0,0,0,0.03);
    }
    [data-theme="light"] .sign-in-bottom .btn-glass:focus-visible {
      outline-color: rgba(0,0,0,0.3);
    }
    [data-theme="light"] .sign-in-bottom .btn-glass:active {
      background: rgba(0,0,0,0.1);
    }
    [data-theme="light"] .sign-in-bottom .btn-glass .btn-spinner {
      border-color: rgba(0,0,0,0.15);
      border-top-color: rgba(0,0,0,0.7);
    }

    .btn-demo {
      background: none;
      border: none;
      color: rgba(255,255,255,0.4);
      font-family: var(--font-sans);
      font-size: 14px;
      font-weight: 400;
      letter-spacing: var(--ls-slight);
      padding: 12px;
      margin-top: 8px;
      cursor: pointer;
      transition: color var(--duration-normal) ease, transform var(--duration-fast) ease;
      width: 100%;
    }
    .btn-demo:hover { color: rgba(255,255,255,0.65); }
    .btn-demo:focus-visible {
      outline: 2px solid rgba(255,255,255,0.3);
      outline-offset: 2px;
      border-radius: 6px;
    }
    .btn-demo:active { transform: scale(0.97); }
    .btn-demo .demo-arrow {
      display: inline-block;
      transition: transform var(--duration-normal) ease;
      margin-left: 4px;
    }
    .btn-demo:hover .demo-arrow { transform: translateX(3px); }
    /* Light theme demo button */
    [data-theme="light"] .btn-demo { color: rgba(0,0,0,0.4); }
    [data-theme="light"] .btn-demo:hover { color: rgba(0,0,0,0.65); }
    [data-theme="light"] .btn-demo:focus-visible { outline-color: rgba(0,0,0,0.2); }

    .sign-in-error {
      font-family: var(--font-sans);
      font-size: 12px;
      color: var(--red);
      margin-top: 12px;
      text-align: center;
      line-height: var(--lh-normal);
    }

    .btn {
      background: linear-gradient(135deg, var(--emerald), var(--emerald-dim));
      color: #fff;
      border: none;
      padding: 16px 32px;
      border-radius: 12px;
      font-size: 16px;
      font-weight: 400;
      font-family: var(--font-sans);
      cursor: pointer;
      transition: opacity var(--duration-normal), transform var(--duration-fast);
      box-shadow: 0 4px 20px rgba(74,222,128,0.25);
    }

    .btn:hover { opacity: 0.9; }
    .btn:active { transform: scale(0.97); }

    /* Reduced motion — disable sign-in animations */
    @media (prefers-reduced-motion: reduce) {
      .brand-mark svg,
      .brand-mark svg path,
      .brand-mark::before,
      .brand-mark::after,
      .sign-in-bottom,
      .sign-in-gradient,
      .sign-in-container > .light-sweep {
        animation: none;
        opacity: 1;
        transform: none;
        filter: none;
      }
      .brand-mark::before { opacity: 0.5; }
      .brand-mark::after { opacity: 0.5; }
      .sign-in-container.exiting { animation: none; opacity: 0; }
      .loading-logo { animation: none; opacity: 1; }
      .loading-dot { animation: none; opacity: 0.6; }
    }

