.map-stage{background:var(--color-map-land);touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;--inv:1;width:100%;min-width:0;height:100%;position:relative;overflow:hidden}.map-content{position:relative}.map-base{pointer-events:none;display:block}.map-land{fill:var(--color-map-land)}.map-wood{fill:var(--color-map-wood);stroke:var(--color-map-wood);stroke-width:6px;stroke-linejoin:round}.map-scrub{fill:var(--color-map-scrub);stroke:var(--color-map-scrub);stroke-width:4px;stroke-linejoin:round}.map-grass{fill:var(--color-map-dune-grass);stroke:var(--color-map-dune-grass);stroke-width:4px;stroke-linejoin:round}.map-dune{fill:var(--color-map-dune);stroke:var(--color-map-dune);stroke-width:6px;stroke-linejoin:round}.map-beach{fill:var(--color-map-beach);stroke:var(--color-map-beach);stroke-width:8px;stroke-linejoin:round}.map-water-deep{fill:var(--color-map-water-deep)}.map-water-shelf{fill:none;stroke:var(--color-map-water);stroke-width:96px;stroke-linejoin:round}.map-water-shallow-line{fill:none;stroke:var(--color-map-water-shallow);stroke-width:36px;stroke-linejoin:round}.map-water-foam{fill:none;stroke:#fff;stroke-width:3px;opacity:.7;stroke-linejoin:round}.map-water{fill:var(--color-map-water);stroke:var(--color-map-water);stroke-width:6px;stroke-linejoin:round}.map-water-rim{fill:none;stroke:var(--color-map-water-shallow);stroke-width:14px;stroke-linejoin:round}.map-pool{fill:var(--color-map-water);stroke:#fff;stroke-width:3px;stroke-linejoin:round}.map-pool-rim{fill:none;stroke:var(--color-map-water-shallow);stroke-width:4px}.map-park{fill:var(--color-map-park);stroke:var(--color-map-park);stroke-width:8px;stroke-linejoin:round}.map-parking{fill:var(--color-map-parking);stroke:var(--color-map-parking);stroke-width:4px;stroke-linejoin:round}.map-plaza{fill:var(--color-map-parking);stroke:var(--color-map-parking);stroke-width:6px;stroke-linejoin:round}.map-court{fill:var(--color-map-court);stroke:#fff;stroke-width:1.5px;stroke-linejoin:round}.map-building{fill:var(--color-map-building);stroke:var(--color-map-building-line);stroke-width:1.2px;stroke-linejoin:round}.map-road-case{fill:none;stroke:var(--color-map-road-case);stroke-linecap:round;stroke-linejoin:round}.map-road-fill{fill:none;stroke:var(--color-map-road);stroke-linecap:round;stroke-linejoin:round}.map-road-case.map-road-service{stroke-width:6px}.map-road-fill.map-road-service{stroke-width:3.5px}.map-road-case.map-road-street{stroke-width:9px}.map-road-fill.map-road-street{stroke-width:6px}.map-road-case.map-road-major{stroke-width:13px;stroke:var(--color-map-road-case-main)}.map-road-fill.map-road-major{stroke-width:9.5px}.map-trail{fill:none;stroke:var(--color-map-path);stroke-width:2px;stroke-dasharray:6 5;stroke-linecap:round}.map-steps{fill:none;stroke:var(--color-map-plank);stroke-width:5px;stroke-dasharray:2 3;stroke-linecap:butt}.map-boardwalk{fill:none;stroke:var(--color-map-boardwalk);stroke-width:6px;stroke-linecap:round;stroke-linejoin:round}.map-boardwalk-planks{fill:none;stroke:var(--color-map-plank);stroke-width:6px;stroke-dasharray:1.5 4;stroke-linecap:butt}.map-label{font-family:var(--font-sans);fill:var(--color-navy);text-anchor:middle;paint-order:stroke fill;stroke:var(--color-map-land);stroke-width:3px;stroke-linejoin:round;font-size:12px;font-style:italic;font-weight:500;transition:opacity .2s}.map-label-park{stroke:var(--color-map-park)}.map-label-water{stroke:var(--color-map-water);font-style:normal;font-weight:600}.map-label-beach{stroke:var(--color-map-beach)}.map-label-lake-michigan{letter-spacing:.18em;fill:var(--color-map-label-water);stroke:none;font-size:22px;font-style:normal;font-weight:700}.map-stage[data-zoom=far] .map-label[data-priority="2"]{opacity:0}.map-markers{pointer-events:none;position:absolute;inset:0}.marker{cursor:pointer;pointer-events:auto;width:44px;height:52px;transform:scale(var(--inv));transform-origin:50% 48px;color:var(--color-navy);font:inherit;background:0 0;border:0;flex-direction:column;align-items:center;margin-top:-48px;margin-left:-22px;padding:0;display:flex;position:absolute;top:0;left:0}.marker:focus-visible{outline:none}.marker:focus-visible .badge{box-shadow:0 0 0 3px #fff, 0 0 0 6px var(--color-teal)}.marker.is-dimmed{opacity:.3;pointer-events:none}.badge{width:36px;height:36px;color:var(--cat-text);border:2.5px dashed var(--cat-fill);transition:transform .16s var(--ease-out), box-shadow .16s;background:#fff;border-radius:50%;place-items:center;font-size:18px;font-weight:700;line-height:1;display:grid;position:relative;box-shadow:0 6px 16px #13283a2e}.badge:after{content:"";background:inherit;border-right:2.5px solid var(--cat-fill);border-bottom:2.5px solid var(--cat-fill);border-style:inherit;border-radius:2px;width:10px;height:10px;margin-left:-5px;position:absolute;bottom:-7px;left:50%;transform:rotate(45deg)}.marker[data-state=revealed] .badge,.marker[data-state=found] .badge{background:var(--cat-fill);color:#fff;border:2.5px solid #fff}.marker[data-state=found] .badge{border-color:var(--color-found)}.badge-check{width:18px;height:18px;color:var(--color-found);animation:badge-pop .22s var(--ease-back) both;background:#fff;border-radius:50%;place-items:center;display:grid;position:absolute;top:-6px;right:-8px;box-shadow:0 1px 3px #13283a4d}.marker:hover .badge{transform:translateY(-2px)}.marker.is-selected{z-index:5}.marker.is-selected .badge{box-shadow:0 0 0 2px #fff, 0 0 0 5px var(--color-navy), 0 10px 24px #13283a47;transform:scale(1.15)}.marker.is-stamping .badge{animation:stamp .48s var(--ease-back) both}.marker-label{pointer-events:none;white-space:nowrap;color:var(--color-navy);border:1px solid var(--color-line);opacity:0;background:#fff;border-radius:999px;margin-top:10px;padding:5px 9px;font-size:12px;font-weight:600;line-height:1;transition:opacity .18s;box-shadow:0 1px 3px #13283a1f}.marker-label.has-check:before{content:"✓";color:var(--color-found)}.map-stage[data-zoom=near] .marker-label,.map-stage[data-zoom=mid] .marker[data-priority="1"] .marker-label,.marker.is-selected .marker-label,.marker[data-quest-stop] .marker-label,.map-stage.labels-on .marker-label{opacity:1}.marker[data-state=hidden]:not(.is-selected) .marker-label{opacity:0!important}.quest-number{background:var(--color-navy);color:#fff;border:2px solid #fff;border-radius:50%;place-items:center;width:18px;height:18px;font-size:11px;font-weight:700;display:grid;position:absolute;top:-8px;left:-8px}.marker-home{transform-origin:50%;justify-content:center;width:64px;height:64px;margin-top:-32px;margin-left:-32px}.home-mark{width:40px;height:40px;position:relative}.home-x{width:40px;height:40px;color:var(--color-x-red);display:block;position:relative}.home-pulse{border:2px solid var(--color-x-red);opacity:0;border-radius:50%;animation:6s ease-out infinite home-pulse;position:absolute;inset:0}.marker-home .marker-label{opacity:1;border-left:3px solid var(--color-x-red);margin-top:2px}.marker-home.is-selected .home-x{transform:scale(1.12)}.you-are-here{background:var(--color-cat-pool);width:18px;height:18px;transform:scale(var(--inv));pointer-events:none;border:3px solid #fff;border-radius:50%;margin:-9px 0 0 -9px;position:absolute;box-shadow:0 2px 6px #13283a4d}.you-are-here:before{content:"";border:2px solid var(--color-cat-pool);border-radius:50%;animation:2s ease-out infinite home-pulse;position:absolute;inset:-10px}.map-trails{pointer-events:none;position:absolute;inset:0;overflow:visible}.trail-halo{fill:none;stroke:#fff;stroke-width:7px;stroke-linecap:round;stroke-dasharray:0 10;opacity:.9}.trail-dots{fill:none;stroke:var(--color-trail);stroke-width:4px;stroke-linecap:round;stroke-dasharray:0 10}.trail-dots.is-done{opacity:.35}.trail-dots.is-active{animation:1.2s linear infinite trail-march}.trail-reveal{fill:none;stroke:#fff;stroke-width:14px;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1px;animation:trail-draw 1.2s var(--ease-in-out) forwards}.trail-reveal.is-instant{stroke-dashoffset:0;animation:none}.map-fab{border:1px solid var(--color-line);width:44px;height:44px;box-shadow:var(--shadow-float);color:var(--color-navy);cursor:pointer;background:#fff;border-radius:50%;place-items:center;display:grid}.map-fab:hover{background:var(--color-cream)}.map-fab:focus-visible{outline:3px solid var(--color-teal);outline-offset:2px}.sheet{will-change:transform;height:92%;transition:transform .32s var(--ease-sheet);padding-bottom:env(safe-area-inset-bottom);z-index:20;background:#fff;border-radius:22px 22px 0 0;flex-direction:column;display:flex;position:absolute;bottom:0;left:0;right:0;box-shadow:0 -8px 40px #13283a2e}.sheet.is-dragging{transition:none}.sheet-handle{touch-action:none;cursor:grab;flex:none;padding:10px 16px 6px}.sheet-handle:before{content:"";background:var(--color-line);border-radius:3px;width:44px;height:5px;margin:0 auto;display:block}.sheet-body{overscroll-behavior:contain;flex:1;min-height:0;overflow:hidden}.sheet[data-snap=full] .sheet-body{-webkit-overflow-scrolling:touch;overflow-y:auto}.ring-track{stroke:var(--color-sand)}.ring-fill{stroke:var(--color-teal);transition:stroke-dashoffset .6s var(--ease-out)}.ring-fill.is-complete{stroke:var(--color-found)}.intro-fade{animation:intro-fade .4s var(--ease-out) both}.marker.intro-drop{animation:marker-drop .32s var(--ease-back) both;animation-delay:calc(.5s + var(--i) * 30ms)}@keyframes badge-pop{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes stamp{0%{transform:scale(1.4)rotate(-8deg)}60%{transform:scale(.94)rotate(2deg)}to{transform:scale(1.15)rotate(0)}}@keyframes home-pulse{0%{opacity:.5;transform:scale(1)}40%{opacity:0;transform:scale(1.9)}to{opacity:0;transform:scale(1.9)}}@keyframes trail-draw{to{stroke-dashoffset:0}}@keyframes trail-march{to{stroke-dashoffset:-10px}}@keyframes intro-fade{0%{opacity:0;transform:scale(1.04)}to{opacity:1;transform:scale(1)}}@keyframes marker-drop{0%{opacity:0;transform:scale(var(--inv)) translateY(-12px)}to{opacity:1;transform:scale(var(--inv)) translateY(0)}}@keyframes confetti-fall{0%{opacity:1;transform:translateY(-10vh)rotate(0)}to{transform:translate3d(var(--dx), 110vh, 0) rotate(720deg);opacity:.8}}.confetti{width:10px;height:14px;animation:confetti-fall var(--dur) var(--ease-in-out) forwards;pointer-events:none;z-index:60;border-radius:2px;position:fixed;top:0}@media (prefers-reduced-motion:reduce){.home-pulse,.you-are-here:before,.trail-dots.is-active{animation:none}.trail-reveal{stroke-dashoffset:0;animation:none}.marker.intro-drop{animation:none}.sheet{transition:none}}.map-stage.reduce-motion .home-pulse,.map-stage.reduce-motion .trail-dots.is-active{animation:none}.map-stage.reduce-motion .trail-reveal{stroke-dashoffset:0;animation:none}.map-stage.bright-sun .marker-label{opacity:1}.map-stage.bright-sun .map-label{stroke-width:4.5px}@media print{body *{visibility:hidden}.passport-print,.passport-print *{visibility:visible}.passport-print{background:#fff;padding:24px;position:absolute;inset:0}}.map-stage[data-paper=area]{background:var(--color-map-water-deep)}.region-base{pointer-events:none;display:block}.region-land{fill:var(--color-map-land)}.region-urban{stroke-linejoin:round}.region-urban-residential{fill:#e8e0cf;stroke:#e8e0cf;stroke-width:2px}.region-urban-industry{fill:#e1dbce;stroke:#e1dbce;stroke-width:1.5px}.region-green{stroke-linejoin:round}.region-green-reserve{fill:#dbe4c6}.region-green-national{fill:#cfe0b4;stroke:#cfe0b4;stroke-width:1.5px}.region-green-state{fill:#c3d9a3}.region-green-park{fill:var(--color-map-park);opacity:.75}.region-sand{fill:var(--color-map-beach);stroke:var(--color-map-beach);stroke-width:1.5px;stroke-linejoin:round}.region-shore-sand{fill:none;stroke:var(--color-map-beach);stroke-width:7px;stroke-linejoin:round;stroke-linecap:round}.region-lake{fill:var(--color-map-water-deep)}.region-lake-shelf{fill:none;stroke:var(--color-map-water);stroke-width:30px;stroke-linejoin:round}.region-lake-shallow{fill:none;stroke:var(--color-map-water-shallow);stroke-width:9px;stroke-linejoin:round}.region-lake-foam{fill:none;stroke:#fff;stroke-width:1.4px;opacity:.8;stroke-linejoin:round}.region-water{fill:var(--color-map-water);stroke:var(--color-map-water-shallow);stroke-width:1.5px;stroke-linejoin:round}.region-river{fill:none;stroke:var(--color-map-water);stroke-width:1.6px;vector-effect:non-scaling-stroke;stroke-linecap:round;stroke-linejoin:round}.region-rail-case{fill:none;stroke:#fff;stroke-width:4px;vector-effect:non-scaling-stroke;stroke-linecap:round;stroke-linejoin:round}.region-rail{fill:none;stroke:#7a7368;stroke-width:1.6px;vector-effect:non-scaling-stroke;stroke-linecap:round;stroke-linejoin:round}.region-road-case,.region-road-fill{fill:none;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.region-road-case{stroke:var(--color-map-road-case)}.region-road-fill{stroke:#fff}.region-road-minor.region-road-case{stroke-width:3px}.region-road-minor.region-road-fill{stroke-width:1.5px}.region-road-major.region-road-case{stroke-width:4.5px;stroke:var(--color-map-road-case-main)}.region-road-major.region-road-fill{stroke-width:2.6px}.region-road-motorway.region-road-case{stroke-width:6px;stroke:#d9c08f}.region-road-motorway.region-road-fill{stroke-width:3.4px;stroke:#f7e6b3}.region-station{fill:#fff;stroke:#7a7368;stroke-width:1.5px;vector-effect:non-scaling-stroke;transform-box:fill-box;transform-origin:50%;transform:scale(var(--inv))}.map-stage[data-zoom=far] .region-road-minor,.map-stage[data-zoom=far] .region-river,.map-stage[data-zoom=far] .region-station,.map-stage[data-zoom=far] .region-station-label{opacity:0}.region-labels text{font-family:var(--font-sans);text-anchor:middle;paint-order:stroke fill;stroke-linejoin:round;transition:opacity .2s}.region-place{fill:var(--color-navy);stroke:var(--color-map-land);stroke-width:calc(3px * var(--inv));font-weight:600}.region-place-p1{font-size:calc(14px * var(--inv));letter-spacing:.04em;text-transform:uppercase;font-weight:700}.region-place-p2{font-size:calc(12px * var(--inv))}.region-place-p3{font-size:calc(11px * var(--inv));fill:#4a5561;font-weight:500}.region-place-chicago{font-size:calc(18px * var(--inv));letter-spacing:.12em}.map-stage[data-zoom=far] .region-place-p2,.map-stage[data-zoom=far] .region-place-p3,.map-stage[data-zoom=mid] .region-place-p3{opacity:0}.region-roadref{font-size:calc(10px * var(--inv));fill:#6a5634;stroke:#fff;stroke-width:calc(3px * var(--inv));letter-spacing:.02em;font-weight:700}.map-stage[data-zoom=far] .region-roadref:not(.is-far){opacity:0}.region-station-label{font-size:calc(10px * var(--inv));fill:#5d574d;stroke:var(--color-map-land);stroke-width:calc(3px * var(--inv));font-weight:600}.map-stage[data-zoom=mid] .region-station-label{opacity:0}.region-lake-label{font-size:calc(26px * var(--inv));letter-spacing:.22em;fill:var(--color-map-label-water);stroke:none;opacity:.8;font-weight:700}.region-lake-label-small{font-size:calc(14px * var(--inv));opacity:.55}.map-stage[data-zoom=far] .region-lake-label-small{opacity:0}.area-tier-far-group,.area-tier-mid-group,.area-tier-mid,.area-tier-near{display:none}.map-stage[data-zoom=far] .area-tier-far-group,.map-stage[data-zoom=mid] .area-tier-mid-group,.map-stage[data-zoom=mid] .area-tier-mid,.map-stage[data-zoom=near] .area-tier-mid,.map-stage[data-zoom=near] .area-tier-near{display:flex}.marker.is-selected{display:flex!important}.marker.has-label .marker-label,.map-stage[data-zoom=mid] .area-marker.area-tier-all .marker-label,.map-stage[data-zoom=near] .area-marker .marker-label{opacity:1}.marker-group .badge{background:var(--color-navy);color:#fff;border:2.5px solid #fff;width:40px;height:40px;font-size:15px;box-shadow:0 6px 16px #13283a3d}.marker-group .badge:after{border-style:solid;border-color:#fff}.marker-group .marker-label{opacity:1;font-weight:700}.marker-group[data-kind=town] .badge{background:var(--color-teal);width:44px;height:44px;font-size:16px}.marker-group[data-kind=town] .marker-label{border-left:3px solid var(--color-teal);font-size:13px}.marker-group[data-kind=cluster] .marker-label{border-left:3px solid var(--color-navy)}.level-toggle{background:var(--color-sand);border-radius:999px;flex:none;gap:2px;margin-right:4px;padding:3px;display:inline-flex}.level-toggle button{height:30px;font:inherit;color:var(--color-muted);cursor:pointer;white-space:nowrap;background:0 0;border:0;border-radius:999px;padding:0 12px;font-size:13px;font-weight:700}.level-toggle button[aria-pressed=true]{color:var(--color-navy);box-shadow:var(--shadow-float);background:#fff}.level-toggle button:focus-visible{outline:3px solid var(--color-teal);outline-offset:1px}.zoom-hint{z-index:25;border:1px solid var(--color-line);max-width:92%;box-shadow:var(--shadow-float);color:var(--color-navy);font:inherit;white-space:nowrap;text-overflow:ellipsis;cursor:pointer;animation:intro-fade .3s var(--ease-out) both;background:#fffffff0;border-radius:999px;padding:8px 14px;font-size:13px;font-weight:600;position:absolute;top:12px;left:50%;overflow:hidden;transform:translate(-50%)}.zoom-hint:hover{background:#fff}.map-level-enter{animation:intro-fade .36s var(--ease-out) both}.map-stage.reduce-motion .map-level-enter,.map-stage.reduce-motion .zoom-hint{animation:none}.map-stage[data-zoom=far] .region-place.has-badge,.map-stage[data-paper=area][data-zoom=far] .marker-home .marker-label{opacity:0}.map-stage[data-zoom=close] .area-tier-mid,.map-stage[data-zoom=close] .area-tier-near{display:flex}.map-stage[data-zoom=near] .area-marker .marker-label{opacity:0}.map-stage[data-zoom=near] .area-marker[data-priority="1"] .marker-label,.map-stage[data-zoom=near] .area-marker.has-label .marker-label,.map-stage[data-zoom=near] .area-marker.is-selected .marker-label,.map-stage[data-zoom=close] .area-marker .marker-label,.map-stage[data-zoom=close] .marker-home .marker-label{opacity:1}
