        /* Tokens imported via css/tokens.css — no :root block needed here */

        /* Base Styles */

        body {
            font-family: var(--font-sans);
            background: var(--bg-app);
            color: var(--text-primary);
            min-height: 100vh;
            overflow-x: auto;
        }

        /* Desktop only: min-width for table layout */
        @media (min-width: 1024px) and (min-height: 500px) {
            body {
                min-width: 1200px;
            }
        }

        /* Cards */
        .stat-card {
            background: var(--bg-card);
            border: 1px solid var(--border);
            border-radius: var(--radius-xl);
            padding: var(--space-xl) var(--space-2xl);
            transition: transform var(--transition-fast), box-shadow var(--transition-fast);
        }

        .stat-card:hover {
            transform: translateY(-2px);
            box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
        }

        /* Animations */
        .pulse-dot {
            animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
        }

        @keyframes pulse {
            0%, 100% { opacity: 1; }
            50% { opacity: 0.5; }
        }

        .blink-dot {
            animation: blink 2s ease-in-out infinite;
        }

        @keyframes blink {
            0%, 100% { opacity: 1; }
            50% { opacity: 0.3; }
        }

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

        /* Validator Map Marker - Pulsating Blue Dot */
        .validator-pulse-marker {
            position: relative;
        }
        .validator-pulse-marker .pulse-dot {
            position: absolute;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            width: 8px;
            height: 8px;
            background: #3b82f6;
            border-radius: 50%;
            animation: validatorPulse 3s ease-in-out infinite;
        }
        .validator-pulse-marker .pulse-ring {
            position: absolute;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            width: 8px;
            height: 8px;
            border: 1px solid rgba(59, 130, 246, 0.5);
            border-radius: 50%;
            animation: validatorRing 3s ease-out infinite;
        }
        @keyframes validatorPulse {
            0%, 100% {
                opacity: 0.7;
                box-shadow: 0 0 4px 2px rgba(59, 130, 246, 0.3);
            }
            50% {
                opacity: 1;
                box-shadow: 0 0 8px 4px rgba(59, 130, 246, 0.5);
            }
        }
        @keyframes validatorRing {
            0% {
                transform: translate(-50%, -50%) scale(1);
                opacity: 0.6;
            }
            100% {
                transform: translate(-50%, -50%) scale(3);
                opacity: 0;
            }
        }

        /* Typography */
        .metric-value {
            font-family: var(--font-sans);
            font-size: clamp(1.5rem, 4vw, 2.5rem);
            font-weight: 700;
            color: var(--text-primary);
        }

        .section-title {
            font-size: 1.5rem;
            font-weight: 600;
            color: var(--text-primary);
            margin-bottom: var(--space-2xl);
            display: flex;
            align-items: center;
            gap: var(--space-sm);
        }

        /* Loading States */
        .loading-spinner {
            border: 4px solid var(--accent-backdrop);
            border-top-color: var(--accent);
            border-radius: 50%;
            width: 60px;
            height: 60px;
            animation: spin 1s linear infinite;
        }

        /* Status & Badges */
        .glow {
            box-shadow: 0 0 15px var(--accent-backdrop);
        }

        .alert-critical {
            animation: alertPulse 1.5s ease-in-out infinite;
        }

        @keyframes alertPulse {
            0%, 100% { background-color: rgba(255, 107, 107, 0.2); }
            50% { background-color: rgba(255, 107, 107, 0.4); }
        }

        .comparison-badge {
            display: inline-flex;
            align-items: center;
            padding: var(--space-xs) var(--space-md);
            border-radius: var(--radius-md);
            font-size: 0.75rem;
            font-weight: 600;
        }

        .comparison-badge.better {
            background-color: rgba(107, 203, 119, 0.16);
            color: var(--color-success);
        }

        .comparison-badge.worse {
            background-color: rgba(255, 107, 107, 0.16);
            color: var(--color-error);
        }

        /* Charts */
        .chart-container {
            position: relative;
            height: 300px;
            width: 100%;
        }

        /* Tailwind Class Overrides for X1 Design System */
        /* Text colors - map emerald to primary blue */
        .text-emerald-300, .text-emerald-400, .text-emerald-500 {
            color: var(--accent) !important;
        }

        /* Text colors - map gray hierarchy to X1 text colors */
        .text-gray-100 {
            color: var(--text-primary) !important;
        }

        .text-gray-200, .text-gray-300 {
            color: var(--text-secondary) !important;
        }

        .text-gray-400 {
            color: var(--text-helper) !important;
        }

        .text-gray-500, .text-gray-600 {
            color: var(--text-disabled) !important;
        }

        /* Text colors - system states */
        .text-red-400, .text-red-500 {
            color: var(--color-error) !important;
        }

        .text-yellow-400 {
            color: var(--color-warning) !important;
        }

        .text-green-400, .text-green-500 {
            color: var(--color-success) !important;
        }

        /* Background colors - slate to X1 backgrounds */
        .bg-slate-700 {
            background-color: var(--bg-item) !important;
        }

        .bg-slate-800, .bg-slate-900 {
            background-color: var(--bg-card) !important;
        }

        /* Background colors - emerald to primary */
        .bg-emerald-500, .bg-emerald-600 {
            background-color: var(--accent) !important;
        }

        /* Background colors - system states with opacity */
        .bg-red-900.bg-opacity-30 {
            background-color: rgba(255, 107, 107, 0.16) !important;
        }

        .bg-yellow-900.bg-opacity-20 {
            background-color: rgba(255, 217, 61, 0.16) !important;
        }

        .bg-emerald-900\/20 {
            background-color: rgba(1, 104, 229, 0.16) !important;
        }

        /* Border colors - emerald to primary */
        .border-emerald-500\/30,
        .border-emerald-500\/50 {
            border-color: var(--accent-backdrop) !important;
        }

        .border-emerald-500, .border-emerald-600 {
            border-color: var(--accent) !important;
        }

        /* Border colors - gray to X1 strokes */
        .border-gray-600 {
            border-color: var(--border-input) !important;
        }

        .border-gray-700 {
            border-color: var(--border) !important;
        }

        .border-gray-800 {
            border-color: var(--border-subtle) !important;
        }

        /* Border colors - system states */
        .border-red-500, .border-red-600 {
            border-color: var(--color-error) !important;
        }

        .border-yellow-500, .border-yellow-500\/50 {
            border-color: var(--color-warning) !important;
        }


        /* Purple colors - map to X1 colors */
        .text-purple-300, .text-purple-400, .text-purple-500 {
            color: var(--text-secondary) !important;
        }

        .border-purple-500\/30, .border-purple-500\/50 {
            border-color: var(--border) !important;
        }

        /* Responsive */
        @media (max-width: 640px) {
            .chart-container {
                height: 250px;
            }
            .section-title {
                font-size: 1.25rem;
            }
        }

        /* ============= LAZY LOADING IMAGES ============= */
        /* Placeholder style while image loads */
        img.lazy {
            background: #2a2a2a;
            min-width: 24px;
            min-height: 24px;
        }

        img.lazy.val-icon {
            min-width: 28px;
            min-height: 28px;
            border-radius: 50%;
        }

        img.lazy.flag-img {
            min-width: 26px;
            min-height: 19px;
            border-radius: 2px;
        }

        /* Info icon with tooltip (shared — used by both network and detail pages) */
        .info-icon-wrapper {
            position: relative;
            display: inline-block;
            margin-left: 4px;
            vertical-align: middle;
        }
        .info-icon {
            width: 14px;
            height: 14px;
            color: #6b7280;
            cursor: pointer;
            transition: color 0.2s;
        }
        .info-icon-wrapper:hover .info-icon {
            color: #9ca3af;
        }
        .info-tooltip {
            visibility: hidden;
            opacity: 0;
            position: fixed;
            width: 240px;
            padding: 10px 12px;
            background: rgba(9, 9, 11, 0.95);
            backdrop-filter: blur(8px);
            -webkit-backdrop-filter: blur(8px);
            border: 1px solid var(--border);
            border-radius: 6px;
            color: #d1d5db;
            font-size: 11px;
            font-weight: 400;
            line-height: 1.4;
            text-transform: none;
            letter-spacing: normal;
            z-index: 99999;
            transition: opacity 0.2s, visibility 0.2s;
            box-shadow: 0 4px 12px rgba(0,0,0,0.4);
            pointer-events: none;
        }
        .info-tooltip::after {
            display: none;
        }
        .info-icon-wrapper:hover .info-tooltip {
            visibility: visible;
            opacity: 1;
        }

