/* ============================================================================
   /ferry-map — the Caribbean ferry network.

   Loaded AFTER island-hopping.css, and only adds what the ferry map does that the air map does
   not. The map frame, nodes, edges, hub list, chips, day filter, panels, tables, pills and the
   phone bottom sheet are the air map's own ih-* classes, reused: one look for the Caribbean
   connectivity maps, one stylesheet to change when it moves.
   ========================================================================= */

/* The hub list names ISLANDS, not three-letter codes, so the code column is a name column. */
.fm .ih-hubrow {
    grid-template-columns: 22px minmax(0, 1.5fr) minmax(0, 1fr) 30px;
}

.fm .fm-cd {
    font: 600 13px var(--ih-font);
    overflow-wrap: anywhere;
}

/* The answer-first sentence: the first prose on the page, ahead of the map. */
.fm-answer {
    max-width: 68ch;
    margin: 14px 0 0;
    font-size: 15px;
    line-height: 1.6;
    color: var(--ih-ink);
}

/* Ports: small dots at each real port position, under the island nodes. */
.fm-port circle {
    fill: var(--ih-paper);
    stroke: var(--ih-ink);
    stroke-width: 1;
}

.fm-port[data-dim="1"] { opacity: .15; }
.fm-port title { pointer-events: none; }

.fm-k-port { fill: var(--ih-paper); stroke: var(--ih-ink); stroke-width: 1.1; }

/* An island with no service under the current filter stays on the map but recedes. */
.ih-node.fm-idle { cursor: default; }
.ih-node.fm-idle circle { fill: var(--ih-paper); stroke: var(--ih-muted); stroke-width: 1; }

/* Destination scope: the destination's own islands are ringed. */
.ih-node.fm-focus circle { stroke: var(--ih-hub); stroke-width: 3; }

.fm-routes td { vertical-align: top; }
.fm-intra { color: var(--ih-muted); font-style: italic; }
.fm-verified { display: block; margin-top: 2px; font-size: 11px; color: var(--ih-muted); }
.fm-pill-car { margin-left: 6px; color: var(--ih-hub-ink); }
