/* ============================================================
   Field report - interactive charts and map.
   Ported from FT-2026-05-alt.html. The source was already
   token-driven, so only the token values change: brand hues
   from Marketing & Brand Guidelines v1.0, grounds from the
   site's own palette. Everything is scoped under .ft-report
   so it cannot leak into the rest of the site.
   ============================================================ */

.ft-report{
  /* grounds - the site's, not the source's */
  --bg:var(--ground); --bg-elev:var(--surface); --bg-elev-2:var(--surface-2);
  --line:#22394A; --line-bright:#2F4A5E;
  --text:#E6EEF3; --text-dim:#94AAB8; --text-mute:#63808F;

  /* series - the guidelines' orange/blue pairing for outbound/return,
     with aqua standing in for blue because #1200FE is unreadable here */
  --zixi:#FEA300; --zixi-soft:rgba(254,163,0,0.18);
  --srt:#00FEC8;  --srt-soft:rgba(0,254,200,0.18);

  --danger:#FF6A5E; --warn:#FEA300; --ok:#3FD97A;
  --grid:rgba(255,255,255,0.045);

  /* logo palette, exact */
  --lg-blue:#1200FE; --lg-cyan:#00FEC8; --lg-orange:#FEA300; --lg-red:#FE0000;
  --lg-magenta:#B500FE; --lg-green:#00FE05; --lg-yellow:#FBFE00; --lg-pink:#FE009C;

  font-family:var(--body);
  color:var(--text);
}

