:root {
    --tsa-page: #f8fafc;
    --tsa-surface: #ffffff;
    --tsa-surface-muted: #f1f5f9;
    --tsa-border: rgba(15, 23, 42, 0.10);
    --tsa-text: #0f172a;
    --tsa-text-muted: #64748b;
    --tsa-primary: #006ad9;
    --tsa-success: #16a34a;
    --tsa-warning: #f59e0b;
    --tsa-danger: #dc2626;

    --color-primary-alpha: rgba(0, 106, 217, 0.08);
    --color-primary-border: rgba(0, 106, 217, 0.15);
    --color-secondary-alpha: rgba(74, 157, 127, 0.08);
    --color-secondary-border: rgba(74, 157, 127, 0.15);
    --color-tertiary-alpha: rgba(245, 158, 11, 0.08);
    --color-tertiary-border: rgba(245, 158, 11, 0.15);
    --color-accent-alpha: rgba(139, 92, 246, 0.08);
    --color-accent-border: rgba(139, 92, 246, 0.15);
}

.dark {
    --tsa-page: #020617;
    --tsa-surface: #0f172a;
    --tsa-surface-muted: #1e293b;
    --tsa-border: rgba(148, 163, 184, 0.18);
    --tsa-text: #f8fafc;
    --tsa-text-muted: #94a3b8;
    --tsa-primary: #60a5fa;
    --tsa-success: #4ade80;
    --tsa-warning: #fbbf24;
    --tsa-danger: #fb7185;

    --color-primary-alpha: rgba(96, 165, 250, 0.08);
    --color-primary-border: rgba(96, 165, 250, 0.15);
    --color-secondary-alpha: rgba(74, 222, 128, 0.08);
    --color-secondary-border: rgba(74, 222, 128, 0.15);
    --color-tertiary-alpha: rgba(251, 191, 36, 0.08);
    --color-tertiary-border: rgba(251, 191, 36, 0.15);
    --color-accent-alpha: rgba(167, 139, 250, 0.08);
    --color-accent-border: rgba(167, 139, 250, 0.15);
}

.tsa-page-surface {
    background: var(--tsa-page);
    color: var(--tsa-text);
}

.tsa-card {
    background: var(--tsa-surface);
    border: 1px solid var(--tsa-border);
    color: var(--tsa-text);
}

.tsa-muted-card {
    background: var(--tsa-surface-muted);
    border: 1px solid var(--tsa-border);
}

.tsa-text-muted {
    color: var(--tsa-text-muted);
}

.tsa-focus-ring:focus-visible {
    outline: 2px solid var(--tsa-primary);
    outline-offset: 2px;
}

.tsa-action {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    border-radius: 0.875rem;
    transition: transform 160ms ease, box-shadow 160ms ease, background-color 160ms ease, border-color 160ms ease;
}

.tsa-action:hover {
    transform: translateY(-1px);
}

.tsa-action:active {
    transform: translateY(0);
}

.tsa-interactive-card {
    transition: transform 180ms ease, border-color 180ms ease, background-color 180ms ease, box-shadow 180ms ease;
}

.tsa-interactive-card:hover {
    transform: translateY(-2px);
    border-color: color-mix(in srgb, var(--tsa-primary) 34%, var(--tsa-border));
}

.tsa-skeleton {
    position: relative;
    overflow: hidden;
    background: var(--tsa-surface-muted);
}

.tsa-skeleton::after {
    content: "";
    position: absolute;
    inset: 0;
    transform: translateX(-100%);
    background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.24), transparent);
    animation: tsa-skeleton-sweep 1.2s infinite;
}

@keyframes tsa-skeleton-sweep {
    100% {
        transform: translateX(100%);
    }
}

.tsa-chart-frame {
    min-height: 320px;
    aspect-ratio: 16 / 9;
}

.tsa-history-table {
    background: var(--tsa-surface);
    border-color: var(--tsa-border);
}

.tsa-history-row {
    transition: background-color 150ms ease, transform 150ms ease;
}

.tsa-history-row:hover {
    background: color-mix(in srgb, var(--tsa-primary) 7%, transparent);
}

.tsa-drawer-active {
    transform: translateX(0) !important;
}

.tsa-backdrop-active {
    opacity: 1 !important;
    pointer-events: auto !important;
}

.custom--pagination .pagination {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    justify-content: center;
}

@keyframes pulse-fast {
    0%,
    100% {
        opacity: 1;
    }

    50% {
        opacity: 0.3;
    }
}

