/* Editorial map focus: transshipment, Colombo and presentation tools. */
.map-story .ms-focus { position: absolute; inset: 0; z-index: 1; overflow: hidden; background: #152943; color: #faf8f3; }
.map-story .ms-focus[hidden], .map-story .ms-focus [hidden] { display: none !important; }
.mf-transshipment, .mf-city { position: absolute; inset: 0 0 68px; overflow: hidden; }
.mf-map-label { position: absolute; top: 63px; left: 28px; z-index: 3; pointer-events: none; }
.mf-kicker { display: block; color: #a9e5e2; font-family: var(--body,'Manrope',Arial,sans-serif); font-size: 9px; font-weight: 600; line-height: 1.6; letter-spacing: .12em; text-transform: uppercase; }
.mf-map-label strong { display: block; margin-top: 5px; color: #faf8f3; font-family: var(--editorial,'Cormorant Garamond',Georgia,serif); font-size: 29px; font-weight: 400; line-height: 1.1; }
.mf-flow-map, .mf-city-map, .mf-island-context { position: absolute; inset: 0; width: 100%; height: 100%; display: block; overflow: hidden; }
.mf-regional-land { fill: #2c465f; stroke: #526c83; stroke-width: .5; stroke-linejoin: round; opacity: .75; }
.mf-flow-grid { fill: none; stroke: #cce3f3; stroke-width: .4; opacity: .06; }
.mf-flow-marker { fill: #a9e5e2; color: #a9e5e2; }
.mf-flow-marker--destination { fill: #efb0a4; color: #efb0a4; }
.mf-flow-marker--hub { fill: #faf8f3; color: #faf8f3; }
.mf-flow-marker .mf-flow-marker-ring { fill: none; stroke: currentColor; stroke-width: .9; opacity: .4; vector-effect: non-scaling-stroke; }
.mf-flow-marker .mf-flow-marker-core { fill: currentColor; opacity: .7; }
.mf-flow-marker .mf-spotlight-glow { opacity: 0; pointer-events: none; }
.mf-flow-marker .mf-spotlight-orbit { fill: none; stroke: currentColor; stroke-width: .7; opacity: 0; vector-effect: non-scaling-stroke; }
.mf-flow-marker.is-active .mf-flow-marker-core, .mf-flow-marker.is-overview .mf-flow-marker-core { opacity: 1; }
.mf-flow-marker.is-active .mf-flow-marker-ring { opacity: .9; }
.map-story .mf-flow-marker text { font-family: var(--body,'Manrope',Arial,sans-serif); font-size: 11px; font-weight: 550; fill: #e7f1f6; stroke: #152943; stroke-width: 3px; stroke-linejoin: round; paint-order: stroke; letter-spacing: .02em; }
.map-story .mf-flow-marker:not(.is-active):not(.is-overview) text { opacity: 0; }
.map-story .mf-flow-marker .mf-hub-sub { fill: #a9e5e2; font-size: 9.5px; font-weight: 400; stroke-width: 2px; }
.mf-flow-caption { position: absolute; left: 28px; right: 28px; bottom: 65px; display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.mf-flow-caption > span { color: #e6edf5; font-size: 13px; font-weight: 550; line-height: 1.6; }
.map-story .mf-flow-caption button { display: inline-flex; align-items: center; gap: 7px; min-width: 44px; min-height: 44px; padding: 5px 0 5px 12px; border: 0; background: transparent; color: #a9e5e2; font-size: 11px; white-space: nowrap; }
.mf-flow-caption svg { width: 16px; height: 16px; }
.mf-flow-steps { position: absolute; left: 28px; right: 28px; bottom: 8px; display: flex; align-items: center; justify-content: space-between; gap: 10px; padding-top: 6px; border-top: 1px solid #415771; }
.map-story .mf-flow-steps > button { display: flex; align-items: center; justify-content: center; gap: 8px; flex: 1 1 0; min-width: 0; min-height: 44px; padding: 7px 9px; border: 1px solid transparent; border-radius: 3px; background: transparent; color: #738ca8; font-family: var(--body,'Manrope',Arial,sans-serif); font-size: 10px; font-variant-numeric: tabular-nums; line-height: 1.45; cursor: pointer; }
.map-story .mf-flow-steps > button:hover { border-color: #4b677f; color: #d4e4ed; background: #1b334d; }
.mf-flow-steps b { color: #9fb0c7; font-size: 11px; font-weight: 450; }
.mf-flow-steps i { color: #5b7591; font-size: 15px; font-style: normal; }
.map-story .mf-flow-steps .is-active { border-color: #6d767c; background: #efb0a40b; color: #efb0a4; }
.mf-flow-steps .is-active b { color: #faf8f3; }
.mf-focus-footer { position: absolute; bottom: 0; left: 0; right: 0; z-index: 5; display: flex; align-items: center; justify-content: space-between; gap: 10px; min-height: 68px; padding: 10px 18px; border-top: 1px solid #3a506c; background: #101f37; }
.mf-route-choices, .mf-city-choices { display: flex; flex: 1 1 auto; gap: 3px; min-width: 0; overflow-x: auto; scrollbar-width: thin; scrollbar-color: #456078 transparent; }
.mf-route-choices > button, .mf-city-choices > button { flex: 0 0 auto; }
.map-story .mf-focus-footer :is(button,summary) { display: flex; align-items: center; justify-content: center; min-width: 44px; min-height: 44px; padding: 10px 12px; border: 1px solid transparent; border-radius: 3px; background: transparent; color: #acbfd5; font-family: var(--body,'Manrope',Arial,sans-serif); font-size: 11px; line-height: 1.4; white-space: nowrap; cursor: pointer; }
.map-story .mf-focus-footer button:hover { color: #fff; background: #213c58; }
.map-story .mf-focus-footer button[aria-pressed="true"] { color: #a9e5e2; border-color: #567c86; background: #1b374c; }
.mf-sources { flex: 0 0 auto; position: relative; margin: 0; border: 0; }
.map-story .mf-sources summary { padding: 10px 6px; color: #91a8c1; font-size: 9px; list-style: none; }
.mf-sources summary::-webkit-details-marker { display: none; }
.mf-sources summary::after { content: '+'; margin-left: 8px; color: #efb0a4; font-size: 16px; }
.mf-sources[open] summary::after { content: '−'; }
.mf-source-panel { position: absolute; bottom: calc(100% + 14px); right: 0; width: 310px; max-width: calc(100vw - 70px); max-height: 320px; overflow: auto; padding: 21px; border: 1px solid #557087; border-radius: 4px; background: #152943; box-shadow: 0 12px 35px #08152666; }
.mf-source-panel strong { display: block; font-family: var(--editorial,'Cormorant Garamond',Georgia,serif); color: #faf8f3; font-size: 25px; font-weight: 400; line-height: 1.15; }
.map-story .mf-source-panel p { margin: 12px 0 15px; font-size: 11px; line-height: 1.8; color: #bdcad9; }
.mf-source-panel a { display: block; padding: 8px 0; color: #a9e5e2; font-size: 10px; line-height: 1.6; text-decoration: underline; text-underline-offset: 3px; }
.mf-city .mf-map-label { pointer-events: none; }
.mf-city .mf-map-label::before { content: ''; position: absolute; z-index: -1; inset: -12px -30px; background: radial-gradient(ellipse,#17334ed9,transparent 75%); }
.mf-geo { vector-effect: non-scaling-stroke; }
.mf-geo--land { fill: #29465b; stroke: none; }
.mf-geo--coast { fill: none; stroke: #8db6c1; stroke-width: 1.3; }
.mf-geo--road { fill: none; stroke: #7890a1; stroke-width: .75; opacity: .52; }
.mf-geo--major-road { fill: none; stroke: #b5b6ab; stroke-width: 1.4; opacity: .75; }
.mf-geo--water, .mf-geo--harbor { fill: #173c57; stroke: #537e94; stroke-width: .6; }
.mf-geo--waterway { fill: none; stroke: #537e94; stroke-width: 1.2; opacity: .8; }
.mf-geo--pier { fill: #7e949b; stroke: #b2c0bb; stroke-width: .7; }
.mf-geo--park { fill: #3b605b; stroke: #52796a; stroke-width: .6; }
.mf-geo--rail { fill: none; stroke: #a69b8a; stroke-width: .8; stroke-dasharray: 3 2; opacity: .5; }
.mf-geo--building { fill: #3c566a; stroke: #7b8d93; stroke-width: .4; opacity: .65; }
.mf-island-context { z-index: 2; pointer-events: none; }
.mf-island-land { fill: #44647b; stroke: #85a4b2; stroke-width: .12; }
.mf-island-context text { fill: #faf8f3; font-family: var(--body,'Manrope',Arial,sans-serif); font-size: 2px; stroke: #152943; stroke-width: .6; paint-order: stroke; }
.mf-city-place { cursor: pointer; }
.mf-place-hit { fill: transparent; }
.mf-place-ring { fill: #132b43; fill-opacity: .8; stroke: #a9e5e2; stroke-width: 1; vector-effect: non-scaling-stroke; }
.mf-place-core { fill: #a9e5e2; }
.map-story .mf-city-place text { fill: #edf4f8; font-family: var(--body,'Manrope',Arial,sans-serif); font-size: 15px; font-weight: 500; stroke: #29465b; stroke-width: 4px; paint-order: stroke; stroke-linejoin: round; }
.mf-city-place.is-selected .mf-place-ring { fill: #efb0a4; fill-opacity: .15; stroke: #efb0a4; stroke-width: 2; }
.mf-city-place.is-selected .mf-place-core { fill: #efb0a4; }
.mf-city-place:hover .mf-place-ring, .mf-city-place:focus-visible .mf-place-ring { stroke: #fff; stroke-width: 3; }
.mf-city-card { position: absolute; z-index: 3; left: 28px; bottom: 55px; width: 240px; max-width: calc(100% - 56px); padding: 16px; border: 1px solid #4b697c; background: #112a41f0; pointer-events: none; }
.mf-city-card strong { display: block; margin: 5px 0 7px; color: #faf8f3; font-family: var(--editorial,'Cormorant Garamond',Georgia,serif); font-size: 25px; font-weight: 400; line-height: 1.15; }
.map-story .mf-city-card p { margin: 0; color: #b9cedd; font-size: 11px; line-height: 1.7; }
.mf-city-credits { position: absolute; z-index: 3; bottom: 12px; left: 28px; right: 20px; display: flex; justify-content: space-between; gap: 15px; color: #9db5c8; font-size: 8px; line-height: 1.7; }
.mf-city-credits a { color: #c6d7e2; text-decoration: underline; text-underline-offset: 3px; }
.ms-focus-tools { display: flex; flex-wrap: wrap; align-items: center; gap: 2px; }
.map-story .ms-focus-tools .ms-button { min-height: 44px; padding: 8px 12px; color: #aebfd5; font-size: 11px; }
.map-story .ms-focus-tools .ms-button[aria-pressed="true"] { color: #efb0a4; background: #efb0a410; }
.mf-pointer-icon { color: #efb0a4; font-size: 16px; }
.mf-tool-short { display: none; }
.mf-laser { position: absolute; z-index: 7; width: 12px; height: 12px; border: 1px solid #ffded5; border-radius: 50%; transform: translate(-50%,-50%); background: #ff715c; box-shadow: 0 0 0 6px #ff715c20,0 0 19px #ff715c88; pointer-events: none; }
.mf-laser[hidden] { display: none; }
.has-laser :is(.ms-world,.mf-flow-map,.mf-city-map) { cursor: crosshair; }
@media (max-width:1000px) {
 .mf-map-label { top: 57px; left: 23px; }
 .mf-map-label strong { font-size: 26px; }
 .mf-flow-steps { gap: 7px; left: 22px; right: 22px; }
 .mf-flow-steps b { font-size: 9px; }
 .mf-flow-caption { left: 22px; right: 22px; }
 .mf-flow-caption > span { font-size: 11px; }
 .mf-focus-footer { padding-left: 12px; padding-right: 12px; }
 .map-story .mf-focus-footer button { padding-left: 9px; padding-right: 9px; font-size: 10px; }
 .mf-source-panel { width: 280px; }
 .map-story .ms-focus-tools .ms-button { font-size: 10px; padding-left: 9px; padding-right: 9px; }
}
@media (max-width:700px) {
 .map-story.is-focus-view .ms-map-topline { display: none; }
 .mf-transshipment, .mf-city { bottom: 58px; }
 .mf-map-label { top: 52px; left: 18px; }
 .mf-map-label strong { font-size: 24px; }
 .map-story.is-presenting .mf-map-label strong { display: none; }
 .mf-kicker { font-size: 8px; }
 .mf-flow-caption { left: 18px; right: 18px; bottom: 62px; gap: 7px; }
 .mf-flow-caption > span { max-width: 65%; font-size: 9px; }
 .map-story .mf-flow-caption button { padding-left: 0; font-size: 9px; }
 .mf-flow-caption button svg { display: none; }
 .mf-flow-steps { bottom: 6px; left: 16px; right: 16px; gap: 4px; padding-top: 6px; }
 .map-story .mf-flow-steps > button { gap: 5px; padding: 5px; font-size: 9px; }
 .mf-flow-steps b { font-size: 9px; }
 .mf-flow-steps i { font-size: 10px; }
 .mf-focus-footer { min-height: 58px; padding: 6px 9px; gap: 3px; }
 .map-story .mf-focus-footer button { padding: 8px; font-size: 9px; }
 .map-story .mf-sources summary { width: 44px; padding: 8px; overflow: hidden; font-size: 0; }
 .mf-sources summary::after { content: 'ⓘ'; margin: 0; font-size: 19px; }
 .mf-sources[open] summary::after { content: '−'; }
 .mf-source-panel { right: -3px; max-width: calc(100vw - 58px); }
 .mf-city-card { left: 16px; bottom: 39px; width: 180px; padding: 10px 12px; }
 .map-story.is-presenting .mf-city-card { width: auto; max-width: 55%; padding: 8px 10px; bottom: 27px; }
 .map-story.is-presenting .mf-city-card :is(.mf-kicker,p) { display: none; }
 .map-story.is-presenting .mf-city-card strong { font-size: 18px; }
 .mf-city-card strong { font-size: 21px; margin: 4px 0; }
 .map-story .mf-city-card p { font-size: 9px; line-height: 1.5; }
 .mf-city-credits { left: 17px; right: 12px; bottom: 9px; font-size: 7px; }
 .mf-city-credits span { display: none; }
 .mf-city-place:not(.is-selected) text { opacity: 0; }
 .map-story .ms-focus-tools .ms-button { padding-left: 8px; padding-right: 8px; }
 .map-story.is-presenting .ms-focus-tools { display: contents; }
 .map-story.is-presenting .ms-meeting-tools :is([data-ms-talk-state],[data-ms-notes-state],.ms-meeting-hint) { display: none; }
 .map-story.is-presenting .mf-tool-full { display: none; }
 .map-story.is-presenting .mf-tool-short { display: inline; }
}
@media (max-height:610px) and (orientation:landscape) {
 .map-story.is-presenting .ms-meeting-tools { margin: 0; padding: 0; }
 .map-story.is-presenting .ms-focus-tools .ms-button { min-height: 44px; font-size: 10px; }
 .map-story.is-presenting .mf-map-label { top: 38px; left: 16px; }
 .map-story.is-presenting .mf-map-label strong { font-size: 20px; }
 .map-story.is-presenting .mf-focus-footer { min-height: 48px; padding: 2px 9px; }
 .map-story.is-presenting .mf-transshipment, .map-story.is-presenting .mf-city { bottom: 48px; }
 .map-story.is-presenting .mf-flow-caption { top: 34px; bottom: auto; left: auto; right: 16px; }
 .map-story.is-presenting .mf-flow-caption > span { display: none; }
 .map-story.is-presenting .mf-flow-steps { display: flex; bottom: 2px; left: 16px; right: 16px; padding-top: 0; border-top: 0; }
 .map-story.is-presenting .mf-flow-steps > button { min-height: 44px; font-size: 9px; }
 .map-story.is-presenting .mf-flow-steps b { font-size: 9px; }
 .map-story.is-presenting .mf-city-card { left: 15px; bottom: 23px; width: 180px; padding: 8px 10px; }
 .map-story.is-presenting .mf-city-card p { display: none; }
 .map-story.is-presenting .mf-city-card strong { font-size: 20px; }
 .map-story.is-presenting .mf-city-credits { bottom: 4px; left: 16px; }
 .map-story.is-presenting .mf-city-credits span { display: none; }
}
@media (prefers-reduced-motion:reduce) {
 .map-story .ms-focus *, .map-story .mf-laser { animation: none !important; transition: none !important; }
}
@media (max-height:450px) and (orientation:landscape) {
 .map-story.is-presenting .ms-heading { display: none; }
 .map-story.is-presenting .ms-close-present { position: absolute; top: 8px; right: 10px; }
 .map-story.is-presenting .mf-map-label strong, .map-story.is-presenting .mf-city-card { display: none; }
 .map-story.is-presenting .mf-source-panel { max-height: 150px; }
 .map-story.is-presenting .mf-map-label { top: 36px; }
}
