.map-wildlife-ranges{position:absolute;inset:0;width:100%;height:100%;z-index:3;pointer-events:none;overflow:visible}
.map-wildlife-ranges[hidden],.map-wildlife-selector[hidden],.map-wildlife-key[hidden]{display:none!important}
.map-wildlife-area{fill:var(--wildlife-color);fill-opacity:.16;stroke:var(--wildlife-color);stroke-width:1.7;stroke-linejoin:round;stroke-linecap:round}
.map-wildlife-area.is-introduced{fill-opacity:.07;stroke-dasharray:5 4}
.map-wildlife-location{fill:var(--wildlife-color);cursor:pointer;pointer-events:auto}
.map-wildlife-location-halo{fill:#fffdfa;fill-opacity:.75;stroke:var(--wildlife-color);stroke-width:1.8;vector-effect:non-scaling-stroke}
.map-wildlife-location:focus-visible .map-wildlife-location-halo{stroke:#17372f;stroke-width:3}
.map-wildlife-selector,.map-wildlife-panel{position:absolute;z-index:9;right:12px;width:min(354px,calc(100% - 24px));box-sizing:border-box;border:1px solid rgba(23,55,47,.14);border-radius:16px;background:rgba(255,253,250,.97);color:#17372f;box-shadow:0 8px 24px rgba(18,39,31,.14);backdrop-filter:blur(8px)}
.map-wildlife-selector{padding:10px 11px;max-height:44%;overflow:auto;overscroll-behavior:contain}
.map-wildlife-selector .map-overlay-head strong{font-size:12px;line-height:1.3}
.map-wildlife-hint{font-size:10px;line-height:1.45;color:#607269;margin:5px 0 8px}
.map-wildlife-chips{display:flex;flex-wrap:wrap;gap:5px}
.map-wildlife-chips button{display:inline-flex;gap:5px;align-items:center;padding:6px 8px;border:1px solid #dce5dc;background:#f2f5ef;color:#294b3f;border-radius:9px;cursor:pointer;font:inherit;font-size:10px;line-height:1.2}
.map-wildlife-chips button span{font-size:15px}
.map-wildlife-chips button span{display:grid;place-items:center;width:22px;height:22px;flex:none}
.map-wildlife-chips button span img{display:block;width:22px;height:22px;object-fit:contain}
.map-wildlife-chips button[aria-pressed=true]{background:var(--wildlife-color);border-color:var(--wildlife-color);color:#fff;box-shadow:0 2px 5px rgba(0,0,0,.12)}
.map-wildlife-chips button:focus-visible,.map-wildlife-panel button:focus-visible,.map-wildlife-clear:focus-visible{outline:2px solid #17372f;outline-offset:2px}
.map-wildlife-selector-foot{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-top:7px;font-size:9px;color:#64786d}
.map-wildlife-clear{border:0;background:transparent;color:#426255;cursor:pointer;font:inherit;font-size:10px;font-weight:800;padding:4px 6px}
.map-wildlife-clear:disabled{opacity:.4;cursor:default}
.map-wildlife-key{position:absolute;left:12px;bottom:44px;z-index:8;display:flex;flex-wrap:wrap;gap:6px 12px;max-width:calc(100% - 24px);padding:8px 10px;border-radius:12px;background:rgba(255,253,250,.95);border:1px solid #dce5dc;box-shadow:0 5px 16px rgba(18,39,31,.1);color:#294b3f;pointer-events:none}
.map-wildlife-key-item{display:flex;gap:5px;align-items:center;font-size:9px;white-space:nowrap}
.map-wildlife-key-item i{display:block;width:22px;height:10px;box-sizing:border-box;background:color-mix(in srgb,var(--wildlife-color) 16%,transparent);border:1.7px solid var(--wildlife-color);border-radius:3px}
.map-wildlife-key-item.is-introduced i{border-style:dashed;background:transparent}
.map-wildlife-key-item.is-location i{width:10px;height:10px;border-radius:50%;background:var(--wildlife-color);border:2px solid #fff;box-shadow:0 0 0 1px var(--wildlife-color)}
.map-wildlife-key small{color:#64786d;font-size:9px}
.map-wildlife-panel{display:flex;flex-direction:column;max-height:calc(100% - 338px);overflow:hidden}
.map-wildlife-panel{min-width:260px;min-height:180px}
.map-wildlife-panel-head{display:grid;grid-template-columns:48px minmax(0,1fr) 28px;gap:9px;padding:12px 11px 7px;align-items:start}
.map-wildlife-symbol{display:grid;place-items:center;width:48px;height:48px;border-radius:12px;background:color-mix(in srgb,var(--wildlife-color) 12%,#fffdfa);font-size:31px}
.map-wildlife-symbol img{display:block;width:100%;height:100%;object-fit:contain}
.map-wildlife-names h3{margin:0;font-size:15px;line-height:1.25;overflow-wrap:anywhere}
.map-wildlife-names>span{display:block;font-size:10px;color:#65776d;margin-top:3px}
.map-wildlife-names i{display:block;font:italic 11px Georgia,serif;margin-top:3px}
.map-wildlife-close{width:28px;height:28px;border:0;border-radius:8px;background:#edf1eb;color:#17372f;font-size:21px;line-height:1;cursor:pointer}
.map-wildlife-panel-tools{display:flex;justify-content:space-between;align-items:center;padding:0 12px 7px;gap:8px}
.map-wildlife-origin{display:inline-block;border-radius:999px;background:#edf1eb;padding:4px 7px;font-size:9px;font-weight:800}
.map-wildlife-copy{padding:0 12px 42px;overflow:auto;overscroll-behavior:contain;min-height:0;font-size:11px;line-height:1.6}
.map-wildlife-photo{margin:0 0 10px;border-radius:12px;overflow:hidden;background:#e9e8df}
.map-wildlife-photo>img{display:block;width:100%;height:auto;aspect-ratio:auto;object-fit:contain}
.map-wildlife-film{display:block;width:100%;aspect-ratio:16/9;border:0;background:#000}
.map-wildlife-play{margin:8px;min-height:36px;padding:6px 12px;border:0;border-radius:999px;background:#17372f;color:#fffdf8;font:inherit;font-size:13px;font-weight:800}
.map-wildlife-photo figcaption{display:flex;justify-content:space-between;gap:8px;align-items:baseline;padding:5px 8px;font-size:9px;color:#365549}
.map-wildlife-photo figcaption a{color:inherit;text-align:right;text-decoration:underline}
.map-wildlife-photo-fallback{display:grid;place-items:center;min-height:96px;padding:10px;text-align:center;color:#526c5e}
.map-wildlife-smile{font-size:13px;font-weight:800;color:#174f42;line-height:1.4}
.map-wildlife-panel>.map-overlay-resize-handle{bottom:7px;right:7px}
.map-wildlife-copy>p{margin:4px 0 10px}
.map-wildlife-facts{display:grid;grid-template-columns:52px minmax(0,1fr);gap:7px 9px;margin:10px 0;border-top:1px solid #dce5dc;padding-top:10px}
.map-wildlife-facts dt{font-size:10px;font-weight:900;color:#526c5e}
.map-wildlife-facts dd{margin:0}
.map-wildlife-copy h4{font-size:11px;margin:12px 0 6px}
.map-wildlife-places{display:flex;flex-direction:column;gap:6px}
.map-wildlife-places button{display:flex;flex-direction:column;align-items:start;gap:3px;border:1px solid #dce5dc;border-radius:10px;background:#f2f5ef;color:#17372f;text-align:left;padding:8px;font:inherit;cursor:pointer}
.map-wildlife-places small{font-size:9px;color:#65776d}
.map-wildlife-sources{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}
.map-wildlife-sources a{font-size:9px;color:#426255;text-decoration:underline;text-underline-offset:2px}
.map-wildlife-map-note{font-size:9px;color:#65776d;margin-top:9px!important}
@media(max-width:760px){
 .map-wildlife-selector{left:8px;right:8px;width:auto;max-height:36%;padding:8px}
 .map-wildlife-hint{margin:3px 0 5px;font-size:9px}
 .map-wildlife-chips{display:grid;grid-template-rows:repeat(2,auto);grid-auto-flow:column;grid-auto-columns:max-content;overflow-x:auto;padding:2px 2px 5px;gap:4px;scrollbar-width:thin}
 .map-wildlife-chips button{padding:5px 7px;font-size:10px}
 .map-wildlife-selector-foot{margin-top:2px}
 .map-wildlife-panel{left:8px;right:8px;width:auto;max-height:38%}
 .map-wildlife-panel-head{padding:8px 9px 5px;grid-template-columns:36px minmax(0,1fr) 28px;gap:7px}
 .map-wildlife-symbol{width:36px;height:36px;font-size:25px}
 .map-wildlife-panel{min-width:0;min-height:160px}
 .map-wildlife-names h3{font-size:13px}
 .map-wildlife-names>span{display:none}
 .map-wildlife-names i{font-size:10px}
 .map-wildlife-panel-tools{padding:0 9px 5px}
 .map-wildlife-copy{padding:0 9px 9px;font-size:10px}
 .map-wildlife-key{left:8px;right:8px;bottom:42px;max-width:none;flex-wrap:nowrap;overflow-x:auto;gap:10px;padding:6px 8px;pointer-events:auto}
 .map-wildlife-key-item,.map-wildlife-key small{font-size:8px;flex-shrink:0}
}


/* Shared Topic Explorer: both adapters use identical options and reading hierarchy. */
.map-topic-selector{position:absolute;right:12px;width:min(354px,calc(100% - 24px));max-height:44%;overflow:auto;box-sizing:border-box;border:1px solid rgba(23,55,47,.14);border-radius:16px;padding:10px 11px;background:rgba(255,253,250,.97);color:#17372f;box-shadow:0 8px 24px rgba(18,39,31,.14);z-index:9;overscroll-behavior:contain}
.map-topic-selector[hidden]{display:none!important}
.map-topic-hint{font-size:10px;line-height:1.45;color:#607269;margin:5px 0 8px}
.map-topic-options{display:flex;flex-wrap:wrap;gap:5px}
.map-topic-options .map-topic-option{display:inline-flex;align-items:center;gap:5px;border:1px solid #dce5dc;border-radius:9px;padding:6px 8px;background:#f2f5ef;color:#294b3f;font:inherit;font-size:10px;line-height:1.2;cursor:pointer}
.map-topic-icon{display:grid!important;place-items:center;width:22px;height:22px;flex:none;font-size:18px}
.map-topic-icon img{display:block;width:22px;height:22px;object-fit:contain}
.map-topic-options .map-topic-option[aria-pressed=true]{background:var(--wildlife-color);border-color:var(--wildlife-color);color:#fff;box-shadow:0 2px 5px rgba(0,0,0,.12)}
.map-topic-option:focus-visible,.map-topic-clear:focus-visible{outline:2px solid #17372f;outline-offset:2px}
.map-topic-selector-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:7px;font-size:9px;color:#64786d}
.map-topic-clear{border:0;background:transparent;color:#426255;font:inherit;font-size:10px;font-weight:800;padding:4px 6px;cursor:pointer}.map-topic-clear:disabled{opacity:.4;cursor:default}
.map-topic-panel,.map-topic-panel.map-harvest-species-popover{position:absolute;right:12px;width:min(354px,calc(100% - 24px));display:flex;flex-direction:column;gap:0;min-width:260px;min-height:180px;max-height:calc(100% - 80px);overflow:hidden;box-sizing:border-box;padding:0;border:1px solid rgba(23,55,47,.14);border-radius:16px;background:rgba(255,253,250,.97);color:#17372f;box-shadow:0 8px 24px rgba(18,39,31,.14);z-index:10}
.map-topic-copy{flex:1;min-height:0;overflow:auto;padding-bottom:28px;overscroll-behavior:contain}
.map-topic-panel .map-harvest-species-rules{margin-top:12px;padding-top:10px;border-top:1px solid #dce5dc}
.map-topic-panel .map-harvest-species-rule-grid{grid-template-columns:62px minmax(0,1fr)}
@media(max-width:760px){
 .map-topic-selector{left:8px;right:8px;width:auto;max-height:36%;padding:8px}
 .map-topic-options{display:grid;grid-template-rows:repeat(2,auto);grid-auto-flow:column;grid-auto-columns:max-content;overflow-x:auto;padding:2px 2px 5px;gap:4px;scrollbar-width:thin}
 .map-topic-options .map-topic-option{padding:5px 7px;font-size:14px;min-height:44px}
 .map-topic-panel,.map-topic-panel.map-harvest-species-popover{left:8px;right:8px;width:auto;min-width:0;min-height:160px;max-height:38%}
 .map-topic-selector[data-mobile-compact=true] .map-topic-hint{display:none!important}
 [data-mobile-reading=peek] .map-topic-copy{display:none!important}
 [data-mobile-reading] .map-topic-copy{overflow:visible!important;flex:none;padding:12px 16px!important;font-size:16px!important;line-height:1.7}
}

.map-topic-details{margin:8px 0}.map-topic-details summary{cursor:pointer;color:#426255;font-weight:700}.map-topic-intro{font-size:12px;font-weight:700;line-height:1.6}.map-topic-details p{margin:6px 0}

/* Journey stays in the map frame's flow, and never covers map or media controls. */
.map-explore>.journey-thread{flex:0 0 auto;position:relative;display:flex;align-items:center;flex-wrap:nowrap;gap:6px;padding:5px 10px;background:#fffdfa;border-top:1px solid #dce5dc;color:#17372f;z-index:15;max-width:100%;box-sizing:border-box}
.journey-thread[hidden]{display:none!important}
.story-route-free{padding:9px 12px;margin:8px 0;border:1px solid #23745a;border-radius:10px;background:#edf1eb;color:#17372f;font:inherit;cursor:pointer}
.story-route-progress{font-size:12px;font-weight:800;color:#23745a}.story-route-note{display:block;line-height:1.6;opacity:.8;font-size:11px}
.story-route-custom{margin:10px 0;padding:8px;border:1px solid #dce5dc;border-radius:10px}.story-route-custom>summary{cursor:pointer;font-size:12px;line-height:1.6;padding:5px}.story-route-custom .story-route-choice{font-size:12px}
.journey-next:hover,.story-route-free:hover,.story-route-continue:hover{background:#dae9db;border-color:#23745a}
.story-route-free:focus-visible{outline:2px solid #23745a;outline-offset:2px}
.pin.is-story-muted{opacity:.22}.pin.is-story-stop{filter:drop-shadow(0 0 3px #d9a441)}
@media(max-width:760px){.story-route-free{min-height:44px}}
.journey-thread button,.journey-thread summary{font:inherit;font-size:11px;border:1px solid #dce5dc;border-radius:8px;padding:6px 9px;background:#f2f5ef;color:#17372f;cursor:pointer;white-space:nowrap}
.journey-story-continue{max-width:min(280px,46vw);overflow:hidden;text-overflow:ellipsis;background:#23745a;color:#fff;border-color:#23745a}
.exploration-journey-split{display:flex;flex-direction:column;min-width:0;flex:0 1 auto}
.exploration-journey-split>button{font:inherit;cursor:pointer}
.exploration-journey-split>[data-exploration-intent=journey]{border-radius:8px 8px 0 0}
.exploration-journey-split>.journey-story-continue{display:block;max-width:100%;min-height:30px;padding:4px 8px;border:1px solid #23745a;border-radius:0 0 8px 8px;font-size:11px;text-align:center}
.exploration-journey-split>.journey-story-continue[hidden]{display:none}
.exploration-journey-split:has(>.journey-story-continue[hidden])>[data-exploration-intent=journey]{border-radius:8px}
.journey-thread button:disabled{opacity:.4;cursor:default}
.journey-trail{margin-right:auto;min-width:0}.journey-trail>summary{list-style:none}
.journey-trail-list{position:absolute;left:8px;bottom:calc(100% + 5px);margin:0;padding:8px;max-width:calc(100% - 16px);max-height:240px;overflow:auto;list-style:none;border:1px solid #dce5dc;border-radius:12px;background:#fffdfa;box-shadow:0 10px 24px #17372f22}
.journey-trail-list li+li{margin-top:5px}.journey-trail-list button{display:block;width:100%;white-space:normal;text-align:left}.journey-trail-list [aria-current=step]{background:#17372f;color:#fff}
.journey-arrival{padding:6px 12px;border-bottom:1px solid #dce5dc33;flex:none;color:inherit}.journey-arrival p{margin:2px 0}.journey-location{font-size:10px;opacity:.8}.journey-why{font-size:13px;line-height:1.6}
.journey-next-stops{padding:10px 0;margin-top:8px;border-top:1px solid #dce5dc55;color:inherit}.map-float>.journey-next-stops{padding-bottom:20px}
.journey-next-stops h4{font-size:12px;margin:8px 0}.journey-story{font-size:12px;line-height:1.7}
.journey-next{display:flex;flex-direction:column;align-items:start;gap:4px;width:100%;text-align:left;padding:9px 10px;margin:6px 0;border:1px solid #dce5dc;border-radius:10px;background:#f2f5ef;color:#17372f;font:inherit;font-size:12px;cursor:pointer}
.journey-next small{font-size:10px;color:#526c5e}.journey-panel-actions{display:flex;gap:8px;margin-top:10px}.journey-panel-actions button{padding:8px 12px;border:0;border-radius:8px;background:#edf1eb;color:#17372f;font:inherit;font-size:12px;cursor:pointer}.journey-panel-actions button:disabled{opacity:.4}
.journey-thread :is(button,summary):focus-visible,.journey-next:focus-visible,.journey-panel-actions button:focus-visible{outline:2px solid #23745a;outline-offset:2px}
#map-stage.is-journey-arriving{transition:transform .55s cubic-bezier(.22,.68,.2,1)}
@media(max-width:760px){.map-explore>.journey-thread{gap:4px;padding:4px}.journey-thread button,.journey-thread summary{min-height:44px;font-size:11px;padding:6px}.journey-thread .journey-clear{font-size:10px;padding:5px}.journey-arrival{padding:8px 16px}.journey-location{font-size:12px}.journey-why{font-size:14px}.journey-next-stops{padding:12px 16px}.journey-next{min-height:44px;font-size:15px}.journey-next small{font-size:12px}.journey-panel-actions button{min-height:44px}.journey-thread .journey-source{max-width:90px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}
@media(prefers-reduced-motion:reduce){#map-stage.is-journey-arriving{transition:none}}

.map-route-legend>summary,.map-crossing-legend>summary{cursor:pointer;list-style:none;min-height:36px;white-space:nowrap}
.map-route-legend>summary::-webkit-details-marker,.map-crossing-legend>summary::-webkit-details-marker{display:none}
.map-route-legend>summary:focus-visible,.map-crossing-legend>summary:focus-visible{outline:2px solid #23745a;outline-offset:2px}
.map-route-legend:not([open]),.map-crossing-legend:not([open]){max-width:calc(100% - 20px);overflow:hidden}
.map-route-legend>summary strong,.map-crossing-legend>summary strong{overflow:hidden;text-overflow:ellipsis}
@media(max-width:760px){.map-route-legend>summary,.map-crossing-legend>summary{min-height:44px}}

/* Preset stories share the existing one-row intent dock and its single popup. */
.exploration-intents{flex-wrap:nowrap}
.exploration-intents>button{white-space:nowrap}
.exploration-journey-hint{font-size:13px;line-height:1.6;margin:0 0 10px;color:#526c5e}
.exploration-story-routes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.exploration-menu .exploration-story-start{flex-direction:column;align-items:flex-start!important;background:#f2f5ef;border:1px solid #dce5dc;border-radius:10px;text-align:left}
.exploration-story-start small{font-size:11px;line-height:1.5;color:#526c5e}
.exploration-story-start:hover{background:#dae9db;border-color:#23745a}
.exploration-story-start:focus-visible{outline:2px solid #23745a;outline-offset:2px}
@media(max-width:760px){.exploration-story-routes{grid-template-columns:minmax(0,1fr)}}

.map-route-close{flex:none;display:flex;align-items:center;justify-content:center;width:44px;height:44px;padding:0;border:0;border-radius:8px;background:transparent;color:#17372f;font:inherit;font-size:22px;cursor:pointer}
.map-route-close:hover{background:#dae9db}
.map-route-close:focus-visible{outline:2px solid #23745a;outline-offset:2px}

.map-journey-roads{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible;z-index:4}
.journey-road-completed{stroke:#1f6b52;stroke-width:3.2;opacity:.92;stroke-linecap:round;stroke-linejoin:round}
.journey-road-active{stroke:#1f6b52;stroke-width:3.8;opacity:1;stroke-linecap:round;stroke-linejoin:round}
.journey-sea-completed,.journey-sea-active{stroke:#1a5270;stroke-width:3.4;opacity:1;stroke-linecap:round;stroke-linejoin:round}
.journey-rail-completed{stroke:#586b80;stroke-width:2;opacity:.4;stroke-dasharray:5 3}
/* No CSS dasharray on active rail — JS stroke-dashoffset draw owns the mask. */
.journey-rail-active{stroke:#3e5876;stroke-width:3;opacity:.86}
.journey-rail-active[data-progress="1"]{stroke-dasharray:5 3}
@media(prefers-reduced-motion:reduce){.journey-road-active,.journey-rail-active{animation:none;stroke-dashoffset:0}}
.journey-inline-context{flex:1;min-width:0;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;color:#526c5e}
.journey-thread .journey-trail{margin-right:0;flex:none}
@media(max-width:760px){.journey-inline-context{font-size:10px}}

/* Shared seasonal living layer — same map language as wildlife location marks */
.map-seasonal-living{position:absolute;inset:0;width:100%;height:100%;z-index:2;pointer-events:none;overflow:visible}
.map-seasonal-living[hidden]{display:none!important}
.map-seasonal-halo{fill:#fffdfa;stroke:var(--seasonal-color,#547969);stroke-width:1.8;vector-effect:non-scaling-stroke}
.map-seasonal-core{fill:var(--seasonal-color,#547969);stroke:#fff;stroke-width:2;vector-effect:non-scaling-stroke}
.map-seasonal-halo.is-living{animation:seasonal-breathe 2.8s ease-in-out infinite}
@keyframes seasonal-breathe{0%,100%{opacity:.72}50%{opacity:1}}
@media(prefers-reduced-motion:reduce){.map-seasonal-halo.is-living{animation:none}}
.map-seasonal-scrubber{position:absolute;left:12px;bottom:44px;z-index:8;display:flex;flex-wrap:wrap;align-items:center;gap:8px;max-width:min(280px,calc(100% - 24px));padding:8px 10px;border-radius:12px;background:rgba(255,253,250,.95);border:1px solid #dce5dc;box-shadow:0 5px 16px rgba(18,39,31,.1);color:#294b3f}
.map-seasonal-scrubber[hidden]{display:none!important}
.map-seasonal-scrubber-label{font-size:13px;font-weight:900;white-space:nowrap;min-width:3.2em;color:#294b3f}
.map-seasonal-scrubber-note{display:none}
.map-layer-front .map-seasonal-scrubber{position:static!important;left:auto!important;right:auto!important;top:auto!important;bottom:auto!important;z-index:1;display:inline-flex;flex-wrap:nowrap;align-items:center;align-self:stretch;gap:8px;width:auto;max-width:none;height:auto;margin:0;padding:0 8px;box-shadow:none;box-sizing:border-box}
.map-layer-front .map-seasonal-scrubber-input{flex:none;width:96px;min-width:72px;margin:0}
.map-layer-front .map-seasonal-clear{align-self:center;min-height:0;padding:8px 12px;border:0;border-radius:10px;background:#edf1eb;color:#17372f;font:inherit;font-size:13px;font-weight:800;cursor:pointer}
/* Direct child of the map column: clear the dock on desktop, and on a phone
   sit in flow under the map so it does not cover the canvas or the sheet. */
.map-explore > .map-seasonal-scrubber{bottom:76px;z-index:8}
@media(max-width:760px){
 .map-explore > .map-seasonal-scrubber{position:relative;left:auto;right:auto;top:auto;bottom:auto;order:1;flex:0 0 auto;width:auto;max-width:none;margin:0 8px 8px;z-index:4}
}

/* Seasonal line motion uses the same stroke language as map lines. It plays once, then holds. */
.map-seasonal-line{fill:none;stroke:var(--seasonal-color,#547969);stroke-width:2;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.map-wildlife-location-core{fill:var(--wildlife-color,#23745a);stroke:#fff;stroke-width:2;vector-effect:non-scaling-stroke}
.map-wildlife-location-name{fill:#17372f;stroke:#fffdfa;stroke-width:3px;paint-order:stroke;font-size:14px;font-weight:800;pointer-events:none}
.map-wildlife-location.is-out-of-month{opacity:.72}
#map-pins .is-out-of-month{display:none!important}
.map-wildlife-where{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.map-wildlife-where button{border:0;border-radius:999px;background:#e7f0ea;color:#17372f;font:inherit;font-size:13px;font-weight:800;padding:4px 10px;cursor:pointer}
.map-layer-front .map-seasonal-scrubber-input{accent-color:#23745a}
.map-seasonal-line.is-whale-group{stroke-width:2.2}
.map-seasonal-line.is-opening{stroke-dasharray:2 6;opacity:.4}
.map-seasonal-line.is-open{opacity:.9}
.map-seasonal-line.is-fade{stroke-dasharray:3 6;opacity:.28}
.map-seasonal-line.is-falling{stroke-dasharray:2 5;opacity:.8}
.map-seasonal-line.is-lying{opacity:.85}
.map-seasonal-line.is-melting{stroke-dasharray:4 6;opacity:.35}
.map-seasonal-line.is-playing{animation:seasonal-line-step .8s linear 1}
@keyframes seasonal-line-step{from{stroke-dashoffset:16}to{stroke-dashoffset:0}}
@media(prefers-reduced-motion:reduce){.map-seasonal-line.is-playing{animation:none}}

.topic-inline-link{appearance:none;border:0;padding:0;margin:0;background:transparent;color:#1f6b57;font:inherit;font-weight:800;text-decoration:underline;text-underline-offset:2px;cursor:pointer}
.topic-inline-link:hover,.topic-inline-link:focus-visible{color:#0f4336}
[data-happening-id].is-inline-focus{outline:2px solid #1f6b57;outline-offset:3px;border-radius:12px}

/* Place drawer explore entry points (e.g. Christmas Island → red crab event / endemic) */
.map-float-explore{display:flex;flex-wrap:wrap;gap:6px;margin-top:2px}
.map-float-explore[hidden]{display:none!important}
.map-float-explore-link{border:1px solid rgba(255,255,255,.35);border-radius:999px;background:rgba(255,255,255,.12);color:#fff;font:inherit;font-size:12px;font-weight:800;padding:6px 10px;cursor:pointer;min-height:44px}
.map-float-explore-link:hover,.map-float-explore-link:focus-visible{background:#fff;color:#143028}
/* Christmas Island magnifier: the island is a few px at mainland scale. */
.map-island-inset{position:absolute;z-index:7;box-sizing:border-box;color:#17372f;pointer-events:none}
.map-island-inset[hidden],.map-island-inset [hidden]{display:none!important}
.map-island-inset[data-mode="chip"]{width:auto;transform:translate(-50%,calc(-100% - 16px))}
.map-island-chip{pointer-events:auto;border:1px solid rgba(23,55,47,.18);border-radius:999px;padding:6px 10px;background:rgba(255,253,250,.96);color:#17372f;font:inherit;font-size:12px;font-weight:850;white-space:nowrap;box-shadow:0 6px 16px rgba(18,39,31,.16);cursor:pointer}
.map-island-card{pointer-events:auto;display:flex;flex-direction:column;gap:4px;padding:8px 10px 8px;border:1px solid rgba(23,55,47,.16);border-radius:16px;background:rgba(255,253,250,.97);box-shadow:0 10px 26px rgba(18,39,31,.18);backdrop-filter:blur(8px);max-height:100%;box-sizing:border-box;overflow:auto;overscroll-behavior:contain}
.map-island-head{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:13px}
.map-island-inset.map-overlay-movable,.map-island-inset.map-overlay-movable .map-island-card{cursor:auto}
.map-island-inset.map-overlay-movable .map-island-head{cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none}
.map-island-inset.is-dragging .map-island-head{cursor:grabbing}
.map-island-close{border:0;background:#edf1eb;color:#17372f;border-radius:999px;width:28px;height:28px;font-size:17px;line-height:1;cursor:pointer}
.map-island-svg{display:block;flex:none;width:100%;height:auto;border-radius:10px;background:#d8e8ec}
.map-island-cove{cursor:pointer}
.map-island-cove-label{font-size:11px;font-weight:900;fill:#7d2a1b;paint-order:stroke;stroke:#fff;stroke-width:3px}
.map-island-scale text{font-size:9px;font-weight:800;fill:#385d52;paint-order:stroke;stroke:#d8e8ec;stroke-width:3px}
.map-island-legend,.map-island-caption,.map-island-credit{margin:0;font-size:11px;line-height:1.4}
.map-island-legend{display:flex;align-items:center;gap:6px;font-weight:800;color:#7d2a1b}
.map-island-swatch{flex:none;width:14px;height:10px;border-radius:3px;background:radial-gradient(circle,#c4452d 1.4px,transparent 1.6px) 0 0/5px 5px,#dfe9d8;border:1px solid #6f8f78}
.map-island-caption{color:#385d52}
.map-island-credit{font-size:9px;color:#6b7f76}

/* CSS camera zoom also magnifies SVG non-scaling strokes. Compensate only
   above the home zoom so close views reveal the real coastline detail. */
#map-stage .australia-outline path{stroke-width:calc(4px * var(--map-cartographic-scale,1))}
#map-stage .australia-outline .map-cx{stroke-width:calc(3px * var(--map-cartographic-scale,1))}
#map-stage .map-state-border{stroke-width:calc(1.6px * var(--map-cartographic-scale,1));stroke-dasharray:calc(5px * var(--map-cartographic-scale,1)) calc(4px * var(--map-cartographic-scale,1))}
#map-stage .map-offshore-guide{stroke-width:calc(1.4px * var(--map-cartographic-scale,1));stroke-dasharray:calc(4px * var(--map-cartographic-scale,1)) calc(5px * var(--map-cartographic-scale,1))}

#map-stage :is(.map-routes,.map-crossings) path:not([stroke="transparent"]){stroke-width:calc(var(--transport-width,3) * 1px * var(--map-transport-scale,1))}
/* SVG route／zone hit targets: no UA bounding-box focus frame; keyboard focus shows as a soft band on the line itself. */
.map-crossings path[role=button]:focus,.map-harvest-zone-hit:focus,.map-harvest-restriction-hit:focus,.map-wildlife-location:focus{outline:none}
#map-stage .map-crossings path[role=button]:focus-visible{stroke:#17657c;stroke-opacity:.3;stroke-width:calc(9px * var(--map-transport-scale,1))}
.map-harvest-zone-hit:focus-visible,.map-harvest-restriction-hit:focus-visible{stroke:#17372f;stroke-opacity:.22;stroke-width:16}
/* 防兔籬笆 story: Fence No.1 + the girls' 1931 walk home (approximate). */
.map-fence-story{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible;z-index:3}
.map-fence-story .fence-no1{stroke:#8a4b1f;stroke-width:4.4;opacity:.95;stroke-linecap:round;stroke-linejoin:round}
.map-fence-story .fence-journey{stroke:#c2410c;stroke-width:3.4;stroke-linecap:round;stroke-linejoin:round}
.map-fence-story .fence-road-completed.fence-journey{stroke-dasharray:7 6;opacity:.9}
.map-fence-stops{position:absolute;inset:0;z-index:5;pointer-events:none}
.fence-stop{position:absolute;transform:translate(-50%,-50%) scale(var(--fence-stop-scale,var(--map-inverse-zoom,1)));transform-origin:center;pointer-events:none;width:0;height:0}
.fence-stop[hidden]{display:none}
.fence-stop-dot{pointer-events:auto;position:absolute;left:-9px;top:-9px;width:18px;height:18px;border-radius:50%;border:3px solid #fff;background:#c2410c;box-shadow:0 4px 12px rgba(0,0,0,.28);cursor:pointer;padding:0}
.fence-stop-start .fence-stop-dot{background:#1f6b52}
.fence-stop-end .fence-stop-dot{background:#7c2d12}
.fence-stop.is-approximate .fence-stop-dot{background:#fff;border:3px dashed #c2410c}
.fence-stop-fence-label .fence-stop-dot{left:-6px;top:-6px;width:12px;height:12px;border-width:2px;background:#8a4b1f}
.fence-stop-label{position:absolute;left:14px;top:-11px;white-space:nowrap;background:#fffaf2;color:#5a2a0c;border:1px solid rgba(138,75,31,.35);border-radius:999px;padding:3px 9px;font-size:12px;font-weight:850;box-shadow:0 3px 10px rgba(0,0,0,.14)}
.fence-stop-copy{display:none;position:absolute;left:14px;top:16px;transform:translateX(var(--fence-copy-shift,0px));width:min(240px,62vw);background:#fff;color:#2b2118;border-radius:12px;padding:9px 11px;font-size:12px;line-height:1.55;box-shadow:0 8px 22px rgba(0,0,0,.2);pointer-events:auto}
.fence-stop.opens-left .fence-stop-label{left:auto;right:14px}.fence-stop.opens-left .fence-stop-copy{left:auto;right:14px}
.fence-stop-note{display:block;margin-top:6px;color:#6b5a4a;font-size:11px}
.fence-stop.is-current .fence-stop-copy{display:block}
.fence-stop.is-current{z-index:2}
/* The three girls walk with the line's tip (decorative, never catches clicks). */
.fence-girls{position:absolute;width:0;height:0;pointer-events:none;z-index:1;transform:scale(var(--fence-stop-scale,var(--map-inverse-zoom,1)));transform-origin:center}
.fence-girls[hidden]{display:none}
.fence-girls-art{position:absolute;left:-27px;top:-41px;width:54px;height:30px;overflow:visible;pointer-events:none;filter:drop-shadow(0 1px 1.5px rgba(255,250,242,.95)) drop-shadow(0 2px 4px rgba(0,0,0,.18))}
.fence-girls[data-fence-girls="walking"] .fence-girl{animation:fence-girl-step .52s ease-in-out infinite alternate}
.fence-girls[data-fence-girls="walking"] .fence-girl-2{animation-delay:-.17s}
.fence-girls[data-fence-girls="walking"] .fence-girl-3{animation-delay:-.34s}
@keyframes fence-girl-step{from{transform:translateY(0)}to{transform:translateY(-1.4px)}}
.fence-arm-2{display:none}
.fence-girls.is-two .fence-girl-3,.fence-girls.is-two .fence-hand-23,.fence-girls.is-two .fence-arm-3{display:none}
.fence-girls.is-two .fence-arm-2{display:inline}
.fence-girls.is-two .fence-girls-art{left:-18px}
.fence-gracie{position:absolute;width:0;height:0;pointer-events:none;z-index:1;transform:scale(var(--fence-stop-scale,var(--map-inverse-zoom,1)));transition:left 1s ease-in-out,top 1s ease-in-out,opacity .85s ease}
.fence-gracie .fence-girls-art{left:-45px}
.fence-gracie[data-fence-gracie="to-wiluna"] .fence-girl{animation:fence-girl-step .52s ease-in-out infinite alternate}
.fence-gracie[data-fence-gracie="fading"]{opacity:0}
.fence-gracie-note{position:absolute;width:0;height:0;pointer-events:none;z-index:1;transform:scale(var(--fence-stop-scale,var(--map-inverse-zoom,1)));animation:fence-note-in .6s ease both}
.fence-gracie-note span{position:absolute;left:0;top:-62px;transform:translateX(-50%);white-space:nowrap;background:rgba(255,250,242,.94);color:#6b4a2a;border:1px dashed rgba(138,75,31,.45);border-radius:999px;padding:2px 8px;font-size:11px;font-weight:700;box-shadow:0 2px 8px rgba(0,0,0,.1)}
@keyframes fence-note-in{from{opacity:0}to{opacity:1}}
@media(prefers-reduced-motion:reduce){.fence-gracie{transition:none}.fence-gracie .fence-girl{animation:none!important}.fence-gracie-note{animation:none}}
@media(prefers-reduced-motion:reduce){.fence-girls .fence-girl{animation:none!important}}
@media(max-width:760px){.fence-stop-label{font-size:11px;padding:2px 7px}.fence-stop-copy{width:min(176px,46vw);font-size:11px;line-height:1.5;padding:7px 9px}.fence-stop-note{display:none}}