.ft-report html, .ft-report body {background:var(--bg);color:var(--text);font-family:var(--body);font-optical-sizing:auto;font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}.ft-report body {
    background-image:
      radial-gradient(ellipse 1000px 500px at 15% -5%, rgba(247,164,35,0.06), transparent),
      radial-gradient(ellipse 1000px 500px at 85% 105%, rgba(32,224,208,0.06), transparent),
      radial-gradient(ellipse 800px 500px at 100% 30%, rgba(255,0,128,0.035), transparent),
      radial-gradient(ellipse 800px 500px at 0% 70%, rgba(37,70,255,0.035), transparent);
    background-attachment:fixed; min-height:100vh;
  }.ft-report .mono {font-family:"IBM Plex Mono",monospace;font-feature-settings:"zero" 1,"ss01" 1}.ft-report .serif {font-family:var(--display);font-optical-sizing:auto;font-variation-settings:"SOFT" 50;font-weight:400}.ft-report /* Header */
  header.top {position:sticky;top:0;z-index:50;background:rgba(10,13,16,0.85);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}.ft-report .brand-text .t1 {font-size:11px;letter-spacing:0.18em;color:var(--text-dim);text-transform:uppercase}.ft-report .brand-text .t2 {font-size:16px;font-weight:500;letter-spacing:-0.01em}.ft-report .top-meta {display:flex;align-items:center;gap:18px;font-size:12px}.ft-report .top-meta .pill {padding:5px 10px;border:1px solid var(--line-bright);color:var(--text-dim)}.ft-report .top-meta .pill .mono {color:var(--text)}.ft-report .top-actions {display:flex;gap:8px}.ft-report .btn {font-family:inherit;font-size:12px;letter-spacing:0.05em;text-transform:uppercase;background:transparent;color:var(--text);border:1px solid var(--line-bright);padding:8px 14px;cursor:pointer;transition:all .15s}.ft-report .btn:hover {background:var(--bg-elev);border-color:var(--text-dim)}.ft-report .btn.primary {background:var(--text);color:var(--bg);border-color:var(--text)}.ft-report .btn.primary:hover {background:var(--text-dim);border-color:var(--text-dim)}.ft-report /* Container */
  main {max-width:1600px;margin:0 auto;padding:32px}.ft-report section {margin-bottom:48px}.ft-report .sec-header {display:flex;align-items:baseline;justify-content:space-between;margin-bottom:18px;padding-bottom:12px;border-bottom:2px solid transparent;border-image:linear-gradient(90deg,var(--lg-blue),var(--lg-cyan),var(--lg-orange),var(--lg-red),var(--lg-magenta),var(--lg-green),var(--lg-yellow),var(--lg-pink)) 1}.ft-report .sec-title {display:flex;align-items:baseline;gap:14px}.ft-report .sec-num {font-family:"IBM Plex Mono",monospace;font-size:11px;letter-spacing:0.1em;font-weight:500}.ft-report /* sec-num gets a brand-bar colour per section so the index reads like a colour-bar strip */
  section:nth-of-type(2) .sec-num {color:var(--lg-blue)}.ft-report section:nth-of-type(3) .sec-num {color:var(--lg-cyan)}.ft-report section:nth-of-type(4) .sec-num {color:var(--lg-orange)}.ft-report section:nth-of-type(5) .sec-num {color:var(--lg-magenta)}.ft-report section:nth-of-type(6) .sec-num {color:var(--lg-green)}.ft-report section:nth-of-type(7) .sec-num {color:var(--lg-pink)}.ft-report .sec-title h2 {font-size:26px;font-weight:600;letter-spacing:-0.015em;font-family:var(--display);font-optical-sizing:auto;font-variation-settings:"SOFT" 100,"opsz" 96}.ft-report .sec-title h2 .em {font-style:italic;color:var(--text-dim);font-family:var(--display);font-optical-sizing:auto;font-variation-settings:"SOFT" 50;font-weight:400;font-size:24px}.ft-report .sec-sub {font-size:12px;color:var(--text-dim);letter-spacing:0.04em}.ft-report /* Hero */
  .hero {display:grid;grid-template-columns:1.4fr 1fr;gap:32px;margin-bottom:48px;align-items:end}.ft-report .hero-title {font-family:var(--display);font-optical-sizing:auto;font-variation-settings:"SOFT" 50;font-size:64px;line-height:0.95;letter-spacing:-0.02em;color:var(--text)}.ft-report .hero-title .ital {font-style:italic;color:var(--text-dim)}.ft-report .hero-title .vs {font-family:var(--body);font-style:normal;font-size:42px;color:var(--text-mute);font-weight:300;padding:0 6px}.ft-report .hero-sub {margin-top:18px;font-size:13px;color:var(--text-dim);max-width:540px;line-height:1.6}.ft-report .hero-meta {display:grid;grid-template-columns:1fr 1fr;gap:12px;font-size:12px}.ft-report .hero-meta-item {border:1px solid var(--line);border-left:3px solid var(--line-bright);padding:14px;background:var(--bg-elev);transition:transform .15s,border-left-color .15s}.ft-report .hero-meta-item:hover {transform:translateX(2px)}.ft-report .hero-meta .hero-meta-item:nth-child(1) {border-left-color:var(--lg-blue)}.ft-report .hero-meta .hero-meta-item:nth-child(2) {border-left-color:var(--lg-orange)}.ft-report .hero-meta .hero-meta-item:nth-child(3) {border-left-color:var(--lg-cyan)}.ft-report .hero-meta .hero-meta-item:nth-child(4) {border-left-color:var(--lg-magenta)}.ft-report .hero-meta-item .lbl {color:var(--text-mute);font-size:10px;letter-spacing:0.15em;text-transform:uppercase;margin-bottom:6px}.ft-report .hero-meta-item .val {font-family:"IBM Plex Mono",monospace;font-size:14px;color:var(--text)}.ft-report .hero-meta-item .val .accent-z {color:var(--zixi)}.ft-report .hero-meta-item .val .accent-s {color:var(--srt)}.ft-report /* Summary cards */
  .summary {display:grid;grid-template-columns:1fr 1fr;gap:20px}.ft-report .leg-card {position:relative;border:1px solid var(--line);background:var(--bg-elev);padding:24px}.ft-report .leg-card.zixi {border-left:3px solid var(--zixi)}.ft-report .leg-card.srt {border-left:3px solid var(--srt)}.ft-report .leg-card-header {display:flex;justify-content:space-between;align-items:start;margin-bottom:18px}.ft-report .leg-tag {font-family:"IBM Plex Mono",monospace;font-size:10px;letter-spacing:0.2em;color:var(--text-mute)}.ft-report .leg-name {font-size:20px;letter-spacing:-0.01em;margin:4px 0 2px}.ft-report .leg-card.zixi .leg-name strong {color:var(--zixi)}.ft-report .leg-card.srt .leg-name strong {color:var(--srt)}.ft-report .leg-sub {font-size:12px;color:var(--text-dim)}.ft-report .leg-stamp {text-align:right;font-family:"IBM Plex Mono",monospace;font-size:11px;color:var(--text-mute);line-height:1.5}.ft-report .stat-grid {display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);margin-top:6px}.ft-report .stat {background:var(--bg-elev);padding:14px 12px;border-top:2px solid transparent}.ft-report .stat-grid .stat:nth-child(1) {border-top-color:var(--lg-blue)}.ft-report .stat-grid .stat:nth-child(2) {border-top-color:var(--lg-cyan)}.ft-report .stat-grid .stat:nth-child(3) {border-top-color:var(--lg-orange)}.ft-report .stat-grid .stat:nth-child(4) {border-top-color:var(--lg-magenta)}.ft-report .stat-grid .stat:nth-child(5) {border-top-color:var(--lg-green)}.ft-report .stat-grid .stat:nth-child(6) {border-top-color:var(--lg-pink)}.ft-report .stat .lbl {font-size:10px;letter-spacing:0.12em;color:var(--text-mute);text-transform:uppercase;margin-bottom:6px;line-height:1.2;min-height:24px}.ft-report .stat .num {font-family:"IBM Plex Mono",monospace;font-size:22px;font-weight:500;letter-spacing:-0.02em}.ft-report .stat .unit {font-size:11px;color:var(--text-dim);margin-left:3px}.ft-report .leg-card.zixi .stat .num.k {color:var(--zixi)}.ft-report .leg-card.srt .stat .num.k {color:var(--srt)}.ft-report /* Map */
  .map-wrap {position:relative;border:1px solid var(--line);background:var(--bg-elev);overflow:hidden}.ft-report #map {height:560px;width:100%;background:#0a0d10;filter:saturate(0.85)}.ft-report .map-toolbar {position:absolute;top:14px;left:14px;z-index:500;background:rgba(10,13,16,0.88);backdrop-filter:blur(8px);border:1px solid var(--line-bright);padding:12px 14px;font-size:12px;display:flex;flex-direction:column;gap:10px;min-width:240px}.ft-report .map-toolbar .row {display:flex;align-items:center;gap:8px}.ft-report .map-toolbar label {font-size:11px;letter-spacing:0.1em;color:var(--text-dim);text-transform:uppercase}.ft-report .map-toolbar select {font-family:inherit;font-size:12px;background:var(--bg);color:var(--text);border:1px solid var(--line-bright);padding:4px 8px;width:100%}.ft-report .leg-toggle {display:flex;gap:0;border:1px solid var(--line-bright)}.ft-report .leg-toggle button {flex:1;background:transparent;color:var(--text-dim);border:0;padding:6px 10px;font-family:inherit;font-size:11px;letter-spacing:0.08em;cursor:pointer;text-transform:uppercase}.ft-report .leg-toggle button.active {background:var(--text);color:var(--bg)}.ft-report .leg-toggle button.zixi.active {background:var(--zixi);color:#000}.ft-report .leg-toggle button.srt.active {background:var(--srt);color:#000}.ft-report .map-legend {position:absolute;bottom:14px;left:14px;z-index:500;background:rgba(10,13,16,0.88);backdrop-filter:blur(8px);border:1px solid var(--line-bright);padding:10px 12px;font-size:11px;display:flex;flex-direction:column;gap:6px}.ft-report .legend-row {display:flex;align-items:center;gap:8px}.ft-report .legend-swatch {width:14px;height:3px;background:var(--text)}.ft-report .point-popup {font-family:"IBM Plex Mono",monospace;font-size:11px;line-height:1.5}.ft-report .point-popup b {color:var(--text);font-weight:500}.ft-report /* Map scrubber */
  .scrubber {position:absolute;bottom:14px;right:14px;left:280px;z-index:500;background:rgba(10,13,16,0.88);backdrop-filter:blur(8px);border:1px solid var(--line-bright);padding:10px 14px}.ft-report .scrubber-top {display:flex;justify-content:space-between;align-items:center;font-size:11px;color:var(--text-dim);margin-bottom:6px}.ft-report .scrubber-top .ts {font-family:"IBM Plex Mono",monospace;color:var(--text)}.ft-report input[type="range"].track {width:100%;-webkit-appearance:none;background:transparent;height:4px}.ft-report input[type="range"].track::-webkit-slider-runnable-track {height:2px;background:var(--line-bright)}.ft-report input[type="range"].track::-webkit-slider-thumb {-webkit-appearance:none;width:12px;height:12px;background:var(--text);margin-top:-5px;border-radius:50%;cursor:pointer}.ft-report input[type="range"].track::-moz-range-track {height:2px;background:var(--line-bright)}.ft-report input[type="range"].track::-moz-range-thumb {width:12px;height:12px;background:var(--text);border:0;border-radius:50%;cursor:pointer}.ft-report /* Charts area */
  .grid-2 {display:grid;grid-template-columns:1fr 1fr;gap:20px}.ft-report .grid-3 {display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.ft-report .chart-card {border:1px solid var(--line);background:var(--bg-elev);padding:20px;position:relative}.ft-report .chart-head {display:flex;justify-content:space-between;align-items:baseline;margin-bottom:14px}.ft-report .chart-title {font-size:13px;font-weight:500;letter-spacing:0.02em}.ft-report .chart-title .ital {font-family:var(--display);font-optical-sizing:auto;font-variation-settings:"SOFT" 50;font-style:italic;font-weight:400;color:var(--text-dim)}.ft-report .chart-meta {font-family:"IBM Plex Mono",monospace;font-size:10px;color:var(--text-mute);letter-spacing:0.1em;text-transform:uppercase}.ft-report .chart-body {position:relative;height:260px}.ft-report .chart-export {position:absolute;top:14px;right:14px;font-size:10px;letter-spacing:0.1em;text-transform:uppercase;color:var(--text-mute);background:transparent;border:1px solid var(--line);padding:4px 8px;cursor:pointer;font-family:inherit}.ft-report .chart-export:hover {color:var(--text);border-color:var(--line-bright)}.ft-report /* Bearer breakdown */
  .bearer-row {display:flex;align-items:baseline;padding:10px 12px;border-bottom:1px solid var(--line);font-family:"IBM Plex Mono",monospace;font-size:13px;border-left:3px solid transparent;transition:border-left-color .15s}.ft-report [id^="bearer-"] .bearer-row:nth-child(1) {border-left-color:var(--lg-blue)}.ft-report [id^="bearer-"] .bearer-row:nth-child(2) {border-left-color:var(--lg-orange)}.ft-report [id^="bearer-"] .bearer-row:nth-child(3) {border-left-color:var(--lg-magenta)}.ft-report [id^="bearer-"] .bearer-row:nth-child(4) {border-left-color:var(--lg-cyan)}.ft-report .bearer-row:last-child {border-bottom:none}.ft-report .bearer-row.bearer-total {font-weight:600;color:var(--text);border-top:2px solid var(--line-bright);border-bottom:none;margin-top:6px;padding-top:14px}.ft-report .bearer-row.bearer-side {font-style:italic;color:var(--text-mute);border-bottom:1px dashed var(--line)}.ft-report .b-name {flex:1;color:var(--text-dim);font-family:inherit}.ft-report .bearer-total .b-name, .ft-report .bearer-side .b-name {color:inherit}.ft-report .b-bar {flex:0 0 120px;height:6px;background:var(--line);margin:0 14px;position:relative}.ft-report .b-bar > span {position:absolute;left:0;top:0;bottom:0;background:currentColor;opacity:0.65}.ft-report .b-gb {min-width:90px;text-align:right;color:var(--text);font-variant-numeric:tabular-nums}.ft-report .b-pct {min-width:54px;text-align:right;color:var(--text-mute);font-size:11px;padding-left:12px;font-variant-numeric:tabular-nums}.ft-report /* Comparison table */
  .compare-table {width:100%;border:1px solid var(--line);background:var(--bg-elev);font-size:12px}.ft-report .compare-table thead th {font-family:"IBM Plex Mono",monospace;font-size:10px;letter-spacing:0.15em;text-transform:uppercase;color:var(--text-mute);padding:14px;text-align:left;border-bottom:1px solid var(--line);background:var(--bg-elev-2);font-weight:400}.ft-report .compare-table td {padding:14px;border-bottom:1px solid var(--line);font-family:"IBM Plex Mono",monospace}.ft-report .compare-table tbody tr:last-child td {border-bottom:0}.ft-report .compare-table td.metric {font-family:var(--body);color:var(--text);font-size:13px;border-left:3px solid transparent}.ft-report /* rotate metric-row left accents through the brand bars so the table scans like a colour spec */
  .compare-table tbody tr:nth-child(8n+1) td.metric {border-left-color:var(--lg-blue)}.ft-report .compare-table tbody tr:nth-child(8n+2) td.metric {border-left-color:var(--lg-cyan)}.ft-report .compare-table tbody tr:nth-child(8n+3) td.metric {border-left-color:var(--lg-orange)}.ft-report .compare-table tbody tr:nth-child(8n+4) td.metric {border-left-color:var(--lg-red)}.ft-report .compare-table tbody tr:nth-child(8n+5) td.metric {border-left-color:var(--lg-magenta)}.ft-report .compare-table tbody tr:nth-child(8n+6) td.metric {border-left-color:var(--lg-green)}.ft-report .compare-table tbody tr:nth-child(8n+7) td.metric {border-left-color:var(--lg-yellow)}.ft-report .compare-table tbody tr:nth-child(8n+8) td.metric {border-left-color:var(--lg-pink)}.ft-report .compare-table td.metric .desc {display:block;font-size:11px;color:var(--text-mute);margin-top:2px}.ft-report .compare-table td.zixi-col {color:var(--zixi)}.ft-report .compare-table td.srt-col {color:var(--srt)}.ft-report .compare-table td.delta {color:var(--text-dim);font-size:11px}.ft-report .winner-z {border-left:2px solid var(--zixi)}.ft-report .winner-s {border-left:2px solid var(--srt)}.ft-report /* Footnote */
  footer {padding:60px 32px 80px;max-width:1600px;margin:0 auto;border-top:1px solid var(--line);color:var(--text-mute);font-size:11px;line-height:1.7}.ft-report footer .colofon {display:grid;grid-template-columns:repeat(3,1fr);gap:32px;margin-bottom:24px}.ft-report footer h4 {font-family:"IBM Plex Mono",monospace;font-size:10px;letter-spacing:0.2em;color:var(--text-dim);text-transform:uppercase;margin-bottom:8px;font-weight:400}.ft-report /* Export modal */
  .modal-back {position:fixed;inset:0;background:rgba(0,0,0,0.6);backdrop-filter:blur(8px);z-index:1000;display:none;align-items:center;justify-content:center}.ft-report .modal-back.open {display:flex}.ft-report .modal {background:var(--bg-elev);border:1px solid var(--line-bright);max-width:520px;width:90%;padding:28px}.ft-report .modal h3 {font-size:18px;font-weight:500;margin-bottom:6px}.ft-report .modal p {font-size:13px;color:var(--text-dim);margin-bottom:20px}.ft-report .modal-opts {display:flex;flex-direction:column;gap:8px;margin-bottom:24px}.ft-report .modal-opt {display:flex;align-items:center;gap:12px;padding:14px;border:1px solid var(--line);cursor:pointer;transition:all .15s}.ft-report .modal-opt:hover {border-color:var(--text-dim);background:var(--bg-elev-2)}.ft-report .modal-opt input {accent-color:var(--text)}.ft-report .modal-opt .opt-label {flex:1}.ft-report .modal-opt .opt-label .name {font-size:13px;font-weight:500}.ft-report .modal-opt .opt-label .sub {font-size:11px;color:var(--text-mute);margin-top:2px}.ft-report .modal-actions {display:flex;gap:8px;justify-content:flex-end}.ft-report /* Detail panel for selected map point */
  .detail-panel {position:absolute;top:14px;right:14px;z-index:500;width:300px;background:rgba(10,13,16,0.92);backdrop-filter:blur(8px);border:1px solid var(--line-bright);padding:16px;font-size:12px}.ft-report .detail-panel.hidden {display:none}.ft-report .detail-panel .ts {font-family:"IBM Plex Mono",monospace;font-size:11px;color:var(--text-dim);margin-bottom:10px;display:flex;justify-content:space-between}.ft-report .detail-panel .ts .seg {color:var(--text)}.ft-report .detail-row {display:flex;justify-content:space-between;padding:6px 0;border-bottom:1px solid var(--line);font-family:"IBM Plex Mono",monospace;font-size:11px}.ft-report .detail-row:last-child {border-bottom:0}.ft-report .detail-row .k {color:var(--text-dim)}.ft-report .detail-row .v {color:var(--text)}.ft-report .detail-row .v.bad {color:var(--danger)}.ft-report .detail-row .v.warn {color:var(--warn)}.ft-report .detail-row .v.ok {color:var(--ok)}.ft-report .detail-section-head {font-size:10px;letter-spacing:0.15em;color:var(--text-mute);margin:12px 0 4px;text-transform:uppercase}.ft-report /* Custom Leaflet popup styling */
  .leaflet-popup-content-wrapper {background:#0a0d10;border:1px solid var(--line-bright);border-radius:0;color:var(--text)}.ft-report .leaflet-popup-tip {background:#0a0d10;border:1px solid var(--line-bright)}.ft-report .leaflet-popup-content {margin:12px 14px;font-family:"IBM Plex Mono",monospace;font-size:11px}.ft-report .leaflet-container a.leaflet-popup-close-button {color:var(--text-dim)}.ft-report .leaflet-control-attribution {background:rgba(10,13,16,0.7) !important;color:var(--text-mute) !important;font-size:10px !important}.ft-report .leaflet-control-attribution a {color:var(--text-dim) !important}.ft-report .leaflet-control-zoom a {background:#0a0d10 !important;color:var(--text) !important;border:1px solid var(--line-bright) !important}.ft-report .leaflet-control-zoom a:hover {background:var(--bg-elev) !important}.ft-report /* Banner note about synthetic data */
  .data-banner {margin-bottom:32px;border:1px dashed var(--line-bright);background:rgba(245,158,11,0.04);padding:14px 18px;font-size:12px;color:var(--text-dim);display:flex;align-items:center;justify-content:space-between;gap:18px}.ft-report .data-banner .left {display:flex;align-items:center;gap:12px}.ft-report .data-banner .badge {font-family:"IBM Plex Mono",monospace;font-size:10px;letter-spacing:0.15em;color:var(--warn);border:1px solid var(--warn);padding:3px 8px}

  @media (max-width:1200px){.ft-report .hero {grid-template-columns:1fr}.ft-report .hero-title {font-size:48px}.ft-report .grid-3 {grid-template-columns:1fr 1fr}
  }
  @media (max-width:800px){.ft-report main {padding:20px}.ft-report .hero-title {font-size:36px}.ft-report .grid-2, .ft-report .grid-3, .ft-report .summary {grid-template-columns:1fr}.ft-report .stat-grid {grid-template-columns:repeat(2,1fr)}.ft-report .top-meta {display:none}.ft-report .scrubber {left:14px}
  }

/* OpenStreetMap's standard tiles are a light style; this inverts and
   desaturates them into something that sits on the dark ground without
   needing a keyed dark basemap. Markers, lines and controls sit in other
   panes and are deliberately left alone. */
.ft-report .leaflet-tile-pane{
  filter:invert(1) hue-rotate(180deg) brightness(0.92) contrast(0.88) saturate(0.55);
}
.ft-report .leaflet-container{background:#0F1E29}
.ft-report .leaflet-control-attribution{
  background:rgba(10,20,28,0.82);color:var(--text-mute);
  font-family:var(--mono);font-size:10px;
}
.ft-report .leaflet-control-attribution a{color:var(--srt)}
