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

    :root {
      /* ── WattsMonde Design Tokens ──
         Shadow:  --shadow-panel (default), --shadow-panel-warm (orange-tinted)
         Blur:    --blur-panel (24/sat 1.3), --blur-soft (12/sat 1.1)
         Radius:  --radius-pill (999px), --radius-card (16px), --radius-chip (10px)
      */
      --shadow-panel: 0 8px 32px rgba(0,0,0,0.5), 0 0 0 1px rgba(255,255,255,0.03) inset;
      --shadow-panel-warm: 0 8px 32px rgba(0,0,0,0.5), 0 0 0 1px rgba(255,255,255,0.03) inset, 0 0 40px rgba(0,240,255,0.06);
      --blur-panel: blur(24px) saturate(1.3);
      --blur-soft: blur(12px) saturate(1.1);
      --radius-pill: 999px;
      --radius-card: 10px;
      --radius-chip: 6px;

      /* ─── Dark theme (default) — cyber noir ─── */
      --bg: #08080f;
      --bg-elevated: #0e0e18;
      --bg-card: rgba(255,255,255,0.025);
      --bg-panel: rgba(6,6,14,0.94);
      --bg-glass: rgba(12,12,22,0.92);
      --bg-glass-light: rgba(255,255,255,0.04);

      /* Warm stone greys */
      --grey-1: #f4f2ef;
      --grey-2: #dddbd5;
      --grey-3: #8a8680;
      --grey-4: #4a4744;
      --grey-5: #383633;
      --grey-6: #1c1917;

      /* Text */
      --text: #e0ddd8;
      --text-dim: #8a8680;
      --text-bright: #f0f0f0;
      --text-muted: #4a4744;

      /* Borders */
      --border: rgba(255,255,255,0.05);
      --border-light: rgba(255,255,255,0.09);
      --border-strong: rgba(255,255,255,0.16);

      /* Brand */
      --blue: #1A2E3B;
      --orange: #00f0ff;
      --orange-soft: rgba(0,240,255,0.08);
      --orange-glow: rgba(0,240,255,0.30);
      --brand: #00f0ff;
      --gold: #d4a017;
      --gold-soft: rgba(212,160,23,0.10);
      --gold-glow: rgba(212,160,23,0.30);
      --font-mono: 'JetBrains Mono', 'SF Mono', 'Fira Code', monospace;

      /* ─── Energy sector categories (unified) ─── */
      --cat-solar: #eab308;
      --cat-solar-soft: rgba(234,179,8,0.10);
      --cat-wind: #14b8a6;
      --cat-wind-soft: rgba(20,184,166,0.10);
      --cat-nuclear: #3b82f6;
      --cat-nuclear-soft: rgba(59,130,246,0.10);
      --cat-oilgas: #ef4444;
      --cat-oilgas-soft: rgba(239,68,68,0.10);
      --cat-hydro: #06b6d4;
      --cat-hydro-soft: rgba(6,182,212,0.10);
      --cat-biomass: #22c55e;
      --cat-biomass-soft: rgba(34,197,94,0.10);
      --cat-geo: #ec4899;
      --cat-geo-soft: rgba(236,72,153,0.10);
      --cat-grid: #8b5cf6;
      --cat-grid-soft: rgba(139,92,246,0.10);

      /* Panels */
      --radius-xl: 12px;
      --radius-lg: 10px;
      --radius-md: 6px;
      --radius-sm: 6px;
      --edge-gap: 12px;
      --panel-gap: 12px;

      /* Typography */
      --font-sans: 'Manrope', 'Inter', system-ui, sans-serif;
      --font-serif: 'Newsreader', Georgia, serif;
      --font-display: 'Newsreader', Georgia, serif;

      /* Transitions */
      --t-fast: 0.15s cubic-bezier(.4,0,.2,1);
      --t-med: 0.25s cubic-bezier(.4,0,.2,1);
      --t-slow: 0.35s cubic-bezier(.16,1,.3,1);

      /* Gamification */
      --wm-streak-bg: rgba(0, 240, 255, 0.12);
    }

    :where(button, a, [role="button"], [tabindex]):focus-visible {
      outline: 2px solid var(--accent, var(--orange, #00f0ff));
      outline-offset: 2px;
      border-radius: inherit;
    }

    .sr-only {
      position: absolute !important;
      width: 1px;
      height: 1px;
      padding: 0;
      margin: -1px;
      overflow: hidden;
      clip: rect(0,0,0,0);
      white-space: nowrap;
      border: 0;
    }

    /* ─── Reopen splash button ─── */
    .reopen-splash-btn {
      display: none;
      background: none;
      border: 1px solid rgba(255,255,255,0.08);
      border-radius: var(--radius-pill);
      color: var(--text-dim, #98938e);
      font-size: 11px;
      font-weight: 500;
      padding: 4px 10px;
      cursor: pointer;
      transition: color var(--t-fast), border-color var(--t-fast);
      font-family: inherit;
      white-space: nowrap;
    }
    .reopen-splash-btn.visible {
      display: inline-flex;
      align-items: center;
    }
    .reopen-splash-btn:hover {
      color: var(--orange);
      border-color: rgba(0,240,255,0.25);
    }

    /* ─── Veille streak pill ─── */
    .wm-streak-pill {
      display: inline-flex;
      align-items: center;
      gap: 4px;
      padding: 2px 8px;
      background: var(--wm-streak-bg);
      border: 1px solid rgba(255, 102, 0, 0.3);
      border-radius: var(--radius-pill);
      font-size: 11px;
      font-weight: 700;
      color: var(--orange);
      margin-left: 8px;
      animation: streakPop 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
    }
    .wm-streak-flame { font-size: 13px; line-height: 1; }
    @keyframes streakPop {
      from { transform: scale(0.7); opacity: 0; }
      to { transform: scale(1); opacity: 1; }
    }

    /* ─── Left panel first-visit peek ─── */
    @media (prefers-reduced-motion: no-preference) {
      #leftPanel.left-panel-stack.lp-collapsed.lp-peek {
        transform: translateX(0) !important;
        opacity: 1;
        pointer-events: none;
      }
    }

    /* ─── Radar CTA pill ─── */
    .wm-radar-cta {
      display: inline-flex;
      align-items: center;
      gap: 6px;
      padding: 6px 14px;
      background: rgba(255, 102, 0, 0.16);
      color: rgba(255, 210, 140, 1);
      border: 1px solid rgba(255, 102, 0, 0.42);
      border-radius: var(--radius-pill, 999px);
      font-family: 'Inter', system-ui, sans-serif;
      font-size: 12px;
      font-weight: 700;
      text-decoration: none;
      letter-spacing: 0.2px;
      backdrop-filter: var(--blur-soft, blur(12px) saturate(1.1));
      -webkit-backdrop-filter: var(--blur-soft, blur(12px) saturate(1.1));
      box-shadow: 0 6px 18px rgba(255, 102, 0, 0.20), 0 1px 2px rgba(0, 0, 0, 0.4);
      transition: background 0.15s ease, border-color 0.15s ease, transform 0.15s ease;
    }
    .wm-radar-cta:hover, .wm-radar-cta:focus-visible {
      background: rgba(255, 102, 0, 0.28);
      border-color: rgba(255, 140, 60, 0.65);
      transform: translateY(-1px);
      color: #fff;
    }
    @media (max-width: 768px) {
      .wm-radar-cta { padding: 5px 10px; }
    }
    @media (max-width: 640px) {
      .wm-radar-cta-text { display: none; }
      .wm-radar-cta { padding: 6px 10px; font-size: 13px; }
    }

    /* ─── Light theme ─── */
    [data-theme="light"] {
      --bg: #eceae4;
      --bg-elevated: #f4f2ef;
      --bg-card: rgba(255,255,255,0.5);
      --bg-glass: rgba(255,255,255,0.88);
      --bg-glass-light: rgba(0,0,0,0.04);

      --text: #1a1a2e;
      --text-dim: #5a5a7a;
      --text-bright: #0a0a14;
      --text-muted: #8a8aaa;

      --border: rgba(0,0,0,0.07);
      --border-light: rgba(0,0,0,0.10);
      --border-strong: rgba(0,0,0,0.18);

      --orange-soft: rgba(0,240,255,0.10);
    }

    /* ─── Typography utility classes ─── */
    .font-serif { font-family: var(--font-serif); }
    .font-display { font-family: var(--font-display); font-optical-sizing: auto; letter-spacing: -0.02em; }
    .title-xl { font-family: var(--font-serif); font-size: 28px; font-weight: 700; letter-spacing: -0.02em; line-height: 1.15; }
    .title-lg { font-family: var(--font-serif); font-size: 22px; font-weight: 600; letter-spacing: -0.015em; line-height: 1.2; }
    .title-md { font-family: var(--font-serif); font-size: 16px; font-weight: 600; letter-spacing: -0.01em; line-height: 1.3; }
    .ui-sm { font-family: var(--font-sans); font-size: 12px; font-weight: 500; letter-spacing: 0; }
    .ui-xs { font-family: var(--font-sans); font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.8px; }

    .stat-simple strong,
    .kpi-price,
    .kpi-value,
    .dash-card-price,
    .splash-stat-value,
    .info-metric-value,
    .nav-counter,
    .tw-utc,
    .tw-local {
      font-family: var(--font-mono, monospace);
    }

    body {
      font-family: var(--font-sans);
      background: var(--bg);
      color: var(--text);
      height: 100vh;
      width: 100vw;
      overflow: hidden;
      position: relative;
    }

    /* === GLOBE CONTAINER === */
    #globeViz {
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      z-index: 1;
      touch-action: pan-x pan-y pinch-zoom;
    }

    /* ═══ 2-TIER CHROME ═══ */
    .wm-chrome-bar {
      position: fixed;
      left: 0;
      right: 0;
      z-index: 100;
      display: flex;
      align-items: center;
      gap: 8px;
      backdrop-filter: blur(24px) saturate(1.4);
      -webkit-backdrop-filter: blur(24px) saturate(1.4);
    }

    header.wm-chrome-tier1 {
      top: 0;
      height: 52px;
      padding: 0 16px;
      background: linear-gradient(180deg, rgba(18, 16, 25, 0.96), rgba(9, 9, 15, 0.92));
      border-bottom: 1px solid rgba(255, 255, 255, 0.08);
      box-shadow: 0 4px 24px rgba(0, 0, 0, 0.3);
    }

    .wm-chrome-tier2 {
      top: 52px;
      height: 40px;
      padding: 0 16px;
      background: linear-gradient(180deg, rgba(12, 11, 18, 0.92), rgba(8, 8, 14, 0.88));
      border-bottom: 1px solid rgba(255, 255, 255, 0.06);
      box-shadow: 0 2px 16px rgba(0, 0, 0, 0.2);
    }

    

    .menu-btn:hover { background: rgba(255,255,255,0.1); border-color: var(--border-light); }
    .menu-btn.active { background: var(--orange); border-color: var(--orange); color: #fff; }

    .logo {
      display: flex;
      align-items: center;
      gap: 10px;
      flex-shrink: 0;
    }

    .logo-icon {
      width: 36px;
      height: 36px;
      background: linear-gradient(135deg, #00f0ff, #0099aa);
      border-radius: 4px;
      display: flex;
      align-items: center;
      justify-content: center;
      font-size: 18px;
      color: #fff;
      box-shadow: 
        0 2px 12px rgba(0,240,255,0.35),
        0 0 0 1px rgba(255,255,255,0.1) inset;
    }

    .logo-text h1,
    .logo-text .logo-title {
      display: block;
      font-size: 19px;
      font-weight: 800;
      letter-spacing: -0.5px;
      line-height: 1.1;
      margin: 0;
    }

    .logo-text h1 span,
    .logo-text .logo-title span { color: var(--orange); }

    .logo-sub {
      font-size: 10px;
      color: var(--text-dim);
      font-weight: 500;
      letter-spacing: 1.5px;
      text-transform: uppercase;
    }

    .menu-btn {
      background: rgba(255,255,255,0.08);
      border: 1px solid rgba(255,255,255,0.15);
      border-radius: 8px;
      padding: 8px;
      cursor: pointer;
      color: var(--text-dim);
      transition: all 0.2s;
      display: flex;
      align-items: center;
      justify-content: center;
    }
    .menu-btn:hover, .menu-btn.active {
      background: rgba(0,240,255,0.15);
      color: #00f0ff;
      border-color: rgba(0,240,255,0.35);
    }

    .search-box {
      flex: 1;
      max-width: 420px;
      position: relative;
    }

    .search-box svg {
      position: absolute;
      left: 14px;
      top: 50%;
      transform: translateY(-50%);
      width: 15px;
      height: 15px;
      color: var(--text-dim);
      pointer-events: none;
    }

    #search {
      width: 100%;
      padding: 9px 16px 9px 40px;
      background: rgba(255,255,255,0.05);
      border: 1px solid var(--border);
      border-radius: var(--radius-chip);
      color: var(--text);
      font-family: inherit;
      font-size: 13px;
      transition: all 0.25s;
    }

    #search::placeholder { color: var(--text-dim); }
    #search:focus { border-color: var(--orange); background: rgba(255,255,255,0.08); box-shadow: 0 0 20px rgba(0,240,255,0.1); }



    /* === FILTER PANEL (LEFT) === */
    .filter-panel {
      position: fixed;
      top: 92px;
      left: 0;
      bottom: 0;
      width: 300px;
      background: var(--bg-panel);
      backdrop-filter: blur(20px);
      -webkit-backdrop-filter: blur(20px);
      border-right: 1px solid var(--border);
      z-index: 90;
      overflow-y: auto;
      padding: 20px;
      transform: translateX(-100%);
      transition: transform 0.35s cubic-bezier(0.4, 0, 0.2, 1);
    }

    .filter-panel.open { transform: translateX(0); }

    .filter-panel::-webkit-scrollbar { width: 4px; }
    .filter-panel::-webkit-scrollbar-track { background: transparent; }
    .filter-panel::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.1); border-radius: 2px; }

    .filter-section { margin-bottom: 24px; }

    .filter-header {
      display: flex;
      justify-content: space-between;
      align-items: center;
      margin-bottom: 12px;
    }

    .filter-header h3 {
      font-size: 10px;
      text-transform: uppercase;
      letter-spacing: 1.5px;
      color: var(--text-dim);
      font-weight: 700;
    }

    .toggle-btn {
      background: none;
      border: none;
      color: var(--orange);
      font-size: 10px;
      font-weight: 700;
      cursor: pointer;
      text-transform: uppercase;
      letter-spacing: 0.5px;
      padding: 2px 6px;
      border-radius: 4px;
      transition: background 0.15s;
    }

    .toggle-btn:hover { background: rgba(0,240,255,0.08); }

    .filter-group {
      display: flex;
      flex-direction: column;
      gap: 2px;
    }

    .filter-item {
      display: flex;
      align-items: center;
      gap: 10px;
      padding: 7px 10px;
      border-radius: 8px;
      cursor: pointer;
      transition: background 0.15s;
      user-select: none;
    }

    .filter-item:hover { background: rgba(255,255,255,0.04); }

    .filter-item input[type="checkbox"] {
      appearance: none;
      -webkit-appearance: none;
      width: 16px;
      height: 16px;
      border: 2px solid rgba(255,255,255,0.15);
      border-radius: 4px;
      flex-shrink: 0;
      cursor: pointer;
      position: relative;
      transition: all 0.15s;
    }

    .filter-item input[type="checkbox"]:checked {
      background: #00f0ff;
      border-color: #00f0ff;
    }

    .filter-item input[type="checkbox"]:checked::after {
      content: '\2713';
      position: absolute;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
      color: #fff;
      font-size: 10px;
      font-weight: 800;
    }

    .filter-label {
      flex: 1;
      font-size: 12.5px;
      font-weight: 500;
      display: flex;
      align-items: center;
      gap: 8px;
    }

    .sector-dot {
      width: 18px;
      height: 18px;
      flex-shrink: 0;
      display: inline-flex;
      align-items: center;
      justify-content: center;
      background: radial-gradient(circle, rgba(255,255,255,0.06) 0%, transparent 70%);
      border-radius: 4px;
    }
    .sector-dot svg {
      display: block;
      filter: drop-shadow(0 0 4px var(--dot-color, currentColor));
    }

    .filter-count {
      font-size: 10px;
      color: var(--text-dim);
      font-weight: 600;
      background: rgba(255,255,255,0.05);
      padding: 2px 8px;
      border-radius: var(--radius-chip);
      min-width: 24px;
      text-align: center;
    }

    .filter-toggle-all {
      display: flex;
      justify-content: flex-end;
      margin-bottom: 8px;
    }
    .filter-toggle-all-btn {
      background: rgba(0, 240, 255, 0.10);
      border: 1px solid rgba(0, 240, 255, 0.32);
      color: rgba(0, 240, 255, 0.88);
      border-radius: 999px;
      padding: 4px 12px;
      font-size: 11px;
      font-weight: 600;
      letter-spacing: 0.4px;
      text-transform: uppercase;
      cursor: pointer;
      transition: background 0.15s, border-color 0.15s;
    }
    .filter-toggle-all-btn:hover {
      background: rgba(0, 240, 255, 0.18);
      border-color: rgba(0, 240, 255, 0.55);
    }

    /* Reset-all-filters button: pinned at the top of the filter panel.
       Discreet when no filter is active, cyan glow when at least one is. */
    .filters-reset-btn {
      display: flex;
      align-items: center;
      justify-content: center;
      gap: 8px;
      width: 100%;
      margin: 0 0 16px;
      padding: 9px 14px;
      border-radius: 999px;
      background: rgba(0, 240, 255, 0.06);
      border: 1px solid rgba(0, 240, 255, 0.18);
      color: rgba(0, 240, 255, 0.70);
      font: 600 11.5px/1 'Inter', system-ui, sans-serif;
      letter-spacing: 0.4px;
      text-transform: uppercase;
      cursor: pointer;
      opacity: 0.55;
      transition: opacity .18s ease, background .18s ease, border-color .18s ease,
                  color .18s ease, box-shadow .18s ease, transform .18s ease;
    }
    .filters-reset-btn:hover {
      opacity: 1;
      background: rgba(0, 240, 255, 0.12);
      border-color: rgba(0, 240, 255, 0.40);
      color: rgba(0, 240, 255, 0.95);
    }
    .filters-reset-btn:focus-visible {
      outline: none;
      box-shadow: 0 0 0 2px rgba(0, 240, 255, 0.55);
    }
    .filters-reset-btn.is-active {
      opacity: 1;
      background: rgba(0, 240, 255, 0.16);
      border-color: rgba(0, 240, 255, 0.55);
      color: #00f0ff;
      box-shadow: 0 0 18px rgba(0, 240, 255, 0.18);
    }
    .filters-reset-btn.is-active:hover {
      background: rgba(0, 240, 255, 0.24);
      border-color: rgba(0, 240, 255, 0.75);
    }
    .filters-reset-icon {
      font-size: 14px;
      line-height: 1;
      display: inline-block;
      transition: transform .35s cubic-bezier(0.4, 0, 0.2, 1);
    }
    .filters-reset-btn:hover .filters-reset-icon {
      transform: rotate(-60deg);
    }
    .filters-reset-btn.is-flashing {
      animation: filters-reset-flash 0.55s ease-out;
    }
    .filters-reset-btn.is-flashing .filters-reset-icon {
      animation: filters-reset-spin 0.55s cubic-bezier(0.4, 0, 0.2, 1);
    }
    @keyframes filters-reset-flash {
      0%   { background: rgba(0, 240, 255, 0.55); border-color: rgba(0, 240, 255, 0.95); color: #fff; box-shadow: 0 0 26px rgba(0, 240, 255, 0.55); }
      60%  { background: rgba(0, 240, 255, 0.20); border-color: rgba(0, 240, 255, 0.55); color: #00f0ff; box-shadow: 0 0 14px rgba(0, 240, 255, 0.30); }
      100% { background: rgba(0, 240, 255, 0.06); border-color: rgba(0, 240, 255, 0.18); color: rgba(0, 240, 255, 0.70); box-shadow: none; }
    }
    @keyframes filters-reset-spin {
      0%   { transform: rotate(0deg); }
      100% { transform: rotate(-360deg); }
    }
    @media (prefers-reduced-motion: reduce) {
      .filters-reset-btn,
      .filters-reset-btn:hover .filters-reset-icon,
      .filters-reset-btn.is-flashing,
      .filters-reset-btn.is-flashing .filters-reset-icon {
        transition: none;
        animation: none;
      }
    }

    /* === INFO PANEL (RIGHT) === */
    .info-panel {
      position: fixed;
      top: 96px;
      right: 12px;
      bottom: 12px;
      width: 380px;
      background: linear-gradient(
        160deg,
        rgba(255,255,255,0.1) 0%,
        rgba(255,255,255,0.03) 40%,
        rgba(255,255,255,0.06) 70%,
        rgba(255,255,255,0.02) 100%
      );
      backdrop-filter: blur(28px) saturate(1.4);
      -webkit-backdrop-filter: blur(28px) saturate(1.4);
      border: 1px solid rgba(255,255,255,0.12);
      border-radius: 10px;
      box-shadow:
        0 8px 40px rgba(0,0,0,0.35),
        0 1px 0 rgba(255,255,255,0.08) inset,
        0 -1px 0 rgba(0,0,0,0.15) inset;
      z-index: 90;
      overflow-y: auto;
      overflow-x: hidden;
      transform: translateX(calc(100% + 20px));
      transition: transform 0.35s cubic-bezier(0.4, 0, 0.2, 1);
    }

    .info-panel::after {
      content: '';
      position: absolute;
      top: 0;
      left: 0;
      right: 0;
      height: 40%;
      background: linear-gradient(
        180deg,
        rgba(255,255,255,0.04) 0%,
        transparent 100%
      );
      border-radius: 10px 10px 0 0;
      pointer-events: none;
    }

    .info-panel.open { transform: translateX(0); }

    .info-panel::-webkit-scrollbar { width: 4px; }
    .info-panel::-webkit-scrollbar-track { background: transparent; }
    .info-panel::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.1); border-radius: 2px; }

    .info-close {
      position: absolute;
      top: 16px;
      right: 16px;
      width: 32px;
      height: 32px;
      background: rgba(255,255,255,0.06);
      border: 1px solid var(--border);
      border-radius: 8px;
      color: var(--text-dim);
      font-size: 18px;
      cursor: pointer;
      display: flex;
      align-items: center;
      justify-content: center;
      transition: all 0.15s;
      z-index: 2;
    }

    .info-close:hover { background: rgba(255,255,255,0.12); color: #fff; }

    .info-header {
      padding: 24px 24px 20px;
      border-bottom: 1px solid var(--border);
      position: relative;
    }

    .info-sector-badge {
      display: inline-flex;
      align-items: center;
      gap: 6px;
      font-size: 10px;
      font-weight: 700;
      text-transform: uppercase;
      letter-spacing: 1px;
      padding: 4px 10px;
      border-radius: 6px;
      margin-bottom: 12px;
    }

    .info-sector-dot {
      width: 16px;
      height: 16px;
      display: inline-flex;
      align-items: center;
      justify-content: center;
    }
    .info-sector-dot svg {
      display: block;
      filter: drop-shadow(0 0 5px var(--dot-color, currentColor));
    }

    .info-name {
      font-size: 24px;
      font-weight: 800;
      color: var(--text-bright);
      margin-bottom: 6px;
      letter-spacing: -0.5px;
      line-height: 1.2;
    }

    .info-location {
      font-size: 13px;
      color: var(--text-dim);
      font-weight: 500;
    }

    .info-body { padding: 20px 24px; }

    .info-description {
      font-size: 13.5px;
      line-height: 1.7;
      color: var(--text);
      margin-bottom: 20px;
    }

    .info-grid {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 10px;
      margin-bottom: 20px;
    }

    .info-metric {
      background: rgba(255,255,255,0.03);
      border: 1px solid var(--border);
      padding: 14px;
      border-radius: var(--radius-chip);
    }

    .info-metric-label {
      font-size: 10px;
      text-transform: uppercase;
      letter-spacing: 1px;
      color: var(--text-dim);
      font-weight: 600;
      margin-bottom: 4px;
    }

    .info-metric-value {
      font-size: 16px;
      font-weight: 700;
      color: var(--text-bright);
    }

    .info-metric-value.highlight { color: var(--orange); }

    .info-link {
      display: inline-flex;
      align-items: center;
      gap: 8px;
      font-size: 13px;
      font-weight: 700;
      color: #fff;
      background: linear-gradient(135deg, #d4a017, #b8860b);
      text-decoration: none;
      padding: 10px 20px;
      border-radius: var(--radius-chip);
      transition: all 0.2s;
      box-shadow: 0 4px 16px rgba(212,160,23,0.30);
    }

    .info-link:hover { background: linear-gradient(135deg, #e0b020, #d4a017); transform: translateY(-1px); box-shadow: 0 6px 24px rgba(212,160,23,0.40); }

    /* === INFO PANEL: SUBSIDIARIES & PROJECTS SECTIONS === */
    .info-section { margin-bottom: 20px; }

    .info-section-title {
      font-size: 10px;
      text-transform: uppercase;
      letter-spacing: 1.5px;
      color: var(--text-dim);
      font-weight: 700;
      margin-bottom: 10px;
      padding-bottom: 8px;
      border-bottom: 1px solid var(--border);
      display: flex;
      align-items: center;
      gap: 8px;
    }

    .info-section-count {
      background: rgba(0,240,255,0.12);
      color: var(--orange);
      font-size: 9px;
      font-weight: 800;
      padding: 2px 7px;
      border-radius: 8px;
    }

    .subsidiary-list, .project-list-panel {
      display: flex;
      flex-direction: column;
      gap: 4px;
    }

    .subsidiary-item, .project-item-panel {
      display: flex;
      align-items: center;
      gap: 10px;
      padding: 8px 10px;
      background: rgba(255,255,255,0.02);
      border-radius: 8px;
      border: 1px solid var(--border);
      cursor: pointer;
      transition: all 0.15s;
    }

    .subsidiary-item:hover, .project-item-panel:hover {
      background: rgba(255,255,255,0.06);
      border-color: var(--border-light);
    }

    .subsidiary-dot {
      width: 16px;
      height: 16px;
      flex-shrink: 0;
      display: inline-flex;
      align-items: center;
      justify-content: center;
    }
    .subsidiary-dot svg {
      display: block;
      filter: drop-shadow(0 0 4px var(--dot-color, currentColor));
    }

    .project-diamond-icon {
      width: 18px;
      height: 18px;
      flex-shrink: 0;
      display: inline-flex;
      align-items: center;
      justify-content: center;
    }
    .project-diamond-icon svg {
      display: block;
      filter: drop-shadow(0 0 4px var(--dot-color, currentColor));
    }

    .subsidiary-info, .project-info-text {
      flex: 1;
      min-width: 0;
    }

    .subsidiary-name, .project-name-text {
      font-size: 12px;
      font-weight: 600;
      color: var(--text-bright);
      white-space: nowrap;
      overflow: hidden;
      text-overflow: ellipsis;
    }

    .subsidiary-location, .project-meta-text {
      font-size: 10px;
      color: var(--text-dim);
      margin-top: 1px;
    }

    .dp-cluster-header {
      display: flex;
      align-items: center;
      gap: 14px;
      padding: 24px 24px 20px;
      border-bottom: 1px solid var(--border);
      background: linear-gradient(135deg, rgba(0,240,255,0.14), rgba(255,255,255,0.03));
    }

    .dp-cluster-icon {
      width: 42px;
      height: 42px;
      border-radius: 14px;
      display: flex;
      align-items: center;
      justify-content: center;
      color: var(--orange);
      background: rgba(0,240,255,0.10);
      border: 1px solid rgba(0,240,255,0.25);
      box-shadow: 0 10px 28px rgba(0,240,255,0.14);
      flex-shrink: 0;
    }

    .dp-cluster-count {
      margin: 0 0 4px;
      color: var(--text-bright);
      font-size: 24px;
      line-height: 1.15;
      letter-spacing: -0.04em;
    }

    .dp-cluster-sub {
      margin: 0;
      color: var(--text-dim);
      font-size: 12px;
      font-weight: 600;
    }

    .dp-cluster-list {
      display: flex;
      flex-direction: column;
      gap: 6px;
      margin: 0;
      padding: 0;
      list-style: none;
    }

    .dp-cluster-item {
      display: grid;
      grid-template-columns: minmax(0, 1fr) auto;
      gap: 4px 10px;
      padding: 10px 12px;
      background: rgba(255,255,255,0.03);
      border: 1px solid var(--border);
      border-radius: 10px;
      color: inherit;
      text-decoration: none;
      transition: background 0.15s ease, border-color 0.15s ease, transform 0.15s ease;
    }

    .dp-cluster-item:hover {
      background: rgba(0,240,255,0.08);
      border-color: rgba(0,240,255,0.30);
      transform: translateY(-1px);
    }

    .dp-cluster-item-name {
      min-width: 0;
      color: var(--text-bright);
      font-size: 13px;
      font-weight: 800;
      overflow: hidden;
      text-overflow: ellipsis;
      white-space: nowrap;
    }

    .dp-cluster-item-sector,
    .dp-cluster-item-country {
      color: var(--text-dim);
      font-size: 10px;
      font-weight: 700;
    }

    .dp-cluster-item-sector {
      justify-self: end;
      max-width: 110px;
      overflow: hidden;
      text-overflow: ellipsis;
      white-space: nowrap;
    }

    .dp-cluster-item-country {
      grid-column: 1 / -1;
    }

    .dp-cluster-more {
      margin: 12px 0 0;
      color: var(--text-dim);
      font-size: 11px;
      font-weight: 700;
      text-align: center;
    }

    /* === LEGEND (bottom-left) ===
       2026-05-01: visually hidden — sectors are accessible via the
       "Tous secteurs" dropdown and the density toggle is now the
       persistent .wm-density-hint pill. The container stays in the DOM
       so the existing #heatmapToggle click() bridge keeps working. */
    .legend {
      position: fixed;
      bottom: 20px;
      left: 20px;
      background: var(--bg-panel);
      backdrop-filter: blur(16px);
      -webkit-backdrop-filter: blur(16px);
      border: 1px solid var(--border);
      border-radius: 12px;
      padding: 14px 18px;
      z-index: 80;
      visibility: hidden;
      pointer-events: none;
      opacity: 0;
      display: flex;
      flex-wrap: wrap;
      gap: 8px 16px;
      max-width: 580px;
    }

    .legend-item {
      display: flex;
      align-items: center;
      gap: 6px;
      font-size: 11px;
      font-weight: 500;
      color: var(--text-dim);
      cursor: pointer;
      transition: color 0.15s;
    }

    .legend-item:hover { color: var(--text); }

    .globe-layer-toggle {
      display: inline-flex;
      align-items: center;
      gap: 7px;
      min-height: 30px;
      padding: 6px 11px;
      border: 1px solid rgba(255,255,255,0.12);
      border-radius: var(--radius-chip);
      background: rgba(255,255,255,0.05);
      color: var(--text-dim);
      font: inherit;
      font-size: 11px;
      font-weight: 600;
      cursor: pointer;
      transition: background 0.18s ease, border-color 0.18s ease, color 0.18s ease, box-shadow 0.18s ease;
    }

    .globe-layer-toggle:hover {
      background: rgba(0,240,255,0.10);
      border-color: rgba(0,240,255,0.30);
      color: var(--text);
    }

    .globe-layer-toggle.active {
      background: rgba(0,240,255,0.15);
      border-color: rgba(0,240,255,0.55);
      color: var(--text-bright);
      box-shadow: 0 0 18px rgba(0,240,255,0.14);
    }

    .globe-layer-toggle:disabled {
      cursor: progress;
      opacity: 0.72;
    }

    .globe-layer-toggle .dot {
      color: #00f0ff;
      font-size: 12px;
      line-height: 1;
      text-shadow: 0 0 10px rgba(0,240,255,0.40);
    }

    .legend-dot {
      width: 18px;
      height: 18px;
      flex-shrink: 0;
      display: inline-flex;
      align-items: center;
      justify-content: center;
    }
    .legend-dot svg {
      display: block;
      filter: drop-shadow(0 0 4px var(--dot-color, currentColor));
    }

    .legend-diamond {
      width: 18px;
      height: 18px;
      flex-shrink: 0;
      display: inline-flex;
      align-items: center;
      justify-content: center;
    }
    .legend-diamond svg {
      display: block;
      filter: drop-shadow(0 0 4px var(--orange));
    }

    .legend-item.active {
      color: var(--text);
      opacity: 1;
    }
    .legend-item:not(.active) {
      opacity: 0.35;
      filter: grayscale(0.8);
    }
    .legend-item:not(.active):hover {
      opacity: 0.6;
      filter: grayscale(0.4);
    }
    .legend-item[data-sector] {
      user-select: none;
      -webkit-user-select: none;
    }

    /* === DATA STATUS LINE (near stats bar) === */
    .wm-data-status {
      position: absolute;
      top: 100%;
      right: 0;
      margin-top: 4px;
      font-family: 'JetBrains Mono', monospace;
      font-size: 10px;
      font-weight: 500;
      color: rgba(255, 255, 255, 0.40);
      letter-spacing: 0.02em;
      white-space: nowrap;
      pointer-events: none;
      padding: 2px 8px;
      z-index: 50;
    }
    @media (max-width: 768px) {
      .wm-data-status { display: none; }
    }

    /* === DISCREET PAGE FOOTER === */
    .wm-footer {
      position: fixed;
      bottom: 0;
      right: 20px;
      z-index: 60;
      display: flex;
      align-items: center;
      gap: 12px;
      padding: 6px 14px;
      font-family: 'Inter', system-ui, sans-serif;
      font-size: 10px;
      color: rgba(255, 255, 255, 0.30);
      pointer-events: auto;
    }
    .wm-footer a {
      color: rgba(255, 255, 255, 0.40);
      text-decoration: none;
      transition: color 0.15s;
    }
    .wm-footer a:hover {
      color: rgba(255, 255, 255, 0.70);
    }
    .wm-footer-lineage {
      letter-spacing: 0.02em;
    }
    .wm-footer-links {
      display: flex;
      gap: 10px;
    }
    .wm-footer-links a {
      text-transform: uppercase;
      letter-spacing: 0.08em;
      font-weight: 600;
      font-size: 9px;
    }
    @media (max-width: 768px) {
      .wm-footer { display: none; }
    }

    /* === STATS BAR (inline in header) === */
    .stats-bar {
      display: flex;
      align-items: center;
      gap: 6px;
      flex-shrink: 1;
      min-width: 0;
      font-size: 11px;
      color: var(--text-dim);
    }
    .stat-simple strong { color: #00f0ff; font-weight: 700; }
    .stat-sep { opacity: 0.3; margin: 0 2px; }

    /* === STAT FILTER DROPDOWNS (liquid glass) === */
    .stat-chip {
      position: relative;
      cursor: pointer;
      user-select: none;
      transition: all 0.2s ease;
    }
    .stat-chip:hover {
      background: rgba(255,255,255,0.12);
      border-color: rgba(0,240,255,0.25);
    }
    .stat-chip.active {
      background: rgba(0,240,255,0.10);
      border-color: rgba(0,240,255,0.35);
    }
    .stat-chip .chip-arrow {
      font-size: 8px;
      opacity: 0.4;
      margin-left: 2px;
      transition: transform 0.2s;
    }
    .stat-chip.active .chip-arrow {
      transform: rotate(180deg);
      opacity: 0.8;
    }

    .stat-dropdown {
      position: absolute;
      top: calc(100% + 8px);
      left: 50%;
      transform: translateX(-50%) translateY(6px);
      min-width: 220px;
      max-height: 340px;
      overflow-y: auto;
      background: rgba(12, 10, 24, 0.85);
      backdrop-filter: blur(40px) saturate(1.6);
      -webkit-backdrop-filter: blur(40px) saturate(1.6);
      border: 1px solid rgba(255,255,255,0.12);
      border-radius: var(--radius-card);
      padding: 8px;
      z-index: 10001;
      box-shadow: 0 16px 48px rgba(0,0,0,0.6), 0 0 0 1px rgba(255,255,255,0.05) inset, 0 1px 0 rgba(255,255,255,0.08) inset;
      opacity: 0;
      pointer-events: none;
      transition: opacity 0.2s ease, transform 0.2s ease;
    }
    .stat-dropdown.open {
      opacity: 1;
      pointer-events: all;
      transform: translateX(-50%) translateY(0);
    }
    .stat-dropdown::-webkit-scrollbar { width: 4px; }
    .stat-dropdown::-webkit-scrollbar-track { background: transparent; }
    .stat-dropdown::-webkit-scrollbar-thumb { background: rgba(0,240,255,0.25); border-radius: 4px; }

    .dd-header {
      display: flex;
      justify-content: space-between;
      align-items: center;
      padding: 6px 10px 8px;
      border-bottom: 1px solid rgba(255,255,255,0.06);
      margin-bottom: 4px;
    }
    .dd-title {
      font-size: 10px;
      font-weight: 700;
      text-transform: uppercase;
      letter-spacing: 1px;
      color: rgba(255,255,255,0.4);
    }
    .dd-toggle-all {
      font-size: 10px;
      color: #00f0ff;
      cursor: pointer;
      font-weight: 600;
      background: none;
      border: none;
      padding: 2px 6px;
      border-radius: 6px;
      transition: background 0.15s;
    }
    .dd-toggle-all:hover {
      background: rgba(0,240,255,0.12);
    }

    .dd-item {
      display: flex;
      align-items: center;
      gap: 8px;
      padding: 7px 10px;
      border-radius: var(--radius-chip);
      cursor: pointer;
      transition: all 0.15s;
      font-size: 12.5px;
      color: rgba(255,255,255,0.75);
    }
    .dd-item:hover {
      background: rgba(255,255,255,0.08);
      color: #fff;
    }
    .dd-item.checked {
      color: #fff;
    }
    .dd-item.unchecked {
      opacity: 0.4;
    }

    .dd-check {
      width: 16px;
      height: 16px;
      border-radius: 5px;
      border: 1.5px solid rgba(255,255,255,0.2);
      display: flex;
      align-items: center;
      justify-content: center;
      flex-shrink: 0;
      transition: all 0.15s;
      font-size: 10px;
    }
    .dd-item.checked .dd-check {
      background: rgba(0,240,255,0.75);
      border-color: #00f0ff;
      color: #fff;
    }
    .dd-item.unchecked .dd-check {
      background: transparent;
      border-color: rgba(255,255,255,0.15);
    }

    .dd-dot {
      width: 8px;
      height: 8px;
      border-radius: 50%;
      flex-shrink: 0;
    }
    .dd-name {
      flex: 1;
      overflow: hidden;
      text-overflow: ellipsis;
      white-space: nowrap;
    }
    .dd-count {
      font-size: 10px;
      color: rgba(255,255,255,0.3);
      font-weight: 600;
      flex-shrink: 0;
    }

        .stat-chip-label {
      font-size: 9px;
      text-transform: uppercase;
      letter-spacing: 0.5px;
      color: var(--text-dim);
      font-weight: 600;
      line-height: 1;
    }

    /* === VIEW TOGGLE (header) === */
    .view-toggle {
      display: flex;
      align-items: center;
      background: rgba(255,255,255,0.05);
      border: 1px solid var(--border);
      border-radius: 12px;
      padding: 3px;
      gap: 2px;
      flex-shrink: 0;
    }

    .view-toggle-btn {
      padding: 5px 12px;
      border: none;
      border-radius: 9px;
      font-family: inherit;
      font-size: 11px;
      font-weight: 600;
      color: var(--text-dim);
      background: transparent;
      cursor: pointer;
      transition: all 0.2s;
      white-space: nowrap;
      line-height: 1;
    }

    .view-toggle-btn:hover { color: var(--text); background: rgba(255,255,255,0.08); border-color: rgba(255,255,255,0.2); }

    .view-toggle-btn .vt-arrow {
      font-size: 9px;
      margin-left: 3px;
      opacity: 0.6;
      transition: transform 0.2s;
    }
    .view-toggle-btn:hover .vt-arrow { opacity: 1; }

    .view-toggle-btn.active {
      color: #fff;
      background: var(--orange);
      box-shadow: 0 2px 8px rgba(0,240,255,0.35);
    }

    .vt-item { position: relative; }

    .vt-dropdown {
      display: none;
      position: fixed;
      top: 58px;
      min-width: 220px;
      max-height: 400px;
      overflow-y: auto;
      background: rgba(20,20,25,0.96);
      backdrop-filter: blur(16px);
      -webkit-backdrop-filter: blur(16px);
      border: 1px solid rgba(255,255,255,0.12);
      border-radius: 12px;
      padding: 10px 0;
      box-shadow: 0 12px 40px rgba(0,0,0,0.5);
      z-index: 200;
    }
    .vt-dropdown.open { display: block; z-index: 10040; }

    .vt-dd-section { padding: 6px 14px; }
    .vt-dd-section + .vt-dd-section { border-top: 1px solid rgba(255,255,255,0.08); }

    .vt-dd-title {
      font-size: 10px;
      font-weight: 700;
      text-transform: uppercase;
      letter-spacing: 1px;
      color: var(--orange);
      margin-bottom: 6px;
    }

    .vt-dd-item {
      display: flex;
      align-items: center;
      gap: 8px;
      padding: 5px 4px;
      border-radius: 6px;
      cursor: pointer;
      font-size: 12px;
      color: var(--text-dim);
      transition: all 0.15s;
    }
    .vt-dd-item:hover { background: rgba(255,255,255,0.06); color: var(--text); }
    .vt-dd-item.checked { color: #fff; }
    .vt-dd-item .dd-check {
      width: 16px; height: 16px;
      border-radius: 4px;
      border: 1.5px solid rgba(255,255,255,0.25);
      display: flex; align-items: center; justify-content: center;
      font-size: 10px;
      flex-shrink: 0;
      transition: all 0.15s;
    }
    .vt-dd-item.checked .dd-check {
      background: var(--orange);
      border-color: var(--orange);
    }
    .vt-dd-item .dd-count {
      margin-left: auto;
      font-size: 10px;
      color: rgba(255,255,255,0.3);
    }

    /* === TIME WIDGET (discreet) === */
    .time-widget {
      position: fixed;
      bottom: 16px;
      left: 50%;
      transform: translateX(-50%);
      display: flex;
      align-items: center;
      gap: 6px;
      padding: 5px 14px;
      background: rgba(10,10,20,0.5);
      backdrop-filter: blur(12px);
      -webkit-backdrop-filter: blur(12px);
      border: 1px solid rgba(255,255,255,0.06);
      border-radius: 20px;
      z-index: 80;
      font-size: 11px;
      color: var(--text-dim);
      letter-spacing: 0.5px;
      opacity: 0.5;
      transition: opacity 0.3s;
      cursor: default;
      user-select: none;
    }
    .time-widget:hover {
      opacity: 1;
      border-color: rgba(255,255,255,0.12);
    }
    .time-widget .tw-sun {
      font-size: 13px;
    }
    .time-widget .tw-utc {
      font-weight: 600;
      color: var(--text-soft);
      font-family: 'Space Grotesk', monospace;
    }
    .time-widget .tw-sep {
      color: rgba(255,255,255,0.15);
      margin: 0 2px;
    }
    .time-widget .tw-local {
      color: var(--orange);
      font-weight: 600;
      font-family: 'Space Grotesk', monospace;
      opacity: 0;
      max-width: 0;
      overflow: hidden;
      transition: all 0.3s;
    }
    .time-widget:hover .tw-local,
    .time-widget.show-local .tw-local {
      opacity: 1;
      max-width: 200px;
    }
    .time-widget .tw-zone {
      font-size: 9px;
      color: var(--text-dim);
      opacity: 0;
      max-width: 0;
      overflow: hidden;
      transition: all 0.3s;
    }
    .time-widget:hover .tw-zone,
    .time-widget.show-local .tw-zone {
      opacity: 0.7;
      max-width: 100px;
      margin-left: 4px;
    }

    @media (max-width: 768px) {
      .time-widget { bottom: 10px; font-size: 10px; padding: 4px 10px; }
    }

    /* === SEARCH RESULTS DROPDOWN === */
    .search-results {
      position: absolute;
      top: 100%;
      left: 0;
      right: 0;
      margin-top: 4px;
      background: rgba(13,13,26,0.97);
      backdrop-filter: blur(20px);
      -webkit-backdrop-filter: blur(20px);
      border: 1px solid var(--border-light);
      border-radius: var(--radius-chip);
      max-height: 320px;
      overflow-y: auto;
      display: none;
      z-index: 200;
    }

    .search-results.visible { display: block; }

    .search-result-item {
      padding: 10px 16px;
      cursor: pointer;
      display: flex;
      align-items: center;
      gap: 10px;
      transition: background 0.1s;
      border-bottom: 1px solid var(--border);
    }

    .search-result-item:last-child { border-bottom: none; }
    .search-result-item:hover,
    .search-result-item.active { background: rgba(0,240,255,0.12); }

    .search-empty {
      padding: 14px 16px;
      color: var(--text-dim);
      font-size: 12px;
      display: flex;
      flex-direction: column;
      gap: 8px;
    }
    .search-empty-msg b { color: var(--text-bright); font-weight: 600; }
    .search-empty-btn {
      width: 100%;
      padding: 8px 10px;
      border-radius: 8px;
      background: rgba(255,255,255,0.05);
      color: var(--text);
      border: 1px solid rgba(255,255,255,0.12);
      cursor: pointer;
      font-size: 12px;
      font-weight: 600;
      transition: background .15s, border-color .15s, color .15s;
    }
    .search-empty-btn:hover {
      background: rgba(255,102,0,0.10);
      border-color: rgba(255,140,60,0.40);
      color: #fff;
    }

    .search-result-dot {
      width: 18px;
      height: 18px;
      flex-shrink: 0;
      display: inline-flex;
      align-items: center;
      justify-content: center;
    }
    .search-result-dot svg {
      display: block;
      filter: drop-shadow(0 0 4px var(--dot-color, currentColor));
    }

    .search-result-diamond {
      width: 18px;
      height: 18px;
      flex-shrink: 0;
      display: inline-flex;
      align-items: center;
      justify-content: center;
    }
    .search-result-diamond svg {
      display: block;
      filter: drop-shadow(0 0 4px var(--dot-color, currentColor));
    }

    .search-result-name {
      font-size: 13px;
      font-weight: 600;
      color: var(--text-bright);
    }

    .search-result-meta {
      font-size: 11px;
      color: var(--text-dim);
      margin-left: auto;
      white-space: nowrap;
    }

    .search-result-tag {
      font-size: 9px;
      font-weight: 700;
      text-transform: uppercase;
      letter-spacing: 0.5px;
      padding: 2px 6px;
      border-radius: 4px;
      background: rgba(255,255,255,0.06);
      color: var(--text-dim);
    }

    /* === MARKER SYSTEM (premium globe markers) === */
    .mk {
      position: relative;
      display: flex;
      align-items: center;
      justify-content: center;
      pointer-events: all !important;
      cursor: pointer;
      transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1), filter 0.3s ease, opacity 0.3s ease;
    }
    .mk:hover {
      transform: scale(1.25);
      z-index: 100;
      filter: brightness(1.15);
    }
    .mk:focus-visible {
      outline: 2px solid var(--accent, var(--orange, #00f0ff));
      outline-offset: 4px;
      border-radius: var(--radius-pill);
      z-index: 120;
      filter: brightness(1.18);
    }
    .mk--proj:focus-visible {
      border-radius: 6px;
    }
    .mk.dimmed {
      opacity: 0.08;
      pointer-events: none !important;
    }
    .mk.dimmed .mk__ring {
      animation: none;
      opacity: 0;
    }

    /* Marker body — dark glass circle with colored border */
    .mk__body {
      position: relative;
      display: flex;
      align-items: center;
      justify-content: center;
      border-radius: 50%;
      background: radial-gradient(circle at 35% 30%, rgba(45,45,65,0.92), rgba(12,12,22,0.96));
      border: 2px solid var(--mk-color, #aaa);
      box-shadow:
        0 0 3px var(--mk-color, #aaa),
        0 0 10px var(--mk-glow, transparent),
        0 2px 8px rgba(0,0,0,0.4);
      transition: box-shadow 0.3s ease, border-color 0.3s ease;
    }
    .mk:hover .mk__body {
      border-color: #fff;
      box-shadow:
        0 0 6px var(--mk-color, #aaa),
        0 0 16px var(--mk-glow, transparent),
        0 4px 16px rgba(0,0,0,0.5);
    }
    .mk__body svg {
      display: block;
      filter: drop-shadow(0 0 2px rgba(255,255,255,0.3));
    }

    /* ── Sizes per type ── */
    .mk--gg .mk__body { width: 36px; height: 36px; border-width: 2.5px; }
    .mk--gg .mk__body svg { width: 20px; height: 20px; }
    .mk--eti .mk__body { width: 28px; height: 28px; }
    .mk--eti .mk__body svg { width: 15px; height: 15px; }
    .mk--pme .mk__body { width: 22px; height: 22px; }
    .mk--pme .mk__body svg { width: 12px; height: 12px; }

    /* ── Project markers — diamond shape ── */
    .mk--proj .mk__body {
      width: 26px;
      height: 26px;
      border-radius: 4px;
      transform: rotate(45deg);
    }
    .mk--proj .mk__body svg {
      width: 14px; height: 14px;
      transform: rotate(-45deg);
    }

    /* ── Cluster markers — colored by dominant sector ── */
    .mk--cluster .mk__body {
      width: 44px;
      height: 44px;
      font-size: 14px;
      font-weight: 800;
      color: #fff;
      font-family: 'Inter', system-ui, sans-serif;
      letter-spacing: -0.5px;
      text-shadow: 0 1px 4px rgba(0,0,0,0.7);
      background: radial-gradient(circle at 35% 30%, var(--mk-cluster-bg, rgba(50,40,30,0.92)), rgba(10,8,6,0.93));
      border-width: 2.5px;
      border-style: dashed;
      border-color: var(--mk-cluster-border, var(--mk-color, #aaa));
      box-shadow: 0 0 12px var(--mk-cluster-bg, transparent), inset 0 0 8px var(--mk-cluster-bg, transparent);
    }
    .mk--cluster-sm .mk__body { width: 36px; height: 36px; font-size: 12px; }
    .mk--cluster .mk__ring {
      border-color: var(--mk-cluster-border, var(--mk-color, #aaa));
    }
    .cluster-marker {
      transition: transform 0.15s ease;
    }
    .cluster-marker:hover,
    .cluster-marker:active {
      transform: scale(1.1);
    }

    /* ── Subsidiary markers — tiny glowing dot ── */
    .mk--sub {
      pointer-events: none;
      cursor: default;
    }
    .mk--sub .mk__body {
      width: 8px;
      height: 8px;
      border-width: 1.5px;
      background: var(--mk-color, #aaa);
      opacity: 0.55;
      box-shadow: 0 0 3px var(--mk-color, #aaa);
    }

    /* ── Stack markers (same-address overlap) ── */
    .mk--stack .mk__stack-badge {
      position: absolute;
      top: -5px;
      right: -8px;
      min-width: 18px;
      height: 18px;
      background: var(--orange);
      color: #fff;
      font-size: 10px;
      font-weight: 700;
      font-family: 'Inter', system-ui, sans-serif;
      border-radius: 9px;
      display: flex;
      align-items: center;
      justify-content: center;
      padding: 0 5px;
      box-shadow: 0 1px 4px rgba(0,0,0,0.5);
      z-index: 5;
      pointer-events: none;
      line-height: 1;
    }
    /* Stacked card shadows behind marker body */
    .mk--stack .mk__body::before,
    .mk--stack .mk__body::after {
      content: '';
      position: absolute;
      width: 100%;
      height: 100%;
      border-radius: inherit;
      background: rgba(30,30,50,0.7);
      border: 1.5px solid var(--mk-color, #aaa);
      z-index: -1;
    }
    .mk--stack .mk__body::before {
      top: 3px;
      left: 3px;
      opacity: 0.4;
    }
    .mk--stack .mk__body::after {
      top: 6px;
      left: 6px;
      opacity: 0.2;
    }

    /* Stack dropdown */
    .mk__stack-dropdown {
      position: absolute;
      bottom: calc(100% + 14px);
      left: 50%;
      transform: translateX(-50%) translateY(6px);
      background: rgba(10, 12, 22, 0.96);
      backdrop-filter: blur(16px);
      -webkit-backdrop-filter: blur(16px);
      border: 1px solid rgba(255,255,255,0.12);
      border-radius: var(--radius-chip);
      padding: 5px;
      min-width: 220px;
      max-height: 380px;
      overflow-y: auto;
      opacity: 0;
      pointer-events: none;
      transition: opacity 0.2s ease, transform 0.2s ease;
      z-index: 300;
      box-shadow: 0 8px 32px rgba(0,0,0,0.6);
    }
    .mk__stack-dropdown.open {
      opacity: 1;
      pointer-events: all;
      transform: translateX(-50%) translateY(0);
    }
    /* Elevate the entire marker when dropdown is open */
    .mk--stack:has(.mk__stack-dropdown.open) {
      z-index: 500 !important;
    }
    .mk__stack-dropdown-title {
      font-size: 9px;
      font-weight: 600;
      text-transform: uppercase;
      letter-spacing: 1px;
      color: rgba(255,255,255,0.35);
      padding: 4px 8px 6px;
    }
    .mk__stack-item {
      display: flex;
      align-items: center;
      gap: 8px;
      padding: 7px 10px;
      border-radius: 7px;
      cursor: pointer;
      transition: background 0.15s;
      white-space: nowrap;
    }
    .mk__stack-item:hover,
    .mk__stack-item:focus-visible {
      background: rgba(255,255,255,0.08);
    }
    .mk__stack-item-icon {
      width: 24px;
      height: 24px;
      border-radius: 50%;
      display: flex;
      align-items: center;
      justify-content: center;
      flex-shrink: 0;
      border: 1.5px solid var(--item-color, #aaa);
      background: radial-gradient(circle at 35% 30%, rgba(45,45,65,0.92), rgba(12,12,22,0.96));
    }
    .mk__stack-item-icon svg {
      width: 12px;
      height: 12px;
    }
    .mk__stack-item-info {
      overflow: hidden;
    }
    .mk__stack-item-name {
      font-size: 11.5px;
      font-weight: 600;
      color: #fff;
      overflow: hidden;
      text-overflow: ellipsis;
    }
    .mk__stack-item-sub {
      font-size: 9.5px;
      color: rgba(255,255,255,0.45);
      margin-top: 1px;
    }
    /* Stack dropdown pagination */
    .mk__stack-search {
      padding: 4px 5px 2px;
    }
    .mk__stack-search input {
      width: 100%;
      background: rgba(255,255,255,0.07);
      border: 1px solid rgba(255,255,255,0.12);
      border-radius: 6px;
      padding: 5px 8px;
      font-size: 11px;
      color: #fff;
      font-family: inherit;
    }
    .mk__stack-search input::placeholder {
      color: rgba(255,255,255,0.3);
    }
    .mk__stack-search input:focus {
      border-color: rgba(255,255,255,0.25);
      background: rgba(255,255,255,0.1);
    }
    .mk__stack-pages {
      overflow: hidden;
    }
    .mk__stack-page {
      display: none;
    }
    .mk__stack-page.active {
      display: block;
    }
    .mk__stack-nav {
      display: flex;
      align-items: center;
      justify-content: center;
      gap: 6px;
      padding: 5px 0 3px;
      user-select: none;
    }
    .mk__stack-nav-btn {
      width: 22px;
      height: 22px;
      border-radius: 5px;
      background: rgba(255,255,255,0.07);
      border: none;
      color: rgba(255,255,255,0.6);
      cursor: pointer;
      display: flex;
      align-items: center;
      justify-content: center;
      font-size: 13px;
      transition: background 0.15s;
      padding: 0;
    }
    .mk__stack-nav-btn:hover {
      background: rgba(255,255,255,0.14);
    }
    .mk__stack-nav-btn:disabled {
      opacity: 0.25;
      cursor: default;
    }
    .mk__stack-nav-info {
      font-size: 10px;
      color: rgba(255,255,255,0.4);
    }
    .mk__stack-no-results {
      padding: 10px 8px;
      text-align: center;
      font-size: 10.5px;
      color: rgba(255,255,255,0.35);
    }

    /* ── Animated pulse ring ── */
    .mk__ring {
      position: absolute;
      top: 50%; left: 50%;
      width: 100%; height: 100%;
      transform: translate(-50%, -50%);
      border-radius: 50%;
      border: 1.5px solid var(--mk-color, #aaa);
      animation: mk-pulse 2.5s cubic-bezier(0, 0.5, 0.5, 1) infinite;
      pointer-events: none;
    }
    .mk__ring--2 {
      animation-delay: 0.8s;
    }
    .mk__ring--3 {
      animation-delay: 1.6s;
    }
    /* Project ring inherits diamond shape */
    .mk--proj .mk__ring {
      border-radius: 4px;
      animation-name: mk-pulse-diamond;
    }
    /* Cluster ring dashed + sector color */
    .mk--cluster .mk__ring {
      border-style: dashed;
      border-color: var(--mk-cluster-border, var(--mk-color, #aaa));
    }

    @keyframes mk-pulse {
      0% { transform: translate(-50%, -50%) scale(1); opacity: 0.5; }
      100% { transform: translate(-50%, -50%) scale(1.5); opacity: 0; }
    }
    @keyframes mk-pulse-diamond {
      0% { transform: translate(-50%, -50%) rotate(45deg) scale(1); opacity: 0.5; }
      100% { transform: translate(-50%, -50%) rotate(45deg) scale(1.5); opacity: 0; }
    }

    /* ── Tooltip ── */
    .mk__tip {
      position: absolute;
      bottom: calc(100% + 10px);
      left: 50%;
      transform: translateX(-50%) translateY(4px);
      background: rgba(10, 12, 22, 0.94);
      backdrop-filter: blur(12px);
      -webkit-backdrop-filter: blur(12px);
      color: #fff;
      padding: 6px 14px;
      border-radius: 8px;
      font-size: 11px;
      font-family: 'Inter', system-ui, sans-serif;
      white-space: nowrap;
      pointer-events: none;
      opacity: 0;
      transition: opacity 0.25s ease, transform 0.25s ease;
      border: 1px solid var(--mk-border, rgba(255,255,255,0.12));
      box-shadow: 0 4px 20px rgba(0, 0, 0, 0.5);
      z-index: 200;
    }
    .mk__tip-name {
      font-weight: 600;
      font-size: 12px;
    }
    .mk__tip-sub {
      font-size: 10px;
      color: rgba(255,255,255,0.55);
      margin-top: 1px;
    }
    /* Tooltip shown via JS class (delayed), NOT on :hover */
    .mk .mk__tip--visible {
      opacity: 1;
      transform: translateX(-50%) translateY(0);
    }

    /* ── Sector icon badge (inside tooltip) ── */
    .mk__tip-icon {
      display: inline-flex;
      align-items: center;
      gap: 5px;
      margin-bottom: 3px;
    }
    .mk__tip-icon svg {
      vertical-align: middle;
      filter: drop-shadow(0 0 3px currentColor);
    }

    /* === VIGNETTE OVERLAY === */
    .vignette {
      position: fixed;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      pointer-events: none;
      z-index: 2;
      background: radial-gradient(ellipse at center, transparent 50%, rgba(4,4,12,0.5) 100%);
    }

    /* === SCANLINE (subtle) === */
    .scanlines {
      position: fixed;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      pointer-events: none;
      z-index: 3;
      background: repeating-linear-gradient(
        0deg,
        transparent,
        transparent 2px,
        rgba(0,0,0,0.045) 2px,
        rgba(0,0,0,0.045) 4px
      );
    }

    /* === LOADING === */
    /* === SPLASH SCREEN === */
    .splash-overlay {
      position: fixed; inset: 0;
      background: #04050a;
      z-index: 9999;
      display: flex; align-items: center; justify-content: center;
      transition: opacity 1s cubic-bezier(.4,0,.2,1), visibility 1s;
      overflow-y: auto;
    }
    .splash-overlay.hidden {
      display: none;
      opacity: 0; visibility: hidden; pointer-events: none;
    }

    /* Animated BG */
    .splash-bg { position: absolute; inset: 0; overflow: hidden; }
    .splash-bg-glow {
      position: absolute; border-radius: 50%;
      filter: blur(100px); pointer-events: none;
      animation: splashFloat 8s ease-in-out infinite;
    }
    .splash-glow-1 {
      width: 500px; height: 500px;
      top: -10%; left: -5%;
      background: radial-gradient(circle, rgba(0,240,255,0.10) 0%, transparent 70%);
    }
    .splash-glow-2 {
      width: 400px; height: 400px;
      bottom: -10%; right: -5%;
      background: radial-gradient(circle, rgba(212,160,23,0.08) 0%, transparent 70%);
      animation-delay: -4s;
    }
    @keyframes splashFloat {
      0%, 100% { transform: translate(0, 0) scale(1); }
      50% { transform: translate(30px, -20px) scale(1.1); }
    }
    .splash-bg-grid {
      position: absolute; inset: 0;
      background-image:
        linear-gradient(rgba(255,255,255,0.02) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255,255,255,0.02) 1px, transparent 1px);
      background-size: 60px 60px;
      mask-image: radial-gradient(ellipse 70% 60% at 50% 50%, black 20%, transparent 80%);
      -webkit-mask-image: radial-gradient(ellipse 70% 60% at 50% 50%, black 20%, transparent 80%);
    }

    /* Content */
    .splash-content {
      position: relative; z-index: 2;
      text-align: center; padding: 40px 24px;
      max-width: 620px; width: 100%;
    }
    .splash-content > * {
      animation: splashSlideUp 0.7s ease-out both;
    }
    .splash-content > :nth-child(1) { animation-delay: 0s; }
    .splash-content > :nth-child(2) { animation-delay: 0.1s; }
    .splash-content > :nth-child(3) { animation-delay: 0.2s; }
    .splash-content > :nth-child(4) { animation-delay: 0.3s; }
    .splash-content > :nth-child(5) { animation-delay: 0.4s; }
    .splash-content > :nth-child(6) { animation-delay: 0.5s; }
    .splash-content > :nth-child(7) { animation-delay: 0.6s; }
    @keyframes splashSlideUp {
      from { opacity: 0; transform: translateY(24px); }
      to { opacity: 1; transform: translateY(0); }
    }

    /* Badge */
    .splash-badge {
      display: inline-flex; align-items: center; gap: 6px;
      font-size: 0.7rem; font-weight: 600;
      letter-spacing: 1.5px; text-transform: uppercase;
      color: var(--orange);
      background: rgba(0,240,255,0.08);
      border: 1px solid rgba(0,240,255,0.2);
      padding: 6px 16px; border-radius: 100px;
      margin-bottom: 20px;
    }

    /* Title */
    .splash-hero { margin-bottom: 8px; }
    .splash-title {
      font-size: clamp(2.8rem, 8vw, 4rem);
      font-weight: 900; color: #fff;
      letter-spacing: -2px; line-height: 1;
      margin-bottom: 16px;
    }
    .splash-title span { color: var(--orange); }

    /* Tagline */
    .splash-tagline {
      font-size: 1.05rem; color: rgba(255,255,255,0.55);
      line-height: 1.7; margin-bottom: 36px;
    }
    .splash-tagline strong { color: rgba(255,255,255,0.85); font-weight: 600; }

    /* Stats */
    .splash-stats {
      display: flex; align-items: center; justify-content: center;
      gap: 0; margin-bottom: 28px;
      background: rgba(255,255,255,0.03);
      border: 1px solid rgba(255,255,255,0.06);
      border-radius: var(--radius-card); padding: 20px 8px;
      backdrop-filter: blur(12px);
    }
    .splash-stat { flex: 1; text-align: center; }
    .splash-stat-sep {
      width: 1px; height: 36px;
      background: rgba(255,255,255,0.08);
      flex-shrink: 0;
    }
    .splash-stat-value {
      font-size: clamp(1.5rem, 5vw, 2.2rem);
      font-weight: 800; color: #fff;
      font-variant-numeric: tabular-nums;
      line-height: 1;
    }
    .splash-stat-label {
      font-size: 0.6rem; color: rgba(255,255,255,0.35);
      letter-spacing: 1.5px; text-transform: uppercase;
      margin-top: 6px;
    }

    /* Sector chips */
    .splash-sectors {
      display: flex; flex-wrap: wrap; gap: 8px;
      justify-content: center; margin-bottom: 28px;
    }
    .splash-chip {
      font-size: 0.7rem; font-weight: 600;
      padding: 5px 12px; border-radius: 100px;
      background: color-mix(in srgb, var(--chip-color) 10%, transparent);
      border: 1px solid color-mix(in srgb, var(--chip-color) 20%, transparent);
      color: var(--chip-color);
      transition: all 0.25s;
    }
    .splash-chip:hover {
      background: color-mix(in srgb, var(--chip-color) 18%, transparent);
      transform: translateY(-1px);
    }

    /* CTA (legacy, kept for compatibility) */
    .splash-cta {
      display: inline-flex; align-items: center; gap: 10px;
      background: var(--orange); color: #fff;
      border: none; padding: 15px 40px;
      border-radius: 12px; font-size: 1rem; font-weight: 700;
      cursor: pointer; transition: all 0.3s;
      box-shadow: 0 4px 24px rgba(0,240,255,0.25);
      opacity: 0; pointer-events: none;
    }
    .splash-cta.ready { opacity: 1; pointer-events: auto; }

    /* Loading */
    .splash-loading {
      margin-top: 20px;
      display: flex; flex-direction: column; align-items: center; gap: 10px;
    }
    .splash-loading.done { display: none; }
    .splash-loading-bar {
      width: 180px; height: 2px;
      background: rgba(255,255,255,0.06); border-radius: 2px;
      overflow: hidden;
    }
    .splash-loading-fill {
      height: 100%; width: 0%;
      background: var(--orange); border-radius: 2px;
      transition: width 0.4s ease;
    }
    .splash-loading-text {
      font-size: 0.6rem; color: rgba(255,255,255,0.25);
      letter-spacing: 2px; text-transform: uppercase;
    }

    .wm-newsletter {
      margin: 18px auto 0;
      padding: 14px;
      max-width: 520px;
      background: rgba(255,255,255,0.06);
      border: 1px solid rgba(255,255,255,0.12);
      border-radius: 18px;
      backdrop-filter: blur(18px) saturate(1.25);
      box-shadow: 0 16px 40px rgba(0,0,0,0.24);
    }
    .wm-newsletter h3 {
      margin: 0 0 10px;
      color: #fff;
      font-size: 0.92rem;
      font-weight: 800;
      letter-spacing: -0.01em;
    }
    .wm-newsletter-row {
      display: grid;
      grid-template-columns: minmax(0, 1fr) 132px auto;
      gap: 8px;
    }
    .wm-newsletter input,
    .wm-newsletter select,
    .wm-newsletter button {
      min-height: 42px;
      border-radius: 999px;
      border: 1px solid rgba(255,255,255,0.14);
      font: inherit;
      font-size: 0.82rem;
    }
    .wm-newsletter input,
    .wm-newsletter select {
      width: 100%;
      background: rgba(10,10,20,0.54);
      color: #fff;
      padding: 0 14px;
      outline: none;
    }
    .wm-newsletter input::placeholder { color: rgba(255,255,255,0.44); }
    .wm-newsletter button {
      padding: 0 16px;
      background: var(--orange);
      color: #fff;
      cursor: pointer;
      font-weight: 800;
      border-color: transparent;
      transition: transform 0.18s ease, opacity 0.18s ease;
    }
    .wm-newsletter button:hover { transform: translateY(-1px); }
    .wm-newsletter button:disabled { cursor: wait; opacity: 0.68; }
    .wm-newsletter-status {
      min-height: 18px;
      margin-top: 8px;
      color: rgba(255,255,255,0.68);
      font-size: 0.72rem;
    }

    /* Footer */
    .splash-footer {
      margin-top: 32px;
      display: flex; align-items: center; justify-content: center; gap: 8px;
      font-size: 0.6rem; color: rgba(255,255,255,0.2);
      letter-spacing: 1px;
    }
    .splash-footer a {
      color: rgba(255,255,255,0.3); text-decoration: none;
      transition: color 0.2s;
    }
    .splash-footer a:hover { color: var(--orange); }

    /* Question */
    .splash-question {
      font-size: 0.75rem; font-weight: 600;
      letter-spacing: 2px; text-transform: uppercase;
      color: rgba(255,255,255,0.4);
      margin-bottom: 16px;
    }

    /* Persona cards */
    .splash-personas {
      display: grid; grid-template-columns: repeat(2, 1fr);
      gap: 10px; margin-bottom: 24px;
    }
    .splash-persona {
      display: flex; flex-direction: column; align-items: flex-start;
      gap: 6px; padding: 16px;
      background: rgba(255,255,255,0.03);
      border: 1px solid rgba(255,255,255,0.07);
      border-radius: 14px;
      cursor: pointer; text-align: left;
      transition: all 0.25s cubic-bezier(.4,0,.2,1);
      position: relative; overflow: hidden;
      color: inherit; font-family: inherit;
      font-size: inherit;
    }
    .splash-persona::before {
      content: ''; position: absolute; inset: 0;
      background: linear-gradient(135deg, rgba(0,240,255,0.05) 0%, transparent 60%);
      opacity: 0; transition: opacity 0.3s;
    }
    .splash-persona:hover::before { opacity: 1; }
    .splash-persona:hover {
      border-color: rgba(0,240,255,0.3);
      transform: translateY(-2px);
      box-shadow: 0 8px 24px rgba(0,0,0,0.3), 0 0 0 1px rgba(0,240,255,0.1);
    }
    .splash-persona:active { transform: scale(0.97); }
    .sp-icon { font-size: 1.6rem; }
    .sp-label { font-size: 0.9rem; font-weight: 700; color: #fff; position: relative; }
    .sp-desc { font-size: 0.68rem; color: rgba(255,255,255,0.35); line-height: 1.5; position: relative; }

    /* Persona disabled state while loading */
    .splash-persona.disabled {
      opacity: 0.4; pointer-events: none;
    }

    /* Mobile */
    @media (max-width: 580px) {
      .splash-personas { grid-template-columns: 1fr; }
      .splash-stats { flex-wrap: wrap; padding: 16px 12px; }
      .splash-stat-sep:nth-of-type(2) { display: none; }
      .splash-stat { min-width: 40%; }
      .splash-features { grid-template-columns: 1fr; }
      .splash-content { padding: 32px 16px; }
      .splash-title { letter-spacing: -1px; }
      .wm-newsletter-row { grid-template-columns: 1fr; }
      .wm-newsletter button { width: 100%; }
    }

    /* === SKELETON LOADING === */
    @keyframes shimmer {
      0% { background-position: -200% 0; }
      100% { background-position: 200% 0; }
    }
    .skeleton {
      background: linear-gradient(90deg, rgba(255,255,255,0.03) 25%, rgba(255,255,255,0.08) 50%, rgba(255,255,255,0.03) 75%);
      background-size: 200% 100%;
      animation: shimmer 1.8s ease-in-out infinite;
      border-radius: 8px;
    }
    .skeleton-text { height: 14px; margin-bottom: 8px; border-radius: 4px; }
    .skeleton-text.short { width: 60%; }
    .skeleton-title { height: 22px; width: 70%; margin-bottom: 12px; border-radius: 6px; }
    .skeleton-avatar { width: 40px; height: 40px; border-radius: 50%; }

    /* === GLASS CARD MIXIN === */
    .glass-card {
      background: linear-gradient(135deg, rgba(255,255,255,0.06) 0%, rgba(255,255,255,0.02) 100%);
      backdrop-filter: blur(16px);
      -webkit-backdrop-filter: blur(16px);
      border: 1px solid rgba(255,255,255,0.08);
      border-radius: var(--radius-card);
      box-shadow: 0 4px 24px rgba(0,0,0,0.2), inset 0 1px 0 rgba(255,255,255,0.06);
    }

    /* === ANIMATED BORDER === */
    @property --border-angle {
      syntax: '<angle>';
      initial-value: 0deg;
      inherits: false;
    }
    @keyframes border-rotate {
      to { --border-angle: 360deg; }
    }
    .animated-border {
      border: 2px solid transparent;
      background-image:
        linear-gradient(var(--bg-card), var(--bg-card)),
        conic-gradient(from var(--border-angle), var(--orange), #3b82f6, var(--orange));
      background-origin: border-box;
      background-clip: padding-box, border-box;
      animation: border-rotate 4s linear infinite;
    }

    /* === KPI TICKER BAR === */
    .kpi-ticker {
      position: fixed;
      top: 0; left: 0; right: 0;
      height: 28px;
      background: rgba(0,0,0,0.6);
      backdrop-filter: blur(8px);
      border-bottom: 1px solid rgba(255,255,255,0.04);
      z-index: 110;
      overflow: hidden;
      display: flex; align-items: center;
    }
    .kpi-ticker-inner {
      display: flex; align-items: center; gap: 6px;
      white-space: nowrap;
      animation: kpiScroll 40s linear infinite;
      padding: 0 12px;
    }
    .kpi-ticker:hover .kpi-ticker-inner { animation-play-state: paused; }
    @keyframes kpiScroll {
      0% { transform: translateX(0); }
      100% { transform: translateX(-50%); }
    }
    .kpi-item {
      display: inline-flex; align-items: center; gap: 4px;
      font-size: 10.5px; font-weight: 500; color: rgba(255,255,255,0.6);
    }
    .kpi-icon { font-size: 11px; }
    .kpi-label { color: rgba(255,255,255,0.4); font-weight: 600; text-transform: uppercase; letter-spacing: 0.5px; font-size: 9.5px; }
    .kpi-price { color: #fff; font-weight: 700; font-variant-numeric: tabular-nums; }
    .kpi-change { font-size: 9.5px; font-weight: 700; }
    .kpi-change.up { color: #22c55e; }
    .kpi-change.down { color: #ef4444; }
    .kpi-range { font-size: 9px; color: rgba(255,255,255,0.25); }
    .kpi-sep { color: rgba(255,255,255,0.12); margin: 0 4px; }

    /* === DASHBOARD PANEL === */
    .dashboard-panel {
      position: fixed; left: 12px; top: 96px; bottom: 12px;
      width: 360px;
      background: linear-gradient(160deg, rgba(255,255,255,0.08) 0%, rgba(255,255,255,0.02) 100%);
      backdrop-filter: blur(28px) saturate(1.4);
      -webkit-backdrop-filter: blur(28px) saturate(1.4);
      border: 1px solid rgba(255,255,255,0.1);
      border-radius: 20px;
      box-shadow: 0 8px 40px rgba(0,0,0,0.35), inset 0 1px 0 rgba(255,255,255,0.06);
      z-index: 90;
      overflow-y: auto;
      transform: translateX(calc(-100% - 20px));
      transition: transform 0.35s cubic-bezier(0.4, 0, 0.2, 1);
    }
    .dashboard-panel.open { transform: translateX(0); }
    .dash-header {
      display: flex; align-items: center; justify-content: space-between;
      padding: 18px 20px 14px;
      border-bottom: 1px solid rgba(255,255,255,0.06);
    }
    .dash-header h3 { font-size: 14px; font-weight: 700; color: #fff; }
    .dash-close {
      background: none; border: none; color: rgba(255,255,255,0.4);
      font-size: 20px; cursor: pointer; transition: color 0.2s;
    }
    .dash-close:hover { color: #fff; }
    .dash-body { padding: 16px 20px; }
    .dash-section { margin-bottom: 20px; }
    .dash-section-title {
      font-size: 10px; font-weight: 700; letter-spacing: 1.5px;
      text-transform: uppercase; color: rgba(255,255,255,0.35);
      margin-bottom: 10px;
    }
    .dash-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
    .energy-kpi {
      display: grid;
      gap: 18px;
    }
    .energy-kpi-grid {
      display: grid;
      grid-template-columns: repeat(2, minmax(0, 1fr));
      gap: 10px;
    }
    .kpi-card {
      position: relative;
      min-height: 132px;
      padding: 14px;
      overflow: hidden;
      color: var(--ink, var(--text-bright, #fff));
      background:
        linear-gradient(145deg, var(--bg-soft, rgba(255,255,255,0.08)), rgba(255,255,255,0.025)),
        rgba(255,255,255,0.035);
      border: 1px solid rgba(255,255,255,0.08);
      border-radius: var(--radius-card);
      box-shadow: var(--shadow-panel);
      transition: transform var(--t-fast), box-shadow var(--t-fast), border-color var(--t-fast);
    }
    .kpi-card:hover {
      transform: translateY(-2px);
      border-color: color-mix(in srgb, var(--accent, var(--orange, #00f0ff)) 35%, transparent);
      box-shadow: var(--shadow-panel), 0 14px 34px rgba(0,0,0,0.24);
    }
    .kpi-card-top {
      display: flex;
      align-items: center;
      justify-content: space-between;
      min-height: 28px;
      margin-bottom: 8px;
      gap: 8px;
    }
    .energy-kpi .kpi-icon {
      width: 26px;
      height: 26px;
      display: inline-flex;
      align-items: center;
      justify-content: center;
      border-radius: 10px;
      background: rgba(255,255,255,0.07);
      font-size: 14px;
    }
    .kpi-value-row {
      display: flex;
      align-items: baseline;
      gap: 6px;
      min-width: 0;
    }
    .kpi-value {
      color: var(--ink, var(--text-bright, #fff));
      font-size: clamp(1.4rem, 2.2vw, 2rem);
      font-weight: 850;
      letter-spacing: -0.04em;
      line-height: 1;
      font-variant-numeric: tabular-nums;
    }
    .kpi-unit {
      color: currentColor;
      font-size: 0.72rem;
      font-weight: 700;
      opacity: 0.52;
      white-space: nowrap;
    }
    .energy-kpi .kpi-label {
      margin-top: 9px;
      color: currentColor;
      font-size: 9.5px;
      font-weight: 800;
      letter-spacing: 1.2px;
      line-height: 1.25;
      text-transform: uppercase;
      opacity: 0.58;
    }
    .kpi-meta {
      margin-top: 8px;
      color: currentColor;
      font-size: 10px;
      line-height: 1.35;
      opacity: 0.38;
    }
    .kpi-trend {
      display: inline-flex;
      align-items: center;
      gap: 3px;
      padding: 3px 7px;
      border-radius: var(--radius-pill);
      background: rgba(255,255,255,0.07);
      font-size: 10px;
      font-weight: 800;
      line-height: 1;
      white-space: nowrap;
    }
    .kpi-trend.up { color: var(--ok, #22c55e); }
    .kpi-trend.down { color: var(--danger, #ef4444); }
    .kpi-trend.flat { color: rgba(255,255,255,0.48); }
    .kpi-spark {
      flex: 0 0 auto;
      color: var(--accent, var(--orange, #00f0ff));
      opacity: 0.82;
      overflow: visible;
    }
    .kpi-spark polyline {
      stroke-dasharray: 120;
      stroke-dashoffset: 120;
      animation: kpiSparkDraw 0.7s ease-out forwards;
    }
    @keyframes kpiSparkDraw {
      to { stroke-dashoffset: 0; }
    }
    .kpi-error {
      min-height: 160px;
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      gap: 12px;
      padding: 22px;
      color: var(--ink, var(--text-bright, #fff));
      text-align: center;
      background: var(--bg-soft, rgba(255,255,255,0.04));
      border: 1px solid rgba(255,255,255,0.08);
      border-radius: var(--radius-card);
      box-shadow: var(--shadow-panel);
    }
    .kpi-retry {
      padding: 8px 12px;
      border: 1px solid color-mix(in srgb, var(--accent, var(--orange, #00f0ff)) 35%, transparent);
      border-radius: var(--radius-chip);
      background: rgba(0,240,255,0.10);
      color: var(--ink, var(--text-bright, #fff));
      font-size: 11px;
      font-weight: 800;
      cursor: pointer;
      transition: transform var(--t-fast), background var(--t-fast);
    }
    .kpi-retry:hover {
      transform: translateY(-1px);
      background: rgba(0,240,255,0.15);
    }
    @media (prefers-reduced-motion: reduce) {
      .kpi-card,
      .kpi-retry {
        transition: none;
      }
      .kpi-card:hover,
      .kpi-retry:hover {
        transform: none;
      }
      .kpi-spark polyline {
        animation: none;
        stroke-dashoffset: 0;
      }
    }
    .dash-card {
      background: rgba(255,255,255,0.03);
      border: 1px solid rgba(255,255,255,0.06);
      border-radius: 12px; padding: 12px;
      transition: border-color 0.2s;
    }
    .dash-card:hover { border-color: rgba(255,255,255,0.12); }
    .dash-card-top {
      display: flex; align-items: center; justify-content: space-between;
      font-size: 11px; color: rgba(255,255,255,0.5);
      margin-bottom: 6px;
    }
    .dash-badge {
      font-size: 10px; font-weight: 700; padding: 1px 6px;
      border-radius: 4px;
    }
    .dash-badge.up { background: rgba(34,197,94,0.12); color: #22c55e; }
    .dash-badge.down { background: rgba(239,68,68,0.12); color: #ef4444; }
    .dash-card-price {
      font-size: 20px; font-weight: 800; color: #fff;
      font-variant-numeric: tabular-nums; line-height: 1.2;
    }
    .dash-card-price small { font-size: 11px; font-weight: 500; color: rgba(255,255,255,0.4); }
    .dash-card-sub { font-size: 10px; color: rgba(255,255,255,0.3); margin-top: 4px; }
    .dash-ts {
      font-size: 9px; color: rgba(255,255,255,0.2);
      text-align: center; margin-top: 8px;
      letter-spacing: 0.5px;
    }

    /* === MOBILE FILTER CHIPS === */
    .mobile-filters {
      display: none;
      position: fixed;
      top: 54px;
      left: 0; right: 0;
      z-index: 80;
      padding: 8px 12px;
      overflow-x: auto;
      -webkit-overflow-scrolling: touch;
      gap: 6px;
      scrollbar-width: none;
    }
    .mobile-filters::-webkit-scrollbar { display: none; }
    .mobile-chip {
      flex-shrink: 0;
      padding: 6px 14px;
      border-radius: 20px;
      font-size: 12px;
      font-weight: 600;
      border: none;
      background: rgba(255,255,255,0.08);
      color: var(--text-dim);
      cursor: pointer;
      transition: all 0.25s;
      white-space: nowrap;
    }
    .mobile-chip.active { 
      color: #08080f; 
      background: #00f0ff;
      box-shadow: 0 2px 12px rgba(0,240,255,0.35);
    }
    .mobile-chip--pays {
      border: 1px solid rgba(255,140,60,0.30);
      background: rgba(255,102,0,0.08);
    }
    .mobile-chip--pays.active {
      background: rgba(255,102,0,0.18);
      color: #fff;
      box-shadow: 0 2px 12px rgba(255,102,0,0.25);
    }
    .mobile-chip .chip-dot { 
      display: inline-block; width: 6px; height: 6px; 
      border-radius: 50%; margin-right: 5px; vertical-align: middle;
    }
    .mobile-chip.active .chip-dot { background: #fff !important; }

    /* === NAV ARROWS (inside bottom sheet on mobile) === */
    .nav-arrows {
      display: none;
      position: fixed;
      bottom: 16px;
      left: 50%;
      transform: translateX(-50%);
      z-index: 95;
      gap: 16px;
      align-items: center;
    }
    .nav-arrows.visible { display: flex; }
    .nav-btn {
      width: 36px; height: 36px;
      border-radius: 50%;
      background: rgba(255,255,255,0.08);
      border: 1px solid rgba(255,255,255,0.12);
      color: #fff;
      font-size: 16px;
      cursor: pointer;
      display: flex; align-items: center; justify-content: center;
      transition: all 0.2s;
      -webkit-tap-highlight-color: transparent;
    }
    .nav-btn:active { background: var(--orange); border-color: var(--orange); transform: scale(0.92); }
    .nav-counter { color: var(--text-dim); font-size: 11px; font-weight: 600; min-width: 60px; text-align: center; }

    /* === RESPONSIVE — progressive collapse === */

    .search-close-btn {
      display: none;
      position: absolute;
      right: 10px;
      top: 50%;
      transform: translateY(-50%);
      background: none;
      border: none;
      color: rgba(255,255,255,0.5);
      font-size: 20px;
      cursor: pointer;
      padding: 4px;
      line-height: 1;
    }
    .search-close-btn:hover { color: #fff; }

    .search-backdrop {
      display: none;
      position: fixed;
      inset: 0;
      z-index: 199;
      background: rgba(0,0,0,0.35);
    }
    body.search-overlay-active .search-backdrop { display: block; }
    body.search-overlay-active header { z-index: 200; }

    .vt-emoji { pointer-events: none; }

    /* ═══ RESPONSIVE: 2-tier chrome ═══ */

    /* ≤1439: hide reopen, slim stats but keep labels visible */
    @media (max-width: 1439px) {
      .reopen-splash-btn { display: none; }
      .stat-simple { white-space: nowrap; }
      .stat-sep { opacity: 0.4; }
    }
    /* ≤819: collapse labels to abbreviations so numbers are still meaningful */
    @media (max-width: 819px) {
      .stat-label { font-size: 0; letter-spacing: 0; }
      .stat-label::after {
        content: attr(data-abbr);
        font-size: 11px;
        letter-spacing: 0.02em;
        margin-left: 4px;
        opacity: 0.85;
      }
    }
    /* ≤768: stat strip was clipping the projects/countries chips ("205 p…").
       Shrink padding & let the bar scroll horizontally instead of truncate. */
    @media (max-width: 768px) {
      .stat-simple {
        font-size: 10px;
        gap: 4px;
        flex-wrap: nowrap;
        overflow-x: auto;
        scrollbar-width: none;
        padding-right: 8px;
      }
      .stat-simple::-webkit-scrollbar { display: none; }
      .stat-simple > * { flex-shrink: 0; }
    }
    /* The Vue mondiale overlay button is suppressed — cluster zoom auto-resets via globe pan */
    .globe-overview-btn,
    #globeOverviewBtn { display: none !important; }

    /* ≤1279: search collapses to icon */
    @media (max-width: 1279px) {
      .wm-chrome-tier1 .search-box {
        flex: 0 0 36px;
        max-width: 36px;
        cursor: pointer;
        padding: 0;
        background: rgba(255,255,255,0.06);
        border: 1px solid rgba(255,255,255,0.12);
        border-radius: 999px;
        overflow: hidden;
      }
      .wm-chrome-tier1 .search-box .search-icon {
        position: static;
        transform: none;
        width: 16px;
        height: 16px;
        margin: 0;
        padding: 10px;
        box-sizing: content-box;
      }
      .wm-chrome-tier1 .search-box #search { display: none; }
      .wm-chrome-tier1 .search-box .search-results { display: none; }

      .wm-chrome-tier1 .search-box.search-expanded {
        position: fixed;
        top: 4px;
        left: 4px;
        right: 4px;
        height: 44px;
        max-width: none;
        flex: none;
        z-index: 10050;
        background: rgba(20,18,30,0.97);
        border: 1px solid rgba(0,240,255,0.3);
        border-radius: 14px;
        padding: 0 40px 0 12px;
        display: flex;
        align-items: center;
      }
      .wm-chrome-tier1 .search-box.search-expanded .search-icon {
        position: absolute;
        left: 12px;
        top: 50%;
        transform: translateY(-50%);
        padding: 0;
        width: 15px;
        height: 15px;
      }
      .wm-chrome-tier1 .search-box.search-expanded #search {
        display: block;
        width: 100%;
        padding: 8px 8px 8px 32px;
        background: transparent;
        border: none;
        box-shadow: none;
      }
      .wm-chrome-tier1 .search-box.search-expanded #search:focus {
        box-shadow: none;
        border: none;
        background: transparent;
      }
      .wm-chrome-tier1 .search-box.search-expanded .search-close-btn { display: block; }
      .wm-chrome-tier1 .search-box.search-expanded .search-results {
        display: block;
        position: absolute;
        left: 0;
        right: 0;
        top: 100%;
        margin-top: 4px;
      }
    }

    /* ≤1023: emoji-only toggles */
    @media (max-width: 1023px) {
      .vt-label { display: none; }
      .vt-arrow { display: none; }
      .view-toggle-btn { padding: 6px 10px; }
      .view-toggle { padding: 2px; gap: 1px; }
      .logo-sub { display: none; }
    }

    /* ≤819: tier2 compact, hide radar text, show mobile filters */
    @media (max-width: 819px) {
      .mobile-filters { display: flex; }
      .wm-radar-cta-text { display: none; }
      .wm-radar-cta { padding: 6px 10px; font-size: 13px; }

      .wm-chrome-tier2 { gap: 4px; padding: 0 10px; }
      .stats-bar { gap: 4px; font-size: 10px; }
      .stat-simple strong { font-size: 10px; }
      .country-filter-chip { font-size: 10px; padding: 4px 8px; }

      .region-bar { display: none !important; }
    }

    /* ≤639: mobile compact chrome */
    @media (max-width: 639px) {
      .wm-chrome-tier1 {
        height: 48px;
        padding: 0 10px;
        gap: 6px;
      }
      .wm-chrome-tier2 {
        top: 48px;
        height: 36px;
        padding: 0 10px;
      }

      .wm-chrome-tier1 .logo {
        flex-shrink: 0;
        min-width: 0;
      }
      .logo-icon { width: 32px !important; height: 32px !important; }
      .logo-text h1,
      .logo-text .logo-title { font-size: 16px !important; }
      .logo-sub { display: none; }

      .wm-chrome-tier1 .view-toggle { display: none; }

      .wm-chrome-tier1 .search-box {
        flex: 0 0 36px;
        max-width: 36px;
        order: 0;
      }

      #chromeToggle { display: none; }
      .wm-radar-cta { display: none; }
      .wm-utility-cluster { gap: 4px; }

      #countryFilterChip { display: none !important; }
      .stats-bar .stat-sep:last-of-type { display: none; }

      .wm-utility-cluster .lang-toggle {
        padding: 2px;
        min-height: 0;
      }
      .wm-utility-cluster .lang-toggle a {
        min-width: 28px;
        min-height: 24px;
        padding: 0 6px;
        font-size: 10px;
      }
      .wm-utility-cluster #wmThemeToggle {
        width: 28px !important;
        height: 28px !important;
        font-size: 13px !important;
        min-width: 0 !important;
        min-height: 0 !important;
      }

      .mobile-filters {
        top: 84px !important;
      }
    }

    @media (max-width: 768px) {
      .filter-panel { width: 100%; }

      /* ── Search results: wide dropdown under search box ── */
      .search-results {
        position: absolute;
        left: 8px;
        right: 8px;
        top: 100%;
        margin-top: 4px;
        max-height: 55vh;
        border-radius: 14px;
        box-shadow: 0 12px 48px rgba(0,0,0,0.7);
      }
      .search-result-item {
        padding: 12px 14px;
        gap: 10px;
        min-height: 48px;
      }
      .search-result-name {
        font-size: 14px;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
        min-width: 0;
        flex: 1;
      }
      .search-result-meta { font-size: 11px; flex-shrink: 0; }
      .search-result-tag { flex-shrink: 0; }

      /* ── Mobile chips: position below header ── */
      .mobile-filters { top: auto; margin-top: 4px; }

      /* ── Bottom Sheet Info Panel ── */
      .info-panel {
        width: 100%;
        top: auto;
        bottom: 0;
        max-height: 80vh;
        border-left: none;
        border-top: none;
        border-radius: 20px 20px 0 0;
        transform: translateY(100%);
        background: rgba(13,13,26,0.97);
        backdrop-filter: blur(30px) saturate(1.4);
        -webkit-backdrop-filter: blur(30px) saturate(1.4);
        border-top: 1px solid rgba(255,255,255,0.08);
        box-shadow: 0 -8px 40px rgba(0,0,0,0.6);
        overflow: hidden;
        touch-action: pan-y;
      }
      /* Drag handle */
      .info-panel::before {
        content: '';
        position: absolute;
        top: 8px;
        left: 50%;
        transform: translateX(-50%);
        width: 36px;
        height: 4px;
        background: rgba(255,255,255,0.3);
        border-radius: 2px;
        z-index: 10;
      }
      .info-panel::after { display: none; }
      .info-panel.open { transform: translateY(0); }
      .info-panel.dragging { transition: none !important; }
      .info-panel #infoPanelContent {
        padding-top: 20px;
        overflow-y: auto;
        max-height: calc(80vh - 20px);
        -webkit-overflow-scrolling: touch;
        overscroll-behavior: contain;
      }

      /* ── Compact info header ── */
      .info-panel .info-header { 
        padding: 4px 16px 8px;
        border-bottom: none;
        display: flex;
        flex-wrap: wrap;
        align-items: baseline;
        gap: 0 10px;
      }
      .info-panel .info-sector-badge { 
        font-size: 9px; padding: 3px 8px; margin-bottom: 4px;
        order: 1;
      }
      .info-panel .info-name { 
        font-size: 18px; font-weight: 800; margin: 0; line-height: 1.2;
        width: 100%; order: 2;
      }
      .info-panel .info-location { 
        font-size: 12px; order: 3; margin-top: 2px;
      }

      /* ── Compact body ── */
      .info-panel .info-body { padding: 6px 16px 16px; }
      .info-panel .info-description { 
        font-size: 13px; line-height: 1.6; margin-bottom: 10px; color: var(--text-dim);
        display: block !important; -webkit-line-clamp: none !important; 
        -webkit-box-orient: unset !important; overflow: visible !important;
        max-height: none !important;
      }
      .info-panel .info-grid { 
        grid-template-columns: 1fr 1fr;
        gap: 6px; margin-bottom: 12px;
      }
      .info-panel .info-metric { 
        padding: 10px 12px; border-radius: var(--radius-chip);
        background: rgba(255,255,255,0.04);
      }
      .info-panel .info-metric-label { font-size: 9px; margin-bottom: 3px; }
      .info-panel .info-metric-value { font-size: 14px; }
      .info-panel .info-section { margin-bottom: 10px; }
      .info-panel .info-link { 
        width: 100%; justify-content: center; padding: 10px; font-size: 12px; 
        border-radius: var(--radius-chip);
      }

      /* ── Close button ── */
      .info-panel .info-close { 
        top: 8px; right: 12px; width: 32px; height: 32px; font-size: 18px;
        background: rgba(255,255,255,0.1); border-radius: 50%;
      }

      /* ── Nav arrows above bottom sheet ── */
      .nav-arrows { bottom: calc(80vh + 8px); }

      /* ── Subsidiary/project lists compact ── */
      .info-panel .subsidiary-item,
      .info-panel .project-item-panel { padding: 8px 10px; }
      .info-panel .subsidiary-name,
      .info-panel .project-name-text { font-size: 12px; }
      .info-panel .subsidiary-location,
      .info-panel .project-meta-text { font-size: 10px; }

      .legend { max-width: calc(100vw - 40px); bottom: 12px; left: 12px; }
    }

    @media (max-width: 480px) {
      .legend { display: none; }
    }

    .wm-data-loading {
      position: fixed;
      left: 24px;
      bottom: 78px;
      z-index: 96;
      display: inline-flex;
      align-items: center;
      gap: 8px;
      padding: 8px 12px;
      border-radius: var(--radius-pill);
      background: rgba(15,12,30,0.88);
      border: 1px solid rgba(0,240,255,0.25);
      color: #fff;
      font-size: 12px;
      font-weight: 700;
      box-shadow: 0 12px 30px rgba(0,0,0,0.35);
      backdrop-filter: blur(18px) saturate(1.2);
      -webkit-backdrop-filter: blur(18px) saturate(1.2);
      opacity: 1;
      transform: translateY(0);
      transition: opacity 0.22s ease, transform 0.22s ease;
      pointer-events: none;
    }

    .wm-data-loading.is-hidden {
      opacity: 0;
      transform: translateY(6px);
    }

    .wm-data-spinner {
      width: 13px;
      height: 13px;
      border: 2px solid rgba(255,255,255,0.25);
      border-top-color: var(--orange);
      border-radius: 50%;
      animation: wm-spin 0.8s linear infinite;
    }

    .hydrate-status {
      position: fixed;
      bottom: 156px;
      right: 16px;
      background: rgba(15,12,30,0.92);
      border: 1px solid rgba(0,240,255,0.25);
      border-radius: 999px;
      padding: 6px 12px;
      color: #fff;
      font-size: 11px;
      font-weight: 700;
      z-index: 110;
      backdrop-filter: blur(12px);
      -webkit-backdrop-filter: blur(12px);
      display: flex;
      align-items: center;
      gap: 8px;
      pointer-events: none;
      box-shadow: 0 12px 30px rgba(0,0,0,0.28);
    }

    .hydrate-status[hidden] {
      display: none !important;
    }

    .hydrate-spinner {
      width: 10px;
      height: 10px;
      border: 2px solid rgba(255,255,255,0.25);
      border-top-color: #00f0ff;
      border-radius: 50%;
      animation: wm-spin 0.8s linear infinite;
      flex-shrink: 0;
    }

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

    .veille-share {
      background: rgba(255,255,255,0.06);
      color: rgba(255,255,255,0.85);
      border: 1px solid rgba(255,255,255,0.12);
      border-radius: var(--radius-pill, 999px);
      padding: 8px 14px;
      font-size: 12.5px;
      font-weight: 700;
      cursor: pointer;
      transition: background 0.15s, border-color 0.15s, transform 0.15s;
    }

    .veille-share:hover {
      background: rgba(0,240,255,0.12);
      border-color: rgba(0,240,255,0.35);
      transform: translateY(-1px);
    }

    .share-flash {
      background: rgba(34,197,94,0.18) !important;
      border-color: rgba(34,197,94,0.5) !important;
      color: #b6f0c2 !important;
    }

    /* Country filter dropdown */
    .country-dropdown {
      position: fixed;
      z-index: 9999;
      min-width: 220px;
      max-height: 340px;
      overflow-y: auto;
      background: rgba(15,15,30,0.96);
      backdrop-filter: blur(20px);
      border: 1px solid rgba(255,255,255,0.12);
      border-radius: 12px;
      padding: 10px 0;
      box-shadow: 0 12px 40px rgba(0,0,0,0.6);
      display: none;
    }
    .country-dropdown.open { display: block; }
    .country-dropdown { min-width: 280px; }
    .country-dropdown .vt-dd-title {
      font-size: 10px;
      text-transform: uppercase;
      letter-spacing: 1px;
      color: var(--text-dim);
      padding: 4px 14px 8px;
      font-weight: 700;
    }
    .country-dd-search {
      width: calc(100% - 20px);
      margin: 0 10px 8px;
      padding: 7px 10px;
      border: 1px solid rgba(255,255,255,0.10);
      border-radius: 9px;
      background: rgba(255,255,255,0.04);
      color: var(--text-bright, #fff);
      font-size: 12px;
      font-family: inherit;
      outline: none;
      transition: border-color .15s, background .15s;
    }
    .country-dd-search::placeholder { color: var(--text-dim, #98938e); }
    .country-dd-search:focus {
      border-color: rgba(0,240,255,0.35);
      background: rgba(255,255,255,0.06);
    }

    /* "Seul" / Solo buttons inside dropdown items (sectors + countries) */
    .vt-dd-item .dd-label {
      flex: 1 1 auto;
      min-width: 0;
      overflow: hidden;
      text-overflow: ellipsis;
      white-space: nowrap;
    }
    .vt-dd-item .dd-solo {
      flex: 0 0 auto;
      padding: 2px 8px;
      margin: 0 6px 0 4px;
      border-radius: 6px;
      background: rgba(255,255,255,0.04);
      border: 1px solid rgba(255,255,255,0.10);
      color: var(--text-dim, #98938e);
      font-size: 10px;
      font-weight: 700;
      letter-spacing: 0.04em;
      cursor: pointer;
      opacity: 0;
      transition: opacity .12s, background .12s, color .12s, border-color .12s;
      font-family: inherit;
    }
    .vt-dd-item:hover .dd-solo,
    .vt-dd-item:focus-within .dd-solo { opacity: 1; }
    .vt-dd-item .dd-solo:hover {
      background: rgba(255,102,0,0.14);
      border-color: rgba(255,140,60,0.45);
      color: #fff;
    }
    /* Always show on touch devices — hover-reveal hides the affordance there */
    @media (hover: none) {
      .vt-dd-item .dd-solo { opacity: 1; }
    }
    .country-dd-select-all {
      width: calc(100% - 20px);
      margin: 0 10px 8px;
      padding: 8px 10px;
      border: 1px solid rgba(255,255,255,0.10);
      border-radius: 9px;
      background: rgba(255,255,255,0.05);
      color: var(--text);
      cursor: pointer;
      display: flex;
      align-items: center;
      gap: 8px;
      font-size: 12px;
      font-weight: 700;
      text-align: left;
      transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease;
    }
    .country-dd-select-all:hover {
      background: rgba(255,255,255,0.08);
      border-color: rgba(255,255,255,0.18);
    }
    .country-dd-select-all.checked {
      color: #fff;
      border-color: rgba(255,102,0,0.35);
      background: rgba(255,102,0,0.12);
    }
    .country-dd-select-all .dd-check {
      width: 16px;
      height: 16px;
      border-radius: 4px;
      border: 1.5px solid rgba(255,255,255,0.25);
      display: flex;
      align-items: center;
      justify-content: center;
      font-size: 10px;
      flex-shrink: 0;
      transition: all 0.15s;
    }
    .country-dd-select-all.checked .dd-check {
      background: var(--orange);
      border-color: var(--orange);
    }
    .country-dd-list { max-height: 280px; overflow-y: auto; }

    /* Country filter chip */
    .country-filter-chip {
      cursor: pointer;
      padding: 5px 12px;
      border-radius: 8px;
      background: rgba(255,102,0,0.08);
      border: 1.5px solid rgba(255,140,60,0.35);
      transition: all 0.2s;
      font-size: 11px;
      font-weight: 600;
      white-space: nowrap;
      min-height: 32px;
      display: inline-flex;
      align-items: center;
      gap: 2px;
      color: rgba(255,255,255,0.9);
    }
    .country-filter-chip:hover {
      background: rgba(0,240,255,0.12);
      border-color: rgba(0,240,255,0.25);
      color: #fff;
      box-shadow: 0 0 8px rgba(0,240,255,0.18);
    }
    .country-filter-chip:active {
      transform: scale(0.97);
    }

    /* Export all button */
    .export-all-btn {
      cursor: pointer;
      padding: 3px 10px;
      border-radius: 8px;
      background: rgba(255,255,255,0.06);
      border: 1px solid rgba(255,255,255,0.1);
      color: var(--text-dim);
      font-size: 11px;
      font-weight: 600;
      transition: all 0.2s;
      white-space: nowrap;
    }
    .export-all-btn:hover {
      background: rgba(0,240,255,0.12);
      border-color: rgba(0,240,255,0.25);
      color: #fff;
    }

    /* Info panel action buttons (Site / Fiche / Lien / Copier / Sauver) */
    .info-actions-row {
      display: flex;
      flex-wrap: wrap;
      gap: 6px;
      margin-top: 10px;
    }
    .info-action-btn {
      display: inline-flex;
      align-items: center;
      gap: 4px;
      padding: 6px 12px;
      border-radius: 8px;
      background: rgba(255,255,255,0.08);
      border: 1px solid rgba(255,255,255,0.12);
      color: var(--text-dim);
      font-size: 11px;
      font-weight: 600;
      cursor: pointer;
      text-decoration: none;
      font-family: inherit;
      transition: all 0.2s;
    }
    .info-action-btn:hover {
      background: rgba(0,240,255,0.15);
      border-color: rgba(0,240,255,0.35);
      color: #fff;
    }
    /* Primary CTA: site officiel — strongest visual weight (after the sector badge) */
    .info-action-btn.info-action-primary {
      background: rgba(255,102,0,0.14);
      border-color: rgba(255,140,60,0.42);
      color: #fff;
    }
    .info-action-btn.info-action-primary:hover {
      background: rgba(255,102,0,0.22);
      border-color: rgba(255,140,60,0.65);
    }

    /* === CONTEXT BAR (persistent filter state) === */
    /* Floating chip strip that always tells the user where they are
       (pays, secteurs, couches) so country click + filters don't leave
       implicit state buried in dropdowns. */
    .wm-context-bar {
      position: fixed;
      /* Anchored bottom-center, sat above the UTC time widget.
         Reserved enough breathing room so the user doesn't feel the
         pill is buried at the very edge. */
      bottom: 64px;
      left: 50%;
      transform: translateX(-50%);
      z-index: 205;
      display: flex;
      align-items: center;
      gap: 6px;
      max-width: calc(100vw - 32px);
      padding: 6px 10px;
      border-radius: 999px;
      background: rgba(8, 8, 14, 0.86);
      border: 1px solid rgba(255, 255, 255, 0.10);
      box-shadow: 0 8px 24px rgba(0, 0, 0, 0.35);
      backdrop-filter: blur(12px) saturate(1.2);
      -webkit-backdrop-filter: blur(12px) saturate(1.2);
      font-family: 'Inter', system-ui, sans-serif;
      font-size: 12px;
      color: var(--text-bright, #fff);
      pointer-events: auto;
      transition: opacity .2s ease, transform .2s ease;
      overflow-x: auto;
      -webkit-overflow-scrolling: touch;
      scrollbar-width: none;
    }
    .wm-context-bar::-webkit-scrollbar { display: none; }
    .wm-context-bar.wm-ctx-default {
      opacity: 0.55;
    }
    .wm-context-bar.wm-ctx-default:hover { opacity: 1; }

    .wm-ctx-pill {
      display: inline-flex;
      align-items: center;
      gap: 5px;
      padding: 3px 10px;
      border-radius: 999px;
      background: rgba(255, 255, 255, 0.05);
      border: 1px solid rgba(255, 255, 255, 0.08);
      color: var(--text, #cbd5e1);
      font-weight: 500;
      max-width: 220px;
      overflow: hidden;
      text-overflow: ellipsis;
      white-space: nowrap;
    }
    .wm-ctx-pill-country {
      color: #fff;
      background: rgba(255, 102, 0, 0.10);
      border-color: rgba(255, 140, 60, 0.32);
      font-weight: 700;
    }
    .wm-ctx-pill-layers {
      color: rgba(255, 255, 255, 0.65);
    }
    .wm-ctx-pill-action {
      cursor: pointer;
      appearance: none;
      -webkit-appearance: none;
      text-align: left;
      font: inherit;
      line-height: 1.2;
      transition: background .15s, border-color .15s, color .15s;
    }
    .wm-ctx-pill-action:hover {
      background: rgba(0, 240, 255, 0.12);
      border-color: rgba(0, 240, 255, 0.34);
      color: #fff;
    }
    .wm-ctx-icon { font-size: 11px; line-height: 1; }

    .wm-ctx-btn {
      display: inline-flex;
      align-items: center;
      gap: 4px;
      padding: 4px 10px;
      border-radius: 999px;
      background: rgba(255, 255, 255, 0.06);
      border: 1px solid rgba(255, 255, 255, 0.10);
      color: var(--text-bright, #fff);
      font: 600 11px/1 'Inter', system-ui, sans-serif;
      cursor: pointer;
      transition: background .15s, border-color .15s, color .15s;
      white-space: nowrap;
    }
    .wm-ctx-btn:hover {
      background: rgba(0, 240, 255, 0.14);
      border-color: rgba(0, 240, 255, 0.35);
      color: #fff;
    }
    .wm-ctx-btn-world {
      background: rgba(0, 240, 255, 0.10);
      border-color: rgba(0, 240, 255, 0.30);
    }
    .wm-ctx-btn-reset:hover {
      background: rgba(239, 68, 68, 0.14);
      border-color: rgba(239, 68, 68, 0.40);
    }

    /* Hide context bar when search overlay, splash, or shell pages are visible. */
    body.search-overlay-active .wm-context-bar,
    body:not(.wm-splash-dismissed):not(.wm-shell-page-active) .wm-context-bar {
      display: none;
    }
    body.wm-shell-page-active .wm-context-bar,
    body.wm-shell-collapsed.wm-shell-page-active .wm-context-bar {
      display: none !important;
    }

    @media (max-width: 768px) {
      .wm-context-bar {
        top: auto;
        bottom: 112px;
        font-size: 11px;
        gap: 4px;
        padding: 5px 8px;
      }
      .wm-ctx-pill { padding: 3px 8px; max-width: 140px; }
      .wm-ctx-btn { padding: 3px 8px; font-size: 10px; }
    }

    /* Push bottom elements up to make room for ticker */
    .legend { bottom: 126px !important; }
    .time-widget { bottom: 118px !important; }

    @media (max-width: 768px) {
      .wm-data-loading { left: 12px; bottom: 96px; font-size: 11px; padding: 7px 10px; }
      .legend { bottom: 162px !important; }
      .time-widget { bottom: 154px !important; }
    }


/* ============================================================
   ALERTS PANEL
   Slide-out panel for energy grid alerts & notifications
   ============================================================ */

/* --- Toggle Button (bottom-right) --- */
.alerts-toggle {
  position: fixed;
  bottom: 80px;
  right: 16px;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: linear-gradient(
    135deg,
    rgba(255,255,255,0.12) 0%,
    rgba(255,255,255,0.05) 100%
  );
  backdrop-filter: blur(16px) saturate(1.4);
  -webkit-backdrop-filter: blur(16px) saturate(1.4);
  border: 1px solid rgba(255,255,255,0.15);
  box-shadow: 0 4px 20px rgba(0,0,0,0.3);
  color: var(--text-dim);
  font-size: 18px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 510;
  transition: all 0.2s ease;
}

.alerts-toggle:hover {
  background: rgba(0,240,255,0.15);
  color: var(--orange);
  border-color: rgba(0,240,255,0.35);
  transform: scale(1.05);
}

.alerts-toggle.active {
  background: var(--orange);
  color: #fff;
  border-color: var(--orange);
  box-shadow: 0 4px 20px rgba(0,240,255,0.35);
}

.alerts-toggle.active.has-critical::after {
  content: '';
  position: absolute;
  inset: -6px;
  border-radius: var(--radius-pill);
  border: 1px solid var(--accent, var(--orange));
  animation: alertsGlowRing 2.2s ease-in-out infinite;
  pointer-events: none;
}

/* --- Notification Badge --- */
.alerts-badge {
  position: absolute;
  top: -7px;
  right: -7px;
  min-width: 22px;
  height: 22px;
  padding: 0 6px;
  background: #ef4444;
  border-radius: 11px;
  font-size: 11px;
  font-weight: 900;
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  line-height: 1;
  border: 2px solid rgba(10,10,20,0.95);
  animation: badgePulse 2s ease-in-out infinite;
  box-shadow: 0 2px 12px rgba(239,68,68,0.65);
}

.alerts-badge:empty { display: none; }

@keyframes badgePulse {
  0%, 100% { transform: scale(1); box-shadow: 0 2px 8px rgba(239,68,68,0.5); }
  50% { transform: scale(1.12); box-shadow: 0 2px 14px rgba(239,68,68,0.7); }
}

@keyframes alertsGlowRing {
  0%, 100% { opacity: .35; transform: scale(.96); box-shadow: 0 0 0 0 rgba(255,176,64,0.22); }
  50% { opacity: .9; transform: scale(1.08); box-shadow: 0 0 24px 4px rgba(255,176,64,0.28); }
}

/* --- Panel Container --- */
.alerts-panel {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  width: 360px;
  z-index: 500;
  background: rgba(10,10,20,0.95);
  backdrop-filter: blur(24px) saturate(1.4);
  -webkit-backdrop-filter: blur(24px) saturate(1.4);
  border-left: 1px solid rgba(255,255,255,0.08);
  box-shadow: -8px 0 40px rgba(0,0,0,0.4);
  transform: translateX(100%);
  transition: transform 0.35s cubic-bezier(0.4, 0, 0.2, 1);
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.alerts-panel.open {
  transform: translateX(0);
}

/* Panel header */
.alerts-panel-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px 20px;
  border-bottom: 1px solid var(--border);
  flex-shrink: 0;
}

.alerts-panel-header h2 {
  font-size: 15px;
  font-weight: 800;
  color: var(--text-bright);
  letter-spacing: -0.3px;
}

.alerts-panel-close {
  width: 30px;
  height: 30px;
  background: rgba(255,255,255,0.06);
  border: 1px solid var(--border);
  border-radius: 8px;
  color: var(--text-dim);
  font-size: 16px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.15s;
}

.alerts-panel-close:hover {
  background: rgba(255,255,255,0.12);
  color: #fff;
}

/* --- Filter Buttons --- */
.alert-filters {
  display: flex;
  gap: 6px;
  padding: 12px 20px;
  border-bottom: 1px solid var(--border);
  flex-shrink: 0;
}

.alert-filter-btn {
  padding: 4px 12px;
  border-radius: 20px;
  font-size: 11px;
  font-weight: 600;
  font-family: inherit;
  background: rgba(255,255,255,0.05);
  border: 1px solid var(--border);
  color: var(--text-dim);
  cursor: pointer;
  transition: all 0.15s;
  text-transform: capitalize;
}

.alert-filter-btn:hover {
  background: rgba(255,255,255,0.1);
  color: var(--text);
}

.alert-filter-btn.active {
  background: rgba(0,240,255,0.12);
  border-color: rgba(0,240,255,0.35);
  color: var(--orange);
}

.alert-filter-btn.active[data-severity="critical"] {
  background: rgba(239,68,68,0.15);
  border-color: rgba(239,68,68,0.4);
  color: #ef4444;
}

.alert-filter-btn.active[data-severity="warning"] {
  background: rgba(245,158,11,0.15);
  border-color: rgba(245,158,11,0.4);
  color: #f59e0b;
}

.alert-filter-btn.active[data-severity="info"] {
  background: rgba(59,130,246,0.15);
  border-color: rgba(59,130,246,0.4);
  color: #3b82f6;
}

/* --- Alert Cards List --- */
.alerts-list {
  flex: 1;
  overflow-y: auto;
  padding: 12px 16px;
}

.alerts-list::-webkit-scrollbar { width: 4px; }
.alerts-list::-webkit-scrollbar-track { background: transparent; }
.alerts-list::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.1); border-radius: 2px; }

/* --- Alert Card --- */
.alert-card {
  position: relative;
  background: rgba(255,255,255,0.03);
  border: 1px solid var(--border);
  border-radius: var(--radius-chip);
  padding: 12px 14px 12px 18px;
  margin-bottom: 8px;
  overflow: hidden;
  transition: all 0.2s;
  animation: alertSlideIn 0.3s ease-out;
  cursor: pointer;
}

.alert-card:hover,
.alert-card:focus-visible {
  background: rgba(255,255,255,0.05);
  border-color: var(--border-light);
  transform: translateX(-2px);
}

/* Left severity bar */
.alert-severity-bar {
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 4px;
  border-radius: 10px 0 0 10px;
}

.alert-card.critical .alert-severity-bar { background: #ef4444; box-shadow: 0 0 8px rgba(239,68,68,0.4); }
.alert-card.warning .alert-severity-bar  { background: #f59e0b; box-shadow: 0 0 8px rgba(245,158,11,0.4); }
.alert-card.info .alert-severity-bar     { background: #3b82f6; box-shadow: 0 0 8px rgba(59,130,246,0.4); }
.alert-card.critical .alert-severity-bar { width: 4px; }

.alert-card-title {
  font-size: 12.5px;
  font-weight: 700;
  color: var(--text-bright);
  margin-bottom: 4px;
  line-height: 1.3;
}

.alert-card.critical .alert-card-title {
  font-weight: 700;
}

.alert-card-body {
  font-size: 11.5px;
  color: var(--text-dim);
  line-height: 1.5;
  margin-bottom: 6px;
}

.alert-card-meta {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 10px;
  color: var(--text-dim);
  font-weight: 500;
}

.alert-card-time {
  opacity: 0.7;
}

.alert-card-source {
  background: rgba(255,255,255,0.05);
  padding: 1px 6px;
  border-radius: 4px;
  font-weight: 600;
}

@keyframes alertSlideIn {
  0% { opacity: 0; transform: translateX(20px); }
  100% { opacity: 1; transform: translateX(0); }
}

/* Empty state */
.alerts-empty {
  text-align: center;
  padding: 40px 20px;
  color: var(--text-dim);
  font-size: 13px;
}

.alerts-empty-icon {
  font-size: 32px;
  margin-bottom: 12px;
  opacity: 0.4;
}


/* ============================================================
   WEATHER ENERGY BAR
   Scrolling weather + renewable potential ticker below KPI bar
   ============================================================ */

.weather-bar {
  position: fixed;
  top: 28px;
  left: 0;
  right: 0;
  height: 28px;
  background: linear-gradient(
    180deg,
    rgba(5,5,12,0.75) 0%,
    rgba(8,8,18,0.65) 100%
  );
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  border-bottom: 1px solid rgba(255,255,255,0.03);
  z-index: 109;
  overflow: hidden;
  display: flex;
  align-items: center;
  transition: height 0.3s ease, opacity 0.3s ease;
}

.weather-bar.collapsed {
  height: 0;
  opacity: 0;
  border-bottom: none;
}

/* Toggle button */
.weather-bar-toggle {
  position: fixed;
  top: 56px;
  left: 6px;
  width: 18px;
  height: 18px;
  border-radius: 4px;
  background: rgba(255,255,255,0.06);
  border: 1px solid var(--border);
  color: var(--text-dim);
  font-size: 9px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 111;
  transition: all 0.2s;
  opacity: 0.5;
}

.weather-bar-toggle:hover {
  opacity: 1;
  background: rgba(255,255,255,0.12);
  color: var(--text);
}

.weather-bar.collapsed ~ .weather-bar-toggle {
  top: 28px;
}

/* Scrolling inner content */
.weather-bar-inner {
  display: flex;
  align-items: center;
  gap: 6px;
  white-space: nowrap;
  animation: weatherScroll 60s linear infinite;
  padding: 0 12px;
}

.weather-bar:hover .weather-bar-inner {
  animation-play-state: paused;
}

@keyframes weatherScroll {
  0% { transform: translateX(0); }
  100% { transform: translateX(-50%); }
}

/* Individual city entry */
.weather-city {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 11px;
  font-weight: 500;
  color: rgba(255,255,255,0.55);
}

.weather-city-flag {
  font-size: 12px;
  line-height: 1;
}

.weather-city-name {
  font-weight: 600;
  color: rgba(255,255,255,0.45);
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.5px;
}

.weather-city-temp {
  color: rgba(255,255,255,0.65);
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}

.weather-city-icon {
  font-size: 12px;
}

.weather-city-wind {
  font-size: 10px;
  color: rgba(255,255,255,0.4);
}

/* Renewable potential score badges */
.weather-potential {
  font-size: 10px;
  font-weight: 700;
  padding: 1px 6px;
  border-radius: 4px;
  letter-spacing: 0.3px;
}

.potential-high {
  color: #22c55e;
  background: rgba(34,197,94,0.12);
}

.potential-mid {
  color: #eab308;
  background: rgba(234,179,8,0.12);
}

.potential-low {
  color: #ef4444;
  background: rgba(239,68,68,0.12);
}

/* Separator between cities */
.weather-sep {
  color: rgba(255,255,255,0.08);
  margin: 0 4px;
  font-size: 10px;
}

/* Weather bar: no longer shifts chrome (2-tier chrome is always top: 0).
   Filter/dashboard panels stay below chrome at top: 92px (set elsewhere). */


/* ============================================================
   GENERATION MIX CHARTS
   Horizontal stacked bars showing country energy generation mix
   ============================================================ */

.gen-section {
  margin-bottom: 16px;
}

.gen-section-title {
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 1.5px;
  color: var(--text-dim);
  font-weight: 700;
  margin-bottom: 12px;
}

/* Individual country row */
.gen-country {
  margin-bottom: 10px;
}

.gen-country-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 4px;
}

.gen-country-label {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  font-weight: 600;
  color: var(--text);
}

.gen-country-flag {
  font-size: 14px;
  line-height: 1;
}

/* Renewable share badge */
.gen-renewable-badge {
  font-size: 10px;
  font-weight: 700;
  padding: 2px 8px;
  border-radius: var(--radius-chip);
  background: rgba(34,197,94,0.12);
  color: #22c55e;
  letter-spacing: 0.3px;
}

.gen-renewable-badge.low {
  background: rgba(239,68,68,0.12);
  color: #ef4444;
}

.gen-renewable-badge.mid {
  background: rgba(234,179,8,0.12);
  color: #eab308;
}

/* Stacked horizontal bar */
.gen-bar {
  width: 100%;
  height: 20px;
  border-radius: 4px;
  overflow: hidden;
  display: flex;
  background: rgba(255,255,255,0.03);
  border: 1px solid var(--border);
}

.gen-segment {
  height: 100%;
  position: relative;
  transition: flex-basis 0.6s ease, opacity 0.2s;
  cursor: pointer;
  min-width: 0;
}

.gen-segment:first-child { border-radius: 3px 0 0 3px; }
.gen-segment:last-child { border-radius: 0 3px 3px 0; }

.gen-segment:hover {
  opacity: 0.85;
  filter: brightness(1.2);
}

/* Fuel type colors */
.gen-segment.nuclear  { background: #3b82f6; }
.gen-segment.wind     { background: #14b8a6; }
.gen-segment.solar    { background: #eab308; }
.gen-segment.hydro    { background: #06b6d4; }
.gen-segment.gas      { background: #ef4444; }
.gen-segment.coal     { background: #78716c; }
.gen-segment.biomass  { background: #22c55e; }
.gen-segment.oil      { background: #f97316; }

/* Tooltip on hover */
.gen-segment .gen-tooltip {
  position: absolute;
  bottom: calc(100% + 6px);
  left: 50%;
  transform: translateX(-50%);
  background: rgba(10,10,20,0.95);
  backdrop-filter: blur(12px);
  border: 1px solid var(--border-light);
  border-radius: 6px;
  padding: 5px 9px;
  font-size: 10.5px;
  font-weight: 600;
  color: var(--text-bright);
  white-space: nowrap;
  pointer-events: none;
  opacity: 0;
  transition: opacity 0.15s;
  z-index: 10;
  box-shadow: 0 4px 14px rgba(0,0,0,0.4);
}

.gen-segment .gen-tooltip::after {
  content: '';
  position: absolute;
  top: 100%;
  left: 50%;
  transform: translateX(-50%);
  border: 4px solid transparent;
  border-top-color: rgba(10,10,20,0.95);
}

.gen-segment:hover .gen-tooltip {
  opacity: 1;
}

/* Generation legend */
.gen-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 10px;
}

.gen-legend-item {
  display: flex;
  align-items: center;
  gap: 4px;
  font-size: 10px;
  color: var(--text-dim);
  font-weight: 500;
}

.gen-legend-dot {
  width: 8px;
  height: 8px;
  border-radius: 2px;
  flex-shrink: 0;
}

.gen-legend-dot.nuclear  { background: #3b82f6; }
.gen-legend-dot.wind     { background: #14b8a6; }
.gen-legend-dot.solar    { background: #eab308; }
.gen-legend-dot.hydro    { background: #06b6d4; }
.gen-legend-dot.gas      { background: #ef4444; }
.gen-legend-dot.coal     { background: #78716c; }
.gen-legend-dot.biomass  { background: #22c55e; }
.gen-legend-dot.oil      { background: #f97316; }


/* ============================================================
   RESPONSIVE ADJUSTMENTS
   Mobile & tablet adaptations for new components
   ============================================================ */

/* ============================================================
   COMPREHENSIVE MOBILE RESPONSIVE — 768px
   Fixes stacking: KPI bar → Weather bar → Header → Content
   ============================================================ */
@media (max-width: 768px) {

  /* --- TOP BARS: stack correctly --- */
  /* KPI ticker stays at top:0, height 28px */
  .kpi-ticker {
    height: 24px;
    font-size: 9px;
  }
  .kpi-item { font-size: 9.5px; gap: 3px; }
  .kpi-label { font-size: 8px; }
  .kpi-price { font-size: 9.5px; }
  .kpi-change { font-size: 8.5px; }

  /* Weather bar: HIDE on mobile by default — too much stacking */
  .weather-bar {
    display: none !important;
  }
  .weather-bar-toggle {
    display: none !important;
  }

  /* Mobile filters: below header (tablet: tier1 52px + tier2 40px = 92px) */
  .mobile-filters {
    top: 92px !important;
  }
  @media (max-width: 639px) {
    .mobile-filters {
      top: 84px !important;
    }
  }

  /* Filter panel: below header area */
  .filter-panel {
    top: 80px;
    width: 100%;
  }

  /* --- ALERTS PANEL: full width bottom sheet on mobile --- */
  .alerts-panel {
    width: 100%;
    top: auto;
    bottom: 0;
    max-height: 75vh;
    border-radius: 20px 20px 0 0;
    border-left: none;
    border-top: 1px solid rgba(255,255,255,0.08);
    box-shadow: 0 -8px 40px rgba(0,0,0,0.6);
    transform: translateY(100%);
  }
  .alerts-panel.open {
    transform: translateY(0);
  }
  /* Drag handle for alerts bottom sheet */
  .alerts-panel::before {
    content: '';
    position: absolute;
    top: 8px;
    left: 50%;
    transform: translateX(-50%);
    width: 36px;
    height: 4px;
    background: rgba(255,255,255,0.3);
    border-radius: 2px;
    z-index: 10;
  }
  .alerts-list {
    max-height: calc(75vh - 120px);
    -webkit-overflow-scrolling: touch;
    overscroll-behavior: contain;
  }

  .alerts-toggle {
    bottom: 118px;
    right: 12px;
    width: 38px;
    height: 38px;
    font-size: 15px;
  }
  .alerts-badge {
    min-width: 18px;
    height: 18px;
    font-size: 10px;
  }

  /* --- DASHBOARD PANEL: full width on mobile --- */
  .dashboard-panel {
    width: calc(100% - 16px) !important;
    left: 8px !important;
    top: 80px;
    bottom: 120px;
    border-radius: var(--radius-card);
  }
  .dash-grid {
    grid-template-columns: 1fr 1fr;
    gap: 6px;
  }
  .energy-kpi-grid {
    grid-template-columns: 1fr 1fr;
    gap: 8px;
  }
  .dash-card-price {
    font-size: 16px;
  }

  /* --- GENERATION BARS: tap-friendly --- */
  .gen-bar {
    height: 24px;
  }
  .gen-country-label {
    font-size: 11px;
  }
  .gen-legend {
    gap: 6px;
  }
  .gen-legend-item {
    font-size: 9px;
  }

  /* --- BOTTOM BUTTONS: no overlap --- */
  /* scroll-top button moves left to not conflict with alerts toggle */
  #scrollTopBtn {
    right: 56px !important;
    bottom: 118px !important;
    width: 38px !important;
    height: 38px !important;
    font-size: 18px !important;
  }

  /* --- Info panel: confirmed bottom sheet --- */
  .info-panel.open ~ .alerts-toggle,
  body.detail-open .alerts-toggle,
  body:has(.info-panel.open) .alerts-toggle {
    display: none;
  }
}

/* ============================================================
   SMALL PHONE — 480px
   ============================================================ */
@media (max-width: 480px) {
  .kpi-ticker { height: 22px; }
  .kpi-item { font-size: 9px; }

  .wm-chrome-tier1 {
    padding: 0 10px;
    gap: 6px;
  }

  .alerts-panel {
    max-height: 85vh;
  }
  .alerts-panel-header h2 {
    font-size: 13px;
  }
  .alert-card {
    padding: 10px 12px 10px 16px;
  }
  .alert-card-title {
    font-size: 11.5px;
  }
  .alert-card-body {
    font-size: 10.5px;
  }
  .alert-filters {
    gap: 4px;
    padding: 8px 16px;
  }
  .alert-filter-btn {
    font-size: 10px;
    padding: 3px 8px;
  }

  .dashboard-panel {
    width: calc(100% - 8px) !important;
    left: 4px !important;
  }
  .dash-grid {
    grid-template-columns: 1fr;
  }
  .energy-kpi-grid {
    grid-template-columns: 1fr;
  }
  .dash-card-price {
    font-size: 18px;
  }

}

/* ============================================================
   TABLET — 1024px (catch mid-size issues)
   ============================================================ */
@media (max-width: 1024px) {
  .alerts-panel {
    width: 320px;
  }
  .dashboard-panel {
    width: 320px;
  }
  .info-panel {
    width: 340px;
  }
}

/* ============================================================
   UNIFIED SECTOR COLOR SYSTEM
   Pure color + soft variant (10% alpha) per sector.
   Reusable utilities: .sector-dot, .sector-badge, .sector-border
   Apply with sector class, e.g. <span class="sector-dot solar">
   ============================================================ */
:root {
  --sector-solar: #eab308;
  --sector-solar-soft: rgba(234, 179, 8, 0.10);
  --sector-wind: #14b8a6;
  --sector-wind-soft: rgba(20, 184, 166, 0.10);
  --sector-nuclear: #3b82f6;
  --sector-nuclear-soft: rgba(59, 130, 246, 0.10);
  --sector-oil_gas: #ef4444;
  --sector-oil_gas-soft: rgba(239, 68, 68, 0.10);
  --sector-hydro: #06b6d4;
  --sector-hydro-soft: rgba(6, 182, 212, 0.10);
  --sector-biomass: #22c55e;
  --sector-biomass-soft: rgba(34, 197, 94, 0.10);
  --sector-geothermal: #ec4899;
  --sector-geothermal-soft: rgba(236, 72, 153, 0.10);
  --sector-grid: #8b5cf6;
  --sector-grid-soft: rgba(139, 92, 246, 0.10);
  --sector-coal: #78716c;
  --sector-coal-soft: rgba(120, 113, 108, 0.10);
}

[data-theme='light'] {
  --sector-solar-soft: rgba(234, 179, 8, 0.14);
  --sector-wind-soft: rgba(20, 184, 166, 0.14);
  --sector-nuclear-soft: rgba(59, 130, 246, 0.14);
  --sector-oil_gas-soft: rgba(239, 68, 68, 0.14);
  --sector-hydro-soft: rgba(6, 182, 212, 0.14);
  --sector-biomass-soft: rgba(34, 197, 94, 0.14);
  --sector-geothermal-soft: rgba(236, 72, 153, 0.14);
  --sector-grid-soft: rgba(139, 92, 246, 0.14);
  --sector-coal-soft: rgba(120, 113, 108, 0.14);
}

/* Dot: small colored circle for legends, list items, markers */
.sector-dot {
  display: inline-block;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  flex-shrink: 0;
}
.sector-dot.solar { background: var(--sector-solar); }
.sector-dot.wind { background: var(--sector-wind); }
.sector-dot.nuclear { background: var(--sector-nuclear); }
.sector-dot.oil_gas { background: var(--sector-oil_gas); }
.sector-dot.hydro { background: var(--sector-hydro); }
.sector-dot.biomass { background: var(--sector-biomass); }
.sector-dot.geothermal { background: var(--sector-geothermal); }
.sector-dot.grid { background: var(--sector-grid); }
.sector-dot.coal { background: var(--sector-coal); }

/* Badge: pill-style label with soft background + bold colored text */
.sector-badge {
  display: inline-block;
  padding: 2px 8px;
  border-radius: var(--radius-chip);
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  line-height: 1.4;
  white-space: nowrap;
}
.sector-badge.solar { background: var(--sector-solar-soft); color: var(--sector-solar); border: 1px solid var(--sector-solar-soft); }
.sector-badge.wind { background: var(--sector-wind-soft); color: var(--sector-wind); border: 1px solid var(--sector-wind-soft); }
.sector-badge.nuclear { background: var(--sector-nuclear-soft); color: var(--sector-nuclear); border: 1px solid var(--sector-nuclear-soft); }
.sector-badge.oil_gas { background: var(--sector-oil_gas-soft); color: var(--sector-oil_gas); border: 1px solid var(--sector-oil_gas-soft); }
.sector-badge.hydro { background: var(--sector-hydro-soft); color: var(--sector-hydro); border: 1px solid var(--sector-hydro-soft); }
.sector-badge.biomass { background: var(--sector-biomass-soft); color: var(--sector-biomass); border: 1px solid var(--sector-biomass-soft); }
.sector-badge.geothermal { background: var(--sector-geothermal-soft); color: var(--sector-geothermal); border: 1px solid var(--sector-geothermal-soft); }
.sector-badge.grid { background: var(--sector-grid-soft); color: var(--sector-grid); border: 1px solid var(--sector-grid-soft); }
.sector-badge.coal { background: var(--sector-coal-soft); color: var(--sector-coal); border: 1px solid var(--sector-coal-soft); }

/* Border: 1px full border with tinted background for cards, table rows, list items */
.sector-border.solar { border: 1px solid var(--sector-solar-soft); background: var(--sector-solar-soft); }
.sector-border.wind { border: 1px solid var(--sector-wind-soft); background: var(--sector-wind-soft); }
.sector-border.nuclear { border: 1px solid var(--sector-nuclear-soft); background: var(--sector-nuclear-soft); }
.sector-border.oil_gas { border: 1px solid var(--sector-oil_gas-soft); background: var(--sector-oil_gas-soft); }
.sector-border.hydro { border: 1px solid var(--sector-hydro-soft); background: var(--sector-hydro-soft); }
.sector-border.biomass { border: 1px solid var(--sector-biomass-soft); background: var(--sector-biomass-soft); }
.sector-border.geothermal { border: 1px solid var(--sector-geothermal-soft); background: var(--sector-geothermal-soft); }
.sector-border.grid { border: 1px solid var(--sector-grid-soft); background: var(--sector-grid-soft); }
.sector-border.coal { border: 1px solid var(--sector-coal-soft); background: var(--sector-coal-soft); }

/* ============================================================
   EDITORIAL TYPOGRAPHY (Republic-inspired)
   Serif headlines via Newsreader, sans-serif UI via Inter.
   ============================================================ */
:root {
  --font-sans: 'Manrope', 'Inter', system-ui, -apple-system, sans-serif;
  --font-serif: 'Newsreader', Georgia, serif;
}

.info-name,
.splash-title,
.lp-alert-title,
.lp-news-title,
.info-panel h1,
.info-panel h2,
.info-panel h3 {
  font-family: var(--font-serif);
  letter-spacing: -0.02em;
  line-height: 1.25;
  font-feature-settings: "kern", "liga", "onum";
}


/* ═══════════════════════════════════════════════════════════════
   LIGHT THEME — Republic-inspired editorial parchment
   Activated via <html data-theme="light">
   ═══════════════════════════════════════════════════════════════ */

body {
  transition: background-color 0.4s ease, color 0.4s ease;
}

[data-theme='light'] {
  /* ─── Base surfaces ─── */
  --bg: #eceae4;
  --bg-elevated: #f4f2ec;
  --bg-card: rgba(255,255,255,0.88);
  --bg-panel: rgba(255,255,255,0.92);
  --bg-glass: rgba(255,255,255,0.85);
  --bg-glass-light: rgba(255,255,255,0.65);

  /* Warm stone greys — inverted */
  --grey-1: #1c1917;
  --grey-2: #383633;
  --grey-3: #57534e;
  --grey-4: #98938e;
  --grey-5: #dddbd5;
  --grey-6: #f4f2ef;

  /* Text */
  --text: #1a1a2e;
  --text-dim: #5a5a7a;
  --text-bright: #0a0a14;
  --text-muted: #8a8aa0;

  /* Borders — warm subtle */
  --border: rgba(0,0,0,0.08);
  --border-light: rgba(0,0,0,0.12);
  --border-strong: rgba(0,0,0,0.22);

  /* Brand — coral-warm */
  --blue: #2a4558;
  --orange: #00f0ff;
  --orange-soft: rgba(0,240,255,0.10);
  --orange-glow: rgba(0,240,255,0.30);
  --brand: #00f0ff;

  /* Category soft tints — slightly stronger on light bg */
  --cat-solar-soft: rgba(234,179,8,0.14);
  --cat-wind-soft: rgba(20,184,166,0.14);
  --cat-nuclear-soft: rgba(59,130,246,0.14);
  --cat-oilgas-soft: rgba(239,68,68,0.14);
  --cat-hydro-soft: rgba(6,182,212,0.14);
  --cat-biomass-soft: rgba(34,197,94,0.14);
  --cat-geo-soft: rgba(236,72,153,0.14);
  --cat-grid-soft: rgba(139,92,246,0.14);
}

[data-theme='light'] body {
  background: #eceae4;
  color: #1a1a2e;
}

/* ─── Header glass ─── */
[data-theme='light'] header,
[data-theme='light'] .site-header,
[data-theme='light'] .app-header,
[data-theme='light'] #siteHeader {
  background: rgba(255,255,255,0.78) !important;
  backdrop-filter: blur(28px) saturate(1.5);
  -webkit-backdrop-filter: blur(28px) saturate(1.5);
  border-bottom: 1px solid rgba(0,0,0,0.08);
  box-shadow: 0 1px 0 rgba(255,255,255,0.6) inset, 0 8px 24px rgba(20,20,40,0.04);
}

[data-theme='light'] header a,
[data-theme='light'] header nav a,
[data-theme='light'] .site-header a {
  color: #1a1a2e;
}

/* ─── Glass panels ─── */
[data-theme='light'] .info-panel,
[data-theme='light'] .filter-panel,
[data-theme='light'] .dashboard-panel,
[data-theme='light'] #alertsPanel,
[data-theme='light'] #leftPanel {
  background: rgba(255,255,255,0.82) !important;
  backdrop-filter: blur(28px) saturate(1.5);
  -webkit-backdrop-filter: blur(28px) saturate(1.5);
  border: 1px solid rgba(0,0,0,0.08);
  box-shadow:
    0 1px 0 rgba(255,255,255,0.9) inset,
    0 20px 60px rgba(30,25,20,0.08),
    0 4px 16px rgba(30,25,20,0.04);
  color: #1a1a2e;
}

[data-theme='light'] .info-panel *,
[data-theme='light'] .filter-panel *,
[data-theme='light'] .dashboard-panel *,
[data-theme='light'] #alertsPanel *,
[data-theme='light'] #leftPanel * {
  border-color: rgba(0,0,0,0.08);
}

[data-theme='light'] .info-panel h1,
[data-theme='light'] .info-panel h2,
[data-theme='light'] .info-panel h3,
[data-theme='light'] .info-panel h4,
[data-theme='light'] .filter-panel h1,
[data-theme='light'] .filter-panel h2,
[data-theme='light'] .filter-panel h3,
[data-theme='light'] .dashboard-panel h1,
[data-theme='light'] .dashboard-panel h2,
[data-theme='light'] .dashboard-panel h3,
[data-theme='light'] #leftPanel h1,
[data-theme='light'] #leftPanel h2,
[data-theme='light'] #leftPanel h3 {
  color: #0a0a14;
}

/* ─── KPI ticker ─── */
[data-theme='light'] .kpi-ticker,
[data-theme='light'] #kpiTicker {
  background: rgba(255,255,255,0.72) !important;
  backdrop-filter: blur(24px) saturate(1.5);
  -webkit-backdrop-filter: blur(24px) saturate(1.5);
  border: 1px solid rgba(0,0,0,0.08);
  color: #1a1a2e;
  box-shadow: 0 4px 20px rgba(30,25,20,0.06);
}

[data-theme='light'] .kpi-ticker .kpi-label,
[data-theme='light'] .kpi-ticker .label {
  color: #5a5a7a;
}

[data-theme='light'] .kpi-ticker .kpi-value,
[data-theme='light'] .kpi-ticker .value {
  color: #0a0a14;
}

[data-theme='light'] .kpi-card,
[data-theme='light'] .kpi-error {
  color: var(--ink, #0a0a14);
  background:
    linear-gradient(145deg, var(--bg-soft, rgba(255,255,255,0.9)), rgba(255,255,255,0.68)),
    rgba(255,255,255,0.76);
  border-color: rgba(0,0,0,0.08);
  box-shadow: 0 12px 34px rgba(30,25,20,0.08), 0 1px 0 rgba(255,255,255,0.85) inset;
}

[data-theme='light'] .kpi-card:hover {
  box-shadow: 0 16px 42px rgba(30,25,20,0.12), 0 1px 0 rgba(255,255,255,0.9) inset;
}

[data-theme='light'] .energy-kpi .kpi-icon,
[data-theme='light'] .kpi-trend {
  background: rgba(10,10,20,0.05);
}

[data-theme='light'] .kpi-trend.flat {
  color: rgba(10,10,20,0.5);
}

[data-theme='light'] .kpi-retry {
  color: var(--ink, #0a0a14);
}

/* ─── Feed cards in left panel ─── */
[data-theme='light'] #leftPanel .feed-card,
[data-theme='light'] #leftPanel .news-card,
[data-theme='light'] #leftPanel article,
[data-theme='light'] .feed-item,
[data-theme='light'] .news-item {
  background: rgba(255,255,255,0.75);
  border: 1px solid rgba(0,0,0,0.08);
  color: #1a1a2e;
  box-shadow: 0 2px 12px rgba(30,25,20,0.04);
}

[data-theme='light'] #leftPanel .feed-card:hover,
[data-theme='light'] #leftPanel .news-card:hover,
[data-theme='light'] .feed-item:hover,
[data-theme='light'] .news-item:hover {
  background: rgba(255,255,255,0.92);
  border-color: rgba(0,240,255,0.30);
  box-shadow: 0 8px 28px rgba(30,25,20,0.08);
}

[data-theme='light'] #leftPanel .feed-card h3,
[data-theme='light'] #leftPanel .feed-card h4,
[data-theme='light'] .feed-item .title,
[data-theme='light'] .news-item .title {
  color: #0a0a14;
}

[data-theme='light'] #leftPanel .feed-card p,
[data-theme='light'] #leftPanel .feed-card .meta,
[data-theme='light'] .feed-item .meta,
[data-theme='light'] .news-item .meta {
  color: #5a5a7a;
}

/* ─── Search box inputs ─── */
[data-theme='light'] input[type='text'],
[data-theme='light'] input[type='search'],
[data-theme='light'] input[type='email'],
[data-theme='light'] textarea,
[data-theme='light'] select,
[data-theme='light'] .search-box,
[data-theme='light'] .search-input,
[data-theme='light'] #searchInput {
  background: rgba(255,255,255,0.92) !important;
  border: 1px solid rgba(0,0,0,0.12);
  color: #1a1a2e;
}

[data-theme='light'] input::placeholder,
[data-theme='light'] textarea::placeholder {
  color: #8a8aa0;
}

[data-theme='light'] input:focus,
[data-theme='light'] textarea:focus,
[data-theme='light'] select:focus {
  border-color: rgba(0,240,255,0.45);
  box-shadow: 0 0 0 3px rgba(0,240,255,0.12);
}

/* ─── Buttons ─── */
[data-theme='light'] button,
[data-theme='light'] .btn {
  color: #1a1a2e;
}

[data-theme='light'] .btn-primary,
[data-theme='light'] button.primary {
  background: #00b8c9;
  color: #ffffff;
  border: 1px solid rgba(0,240,255,0.45);
}

[data-theme='light'] .btn-primary:hover,
[data-theme='light'] button.primary:hover {
  background: #ff6f3c;
}

/* ─── Atmospheric overlays: soften on light ─── */
[data-theme='light'] .scanlines,
[data-theme='light'] #scanlines,
[data-theme='light'] .vignette,
[data-theme='light'] #vignette,
[data-theme='light'] .crt-overlay {
  opacity: 0.08 !important;
  mix-blend-mode: multiply;
}

[data-theme='light'] .noise,
[data-theme='light'] #noise {
  opacity: 0.04 !important;
}

/* ─── Globe container background ─── */
[data-theme='light'] #globeViz,
[data-theme='light'] #globe-container,
[data-theme='light'] .globe-container {
  background: radial-gradient(ellipse at center, #f4f2ec 0%, #eceae4 60%, #dcd9d0 100%);
}

/* ─── Markers & tooltips ─── */
[data-theme='light'] .marker-label,
[data-theme='light'] .globe-tooltip,
[data-theme='light'] .tooltip,
[data-theme='light'] .leaflet-tooltip {
  background: rgba(255,255,255,0.95) !important;
  color: #1a1a2e !important;
  border: 1px solid rgba(0,0,0,0.12);
  box-shadow: 0 8px 24px rgba(30,25,20,0.15);
  backdrop-filter: blur(12px);
}

[data-theme='light'] .marker-label *,
[data-theme='light'] .globe-tooltip *,
[data-theme='light'] .tooltip * {
  color: #1a1a2e;
}

/* ─── Links ─── */
[data-theme='light'] a {
  color: #00b8c9;
}

[data-theme='light'] a:hover {
  color: #e85a2a;
}

/* ─── Scrollbar ─── */
[data-theme='light'] ::-webkit-scrollbar-track {
  background: rgba(0,0,0,0.04);
}

[data-theme='light'] ::-webkit-scrollbar-thumb {
  background: rgba(0,0,0,0.18);
  border-radius: 8px;
}

[data-theme='light'] ::-webkit-scrollbar-thumb:hover {
  background: rgba(0,0,0,0.28);
}

/* ─── Dividers & horizontal rules ─── */
[data-theme='light'] hr {
  border-color: rgba(0,0,0,0.08);
}

/* ─── Badges & tags ─── */
[data-theme='light'] .badge,
[data-theme='light'] .tag,
[data-theme='light'] .chip {
  background: rgba(0,0,0,0.05);
  color: #1a1a2e;
  border: 1px solid rgba(0,0,0,0.08);
}

/* ═══ Enriched company panel v2 ═══ */
.info-logo-wrap {
  width: 100%;
  max-height: 72px;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  margin-bottom: 12px;
  padding: 10px 14px;
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.06);
  border-radius: var(--radius-chip);
}
.info-logo {
  max-height: 52px;
  max-width: 180px;
  object-fit: contain;
  filter: drop-shadow(0 2px 8px rgba(0, 0, 0, 0.3));
}
[data-theme='light'] .info-logo-wrap {
  background: rgba(0, 0, 0, 0.025);
  border-color: rgba(0, 0, 0, 0.06);
}

.info-listed-badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-left: 10px;
  padding: 3px 9px;
  background: linear-gradient(135deg, rgba(16, 185, 129, 0.18), rgba(16, 185, 129, 0.08));
  border: 1px solid rgba(16, 185, 129, 0.4);
  color: #10b981;
  border-radius: 6px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  vertical-align: middle;
}
.info-listed-dot {
  width: 6px; height: 6px;
  border-radius: 50%;
  background: #10b981;
  box-shadow: 0 0 6px #10b981;
  animation: pulseDot 2s ease-in-out infinite;
}
@keyframes pulseDot {
  0%, 100% { opacity: 1; transform: scale(1); }
  50% { opacity: 0.55; transform: scale(0.85); }
}

.info-socials {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin: 14px 0 4px 0;
}
.info-social-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 10px;
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 6px;
  font-size: 11px;
  font-weight: 500;
  color: var(--text-muted, #9ca3af);
  text-decoration: none;
  transition: all 0.15s;
}
.info-social-chip:hover {
  background: rgba(245, 158, 11, 0.1);
  border-color: rgba(245, 158, 11, 0.4);
  color: var(--orange, #f59e0b);
}
.info-social-icon {
  font-size: 11px;
  font-weight: 700;
  opacity: 0.8;
}
[data-theme='light'] .info-social-chip {
  background: rgba(0, 0, 0, 0.03);
  border-color: rgba(0, 0, 0, 0.08);
  color: #4b5563;
}

.info-news-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.info-news-item {
  display: block;
  padding: 10px 12px;
  background: rgba(255, 102, 0, 0.05);
  border: 1px solid rgba(255, 102, 0, 0.15);
  border-radius: 6px;
  text-decoration: none;
  color: inherit;
  transition: all 0.15s;
}
.info-news-item:hover {
  background: rgba(245, 158, 11, 0.08);
  border-left-color: #fbbf24;
  transform: translateX(2px);
}
.info-news-title {
  font-size: 13px;
  font-weight: 600;
  line-height: 1.35;
  color: #e5e7eb;
  margin-bottom: 4px;
}
.info-news-meta {
  font-size: 10px;
  color: #9ca3af;
  text-transform: uppercase;
  letter-spacing: 0.03em;
}
[data-theme='light'] .info-news-item {
  background: rgba(0, 0, 0, 0.025);
  border-color: rgba(0, 0, 0, 0.06);
}
[data-theme='light'] .info-news-title {
  color: #1a1a2e;
}

/* ═══ Hot companies (news this week) ═══ */
.mk--hot .mk__ring {
  border-color: #ef4444;
  box-shadow: 0 0 12px rgba(239, 68, 68, 0.6), 0 0 24px rgba(239, 68, 68, 0.3);
  animation: hotPulse 1.8s ease-in-out infinite;
}
@keyframes hotPulse {
  0%, 100% { transform: scale(1); opacity: 0.9; }
  50% { transform: scale(1.25); opacity: 0.45; }
}
.mk__news-badge {
  position: absolute;
  top: -6px;
  right: -6px;
  min-width: 16px;
  height: 16px;
  padding: 0 4px;
  background: #ef4444;
  color: #fff;
  border-radius: 8px;
  font-size: 9px;
  font-weight: 800;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 1.5px solid #fff;
  box-shadow: 0 2px 6px rgba(0,0,0,0.4), 0 0 8px rgba(239, 68, 68, 0.7);
  pointer-events: none;
  z-index: 3;
}
.mk--listed .mk__body::after {
  content: "";
  position: absolute;
  bottom: -2px;
  right: -2px;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: #10b981;
  border: 1.5px solid #0a0e14;
  box-shadow: 0 0 4px rgba(16, 185, 129, 0.8);
  pointer-events: none;
  z-index: 2;
}
[data-theme='light'] .mk--listed .mk__body::after {
  border-color: #fff;
}

/* ═══ News ticker bar ═══ */
.news-ticker-bar {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  height: 38px;
  background: linear-gradient(180deg, rgba(10, 14, 20, 0.88), rgba(10, 14, 20, 0.96));
  backdrop-filter: blur(12px);
  border-top: 1px solid rgba(255, 255, 255, 0.08);
  display: flex;
  align-items: center;
  z-index: 80;
  overflow: hidden;
  font-family: -apple-system, BlinkMacSystemFont, 'Inter', sans-serif;
}
.news-ticker-label {
  flex-shrink: 0;
  padding: 0 14px;
  height: 100%;
  display: flex;
  align-items: center;
  background: linear-gradient(90deg, #00f0ff, #0088aa);
  color: #fff;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0.08em;
  border-right: 1px solid rgba(255, 255, 255, 0.1);
}
.news-ticker-viewport {
  flex: 1;
  overflow: hidden;
  position: relative;
  mask-image: linear-gradient(90deg, transparent 0, #000 24px, #000 calc(100% - 24px), transparent 100%);
  -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 24px, #000 calc(100% - 24px), transparent 100%);
}
.news-ticker-track {
  display: inline-flex;
  white-space: nowrap;
  animation: tickerScroll 120s linear infinite;
  will-change: transform;
}
.news-ticker-track:hover { animation-play-state: paused; }
@keyframes tickerScroll {
  0%   { transform: translateX(0); }
  100% { transform: translateX(-50%); }
}
.nt-item {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 0 22px;
  height: 100%;
  color: #e5e7eb;
  text-decoration: none;
  font-size: 12.5px;
  border-right: 1px solid rgba(255, 255, 255, 0.06);
}
.nt-item:hover { color: #fbbf24; }
.nt-freshness {
  display: inline-flex;
  align-items: center;
  height: 22px;
  margin: 8px 14px 8px 22px;
  padding: 0 9px;
  border-radius: 999px;
  border: 1px solid rgba(96, 165, 250, 0.35);
  background: rgba(59, 130, 246, 0.12);
  color: #bfdbfe;
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.03em;
  text-transform: uppercase;
}
.nt-src {
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: #f59e0b;
  background: rgba(245, 158, 11, 0.1);
  padding: 2px 7px;
  border-radius: 3px;
  border: 1px solid rgba(245, 158, 11, 0.3);
  flex-shrink: 0;
}
.nt-title {
  font-weight: 500;
  max-width: 520px;
  overflow: hidden;
  text-overflow: ellipsis;
}
.nt-time {
  font-size: 10px;
  color: #6b7280;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}
[data-theme='light'] .news-ticker-bar {
  background: linear-gradient(180deg, rgba(255,255,255,0.92), rgba(250,250,250,0.98));
  border-top-color: rgba(0,0,0,0.08);
}
[data-theme='light'] .nt-item { color: #1a1a2e; }
[data-theme='light'] .nt-freshness {
  background: rgba(37, 99, 235, 0.08);
  border-color: rgba(37, 99, 235, 0.22);
  color: #1d4ed8;
}
[data-theme='light'] .nt-time { color: #6b7280; }

/* Shift globe a little above ticker on mobile so it doesn't overlap */
@media (max-width: 768px) {
  .news-ticker-bar { height: 32px; }
  .nt-title { max-width: 240px; }
  .news-ticker-label { padding: 0 10px; font-size: 10px; }
}

/* ═══ Region zoom bar (top center, under the main header) ═══ */
.region-bar {
  position: fixed;
  top: 100px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  flex-direction: row;
  gap: 2px;
  z-index: 85;
  background: rgba(10, 14, 20, 0.7);
  backdrop-filter: blur(10px);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: var(--radius-pill);
  padding: 2px;
  overflow-x: auto;
  scrollbar-width: none;
  transition: top 0.35s cubic-bezier(0.4, 0, 0.2, 1),
              left 0.35s cubic-bezier(0.4, 0, 0.2, 1);
}
.region-bar::-webkit-scrollbar { display: none; }
.region-btn {
  background: transparent;
  border: 1px solid transparent;
  color: #d1d5db;
  padding: 3px 10px;
  border-radius: var(--radius-pill);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.03em;
  cursor: pointer;
  text-align: center;
  white-space: nowrap;
  flex-shrink: 0;
  transition: all 0.15s;
  font-family: inherit;
}
.region-btn:hover {
  background: rgba(0, 240, 255, 0.12);
  color: #00f0ff;
  border-color: rgba(0, 240, 255, 0.3);
}
.region-btn.active {
  background: rgba(0, 240, 255, 0.18);
  color: #00f0ff;
  border-color: rgba(0, 240, 255, 0.5);
}
[data-theme='light'] .region-bar {
  background: rgba(255,255,255,0.92);
  border-color: rgba(0,0,0,0.08);
}
[data-theme='light'] .region-btn { color: #1a1a2e; }

.country-tip {
  background: rgba(10,14,20,0.92);
  color: #fff;
  padding: 8px 12px;
  border-radius: 6px;
  border: 1px solid rgba(0,240,255,0.35);
  font-size: 12px;
  font-family: -apple-system, BlinkMacSystemFont, 'Inter', sans-serif;
  box-shadow: 0 4px 16px rgba(0,0,0,0.5);
}
.country-tip strong { color: #00f0ff; font-size: 13px; }

@media (max-width: 768px) {
  .region-bar { display: none !important; }
}

/* ═══ Utility cluster: chrome-toggle · lang · radar CTA (inside tier2) ═══ */
.wm-utility-cluster {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-left: auto;
  flex-shrink: 0;
}
.wm-utility-cluster #wmThemeToggle {
  position: static;
  top: auto;
  right: auto;
}

/* ═══ Push existing bottom-fixed elements above the news ticker (38px + 6px gap) ═══ */
body.has-ticker .legend            { bottom: 64px !important; }
body.has-ticker .time-widget       { bottom: 60px !important; }
body.has-ticker .nav-arrows        { bottom: 60px !important; }
body.has-ticker .alerts-toggle     { bottom: 124px !important; }
@media (max-width: 768px) {
  body.has-ticker .legend            { bottom: 80px !important; }  /* above mobile region bar */
  body.has-ticker .time-widget       { bottom: 92px !important; }
  body.has-ticker .nav-arrows        { bottom: 92px !important; }
  body.has-ticker .alerts-toggle     { bottom: 144px !important; }
}

.globe-overview-btn {
  position: fixed;
  bottom: 154px;
  left: 12px;
  background: rgba(15,12,30,0.92);
  color: #fff;
  border: 1px solid rgba(0,240,255,0.25);
  border-radius: 999px;
  padding: 8px 14px;
  font-size: 12px;
  font-weight: 700;
  z-index: 100;
  cursor: pointer;
  backdrop-filter: blur(12px);
  box-shadow: 0 6px 18px rgba(0,0,0,0.35);
}
.globe-overview-btn:hover {
  border-color: rgba(0,240,255,0.5);
}
@media (min-width: 769px) {
  .globe-overview-btn {
    bottom: 116px;
  }
}

.globe-zoom-controls {
  position: fixed;
  right: 16px;
  bottom: 132px;
  display: flex;
  flex-direction: column;
  gap: 8px;
  z-index: 520;
}

.globe-zoom-btn {
  width: 42px;
  height: 42px;
  border: 1px solid rgba(0, 240, 255, 0.28);
  border-radius: 12px;
  background: rgba(15, 12, 30, 0.9);
  color: #f8fafc;
  font-size: 24px;
  line-height: 1;
  font-weight: 700;
  cursor: pointer;
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.35);
  transition: transform 0.18s ease, border-color 0.18s ease, opacity 0.18s ease, background 0.18s ease;
}

.globe-zoom-btn:hover:not(:disabled) {
  transform: translateY(-1px);
  border-color: rgba(0, 240, 255, 0.5);
  background: rgba(18, 16, 36, 0.96);
}

.globe-zoom-btn:disabled {
  opacity: 0.45;
  cursor: not-allowed;
  border-color: rgba(255, 255, 255, 0.14);
}

/* ═══ Cluster markers: add "entreprises" label to reduce ambiguity ═══ */
.mk--cluster .mk__body {
  font-weight: 800;
  font-size: 14px;
}
.mk--cluster .mk__body::after {
  content: ' cos';
  font-size: 8px;
  font-weight: 600;
  opacity: 0.7;
  margin-left: 2px;
}

/* ═══ Compact chrome mode: hide KPI + weather bar, free top 56px ═══ */
body.chrome-compact .kpi-ticker,
body.chrome-compact .weather-bar,
body.chrome-compact #weatherEnergyBar,
body.chrome-compact .weather-bar-toggle {
  display: none !important;
}
body.chrome-compact .region-bar {
  top: 100px !important;
}
body.chrome-compact .filter-panel,
body.chrome-compact .dashboard-panel,
body.chrome-compact .info-panel {
  top: 92px !important;
}

/* ═══ Region bar collision fix: drop below utility cluster on narrow viewports ═══ */
@media (max-width: 1320px) {
  .region-bar,
  body.chrome-compact .region-bar {
    top: 110px !important;
  }
}

/* ═══ Datafeed open: region bar drops below the panel header ═══ */
@media (min-width: 769px) {
  body:not(.lp-is-collapsed) .region-bar {
    top: 148px !important;
    left: calc(50% + 10vw);
  }
  body:not(.lp-is-collapsed).chrome-compact .region-bar {
    top: 148px !important;
    left: calc(50% + 10vw);
  }
}

/* The toggle button — lives inside .wm-utility-cluster */
#chromeToggle {
  background: rgba(20,18,28,0.88);
  backdrop-filter: blur(12px);
  border: 1px solid rgba(255,255,255,0.12);
  color: #d1d5db;
  padding: 5px 11px;
  border-radius: var(--radius-pill);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  cursor: pointer;
  font-family: inherit;
  transition: all 0.15s;
  box-shadow: 0 4px 12px rgba(0,0,0,0.3);
}
#chromeToggle:hover {
  background: rgba(30,26,40,0.95);
  color: #00f0ff;
  border-color: rgba(0,240,255,0.35);
}
.wm-account-link,
.wm-logout-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: rgba(20,18,28,0.88);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border: 1px solid rgba(255,255,255,0.12);
  color: #d1d5db;
  padding: 5px 11px;
  border-radius: var(--radius-pill);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  text-decoration: none;
  white-space: nowrap;
  box-shadow: 0 4px 12px rgba(0,0,0,0.3);
  transition: all 0.15s;
}
.wm-account-link {
  color: #f3f4f6;
  border-color: rgba(0,240,255,0.24);
}
.wm-account-link:hover,
.wm-account-link:focus-visible,
.wm-logout-link:hover,
.wm-logout-link:focus-visible {
  background: rgba(30,26,40,0.95);
  color: #00f0ff;
  border-color: rgba(0,240,255,0.35);
}
#chromeToggle .ct-dot {
  display: inline-block;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: #10b981;
  margin-right: 6px;
  box-shadow: 0 0 6px #10b981;
  animation: pulseDot 2s ease-in-out infinite;
}
body.chrome-compact #chromeToggle .ct-dot { background: #6b7280; box-shadow: none; animation: none; }
@media (max-width: 768px) {
  #chromeToggle { font-size: 9px; padding: 4px 8px; }
  .wm-account-link,
  .wm-logout-link { font-size: 9px; padding: 4px 8px; }
}

/* ═══ Mobile point detail readability hotfix ═══
   Root cause: compact chrome mode and the desktop right-panel rules can leak
   `top/right/bottom` constraints into the mobile bottom sheet. Force a real
   viewport-width sheet, keep content scrollable, and remove competing bottom UI
   while a point/project/cluster detail is open. */
@media (max-width: 768px) {
  body.chrome-compact .info-panel,
  .info-panel {
    left: 0 !important;
    right: 0 !important;
    top: auto !important;
    bottom: 0 !important;
    width: 100vw !important;
    height: auto !important;
    max-height: min(78vh, calc(100dvh - 132px)) !important;
    border-left: none !important;
    border-right: none !important;
    border-bottom: none !important;
    border-radius: 22px 22px 0 0 !important;
    transform: translate3d(0, 100%, 0) !important;
    z-index: 140 !important;
    overflow: hidden !important;
    touch-action: pan-y !important;
    background: linear-gradient(180deg, rgba(18, 14, 24, 0.99), rgba(10, 9, 16, 0.99)) !important;
    border-top: 1px solid rgba(255,255,255,0.16) !important;
    box-shadow: 0 -18px 60px rgba(0,0,0,0.72), 0 -1px 0 rgba(255,255,255,0.08) inset !important;
  }

  body.chrome-compact .info-panel.open,
  .info-panel.open {
    transform: translate3d(0, 0, 0) !important;
  }

  .info-panel #infoPanelContent {
    max-height: min(78vh, calc(100dvh - 132px)) !important;
    overflow-y: auto !important;
    -webkit-overflow-scrolling: touch !important;
    overscroll-behavior: contain !important;
    padding-top: 22px !important;
    padding-bottom: calc(18px + env(safe-area-inset-bottom)) !important;
  }

  .info-panel .info-header {
    position: sticky !important;
    top: 0 !important;
    z-index: 4 !important;
    padding: 18px 18px 12px !important;
    gap: 6px 10px !important;
    background: linear-gradient(180deg, rgba(18,14,24,0.99), rgba(18,14,24,0.94)) !important;
    border-bottom: 1px solid rgba(255,255,255,0.08) !important;
  }

  .info-panel .info-sector-badge {
    font-size: 10px !important;
    line-height: 1.2 !important;
    padding: 5px 9px !important;
    margin-bottom: 2px !important;
    max-width: calc(100vw - 78px) !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
  }

  .info-panel .info-name {
    width: 100% !important;
    font-size: clamp(20px, 5.6vw, 25px) !important;
    line-height: 1.12 !important;
    letter-spacing: -0.03em !important;
    margin: 0 !important;
    padding-right: 42px !important;
  }

  .info-panel .info-location {
    width: 100% !important;
    font-size: 13px !important;
    line-height: 1.35 !important;
    color: rgba(255,255,255,0.72) !important;
  }

  .info-panel .info-actions-row,
  .info-panel .info-socials {
    width: 100% !important;
    display: flex !important;
    gap: 8px !important;
    overflow-x: auto !important;
    padding-bottom: 2px !important;
    scrollbar-width: none !important;
  }
  .info-panel .info-actions-row::-webkit-scrollbar,
  .info-panel .info-socials::-webkit-scrollbar { display: none !important; }

  .info-panel .info-body {
    padding: 12px 18px 18px !important;
  }

  .info-panel .info-description {
    color: rgba(255,255,255,0.88) !important;
    font-size: 14px !important;
    line-height: 1.58 !important;
    margin-bottom: 14px !important;
  }

  .info-panel .info-grid {
    grid-template-columns: 1fr !important;
    gap: 8px !important;
    margin-bottom: 14px !important;
  }

  .info-panel .info-metric {
    padding: 12px 14px !important;
    border-radius: 12px !important;
    background: rgba(255,255,255,0.055) !important;
  }
  .info-panel .info-metric-label { font-size: 10px !important; }
  .info-panel .info-metric-value { font-size: 15px !important; line-height: 1.25 !important; }

  .info-panel .subsidiary-item,
  .info-panel .project-item-panel,
  .info-panel .info-news-item {
    min-height: 44px !important;
    padding: 10px 12px !important;
  }

  .info-panel .info-link {
    width: 100% !important;
    justify-content: center !important;
    padding: 12px 14px !important;
    font-size: 13px !important;
    line-height: 1.25 !important;
    text-align: center !important;
  }

  .info-close {
    position: fixed !important;
    top: 10px !important;
    right: 12px !important;
    width: 36px !important;
    height: 36px !important;
    z-index: 146 !important;
    border-radius: var(--radius-pill) !important;
    background: rgba(255,255,255,0.14) !important;
    color: #fff !important;
  }

  /* ═══ Consolidation v3: selector dedup via :is() (no visual change) ═══ */
  :is(body.detail-open, body:has(.info-panel.open)) #newsTickerBar,
  :is(body.detail-open, body:has(.info-panel.open)) .news-ticker-bar,
  :is(body.detail-open, body:has(.info-panel.open)) .legend,
  :is(body.detail-open, body:has(.info-panel.open)) .alerts-toggle,
  :is(body.detail-open, body:has(.info-panel.open)) .country-dropdown,
  :is(body.detail-open, body:has(.info-panel.open)) .vt-dropdown,
  :is(body.detail-open, body:has(.info-panel.open)) .stat-dropdown {
    opacity: 0 !important;
    pointer-events: none !important;
  }

  :is(body.detail-open, body:has(.info-panel.open)) .nav-arrows {
    bottom: calc(min(78vh, calc(100dvh - 132px)) + 8px) !important;
    z-index: 138 !important;
  }

  :is(body.detail-open, body:has(.info-panel.open))::before {
    content: '';
    position: fixed;
    inset: 0;
    z-index: 130;
    pointer-events: none;
    background: linear-gradient(180deg, rgba(4,4,8,0.42), rgba(4,4,8,0.58));
    backdrop-filter: blur(1.5px);
    -webkit-backdrop-filter: blur(1.5px);
  }
}

/* ═══ Phone UX sweep: tap targets, sheets, carousel, touch safety ═══ */

@media (max-width: 639.98px) {
  body {
    font-size: 14px;
  }

  #globeViz,
  #globeViz canvas {
    touch-action: pan-x pan-y pinch-zoom;
  }

  .alerts-toggle,
  #alertsToggleBtn,
  #dashboardBtn,
  .country-filter-chip,
  .stat-chip,
  .view-toggle-btn,
  .dd-toggle-all,
  .vt-dd-item,
  .dd-item,
  #lpReopenTab,
  .info-close,
  .info-panel-close,
  .alerts-panel-close,
  .ap-close,
  .dash-close {
    min-width: 44px !important;
    min-height: 44px !important;
    touch-action: manipulation;
    -webkit-tap-highlight-color: transparent;
  }

  .stat-chip,
  .view-toggle-btn,
  .dd-toggle-all {
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    padding: 10px 14px !important;
  }

  .vt-dd-item,
  .dd-item {
    padding: 10px 12px !important;
    scroll-snap-align: start;
  }

  .stats-bar {
    gap: 6px !important;
    padding: 0 !important;
    overflow: hidden;
  }

  .country-dropdown.open,
  .vt-dropdown.open,
  .stat-dropdown.open {
    position: fixed !important;
    left: 12px !important;
    right: 12px !important;
    width: auto !important;
    min-width: 0 !important;
    max-height: min(52vh, 360px) !important;
    transform: none !important;
    z-index: 10040 !important;
  }

  .country-dropdown.open { top: calc(128px + env(safe-area-inset-top)) !important; }
  .vt-dropdown.open { top: calc(164px + env(safe-area-inset-top)) !important; }
  .stat-dropdown.open { top: calc(216px + env(safe-area-inset-top)) !important; }

  #sectorFilters.filter-group,
  .splash-sectors,
  .mobile-filters {
    display: flex !important;
    flex-direction: row !important;
    flex-wrap: nowrap !important;
    overflow-x: auto !important;
    overscroll-behavior-x: contain;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
  }

  #sectorFilters.filter-group::-webkit-scrollbar,
  .splash-sectors::-webkit-scrollbar,
  .mobile-filters::-webkit-scrollbar {
    display: none;
  }

  #sectorFilters .filter-item,
  .splash-chip,
  .mobile-chip {
    flex: 0 0 auto !important;
    scroll-snap-align: start;
    min-height: 44px;
    display: inline-flex;
    align-items: center;
  }

  #sectorFilters .filter-item {
    min-width: min(74vw, 260px);
    padding: 9px 12px;
  }

  .mobile-chip {
    padding: 10px 16px !important;
  }

  body.has-ticker #newsTickerBar,
  body.has-ticker .news-ticker-bar {
    display: none !important;
  }

  body.chrome-compact .info-panel,
  .info-panel {
    left: 0 !important;
    right: 0 !important;
    top: 22dvh !important;
    bottom: 0 !important;
    width: 100vw !important;
    height: auto !important;
    max-height: 78dvh !important;
    border-radius: 22px 22px 0 0 !important;
    transform: translate3d(0, calc(100% + env(safe-area-inset-bottom)), 0) !important;
    overflow: hidden !important;
    touch-action: pan-y !important;
  }

  body.chrome-compact .info-panel.open,
  .info-panel.open {
    transform: translate3d(0, 0, 0) !important;
  }

  .info-panel #infoPanelContent {
    max-height: 78dvh !important;
    height: 100% !important;
    overflow-y: auto !important;
    padding-top: 24px !important;
    padding-bottom: calc(18px + env(safe-area-inset-bottom)) !important;
    -webkit-overflow-scrolling: touch !important;
    overscroll-behavior: contain !important;
  }

  .info-close,
  .info-panel .info-close,
  .info-panel-close {
    position: fixed !important;
    top: 10px !important;
    right: 12px !important;
    width: 44px !important;
    height: 44px !important;
    padding: 0 !important;
    z-index: 146 !important;
  }

  .info-panel .info-header {
    padding-right: 66px !important;
  }

  .ap-card-title,
  .alert-card-title {
    font-size: 14px !important;
    line-height: 1.35 !important;
  }

  .ap-card,
  .alert-card {
    min-height: 44px;
  }

  .time-widget,
  .legend {
    bottom: calc(144px + env(safe-area-inset-bottom)) !important;
  }
}

/* ═══ WattsMonde global readability polish: splash + desktop detail ═══
   Follow-up QA found desktop had the same root issue as mobile: too many
   floating layers compete with the selected-company sheet, while the splash
   looked premium but under-contrasted. These overrides improve hierarchy
   without changing app logic. */

/* Splash: stronger text hierarchy and clearer entry cards */
.splash-content {
  max-width: min(880px, calc(100vw - 48px)) !important;
}
.splash-hero {
  position: relative;
  isolation: isolate;
  margin-bottom: 18px !important;
  padding-top: 8px;
}
.wm-hero-mesh {
  position: absolute;
  left: 50%;
  top: 48%;
  z-index: -1;
  width: min(620px, 88vw);
  aspect-ratio: 1.7;
  border-radius: 999px;
  background:
    conic-gradient(from 0deg at 50% 50%,
      rgba(0,240,255,0.42),
      rgba(212,160,23,0.34),
      rgba(59,130,246,0.30),
      rgba(0,240,255,0.42));
  filter: blur(34px) saturate(1.12);
  opacity: 0.46;
  transform: translate(-50%, -50%) rotate(0deg);
  animation: wmHeroMeshRotate 18s linear infinite;
  pointer-events: none;
  will-change: transform;
}
@keyframes wmHeroMeshRotate {
  to { transform: translate(-50%, -50%) rotate(360deg); }
}
.splash-badge {
  color: #00f0ff !important;
  background: rgba(0,240,255,0.10) !important;
  border-color: rgba(0,240,255,0.28) !important;
}
.splash-title {
  max-width: 760px !important;
  margin-left: auto !important;
  margin-right: auto !important;
  margin-bottom: 14px !important;
  font-size: clamp(1.4rem, 5vw, 2.6rem) !important;
  line-height: 1.05 !important;
  letter-spacing: -0.045em !important;
  text-shadow: 0 18px 60px rgba(0,0,0,0.42) !important;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.splash-tagline {
  max-width: 640px !important;
  margin-left: auto !important;
  margin-right: auto !important;
  margin-bottom: 10px !important;
  color: rgba(255,255,255,0.78) !important;
  font-family: var(--font-sans) !important;
  font-size: clamp(0.92rem, 1.45vw, 1.08rem) !important;
  font-weight: 650 !important;
  letter-spacing: 0.01em !important;
  line-height: 1.45 !important;
}
.splash-tagline strong { color: rgba(255,255,255,0.96) !important; }
.wm-hero-counter {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 24px;
  padding: 4px 11px;
  border: 1px solid rgba(0,240,255,0.18);
  border-radius: 999px;
  background: rgba(0,240,255,0.08);
  color: rgba(255,255,255,0.66);
  font-family: var(--font-sans);
  font-size: 0.72rem;
  font-weight: 650;
  letter-spacing: 0.01em;
}
.wm-hero-counter-dot {
  width: 7px;
  height: 7px;
  border-radius: 999px;
  background: var(--orange, #00f0ff);
  box-shadow: 0 0 0 0 rgba(0,240,255,0.44);
  animation: wmHeroDotBeat 1.65s ease-out infinite;
}
@keyframes wmHeroDotBeat {
  0%, 100% { transform: scale(1); box-shadow: 0 0 0 0 rgba(0,240,255,0.42); }
  50% { transform: scale(1.16); box-shadow: 0 0 0 8px rgba(0,240,255,0); }
}
.splash-question {
  color: rgba(255,255,255,0.68) !important;
  font-size: 0.82rem !important;
}
.splash-stats {
  max-width: 680px !important;
  margin-left: auto !important;
  margin-right: auto !important;
  background: rgba(255,255,255,0.055) !important;
  border-color: rgba(255,255,255,0.12) !important;
  box-shadow: 0 18px 60px rgba(0,0,0,0.28) !important;
}
.splash-stat-label { color: rgba(255,255,255,0.56) !important; }
.splash-personas {
  max-width: 760px !important;
  margin-left: auto !important;
  margin-right: auto !important;
  gap: 14px !important;
}
.splash-persona {
  min-height: 118px !important;
  padding: 20px 22px !important;
  background: linear-gradient(145deg, rgba(255,255,255,0.075), rgba(255,255,255,0.032)) !important;
  border-color: rgba(255,255,255,0.14) !important;
  border-radius: var(--radius-card, 18px) !important;
  box-shadow: var(--shadow-panel, 0 18px 60px rgba(0,0,0,0.30)) !important;
}
.splash-persona::after {
  content: '→';
  position: absolute;
  right: 18px;
  top: 18px;
  color: rgba(255,255,255,0.34);
  font-size: 18px;
  transition: transform 0.2s ease, color 0.2s ease;
}
.splash-persona:hover {
  background: linear-gradient(145deg, rgba(0,240,255,0.10), rgba(255,255,255,0.055)) !important;
  border-color: rgba(0,240,255,0.40) !important;
  box-shadow: var(--shadow-panel, 0 18px 60px rgba(0,0,0,0.30)), 0 0 0 1px rgba(0,240,255,0.14) !important;
}
.splash-persona:hover::after {
  color: #00f0ff;
  transform: translateX(3px);
}
.sp-label { font-size: 1.02rem !important; }
.sp-desc {
  color: rgba(255,255,255,0.62) !important;
  font-size: 0.78rem !important;
  line-height: 1.55 !important;
  max-width: 92% !important;
}
.splash-sectors { opacity: 0.78 !important; }
.splash-footer, .splash-footer a { color: rgba(255,255,255,0.44) !important; }
.wm-skip-splash {
  position: fixed;
  right: 24px;
  bottom: 22px;
  z-index: 10001;
  border: 0;
  background: transparent;
  color: rgba(255,255,255,0.58);
  font-family: var(--font-sans);
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.01em;
  cursor: pointer;
  padding: 10px 12px;
  border-radius: 999px;
  transition: color var(--t-fast), background var(--t-fast), transform var(--t-fast);
}
.wm-skip-splash:hover {
  color: #fff;
  background: rgba(255,255,255,0.08);
  transform: translateY(-1px);
}
.wm-skip-splash.disabled {
  opacity: 0.42;
  pointer-events: none;
}

@media (max-width: 639px) {
  .splash-overlay {
    align-items: flex-start;
  }
  .splash-content {
    max-width: calc(100vw - 24px) !important;
    padding: 26px 0 72px !important;
  }
  .splash-hero {
    margin-bottom: 14px !important;
  }
  .wm-hero-mesh {
    width: 108vw;
    opacity: 0.34;
    filter: blur(30px) saturate(1.05);
  }
  .splash-title {
    max-width: 21ch !important;
    font-size: clamp(1.4rem, 5vw, 2.6rem) !important;
    letter-spacing: -0.03em !important;
  }
  .splash-tagline {
    max-width: 31ch !important;
    font-size: 0.82rem !important;
  }
  .wm-hero-counter {
    font-size: 0.66rem;
    padding: 4px 9px;
  }
  .splash-personas {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 8px !important;
    margin-bottom: 16px !important;
  }
  .splash-persona {
    min-height: 112px !important;
    padding: 12px !important;
  }
  .splash-persona::after {
    right: 10px;
    top: 10px;
    font-size: 14px;
  }
  .sp-icon { font-size: 1.25rem !important; }
  .sp-label { font-size: 0.82rem !important; }
  .sp-desc {
    max-width: 100% !important;
    font-size: 0.64rem !important;
    line-height: 1.35 !important;
  }
  .splash-section-label {
    margin-top: 4px !important;
  }
  .splash-sectors {
    gap: 6px !important;
    margin-bottom: 16px !important;
  }
  .splash-chip {
    padding: 4px 9px !important;
    font-size: 0.64rem !important;
  }
  .wm-skip-splash {
    right: 12px;
    bottom: 12px;
    font-size: 0.72rem;
    background: rgba(6,8,9,0.58);
  }
}

/* Desktop/tablet selected point: make the sheet feel intentional, not like an overlay pile. */
@media (min-width: 769px) {
  .info-panel {
    top: 74px !important;
    right: 16px !important;
    bottom: 74px !important;
    width: clamp(420px, 31vw, 500px) !important;
    z-index: 132 !important;
    background: linear-gradient(180deg, rgba(18,14,24,0.985), rgba(10,9,16,0.975)) !important;
    border-color: rgba(255,255,255,0.16) !important;
    box-shadow: 0 26px 80px rgba(0,0,0,0.62), 0 0 0 1px rgba(255,255,255,0.05) inset !important;
    scrollbar-color: rgba(255,255,255,0.26) transparent !important;
  }
  body.chrome-compact .info-panel { top: 74px !important; }
  .info-panel.open { transform: translateX(0) !important; }
  .info-panel #infoPanelContent { min-height: 100%; }
  .info-panel .info-header {
    padding: 28px 28px 20px !important;
    background: linear-gradient(180deg, rgba(18,14,24,0.98), rgba(18,14,24,0.9)) !important;
    border-bottom: 1px solid rgba(255,255,255,0.08) !important;
    position: sticky !important;
    top: 0 !important;
    z-index: 3 !important;
  }
  .info-panel .info-name {
    font-size: clamp(26px, 2.2vw, 34px) !important;
    line-height: 1.08 !important;
    letter-spacing: -0.04em !important;
  }
  .info-panel .info-location,
  .info-panel .info-description,
  .info-panel .subsidiary-location,
  .info-panel .project-meta-text {
    color: rgba(255,255,255,0.74) !important;
  }
  .info-panel .info-body { padding: 22px 28px 28px !important; }
  .info-panel .info-description {
    font-size: 14.5px !important;
    line-height: 1.68 !important;
  }
  .info-panel .info-grid { gap: 12px !important; }
  .info-panel .info-metric {
    background: rgba(255,255,255,0.055) !important;
    border-color: rgba(255,255,255,0.10) !important;
  }
  .info-panel .info-metric-label { color: rgba(255,255,255,0.55) !important; }
  .info-close {
    width: 36px !important;
    height: 36px !important;
    border-radius: var(--radius-pill) !important;
    background: rgba(255,255,255,0.12) !important;
    color: #fff !important;
  }

  :is(body.detail-open, body:has(.info-panel.open))::before {
    content: '';
    position: fixed;
    inset: 0;
    z-index: 120;
    pointer-events: none;
    background: linear-gradient(90deg, rgba(4,4,8,0.22), rgba(4,4,8,0.10) 52%, rgba(4,4,8,0.54));
    backdrop-filter: blur(1px);
    -webkit-backdrop-filter: blur(1px);
  }
  :is(body.detail-open, body:has(.info-panel.open)) #newsTickerBar,
  :is(body.detail-open, body:has(.info-panel.open)) .news-ticker-bar,
  :is(body.detail-open, body:has(.info-panel.open)) .legend,
  :is(body.detail-open, body:has(.info-panel.open)) #leftPanel,
  :is(body.detail-open, body:has(.info-panel.open)) #lpReopenTab,
  :is(body.detail-open, body:has(.info-panel.open)) .alerts-toggle {
    opacity: 0 !important;
    pointer-events: none !important;
  }
}

@media (max-width: 580px) {
  .splash-content { max-width: calc(100vw - 24px) !important; }
  .splash-title { font-size: clamp(2.5rem, 15vw, 3.4rem) !important; }
  .splash-tagline { color: rgba(255,255,255,0.78) !important; font-size: 0.98rem !important; }
  .splash-persona { min-height: auto !important; padding: 17px 18px !important; }
  .sp-desc { font-size: 0.76rem !important; }
}

/* ═══ Consolidation v2: deeper premium hierarchy + interaction clarity ═══ */
.splash-persona {
  cursor: pointer !important;
}
.splash-persona:focus-visible {
  outline: 2px solid rgba(0,240,255,0.85) !important;
  outline-offset: 3px !important;
  border-color: rgba(0,240,255,0.68) !important;
}

.info-action-btn,
.info-social-chip {
  min-height: 32px;
  border-color: rgba(255,255,255,0.16) !important;
  color: rgba(255,255,255,0.90) !important;
}
.info-action-btn:hover,
.info-social-chip:hover {
  background: rgba(0,240,255,0.18) !important;
  border-color: rgba(0,240,255,0.50) !important;
  color: #fff !important;
}

@media (min-width: 769px) {
  body.detail-open #globeViz,
  body:has(.info-panel.open) #globeViz {
    filter: saturate(0.84) brightness(0.76) contrast(1.04);
    transition: filter 0.25s ease;
  }

  body.detail-open .info-panel,
  body:has(.info-panel.open) .info-panel {
    border-color: rgba(0,240,255,0.28) !important;
    box-shadow: 0 30px 95px rgba(0,0,0,0.68), 0 0 0 1px rgba(255,255,255,0.07) inset, 0 0 0 1px rgba(0,240,255,0.18) !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  .wm-hero-mesh,
  .wm-hero-counter-dot,
  .alerts-toggle.has-criticals,
  .ap-card.critical .ap-card-icon,
  .marker-pulse,
  .alerts-glow,
  .mk__ring,
  .mk--hot .mk__ring,
  #alertsToggleBtn.active.has-critical::after,
  .alerts-toggle.active.has-critical::after,
  #alertsToggleBtn .badge,
  .alerts-badge {
    animation: none !important;
  }

  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }

  *,
  *::before,
  *::after {
    scroll-behavior: auto !important;
  }
}

.lang-toggle {
  display: inline-flex;
  gap: 4px;
  padding: 4px;
  border: 1px solid rgba(255,255,255,0.14);
  border-radius: var(--radius-pill);
  background: rgba(10,10,20,0.72);
  backdrop-filter: var(--blur-soft);
  -webkit-backdrop-filter: var(--blur-soft);
  box-shadow: 0 8px 24px rgba(0,0,0,0.28);
}

.lang-toggle a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 34px;
  min-height: 28px;
  padding: 0 9px;
  border-radius: var(--radius-pill);
  color: rgba(255,255,255,0.68);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-decoration: none;
  transition: background var(--t-fast), color var(--t-fast);
}

.lang-toggle a:hover,
.lang-toggle a.active {
  background: var(--orange);
  color: #fff;
}

/* ─── Gamification: Badge Toast ─── */
.wm-badge-toast {
  position: fixed;
  top: 80px;
  right: 20px;
  background: rgba(15, 12, 30, 0.96);
  border: 1px solid rgba(255, 102, 0, 0.4);
  border-radius: var(--radius-card);
  padding: 12px 16px;
  color: #fff;
  font-size: 13px;
  font-weight: 700;
  box-shadow: var(--shadow-panel-warm);
  z-index: 200;
  pointer-events: none;
  animation: wmBadgeIn 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
}
@keyframes wmBadgeIn {
  from { transform: translateY(-12px) scale(0.9); opacity: 0; }
  to   { transform: translateY(0) scale(1); opacity: 1; }
}
@media (prefers-reduced-motion: reduce) {
  .wm-badge-toast { animation: none; }
}

/* ─── Gamification: Streak Pill ─── */
.wm-streak-pill {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 2px 8px;
  background: var(--orange-soft, rgba(255, 102, 0, 0.15));
  border: 1px solid rgba(255, 102, 0, 0.3);
  border-radius: var(--radius-pill);
  font-size: 11px;
  font-weight: 700;
  color: var(--orange);
  margin-left: 8px;
  cursor: default;
  animation: wmStreakPop 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.wm-streak-flame { font-style: normal; }
@keyframes wmStreakPop {
  from { transform: scale(0.7); opacity: 0; }
  to   { transform: scale(1); opacity: 1; }
}
@media (prefers-reduced-motion: reduce) {
  .wm-streak-pill { animation: none; }
}

/* ─── Gamification: Bookmark Button ─── */
.wm-bookmark-btn {
  transition: background 0.2s, color 0.2s, border-color 0.2s;
}
.wm-bookmark-btn.active {
  background: var(--orange-soft, rgba(255, 102, 0, 0.12));
  color: var(--orange);
  border-color: rgba(255, 102, 0, 0.3);
}

/* ─── Gamification: Left-panel Bookmarks Section ─── */
.lp-bookmarks-empty {
  font-size: 12px;
  color: var(--text-dim);
  padding: 8px 0;
  line-height: 1.5;
}
.lp-bookmark-item {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 6px 0;
  border-bottom: 1px solid var(--border);
  cursor: pointer;
  transition: background 0.15s;
  border-radius: 6px;
}
.lp-bookmark-item:last-child { border-bottom: none; }
.lp-bookmark-item:hover { background: rgba(255, 255, 255, 0.04); }
.lp-bookmark-name {
  font-size: 12px;
  font-weight: 600;
  color: var(--text);
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.lp-bookmark-sector {
  font-size: 10px;
  color: var(--text-dim);
  flex-shrink: 0;
}
.lp-bookmark-remove {
  background: none;
  border: none;
  color: var(--text-muted);
  font-size: 14px;
  cursor: pointer;
  padding: 2px 4px;
  border-radius: 4px;
  flex-shrink: 0;
  transition: color 0.15s;
}
.lp-bookmark-remove:hover { color: var(--orange); }

/* ─── Detail Panel: Staggered Entrance ─── */
.info-panel.open .info-header {
  animation: dpSlideIn 0.3s ease-out both;
}
.info-panel.open .info-body {
  animation: dpSlideIn 0.3s ease-out 0.08s both;
}
@keyframes dpSlideIn {
  from { opacity: 0; transform: translateY(12px); }
  to   { opacity: 1; transform: translateY(0); }
}
@media (prefers-reduced-motion: reduce) {
  .info-panel.open .info-header,
  .info-panel.open .info-body { animation: none; }
}

/* ─── Cluster: Sector Groups ─── */
.dp-cluster-group {
  margin-bottom: 10px;
}
.dp-cluster-group:last-child { margin-bottom: 0; }
.dp-cluster-group-label {
  font-size: 11px;
  font-weight: 700;
  color: var(--text-dim);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  padding: 6px 0 4px;
  border-bottom: 1px solid var(--border);
  margin-bottom: 4px;
}

/* ============================================================
   Premium pass v2: cyan/gold/dark brutalist hierarchy
   ============================================================ */
:root {
  --wm-cyan: #00f0ff;
  --wm-cyan-strong: #73f7ff;
  --wm-cyan-soft: rgba(0, 240, 255, 0.12);
  --wm-cyan-line: rgba(0, 240, 255, 0.34);
  --wm-gold: #d4a017;
  --wm-gold-strong: #f3c84f;
  --wm-gold-soft: rgba(212, 160, 23, 0.14);
  --wm-dark: #07070d;
  --wm-panel: rgba(12, 11, 18, 0.94);
  --wm-panel-strong: rgba(17, 15, 24, 0.97);
  --wm-panel-soft: rgba(255, 255, 255, 0.055);
  --wm-border: rgba(255, 255, 255, 0.14);
  --wm-border-quiet: rgba(255, 255, 255, 0.09);
  --wm-ink: #f2eee7;
  --wm-ink-mid: #c8c2b8;
  --wm-ink-low: #938d84;
  --wm-shadow-hard: 0 24px 76px rgba(0, 0, 0, 0.58);
  --wm-shadow-cyan: 0 0 0 1px rgba(0, 240, 255, 0.16), 0 18px 56px rgba(0, 0, 0, 0.50);
  --wm-ease-out: cubic-bezier(.16, 1, .3, 1);

  --bg: var(--wm-dark);
  --bg-panel: var(--wm-panel);
  --text: var(--wm-ink);
  --text-dim: var(--wm-ink-mid);
  --text-muted: var(--wm-ink-low);
  --text-bright: #fbf7f0;
  --border: var(--wm-border-quiet);
  --border-light: var(--wm-border);
  --orange: var(--wm-cyan);
  --orange-soft: var(--wm-cyan-soft);
  --orange-glow: rgba(0, 240, 255, 0.28);
  --gold: var(--wm-gold);
}

body {
  background:
    radial-gradient(circle at 50% 36%, rgba(0, 240, 255, 0.085), transparent 28%),
    radial-gradient(circle at 10% 12%, rgba(212, 160, 23, 0.08), transparent 24%),
    linear-gradient(180deg, #090910 0%, #050509 100%) !important;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
}

:where(button, a, input, select, textarea, [role="button"], [tabindex]):focus-visible {
  outline: 2px solid var(--wm-cyan-strong) !important;
  outline-offset: 3px !important;
  box-shadow: 0 0 0 5px rgba(0, 240, 255, 0.14) !important;
}

:where(button, a, [role="button"]) {
  -webkit-tap-highlight-color: rgba(0, 240, 255, 0.18);
}

.wm-chrome-tier1 {
  background:
    linear-gradient(180deg, rgba(18, 16, 25, 0.96), rgba(9, 9, 15, 0.92)),
    linear-gradient(90deg, rgba(0, 240, 255, 0.06), transparent 34%, rgba(212, 160, 23, 0.06)) !important;
  border-color: rgba(0, 240, 255, 0.14) !important;
  box-shadow: var(--wm-shadow-cyan) !important;
}
.wm-chrome-tier2 {
  border-color: rgba(0, 240, 255, 0.10) !important;
}
.logo-icon {
  color: #061014 !important;
  background: linear-gradient(135deg, var(--wm-cyan-strong), #00b6c6 58%, #07515b) !important;
  border: 1px solid rgba(0, 240, 255, 0.55);
  box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.16) inset, 0 10px 28px rgba(0, 240, 255, 0.20) !important;
}
.logo-text h1,
.logo-text .logo-title {
  color: var(--wm-ink) !important;
}
.logo-sub,
.stat-chip-label,
.kpi-label,
.weather-city-name,
.dd-title {
  color: var(--wm-ink-mid) !important;
}

#search,
.lp-search-box input,
.wm-newsletter input,
.wm-newsletter select {
  min-height: 38px;
  background: rgba(3, 6, 10, 0.50) !important;
  border-color: rgba(255, 255, 255, 0.14) !important;
  color: var(--wm-ink) !important;
}
#search::placeholder,
.lp-search-box input::placeholder {
  color: rgba(242, 238, 231, 0.56) !important;
}
#search:focus,
.lp-search-box input:focus,
.wm-newsletter input:focus,
.wm-newsletter select:focus {
  background: rgba(8, 12, 18, 0.78) !important;
  border-color: var(--wm-cyan-line) !important;
  box-shadow: 0 0 0 3px rgba(0, 240, 255, 0.12), 0 14px 34px rgba(0, 0, 0, 0.26) !important;
}

.view-toggle,
.stats-bar,
.lang-toggle,
#chromeToggle,
.region-bar {
  background: rgba(8, 8, 14, 0.78) !important;
  border-color: rgba(255, 255, 255, 0.14) !important;
  box-shadow: 0 10px 34px rgba(0, 0, 0, 0.30) !important;
}
.view-toggle-btn,
.stat-chip,
.country-filter-chip,
.region-btn,
.reopen-splash-btn,
.wm-radar-cta {
  transition: background-color 180ms var(--wm-ease-out), border-color 180ms var(--wm-ease-out), color 180ms var(--wm-ease-out), transform 180ms var(--wm-ease-out), box-shadow 180ms var(--wm-ease-out) !important;
}
.view-toggle-btn,
.stat-chip,
.country-filter-chip,
.mobile-chip,
.region-btn {
  color: var(--wm-ink-mid) !important;
}
.view-toggle-btn:hover,
.stat-chip:hover,
.country-filter-chip:hover,
.region-btn:hover,
.reopen-splash-btn:hover {
  color: var(--wm-ink) !important;
  background: rgba(0, 240, 255, 0.12) !important;
  border-color: var(--wm-cyan-line) !important;
  transform: translateY(-1px);
}
.view-toggle-btn.active,
.stat-chip.active,
.mobile-chip.active,
.region-btn.active,
.lang-toggle a.active {
  color: #041015 !important;
  background: linear-gradient(180deg, var(--wm-cyan-strong), var(--wm-cyan)) !important;
  border-color: rgba(115, 247, 255, 0.80) !important;
  box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.20) inset, 0 10px 30px rgba(0, 240, 255, 0.24) !important;
}
.stat-simple strong,
.stat-chip-value,
.kpi-price {
  color: var(--wm-cyan-strong) !important;
}

.splash-overlay {
  background:
    radial-gradient(circle at 78% 12%, rgba(0, 240, 255, 0.12), transparent 24%),
    radial-gradient(circle at 12% 78%, rgba(212, 160, 23, 0.13), transparent 28%),
    linear-gradient(180deg, #07070d 0%, #030306 100%) !important;
}
.splash-bg-grid {
  opacity: 0.72;
  background-size: 72px 72px !important;
}
.splash-content {
  max-width: min(960px, calc(100vw - 40px)) !important;
  text-align: left !important;
  padding-block: clamp(28px, 5vh, 58px) !important;
}
.splash-hero,
.splash-personas,
.splash-section-label,
.splash-sectors,
.wm-newsletter,
.splash-footer,
.splash-question {
  margin-left: 0 !important;
  margin-right: 0 !important;
}
.splash-hero {
  max-width: 760px;
}
.splash-eyebrow,
.splash-section-label,
.splash-question {
  color: var(--wm-cyan-strong) !important;
  letter-spacing: 0.16em !important;
}
.splash-title {
  max-width: 13.5ch !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
  font-size: clamp(2.8rem, 8vw, 6.3rem) !important;
  line-height: 0.92 !important;
  letter-spacing: -0.07em !important;
  -webkit-line-clamp: unset !important;
  text-wrap: balance;
}
.splash-tagline {
  max-width: 62ch !important;
  margin-left: 0 !important;
  color: rgba(242, 238, 231, 0.84) !important;
  font-size: clamp(1rem, 1.5vw, 1.15rem) !important;
  font-weight: 560 !important;
  line-height: 1.58 !important;
}
.wm-hero-counter {
  border-color: rgba(0, 240, 255, 0.26) !important;
  color: rgba(242, 238, 231, 0.78) !important;
  background: rgba(0, 240, 255, 0.10) !important;
}
.splash-personas {
  grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
  max-width: 920px !important;
  gap: 12px !important;
}
.splash-persona {
  min-height: 148px !important;
  padding: 18px !important;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.085), rgba(255, 255, 255, 0.030)),
    rgba(4, 6, 10, 0.54) !important;
  border: 1px solid rgba(255, 255, 255, 0.16) !important;
  border-radius: 10px !important;
  box-shadow: 0 18px 48px rgba(0, 0, 0, 0.36) !important;
}
.splash-persona:hover {
  background:
    linear-gradient(180deg, rgba(0, 240, 255, 0.12), rgba(255, 255, 255, 0.050)),
    rgba(4, 8, 12, 0.68) !important;
  border-color: rgba(0, 240, 255, 0.48) !important;
  transform: translateY(-3px) !important;
}
.splash-persona:active {
  transform: translateY(-1px) scale(0.985) !important;
}
.sp-label {
  color: var(--wm-ink) !important;
}
.sp-desc {
  color: rgba(242, 238, 231, 0.68) !important;
}
.splash-chip {
  min-height: 34px;
  color: var(--wm-ink) !important;
  text-decoration: none;
  border-color: color-mix(in srgb, var(--chip-color) 38%, rgba(255,255,255,0.10)) !important;
  background: color-mix(in srgb, var(--chip-color) 15%, rgba(8,8,14,0.72)) !important;
}
.splash-chip:hover {
  color: #fff !important;
  border-color: color-mix(in srgb, var(--chip-color) 58%, rgba(255,255,255,0.18)) !important;
  transform: translateY(-2px) !important;
}
.wm-newsletter {
  background: rgba(8, 8, 14, 0.78) !important;
  border-color: rgba(255, 255, 255, 0.16) !important;
  box-shadow: var(--wm-shadow-hard) !important;
}
.wm-newsletter button,
.info-link {
  color: #071015 !important;
  background: linear-gradient(180deg, var(--wm-gold-strong), var(--wm-gold)) !important;
  border-color: rgba(243, 200, 79, 0.72) !important;
  box-shadow: 0 10px 30px rgba(212, 160, 23, 0.24) !important;
}
.wm-newsletter button:hover,
.info-link:hover {
  transform: translateY(-2px) !important;
  box-shadow: 0 16px 42px rgba(212, 160, 23, 0.32) !important;
}

.info-panel,
.dashboard-panel,
.filter-panel,
.stat-dropdown,
.vt-dropdown,
.country-dropdown,
.search-results,
.alerts-panel {
  background: var(--wm-panel-strong) !important;
  border-color: rgba(255, 255, 255, 0.16) !important;
  box-shadow: var(--wm-shadow-hard) !important;
}
.info-panel {
  border-radius: 12px !important;
}
.info-header,
.dp-cluster-header {
  background: linear-gradient(180deg, rgba(22, 18, 28, 0.96), rgba(13, 12, 19, 0.86)) !important;
  border-bottom-color: rgba(255, 255, 255, 0.12) !important;
}
.info-name,
.dp-cluster-count {
  color: var(--wm-ink) !important;
  text-wrap: balance;
}
.info-location,
.info-description,
.dp-cluster-sub,
.info-news-meta,
.project-meta-text,
.subsidiary-location {
  color: rgba(242, 238, 231, 0.74) !important;
}
.info-description {
  max-width: 68ch;
}
.info-close,
.dash-close,
.alerts-panel-close,
.ap-close,
.lp-close,
.lp-collapse-btn {
  background: rgba(255, 255, 255, 0.10) !important;
  border: 1px solid rgba(255, 255, 255, 0.16) !important;
  color: var(--wm-ink) !important;
}
.info-close:hover,
.dash-close:hover,
.alerts-panel-close:hover,
.ap-close:hover,
.lp-close:hover,
.lp-collapse-btn:hover {
  background: rgba(0, 240, 255, 0.14) !important;
  border-color: var(--wm-cyan-line) !important;
  color: var(--wm-cyan-strong) !important;
}
.info-metric,
.dp-cluster-item,
.subsidiary-item,
.project-item-panel,
.info-news-item,
.kpi-card,
.dash-card {
  background: rgba(255, 255, 255, 0.055) !important;
  border-color: rgba(255, 255, 255, 0.12) !important;
}
.info-metric-label,
.info-section-title,
.dp-cluster-group-label {
  color: rgba(242, 238, 231, 0.62) !important;
}
.info-metric-value,
.info-news-title,
.subsidiary-name,
.project-name-text {
  color: var(--wm-ink) !important;
}
.info-metric-value.highlight,
.info-section-count,
.kpi-spark {
  color: var(--wm-cyan-strong) !important;
}
.info-news-item:hover,
.dp-cluster-item:hover,
.subsidiary-item:hover,
.project-item-panel:hover,
.dash-card:hover,
.kpi-card:hover {
  background: rgba(0, 240, 255, 0.10) !important;
  border-color: var(--wm-cyan-line) !important;
  transform: translateY(-1px);
}
.info-news-item:hover {
  border-left-color: rgba(255, 255, 255, 0.12) !important;
}

#leftPanel.left-panel-stack {
  background:
    linear-gradient(180deg, rgba(14, 13, 22, 0.78), rgba(8, 7, 14, 0.74)) !important;
  border-color: rgba(255, 255, 255, 0.11) !important;
  border-radius: 18px !important;
  box-shadow: 0 24px 64px -12px rgba(0, 0, 0, 0.5),
              0 0 0 1px rgba(255, 255, 255, 0.05) inset,
              0 1px 0 0 rgba(255, 255, 255, 0.07) inset !important;
}
#leftPanelHeader.lp-header {
  background: rgba(255, 255, 255, 0.05) !important;
  border-bottom-color: rgba(255, 255, 255, 0.10) !important;
}
.lp-logo-icon {
  color: #061014 !important;
  background: linear-gradient(135deg, var(--wm-cyan-strong), var(--wm-cyan)) !important;
}
.lp-logo-text,
.lp-news-title,
.lp-entity-name,
.lp-alert-title,
.lp-live-card-price {
  color: var(--wm-ink) !important;
}
.lp-logo-text span {
  color: var(--wm-cyan-strong) !important;
}
.lp-section,
.lp-live-card,
.lp-alert,
.lp-news-item {
  background: rgba(255, 255, 255, 0.04) !important;
  border-color: rgba(255, 255, 255, 0.09) !important;
  border-radius: 12px !important;
}
.lp-section {
  padding: 14px 16px !important;
}
.lp-section-head {
  color: rgba(242, 238, 231, 0.66) !important;
  min-height: 36px;
}
.lp-section-head:hover {
  color: var(--wm-ink) !important;
}
.lp-alert:hover,
.lp-news-item:hover,
.lp-entity:hover,
.lp-live-card:hover {
  background: rgba(0, 240, 255, 0.09) !important;
  border-color: var(--wm-cyan-line) !important;
}
.lp-news-meta,
.lp-alert-meta,
.lp-entity-meta,
.lp-live-card-label,
.lp-fresh-chip {
  color: rgba(242, 238, 231, 0.62) !important;
}
.news-ticker-bar,
.kpi-ticker,
.weather-bar {
  background: linear-gradient(180deg, rgba(7, 7, 13, 0.92), rgba(4, 4, 8, 0.94)) !important;
  border-color: rgba(255, 255, 255, 0.10) !important;
}
.news-ticker-label {
  color: #071015 !important;
  background: linear-gradient(90deg, var(--wm-cyan-strong), var(--wm-cyan)) !important;
}
.nt-item {
  color: rgba(242, 238, 231, 0.84) !important;
}
.nt-item:hover {
  color: var(--wm-gold-strong) !important;
}
.nt-src {
  color: var(--wm-gold-strong) !important;
  background: var(--wm-gold-soft) !important;
  border-color: rgba(212, 160, 23, 0.34) !important;
}
.nt-time,
.kpi-range,
.weather-city-wind {
  color: rgba(242, 238, 231, 0.52) !important;
}

.sector-card,
.mover-row {
  background: rgba(255, 255, 255, 0.055) !important;
  border-color: rgba(255, 255, 255, 0.12) !important;
  border-radius: 10px !important;
}
.sector-card__name,
.mover-row__name,
.sector-card__stat-value {
  color: var(--wm-ink) !important;
}
.sector-card__stat-label,
.movers-section__title,
.mover-row__ticker {
  color: rgba(242, 238, 231, 0.62) !important;
}

@media (max-width: 1024px) {
  .splash-personas {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }
  .splash-title {
    max-width: 14ch !important;
  }
}

@media (max-width: 768px) {
  .stat-chip,
  .view-toggle-btn,
  .country-filter-chip,
  .mobile-chip,
  .vt-dd-item,
  .dd-item {
    min-height: 44px !important;
  }
  .info-panel {
    border-radius: 24px 24px 0 0 !important;
  }
  #leftPanel.left-panel-stack {
    border-radius: 24px 24px 0 0 !important;
  }
}

@media (max-width: 580px) {
  .splash-content {
    max-width: calc(100vw - 28px) !important;
    padding-top: 24px !important;
  }
  .splash-title {
    max-width: 11ch !important;
    font-size: clamp(2.35rem, 14vw, 4.1rem) !important;
    line-height: 0.94 !important;
  }
  .splash-tagline {
    max-width: 34ch !important;
    font-size: 0.96rem !important;
    line-height: 1.48 !important;
  }
  .splash-personas {
    grid-template-columns: 1fr !important;
  }
  .splash-persona {
    min-height: 0 !important;
    padding: 16px 18px !important;
  }
  .sp-desc {
    font-size: 0.78rem !important;
  }
  .splash-sectors {
    padding-bottom: 2px;
  }
}

@media (prefers-reduced-motion: reduce) {
  header::after,
  .wm-hero-mesh,
  .wm-hero-counter-dot,
  .splash-bg-glow,
  .news-ticker-track,
  .kpi-ticker-inner,
  .weather-bar-inner {
    animation: none !important;
  }
  :where(button, a, [role="button"]),
  .splash-persona,
  .info-panel,
  .dashboard-panel,
  .filter-panel {
    transition-duration: 0.01ms !important;
  }
}

/* ============================================================
   Mobile UX polish pass v3: readable, tappable, low-collision chrome
   ============================================================ */
@media (max-width: 768px) {
  html,
  body {
    overflow-x: hidden;
  }

  body {
    --wm-mobile-edge: max(10px, env(safe-area-inset-left));
  }

  .lang-toggle {
    top: auto !important;
    right: max(10px, env(safe-area-inset-right)) !important;
    bottom: calc(12px + env(safe-area-inset-bottom)) !important;
    min-height: 44px;
    z-index: 132;
  }

  .lang-toggle a {
    min-width: 44px !important;
    min-height: 36px !important;
  }

  body.lp-is-collapsed #lpReopenTab {
    min-width: 44px !important;
    min-height: 44px !important;
  }

  .mobile-chip {
    min-height: 44px !important;
    padding: 10px 16px !important;
    border: 1px solid rgba(255, 255, 255, 0.14) !important;
    border-radius: 999px !important;
  }

  body.has-ticker #newsTickerBar,
  body.has-ticker .news-ticker-bar {
    display: none !important;
  }

  .alerts-toggle,
  #alertsToggleBtn,
  #scrollTopBtn,
  .globe-zoom-btn,
  .globe-overview-btn,
  .nav-btn,
  .info-close,
  .alerts-panel-close,
  .ap-close,
  .lp-close,
  .lp-collapse-btn,
  .wm-newsletter button,
  .info-action-btn,
  .info-social-chip,
  .info-link {
    min-width: 44px !important;
    min-height: 44px !important;
    touch-action: manipulation;
    -webkit-tap-highlight-color: rgba(0, 240, 255, 0.18);
  }

  .alerts-toggle,
  #alertsToggleBtn {
    width: 44px !important;
    height: 44px !important;
    bottom: calc(92px + env(safe-area-inset-bottom)) !important;
    right: max(12px, env(safe-area-inset-right)) !important;
  }

  #scrollTopBtn {
    width: 44px !important;
    height: 44px !important;
    bottom: calc(92px + env(safe-area-inset-bottom)) !important;
    right: calc(max(12px, env(safe-area-inset-right)) + 54px) !important;
  }

  .globe-overview-btn {
    bottom: calc(94px + env(safe-area-inset-bottom)) !important;
    left: max(12px, env(safe-area-inset-left)) !important;
    padding: 0 16px !important;
  }

  .globe-zoom-controls {
    right: max(12px, env(safe-area-inset-right)) !important;
    bottom: calc(148px + env(safe-area-inset-bottom)) !important;
    gap: 6px !important;
  }

  .globe-zoom-btn {
    width: 44px !important;
    height: 44px !important;
  }

  #leftPanel.left-panel-stack {
    left: 0 !important;
    right: 0 !important;
    bottom: 0 !important;
    width: 100vw !important;
    max-height: min(78dvh, calc(100dvh - 96px)) !important;
    border-radius: 24px 24px 0 0 !important;
  }

  #leftPanelHeader.lp-header {
    min-height: 60px;
    padding: 24px 16px 12px !important;
  }

  #leftPanelFeed.lp-feed {
    padding: 10px 12px calc(16px + env(safe-area-inset-bottom)) !important;
  }

  .lp-section {
    padding: 12px !important;
    margin-bottom: 10px !important;
  }

  .lp-section-head {
    min-height: 44px !important;
    gap: 8px !important;
  }

  .lp-alert,
  .lp-news-item,
  .lp-entity,
  .lp-live-card,
  .lp-bookmark-item {
    min-height: 44px !important;
    padding: 10px 11px !important;
  }

  .lp-alert-title,
  .lp-news-title,
  .lp-entity-name {
    font-size: 13px !important;
    line-height: 1.35 !important;
  }

  .lp-news-meta,
  .lp-alert-meta,
  .lp-entity-meta {
    font-size: 11px !important;
    line-height: 1.35 !important;
  }

  body.chrome-compact .info-panel,
  .info-panel {
    max-height: min(82dvh, calc(100dvh - 96px)) !important;
    border-radius: 24px 24px 0 0 !important;
  }

  .info-panel #infoPanelContent {
    max-height: min(82dvh, calc(100dvh - 96px)) !important;
    padding-bottom: calc(22px + env(safe-area-inset-bottom)) !important;
  }

  .info-panel .info-header {
    padding: 20px 18px 14px !important;
    padding-right: 70px !important;
  }

  .info-panel .info-body {
    padding: 14px 18px 20px !important;
  }

  .info-panel .info-name {
    font-size: clamp(21px, 5.8vw, 27px) !important;
    line-height: 1.12 !important;
  }

  .info-panel .info-description {
    font-size: 15px !important;
    line-height: 1.62 !important;
  }

  .info-panel .info-metric,
  .info-panel .subsidiary-item,
  .info-panel .project-item-panel,
  .info-panel .info-news-item {
    border-radius: 14px !important;
  }

  .alerts-panel {
    max-height: min(80dvh, calc(100dvh - 96px)) !important;
    border-radius: 24px 24px 0 0 !important;
  }

  .alerts-list,
  .ap-list {
    max-height: calc(min(80dvh, calc(100dvh - 96px)) - 126px) !important;
  }

  .alert-filter-btn {
    min-height: 44px !important;
    padding: 9px 12px !important;
  }
}

@media (max-width: 480px) {
  body {
    --wm-mobile-edge: max(8px, env(safe-area-inset-left));
  }

  .mobile-chip {
    padding-inline: 14px !important;
    font-size: 12px !important;
  }

  .splash-content {
    max-width: calc(100vw - 22px) !important;
    padding-top: 18px !important;
    padding-bottom: 78px !important;
  }

  .splash-title {
    max-width: 12ch !important;
    font-size: clamp(2rem, 12vw, 3.25rem) !important;
    line-height: 0.98 !important;
    letter-spacing: -0.055em !important;
  }

  .splash-tagline {
    max-width: 33ch !important;
    font-size: 0.94rem !important;
    line-height: 1.52 !important;
  }

  .splash-personas {
    gap: 9px !important;
  }

  .splash-persona {
    min-height: 74px !important;
    padding: 14px 16px !important;
  }

  .sp-label {
    font-size: 0.92rem !important;
  }

  .sp-desc {
    font-size: 0.76rem !important;
    line-height: 1.42 !important;
  }

  .splash-chip {
    min-height: 44px !important;
    padding: 9px 13px !important;
    font-size: 0.72rem !important;
  }

  .wm-newsletter input,
  .wm-newsletter select,
  .wm-newsletter button {
    min-height: 44px !important;
    font-size: 14px !important;
  }

  .info-panel .info-header {
    padding-left: 16px !important;
    padding-right: 66px !important;
  }

  .info-panel .info-body {
    padding-left: 16px !important;
    padding-right: 16px !important;
  }

  .info-panel .info-description {
    font-size: 14.5px !important;
  }

  .alerts-panel-header,
  .ap-header {
    padding-inline: 16px !important;
  }

  .alert-card,
  .ap-card {
    padding: 12px !important;
  }
}

/* ============================================================
   WattsMonde splash mini taste pass: editorial pre-globe screen
   ============================================================ */
.splash-overlay {
  align-items: center !important;
  justify-content: center !important;
  padding: clamp(24px, 5vh, 56px) clamp(18px, 4vw, 48px) !important;
  background:
    radial-gradient(circle at 16% 18%, rgba(0, 240, 255, 0.15), transparent 30%),
    radial-gradient(circle at 86% 76%, rgba(212, 160, 23, 0.12), transparent 34%),
    linear-gradient(135deg, #030408 0%, #090912 46%, #11100d 100%) !important;
  overscroll-behavior: contain;
}

.splash-overlay::before {
  content: '';
  position: fixed;
  inset: 0;
  pointer-events: none;
  background:
    linear-gradient(90deg, rgba(255, 255, 255, 0.055) 1px, transparent 1px),
    linear-gradient(rgba(255, 255, 255, 0.035) 1px, transparent 1px),
    linear-gradient(115deg, transparent 0 57%, rgba(212, 160, 23, 0.12) 57.2%, transparent 57.8%);
  background-size: 88px 88px, 88px 88px, 100% 100%;
  mask-image: radial-gradient(ellipse 84% 72% at 52% 48%, black 28%, transparent 82%);
  -webkit-mask-image: radial-gradient(ellipse 84% 72% at 52% 48%, black 28%, transparent 82%);
  opacity: 0.5;
}

.splash-bg {
  opacity: 0.92;
}

.splash-bg-grid {
  background-size: 72px 72px !important;
  opacity: 0.45;
}

.splash-glow-1 {
  background: radial-gradient(circle, rgba(0, 240, 255, 0.14) 0%, transparent 68%) !important;
}

.splash-glow-2 {
  background: radial-gradient(circle, rgba(212, 160, 23, 0.14) 0%, transparent 70%) !important;
}

.splash-overlay {
  align-items: flex-start !important;
}

.splash-content {
  display: flex;
  align-items: center;
  max-width: min(1180px, calc(100vw - 48px)) !important;
  min-height: 100svh;
  width: 100%;
  padding: clamp(28px, 4vh, 48px) 0 !important;
  text-align: left !important;
}

.splash-layout {
  display: grid;
  grid-template-columns: minmax(0, 1.08fr) minmax(360px, 0.78fr);
  gap: clamp(28px, 5vw, 76px);
  align-items: center;
  width: 100%;
}

.splash-hero {
  margin: 0 !important;
  padding: clamp(10px, 2vw, 24px) 0 !important;
  text-align: left !important;
}

.wm-hero-mesh {
  left: 42% !important;
  top: 50% !important;
  width: min(720px, 62vw) !important;
  opacity: 0.36 !important;
  filter: blur(42px) saturate(1.12) !important;
}

.splash-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  margin: 0 0 clamp(18px, 2.5vw, 28px) !important;
  color: var(--gold, #d4a017) !important;
  font-size: 0.72rem !important;
  letter-spacing: 0.26em !important;
}

.splash-eyebrow::before {
  content: '';
  width: 34px;
  height: 1px;
  background: linear-gradient(90deg, var(--gold, #d4a017), rgba(0, 240, 255, 0.45));
}

.splash-title {
  display: block !important;
  max-width: 13ch !important;
  margin: 0 0 clamp(18px, 2.3vw, 28px) !important;
  overflow: visible !important;
  color: #f7f3ea !important;
  font-size: clamp(3.35rem, 7.4vw, 6.35rem) !important;
  font-weight: 900 !important;
  letter-spacing: -0.065em !important;
  line-height: 0.9 !important;
  text-wrap: balance;
  text-shadow: 0 30px 90px rgba(0, 0, 0, 0.62) !important;
}

.splash-tagline {
  max-width: 53ch !important;
  margin: 0 0 18px !important;
  color: rgba(247, 243, 234, 0.78) !important;
  font-size: clamp(1rem, 1.35vw, 1.18rem) !important;
  font-weight: 520 !important;
  line-height: 1.68 !important;
}

.splash-proofline {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  max-width: 560px;
  margin: 0 0 18px;
}

.splash-proofline span {
  display: inline-flex;
  align-items: center;
  min-height: 34px;
  padding: 7px 11px;
  border: 1px solid rgba(255, 255, 255, 0.11);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.04);
  color: rgba(247, 243, 234, 0.72);
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.01em;
}

.splash-proofline b {
  margin-right: 5px;
  color: var(--gold, #d4a017);
  font-family: var(--font-mono, monospace);
  font-size: 0.86rem;
}

.wm-hero-counter {
  justify-content: flex-start !important;
  border-color: rgba(0, 240, 255, 0.22) !important;
  background: rgba(0, 240, 255, 0.075) !important;
  color: rgba(247, 243, 234, 0.68) !important;
}

.wm-landing-points {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
  max-width: 680px;
  margin-top: 18px;
}

.wm-landing-points article {
  min-height: 118px;
  padding: 15px;
  border: 1px solid rgba(255, 255, 255, 0.11);
  border-radius: 18px;
  background: rgba(255, 255, 255, 0.045);
}

.wm-landing-points strong,
.wm-landing-points span {
  display: block;
}

.wm-landing-points strong {
  margin-bottom: 8px;
  color: #fffaf1;
  font-size: 0.86rem;
  line-height: 1.2;
}

.wm-landing-points span {
  color: rgba(247, 243, 234, 0.62);
  font-size: 0.78rem;
  line-height: 1.45;
}

.splash-entry-panel {
  position: relative;
  align-self: center;
  max-height: calc(100svh - 72px);
  overflow-y: auto;
  overscroll-behavior: contain;
  padding: clamp(20px, 2.8vw, 32px);
  border: 1px solid rgba(255, 255, 255, 0.15);
  border-radius: 22px;
  background:
    linear-gradient(160deg, rgba(255, 255, 255, 0.095), rgba(255, 255, 255, 0.035) 46%, rgba(0, 240, 255, 0.045)),
    rgba(5, 6, 12, 0.88);
  box-shadow: 0 34px 110px rgba(0, 0, 0, 0.48), 0 0 0 1px rgba(0, 240, 255, 0.05) inset;
  backdrop-filter: blur(22px) saturate(1.18);
  -webkit-backdrop-filter: blur(22px) saturate(1.18);
}

.splash-entry-panel .wm-entry-route-preview {
  border-color: rgba(94, 234, 212, 0.18);
  background: rgba(15, 23, 42, 0.42);
}

.splash-entry-panel .wm-entry-route-preview .wm-entry-secondary-button {
  min-height: 44px;
  font-size: 0.88rem;
}

.splash-entry-panel::before {
  content: '';
  position: absolute;
  top: 14px;
  right: 14px;
  width: 46px;
  height: 46px;
  border-top: 1px solid rgba(212, 160, 23, 0.72);
  border-right: 1px solid rgba(212, 160, 23, 0.72);
  pointer-events: none;
}

.splash-entry-head {
  display: grid;
  gap: 8px;
  margin-bottom: 18px;
  padding-right: 54px;
}

.splash-question {
  margin: 0 !important;
  color: #f7f3ea !important;
  font-size: 0.78rem !important;
  letter-spacing: 0.23em !important;
}

.splash-entry-copy {
  max-width: 34ch;
  color: rgba(247, 243, 234, 0.62);
  font-size: 0.9rem;
  line-height: 1.55;
}

.splash-personas {
  display: grid !important;
  grid-template-columns: 1fr !important;
  gap: 10px !important;
  max-width: none !important;
  margin: 0 0 18px !important;
}

.splash-persona {
  display: grid !important;
  grid-template-columns: 42px minmax(0, 1fr);
  align-items: center !important;
  gap: 4px 12px !important;
  min-height: 76px !important;
  padding: 14px 48px 14px 14px !important;
  border-color: rgba(255, 255, 255, 0.13) !important;
  border-radius: 15px !important;
  background: rgba(255, 255, 255, 0.045) !important;
  box-shadow: none !important;
  transition: transform 180ms cubic-bezier(0.22, 1, 0.36, 1), border-color 180ms ease, background 180ms ease, box-shadow 180ms ease !important;
}

.splash-persona::before {
  background: linear-gradient(135deg, rgba(0, 240, 255, 0.12), transparent 62%) !important;
}

.splash-persona::after {
  right: 18px !important;
  top: 50% !important;
  transform: translateY(-50%) !important;
  color: rgba(247, 243, 234, 0.36) !important;
}

.splash-persona:hover,
.splash-persona:focus-visible {
  transform: translateY(-2px) !important;
  border-color: rgba(0, 240, 255, 0.45) !important;
  background: rgba(0, 240, 255, 0.09) !important;
  box-shadow: 0 14px 38px rgba(0, 0, 0, 0.28), 0 0 0 1px rgba(0, 240, 255, 0.12) inset !important;
}

.splash-persona:hover::after,
.splash-persona:focus-visible::after {
  color: var(--orange, #00f0ff) !important;
  transform: translate(4px, -50%) !important;
}

.splash-persona:active {
  transform: translateY(0) scale(0.99) !important;
}

.splash-persona-primary {
  min-height: 92px !important;
  border-color: rgba(212, 160, 23, 0.46) !important;
  background:
    linear-gradient(135deg, rgba(212, 160, 23, 0.22), rgba(0, 240, 255, 0.08)),
    rgba(255, 255, 255, 0.06) !important;
  box-shadow: 0 18px 48px rgba(0, 0, 0, 0.34), 0 0 34px rgba(212, 160, 23, 0.08) !important;
}

.splash-persona-primary:hover,
.splash-persona-primary:focus-visible {
  border-color: rgba(212, 160, 23, 0.72) !important;
  background:
    linear-gradient(135deg, rgba(212, 160, 23, 0.3), rgba(0, 240, 255, 0.12)),
    rgba(255, 255, 255, 0.075) !important;
}

.splash-persona .sp-icon {
  grid-row: span 2;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  border: 1px solid rgba(255, 255, 255, 0.1);
  border-radius: 999px;
  background: rgba(0, 0, 0, 0.2);
  font-size: 1.18rem !important;
}

.splash-persona .sp-label {
  color: #fffaf1 !important;
  font-size: 0.98rem !important;
  line-height: 1.15;
}

.splash-persona-primary .sp-label {
  font-size: 1.1rem !important;
}

.splash-persona .sp-desc {
  max-width: 100% !important;
  color: rgba(247, 243, 234, 0.62) !important;
  font-size: 0.78rem !important;
  line-height: 1.42 !important;
}

.splash-sector-block {
  display: grid;
  gap: 10px;
  padding-top: 18px;
  border-top: 1px solid rgba(255, 255, 255, 0.09);
}

.splash-section-label {
  margin: 0 !important;
  color: rgba(247, 243, 234, 0.42) !important;
  letter-spacing: 0.22em !important;
}

.splash-sectors {
  justify-content: flex-start !important;
  gap: 7px !important;
  margin: 0 !important;
  opacity: 1 !important;
}

.splash-chip {
  min-height: 34px;
  padding: 8px 11px !important;
  border-color: color-mix(in srgb, var(--chip-color) 32%, transparent) !important;
  background: color-mix(in srgb, var(--chip-color) 11%, transparent) !important;
  color: color-mix(in srgb, var(--chip-color) 82%, #fff) !important;
  text-decoration: none;
  transition: transform 160ms cubic-bezier(0.22, 1, 0.36, 1), background 160ms ease, border-color 160ms ease !important;
}

.splash-chip:hover,
.splash-chip:focus-visible {
  transform: translateY(-1px);
  border-color: color-mix(in srgb, var(--chip-color) 54%, transparent) !important;
  background: color-mix(in srgb, var(--chip-color) 18%, transparent) !important;
}

.splash-loading {
  align-items: flex-start !important;
  margin-top: 18px !important;
}

.splash-loading-bar {
  width: min(260px, 100%) !important;
  height: 3px !important;
  background: rgba(255, 255, 255, 0.09) !important;
}

.splash-loading-fill {
  background: linear-gradient(90deg, var(--orange, #00f0ff), var(--gold, #d4a017)) !important;
}

.splash-loading-text {
  color: rgba(247, 243, 234, 0.42) !important;
}

.splash-beta-note {
  margin: 8px 0 0;
  font-size: 11px;
  font-style: italic;
  color: rgba(0, 240, 255, 0.55);
  letter-spacing: 0.2px;
  line-height: 1.4;
  text-align: center;
}

.splash-footer {
  justify-content: flex-start !important;
  margin-top: 18px !important;
}

.wm-skip-splash {
  right: calc(24px + env(safe-area-inset-right)) !important;
  bottom: calc(20px + env(safe-area-inset-bottom)) !important;
  border: 1px solid rgba(255, 255, 255, 0.1) !important;
  background: rgba(5, 6, 12, 0.62) !important;
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}

.wm-skip-splash:not(.disabled):hover,
.wm-skip-splash:not(.disabled):focus-visible {
  border-color: rgba(0, 240, 255, 0.32) !important;
  background: rgba(0, 240, 255, 0.1) !important;
}

@media (prefers-reduced-motion: no-preference) {
  .splash-hero {
    animation: splashEditorialIn 620ms cubic-bezier(0.22, 1, 0.36, 1) both;
  }

  .splash-entry-panel {
    animation: splashPanelIn 720ms cubic-bezier(0.22, 1, 0.36, 1) 120ms both;
  }

  .splash-persona {
    animation: splashChoiceIn 520ms cubic-bezier(0.22, 1, 0.36, 1) both;
  }

  .splash-persona:nth-child(1) { animation-delay: 220ms; }
  .splash-persona:nth-child(2) { animation-delay: 280ms; }
  .splash-persona:nth-child(3) { animation-delay: 340ms; }
  .splash-persona:nth-child(4) { animation-delay: 400ms; }
}

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

@keyframes splashPanelIn {
  from { opacity: 0; transform: translateY(20px) scale(0.985); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}

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

@media (max-width: 768px) {
  .splash-overlay {
    align-items: flex-start !important;
    padding: calc(24px + env(safe-area-inset-top)) 18px calc(78px + env(safe-area-inset-bottom)) !important;
  }

  .splash-content {
    display: block;
    max-width: 100% !important;
    min-height: auto;
    padding: 0 !important;
  }

  .splash-layout {
    grid-template-columns: 1fr;
    gap: 24px;
  }

  .splash-hero {
    padding-top: 6px !important;
  }

  .wm-hero-mesh {
    left: 50% !important;
    width: 112vw !important;
    opacity: 0.28 !important;
  }

  .splash-eyebrow {
    margin-bottom: 18px !important;
    font-size: 0.66rem !important;
  }

  .splash-title {
    max-width: 12ch !important;
    font-size: clamp(2.8rem, 12vw, 4.9rem) !important;
    line-height: 0.9 !important;
  }

  .splash-tagline {
    max-width: 44ch !important;
    font-size: 1rem !important;
    line-height: 1.58 !important;
  }

  .splash-proofline {
    margin-bottom: 14px;
  }

  .splash-entry-panel {
    max-height: none;
    overflow: visible;
    padding: 20px !important;
    border-radius: 20px;
  }

  .wm-landing-points {
    grid-template-columns: 1fr;
    max-width: none;
  }

  .wm-landing-points article {
    min-height: auto;
  }

  .splash-personas {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }

  .splash-persona-primary {
    grid-column: 1 / -1;
  }

  .splash-persona {
    min-height: 112px !important;
    align-content: center !important;
    padding: 14px 42px 14px 14px !important;
  }

  .splash-sectors {
    flex-wrap: nowrap !important;
    overflow-x: auto !important;
    padding-bottom: 4px !important;
    scroll-snap-type: x proximity;
  }

  .splash-chip {
    flex: 0 0 auto !important;
    scroll-snap-align: start;
  }
}

@media (max-width: 480px) {
  .splash-overlay {
    padding: calc(18px + env(safe-area-inset-top)) 14px calc(78px + env(safe-area-inset-bottom)) !important;
  }

  .splash-layout {
    gap: 18px;
  }

  .splash-title {
    max-width: 11ch !important;
    margin-bottom: 14px !important;
    font-size: clamp(2.35rem, 13vw, 3.55rem) !important;
    letter-spacing: -0.055em !important;
  }

  .splash-tagline {
    max-width: 34ch !important;
    margin-bottom: 14px !important;
    font-size: 0.94rem !important;
    line-height: 1.52 !important;
  }

  .splash-proofline {
    gap: 6px;
  }

  .splash-proofline span {
    min-height: 31px;
    padding: 6px 9px;
    font-size: 0.7rem;
  }

  .wm-hero-counter {
    max-width: 100%;
    font-size: 0.67rem !important;
  }

  .splash-entry-panel {
    padding: 16px !important;
    border-radius: 18px;
  }

  .splash-entry-panel::before {
    width: 34px;
    height: 34px;
  }

  .splash-entry-head {
    padding-right: 38px;
  }

  .splash-entry-copy {
    font-size: 0.84rem;
  }

  .splash-personas {
    grid-template-columns: 1fr !important;
    gap: 8px !important;
  }

  .splash-persona {
    min-height: 74px !important;
    grid-template-columns: 38px minmax(0, 1fr);
    padding: 12px 40px 12px 12px !important;
  }

  .splash-persona-primary {
    min-height: 84px !important;
  }

  .splash-persona .sp-icon {
    width: 38px;
    height: 38px;
    font-size: 1.02rem !important;
  }

  .splash-persona .sp-label,
  .splash-persona-primary .sp-label {
    font-size: 0.92rem !important;
  }

  .splash-persona .sp-desc {
    font-size: 0.72rem !important;
  }

  .splash-footer {
    flex-wrap: wrap;
    row-gap: 6px;
  }

  .wm-skip-splash {
    right: calc(12px + env(safe-area-inset-right)) !important;
    bottom: calc(12px + env(safe-area-inset-bottom)) !important;
    min-height: 44px;
    padding: 10px 13px !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  .splash-content > *,
  .splash-hero,
  .splash-entry-panel,
  .splash-persona {
    animation: none !important;
  }
}

/* ============================================================
   Datafeed foundation: left-panel, reopen tab, dashboard tab
   ============================================================ */
#leftPanel.left-panel-stack {
  position: fixed;
  left: 12px;
  top: 86px;
  bottom: 54px;
  width: clamp(320px, 28vw, 420px);
  z-index: 85;
  display: flex;
  flex-direction: column;
  background: rgba(16, 14, 24, 0.80);
  backdrop-filter: blur(18px) saturate(1.4);
  -webkit-backdrop-filter: blur(18px) saturate(1.4);
  border: 1px solid rgba(255, 255, 255, 0.10);
  border-radius: 18px;
  box-shadow: 0 20px 60px -10px rgba(0, 0, 0, 0.5),
              0 0 0 1px rgba(255, 255, 255, 0.05) inset,
              0 1px 0 0 rgba(255, 255, 255, 0.07) inset;
  overflow: hidden;
  transition: transform 0.35s cubic-bezier(.2,.8,.2,1),
              width 0.35s cubic-bezier(.2,.8,.2,1),
              opacity 0.25s ease;
  font-family: 'Inter', -apple-system, system-ui, sans-serif;
}
/* Collapsed state: slide off-screen left, leave a re-open tab */
#leftPanel.left-panel-stack.lp-collapsed {
  transform: translateX(calc(-100% - 24px));
  opacity: 0;
  pointer-events: none;
}
/* Re-open tab controls (only visible when panel collapsed) */
#lpReopenTab {
  position: fixed;
  left: 0;
  top: 50%;
  transform: translateY(-50%);
  width: 58px;
  min-height: 220px;
  padding: 7px;
  background: linear-gradient(180deg, rgba(24, 21, 31, 0.96), rgba(9, 8, 14, 0.95));
  backdrop-filter: blur(18px);
  -webkit-backdrop-filter: blur(18px);
  border: 1px solid rgba(255, 255, 255, 0.14);
  border-left: none;
  border-radius: 0 18px 18px 0;
  color: rgba(242, 238, 231, 0.88);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.08em;
  z-index: 86;
  display: none;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 8px;
  box-shadow: 10px 0 34px rgba(0, 0, 0, 0.46),
              0 0 0 1px rgba(255, 255, 255, 0.04) inset;
  transition: background 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease;
  font-family: inherit;
  -webkit-tap-highlight-color: transparent;
}
#lpReopenTab button {
  font: inherit;
  touch-action: manipulation;
  -webkit-tap-highlight-color: transparent;
}
#lpReopenTab .lp-rt-primary {
  width: 100%;
  min-height: 146px;
  display: flex;
  flex: 1 1 auto;
}
#lpReopenTab .lp-rt-secondary {
  width: 100%;
  padding-top: 8px;
  border-top: 1px solid rgba(255, 255, 255, 0.12);
  display: flex;
  justify-content: center;
}
#lpReopenTab .lp-rt-feed-action,
#lpReopenTab .lp-rt-dashboard-action {
  border: 1px solid transparent;
  color: inherit;
  cursor: pointer;
  padding: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background 0.18s ease, border-color 0.18s ease, color 0.18s ease, transform 0.18s ease, box-shadow 0.18s ease;
}
#lpReopenTab .lp-rt-feed-action {
  flex: 1;
  width: 100%;
  min-width: 44px;
  min-height: 146px;
  padding: 12px 6px;
  flex-direction: column;
  gap: 12px;
  border-color: rgba(255, 102, 0, 0.42);
  border-radius: 13px;
  background: linear-gradient(180deg, rgba(255, 102, 0, 0.20), rgba(255, 102, 0, 0.055));
  color: #fff7ed;
  box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.035) inset;
}
#lpReopenTab .lp-rt-arrow {
  width: 28px;
  height: 28px;
  border-radius: 999px;
  display: grid;
  place-items: center;
  background: rgba(255, 102, 0, 0.22);
  font-size: 17px;
  line-height: 1;
  color: #fff;
}
#lpReopenTab .lp-rt-copy {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  writing-mode: vertical-rl;
  transform: rotate(180deg);
  white-space: nowrap;
}
#lpReopenTab .lp-rt-kicker {
  color: rgba(255, 255, 255, 0.52);
  font-size: 9px;
  letter-spacing: 0.10em;
  text-transform: uppercase;
}
#lpReopenTab .lp-rt-label {
  text-transform: uppercase;
  letter-spacing: 0.12em;
}
#lpReopenTab .lp-rt-dashboard-action {
  width: 44px;
  height: 44px;
  flex-shrink: 0;
  flex-direction: column;
  gap: 2px;
  border-radius: 14px;
  border-color: rgba(255, 255, 255, 0.16);
  background: rgba(255, 255, 255, 0.055);
  font-size: 15px;
  line-height: 1;
}
#lpReopenTab .lp-rt-dashboard-icon {
  font-size: 15px;
  line-height: 1;
}
#lpReopenTab .lp-rt-dashboard-label {
  font-size: 7.5px;
  line-height: 1;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.58);
}
#lpReopenTab .lp-rt-feed-action:focus-visible,
#lpReopenTab .lp-rt-dashboard-action:focus-visible {
  outline: 2px solid rgba(255, 162, 92, 0.92);
  outline-offset: 2px;
}
#lpReopenTab .lp-rt-feed-action:active,
#lpReopenTab .lp-rt-dashboard-action:active {
  transform: scale(0.97);
}
#lpReopenTab .lp-rt-dashboard-action[aria-pressed="true"] {
  color: #fff;
  border-color: rgba(0, 240, 255, 0.48);
  background: rgba(0, 240, 255, 0.16);
  box-shadow: 0 0 18px rgba(0, 240, 255, 0.18);
}
@media (hover: hover) and (pointer: fine) {
  #lpReopenTab:hover {
    background: linear-gradient(180deg, rgba(28, 24, 34, 0.98), rgba(11, 10, 17, 0.98));
    border-color: rgba(255, 255, 255, 0.22);
    box-shadow: 12px 0 38px rgba(0, 0, 0, 0.52),
                0 0 0 1px rgba(255, 255, 255, 0.05) inset;
  }
  #lpReopenTab .lp-rt-feed-action:hover {
    border-color: rgba(255, 142, 58, 0.68);
    background: linear-gradient(180deg, rgba(255, 102, 0, 0.28), rgba(255, 102, 0, 0.085));
    box-shadow: 0 0 22px rgba(255, 102, 0, 0.14);
  }
  #lpReopenTab .lp-rt-dashboard-action:hover {
    border-color: rgba(0, 240, 255, 0.45);
    background: rgba(0, 240, 255, 0.11);
    color: #fff;
  }
  #lpReopenTab .lp-rt-dashboard-action:hover .lp-rt-dashboard-label {
    color: rgba(255, 255, 255, 0.78);
  }
}
/* The legacy data-feed reopen rail duplicates the premium shell navigation and
   reads as a stray vertical tab on the globe. Keep the left panel collapse
   state, but do not surface this old rail anymore. */
body.lp-is-collapsed #lpReopenTab { display: none !important; }
/* Collapse button in header */
.lp-collapse-btn {
  flex-shrink: 0;
  margin-left: auto;
  width: 28px;
  height: 28px;
  border-radius: 6px;
  border: 1px solid rgba(255,255,255,0.1);
  background: rgba(255,255,255,0.04);
  color: #d1d5db;
  font-size: 14px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.15s;
}
.lp-collapse-btn:hover {
  background: rgba(0,240,255,0.10);
  color: #00f0ff;
  border-color: rgba(0,240,255,0.30);
}

/* Header */
#leftPanelHeader.lp-header {
  flex-shrink: 0;
  padding: 14px 18px;
  padding-right: 50px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
  display: flex;
  align-items: center;
  gap: 12px;
  background: rgba(255, 255, 255, 0.03);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}
.lp-logo {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
}
.lp-logo-icon {
  width: 28px; height: 28px;
  border-radius: 8px;
  display: grid; place-items: center;
  background: linear-gradient(135deg, #00f0ff, #0099aa);
  color: #08080f;
  font-size: 15px;
  box-shadow: 0 3px 10px rgba(0, 240, 255, 0.35);
}
.lp-logo-text {
  font-family: 'Newsreader', 'Playfair Display', Georgia, serif;
  font-weight: 600;
  font-size: 17px;
  letter-spacing: -0.01em;
  color: #fff;
  white-space: nowrap;
}
.lp-logo-text span { color: #00f0ff; font-style: italic; }

.lp-search-box {
  flex: 1;
  position: relative;
  display: flex;
  align-items: center;
}
.lp-search-box svg {
  position: absolute;
  left: 10px;
  width: 14px; height: 14px;
  color: rgba(255,255,255,0.4);
  pointer-events: none;
}
.lp-search-box input {
  width: 100%;
  padding: 8px 10px 8px 30px;
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 10px;
  color: #fff;
  font-size: 12px;
  transition: all 0.2s;
  font-family: inherit;
}
.lp-search-box input::placeholder { color: rgba(255,255,255,0.4); }
.lp-search-box input:focus {
  border-color: rgba(255, 102, 0, 0.6);
  background: rgba(255,255,255,0.08);
}

.lp-close {
  display: none;
  background: rgba(255,255,255,0.08);
  border: none;
  color: #fff;
  width: 30px; height: 30px;
  border-radius: 8px;
  cursor: pointer;
  font-size: 16px;
}

.lp-close-btn {
  position: absolute;
  top: 12px;
  right: 12px;
  width: 32px;
  height: 32px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.06);
  border: 1px solid rgba(255, 255, 255, 0.14);
  color: rgba(255, 255, 255, 0.85);
  font-size: 18px;
  line-height: 1;
  cursor: pointer;
  z-index: 10;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.15s;
  font-family: inherit;
}
.lp-close-btn:hover {
  background: rgba(255, 102, 0, 0.18);
  border-color: rgba(255, 140, 60, 0.4);
  color: #fff;
}

/* Feed */
#leftPanelFeed.lp-feed {
  flex: 1;
  overflow-y: auto;
  overflow-x: hidden;
  padding: 12px;
  scrollbar-width: thin;
  scrollbar-color: rgba(255,255,255,0.15) transparent;
}
#leftPanelFeed::-webkit-scrollbar { width: 6px; }
#leftPanelFeed::-webkit-scrollbar-track { background: transparent; }
#leftPanelFeed::-webkit-scrollbar-thumb {
  background: rgba(255,255,255,0.12);
  border-radius: 3px;
}
#leftPanelFeed::-webkit-scrollbar-thumb:hover { background: rgba(255,255,255,0.22); }

/* Section card — liquid-glass treatment */
.lp-section {
  background: rgba(255, 255, 255, 0.03);
  border: 1px solid rgba(255, 255, 255, 0.07);
  border-radius: 14px;
  padding: 14px 16px;
  margin-bottom: 10px;
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12),
              0 0 0 1px rgba(255, 255, 255, 0.03) inset;
}
.lp-section-head {
  display: flex;
  align-items: center;
  gap: 8px;
  cursor: pointer;
  user-select: none;
  margin: 0 -4px 10px;
  padding: 6px 10px;
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.025);
  border: 1px solid rgba(255, 255, 255, 0.04);
  font-family: 'Inter', sans-serif;
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 1px;
  color: rgba(255,255,255,0.55);
  transition: color 0.2s, background 0.18s, border-color 0.18s;
}
.lp-section-head:hover {
  color: rgba(255,255,255,0.85);
  background: rgba(255, 255, 255, 0.045);
  border-color: rgba(255, 255, 255, 0.08);
}
.lp-section-head .lp-sec-icon { font-size: 13px; }
.lp-section-head .lp-sec-label { flex: 1; }
.lp-section-head .lp-sec-chevron {
  font-size: 10px;
  color: rgba(255,255,255,0.4);
  transition: transform 0.2s;
}
.lp-fresh-chip {
  flex-shrink: 0;
  padding: 2px 7px;
  border-radius: 999px;
  background: rgba(255,255,255,0.06);
  color: rgba(255,255,255,0.42);
  font-size: 9.5px;
  font-weight: 700;
  letter-spacing: 0;
  text-transform: none;
  white-space: nowrap;
}
.lp-fresh-chip[hidden] { display: none; }
.lp-section.collapsed .lp-sec-chevron { transform: rotate(-90deg); }
.lp-section.collapsed .lp-section-body { display: none; }

.lp-section-body { font-family: 'Inter', sans-serif; }

/* generic row */
.lp-row {
  padding: 10px 0;
  border-bottom: 1px solid rgba(255,255,255,0.05);
}
.lp-row:last-child { border-bottom: none; padding-bottom: 0; }
.lp-row:first-child { padding-top: 0; }

/* Section 1: live stats */
.lp-live-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 8px;
}
.lp-live-card {
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.06);
  border-radius: 12px;
  padding: 10px 12px;
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.10);
}
.lp-live-card-label {
  font-size: 10px;
  color: rgba(255,255,255,0.5);
  text-transform: uppercase;
  letter-spacing: 0.5px;
  margin-bottom: 4px;
  display: flex;
  align-items: center;
  gap: 5px;
}
.lp-live-card-price {
  font-size: 16px;
  font-weight: 700;
  color: #fff;
  font-variant-numeric: tabular-nums;
}
.lp-live-card-change {
  display: inline-block;
  font-size: 11px;
  font-weight: 600;
  margin-left: 6px;
  font-variant-numeric: tabular-nums;
}
.lp-live-card-change.up { color: #22c55e; }
.lp-live-card-change.down { color: #ef4444; }
.lp-spark {
  height: 20px;
  margin-top: 4px;
  opacity: 0.5;
}

/* Section 2: alerts */
.lp-alert {
  padding: 10px 12px;
  margin-bottom: 8px;
  background: rgba(255,255,255,0.03);
  border-radius: 10px;
  border: 1px solid rgba(255,255,255,0.06);
  cursor: pointer;
  transition: background 0.2s, border-color 0.2s;
  position: relative;
  overflow: hidden;
}
.lp-alert:last-child { margin-bottom: 0; }
.lp-alert:hover { background: rgba(255,255,255,0.06); }
.lp-alert.critical {
  background: rgba(239, 68, 68, 0.06);
  border-color: rgba(239, 68, 68, 0.15);
}
.lp-alert.warning {
  background: rgba(245, 158, 11, 0.06);
  border-color: rgba(245, 158, 11, 0.15);
}
.lp-alert.info {
  background: rgba(59, 130, 246, 0.06);
  border-color: rgba(59, 130, 246, 0.15);
}
.lp-alert-title {
  font-size: 12px;
  font-weight: 600;
  color: #fff;
  line-height: 1.35;
  margin-bottom: 3px;
}
.lp-alert-meta {
  font-size: 10px;
  color: rgba(255,255,255,0.45);
  text-transform: uppercase;
  letter-spacing: 0.5px;
}

/* Section 3: genmix bars */
.lp-gen-country { margin-bottom: 10px; }
.lp-gen-country:last-child { margin-bottom: 0; }
.lp-gen-country-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-size: 11px;
  color: rgba(255,255,255,0.75);
  margin-bottom: 4px;
}
.lp-gen-flag { font-size: 13px; margin-right: 4px; }
.lp-gen-low-carbon-badge {
  background: rgba(34, 197, 94, 0.15);
  color: #4ade80;
  padding: 2px 7px;
  border-radius: 10px;
  font-size: 10px;
  font-weight: 600;
}
.lp-gen-bar {
  display: flex;
  height: 8px;
  border-radius: 4px;
  overflow: hidden;
  background: rgba(255,255,255,0.05);
}
.lp-gen-bar-seg {
  height: 100%;
  transition: width 0.4s;
}

/* Section 4: news */
.lp-news-item {
  display: block;
  padding: 10px 12px;
  border: 1px solid rgba(255,255,255,0.06);
  border-radius: 8px;
  margin-bottom: 6px;
  cursor: pointer;
  transition: background 0.2s, border-color 0.2s;
  text-decoration: none;
  color: inherit;
}
.lp-news-item:hover { background: rgba(255,255,255,0.03); }
.lp-news-item:last-child { margin-bottom: 0; }
.lp-news-item.solaire {
  background: rgba(255, 215, 0, 0.04);
  border-color: rgba(255, 215, 0, 0.12);
}
.lp-news-item.eolien {
  background: rgba(0, 191, 255, 0.04);
  border-color: rgba(0, 191, 255, 0.12);
}
.lp-news-item.nucleaire {
  background: rgba(255, 69, 0, 0.04);
  border-color: rgba(255, 69, 0, 0.12);
}
.lp-news-item.oil {
  background: rgba(239, 68, 68, 0.04);
  border-color: rgba(239, 68, 68, 0.12);
}
.lp-news-item.hydro {
  background: rgba(0, 206, 209, 0.04);
  border-color: rgba(0, 206, 209, 0.12);
}
.lp-news-item.grid {
  background: rgba(147, 112, 219, 0.04);
  border-color: rgba(147, 112, 219, 0.12);
}
.lp-news-title {
  font-family: 'Newsreader', 'Playfair Display', Georgia, serif;
  font-size: 14px;
  font-weight: 600;
  line-height: 1.35;
  color: #fff;
  margin-bottom: 4px;
}
.lp-news-meta {
  font-size: 10px;
  color: rgba(255,255,255,0.45);
  text-transform: uppercase;
  letter-spacing: 0.5px;
}
.lp-news-hot {
  display: inline-block;
  background: rgba(239, 68, 68, 0.2);
  color: #ff7373;
  padding: 1px 5px;
  border-radius: 3px;
  font-size: 9px;
  margin-right: 5px;
  font-weight: 700;
}

/* Section 5/6: entity rows */
.lp-entity {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 0;
  border-bottom: 1px solid rgba(255,255,255,0.05);
  cursor: pointer;
  transition: background 0.2s;
}
.lp-entity:hover { background: rgba(255,255,255,0.03); padding-left: 6px; padding-right: 6px; margin: 0 -6px; border-radius: 8px; }
.lp-entity:last-child { border-bottom: none; }
.lp-entity-icon {
  width: 34px; height: 34px;
  border-radius: 10px;
  display: grid; place-items: center;
  font-size: 16px;
  flex-shrink: 0;
  background: rgba(255,255,255,0.06);
}
.lp-entity-body { flex: 1; min-width: 0; }
.lp-entity-name {
  font-family: 'Newsreader', 'Playfair Display', Georgia, serif;
  font-size: 15px;
  font-weight: 600;
  color: #fff;
  line-height: 1.3;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.lp-entity-meta {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-top: 3px;
  font-size: 10px;
  color: rgba(255,255,255,0.5);
}
.lp-sector-badge {
  padding: 1px 6px;
  border-radius: 3px;
  font-size: 9px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.3px;
}

/* skeletons */
.lp-skeleton {
  background: linear-gradient(90deg,
    rgba(255,255,255,0.03) 25%,
    rgba(255,255,255,0.08) 50%,
    rgba(255,255,255,0.03) 75%);
  background-size: 200% 100%;
  animation: lpShimmer 1.5s infinite;
  border-radius: 6px;
}
@keyframes lpShimmer {
  0%   { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}
.lp-error {
  color: rgba(255,255,255,0.4);
  font-size: 11px;
  font-style: italic;
  text-align: center;
  padding: 8px;
}

/* Mobile toggle button */
#leftPanelToggle {
  display: none;
  position: fixed;
  bottom: 20px;
  left: 20px;
  width: 48px;
  height: 48px;
  border-radius: 50%;
  background: rgba(20,18,28,0.92);
  backdrop-filter: blur(20px);
  border: 1px solid rgba(255,255,255,0.12);
  color: #fff;
  font-size: 20px;
  cursor: pointer;
  z-index: 84;
  box-shadow: 0 6px 20px rgba(0,0,0,0.5);
}

/* Responsive - hide existing filter/info-panel overlap on desktop? (kept separate) */

/* Mobile */
@media (max-width: 768px) {
  #leftPanel.left-panel-stack {
    width: 100%;
    left: 0;
    right: 0;
    top: auto;
    bottom: 0;
    max-height: 80vh;
    border-radius: 24px 24px 0 0;
    border-left: none;
    border-right: none;
    border-bottom: none;
    transform: translateY(100%);
    z-index: 150;
  }
  #leftPanel.left-panel-stack.open { transform: translateY(0); }
  #leftPanel.left-panel-stack::before {
    content: '';
    position: absolute;
    top: 8px;
    left: 50%;
    transform: translateX(-50%);
    width: 36px;
    height: 4px;
    background: rgba(255,255,255,0.25);
    border-radius: 2px;
    z-index: 2;
  }
  #leftPanelHeader.lp-header {
    padding: 24px 16px 12px;
    padding-right: 16px;
  }
  .lp-close-btn { display: none; }
  .lp-close { display: grid; place-items: center; width: 44px; height: 44px; font-size: 20px; }
  #leftPanelToggle { display: none; }
  #lpReopenTab {
    left: max(10px, env(safe-area-inset-left));
    top: calc(150px + env(safe-area-inset-top));
    transform: none;
    width: auto;
    max-width: calc(100vw - 20px - env(safe-area-inset-left) - env(safe-area-inset-right));
    min-width: 104px;
    min-height: 54px;
    padding: 5px;
    border-left: 1px solid rgba(255, 255, 255, 0.14);
    border-radius: 999px;
    flex-direction: row;
    align-items: stretch;
    gap: 6px;
    font-size: 11px;
    letter-spacing: 0.08em;
    z-index: 135;
    box-shadow: 0 10px 30px rgba(0,0,0,0.42);
  }
  #lpReopenTab .lp-rt-primary {
    width: auto;
    min-height: 44px;
    flex: 0 1 auto;
  }
  #lpReopenTab .lp-rt-secondary {
    width: auto;
    padding-top: 0;
    padding-left: 6px;
    border-top: 0;
    border-left: 1px solid rgba(255, 255, 255, 0.12);
  }
  #lpReopenTab .lp-rt-feed-action {
    width: auto;
    min-width: 118px;
    min-height: 44px;
    height: 44px;
    flex: 0 1 auto;
    flex-direction: row;
    gap: 8px;
    padding: 0 14px 0 10px;
    border-radius: 999px;
  }
  #lpReopenTab .lp-rt-arrow {
    width: 28px;
    height: 28px;
    font-size: 15px;
  }
  #lpReopenTab .lp-rt-copy {
    writing-mode: horizontal-tb;
    transform: none;
    gap: 4px;
  }
  #lpReopenTab .lp-rt-kicker {
    display: none;
  }
  #lpReopenTab .lp-rt-dashboard-action {
    width: 44px;
    height: 44px;
    font-size: 15px;
  }
  #lpReopenTab .lp-rt-dashboard-label {
    display: none;
  }
}

/* ─── Country cluster markers ───────────────────────────────────────────── */
/* One flag-marker per country at world view. Replaces the old grid clusters
   that sprayed "Zone X°,Y°" badges across every continent on mobile. Click to
   expand to individual companies for that country. */
.mk--country-cluster {
  z-index: 30;
}
.mk--country-cluster .mk__body.mk__country-body {
  width: 58px;
  height: 58px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 1px;
  font-family: 'Inter', system-ui, sans-serif;
  font-weight: 800;
  color: #fff;
  text-shadow: 0 1px 4px rgba(0, 0, 0, 0.85);
  background: radial-gradient(circle at 30% 28%, rgba(20, 28, 48, 0.96), rgba(6, 10, 22, 0.94));
  border: 2px solid rgba(0, 240, 255, 0.55);
  box-shadow:
    0 0 14px rgba(0, 240, 255, 0.18),
    inset 0 0 10px rgba(0, 240, 255, 0.12),
    0 4px 14px rgba(0, 0, 0, 0.5);
  transition: transform 0.25s ease, opacity 0.25s ease, box-shadow 0.25s ease, border-color 0.25s ease;
}
.mk--country-cluster .mk__country-flag {
  font-size: 22px;
  line-height: 1;
  filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.6));
  /* Help emoji rendering on browsers that fall back to monochrome. */
  font-family: "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", system-ui, sans-serif;
}
.mk--country-cluster .mk__country-count {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: -0.2px;
  font-variant-numeric: tabular-nums;
  color: rgba(255, 255, 255, 0.92);
  margin-top: 1px;
}
.mk--country-cluster:hover .mk__body.mk__country-body,
.mk--country-cluster:focus-visible .mk__body.mk__country-body {
  transform: scale(1.08);
  border-color: rgba(0, 240, 255, 0.95);
  box-shadow:
    0 0 22px rgba(0, 240, 255, 0.42),
    inset 0 0 14px rgba(0, 240, 255, 0.22),
    0 6px 18px rgba(0, 0, 0, 0.55);
}
.mk--country-cluster .mk__ring {
  width: 76px;
  height: 76px;
  border-color: rgba(0, 240, 255, 0.45);
  border-width: 1.5px;
  opacity: 0.55;
}
.mk--country-cluster-sm .mk__body.mk__country-body {
  width: 48px;
  height: 48px;
}
.mk--country-cluster-sm .mk__country-flag { font-size: 18px; }
.mk--country-cluster-sm .mk__country-count { font-size: 10px; }
.mk--country-cluster-sm .mk__ring { width: 64px; height: 64px; }

/* Light-theme adjustment so the flag marker is still readable on a pale globe. */
[data-theme='light'] .mk--country-cluster .mk__body.mk__country-body {
  background: radial-gradient(circle at 30% 28%, rgba(245, 248, 255, 0.97), rgba(220, 230, 245, 0.92));
  border-color: rgba(0, 120, 180, 0.6);
  color: #0c1a2b;
  text-shadow: 0 1px 2px rgba(255, 255, 255, 0.6);
  box-shadow:
    0 0 12px rgba(0, 140, 200, 0.18),
    inset 0 0 8px rgba(0, 140, 200, 0.1),
    0 4px 10px rgba(0, 0, 0, 0.18);
}
[data-theme='light'] .mk--country-cluster .mk__country-count {
  color: #0c1a2b;
}

/* Mobile: country bubbles ate the entire viewport at boot — overlapping
   markers made the world view illegible. We shrink them aggressively
   here. The hit-target stays comfortable (≥40px) thanks to the ring. */
@media (max-width: 768px) {
  .mk--country-cluster .mk__body.mk__country-body {
    width: 40px;
    height: 40px;
    border-width: 1.5px;
  }
  .mk--country-cluster .mk__country-flag { font-size: 16px; }
  .mk--country-cluster .mk__country-count { font-size: 9px; line-height: 1; margin-top: 1px; }
  .mk--country-cluster .mk__ring { width: 52px; height: 52px; opacity: 0.45; }
  .mk--country-cluster-sm .mk__body.mk__country-body {
    width: 34px;
    height: 34px;
  }
  .mk--country-cluster-sm .mk__country-flag { font-size: 14px; }
  .mk--country-cluster-sm .mk__country-count { font-size: 8px; }
  .mk--country-cluster-sm .mk__ring { width: 44px; height: 44px; }
}

/* Visual cue for an expanded country (used when we want to show that the
   country has been drilled into — currently we hide its cluster entirely so
   this rule only fires if a future iteration keeps the marker visible). */
.mk--country-expanded .mk__body.mk__country-body {
  opacity: 0.45;
  filter: saturate(0.6);
}

/* ─── Country-cluster selection states (2026-05-04) ─────────────────────────
   When a country filter is active, all country bubbles ship to the marker
   layer but non-matching countries are visually receded so the user keeps a
   readable, navigable view. Without this, the selected bubble (e.g. Espagne)
   sat at full size and masked its neighbours behind it.

   .mk--country-selected   → matches activeCountries → cyan highlight, full
                             size, hover/tip behave normally.
   .mk--country-dimmed     → countries that DON'T match the active filter →
                             scale 60%, opacity 35%, tooltip suppressed. Still
                             clickable so the user can re-target a neighbour. */
.mk--country-cluster .mk__ring {
  transition: transform 0.25s ease, opacity 0.25s ease, border-color 0.25s ease;
}

.mk--country-cluster.mk--country-selected .mk__body.mk__country-body {
  border-color: rgba(0, 240, 255, 0.95);
  box-shadow:
    0 0 22px rgba(0, 240, 255, 0.55),
    inset 0 0 16px rgba(0, 240, 255, 0.28),
    0 6px 18px rgba(0, 0, 0, 0.6);
}
.mk--country-cluster.mk--country-selected .mk__ring {
  border-color: rgba(0, 240, 255, 0.85);
  opacity: 0.85;
}

.mk--country-cluster.mk--country-dimmed .mk__body.mk__country-body,
.mk--country-cluster.mk--country-dimmed .mk__ring {
  transform: scale(0.6);
  opacity: 0.35;
}
.mk--country-cluster.mk--country-dimmed:hover .mk__body.mk__country-body,
.mk--country-cluster.mk--country-dimmed:focus-visible .mk__body.mk__country-body {
  transform: scale(0.66);
  opacity: 0.55;
  border-color: rgba(0, 240, 255, 0.7);
  box-shadow:
    0 0 14px rgba(0, 240, 255, 0.22),
    inset 0 0 10px rgba(0, 240, 255, 0.12),
    0 4px 14px rgba(0, 0, 0, 0.5);
}
.mk--country-cluster.mk--country-dimmed .mk__tip {
  display: none !important;
}

/* PR#3 — WebGL point label (singleton companies/projects pushed to
   pointsData). Globe.gl wraps pointLabel HTML inside .scene-tooltip. */
.scene-tooltip .wm-pt-label {
  background: rgba(10, 14, 28, 0.92);
  color: #f5f7fb;
  border: 1px solid rgba(0, 240, 255, 0.18);
  border-radius: 6px;
  padding: 6px 9px;
  font-size: 12px;
  line-height: 1.35;
  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.35);
  pointer-events: none;
  white-space: nowrap;
  max-width: 260px;
}
.scene-tooltip .wm-pt-label strong {
  color: #ffffff;
  font-weight: 600;
}
.scene-tooltip .wm-pt-label span {
  opacity: 0.8;
  font-size: 11px;
}
[data-theme='light'] .scene-tooltip .wm-pt-label {
  background: rgba(255, 255, 255, 0.96);
  color: #1a1a2e;
  border-color: rgba(0, 0, 0, 0.12);
  box-shadow: 0 8px 22px rgba(30, 25, 20, 0.18);
}
[data-theme='light'] .scene-tooltip .wm-pt-label strong { color: #0b0d18; }
[data-theme='light'] .scene-tooltip .wm-pt-label span { color: #4a4a5e; }

/* ─── MOBILE PERF CUTS (CTO plan FIX 5) ──────────────────────────────
   Mid-range mobile compositors (Adreno/Mali) pay 2–4× for backdrop-
   filter and continuous animations, especially on the chrome strips
   that stay visible the entire session. The cuts below disable the
   eye-candy on viewports ≤ 768 px so the GPU stays free for the globe
   itself. Animations are reapplied on desktop and on tablets ≥ 769 px.
*/
@media (max-width: 768px) {
  .mk__ring,
  .splash-bg-glow,
  .kpi-ticker-inner,
  .weather-bar-inner,
  .news-ticker-track,
  .wm-hero-mesh,
  .wm-hero-counter-dot,
  .alerts-badge::after,
  .alert-count-badge,
  .wm-status-dot,
  .hotspot-marker,
  .pulse-ring,
  .live-dot {
    animation: none !important;
    will-change: auto !important;
  }

  .kpi-ticker,
  .weather-bar,
  .news-ticker,
  .lang-toggle,
  .info-panel,
  .dashboard-panel,
  .filter-panel,
  .sidebar-section,
  .stat-card,
  .wm-card-glass {
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
  }
}

/* ─── Sprint 28: Discovery rail · Bookmarks drawer · Density hint · Rich filters ─── */

/* FIX 1 / 2 — Floating "À explorer" rail (right side, collapsible) */
.wm-discovery-rail {
  position: fixed;
  top: 156px;
  right: 16px;
  z-index: 89;
  width: 248px;
  max-height: calc(100vh - 220px);
  display: flex;
  flex-direction: column;
  padding: 12px 12px 10px;
  border-radius: 14px;
  background: rgba(8, 10, 18, 0.86);
  border: 1px solid rgba(255, 255, 255, 0.10);
  box-shadow: 0 14px 32px rgba(0, 0, 0, 0.45);
  backdrop-filter: blur(14px) saturate(1.2);
  -webkit-backdrop-filter: blur(14px) saturate(1.2);
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 12px;
  color: var(--text-bright, #fff);
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: thin;
  transition: opacity 0.2s ease, transform 0.2s ease;
}
.wm-discovery-rail.is-collapsed {
  width: 44px;
  height: 44px;
  max-height: 44px;
  padding: 0;
  border-radius: 50%;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  overflow: hidden;
}
.wm-discovery-rail.is-collapsed > *:not(.wm-discovery-launcher) {
  display: none;
}
.wm-discovery-launcher {
  display: none;
  width: 100%;
  height: 100%;
  align-items: center;
  justify-content: center;
  font-size: 18px;
  background: transparent;
  border: 0;
  color: #fff;
  cursor: pointer;
}
.wm-discovery-rail.is-collapsed .wm-discovery-launcher { display: flex; }
.wm-discovery-head {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 6px;
}
.wm-discovery-head h3 {
  margin: 0;
  flex: 1 1 auto;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.4px;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.78);
}
.wm-discovery-world {
  flex: 0 0 auto;
  background: rgba(0, 240, 255, 0.10);
  border: 1px solid rgba(0, 240, 255, 0.32);
  color: rgba(255, 255, 255, 0.92);
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 11px;
  font-weight: 600;
  padding: 4px 9px;
  border-radius: 999px;
  cursor: pointer;
  transition: background 0.18s ease, border-color 0.18s ease;
}
.wm-discovery-world:hover {
  background: rgba(0, 240, 255, 0.20);
  border-color: rgba(0, 240, 255, 0.55);
}
.wm-discovery-close {
  background: transparent;
  border: 0;
  color: rgba(255, 255, 255, 0.55);
  font-size: 16px;
  cursor: pointer;
  padding: 0 4px;
  line-height: 1;
}
.wm-discovery-close:hover { color: #fff; }
.wm-discovery-section { margin-top: 6px; }
.wm-discovery-section b {
  display: block;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.4px;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.55);
  margin-bottom: 4px;
}
.wm-discovery-section button {
  display: flex;
  width: 100%;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin: 2px 0;
  padding: 6px 8px;
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 8px;
  color: var(--text-bright, #fff);
  font-family: inherit;
  font-size: 12px;
  font-weight: 500;
  text-align: left;
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s, transform 0.15s;
}
.wm-discovery-section button:hover {
  background: rgba(0, 240, 255, 0.10);
  border-color: rgba(0, 240, 255, 0.30);
  transform: translateX(-2px);
}
.wm-discovery-section button span {
  display: inline-flex;
  min-width: 26px;
  justify-content: center;
  padding: 1px 6px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.08);
  font-size: 10.5px;
  font-weight: 700;
  color: rgba(255, 255, 255, 0.78);
}
.wm-discovery-section button .wm-disc-flag {
  background: transparent;
  min-width: 0;
  padding: 0;
  font-size: 13px;
}

/* FIX 2 — Contextual news inside the rail */
.wm-context-news {
  margin-top: 10px;
  padding-top: 8px;
  border-top: 1px solid rgba(255, 255, 255, 0.08);
}
.wm-context-news b {
  display: block;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.4px;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.55);
  margin-bottom: 4px;
}
.wm-context-news a {
  display: block;
  margin: 2px 0;
  padding: 6px 8px;
  border-radius: 8px;
  background: rgba(255, 102, 0, 0.07);
  border: 1px solid rgba(255, 140, 60, 0.15);
  color: rgba(255, 220, 200, 0.95);
  font-size: 11.5px;
  line-height: 1.35;
  text-decoration: none;
  transition: background 0.15s, border-color 0.15s;
}
.wm-context-news a:hover {
  background: rgba(255, 102, 0, 0.16);
  border-color: rgba(255, 140, 60, 0.45);
  color: #fff;
}
.wm-context-news .wm-context-news-empty {
  color: rgba(255, 255, 255, 0.45);
  font-size: 11px;
  padding: 4px 0;
}

/* Hide rail when search overlay is on or splash still visible. */
body.search-overlay-active .wm-discovery-rail,
body:not(.wm-splash-dismissed) .wm-discovery-rail {
  display: none;
}

@media (max-width: 768px) {
  .wm-discovery-rail {
    top: auto;
    /* Match the is-collapsed launcher offset so the OPEN rail clears the
       globe-zoom +/- buttons (which sit just above the mobile-filters tray).
       Previously bottom:180px overlapped the zoom controls — user reported
       the rail covering +/- when expanded on mobile. */
    bottom: calc(254px + env(safe-area-inset-bottom));
    right: 8px;
    width: 180px;
    max-width: calc(100vw - 24px);
    max-height: 26vh;
    font-size: 11px;
    padding: 10px 10px 8px;
  }
  .wm-discovery-rail::-webkit-scrollbar { width: 3px; }
  .wm-discovery-rail::-webkit-scrollbar-thumb { background: rgba(0, 240, 255, 0.32); border-radius: 2px; }

  /* Mobile launcher chip: pinned bottom-right above mobile-filters tray, raised z-index. */
  .wm-discovery-rail.is-collapsed {
    top: auto !important;
    right: 12px !important;
    /* Above .globe-zoom-controls (mobile bottom 148px + 2×44px + gap 6px = 242px)
       with ~12px clearance. */
    bottom: calc(254px + env(safe-area-inset-bottom)) !important;
    width: 46px !important;
    height: 46px !important;
    max-width: 46px !important;
    max-height: 46px !important;
    padding: 0 !important;
    border-radius: 999px !important;
    overflow: hidden !important;
    z-index: 10030 !important;
  }
  .wm-discovery-rail.is-collapsed .wm-discovery-launcher {
    display: flex !important;
    width: 100%;
    height: 100%;
    font-size: 18px;
    line-height: 1;
  }
}

/* FIX 3 — Bookmarks header button + drawer */
.wm-bookmarks-open {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 12px;
  background: rgba(255, 215, 0, 0.10);
  border: 1px solid rgba(255, 215, 0, 0.32);
  border-radius: var(--radius-pill, 999px);
  color: rgba(255, 235, 180, 1);
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.2px;
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s, transform 0.15s;
}
.wm-bookmarks-open:hover,
.wm-bookmarks-open:focus-visible {
  background: rgba(255, 215, 0, 0.20);
  border-color: rgba(255, 215, 0, 0.55);
  transform: translateY(-1px);
  color: #fff;
}
.wm-bookmarks-open-icon { font-size: 13px; line-height: 1; }
.wm-bookmarks-open-count {
  display: inline-flex;
  min-width: 18px;
  height: 18px;
  align-items: center;
  justify-content: center;
  padding: 0 5px;
  border-radius: 999px;
  background: rgba(255, 215, 0, 0.32);
  color: rgba(40, 30, 0, 1);
  font-size: 10.5px;
  font-weight: 800;
}
@media (max-width: 640px) {
  .wm-bookmarks-open-label { display: none; }
  .wm-bookmarks-open { padding: 6px 8px; }
}

.wm-bookmarks-drawer {
  position: fixed;
  top: 64px;
  right: 16px;
  z-index: 200;
  width: 320px;
  max-width: calc(100vw - 32px);
  max-height: calc(100vh - 96px);
  padding: 14px 14px 16px;
  border-radius: 14px;
  background: rgba(10, 12, 20, 0.94);
  border: 1px solid rgba(255, 215, 0, 0.22);
  box-shadow: 0 18px 40px rgba(0, 0, 0, 0.55);
  backdrop-filter: blur(16px) saturate(1.2);
  -webkit-backdrop-filter: blur(16px) saturate(1.2);
  display: none;
  flex-direction: column;
  gap: 10px;
  font-family: 'Inter', system-ui, sans-serif;
  color: var(--text-bright, #fff);
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}
.wm-bookmarks-drawer.open { display: flex; }
.wm-bookmarks-drawer h3 {
  margin: 0;
  font-size: 13px;
  font-weight: 800;
  letter-spacing: 0.4px;
  text-transform: uppercase;
  color: rgba(255, 235, 180, 1);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}
.wm-bookmarks-drawer-close {
  background: transparent;
  border: 0;
  color: rgba(255, 255, 255, 0.55);
  font-size: 18px;
  cursor: pointer;
  line-height: 1;
}
.wm-bookmarks-drawer-close:hover { color: #fff; }
.wm-bookmarks-drawer p {
  margin: 0;
  color: rgba(255, 255, 255, 0.55);
  font-size: 12px;
  padding: 6px 0;
}
.wm-bookmarks-drawer button[data-bm-name] {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 2px;
  padding: 8px 10px;
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 10px;
  color: #fff;
  font-family: inherit;
  font-size: 12.5px;
  font-weight: 600;
  text-align: left;
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s, transform 0.15s;
}
.wm-bookmarks-drawer button[data-bm-name]:hover {
  background: rgba(255, 215, 0, 0.10);
  border-color: rgba(255, 215, 0, 0.32);
  transform: translateX(-2px);
}
.wm-bookmarks-drawer button[data-bm-name] span {
  font-size: 11px;
  font-weight: 500;
  color: rgba(255, 255, 255, 0.55);
}
.wm-bookmarks-drawer-actions {
  display: flex;
  gap: 6px;
  padding-top: 6px;
  border-top: 1px solid rgba(255, 255, 255, 0.08);
}
.wm-bookmarks-drawer-actions button {
  flex: 1;
  padding: 6px 8px;
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.10);
  border-radius: 8px;
  color: rgba(255, 255, 255, 0.78);
  font: 600 11px/1 'Inter', system-ui, sans-serif;
  cursor: pointer;
}
.wm-bookmarks-drawer-actions button:hover { color: #fff; border-color: rgba(255, 255, 255, 0.30); }

/* FIX 4 — Rich filters section inside the filter panel */
.wm-rich-filters {
  margin-top: 12px;
  padding: 10px 12px 12px;
  background: rgba(0, 240, 255, 0.04);
  border: 1px solid rgba(0, 240, 255, 0.18);
  border-radius: 10px;
}
.wm-rich-filters .wm-rich-title {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  color: rgba(0, 240, 255, 0.78);
  margin-bottom: 6px;
}
.wm-rich-filters label {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 4px 0;
  font-size: 12px;
  color: var(--text-bright, #fff);
  cursor: pointer;
}
.wm-rich-filters input[type="checkbox"] { accent-color: #00f0ff; cursor: pointer; }
.wm-rich-filters .wm-rich-hint {
  margin-top: 6px;
  font-size: 10.5px;
  color: rgba(255, 255, 255, 0.45);
  line-height: 1.3;
}

/* FIX 5 — Density opt-in capsule. Anchored to the bottom edge so it
   never floats over the world view; the previous mid-screen position
   was hiding country markers and the user thought it was a bug. */
.wm-density-hint {
  position: fixed;
  bottom: 18px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 87;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 14px;
  background: rgba(0, 240, 255, 0.14);
  border: 1px solid rgba(0, 240, 255, 0.42);
  border-radius: 999px;
  color: #fff;
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 12px;
  font-weight: 700;
  cursor: pointer;
  box-shadow: 0 10px 28px rgba(0, 0, 0, 0.45), 0 0 18px rgba(0, 240, 255, 0.20);
  animation: wmDensityPulse 2.6s ease-in-out infinite;
}
.wm-density-hint:hover {
  background: rgba(0, 240, 255, 0.25);
  border-color: rgba(0, 240, 255, 0.65);
}
/* When density is ON, the pill shrinks to a small corner chip so it
   stops eating the bottom centre. The label is also kept terse — "●
   Densité ✕" — so a tap turns the layer back off without ambiguity. */
.wm-density-hint.is-active {
  bottom: 14px;
  left: auto;
  right: 14px;
  transform: none;
  padding: 4px 10px;
  font-size: 11px;
  background: rgba(0, 240, 255, 0.30);
  border-color: rgba(0, 240, 255, 0.75);
  animation: none;
  box-shadow: 0 6px 14px rgba(0, 0, 0, 0.4), 0 0 10px rgba(0, 240, 255, 0.4);
}
.wm-density-hint.is-active::before { content: '\25CF'; font-size: 10px; }
@media (max-width: 768px) {
  .wm-density-hint.is-active { bottom: 92px; right: 10px; }
}
.wm-density-hint::before { content: '\2B22'; font-size: 12px; line-height: 1; }
@keyframes wmDensityPulse {
  0%, 100% { box-shadow: 0 10px 28px rgba(0, 0, 0, 0.45), 0 0 18px rgba(0, 240, 255, 0.20); }
  50%      { box-shadow: 0 10px 28px rgba(0, 0, 0, 0.45), 0 0 26px rgba(0, 240, 255, 0.45); }
}
@media (prefers-reduced-motion: reduce) {
  .wm-density-hint { animation: none; }
}
body.search-overlay-active .wm-density-hint,
body:not(.wm-splash-dismissed) .wm-density-hint {
  display: none;
}
@media (max-width: 768px) {
  /* Above the iOS/Android URL bar (~70px) and the bottom chip strip
     (~52px), but never floating over the globe centre. */
  .wm-density-hint { bottom: 130px; font-size: 11px; padding: 6px 12px; }
}

/* ─── Fiche trust footer ────────────────────────────────────────────────
   Surfaces the BE-provided "sources" + "updated_at" trust meta below the
   editorial body. Dim colour, small font, subtle separator — must read as
   a credibilization layer (journalist persona) without competing with the
   action buttons up top. */
.fiche-trust-footer {
  margin-top: 18px;
  padding-top: 14px;
  border-top: 1px solid rgba(255, 255, 255, 0.08);
  font-size: 12px;
  line-height: 1.5;
  color: rgba(255, 255, 255, 0.55);
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.fiche-trust-footer .ftf-label {
  display: inline-block;
  text-transform: uppercase;
  letter-spacing: 0.6px;
  font-size: 10px;
  font-weight: 700;
  color: rgba(255, 255, 255, 0.45);
  margin-bottom: 6px;
}
.fiche-trust-footer .ftf-sources ul {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.fiche-trust-footer .ftf-sources li {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 6px;
}
.fiche-trust-footer .ftf-sources a {
  color: rgba(255, 255, 255, 0.78);
  text-decoration: none;
  border-bottom: 1px dotted rgba(255, 255, 255, 0.25);
  word-break: break-word;
}
.fiche-trust-footer .ftf-sources a:hover {
  color: #fff;
  border-bottom-color: rgba(0, 240, 255, 0.55);
}
.fiche-trust-footer .ftf-date {
  font-size: 11px;
  color: rgba(255, 255, 255, 0.40);
  white-space: nowrap;
}
.fiche-trust-footer .ftf-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  font-size: 11px;
  color: rgba(255, 255, 255, 0.50);
}
.fiche-trust-footer .ftf-methodo-link {
  color: rgba(0, 240, 255, 0.85);
  text-decoration: none;
}
.fiche-trust-footer .ftf-methodo-link:hover {
  color: #fff;
  text-decoration: underline;
}

/* ─── Share view popover + toast ────────────────────────────────────────
   Anchored under the "📋 Partager" button in the context bar. Tiny menu
   with two actions (copier le lien / copier le tableau) so the journalist
   persona can leave the globe with a deep link OR a markdown shortlist. */
.wm-ctx-btn-share {
  background: rgba(255, 215, 0, 0.10);
  border-color: rgba(255, 215, 0, 0.30);
}
.wm-ctx-btn-share:hover {
  background: rgba(255, 215, 0, 0.18);
  border-color: rgba(255, 215, 0, 0.55);
}
.wm-ctx-btn-share[aria-expanded="true"] {
  background: rgba(255, 215, 0, 0.22);
  border-color: rgba(255, 215, 0, 0.7);
  color: #fff;
}
.wm-share-popover {
  position: fixed;
  z-index: 200;
  min-width: 240px;
  max-width: 320px;
  padding: 6px;
  background: rgba(15, 23, 42, 0.96);
  border: 1px solid rgba(255, 255, 255, 0.12);
  border-radius: 12px;
  box-shadow: 0 18px 48px rgba(0, 0, 0, 0.55), 0 0 0 1px rgba(0, 0, 0, 0.4);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  display: flex;
  flex-direction: column;
  gap: 2px;
  font-size: 12px;
  color: #fff;
}
.wm-share-pop-title {
  padding: 6px 10px 4px;
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.6px;
  color: rgba(255, 255, 255, 0.50);
}
.wm-share-pop-item {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 8px 10px;
  background: transparent;
  border: 1px solid transparent;
  border-radius: 8px;
  color: rgba(255, 255, 255, 0.92);
  cursor: pointer;
  text-align: left;
  font: inherit;
}
.wm-share-pop-item:hover,
.wm-share-pop-item:focus-visible {
  background: rgba(0, 240, 255, 0.10);
  border-color: rgba(0, 240, 255, 0.30);
  outline: none;
}
.wm-share-pop-icon {
  font-size: 16px;
  line-height: 1.2;
  flex-shrink: 0;
}
.wm-share-pop-label {
  display: flex;
  flex-direction: column;
  gap: 2px;
  font-weight: 600;
}
.wm-share-pop-label small {
  font-size: 11px;
  font-weight: 400;
  color: rgba(255, 255, 255, 0.55);
}
.wm-share-toast {
  position: fixed;
  bottom: 24px;
  left: 50%;
  transform: translateX(-50%) translateY(8px);
  padding: 10px 16px;
  background: rgba(15, 23, 42, 0.96);
  border: 1px solid rgba(0, 240, 255, 0.30);
  border-radius: 10px;
  color: #fff;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.2px;
  box-shadow: 0 12px 30px rgba(0, 0, 0, 0.45);
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.18s ease, transform 0.18s ease;
  z-index: 220;
}
.wm-share-toast.visible {
  opacity: 1;
  transform: translateX(-50%) translateY(0);
}
@media (max-width: 768px) {
  .wm-share-popover { min-width: 220px; max-width: calc(100vw - 16px); }
  .wm-share-toast { bottom: 84px; font-size: 11px; padding: 8px 14px; }
}

/* ─── WCAG 2.5.5 — 44px hit targets on mobile ──────────────────────────
   Audit findings from grill-me 2026-05-01: nav/context/legend/search-result
   buttons sat at 28-36px on mobile. We bump min-height only (not min-width)
   so multi-row chip strips keep wrapping naturally. The country-cluster
   body is intentionally excluded — its 52px ring already provides an
   effective hit-target. */
@media (max-width: 768px) {
  .nav-btn,
  .wm-ctx-btn,
  .stat-chip,
  .legend-item,
  .search-result-item {
    min-height: 44px;
  }
  /* The chip / legend selectors above only set min-height; existing rules
     keep their flex / inline-flex display, so labels stay centred. .nav-btn
     keeps its width:36px so it grows into a vertical pill on touch — that's
     still a 44px hit target in the dominant axis (vertical-only navigation
     control between detail entries). */
}

/* World-reset button injected in #wmUtilityCluster (header right) so the
   user can always pop back to world view in one tap, alongside the
   bookmarks/changer-de-vue controls. Mirrors .wm-bookmarks-open styling. */
.wm-world-reset-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  height: 32px;
  padding: 0 12px;
  border-radius: 999px;
  background: rgba(8, 10, 18, 0.55);
  border: 1px solid rgba(255, 255, 255, 0.10);
  color: var(--text-bright, #fff);
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.02em;
  cursor: pointer;
  transition: background 0.18s ease, border-color 0.18s ease, transform 0.12s ease;
}
.wm-world-reset-btn:hover {
  background: rgba(0, 240, 255, 0.10);
  border-color: rgba(0, 240, 255, 0.32);
}
.wm-world-reset-btn:active { transform: translateY(1px); }
.wm-world-reset-btn span[aria-hidden] { font-size: 13px; opacity: 0.85; }
@media (max-width: 768px) {
  /* On mobile the cluster is tight: hide the label, keep the icon as
     a circular reset chip. Hit target stays 32×32 ≈ acceptable next
     to the other glyph buttons in this strip. */
  .wm-world-reset-btn { padding: 0; width: 32px; height: 32px; justify-content: center; }
  .wm-world-reset-label { display: none; }
}

/* Header Partager button shares the .reopen-splash-btn pill shape but
   stays visible at all times (the reopen one is gated by JS via
   .visible). Slight teal accent to nudge it apart from "Changer de
   vue" without screaming. */
.wm-header-share {
  display: inline-flex !important;
  align-items: center;
  gap: 5px;
  border-color: rgba(0, 240, 255, 0.32) !important;
  color: rgba(255, 255, 255, 0.92) !important;
}
.wm-header-share:hover {
  border-color: rgba(0, 240, 255, 0.55) !important;
  color: var(--orange) !important;
}
@media (max-width: 819px) {
  /* On narrow screens .reopen-splash-btn is display:none — keep the
     same gating for the share button so the header doesn't spill. */
  .wm-header-share { display: none !important; }
}

/* Rich detail blocks (verdict + about_content) injected post-fetch in
   the company panel. Stays editorial: serif Verdict line + sober body. */
.info-rich-block {
  margin: 14px 0;
  padding: 12px 14px;
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.03);
  border-left: 3px solid var(--orange, #FF6600);
}
.info-rich-block[hidden] { display: none !important; }
.info-rich-label {
  display: inline-block;
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 9.5px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--orange, #FF6600);
  font-weight: 700;
  margin-bottom: 6px;
}
#infoRichVerdictText {
  margin: 0;
  font-family: 'Newsreader', Georgia, serif;
  font-size: 16px;
  line-height: 1.45;
  color: rgba(255, 255, 255, 0.95);
}
.info-rich-about {
  font-family: 'Newsreader', Georgia, serif;
  font-size: 14.5px;
  line-height: 1.6;
  color: rgba(255, 255, 255, 0.85);
}
.info-rich-about p { margin: 0 0 10px; }
.info-rich-about p:last-child { margin-bottom: 0; }
.info-rich-about a { color: #5eead4; text-decoration: none; border-bottom: 1px dashed rgba(94, 234, 212, 0.4); }
.info-rich-about a:hover { color: var(--orange, #FF6600); border-bottom-color: var(--orange, #FF6600); }
.info-rich-about h2, .info-rich-about h3 { font-family: 'Newsreader', Georgia, serif; font-weight: 600; margin: 14px 0 6px; }
.info-rich-about h2 { font-size: 17px; }
.info-rich-about h3 { font-size: 15px; opacity: 0.9; }
.info-rich-about ul, .info-rich-about ol { margin: 8px 0 12px 18px; padding: 0; }
.info-rich-about li { margin-bottom: 4px; }

[data-theme='light'] .info-rich-block {
  background: rgba(15, 17, 21, 0.04);
}
[data-theme='light'] #infoRichVerdictText { color: #1a1a1a; }
[data-theme='light'] .info-rich-about { color: #2a2a2a; }

/* ─── Mobile cleanup pass (post user feedback 2026-05-01) ───
   Keep the shared context bar reachable while shrinking the left rail
   to a tap-only chip so the map does not feel cluttered. */
@media (max-width: 768px) {
  /* Context bar stays reachable on phones; it is the common entry point for
     pays / secteurs / couches when the shell hides the legacy chrome. */
  .wm-context-bar {
    left: 10px;
    right: 10px;
    bottom: calc(78px + env(safe-area-inset-bottom));
    transform: none;
    justify-content: flex-start;
    max-width: none;
  }
  body.wm-shell-page-active .wm-context-bar,
  body.wm-shell-collapsed.wm-shell-page-active .wm-context-bar {
    display: none !important;
  }

  /* Left "DATA FEED" rail tab — collapse to a horizontal chip pair in
     the bottom-left corner. Each button keeps a glyph + 1-line label
     so users actually know what they tap (a bare ❯ chip read as a
     mystery glyph in the previous iteration). */
  #lpReopenTab {
    top: auto !important;
    bottom: 24px !important;
    left: 10px !important;
    width: auto !important;
    min-height: 38px !important;
    min-width: 0 !important;
    max-height: none !important;
    padding: 4px 6px !important;
    border-radius: 999px !important;
    transform: none !important;
    flex-direction: row !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 6px !important;
  }
  #lpReopenTab .lp-rt-primary,
  #lpReopenTab .lp-rt-secondary { display: flex !important; }
  #lpReopenTab .lp-rt-feed-action,
  #lpReopenTab .lp-rt-dashboard-action {
    writing-mode: horizontal-tb !important;
    transform: none !important;
    width: auto !important;
    min-width: 0 !important;
    height: 30px !important;
    padding: 0 10px !important;
    border-radius: 999px !important;
    flex-direction: row !important;
    gap: 4px !important;
    font-size: 11px !important;
    font-weight: 600 !important;
    letter-spacing: 0.04em !important;
    text-transform: uppercase !important;
    line-height: 1 !important;
  }
  #lpReopenTab .lp-rt-feed-action .lp-rt-arrow {
    writing-mode: horizontal-tb !important;
    transform: none !important;
    font-size: 12px !important;
  }
  #lpReopenTab .lp-rt-feed-action .lp-rt-copy {
    writing-mode: horizontal-tb !important;
    transform: none !important;
    flex-direction: row !important;
    gap: 0 !important;
  }
  #lpReopenTab .lp-rt-feed-action .lp-rt-kicker { display: none !important; }
  #lpReopenTab .lp-rt-feed-action .lp-rt-label {
    writing-mode: horizontal-tb !important;
    transform: none !important;
    text-transform: uppercase !important;
    letter-spacing: 0.04em !important;
    font-size: 11px !important;
  }
  #lpReopenTab .lp-rt-dashboard-icon { font-size: 13px !important; }
  #lpReopenTab .lp-rt-dashboard-label {
    display: inline !important;
    font-size: 11px !important;
    text-transform: uppercase !important;
    letter-spacing: 0.04em !important;
  }
}

/* Public registers chip strip in detail panel (Sprint X2.5) — parity
   with the /entreprises 'Identifiants publics' encadré. */
.info-ids-row {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin: 12px 0 4px;
  font-family: 'JetBrains Mono', 'IBM Plex Mono', ui-monospace, monospace;
}
.info-id-chip {
  display: inline-flex;
  align-items: center;
  padding: 3px 9px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.10);
  color: rgba(255, 255, 255, 0.78);
  font-size: 11px;
  letter-spacing: 0.02em;
  text-decoration: none;
  transition: background 0.15s ease, border-color 0.15s ease;
}
a.info-id-chip:hover {
  background: rgba(0, 240, 255, 0.10);
  border-color: rgba(0, 240, 255, 0.32);
  color: rgba(255, 255, 255, 0.95);
}
[data-theme='light'] .info-id-chip {
  background: rgba(15, 17, 21, 0.04);
  border-color: rgba(15, 17, 21, 0.12);
  color: #1a1a1a;
}
[data-theme='light'] a.info-id-chip:hover {
  background: rgba(13, 148, 136, 0.10);
  border-color: rgba(13, 148, 136, 0.40);
}

/* ── Auth overlay (liquid glass, lifted above mobile floating bars) ── */
/* Inline <style> in templates/wattsmonde/index.html sets position/inset
   and a base z-index of 130. Mobile floating bars (mobile-chip stack,
   data-feed pill, dashboard pill) sit at z-index up to ~10050, which
   was burying the "Continuer avec Google" CTA behind them. Force the
   overlay above all of them and overlay the premium glass treatment. */
.wm-auth-overlay {
  z-index: 11000 !important;
  background: linear-gradient(135deg, rgba(8, 12, 24, 0.78), rgba(20, 32, 56, 0.62));
  backdrop-filter: blur(22px) saturate(1.6);
  -webkit-backdrop-filter: blur(22px) saturate(1.6);
  border: 1px solid rgba(255, 255, 255, 0.14);
  box-shadow: 0 32px 80px rgba(0, 0, 0, 0.55), inset 0 1px 0 rgba(255, 255, 255, 0.06);
  border-radius: 18px;
}
@media (max-width: 768px) {
  .wm-auth-overlay {
    max-height: 80vh;
    overflow-y: auto;
    margin: 0 12px;
    padding: 20px 18px;
  }
}

/* ════════════════════════════════════════════════════════════════════
   ═══ WattsMonde — Globe / Liste view-mode toggle pill (tier2) ═══
   ════════════════════════════════════════════════════════════════════
   2-segment pill that swaps between the 3D globe and a full-screen
   list view. Globe shows ~99% French companies as markers (others
   lack lat/lng); list view exposes EVERY filtered entreprise so the
   user can browse without geolocation gaps. State is persisted via
   `localStorage['wm-view-mode']` (see app.js → ListView module).
   ════════════════════════════════════════════════════════════════════ */
.wm-view-mode-pill {
  display: inline-flex;
  align-items: stretch;
  gap: 2px;
  padding: 3px;
  border-radius: 999px;
  background: linear-gradient(135deg, rgba(8, 14, 26, 0.72), rgba(14, 22, 38, 0.58));
  border: 1px solid rgba(0, 240, 255, 0.22);
  backdrop-filter: blur(18px) saturate(1.5);
  -webkit-backdrop-filter: blur(18px) saturate(1.5);
  box-shadow:
    0 4px 18px rgba(0, 0, 0, 0.32),
    inset 0 1px 0 rgba(255, 255, 255, 0.06);
  flex-shrink: 0;
}
.wm-vmp-segment {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 5px 12px;
  border: 1px solid transparent;
  border-radius: 999px;
  background: transparent;
  color: rgba(226, 232, 240, 0.78);
  font-family: var(--font-sans);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.04em;
  cursor: pointer;
  transition: background 0.18s ease, color 0.18s ease, border-color 0.18s ease, box-shadow 0.18s ease;
}
.wm-vmp-segment:hover:not(.is-active) {
  color: #fff;
  background: rgba(0, 240, 255, 0.08);
}
.wm-vmp-segment.is-active {
  background: linear-gradient(135deg, rgba(0, 240, 255, 0.32), rgba(13, 148, 136, 0.34));
  color: #f8fafc;
  border-color: rgba(0, 240, 255, 0.55);
  box-shadow:
    0 2px 10px rgba(0, 240, 255, 0.32),
    inset 0 1px 0 rgba(255, 255, 255, 0.18);
}
.wm-vmp-emoji { font-size: 13px; line-height: 1; }
.wm-vmp-label { white-space: nowrap; }

@media (max-width: 768px) {
  .wm-view-mode-pill { padding: 2px; }
  .wm-vmp-segment { padding: 4px 9px; font-size: 10px; }
  .wm-vmp-label { display: none; }
  .wm-vmp-emoji { font-size: 14px; }
}

/* ════════════════════════════════════════════════════════════════════
   ═══ WattsMonde — full-screen List view (#wmListView) ═══
   ════════════════════════════════════════════════════════════════════
   Active when `body.wm-mode-list`. Sits below the chrome bars
   (52 + 40 = 92px) and covers the rest of the viewport, masking the
   globe and globe-mode floating widgets. Cards are clickable —
   they delegate to handlePointClick(c) so the existing infoPanel
   detail flow is reused untouched.
   ════════════════════════════════════════════════════════════════════ */
.wm-list-view {
  position: fixed;
  top: 92px;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 80;
  display: flex;
  flex-direction: column;
  background:
    radial-gradient(1200px 600px at 70% -10%, rgba(0, 240, 255, 0.06), transparent 60%),
    radial-gradient(900px 500px at 10% 110%, rgba(13, 148, 136, 0.05), transparent 60%),
    linear-gradient(180deg, rgba(4, 6, 14, 0.92), rgba(6, 8, 16, 0.96));
  color: var(--text);
  overflow-y: auto;
  overflow-x: hidden;
  scroll-behavior: smooth;
}
.wm-list-view[hidden] { display: none !important; }

/* When list mode is on, hide the globe and any globe-only chrome.
   Chrome bars (tier1 + tier2) and detail panel stay reachable so
   filters / search / detail view continue to work. */
body.wm-mode-list #globeViz,
body.wm-mode-list .legend,
body.wm-mode-list #globeOverviewBtn,
body.wm-mode-list #globeZoomControls,
body.wm-mode-list .region-bar,
body.wm-mode-list .nav-arrows,
body.wm-mode-list .time-widget,
body.wm-mode-list .news-ticker-bar,
body.wm-mode-list #hydrateStatus {
  display: none !important;
}
body.wm-mode-list #wmListView { display: flex !important; }

/* Sticky header: search + sort + count */
.wm-list-header {
  position: sticky;
  top: 0;
  z-index: 5;
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 24px;
  background: linear-gradient(180deg, rgba(4, 6, 14, 0.92), rgba(6, 8, 16, 0.78));
  backdrop-filter: blur(16px) saturate(1.4);
  -webkit-backdrop-filter: blur(16px) saturate(1.4);
  border-bottom: 1px solid rgba(255, 255, 255, 0.06);
  flex-wrap: wrap;
}
.wm-list-search {
  position: relative;
  flex: 1 1 280px;
  min-width: 220px;
  display: flex;
  align-items: center;
}
.wm-list-search-icon {
  position: absolute;
  left: 12px;
  top: 50%;
  transform: translateY(-50%);
  width: 16px;
  height: 16px;
  color: rgba(148, 163, 184, 0.85);
  pointer-events: none;
}
.wm-list-search input {
  width: 100%;
  padding: 9px 14px 9px 36px;
  border: 1px solid rgba(255, 255, 255, 0.10);
  border-radius: 999px;
  background: rgba(8, 12, 24, 0.62);
  color: var(--text);
  font-family: var(--font-sans);
  font-size: 13px;
  outline: none;
  transition: border-color 0.18s ease, background 0.18s ease, box-shadow 0.18s ease;
}
.wm-list-search input::placeholder { color: rgba(148, 163, 184, 0.7); }
.wm-list-search input:focus {
  border-color: rgba(0, 240, 255, 0.55);
  background: rgba(10, 16, 30, 0.78);
  box-shadow: 0 0 0 3px rgba(0, 240, 255, 0.12);
}
.wm-list-sort {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: rgba(203, 213, 225, 0.78);
}
.wm-list-sort-label { white-space: nowrap; }
.wm-list-sort select {
  padding: 8px 28px 8px 12px;
  border: 1px solid rgba(255, 255, 255, 0.10);
  border-radius: 999px;
  background: rgba(8, 12, 24, 0.62)
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'><path fill='%23a8b3c7' d='M0 0l5 6 5-6z'/></svg>")
    no-repeat right 10px center;
  color: var(--text);
  font-family: var(--font-sans);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.02em;
  text-transform: none;
  cursor: pointer;
  appearance: none;
  -webkit-appearance: none;
  outline: none;
  transition: border-color 0.18s ease, background-color 0.18s ease;
}
.wm-list-sort select:hover { border-color: rgba(0, 240, 255, 0.35); }
.wm-list-sort select:focus {
  border-color: rgba(0, 240, 255, 0.55);
  box-shadow: 0 0 0 3px rgba(0, 240, 255, 0.12);
}
.wm-list-count {
  margin-left: auto;
  font-family: var(--font-sans);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.04em;
  color: rgba(148, 163, 184, 0.85);
  font-variant-numeric: tabular-nums;
}

/* Responsive grid */
.wm-list-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 16px;
  padding: 24px;
}

/* Liquid-glass card */
.wm-list-card {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 16px;
  border-radius: 14px;
  background: rgba(8, 12, 24, 0.62);
  border: 1px solid rgba(255, 255, 255, 0.08);
  backdrop-filter: blur(18px) saturate(1.4);
  -webkit-backdrop-filter: blur(18px) saturate(1.4);
  box-shadow: 0 6px 22px rgba(0, 0, 0, 0.28);
  cursor: pointer;
  text-align: left;
  color: inherit;
  font-family: var(--font-sans);
  transition: transform 0.16s ease, border-color 0.16s ease, box-shadow 0.16s ease, background 0.16s ease;
}
.wm-list-card:hover,
.wm-list-card:focus-visible {
  transform: translateY(-2px) scale(1.012);
  border-color: rgba(0, 240, 255, 0.45);
  background: rgba(10, 16, 30, 0.74);
  box-shadow:
    0 12px 32px rgba(0, 0, 0, 0.42),
    0 0 0 1px rgba(0, 240, 255, 0.18);
  outline: none;
}
.wm-list-card-name {
  font-family: 'Newsreader', Georgia, serif;
  font-size: 17px;
  font-weight: 600;
  line-height: 1.25;
  color: #f8fafc;
  /* Two-line clamp keeps card heights visually consistent across the grid. */
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  word-break: break-word;
  padding-right: 38px; /* leave room for the news-count badge */
}
.wm-list-card-sub {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  color: rgba(148, 163, 184, 0.92);
  font-weight: 500;
  letter-spacing: 0.01em;
}
.wm-list-card-flag { font-size: 14px; line-height: 1; }
.wm-list-card-country {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.wm-list-card-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: auto;
}
.wm-list-card-chip {
  display: inline-flex;
  align-items: center;
  padding: 3px 9px;
  border-radius: 999px;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.04em;
  white-space: nowrap;
  border: 1px solid var(--chip-border, rgba(255, 255, 255, 0.12));
  background: var(--chip-bg, rgba(255, 255, 255, 0.06));
  color: var(--chip-color, rgba(241, 245, 249, 0.92));
}
.wm-list-card-chip--type {
  background: rgba(255, 255, 255, 0.05);
  border-color: rgba(255, 255, 255, 0.10);
  color: rgba(203, 213, 225, 0.86);
  text-transform: capitalize;
}
.wm-list-card-news {
  position: absolute;
  top: 12px;
  right: 12px;
  display: inline-flex;
  align-items: center;
  gap: 3px;
  padding: 2px 7px;
  border-radius: 999px;
  background: rgba(0, 240, 255, 0.14);
  border: 1px solid rgba(0, 240, 255, 0.32);
  color: #5eead4;
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.04em;
  font-variant-numeric: tabular-nums;
}
.wm-list-card-news::before { content: '◉'; font-size: 8px; line-height: 1; }

.wm-list-overflow {
  margin: 0 24px 28px;
  padding: 14px 18px;
  border-radius: 12px;
  background: rgba(8, 12, 24, 0.5);
  border: 1px dashed rgba(255, 255, 255, 0.10);
  color: rgba(148, 163, 184, 0.85);
  font-size: 12.5px;
  font-weight: 500;
  text-align: center;
}
.wm-list-empty {
  margin: 80px auto;
  max-width: 480px;
  padding: 28px 24px;
  border-radius: 14px;
  background: rgba(8, 12, 24, 0.5);
  border: 1px solid rgba(255, 255, 255, 0.08);
  text-align: center;
  color: rgba(203, 213, 225, 0.78);
  font-size: 14px;
  line-height: 1.5;
}

@media (max-width: 768px) {
  .wm-list-header { padding: 10px 14px; gap: 8px; }
  .wm-list-grid {
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: 12px;
    padding: 14px;
  }
  .wm-list-card { padding: 14px; }
  .wm-list-card-name { font-size: 15.5px; }
  .wm-list-count { display: none; }
}

/* ══════════════════════════════════════════════════════════════════════════════
   WattsMonde Phase 1 Premium Shell + Radar Energy Design System
   Incremental layer: legacy globe DOM stays mounted; the shell controls views.
   ══════════════════════════════════════════════════════════════════════════════ */
:root {
  --wm-shell-bg: oklch(13.5% 0.025 252);
  --wm-shell-bg-deep: oklch(9.5% 0.018 252);
  --wm-shell-surface: oklch(18% 0.026 252 / 0.88);
  --wm-shell-surface-strong: oklch(21% 0.03 252 / 0.96);
  --wm-shell-border: oklch(82% 0.06 215 / 0.16);
  --wm-shell-border-strong: oklch(82% 0.08 215 / 0.28);
  --wm-shell-ink: oklch(95% 0.012 245);
  --wm-shell-ink-mid: oklch(76% 0.028 245);
  --wm-shell-ink-low: oklch(58% 0.025 245);
  --wm-accent-cyan: oklch(78% 0.145 210);
  --wm-accent-teal: oklch(73% 0.135 180);
  --wm-accent-orange: oklch(72% 0.18 55);
  --wm-accent-red: oklch(64% 0.22 25);
  --wm-accent-green: oklch(72% 0.16 145);
  --wm-accent-violet: oklch(72% 0.16 305);
  --wm-accent-blue: oklch(70% 0.14 245);
  --wm-space-2xs: 4px;
  --wm-space-xs: 8px;
  --wm-space-sm: 12px;
  --wm-space-md: 16px;
  --wm-space-lg: 24px;
  --wm-space-xl: 32px;
  --wm-space-2xl: 48px;
  --wm-radius-sm: 8px;
  --wm-radius-md: 12px;
  --wm-radius-lg: 18px;
  --wm-radius-xl: 26px;
  --wm-radius-pill: 999px;
  --wm-shadow-card: 0 18px 54px oklch(0% 0 0 / 0.34), 0 1px 0 oklch(100% 0 0 / 0.05) inset;
  --wm-shadow-float: 0 28px 92px oklch(0% 0 0 / 0.46);
  --wm-shell-sidebar-width: 244px;
  --wm-shell-topbar-height: 72px;
  --wm-font-ui: var(--font-sans, 'Manrope', system-ui, sans-serif);
  --wm-font-editorial: var(--font-display, 'Newsreader', Georgia, serif);
}

body.wm-shell-ready {
  background:
    radial-gradient(circle at 18% 8%, oklch(34% 0.09 226 / 0.28), transparent 28%),
    radial-gradient(circle at 88% 20%, oklch(55% 0.10 182 / 0.12), transparent 30%),
    linear-gradient(180deg, var(--wm-shell-bg), var(--wm-shell-bg-deep));
}

body.wm-shell-ready .wm-chrome-bar {
  display: none !important;
}

.wm-app-shell {
  position: fixed;
  inset: 0;
  z-index: 180;
  pointer-events: none;
  color: var(--wm-shell-ink);
  font-family: var(--wm-font-ui);
}

.wm-app-sidebar,
.wm-app-topbar,
.wm-toast-stack {
  pointer-events: auto;
}

.wm-app-sidebar {
  position: fixed;
  inset: 14px auto 14px 14px;
  width: var(--wm-shell-sidebar-width);
  padding: var(--wm-space-md);
  display: flex;
  flex-direction: column;
  gap: var(--wm-space-lg);
  border: 1px solid var(--wm-shell-border);
  border-radius: var(--wm-radius-xl);
  background:
    linear-gradient(180deg, oklch(22% 0.032 252 / 0.94), oklch(14% 0.024 252 / 0.94)),
    var(--wm-shell-surface);
  box-shadow: var(--wm-shadow-float);
  backdrop-filter: blur(24px) saturate(1.2);
  -webkit-backdrop-filter: blur(24px) saturate(1.2);
  transition: width 220ms var(--wm-ease-out, cubic-bezier(.16, 1, .3, 1)),
              padding 220ms var(--wm-ease-out, cubic-bezier(.16, 1, .3, 1)),
              background-color 220ms var(--wm-ease-out, cubic-bezier(.16, 1, .3, 1));
}

.wm-shell-sidebar-head {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 34px;
  align-items: center;
  gap: var(--wm-space-xs);
}

.wm-shell-brand {
  display: grid;
  grid-template-columns: 42px minmax(0, 1fr);
  gap: var(--wm-space-sm);
  align-items: center;
  color: var(--wm-shell-ink);
  text-decoration: none;
  min-width: 0;
}

.wm-shell-brand-mark {
  display: grid;
  place-items: center;
  width: 42px;
  height: 42px;
  border-radius: 14px;
  color: oklch(10% 0.02 245);
  background: linear-gradient(135deg, var(--wm-accent-cyan), var(--wm-accent-teal));
  box-shadow: 0 14px 34px oklch(72% 0.14 205 / 0.20);
  font-weight: 900;
}

.wm-shell-brand strong,
.wm-shell-brand small {
  display: block;
}

.wm-shell-brand-copy {
  min-width: 0;
  overflow: hidden;
}

.wm-shell-brand strong {
  font-family: var(--wm-font-editorial);
  font-size: 21px;
  letter-spacing: -0.035em;
}

.wm-shell-brand small {
  margin-top: 2px;
  color: var(--wm-shell-ink-low);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.wm-shell-collapse-btn {
  width: 34px;
  height: 34px;
  display: inline-grid;
  place-items: center;
  border: 1px solid var(--wm-shell-border-strong);
  border-radius: 12px;
  color: var(--wm-shell-ink);
  background: oklch(100% 0 0 / 0.070);
  box-shadow: 0 1px 0 oklch(100% 0 0 / 0.06) inset;
  cursor: pointer;
  font: 900 16px/1 var(--wm-font-ui);
}

.wm-shell-collapse-btn:hover {
  border-color: oklch(82% 0.09 205 / 0.48);
  background: oklch(100% 0 0 / 0.11);
}

.wm-shell-collapse-closed {
  display: none;
  font-size: 10px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.wm-shell-nav {
  display: grid;
  gap: 8px;
}

.wm-shell-nav button {
  min-height: 42px;
  padding: 0 var(--wm-space-md);
  display: flex;
  align-items: center;
  justify-content: space-between;
  border: 1px solid transparent;
  border-radius: var(--wm-radius-md);
  background: oklch(100% 0 0 / 0.028);
  color: oklch(88% 0.018 245);
  font: 850 14px/1 var(--wm-font-ui);
  text-align: left;
  cursor: pointer;
  box-shadow: 0 1px 0 oklch(100% 0 0 / 0.035) inset;
  transition: transform 180ms var(--wm-ease-out, cubic-bezier(.16, 1, .3, 1)),
              background-color 180ms var(--wm-ease-out, cubic-bezier(.16, 1, .3, 1)),
              border-color 180ms var(--wm-ease-out, cubic-bezier(.16, 1, .3, 1)),
              color 180ms var(--wm-ease-out, cubic-bezier(.16, 1, .3, 1));
}

.wm-shell-nav button:hover {
  color: var(--wm-shell-ink);
  background: oklch(100% 0 0 / 0.075);
  border-color: var(--wm-shell-border-strong);
  transform: translateX(2px);
}

.wm-shell-nav button.is-active {
  color: oklch(10% 0.018 245);
  background: linear-gradient(135deg, var(--wm-accent-cyan), var(--wm-accent-teal));
  border-color: oklch(88% 0.09 200 / 0.68);
  box-shadow: 0 12px 30px oklch(74% 0.13 200 / 0.20);
}

body.wm-shell-collapsed .wm-app-sidebar {
  width: 68px;
  padding: 12px 10px;
  gap: var(--wm-space-sm);
  background:
    linear-gradient(180deg, oklch(22% 0.032 252 / 0.88), oklch(14% 0.024 252 / 0.88)),
    var(--wm-shell-surface);
}

body.wm-shell-collapsed .wm-shell-sidebar-head {
  grid-template-columns: 1fr;
  gap: 8px;
  justify-items: center;
}

body.wm-shell-collapsed .wm-shell-brand {
  grid-template-columns: 1fr;
  justify-items: center;
}

body.wm-shell-collapsed .wm-shell-brand-copy,
body.wm-shell-collapsed .wm-shell-nav {
  display: none;
}

body.wm-shell-collapsed .wm-shell-collapse-btn {
  width: 48px;
  height: 30px;
  border-radius: 999px;
}

body.wm-shell-collapsed .wm-shell-collapse-open {
  display: none;
}

body.wm-shell-collapsed .wm-shell-collapse-closed {
  display: inline;
}

body.wm-shell-collapsed .wm-app-topbar {
  left: 96px;
}

body.wm-shell-collapsed .wm-radar-view,
body.wm-shell-collapsed .wm-business-view {
  left: 96px;
}

.wm-app-topbar {
  position: fixed;
  top: 14px;
  right: 14px;
  left: calc(var(--wm-shell-sidebar-width) + 28px);
  min-height: var(--wm-shell-topbar-height);
  padding: var(--wm-space-sm) var(--wm-space-md);
  display: grid;
  grid-template-columns: minmax(260px, 640px) max-content;
  align-items: center;
  gap: var(--wm-space-md);
  border: 1px solid var(--wm-shell-border);
  border-radius: var(--wm-radius-xl);
  background: oklch(17% 0.026 252 / 0.84);
  box-shadow: var(--wm-shadow-card);
  backdrop-filter: blur(20px) saturate(1.2);
  -webkit-backdrop-filter: blur(20px) saturate(1.2);
}

.wm-shell-search {
  min-height: 44px;
  display: grid;
  grid-template-columns: 22px minmax(0, 1fr);
  align-items: center;
  gap: var(--wm-space-xs);
  padding: 0 var(--wm-space-md);
  border: 1px solid var(--wm-shell-border);
  border-radius: var(--wm-radius-pill);
  background: oklch(9% 0.018 252 / 0.54);
  color: var(--wm-accent-cyan);
}

.wm-shell-search input {
  width: 100%;
  min-height: 40px;
  border: 0;
  outline: 0;
  background: transparent;
  color: var(--wm-shell-ink);
  font: 650 13px/1 var(--wm-font-ui);
}

.wm-shell-search input::placeholder {
  color: var(--wm-shell-ink-low);
}

.wm-shell-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: var(--wm-space-xs);
}

.wm-shell-lang,
.wm-shell-icon-btn,
.wm-shell-profile {
  border: 1px solid var(--wm-shell-border);
  background: oklch(100% 0 0 / 0.055);
  color: var(--wm-shell-ink-mid);
  box-shadow: 0 1px 0 oklch(100% 0 0 / 0.05) inset;
}

.wm-shell-lang {
  min-height: 38px;
  display: inline-flex;
  align-items: center;
  gap: 3px;
  padding: 3px;
  border-radius: var(--wm-radius-pill);
}

.wm-shell-lang a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 34px;
  min-height: 30px;
  border-radius: var(--wm-radius-pill);
  color: inherit;
  font-size: 11px;
  font-weight: 850;
  text-decoration: none;
}

.wm-shell-lang a.active {
  color: oklch(10% 0.018 245);
  background: var(--wm-accent-cyan);
}

.wm-shell-icon-btn,
.wm-shell-profile {
  min-width: 38px;
  min-height: 38px;
  border-radius: 14px;
  display: inline-grid;
  place-items: center;
  cursor: pointer;
  font-weight: 900;
}

.wm-shell-profile {
  padding: 0 10px;
  color: var(--wm-shell-ink);
}

.wm-shell-page[hidden] {
  display: none !important;
}

.wm-radar-view,
.wm-business-view {
  position: fixed;
  inset: calc(var(--wm-shell-topbar-height) + 30px) 14px 14px calc(var(--wm-shell-sidebar-width) + 28px);
  z-index: 150;
  overflow: auto;
  padding: 0 0 var(--wm-space-xl);
  color: var(--wm-shell-ink);
  font-family: var(--wm-font-ui);
  scrollbar-color: var(--wm-shell-border-strong) transparent;
}

body.wm-shell-page-active #globeViz {
  visibility: hidden !important;
  opacity: 0 !important;
  pointer-events: none !important;
}

body.wm-shell-page-active .vignette,
body.wm-shell-page-active .scanlines,
body.wm-shell-page-active .filter-panel,
body.wm-shell-page-active .info-panel,
body.wm-shell-page-active .legend,
body.wm-shell-page-active .time-widget,
body.wm-shell-page-active .nav-arrows,
body.wm-shell-page-active .mobile-filters,
body.wm-shell-page-active .wm-list-view,
body.wm-shell-page-active .news-ticker-bar,
body.wm-shell-page-active .wm-footer,
body.wm-shell-page-active .globe-overview-btn,
body.wm-shell-page-active .globe-zoom-controls,
body.wm-shell-page-active .view-toggle,
body.wm-shell-page-active #wm-auth-overlay,
body.wm-shell-page-active #hydrateStatus {
  display: none !important;
}

body.wm-shell-page-active .vt-dropdown.open {
  display: block !important;
  visibility: visible !important;
  opacity: 1 !important;
  pointer-events: auto !important;
  z-index: 10040 !important;
}

.wm-ds-card {
  border: 1px solid var(--wm-shell-border);
  border-radius: var(--wm-radius-xl);
  background:
    linear-gradient(180deg, oklch(100% 0 0 / 0.070), oklch(100% 0 0 / 0.028)),
    var(--wm-shell-surface);
  box-shadow: var(--wm-shadow-card);
  backdrop-filter: blur(18px) saturate(1.15);
  -webkit-backdrop-filter: blur(18px) saturate(1.15);
}

.wm-ds-eyebrow {
  color: var(--wm-accent-cyan);
  font-size: 11px;
  font-weight: 900;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}

.wm-ds-btn {
  min-height: 38px;
  padding: 0 var(--wm-space-md);
  border: 1px solid var(--wm-shell-border);
  border-radius: var(--wm-radius-pill);
  font: 850 12px/1 var(--wm-font-ui);
  cursor: pointer;
  transition: transform 180ms var(--wm-ease-out, cubic-bezier(.16, 1, .3, 1)),
              border-color 180ms var(--wm-ease-out, cubic-bezier(.16, 1, .3, 1)),
              background-color 180ms var(--wm-ease-out, cubic-bezier(.16, 1, .3, 1));
}

.wm-ds-btn:hover {
  transform: translateY(-1px);
}

.wm-ds-btn-primary {
  color: oklch(10% 0.018 245);
  background: linear-gradient(135deg, var(--wm-accent-cyan), var(--wm-accent-teal));
  border-color: oklch(88% 0.09 200 / 0.72);
}

.wm-ds-btn-ghost {
  color: var(--wm-shell-ink);
  background: oklch(100% 0 0 / 0.055);
}

.wm-ds-kpi-grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: var(--wm-space-sm);
  margin: var(--wm-space-sm) 0;
}

.wm-ds-kpi-card {
  min-height: 128px;
  padding: var(--wm-space-md);
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  border: 1px solid var(--wm-shell-border);
  border-radius: var(--wm-radius-lg);
  background: oklch(100% 0 0 / 0.052);
}

.wm-ds-kpi-card[data-tone="teal"] { --kpi-tone: var(--wm-accent-teal); }
.wm-ds-kpi-card[data-tone="orange"] { --kpi-tone: var(--wm-accent-orange); }
.wm-ds-kpi-card[data-tone="violet"] { --kpi-tone: var(--wm-accent-violet); }
.wm-ds-kpi-card[data-tone="green"] { --kpi-tone: var(--wm-accent-green); }
.wm-ds-kpi-card[data-tone="blue"] { --kpi-tone: var(--wm-accent-blue); }

.wm-ds-kpi-label,
.wm-ds-kpi-detail {
  color: var(--wm-shell-ink-low);
  font-size: 12px;
  font-weight: 750;
}

.wm-ds-kpi-value {
  color: var(--kpi-tone, var(--wm-accent-cyan));
  font-family: var(--font-mono, ui-monospace, monospace);
  font-size: clamp(1.5rem, 2.6vw, 2.25rem);
  letter-spacing: -0.055em;
}

.wm-ds-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.wm-ds-tab {
  min-height: 32px;
  padding: 0 11px;
  border: 1px solid var(--wm-shell-border);
  border-radius: var(--wm-radius-pill);
  background: oklch(100% 0 0 / 0.045);
  color: var(--wm-shell-ink-mid);
  cursor: pointer;
  font: 800 11px/1 var(--wm-font-ui);
}

.wm-ds-tab.is-active {
  color: oklch(10% 0.018 245);
  background: var(--wm-accent-cyan);
  border-color: oklch(88% 0.09 200 / 0.74);
}

.wm-ds-filter {
  display: grid;
  gap: 7px;
}

.wm-ds-filter span {
  color: var(--wm-shell-ink-low);
  font-size: 11px;
  font-weight: 850;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.wm-ds-filter input {
  width: 100%;
  min-height: 42px;
  border: 1px solid var(--wm-shell-border);
  border-radius: var(--wm-radius-md);
  padding: 0 var(--wm-space-sm);
  background: oklch(8% 0.018 252 / 0.52);
  color: var(--wm-shell-ink);
  outline: 0;
  font: 650 13px/1 var(--wm-font-ui);
}

.wm-ds-filter input:focus {
  border-color: var(--wm-accent-cyan);
  box-shadow: 0 0 0 3px oklch(78% 0.145 210 / 0.14);
}

.wm-ds-badge {
  display: inline-flex;
  align-items: center;
  min-height: 24px;
  padding: 0 9px;
  border: 1px solid var(--badge-border, var(--wm-shell-border));
  border-radius: var(--wm-radius-pill);
  background: var(--badge-bg, oklch(100% 0 0 / 0.055));
  color: var(--badge-color, var(--wm-shell-ink-mid));
  font-size: 10px;
  font-weight: 900;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  white-space: nowrap;
}

.wm-ds-badge[data-tone="critical"] {
  --badge-bg: oklch(64% 0.22 25 / 0.14);
  --badge-border: oklch(64% 0.22 25 / 0.35);
  --badge-color: oklch(80% 0.16 32);
}

.wm-ds-badge[data-tone="warning"],
.wm-ds-badge[data-tone="medium"],
.wm-ds-badge[data-tone="watch"] {
  --badge-bg: oklch(72% 0.18 55 / 0.14);
  --badge-border: oklch(72% 0.18 55 / 0.35);
  --badge-color: var(--wm-accent-orange);
}

.wm-ds-badge[data-tone="high"],
.wm-ds-badge[data-tone="strong"] {
  --badge-bg: oklch(73% 0.135 180 / 0.14);
  --badge-border: oklch(73% 0.135 180 / 0.36);
  --badge-color: var(--wm-accent-teal);
}

.wm-ds-badge[data-tone="violet"] {
  --badge-bg: oklch(72% 0.16 305 / 0.14);
  --badge-border: oklch(72% 0.16 305 / 0.34);
  --badge-color: var(--wm-accent-violet);
}

.wm-ds-score {
  --score: 0;
  width: 58px;
  height: 58px;
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  border-radius: 50%;
  background:
    radial-gradient(circle at center, var(--wm-shell-surface-strong) 0 58%, transparent 59%),
    conic-gradient(var(--wm-accent-cyan) calc(var(--score) * 1%), oklch(100% 0 0 / 0.10) 0);
  box-shadow: 0 0 0 1px var(--wm-shell-border) inset;
}

.wm-ds-score strong,
.wm-ds-score span {
  grid-area: 1 / 1;
}

.wm-ds-score strong {
  color: var(--wm-shell-ink);
  font-family: var(--font-mono, ui-monospace, monospace);
  font-size: 16px;
}

.wm-ds-score span {
  transform: translateY(14px);
  color: var(--wm-shell-ink-low);
  font-size: 8px;
  font-weight: 900;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.wm-ds-state {
  min-height: 160px;
  display: grid;
  place-content: center;
  gap: var(--wm-space-xs);
  padding: var(--wm-space-lg);
  border: 1px dashed var(--wm-shell-border);
  border-radius: var(--wm-radius-lg);
  color: var(--wm-shell-ink-low);
  text-align: center;
}

.wm-ds-state strong {
  color: var(--wm-shell-ink);
}

.wm-ds-table {
  display: grid;
  gap: 7px;
  margin-top: var(--wm-space-md);
}

.wm-ds-table-row {
  min-height: 34px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--wm-space-sm);
  padding: 0 var(--wm-space-sm);
  border: 1px solid var(--wm-shell-border);
  border-radius: var(--wm-radius-md);
  background: oklch(100% 0 0 / 0.045);
  color: var(--wm-shell-ink-mid);
  font-size: 12px;
  font-weight: 750;
}

.wm-ds-table-row strong {
  color: var(--wm-accent-green);
  font-family: var(--font-mono, ui-monospace, monospace);
}

.wm-ds-table-row[data-tone="negative"] strong {
  color: var(--wm-accent-orange);
}

.wm-radar-hero {
  padding: var(--wm-space-xl);
  display: grid;
  grid-template-columns: minmax(0, 1fr) max-content;
  align-items: end;
  gap: var(--wm-space-lg);
}

.wm-business-hero {
  padding: var(--wm-space-xl);
  display: grid;
  grid-template-columns: minmax(0, 1fr) max-content;
  align-items: end;
  gap: var(--wm-space-lg);
}

.wm-business-hero h2 {
  margin: 8px 0 10px;
  max-width: 17ch;
  color: var(--wm-shell-ink);
  font-family: var(--wm-font-editorial);
  font-size: clamp(2.15rem, 4.7vw, 4.85rem);
  line-height: 0.94;
  letter-spacing: -0.07em;
  text-wrap: balance;
}

.wm-business-lede {
  max-width: 72ch;
  color: var(--wm-shell-ink-mid);
  font-size: 15px;
  font-weight: 620;
  line-height: 1.66;
}

.wm-business-hero-actions,
.wm-business-actions,
.wm-business-chip-row,
.wm-business-toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: var(--wm-space-xs);
}

.wm-business-hero-actions {
  justify-content: flex-end;
}

.wm-business-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--wm-space-sm);
}

.wm-business-grid--globe {
  grid-template-columns: minmax(320px, 0.9fr) minmax(360px, 1.1fr) minmax(280px, 0.8fr);
}

.wm-business-workbench {
  display: grid;
  gap: var(--wm-space-sm);
  align-items: start;
}

.wm-business-workbench--split {
  grid-template-columns: minmax(270px, 0.55fr) minmax(640px, 1.45fr);
}

.wm-business-workbench--project {
  grid-template-columns: minmax(300px, 0.72fr) minmax(460px, 1.28fr);
}

.wm-business-workbench--saved {
  grid-template-columns: minmax(300px, 0.95fr) minmax(420px, 1.05fr);
}

.wm-business-panel,
.wm-business-list-panel,
.wm-business-detail {
  padding: var(--wm-space-md);
}

.wm-business-list-panel {
  position: sticky;
  top: 0;
  display: grid;
  gap: var(--wm-space-md);
}

.wm-business-detail {
  min-height: 620px;
  display: grid;
  gap: 12px;
  align-content: start;
}

.wm-company-dashboard,
.wm-company-dashboard-shell {
  display: grid;
  gap: 12px;
}

.wm-company-dashboard-shell {
  grid-template-columns: 1fr;
}

.wm-company-exec-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.48fr) minmax(240px, 0.52fr);
  gap: 10px;
  align-items: stretch;
}

.wm-company-primary-card {
  min-height: 214px;
  padding: 15px;
  display: grid;
  grid-template-columns: 68px minmax(0, 1fr) 92px;
  gap: 13px;
  align-items: start;
  border: 1px solid var(--wm-shell-border);
  border-radius: var(--wm-radius-xl);
  overflow: hidden;
  background:
    radial-gradient(circle at 13% 18%, oklch(74% 0.13 181 / 0.18), transparent 28%),
    linear-gradient(145deg, oklch(100% 0 0 / 0.085), oklch(100% 0 0 / 0.026)),
    var(--wm-shell-surface);
  box-shadow: 0 28px 70px oklch(0% 0 0 / 0.25);
}

.wm-company-primary-card--wide {
  grid-template-columns: 104px minmax(0, 1fr) 76px;
}

.wm-company-mark {
  width: 68px;
  height: 68px;
  display: grid;
  place-items: center;
  border-radius: 22px;
  border: 1px solid oklch(78% 0.145 210 / 0.35);
  background:
    linear-gradient(135deg, oklch(81% 0.118 178 / 0.96), oklch(57% 0.13 154 / 0.88)),
    oklch(24% 0.04 230);
  color: oklch(8% 0.018 245);
  font: 950 20px/1 var(--wm-font-ui);
  letter-spacing: -0.06em;
  box-shadow: 0 18px 46px oklch(0% 0 0 / 0.28), 0 0 0 1px oklch(100% 0 0 / 0.20) inset;
}

.wm-company-meta-line {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin: -3px 0 10px;
}

.wm-company-meta-line span {
  padding: 5px 8px;
  border: 1px solid oklch(100% 0 0 / 0.10);
  border-radius: 999px;
  background: oklch(100% 0 0 / 0.045);
  color: var(--wm-shell-ink-low);
  font-size: 11px;
  font-weight: 800;
}

.wm-company-identity h3 {
  margin: 4px 0 8px;
  color: var(--wm-shell-ink);
  font-family: var(--wm-font-editorial);
  font-size: clamp(1.65rem, 2.7vw, 3.05rem);
  line-height: 0.98;
  letter-spacing: -0.065em;
  text-wrap: balance;
}

.wm-company-score-card {
  min-height: 118px;
  padding: 10px;
  display: grid;
  align-content: center;
  justify-items: center;
  gap: 3px;
  border: 1px solid oklch(77% 0.135 180 / 0.30);
  border-radius: 24px;
  background:
    radial-gradient(circle at 50% 50%, oklch(73% 0.135 180 / 0.12), transparent 62%),
    conic-gradient(oklch(73% 0.135 180 / 0.82) var(--score), oklch(100% 0 0 / 0.08) 0);
  box-shadow: 0 0 0 7px oklch(100% 0 0 / 0.035) inset;
}

.wm-company-score-card span,
.wm-company-score-card small {
  color: var(--wm-shell-ink-low);
  font-size: 10px;
  font-weight: 900;
  letter-spacing: 0.10em;
  text-align: center;
  text-transform: uppercase;
}

.wm-company-score-card strong {
  color: var(--wm-shell-ink);
  font-family: var(--font-mono, ui-monospace, monospace);
  font-size: 30px;
  line-height: 1;
}

.wm-company-facts-rail,
.wm-company-module {
  padding: 12px;
  border: 1px solid var(--wm-shell-border);
  border-radius: 18px;
  background:
    linear-gradient(180deg, oklch(100% 0 0 / 0.060), oklch(100% 0 0 / 0.030)),
    oklch(14% 0.028 240 / 0.68);
}

.wm-company-facts-rail h4,
.wm-company-module h4 {
  margin: 3px 0 9px;
  color: var(--wm-shell-ink);
  font-family: var(--wm-font-editorial);
  font-size: 19px;
  letter-spacing: -0.04em;
}

.wm-company-fact {
  min-height: 34px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  border-bottom: 1px solid var(--wm-shell-border);
}

.wm-company-fact:last-child { border-bottom: 0; }

.wm-company-fact span,
.wm-company-module-label {
  color: var(--wm-shell-ink-low);
  font-size: 11px;
  font-weight: 850;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.wm-company-fact strong {
  color: var(--wm-shell-ink);
  font-size: 13px;
  text-align: right;
}

.wm-company-geo-tile {
  min-height: 78px;
  margin-top: 9px;
  padding: 11px;
  display: grid;
  align-content: end;
  gap: 4px;
  border: 1px solid oklch(73% 0.135 180 / 0.20);
  border-radius: 18px;
  background:
    linear-gradient(90deg, oklch(100% 0 0 / 0.05) 1px, transparent 1px),
    linear-gradient(0deg, oklch(100% 0 0 / 0.05) 1px, transparent 1px),
    radial-gradient(circle at 72% 22%, oklch(70% 0.14 165 / 0.22), transparent 34%),
    oklch(10% 0.035 240 / 0.74);
  background-size: 18px 18px, 18px 18px, auto, auto;
}

.wm-company-geo-tile span {
  color: var(--wm-accent-cyan);
  font-size: 11px;
  font-weight: 900;
  letter-spacing: 0.10em;
  text-transform: uppercase;
}

.wm-company-geo-tile strong {
  color: var(--wm-shell-ink);
  font-size: 15px;
}

.wm-company-tabs {
  min-height: 38px;
  padding: 4px;
  display: flex;
  gap: 5px;
  overflow-x: auto;
  border: 1px solid var(--wm-shell-border);
  border-radius: 999px;
  background: oklch(100% 0 0 / 0.040);
}

.wm-company-tabs button {
  flex: 0 0 auto;
  min-height: 28px;
  padding: 0 11px;
  border: 1px solid transparent;
  border-radius: 999px;
  background: transparent;
  color: var(--wm-shell-ink-low);
  font: 850 11px/1 var(--wm-font-ui);
  letter-spacing: 0.04em;
  cursor: default;
}

.wm-company-tabs button[aria-selected="true"] {
  border-color: oklch(75% 0.135 180 / 0.34);
  background: oklch(73% 0.135 180 / 0.13);
  color: var(--wm-shell-ink);
}

.wm-company-tabs button:disabled {
  opacity: 0.72;
}

.wm-company-stat-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
}

.wm-company-stat {
  min-height: 72px;
  padding: 10px;
  display: grid;
  align-content: space-between;
  border: 1px solid var(--wm-shell-border);
  border-radius: 18px;
  background: oklch(100% 0 0 / 0.045);
}

.wm-company-stat span,
.wm-company-stat small {
  color: var(--wm-shell-ink-low);
  font-size: 10px;
  font-weight: 850;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.wm-company-stat strong {
  color: var(--wm-shell-ink);
  font-size: 14px;
  line-height: 1.18;
}

.wm-company-stat[data-tone="green"] strong {
  color: var(--wm-accent-green);
}

.wm-company-stat[data-tone="high"] strong {
  color: var(--wm-accent-orange);
}

.wm-company-stat[data-tone="medium"] strong {
  color: var(--wm-accent-orange);
}

.wm-company-stat[data-tone="low"] strong {
  color: var(--wm-accent-green);
}

.wm-company-module-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
}

.wm-company-module-grid > .wm-company-module,
.wm-company-module-grid > .wm-business-note {
  grid-column: span 2;
}

.wm-company-module--span2 {
  grid-column: span 2;
}

.wm-company-module.wm-business-note {
  display: grid;
  gap: var(--wm-space-xs);
}

.wm-company-module.wm-business-note p {
  margin: 0;
}

.wm-company-module .wm-ds-badge {
  white-space: normal;
}

.wm-company-module-copy,
.wm-company-action-note {
  margin: 0;
  color: var(--wm-shell-ink-mid);
  font-size: 12px;
  font-weight: 620;
  line-height: 1.55;
}

.wm-company-bar {
  display: grid;
  gap: 6px;
}

.wm-company-bar-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}

.wm-company-bar-head span,
.wm-company-bar small {
  color: var(--wm-shell-ink-low);
  font-size: 10px;
  font-weight: 850;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.wm-company-bar-head strong {
  color: var(--wm-accent-cyan);
  font-family: var(--font-mono, ui-monospace, monospace);
  font-size: 13px;
}

.wm-company-bar-track {
  height: 9px;
  overflow: hidden;
  border-radius: 999px;
  background: oklch(100% 0 0 / 0.075);
}

.wm-company-bar-fill {
  display: block;
  width: var(--value);
  max-width: 100%;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, oklch(71% 0.135 183), oklch(70% 0.15 150));
}

.wm-company-bar[data-tone="high"] .wm-company-bar-fill {
  background: linear-gradient(90deg, oklch(74% 0.18 55), oklch(67% 0.17 32));
}

.wm-company-mini-grid,
.wm-company-checklist {
  display: grid;
  gap: 0;
  border: 1px solid var(--wm-shell-border);
  border-radius: 16px;
  overflow: hidden;
  background: oklch(100% 0 0 / 0.025);
}

.wm-company-mini-grid .wm-company-fact,
.wm-company-checklist .wm-company-fact {
  padding: 0 10px;
}

.wm-company-signal-list {
  display: grid;
  gap: 7px;
}

.wm-company-signal-item {
  min-height: 54px;
  padding: 9px;
  display: grid;
  grid-template-columns: 34px minmax(0, 1fr);
  gap: 10px;
  align-items: center;
  border: 1px solid var(--wm-shell-border);
  border-radius: 16px;
  background: oklch(100% 0 0 / 0.035);
}

.wm-company-signal-index {
  width: 34px;
  height: 34px;
  display: grid;
  place-items: center;
  border-radius: 12px;
  background: oklch(73% 0.135 180 / 0.13);
  color: var(--wm-accent-cyan);
  font: 900 11px/1 var(--wm-font-ui);
}

.wm-company-signal-item strong {
  display: block;
  color: var(--wm-shell-ink);
  font-size: 13px;
  line-height: 1.25;
}

.wm-company-signal-item small {
  display: block;
  margin-top: 3px;
  color: var(--wm-shell-ink-low);
  font-size: 11px;
}

.wm-company-actions {
  margin-bottom: 8px;
}

.wm-business-panel-head,
.wm-business-card-head,
.wm-business-detail-head,
.wm-business-table-row {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--wm-space-sm);
}

.wm-business-panel-head h3,
.wm-business-panel h3,
.wm-business-detail h3 {
  margin-top: 4px;
  color: var(--wm-shell-ink);
  font-family: var(--wm-font-editorial);
  font-size: 24px;
  letter-spacing: -0.04em;
}

.wm-business-detail h3 {
  margin: 8px 0 12px;
  font-size: clamp(2rem, 3.2vw, 3.8rem);
  line-height: 0.98;
  letter-spacing: -0.065em;
  text-wrap: balance;
}

.wm-business-card-list,
.wm-business-list-grid {
  display: grid;
  gap: var(--wm-space-xs);
}

.wm-business-list-grid {
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
}

.wm-business-card,
.wm-business-table-row,
.wm-business-note,
.wm-business-milestone {
  border: 1px solid var(--wm-shell-border);
  border-radius: var(--wm-radius-lg);
  background: oklch(100% 0 0 / 0.045);
}

.wm-business-card {
  width: 100%;
  padding: var(--wm-space-sm);
  display: grid;
  gap: 9px;
  color: inherit;
  text-align: left;
  cursor: pointer;
  transition: transform 180ms var(--wm-ease-out, cubic-bezier(.16, 1, .3, 1)),
              border-color 180ms var(--wm-ease-out, cubic-bezier(.16, 1, .3, 1)),
              background-color 180ms var(--wm-ease-out, cubic-bezier(.16, 1, .3, 1));
}

.wm-business-card:hover,
.wm-business-card.is-selected,
.wm-business-table-row:hover,
.wm-business-table-row.is-selected {
  transform: translateY(-1px);
  border-color: var(--wm-shell-border-strong);
  background: oklch(100% 0 0 / 0.075);
}

.wm-business-card.is-selected,
.wm-business-table-row.is-selected {
  box-shadow: 0 0 0 1px oklch(78% 0.145 210 / 0.22) inset, 0 18px 46px oklch(0% 0 0 / 0.22);
}

.wm-business-card strong,
.wm-business-table-row strong {
  color: var(--wm-shell-ink);
}

.wm-business-card p,
.wm-business-copy,
.wm-business-meta,
.wm-business-table-row span {
  color: var(--wm-shell-ink-low);
  font-size: 12px;
  line-height: 1.45;
}

.wm-business-copy {
  max-width: 68ch;
  color: var(--wm-shell-ink-mid);
  font-size: 15px;
  font-weight: 620;
  line-height: 1.68;
}

.wm-business-table {
  display: grid;
  gap: var(--wm-space-xs);
  margin-top: var(--wm-space-md);
}

.wm-business-table-row {
  width: 100%;
  min-height: 54px;
  padding: var(--wm-space-sm);
  align-items: center;
  color: inherit;
  text-align: left;
  cursor: pointer;
}

.wm-business-table-row[role="row"] {
  cursor: default;
}

.wm-business-table-row[role="row"]:hover {
  transform: none;
}

.wm-business-table-main {
  display: grid;
  gap: 3px;
}

.wm-business-metric-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--wm-space-xs);
}

.wm-business-metric {
  min-height: 96px;
  padding: var(--wm-space-sm);
  display: grid;
  align-content: space-between;
  border: 1px solid var(--wm-shell-border);
  border-radius: var(--wm-radius-lg);
  background: oklch(100% 0 0 / 0.045);
}

.wm-business-metric span {
  color: var(--wm-shell-ink-low);
  font-size: 11px;
  font-weight: 850;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.wm-business-metric strong {
  color: var(--wm-accent-cyan);
  font-family: var(--font-mono, ui-monospace, monospace);
  font-size: 26px;
  letter-spacing: -0.055em;
}

.wm-business-note,
.wm-business-milestone {
  padding: var(--wm-space-md);
}

.wm-business-note {
  color: var(--wm-shell-ink);
  font-family: var(--wm-font-editorial);
  font-size: clamp(1.35rem, 2vw, 2rem);
  line-height: 1.12;
  letter-spacing: -0.045em;
}

.wm-business-milestone {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--wm-space-sm);
  color: var(--wm-shell-ink-mid);
  font-size: 13px;
  font-weight: 750;
}

.wm-business-toolbar {
  margin-top: var(--wm-space-md);
  align-items: end;
  justify-content: space-between;
}

.wm-business-toolbar .wm-ds-filter {
  min-width: min(360px, 100%);
}

.wm-radar-hero h2 {
  margin: 8px 0 10px;
  max-width: 16ch;
  color: var(--wm-shell-ink);
  font-family: var(--wm-font-editorial);
  font-size: clamp(2.2rem, 5vw, 5rem);
  line-height: 0.92;
  letter-spacing: -0.075em;
  text-wrap: balance;
}

.wm-radar-lede {
  max-width: 72ch;
  color: var(--wm-shell-ink-mid);
  font-size: 15px;
  font-weight: 600;
  line-height: 1.65;
}

.wm-radar-hero-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: var(--wm-space-xs);
}

.wm-radar-workbench {
  display: grid;
  grid-template-columns: minmax(280px, 0.88fr) minmax(360px, 1.36fr) minmax(260px, 0.76fr);
  gap: var(--wm-space-sm);
  align-items: start;
}

.wm-radar-list-panel,
.wm-radar-detail,
.wm-radar-side .wm-ds-card {
  padding: var(--wm-space-md);
}

.wm-radar-list-panel {
  display: grid;
  gap: var(--wm-space-md);
  position: sticky;
  top: 0;
}

.wm-radar-panel-head,
.wm-radar-signal-head,
.wm-radar-signal-meta,
.wm-radar-detail-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--wm-space-sm);
}

.wm-radar-panel-head h3,
.wm-radar-side h3 {
  margin-top: 4px;
  color: var(--wm-shell-ink);
  font-family: var(--wm-font-editorial);
  font-size: 24px;
  letter-spacing: -0.04em;
}

.wm-radar-list {
  display: grid;
  gap: var(--wm-space-xs);
}

.wm-radar-signal-card {
  width: 100%;
  padding: var(--wm-space-sm);
  display: grid;
  gap: 9px;
  border: 1px solid var(--wm-shell-border);
  border-radius: var(--wm-radius-lg);
  background: oklch(100% 0 0 / 0.045);
  color: inherit;
  text-align: left;
  cursor: pointer;
  transition: transform 180ms var(--wm-ease-out, cubic-bezier(.16, 1, .3, 1)),
              border-color 180ms var(--wm-ease-out, cubic-bezier(.16, 1, .3, 1)),
              background-color 180ms var(--wm-ease-out, cubic-bezier(.16, 1, .3, 1));
}

.wm-radar-signal-card:hover,
.wm-radar-signal-card.is-selected {
  transform: translateY(-1px);
  border-color: var(--wm-shell-border-strong);
  background: oklch(100% 0 0 / 0.075);
}

.wm-radar-signal-card.is-selected {
  box-shadow: 0 0 0 1px oklch(78% 0.145 210 / 0.22) inset, 0 18px 46px oklch(0% 0 0 / 0.24);
}

.wm-radar-signal-head strong {
  max-width: 24ch;
  color: var(--wm-shell-ink);
  font-size: 14px;
  line-height: 1.25;
}

.wm-radar-signal-card .wm-ds-score {
  width: 46px;
  height: 46px;
}

.wm-radar-signal-card .wm-ds-score strong {
  font-size: 13px;
}

.wm-radar-signal-card .wm-ds-score span {
  display: none;
}

.wm-radar-signal-meta,
.wm-radar-signal-summary {
  color: var(--wm-shell-ink-low);
  font-size: 12px;
  line-height: 1.45;
}

.wm-radar-signal-badges,
.wm-radar-detail-badges,
.wm-radar-tags,
.wm-radar-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.wm-radar-detail {
  min-height: 620px;
  display: grid;
  gap: var(--wm-space-lg);
  align-content: start;
}

.wm-radar-detail h3 {
  margin: 8px 0 12px;
  color: var(--wm-shell-ink);
  font-family: var(--wm-font-editorial);
  font-size: clamp(2rem, 3.2vw, 3.8rem);
  line-height: 0.98;
  letter-spacing: -0.065em;
  text-wrap: balance;
}

.wm-radar-detail-summary {
  max-width: 66ch;
  color: var(--wm-shell-ink-mid);
  font-size: 15px;
  font-weight: 620;
  line-height: 1.68;
}

.wm-radar-evidence,
.wm-radar-recommendation {
  padding: var(--wm-space-md);
  border: 1px solid var(--wm-shell-border);
  border-radius: var(--wm-radius-lg);
  background: oklch(100% 0 0 / 0.045);
}

.wm-radar-evidence h4 {
  margin: 0 0 var(--wm-space-sm);
  color: var(--wm-shell-ink);
  font-family: var(--wm-font-editorial);
  font-size: 22px;
  letter-spacing: -0.04em;
}

.wm-radar-evidence ul {
  display: grid;
  gap: var(--wm-space-xs);
  margin: 0;
  padding-left: 18px;
  color: var(--wm-shell-ink-mid);
  line-height: 1.55;
}

.wm-radar-recommendation p {
  margin-top: 8px;
  color: var(--wm-shell-ink);
  font-size: 16px;
  line-height: 1.58;
}

.wm-radar-side {
  display: grid;
  gap: var(--wm-space-sm);
  position: sticky;
  top: 0;
}

.wm-radar-heatmap-grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 6px;
  margin-top: var(--wm-space-md);
}

.wm-radar-heatmap-cell {
  --intensity: 20;
  min-height: 58px;
  display: grid;
  place-items: center;
  gap: 2px;
  border: 1px solid oklch(78% 0.145 210 / calc(0.12 + var(--intensity) * 0.003));
  border-radius: var(--wm-radius-md);
  background: oklch(73% 0.135 180 / calc(0.055 + var(--intensity) * 0.0022));
}

.wm-radar-heatmap-cell strong {
  color: var(--wm-shell-ink);
  font-family: var(--font-mono, ui-monospace, monospace);
}

.wm-radar-heatmap-cell span {
  color: var(--wm-accent-cyan);
  font-size: 11px;
  font-weight: 900;
}

.wm-ds-action-row {
  width: 100%;
  min-height: 42px;
  margin-top: 8px;
  padding: 0 var(--wm-space-sm);
  display: flex;
  align-items: center;
  justify-content: space-between;
  border: 1px solid var(--wm-shell-border);
  border-radius: var(--wm-radius-md);
  background: oklch(100% 0 0 / 0.045);
  color: var(--wm-shell-ink);
  cursor: pointer;
  font: 800 12px/1 var(--wm-font-ui);
}

.wm-ds-action-row:hover {
  border-color: var(--wm-accent-cyan);
  background: oklch(78% 0.145 210 / 0.10);
}

.wm-toast-stack {
  position: fixed;
  right: 22px;
  bottom: 22px;
  z-index: 10060;
  display: grid;
  gap: var(--wm-space-xs);
  width: min(360px, calc(100vw - 28px));
}

.wm-ds-toast {
  padding: var(--wm-space-sm) var(--wm-space-md);
  border: 1px solid var(--wm-shell-border);
  border-radius: var(--wm-radius-lg);
  background: var(--wm-shell-surface-strong);
  color: var(--wm-shell-ink);
  box-shadow: var(--wm-shadow-card);
  font-size: 13px;
  font-weight: 750;
  animation: wmToastIn 220ms var(--wm-ease-out, cubic-bezier(.16, 1, .3, 1));
}

.wm-ds-toast[data-tone="success"] {
  border-color: oklch(72% 0.16 145 / 0.36);
}

.wm-ds-toast[data-tone="warning"] {
  border-color: oklch(72% 0.18 55 / 0.42);
}

.wm-ds-toast.is-leaving {
  animation: wmToastOut 200ms ease forwards;
}

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

@keyframes wmToastOut {
  to { opacity: 0; transform: translateY(8px); }
}

@media (max-width: 1180px) {
  :root {
    --wm-shell-sidebar-width: 190px;
  }

  .wm-app-sidebar {
    padding: var(--wm-space-sm);
  }

  .wm-shell-brand {
    grid-template-columns: 1fr;
  }

  .wm-shell-brand strong,
  .wm-shell-brand small {
    display: none;
  }

  .wm-shell-nav button {
    min-height: 42px;
    justify-content: flex-start;
    padding: 0 10px;
    font-size: 12px;
  }

  .wm-shell-nav button::after {
    content: none;
  }

  .wm-ds-kpi-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .wm-radar-workbench,
  .wm-business-workbench--split,
  .wm-business-workbench--project,
  .wm-business-workbench--saved,
  .wm-business-grid,
  .wm-business-grid--globe {
    grid-template-columns: minmax(280px, 0.9fr) minmax(360px, 1.1fr);
  }

  .wm-company-exec-grid,
  .wm-company-module-grid,
  .wm-company-stat-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .wm-company-primary-card {
    grid-column: 1 / -1;
    grid-template-columns: 76px minmax(0, 1fr) 112px;
  }

  .wm-radar-side {
    grid-column: 1 / -1;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    position: static;
  }
}

@media (max-width: 860px) {
  body.wm-shell-ready {
    overflow: auto;
  }

  .wm-app-sidebar {
    inset: auto 10px 10px 10px;
    width: auto;
    height: 74px;
    padding: 9px;
    z-index: 190;
  }

  body.wm-shell-collapsed .wm-app-sidebar {
    inset: auto auto 10px 10px;
    width: 68px;
    height: 84px;
    padding: 10px;
  }

  .wm-shell-brand {
    display: none;
  }

  body.wm-shell-collapsed .wm-shell-brand {
    display: grid;
  }

  .wm-shell-sidebar-head {
    display: none;
  }

  body.wm-shell-collapsed .wm-shell-sidebar-head {
    display: grid;
  }

  .wm-shell-nav {
    display: flex;
    gap: 7px;
    overflow-x: auto;
    padding-bottom: 2px;
  }

  .wm-shell-nav button,
  .wm-shell-nav button::after {
    min-width: max-content;
    padding: 0 12px;
    font-size: 12px;
    writing-mode: horizontal-tb;
  }

  .wm-shell-nav button::after {
    content: none;
  }

  .wm-app-topbar {
    left: 10px;
    right: 10px;
    top: 10px;
    grid-template-columns: minmax(0, 1fr);
    min-height: auto;
  }

  .wm-shell-actions {
    justify-content: space-between;
  }

  .wm-radar-view,
  .wm-business-view {
    inset: 140px 10px 94px 10px;
  }

  .wm-radar-hero,
  .wm-business-hero {
    grid-template-columns: 1fr;
    padding: var(--wm-space-lg);
  }

  .wm-ds-kpi-grid,
  .wm-radar-workbench,
  .wm-radar-side,
  .wm-business-grid,
  .wm-business-grid--globe,
  .wm-business-workbench--split,
  .wm-business-workbench--project,
  .wm-business-workbench--saved,
  .wm-business-metric-grid,
  .wm-company-exec-grid,
  .wm-company-module-grid,
  .wm-company-stat-grid {
    grid-template-columns: 1fr;
  }

  .wm-company-module-grid > .wm-company-module,
  .wm-company-module-grid > .wm-business-note,
  .wm-company-module--span2 {
    grid-column: auto;
  }

  .wm-company-primary-card,
  .wm-company-primary-card--wide {
    grid-template-columns: 1fr;
  }

  .wm-company-mark {
    width: 72px;
    height: 72px;
    border-radius: 20px;
  }

  .wm-radar-list-panel,
  .wm-radar-side,
  .wm-business-list-panel {
    position: static;
  }
}



/* WattsMonde Intelligence Platform — dense Palantir-style override 2026-05-14 */
:root {
  --wm-shell-sidebar-width: 216px;
  --wm-shell-topbar-height: 58px;
  --wm-intel-line: oklch(100% 0 0 / 0.115);
  --wm-intel-panel: oklch(15.5% 0.022 252 / 0.96);
  --wm-intel-panel-2: oklch(18% 0.026 252 / 0.98);
}
body.wm-shell-ready { background: radial-gradient(circle at 18% 12%, oklch(34% 0.085 220 / 0.18), transparent 26%), linear-gradient(180deg, oklch(11% 0.018 252), oklch(7% 0.014 252)); }
.wm-app-sidebar { inset: 8px auto 8px 8px; padding: 10px; border-radius: 10px; background: linear-gradient(180deg, oklch(17% 0.024 252 / .98), oklch(10% 0.016 252 / .98)); box-shadow: 0 18px 70px oklch(0% 0 0 / .48); }
.wm-shell-sidebar-head { grid-template-columns: minmax(0, 1fr) 26px; gap: 8px; }
.wm-shell-brand { grid-template-columns: 31px minmax(0,1fr); gap: 8px; }
.wm-shell-brand-mark { width: 31px; height: 31px; border-radius: 7px; font-size: 15px; }
.wm-shell-brand strong { font-family: 'Newsreader', Georgia, serif; font-size: 18px; letter-spacing: -.045em; }
.wm-shell-brand small { font-size: 8.5px; letter-spacing: .18em; }
.wm-shell-collapse-btn { width: 26px; height: 26px; border-radius: 7px; font-size: 12px; }
.wm-shell-nav { gap: 4px; }
.wm-shell-nav button { min-height: 34px; padding: 0 9px; border-radius: 7px; background: transparent; color: oklch(84% 0.016 245); font: 760 11.5px/1.05 var(--wm-font-ui); }
.wm-shell-nav button small { color: oklch(70% 0.018 245 / .72); font: 700 8.5px/1 var(--wm-font-ui); letter-spacing: .11em; text-transform: uppercase; }
.wm-shell-nav button.is-active { color: oklch(96% 0.012 245); background: linear-gradient(90deg, oklch(26% 0.06 220 / .88), oklch(20% 0.035 190 / .82)); border-color: oklch(74% 0.12 200 / .32); box-shadow: inset 2px 0 0 var(--wm-accent-cyan), 0 8px 24px oklch(0% 0 0 / .24); }
.wm-app-topbar { top: 8px; right: 8px; left: calc(var(--wm-shell-sidebar-width) + 18px); min-height: var(--wm-shell-topbar-height); padding: 7px 10px; border-radius: 10px; grid-template-columns: minmax(280px, 780px) max-content; background: oklch(13% 0.018 252 / .92); }
.wm-shell-search { min-height: 38px; border-radius: 8px; background: oklch(7.8% 0.014 252 / .72); }
.wm-shell-search input { min-height: 36px; font-size: 12px; }
.wm-shell-lang, .wm-shell-icon-btn, .wm-shell-profile { min-height: 32px; border-radius: 8px; }
.wm-shell-icon-btn, .wm-shell-profile { min-width: 32px; min-height: 32px; }
.wm-shell-lang { min-height: 32px; }
.wm-shell-lang a { min-width: 28px; min-height: 24px; font-size: 10px; }
.wm-radar-view, .wm-business-view { inset: calc(var(--wm-shell-topbar-height) + 18px) 8px 8px calc(var(--wm-shell-sidebar-width) + 18px); padding-bottom: 12px; }
body.wm-shell-collapsed .wm-app-topbar { left: 78px; }
body.wm-shell-collapsed .wm-radar-view, body.wm-shell-collapsed .wm-business-view { left: 78px; }
.wm-ds-card, .wm-business-list-panel, .wm-business-detail { border-radius: 10px !important; border-color: var(--wm-intel-line) !important; background: var(--wm-intel-panel) !important; }
.wm-business-hero.wm-intel-hero { min-height: 86px; padding: 14px 16px; display: grid; grid-template-columns: minmax(0, 1fr) max-content; align-items: center; background: linear-gradient(135deg, oklch(18% 0.03 252 / .98), oklch(12% 0.018 252 / .98)), var(--wm-intel-panel) !important; }
.wm-business-hero h2 { font-size: clamp(24px, 2.3vw, 38px); letter-spacing: -.055em; }
.wm-business-lede { max-width: 860px; font-size: 12px; line-height: 1.45; color: oklch(78% 0.018 245); }
.wm-intel-kpis { grid-template-columns: repeat(5, minmax(120px, 1fr)); gap: 8px; margin: 8px 0; }
.wm-ds-kpi-card { min-height: 74px; padding: 11px 12px; border-radius: 9px; }
.wm-ds-kpi-label, .wm-ds-eyebrow { font-size: 9px; letter-spacing: .18em; }
.wm-ds-kpi-value { font-size: 22px; }
.wm-ds-kpi-detail { font-size: 10px; }
.wm-companies-workbench { display: grid; grid-template-columns: minmax(320px, 390px) minmax(0, 1fr); gap: 8px; align-items: stretch; }
.wm-companies-workbench .wm-business-list-panel { padding: 12px; max-height: calc(100vh - 174px); overflow: hidden; display: flex; flex-direction: column; }
.wm-business-panel-head h3 { font-size: 16px; letter-spacing: -.03em; }
.wm-intel-search { margin: 8px 0 4px; }
.wm-intel-search input, .wm-ds-filter input { min-height: 34px; border-radius: 7px; font-size: 12px; }
.wm-intel-search-note { margin: 0 0 8px; color: oklch(70% 0.018 245); font-size: 10px; line-height: 1.35; }
.wm-ds-tabs { gap: 5px; margin: 6px 0; }
.wm-ds-tab { min-height: 27px; padding: 0 9px; border-radius: 999px; font-size: 10px; }
.wm-business-card-list { overflow: auto; padding-right: 2px; gap: 5px; }
.wm-business-card--intel { min-height: 74px; padding: 8px; border-radius: 8px; grid-template-columns: 32px minmax(0,1fr); background: oklch(11% 0.016 252 / .76); }
.wm-business-card--intel:hover { transform: none; border-color: oklch(73% 0.12 200 / .36); background: oklch(16% 0.024 252 / .94); }
.wm-business-card--intel.is-selected { box-shadow: inset 2px 0 0 var(--wm-accent-cyan); }
.wm-business-card-logo { width: 32px; height: 32px; border-radius: 7px; font-size: 10px; }
.wm-business-card-head strong { font-size: 12px; }
.wm-business-card-main p { margin: 3px 0 5px; font-size: 10.5px; line-height: 1.28; -webkit-line-clamp: 2; }
.wm-business-chip-row { gap: 4px; }
.wm-ds-badge { min-height: 20px; padding: 0 6px; border-radius: 999px; font-size: 9.5px; }
.wm-intel-card-foot { display: flex; justify-content: space-between; gap: 8px; color: oklch(70% 0.02 205); text-transform: uppercase; letter-spacing: .12em; }
.wm-intel-card-foot small { font-size: 8px; }
.wm-companies-intel .wm-business-detail { padding: 0 !important; min-height: calc(100vh - 174px); overflow: hidden; }
.wm-intel-empty-detail { min-height: 100%; display: grid; place-content: center; text-align: center; padding: 28px; }
body.wm-company-open .wm-companies-intel .wm-companies-workbench { grid-template-columns: 0 minmax(0, 1fr); }
body.wm-company-open .wm-companies-intel .wm-business-list-panel { opacity: 0; pointer-events: none; padding: 0; border-width: 0 !important; overflow: hidden; }
body.wm-company-open .wm-companies-intel .wm-business-detail { min-height: calc(100vh - 158px); overflow: auto; }
.wm-company-dashboard--screenshot { padding: 10px; gap: 8px; }
.wm-company-breadcrumb { position: sticky; top: 0; z-index: 3; min-height: 36px; padding: 6px 8px; border: 1px solid var(--wm-intel-line); border-radius: 8px; background: oklch(10% 0.014 252 / .92); backdrop-filter: blur(14px); }
.wm-company-breadcrumb .wm-company-close-full { margin-left: auto; min-height: 26px; padding: 0 10px; font-size: 10px; }
.wm-company-exec-grid--screenshot { grid-template-columns: minmax(0, 1.55fr) minmax(220px, .55fr) minmax(250px, .7fr); gap: 8px; }
.wm-company-hero-card, .wm-company-facts-rail, .wm-company-geo-card, .wm-company-module, .wm-company-stat { border-radius: 9px !important; border-color: var(--wm-intel-line) !important; background: var(--wm-intel-panel-2) !important; }
.wm-company-hero-card { padding: 12px; grid-template-columns: 72px minmax(0,1fr) minmax(260px, .55fr); gap: 12px; }
.wm-company-mark { width: 72px; height: 72px; border-radius: 12px; }
.wm-company-identity h3 { font-size: clamp(30px, 4vw, 58px); letter-spacing: -.07em; line-height: .9; }
.wm-business-copy { font-size: 11.5px; line-height: 1.38; max-width: 760px; }
.wm-company-score-card--wide { padding: 10px; }
.wm-company-score-ring { width: 88px; height: 88px; }
.wm-company-score-ring strong { font-size: 30px; }
.wm-company-bar-head span, .wm-company-bar-head strong, .wm-company-bar small { font-size: 9.5px; }
.wm-company-fact { min-height: 30px; padding: 6px 0; }
.wm-company-fact span { font-size: 9px; }
.wm-company-fact strong { font-size: 11px; }
.wm-company-stat-grid { grid-template-columns: repeat(4, 1fr); gap: 8px; }
.wm-company-stat { min-height: 62px; padding: 10px; }
.wm-company-stat strong { font-size: 21px; }
.wm-company-tabs { min-height: 34px; gap: 4px; padding: 4px; border-radius: 8px; }
.wm-company-tabs button { min-height: 25px; padding: 0 8px; font-size: 9.5px; }
.wm-company-module-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; }
.wm-company-module--span2 { grid-column: span 2; }
.wm-company-module { padding: 11px; }
.wm-company-module h4 { font-size: 15px; }
.wm-company-module-copy, .wm-company-mini-row, .wm-company-news-card p, .wm-company-news-card small { font-size: 10.5px; line-height: 1.32; }
.wm-company-news-card, .wm-company-project-row, .wm-company-signal-item { border-radius: 7px; padding: 7px; }
@media (max-width: 1180px) { .wm-intel-kpis { grid-template-columns: repeat(3, 1fr); } .wm-company-exec-grid--screenshot, .wm-company-hero-card, .wm-company-module-grid { grid-template-columns: 1fr; } .wm-company-module--span2 { grid-column: auto; } }

/* WattsMonde Enterprise 360 reference pass — 2026-05-14 */
body.wm-company-open .wm-companies-intel {
  inset: calc(var(--wm-shell-topbar-height) + 12px) 10px 10px calc(var(--wm-shell-sidebar-width) + 18px);
}
body.wm-company-open .wm-companies-intel .wm-intel-hero,
body.wm-company-open .wm-companies-intel .wm-intel-kpis {
  display: none !important;
}
body.wm-company-open .wm-companies-intel .wm-companies-workbench {
  height: 100%;
  grid-template-columns: 0 minmax(0, 1fr);
  gap: 0;
}
body.wm-company-open .wm-companies-intel .wm-business-detail {
  min-height: calc(100vh - 84px);
  border-radius: 10px !important;
  background:
    radial-gradient(circle at 76% 12%, oklch(34% 0.075 205 / .18), transparent 28%),
    linear-gradient(180deg, oklch(11% 0.018 252 / .96), oklch(7.5% 0.014 252 / .98)) !important;
}
.wm-company-dashboard--screenshot {
  padding: 8px 10px 14px;
  gap: 8px;
}
.wm-company-breadcrumb {
  display: flex;
  align-items: center;
  gap: 9px;
  min-height: 34px;
  padding: 4px 6px 4px 10px;
  color: oklch(78% 0.018 245);
  font-size: 11px;
}
.wm-company-breadcrumb strong {
  color: var(--wm-shell-ink);
  font-weight: 850;
}
.wm-company-top-actions {
  margin-left: auto;
  display: flex;
  align-items: center;
  gap: 6px;
}
.wm-company-breadcrumb .wm-ds-btn {
  min-height: 26px;
  padding: 0 10px;
  border-radius: 7px;
  font-size: 10px;
}
.wm-company-exec-grid--screenshot {
  grid-template-columns: minmax(520px, 1.34fr) minmax(190px, .32fr) minmax(290px, .48fr);
  gap: 8px;
}
.wm-company-hero-card {
  min-height: 164px;
  display: grid;
  grid-template-columns: 92px minmax(0, 1fr) minmax(330px, .7fr);
  align-items: center;
  overflow: hidden;
  box-shadow: 0 16px 46px oklch(0% 0 0 / .25);
}
.wm-company-mark--image {
  width: 92px;
  height: 92px;
  border-radius: 10px;
  background: linear-gradient(135deg, oklch(78% 0.13 151), oklch(54% 0.12 151));
}
.wm-company-mark--image img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  padding: 10px;
}
.wm-company-identity h3 {
  margin: 2px 0 7px;
  font-size: clamp(31px, 3vw, 46px);
  line-height: .92;
}
.wm-company-meta-line { margin: 0 0 8px; }
.wm-company-meta-line span { min-height: 19px; padding: 3px 7px; font-size: 9px; }
.wm-company-score-card--wide {
  display: grid;
  grid-template-columns: 96px minmax(0, 1fr);
  gap: 12px;
  align-items: center;
  justify-items: stretch;
  min-height: 132px;
  border-radius: 9px !important;
  background: oklch(9% 0.016 252 / .35) !important;
}
.wm-company-score-card--wide > small {
  grid-column: 1;
  color: var(--wm-accent-green);
  text-align: center;
}
.wm-company-score-card--wide .wm-company-score-bars {
  grid-column: 2;
  grid-row: 1 / span 2;
}
.wm-company-score-ring {
  width: 92px;
  height: 92px;
  border: 4px solid oklch(70% 0.15 151 / .72);
  border-radius: 999px;
  display: grid;
  place-items: center;
  background: radial-gradient(circle, oklch(8% 0.014 252) 58%, transparent 59%), conic-gradient(var(--wm-accent-green) var(--score), oklch(100% 0 0 / .08) 0);
}
.wm-company-score-ring strong { font-size: 31px; }
.wm-company-score-ring span { font-size: 10px; color: oklch(82% 0.014 245); }
.wm-company-bar { gap: 4px; }
.wm-company-bar-track { height: 5px; }
.wm-company-bar small { display: none; }
.wm-company-facts-rail,
.wm-company-geo-card,
.wm-company-module,
.wm-company-stat {
  box-shadow: inset 0 1px 0 oklch(100% 0 0 / .045), 0 12px 34px oklch(0% 0 0 / .18);
}
.wm-company-geo-card {
  padding: 12px;
}
.wm-company-worldmap {
  min-height: 128px;
  border-radius: 8px;
  background:
    radial-gradient(circle at 51% 44%, oklch(74% 0.15 170 / .32), transparent 2%, transparent 8%),
    radial-gradient(circle at 26% 47%, oklch(74% 0.15 170 / .24), transparent 2%, transparent 9%),
    radial-gradient(circle at 76% 54%, oklch(74% 0.15 170 / .26), transparent 2%, transparent 9%),
    linear-gradient(90deg, oklch(100% 0 0 / .035) 1px, transparent 1px),
    linear-gradient(0deg, oklch(100% 0 0 / .035) 1px, transparent 1px),
    oklch(7.5% 0.017 252 / .9);
  background-size: auto, auto, auto, 24px 24px, 24px 24px, auto;
}
.wm-company-world-dot {
  width: 18px;
  height: 18px;
  font-size: 9px;
  box-shadow: 0 0 0 3px oklch(72% 0.15 170 / .12), 0 0 18px oklch(72% 0.15 170 / .42);
}
.wm-company-tabs {
  border: 0;
  border-bottom: 1px solid var(--wm-intel-line);
  border-radius: 0;
  background: transparent;
  padding: 0 0 1px;
}
.wm-company-tabs button {
  min-height: 34px;
  border-radius: 0;
  border: 0;
  border-bottom: 2px solid transparent;
  background: transparent !important;
}
.wm-company-tabs button[aria-selected="true"] {
  border-bottom-color: var(--wm-accent-cyan);
  color: var(--wm-accent-cyan);
}
.wm-company-stat-grid { display: none; }
.wm-company-module-grid {
  grid-template-columns: minmax(220px, .7fr) minmax(380px, 1.22fr) minmax(260px, .8fr) minmax(250px, .76fr);
  gap: 8px;
}
.wm-company-module-grid .wm-company-module--span2 { grid-column: span 1; }
.wm-company-module-grid .wm-company-module:nth-child(2) { grid-column: span 2; }
.wm-company-module-grid .wm-company-module:nth-child(7) { grid-column: span 2; }
.wm-company-module h4 { margin-bottom: 8px; font-size: 14px; }
.wm-company-donut-wrap { display: grid; grid-template-columns: 96px minmax(0, 1fr); gap: 10px; align-items: center; }
.wm-company-donut { width: 96px; height: 96px; }
.wm-company-news-card {
  display: grid;
  grid-template-columns: 54px minmax(0,1fr);
  gap: 10px;
  min-height: 58px;
}
.wm-company-news-thumb { width: 54px; height: 46px; border-radius: 7px; }
.wm-company-actions { display: grid; grid-template-columns: 1fr; }
@media (max-width: 1320px) {
  .wm-company-exec-grid--screenshot,
  .wm-company-hero-card,
  .wm-company-module-grid { grid-template-columns: 1fr; }
  .wm-company-module-grid .wm-company-module:nth-child(n) { grid-column: auto; }
}

/* WattsMonde Enterprise 360 full-feature reference pass — 2026-05-14 */
.wm-company-worldmap {
  position: relative;
  min-height: 156px;
  overflow: hidden;
  isolation: isolate;
  border: 1px solid oklch(72% 0.14 175 / .16);
  background:
    radial-gradient(circle at 50% 42%, oklch(70% 0.15 174 / .12), transparent 42%),
    linear-gradient(90deg, oklch(100% 0 0 / .035) 1px, transparent 1px),
    linear-gradient(0deg, oklch(100% 0 0 / .035) 1px, transparent 1px),
    oklch(7.2% 0.018 252 / .94) !important;
  background-size: auto, 24px 24px, 24px 24px, auto !important;
}
.wm-company-worldmap--large { min-height: 248px; }
.wm-company-world-svg {
  position: absolute;
  inset: 10px 10px 30px;
  z-index: 0;
  width: calc(100% - 20px);
  height: calc(100% - 40px);
  opacity: .58;
  filter: drop-shadow(0 0 16px oklch(72% 0.12 205 / .12));
}
.wm-company-world-svg path {
  fill: oklch(27% 0.035 230 / .68);
  stroke: oklch(70% 0.10 200 / .12);
  stroke-width: 1.2;
}
.wm-company-world-dot {
  position: absolute;
  left: var(--x);
  top: var(--y);
  z-index: 2;
  transform: translate(-50%, -50%);
  display: grid;
  place-items: center;
  border: 1px solid oklch(91% 0.12 176 / .82);
  border-radius: 999px;
  background: radial-gradient(circle, oklch(91% 0.13 176) 0 18%, oklch(70% 0.15 174) 25% 45%, oklch(10% 0.02 252 / .45) 48% 100%);
  color: oklch(98% 0 0);
  font: 900 8px/1 var(--wm-font-ui);
}
.wm-company-world-dot[data-size="large"] { width: 24px; height: 24px; }
.wm-company-world-caption {
  position: absolute;
  left: 10px;
  right: 10px;
  bottom: 8px;
  z-index: 3;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  color: oklch(80% 0.02 245);
  font-size: 10px;
  font-weight: 760;
  letter-spacing: .04em;
}
.wm-company-world-caption strong { color: var(--wm-accent-cyan); font-size: 12px; }
.wm-company-project-counters {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 6px;
  margin-top: 7px;
}
.wm-company-project-counters .wm-company-stat {
  min-height: 48px;
  padding: 7px;
  border-radius: 7px !important;
}
.wm-company-project-counters .wm-company-stat strong { font-size: 14px; }
.wm-company-project-counters .wm-company-stat span,
.wm-company-project-counters .wm-company-stat small { font-size: 8px; }
.wm-company-legend-row {
  display: grid;
  grid-template-columns: 10px minmax(0, 1fr) auto;
  gap: 8px;
  align-items: center;
  min-height: 24px;
}
.wm-company-legend-row > span:first-child {
  width: 9px;
  height: 9px;
  border-radius: 999px;
  background: var(--legend-color, var(--wm-accent-cyan));
  box-shadow: 0 0 12px var(--legend-color, var(--wm-accent-cyan));
}
.wm-company-legend-row strong { color: var(--wm-shell-ink); font-size: 11px; }
.wm-company-legend-row em { color: oklch(82% 0.02 240); font-style: normal; font-size: 10px; font-weight: 850; }
.wm-company-donut {
  display: grid;
  place-items: center;
  border-radius: 999px;
  background:
    radial-gradient(circle, oklch(9% 0.017 252) 0 44%, transparent 45%),
    conic-gradient(#37f0c2 0 35%, #9be56b 35% 63%, #67b7ff 63% 83%, #b89cff 83% 95%, #f6c863 95% 100%);
  box-shadow: inset 0 0 0 1px oklch(100% 0 0 / .10), 0 18px 46px oklch(0% 0 0 / .24);
}
.wm-company-donut strong { color: var(--wm-shell-ink); font-size: 26px; }
.wm-company-donut span { color: var(--wm-shell-ink-low); font-size: 10px; text-transform: uppercase; letter-spacing: .12em; }
.wm-company-finance-panel { display: grid; gap: 10px; }
.wm-company-finance-chart {
  min-height: 132px;
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 10px;
  align-items: end;
  padding: 12px 12px 20px;
  border: 1px solid var(--wm-intel-line);
  border-radius: 8px;
  background:
    linear-gradient(0deg, oklch(100% 0 0 / .045) 1px, transparent 1px),
    oklch(7.5% 0.014 252 / .54);
  background-size: 100% 26px, auto;
}
.wm-company-finance-chart span {
  position: relative;
  display: grid;
  align-items: end;
  justify-items: center;
  min-height: var(--h);
  border-radius: 7px 7px 3px 3px;
  background: linear-gradient(180deg, oklch(75% 0.15 166), oklch(60% 0.14 190));
  color: oklch(82% 0.018 245);
  font-size: 9px;
  font-weight: 800;
  box-shadow: 0 -8px 28px oklch(70% 0.14 174 / .18);
}
.wm-company-finance-chart span::after { content: attr(style); display: none; }
.wm-company-transition-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 6px;
}
.wm-company-transition-grid .wm-company-stat { min-height: 78px; padding: 8px; border-radius: 7px !important; }
.wm-company-transition-grid .wm-company-stat strong { font-size: 18px; }
.wm-company-contact-row {
  min-height: 48px;
  display: grid;
  grid-template-columns: 34px minmax(0, 1fr) auto auto;
  gap: 8px;
  align-items: center;
  border-bottom: 1px solid var(--wm-intel-line);
}
.wm-company-contact-row:last-child { border-bottom: 0; }
.wm-company-avatar {
  width: 32px;
  height: 32px;
  display: grid;
  place-items: center;
  border-radius: 999px;
  background: linear-gradient(135deg, oklch(72% 0.08 45), oklch(56% 0.10 25));
  color: oklch(98% 0 0);
}
.wm-company-avatar b { font-size: 10px; }
.wm-company-contact-main { display: grid; gap: 2px; }
.wm-company-contact-main strong { color: var(--wm-shell-ink); font-size: 11px; }
.wm-company-contact-main small { color: var(--wm-shell-ink-low); font-size: 9px; }
.wm-company-contact-row .wm-ds-btn { min-height: 24px; padding: 0 7px; font-size: 9px; }
.wm-company-document-row,
.wm-company-check-item {
  min-height: 34px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  border-bottom: 1px solid var(--wm-intel-line);
  color: var(--wm-shell-ink);
  font-size: 11px;
  font-weight: 740;
}
.wm-company-document-row:last-child,
.wm-company-check-item:last-child { border-bottom: 0; }
.wm-company-check-item span { color: var(--wm-accent-green); }
.wm-company-action-row {
  width: 100%;
  min-height: 38px;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
  gap: 2px;
  margin-bottom: 7px;
  text-align: left;
}
.wm-company-action-row small {
  color: oklch(75% 0.02 240);
  font-size: 9px;
  font-weight: 650;
}
.wm-company-tabs button { cursor: pointer; }
.wm-company-tabs button:hover { color: var(--wm-shell-ink); }
@media (max-width: 1320px) {
  .wm-company-project-counters,
  .wm-company-transition-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 720px) {
  .wm-company-worldmap--large { min-height: 190px; }
  .wm-company-project-counters,
  .wm-company-transition-grid { grid-template-columns: 1fr; }
  .wm-company-donut-wrap { grid-template-columns: 1fr; }
  .wm-company-contact-row { grid-template-columns: 30px minmax(0, 1fr); }
  .wm-company-contact-row .wm-ds-btn { display: none; }
}


/* WattsMonde Enterprise 360 closer-to-reference pass — 2026-05-14 */
body.wm-company-open {
  --wm-shell-sidebar-width: 184px;
  --wm-shell-topbar-height: 58px;
}
body.wm-company-open .wm-app-sidebar {
  inset: 0 auto 0 0;
  border-radius: 0;
  padding: 14px 10px;
  box-shadow: none;
  background: linear-gradient(180deg, oklch(12% 0.024 252 / .98), oklch(7.5% 0.018 252 / .99));
}
body.wm-company-open .wm-shell-brand-mark { width: 30px; height: 30px; border-radius: 7px; }
body.wm-company-open .wm-shell-brand strong { font-size: 18px; font-family: var(--wm-font-ui); letter-spacing: -.04em; }
body.wm-company-open .wm-shell-brand small { font-size: 7.5px; letter-spacing: .18em; }
body.wm-company-open .wm-app-topbar {
  left: var(--wm-shell-sidebar-width);
  top: 0;
  right: 0;
  height: var(--wm-shell-topbar-height);
  border-radius: 0;
  border-left: 1px solid var(--wm-shell-border);
  border-right: 0;
  border-top: 0;
  padding: 9px 16px;
  background: oklch(8.5% 0.017 252 / .96);
  box-shadow: none;
}
body.wm-company-open .wm-shell-nav-item {
  min-height: 31px;
  padding: 0 9px;
  border-radius: 7px;
  font-size: 11px;
}
body.wm-company-open .wm-shell-nav-kicker { font-size: 7.5px; letter-spacing: .15em; }
body.wm-company-open .wm-companies-intel {
  inset: var(--wm-shell-topbar-height) 0 0 var(--wm-shell-sidebar-width);
  padding: 12px 14px 18px;
  background: oklch(7.2% 0.016 252);
}
body.wm-company-open .wm-companies-intel .wm-business-detail {
  min-height: calc(100vh - var(--wm-shell-topbar-height) - 24px);
  border: 1px solid oklch(86% 0.04 230 / .14) !important;
  border-radius: 8px !important;
  overflow: auto;
}
.wm-company-dashboard--screenshot {
  padding: 8px;
  gap: 8px;
  max-width: none;
}
.wm-company-breadcrumb {
  min-height: 34px;
  padding: 3px 6px 5px 10px;
  font-size: 10.5px;
}
.wm-company-breadcrumb .wm-ds-btn {
  min-height: 28px;
  padding: 0 13px;
  border-radius: 7px;
  font-size: 10px;
}
.wm-company-breadcrumb .wm-ds-btn-primary {
  color: oklch(7% 0.02 230) !important;
}
.wm-company-exec-grid--screenshot {
  grid-template-columns: minmax(520px, 1.58fr) minmax(180px, .42fr) minmax(300px, .72fr);
  gap: 8px;
}
.wm-company-hero-card {
  min-height: 152px;
  padding: 12px !important;
  grid-template-columns: 88px minmax(0,1fr) minmax(318px,.72fr) !important;
  gap: 15px !important;
  align-items: center;
  background: linear-gradient(180deg, oklch(12.5% 0.021 252 / .94), oklch(9.5% 0.017 252 / .96)) !important;
}
.wm-company-mark--image {
  width: 88px !important;
  height: 88px !important;
  border-radius: 8px !important;
}
.wm-company-identity .wm-ds-eyebrow { display: none; }
.wm-company-identity h3 {
  margin: 0 0 8px !important;
  font-family: var(--wm-font-ui) !important;
  font-size: clamp(26px, 2.15vw, 34px) !important;
  line-height: 1.02 !important;
  letter-spacing: -.045em;
}
.wm-company-identity .wm-business-copy {
  max-width: 640px;
  margin: 8px 0 9px;
  color: oklch(82% 0.018 245) !important;
  font-size: 11.5px !important;
  line-height: 1.45 !important;
}
.wm-company-meta-line span,
.wm-business-chip-row .wm-ds-badge {
  min-height: 20px;
  border-radius: 6px;
  font-size: 9px !important;
}
.wm-company-score-card--wide {
  grid-template-columns: 92px minmax(0,1fr) !important;
  min-height: 116px;
  padding: 10px 12px !important;
}
.wm-company-score-ring { width: 86px !important; height: 86px !important; }
.wm-company-score-ring strong { font-size: 27px !important; }
.wm-company-bar-head span,
.wm-company-bar-head strong { font-size: 9px !important; }
.wm-company-facts-rail,
.wm-company-geo-card,
.wm-company-module {
  padding: 11px 12px !important;
  border-radius: 8px !important;
  background: linear-gradient(180deg, oklch(12% 0.022 252 / .92), oklch(9% 0.018 252 / .96)) !important;
}
.wm-company-facts-rail h4,
.wm-company-geo-card h4,
.wm-company-module h4 {
  font-family: var(--wm-font-ui) !important;
  font-size: 14px !important;
  line-height: 1.12;
  letter-spacing: -.02em;
}
.wm-company-fact {
  min-height: 25px;
  padding: 4px 0;
}
.wm-company-fact span { font-size: 8.5px; letter-spacing: .08em; }
.wm-company-fact strong { font-size: 11px; }
.wm-company-geo-card .wm-company-worldmap { min-height: 136px; }
.wm-company-worldmap--large { min-height: 216px !important; }
.wm-company-world-svg {
  inset: 8px 8px 26px !important;
  width: calc(100% - 16px) !important;
  height: calc(100% - 34px) !important;
  opacity: .72 !important;
}
.wm-company-world-svg path { fill: oklch(31% 0.032 220 / .62) !important; }
.wm-company-world-dot {
  width: 15px !important;
  height: 15px !important;
  box-shadow: 0 0 0 3px oklch(74% 0.15 174 / .12), 0 0 15px oklch(74% 0.15 174 / .55) !important;
}
.wm-company-world-dot[data-size="large"] { width: 22px !important; height: 22px !important; }
.wm-company-tabs {
  min-height: 34px;
  gap: 24px;
  padding-left: 2px;
  overflow-x: auto;
}
.wm-company-tabs button {
  flex: 0 0 auto;
  min-height: 34px;
  padding: 0 0 8px !important;
  font-size: 10px !important;
  color: oklch(73% 0.018 245);
}
.wm-company-module-grid {
  grid-template-columns: minmax(210px,.72fr) minmax(380px,1.35fr) minmax(300px,.92fr) minmax(260px,.82fr) !important;
  gap: 8px !important;
  align-items: start;
}
.wm-company-module-grid .wm-company-module { min-height: 0; }
.wm-company-module-grid .wm-company-module--span2 { grid-column: span 1 !important; }
.wm-company-module-grid .wm-company-module:nth-child(2) { grid-column: span 2 !important; }
.wm-company-module-grid .wm-company-module:nth-child(7) { grid-column: span 1 !important; }
.wm-company-donut-wrap { grid-template-columns: 100px minmax(0,1fr) !important; gap: 12px !important; }
.wm-company-donut { width: 96px !important; height: 96px !important; }
.wm-company-donut strong { font-size: 25px !important; }
.wm-company-mini-list { display: grid; gap: 7px; }
.wm-company-news-card,
.wm-company-signal-item,
.wm-company-project-row {
  min-height: 58px;
  padding: 8px !important;
  border-radius: 8px !important;
  background: oklch(100% 0 0 / .025) !important;
}
.wm-company-news-card { grid-template-columns: 54px minmax(0,1fr) !important; }
.wm-company-news-thumb {
  width: 54px !important;
  height: 48px !important;
  background: linear-gradient(135deg, oklch(73% 0.08 75), oklch(40% 0.075 210)) !important;
}
.wm-company-news-card strong,
.wm-company-signal-item strong,
.wm-company-project-row strong {
  color: var(--wm-shell-ink);
  font-size: 11.5px !important;
  line-height: 1.25 !important;
  letter-spacing: -.01em;
}
.wm-company-news-card p {
  margin: 3px 0 4px;
  color: oklch(74% 0.018 245) !important;
  font-size: 10px !important;
  line-height: 1.3 !important;
}
.wm-company-news-card small,
.wm-company-signal-item small { font-size: 9px !important; color: oklch(62% 0.02 245) !important; }
.wm-company-project-counters { margin-top: 8px; }
.wm-company-project-counters .wm-company-stat { min-height: 43px !important; }
.wm-company-transition-grid .wm-company-stat { min-height: 65px !important; }
.wm-company-finance-chart { min-height: 112px !important; padding-top: 8px !important; }
.wm-company-action-row { min-height: 34px !important; margin-bottom: 6px !important; }
.wm-company-action-note { display: none; }
@media (min-width: 1700px) {
  .wm-company-module-grid {
    grid-template-columns: minmax(240px,.72fr) minmax(440px,1.38fr) minmax(300px,.9fr) minmax(300px,.9fr) minmax(240px,.72fr) !important;
  }
  .wm-company-module-grid .wm-company-module:nth-child(2) { grid-column: span 2 !important; }
  .wm-company-module-grid .wm-company-module:nth-child(4) { grid-column: span 1 !important; }
}
@media (max-width: 1360px) {
  body.wm-company-open { --wm-shell-sidebar-width: 76px; }
  body.wm-company-open .wm-shell-brand-copy,
  body.wm-company-open .wm-shell-nav-label,
  body.wm-company-open .wm-shell-nav-kicker { display: none; }
  .wm-company-exec-grid--screenshot,
  .wm-company-hero-card,
  .wm-company-module-grid { grid-template-columns: 1fr !important; }
  .wm-company-module-grid .wm-company-module:nth-child(n) { grid-column: auto !important; }
}

/* WattsMonde Enterprise 360 polish pass — no overlay, cleaner cockpit chrome */
body.wm-company-open #splash,
body.wm-company-open .splash-overlay,
body.wm-shell-page-active #splash,
body.wm-shell-page-active .splash-overlay,
body.wm-shell-page-active #wm-auth-overlay,
body.wm-shell-page-active .wm-auth-overlay {
  display: none !important;
  visibility: hidden !important;
  pointer-events: none !important;
}
body.wm-auth-first-entry #splash,
body.wm-auth-first-entry .splash-overlay {
  display: flex !important;
  visibility: visible !important;
  pointer-events: auto !important;
}
body.wm-company-open .wm-shell-sidebar-head {
  grid-template-columns: minmax(0, 1fr);
}
body.wm-company-open .wm-shell-collapse-btn {
  display: none !important;
}
body.wm-company-open .wm-shell-brand {
  grid-template-columns: 30px minmax(0, 1fr);
  gap: 9px;
}
body.wm-company-open .wm-shell-brand-copy {
  overflow: visible;
}
body.wm-company-open .wm-shell-brand strong {
  white-space: nowrap;
  font-size: 17px !important;
}
body.wm-company-open .wm-shell-actions {
  display: none !important;
}
body.wm-company-open .wm-shell-search {
  max-width: min(720px, 62vw);
}
body.wm-company-open .wm-companies-intel .wm-business-detail::-webkit-scrollbar {
  width: 8px;
}
body.wm-company-open .wm-companies-intel .wm-business-detail::-webkit-scrollbar-thumb {
  border-radius: 999px;
  background: oklch(75% 0.13 190 / .32);
}
@media (max-width: 1360px) {
  body.wm-company-open .wm-shell-brand-copy { display: none !important; }
}

body.wm-company-open .alerts-toggle,
body.wm-company-open .dashboard-toggle,
body.wm-company-open .wm-bookmarks-open,
body.wm-company-open #wmBookmarksOpen,
body.wm-shell-page-active .alerts-toggle,
body.wm-shell-page-active .dashboard-toggle {
  display: none !important;
  visibility: hidden !important;
  pointer-events: none !important;
}

body.wm-company-open #alertsToggleBtn,
body.wm-company-open #regionBar,
body.wm-company-open .region-bar,
body.wm-shell-page-active #alertsToggleBtn,
body.wm-shell-page-active #regionBar,
body.wm-shell-page-active .region-bar {
  display: none !important;
  visibility: hidden !important;
  pointer-events: none !important;
}

@media (max-width: 768px) {
  .splash-overlay {
    flex-direction: column !important;
    align-items: stretch !important;
  }

  .wm-skip-splash {
    position: sticky !important;
    right: auto !important;
    bottom: calc(12px + env(safe-area-inset-bottom)) !important;
    align-self: flex-end;
    margin: 16px 0 0 auto;
  }

  body.wm-splash-dismissed .wm-context-bar {
    left: max(10px, env(safe-area-inset-left)) !important;
    right: calc(70px + env(safe-area-inset-right)) !important;
    bottom: calc(74px + env(safe-area-inset-bottom)) !important;
    max-width: none !important;
  }
}
