
    .g2-map{width:100%;max-width:520px;background:var(--paper);color:var(--ink);font-family:var(--font-body)}
    .g2-map *{box-sizing:border-box}
    .g2-map svg{display:block;width:100%;height:auto;overflow:visible}
    .g2-map .country{fill:var(--surface);stroke:var(--line-strong);stroke-width:1.5}
    .g2-map .box{fill:var(--surface);stroke:var(--line-strong);stroke-width:1.5}
    .g2-map .hub{fill:var(--surface-2);stroke:var(--amber);stroke-width:1.5}
    .g2-map .route{fill:none;stroke:var(--navy);stroke-width:1.5;stroke-linecap:round}
    .g2-map .main-route{stroke:var(--amber);stroke-width:2}
    .g2-map text{fill:var(--ink);font-family:var(--font-body);font-size:13px}
    .g2-map .heading{fill:var(--navy);font-family:var(--font-head);font-weight:700;font-size:15px}
    .g2-map .secondary{fill:var(--muted);font-size:12px}
    .g2-map .code{fill:var(--navy);font-weight:700;font-size:16px;letter-spacing:1px}
    .g2-map .dot{fill:var(--amber)}
    .g2-map .pulse{fill:none;stroke:var(--amber);stroke-width:1.5;opacity:0;transform-box:fill-box;transform-origin:center}
    .g2-map .running .route{stroke-dasharray:1;stroke-dashoffset:1;animation:g2-map-draw 1s ease forwards;animation-delay:var(--delay)}
    .g2-map .running .dot{opacity:0;animation:g2-map-arrive .4s ease forwards;animation-delay:calc(var(--delay) + 1s)}
    .g2-map .running .pulse{animation:g2-map-pulse 1.8s ease-out 2;animation-delay:calc(var(--delay) + 1s)}
    .g2-map .footer{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:0 12px 12px}
    .g2-map .footer p{margin:0;color:var(--muted);font-size:13px}
    .g2-map button{min-height:44px;padding:8px 14px;border:1px solid var(--line-strong);border-radius:8px;background:var(--surface);color:var(--ink);font:inherit;font-size:14px;cursor:pointer}
    .g2-map button:focus-visible{outline:3px solid var(--amber);outline-offset:3px}
    .g2-map button:disabled{opacity:.6;cursor:default}
    @keyframes g2-map-draw{to{stroke-dashoffset:0}}
    @keyframes g2-map-arrive{to{opacity:1}}
    @keyframes g2-map-pulse{0%{opacity:.7;transform:scale(1)}100%{opacity:0;transform:scale(3)}}
    @media(prefers-reduced-motion:reduce){
      .g2-map *{animation:none!important;transition:none!important}
      .g2-map .running .route{stroke-dashoffset:0}
      .g2-map .running .dot{opacity:1}
      .g2-map .pulse{display:none}
    }
  