/* Local geographic explorer. Route colours encode data, not extra brand accents. */
.exp-map-section{--map-land:#244a38;--map-land-neighbour:#203e31;--map-water:#102c28;--map-lake:#16352e;--map-edge:#749582;--map-text:#f5f8f6;--map-muted:#c3cec6;--map-accent:#9fe1cb;--map-abisko:#9fe1cb;--map-swedish-heart:#abd1e8;--map-kilpisjarvi:#e0c88c;--map-utsjoki:#e5a899;--map-panel:#102a1e;--map-deep:#0b2016;--map-line:#476353;--map-space:32px;--map-gap:16px;--map-radius:4px;--map-motion:180ms;--map-height:640px;--map-label-size:16px}
#routes.exp-map-section .shell{max-width:1280px}
.exp-map-workspace{background:var(--map-panel);border:1px solid var(--map-line);border-radius:var(--map-radius);color:var(--map-text)}
.exp-map-workspace [hidden]{display:none!important}.exp-map-workspace p{margin:0}
.exp-map-heading{--od-gap:24px;flex-wrap:wrap;padding:var(--map-space)}
.exp-map-heading-copy{--od-gap:12px;min-width:min(100%,320px)}
.exp-map-heading h2{margin:0;font:400 clamp(32px,3.2vw,44px)/1.15 var(--display);letter-spacing:0}
.exp-map-heading-copy p{max-width:52ch;color:var(--map-muted);font-size:16px;line-height:1.6}
.exp-map-toolbar,.exp-map-zoom{--od-gap:8px;flex:none}.exp-map-toolbar{flex-wrap:wrap}
.exp-map-toolbar button{display:flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;padding:8px 12px;border:1px solid var(--map-edge);border-radius:var(--map-radius);background:var(--map-panel);color:var(--map-text);cursor:pointer;font:500 16px/1.5 var(--body);white-space:nowrap}
.exp-map-zoom button{padding:8px;font-size:24px;line-height:1}.exp-map-toolbar button:disabled{opacity:.45;cursor:default}
.exp-map-frame{display:grid;grid-template-columns:304px minmax(0,1fr);border-block:1px solid var(--map-line)}
.exp-map-frame>*{min-width:0}
.exp-map-sidebar{display:flex;flex-direction:column;gap:24px;padding:24px 16px}
.exp-map-key{display:grid;grid-template-columns:minmax(0,1fr);gap:8px}
.exp-map-key button{display:grid;grid-template-columns:32px minmax(0,1fr);align-items:start;gap:12px;min-width:0;min-height:104px;padding:16px 12px;background:transparent;border:1px solid transparent;border-radius:var(--map-radius);color:var(--map-text);font:400 16px/1.5 var(--body);text-align:left;cursor:pointer}
.exp-map-key-copy{--od-gap:8px;min-width:0}.exp-map-key-copy strong{font-size:20px;line-height:1.3;font-weight:600}.exp-map-key-copy>span{color:var(--map-muted);font-size:16px;line-height:1.5}
.exp-map-key button[aria-pressed=true]{border-color:var(--route-color);background:var(--map-deep)}
.exp-map-key button[aria-pressed=true] strong{text-decoration:underline;text-underline-offset:4px}
.exp-map-swatch{display:block;width:32px;height:12px;margin-top:8px;color:var(--route-color)}.exp-map-swatch line{stroke:currentColor;stroke-width:3;stroke-linecap:round}
.exp-map-origin{--od-gap:4px;margin:0 12px;margin-top:auto;padding-top:24px;border-top:1px solid var(--map-line)}
.exp-map-origin span{font-size:16px;color:var(--map-muted)}.exp-map-origin strong{font:400 28px/1.2 var(--display);color:var(--map-text)}
/* Leaflet positions geographic layers; isolation keeps its z-index inside the map. */
.exp-map-canvas{position:relative;isolation:isolate;z-index:0;width:100%;height:auto;min-height:var(--map-height);border-left:1px solid var(--map-line);background:var(--map-water);font-family:var(--body);color:var(--map-text)}.exp-map-canvas:focus-visible{outline:3px solid var(--map-accent);outline-offset:-4px}.exp-map-loading{padding:var(--map-space);font-size:16px;max-width:65ch}.exp-map-canvas .leaflet-tile-pane{display:none}.exp-map-canvas .leaflet-marker-icon{transition:none}.exp-map-canvas .leaflet-interactive:focus{outline:none}.exp-map-canvas .leaflet-interactive:focus-visible{outline:2px solid var(--map-text)}
.exp-map-marker{border:0;background:none;display:flex;align-items:center;justify-content:center;border-radius:50%;cursor:pointer}.exp-map-pin{display:block;width:8px;height:8px;border:2px solid var(--map-muted);border-radius:50%;background:var(--map-panel);box-shadow:0 0 0 3px var(--map-water);pointer-events:none}.exp-map-marker.is-endpoint .exp-map-pin{width:14px;height:14px;border-color:var(--place-color,var(--map-accent));background:var(--place-color,var(--map-accent));border-width:3px}.exp-map-marker.is-start .exp-map-pin{width:18px;height:18px;border:3px solid var(--map-text);border-radius:var(--map-radius);background:var(--map-accent)}.exp-map-marker.is-route-stop .exp-map-pin{border-color:var(--place-color,var(--map-accent))}.exp-map-marker.is-selected .exp-map-pin{width:16px;height:16px;border:3px solid var(--map-text);background:var(--place-color,var(--map-accent));box-shadow:0 0 0 4px var(--map-panel)}.exp-map-marker.is-start.is-selected .exp-map-pin{width:18px;height:18px}.exp-map-marker:focus-visible{outline:2px solid var(--map-text);outline-offset:-4px;background:var(--map-panel)}
.exp-map-label{pointer-events:none!important;border:0;background:transparent}.exp-map-label span{display:block;width:max-content;padding:2px 8px;border-radius:var(--map-radius);color:var(--map-text);background:var(--map-panel);font:500 var(--map-label-size)/1.5 var(--body);white-space:nowrap}.exp-map-label.is-major span{font-weight:650}.exp-map-label.is-selected span{color:var(--map-deep);background:var(--map-accent)}.exp-map-label small{display:block;font:400 12px/1.5 var(--body);letter-spacing:0}.exp-map-country{pointer-events:none!important;border:0;background:none}.exp-map-country span{display:block;width:max-content;color:var(--map-muted);font:400 16px/1.5 var(--body);letter-spacing:.08em}
.exp-map-explore{display:grid;grid-template-columns:minmax(240px,1fr) minmax(0,2fr);gap:48px;padding:var(--map-space)}.exp-map-selection{--od-gap:24px}.exp-map-picker{--od-gap:8px}.exp-map-picker label{font-size:16px;color:var(--map-muted)}.exp-map-picker select{display:block;width:100%;max-width:100%;min-height:48px;background:var(--map-deep);border:1px solid var(--map-edge);border-radius:var(--map-radius);padding:8px 32px 8px 12px;color:var(--map-text);font:400 16px/1.5 var(--body);cursor:pointer}.exp-map-route-summary{--od-gap:8px}.exp-map-route-summary h3{font:600 16px/1.5 var(--body);margin:0;color:var(--map-text)}.exp-map-route-summary p{font-size:16px;line-height:1.6;color:var(--map-muted)}.exp-map-route-summary summary{font-weight:500}
.exp-map-stops{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px}.exp-map-stops li{min-width:0;max-width:100%}.exp-map-stops button{display:block;min-height:44px;max-width:100%;padding:8px 12px;color:var(--map-text);background:var(--map-deep);border:1px solid var(--map-line);border-radius:var(--map-radius);font:400 16px/1.5 var(--body);text-align:left;cursor:pointer}.exp-map-stops button[aria-pressed=true]{border-color:var(--map-accent);text-decoration:underline;text-underline-offset:4px}.exp-map-optional{margin-top:16px}.exp-map-optional summary{font-size:16px}
.exp-map-place-content{--od-gap:12px;min-width:0;font-size:16px;line-height:1.6}.exp-map-place-content p{color:var(--map-muted);max-width:70ch}.exp-map-place-header{--od-gap:8px}.exp-map-place-header h3{font:400 clamp(28px,2.4vw,36px)/1.2 var(--display);margin:0;color:var(--map-text);overflow-wrap:anywhere}.exp-map-place-header h3:focus-visible{outline:2px solid var(--map-accent);outline-offset:4px}.exp-map-place-header small{display:block;font-size:16px;color:var(--map-muted)}.exp-map-place-content details{margin:0}.exp-map-place-content summary,.exp-map-selection summary,.exp-map-notes summary{padding:12px 0;min-height:48px;font:500 16px/1.5 var(--body);color:var(--map-text);cursor:pointer}.exp-map-place-content>details{border-top:1px solid var(--map-line);margin-top:4px}.exp-map-detail-body{--od-gap:16px;padding:8px 0 16px;max-width:75ch;color:var(--map-muted);font-size:16px;line-height:1.6}.exp-map-detail-body h4{font:600 16px/1.5 var(--body);margin:0;color:var(--map-text)}.exp-map-detail-body ul{padding-left:24px;margin:0;display:grid;gap:8px}.exp-map-detail-body a,.exp-map-loading a{color:var(--map-accent);text-decoration:underline;text-underline-offset:4px;overflow-wrap:anywhere}.exp-map-detail-body small{display:block;color:var(--map-muted);font-size:16px;line-height:1.6;margin-top:4px}.exp-map-detail-body figure{margin:0;max-width:560px}.exp-map-detail-body figure img{display:block;width:100%;height:auto}.exp-map-detail-body figcaption{margin-top:8px;color:var(--map-muted);font-size:16px;line-height:1.6}.exp-map-detail-body .story-photo{display:block;width:100%}
.exp-map-notes{padding:8px var(--map-space);border-top:1px solid var(--map-line);font-size:16px;color:var(--map-muted)}.exp-map-notes strong{display:block;color:var(--map-text);font-weight:600;margin-bottom:4px}.exp-map-notes #exp-map-qualifications{--od-gap:16px}.exp-map-section button:focus-visible,.exp-map-section select:focus-visible,.exp-map-section summary:focus-visible,.exp-map-section a:focus-visible{outline:3px solid var(--map-accent);outline-offset:4px}
@media(hover:hover){.exp-map-toolbar button:not(:disabled):hover{color:var(--map-deep);background:var(--map-accent);border-color:var(--map-accent)}.exp-map-key button:hover{border-color:var(--route-color);background:var(--map-deep)}.exp-map-key button:hover strong{text-decoration:underline;text-underline-offset:4px}.exp-map-stops button:hover{border-color:var(--map-accent);text-decoration:underline;text-underline-offset:4px}.exp-map-marker:hover .exp-map-pin{border-color:var(--map-text)}.exp-map-detail-body a:hover{color:var(--map-text)}.exp-map-workspace summary:hover{text-decoration:underline;text-underline-offset:4px}}
@media(min-width:1440px){.exp-map-section{--map-height:680px}.exp-map-frame{grid-template-columns:320px minmax(0,1fr)}}
@media(max-width:1023px){
  .exp-map-section{--map-space:24px;--map-height:600px}
  .exp-map-frame{grid-template-columns:1fr}
  .exp-map-sidebar{padding:16px var(--map-space);gap:16px}
  .exp-map-key{grid-template-columns:repeat(2,minmax(0,1fr))}
  .exp-map-key button{min-height:112px;padding:16px}
  .exp-map-origin{display:flex;align-items:baseline;flex-wrap:wrap;gap:12px;margin:0;padding-top:16px}
  .exp-map-origin strong{font:600 16px/1.5 var(--body)}
  .exp-map-canvas{height:var(--map-height);min-height:0;border-left:0;border-top:1px solid var(--map-line)}
  .exp-map-explore{gap:32px;grid-template-columns:minmax(200px,1fr) minmax(0,1.5fr)}
}
@media(max-width:767px){
  .exp-map-section{--map-space:16px;--map-height:480px}
  .exp-map-heading{--od-gap:24px;padding-block:24px}.exp-map-heading-copy{flex-basis:100%}.exp-map-heading h2{font-size:32px}
  .exp-map-key{gap:8px}.exp-map-key button{grid-template-columns:minmax(0,1fr);gap:8px;padding:12px;min-height:0}
  .exp-map-swatch{margin-top:0}.exp-map-key-copy strong{font-size:18px;line-height:1.4}
  .exp-map-explore{grid-template-columns:1fr;gap:24px;padding-block:24px}.exp-map-selection{--od-gap:16px}.exp-map-place-content{max-width:60ch}.exp-map-notes{padding-block:8px}
}
@media(max-width:374px){.exp-map-section{--map-height:440px}.exp-map-key{grid-template-columns:1fr}.exp-map-key button{grid-template-columns:32px minmax(0,1fr);gap:12px}.exp-map-swatch{margin-top:8px}.exp-map-toolbar button{padding-inline:8px}}
@media(prefers-reduced-motion:no-preference){.exp-map-section button{transition:transform var(--map-motion) ease-out}.exp-map-section button:active{transform:translateY(1px)}}

/* Match the existing tour typography and layout primitives. */
.exp-map-section{--display:Arial,sans-serif;--body:Arial,sans-serif;scroll-margin-top:100px}.exp-map-section .od-row{display:flex;align-items:center;gap:var(--od-gap,16px)}.exp-map-section .od-stack,.exp-map-section .od-field{display:flex;flex-direction:column;gap:var(--od-gap,8px)}.exp-map-section .od-fill{flex:1}.exp-map-section .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.exp-map-heading h2,.exp-map-origin strong,.exp-map-place-header h3{font-family:inherit}