.skeleton-pulsing {
    animation: pulse-fast 1.6s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}

.reveal-up {
    opacity: 0;
    transform: translateY(30px);
    transition: opacity 0.8s cubic-bezier(0.16, 1, 0.3, 1), transform 0.8s cubic-bezier(0.16, 1, 0.3, 1);
    will-change: opacity, transform;
}

.reveal-active {
    opacity: 1;
    transform: translateY(0);
}

.dark .bg-white,
.dark .bg-light-50,
.dark .bg-light-100,
.dark .bg-white\/30,
.dark .bg-white\/40,
.dark .bg-white\/60,
.dark .bg-white\/70,
.dark .bg-white\/80,
.dark .bg-white\/90,
.dark .bg-white\/95 {
    background-color: var(--tsa-surface) !important;
}

.dark .border-light-100,
.dark .border-light-200,
.dark .border-light-300 {
    border-color: var(--tsa-border) !important;
}

@media (max-width: 640px) {
    .tsa-chart-frame {
        min-height: 260px;
        aspect-ratio: 4 / 3;
    }

    #trx-detail-drawer {
        top: auto !important;
        bottom: 0 !important;
        left: 0 !important;
        right: 0 !important;
        width: 100% !important;
        max-width: 100% !important;
        height: auto !important;
        max-height: 85vh !important;
        transform: translateY(100%) !important;
        border-top-left-radius: 28px !important;
        border-top-right-radius: 28px !important;
        border-left: none !important;
        border-top: 1px solid rgba(255, 255, 255, 0.08) !important;
        padding-bottom: 2rem !important;
        box-shadow: 0 -15px 30px rgba(0, 0, 0, 0.3) !important;
    }

    #trx-detail-drawer.tsa-drawer-active {
        transform: translateY(0) !important;
    }
}

/* Zero-Knowledge Stealth Mode (2027 Upgrade) */
.stealth-mode-active .hideable-balance {
    filter: blur(8px);
    transition: filter 0.25s cubic-bezier(0.4, 0, 0.2, 1);
    user-select: none;
    pointer-events: none;
}
.hideable-balance {
    transition: filter 0.25s cubic-bezier(0.4, 0, 0.2, 1);
}

/* 2028 Gamified Metallic Cards & specular reflections */
.vip-metallic-card {
    background-image: linear-gradient(135deg, #111827 0%, #1f2937 100%), linear-gradient(to right, rgba(251, 191, 36, 0.4), rgba(245, 158, 11, 0.4)) !important;
    background-clip: padding-box, border-box;
    background-origin: border-box;
    border: 1px solid transparent !important;
    box-shadow: 0 10px 30px -10px rgba(0, 0, 0, 0.5), inset 0 1px 0 rgba(255, 255, 255, 0.1) !important;
    transform-style: preserve-3d;
}

.vip-metallic-card::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(105deg, transparent 30%, rgba(255, 255, 255, 0.08) 40%, rgba(255, 255, 255, 0.22) 50%, rgba(255, 255, 255, 0.08) 60%, transparent 70%);
    background-size: 200% 100%;
    background-position: 200% 0;
    transition: background-position 0.8s ease;
    pointer-events: none;
    z-index: 2;
}

.vip-metallic-card:hover::after {
    background-position: -200% 0;
}

/* Product Alpha Colors for Exposure Treemap */
.bg-product-primary-alpha { background-color: var(--color-primary-alpha); }
.border-product-primary-alpha { border-color: var(--color-primary-border); }
.text-product-primary { color: var(--tsa-primary); }

.bg-product-secondary-alpha { background-color: var(--color-secondary-alpha); }
.border-product-secondary-alpha { border-color: var(--color-secondary-border); }
.text-product-secondary { color: #4a9d7f; }

.bg-product-tertiary-alpha { background-color: var(--color-tertiary-alpha); }
.border-product-tertiary-alpha { border-color: var(--color-tertiary-border); }
.text-product-tertiary { color: #f59e0b; }

.bg-product-accent-alpha { background-color: var(--color-accent-alpha); }
.border-product-accent-alpha { border-color: var(--color-accent-border); }
.text-product-accent { color: #8b5cf6; }

/* Dark mode variations for exposure products */
.dark .text-product-primary { color: var(--tsa-primary); }
.dark .text-product-secondary { color: var(--tsa-success); }
.dark .text-product-tertiary { color: var(--tsa-warning); }
.dark .text-product-accent { color: #a78bfa; }

