.map-shell{position:relative}.map-canvas{width:100%;height:clamp(20rem,60vh,38rem);border-radius:var(--radius-lg);overflow:hidden;background:var(--surface);border:var(--border-width) solid var(--border)}.map-canvas:empty:after{content:"";position:absolute;inset:0;background:radial-gradient(80% 60% at 50% 0%,var(--accent-soft),transparent 70%)}.dtn-marker{width:var(--marker-size);height:var(--marker-size);padding:0;border:none;background:transparent;cursor:pointer;display:block;line-height:0;transition:transform var(--dur-fast) var(--ease);transform-origin:center bottom}.dtn-marker svg{width:100%;height:100%;overflow:visible;filter:drop-shadow(0 3px 4px rgb(0 0 0 / .45))}.dtn-marker__body,.dtn-marker__ring{stroke:var(--marker-ring);stroke-width:2.4}.dtn-marker__dot{fill:var(--marker-ring)}.dtn-marker--travel .dtn-marker__body{fill:var(--layer-travel)}.dtn-marker--techno .dtn-marker__body{fill:var(--layer-techno)}.dtn-marker--both .dtn-marker__ring{fill:none;stroke-width:2.6}.dtn-marker--both .dtn-marker__half{stroke:none}.dtn-marker--both .dtn-marker__half--travel{fill:var(--layer-travel)}.dtn-marker--both .dtn-marker__half--techno{fill:var(--layer-techno)}.dtn-marker:hover,.dtn-marker:focus-visible,.dtn-marker.is-active{transform:scale(1.28);outline:none}.dtn-marker:hover svg,.dtn-marker:focus-visible svg,.dtn-marker.is-active svg{filter:drop-shadow(0 6px 10px rgb(0 0 0 / .55))}.dtn-marker:focus-visible .dtn-marker__body,.dtn-marker:focus-visible .dtn-marker__ring{stroke:var(--focus-ring);stroke-width:3}@media(prefers-reduced-motion:reduce){.dtn-marker{transition:none}}.dtn-pin{width:calc(var(--marker-size) * 1.15);height:calc(var(--marker-size) * 1.5);padding:0;border:none;background:transparent;cursor:pointer;display:block;line-height:0;transition:transform var(--dur-fast) var(--ease);transform-origin:center bottom}.dtn-pin svg{width:100%;height:100%;overflow:visible;filter:drop-shadow(0 3px 4px rgb(0 0 0 / .45))}.dtn-pin__body{stroke:var(--marker-ring);stroke-width:2.4}.dtn-pin--travel .dtn-pin__body{fill:var(--layer-travel)}.dtn-pin--techno .dtn-pin__body{fill:var(--layer-techno)}.dtn-pin__num{fill:var(--marker-ring);font-family:var(--font-mono);font-size:15px;font-weight:var(--weight-bold, 700)}.dtn-pin:hover,.dtn-pin:focus-visible{transform:scale(1.2);outline:none}.dtn-pin:hover svg,.dtn-pin:focus-visible svg{filter:drop-shadow(0 6px 10px rgb(0 0 0 / .55))}.dtn-pin:focus-visible .dtn-pin__body{stroke:var(--focus-ring);stroke-width:3}@media(prefers-reduced-motion:reduce){.dtn-pin{transition:none}}.maplibregl-popup-content{background:transparent!important;color:var(--text)!important;border:none!important;border-radius:var(--radius-lg)!important;padding:0!important;box-shadow:none!important}.maplibregl-popup-tip{border-top-color:var(--bg-elev)!important;border-bottom-color:var(--bg-elev)!important}.maplibregl-popup-close-button{color:var(--text-muted)!important;font-size:1.1rem;padding:0 .35rem;z-index:2}.dtn-hovercard{position:absolute;z-index:6;pointer-events:auto;filter:drop-shadow(var(--shadow-md));transition:opacity var(--dur-fast) var(--ease)}.dtn-hovercard[hidden]{display:none}.dtn-card{width:16.5rem;max-width:78vw;display:grid;background:var(--bg-elev);color:var(--text);border:var(--border-width) solid var(--border-strong);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-md)}.dtn-card__media{aspect-ratio:16 / 9;overflow:hidden;background:var(--surface)}.dtn-card__media img{width:100%;height:100%;object-fit:cover;filter:var(--photo-grade)}.dtn-card__body{display:grid;gap:var(--space-2xs);padding:var(--space-sm)}.dtn-card__head{display:flex;align-items:baseline;gap:.35rem;flex-wrap:wrap}.dtn-card__name{font-family:var(--font-display);font-size:var(--step-0);line-height:var(--leading-tight)}.dtn-card__country{color:var(--text-muted);font-size:var(--step--1)}.dtn-card__meta{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;font-size:var(--step--1)}.dtn-card__chip{display:inline-flex;align-items:center;padding:.1rem .5rem;border-radius:var(--radius-pill);font-family:var(--font-mono);font-size:.72rem;letter-spacing:var(--tracking-wide);text-transform:uppercase;border:var(--border-width) solid var(--border-strong);color:var(--text-muted)}.dtn-card__chip--travel{color:var(--layer-travel);border-color:color-mix(in srgb,var(--layer-travel) 55%,transparent);background:var(--accent-soft)}.dtn-card__chip--techno{color:var(--layer-techno);border-color:color-mix(in srgb,var(--layer-techno) 55%,transparent);background:color-mix(in srgb,var(--layer-techno) 14%,transparent)}.dtn-card__chip--both{color:var(--text);background:linear-gradient(90deg,var(--accent-soft),color-mix(in srgb,var(--layer-techno) 14%,transparent))}.dtn-card__visited{color:var(--text-faint);font-size:var(--step--1)}.dtn-card__blurb{margin:0;font-size:var(--step--1);color:var(--text-muted);line-height:var(--leading-snug)}.dtn-card__actions{display:flex;align-items:center;justify-content:space-between;gap:var(--space-xs);margin-top:var(--space-2xs)}.dtn-card__read{color:var(--accent-strong);font-weight:var(--weight-medium);font-size:var(--step--1);text-decoration:none}.dtn-card__read:hover{text-decoration:underline}.dtn-card__sound{color:var(--text-muted);font-size:var(--step--1);text-decoration:none;padding:.1rem .45rem;border:var(--border-width) solid var(--border-strong);border-radius:var(--radius-pill);white-space:nowrap}.dtn-card__sound:hover{color:var(--accent-strong);border-color:var(--accent)}.dtn-card__muted{color:var(--text-faint);font-size:var(--step--1)}.dtn-art{width:100%;height:100%}.dtn-art__sphere{fill:var(--surface);stroke:var(--border-strong)}.dtn-art__graticule{fill:none;stroke:var(--border);stroke-width:.4}.dtn-art__land{fill:var(--surface-2);stroke:var(--border-strong);stroke-width:.5}.dtn-art__dot circle{fill:var(--layer-travel);stroke:#0000004d;stroke-width:1;cursor:pointer;transition:r var(--dur-fast) var(--ease)}.dtn-art__dot--techno circle{fill:var(--layer-techno)}.dtn-art__dot:hover circle{r:7}.map-toggle{position:absolute;z-index:2;top:var(--space-md);left:var(--space-md);display:inline-flex;gap:2px;padding:3px;background:color-mix(in srgb,var(--bg-elev) 88%,transparent);border:var(--border-width) solid var(--border-strong);border-radius:var(--radius-pill);backdrop-filter:blur(8px)}.map-toggle button{border:none;background:transparent;color:var(--text-muted);font-size:var(--step--1);padding:.3rem .8rem;border-radius:var(--radius-pill)}.map-toggle button[aria-pressed=true]{background:var(--accent);color:var(--accent-contrast)}.map-split{display:grid;gap:var(--space-md)}@media(min-width:52rem){.map-split{grid-template-columns:1.6fr 1fr}.map-split .map-canvas{height:34rem}}.map-synced-list{list-style:none;margin:0;padding:0;max-height:34rem;overflow-y:auto;display:grid;gap:var(--space-2xs)}.map-synced-list li{padding:var(--space-sm);border:var(--border-width) solid var(--border);border-radius:var(--radius-md);transition:border-color var(--dur-fast) var(--ease)}.map-synced-list li.is-active{border-color:var(--accent);background:var(--accent-soft)}.map-synced-list a{text-decoration:none;font-weight:var(--weight-medium)}.map-scroll__steps{display:grid;gap:24vh;margin-top:var(--space-xl)}.map-scroll__step{max-width:32rem;margin-inline:auto;padding:var(--space-lg);border:var(--border-width) solid var(--border);border-radius:var(--radius-lg);background:var(--bg-elev);opacity:.5;transition:opacity var(--dur) var(--ease)}.map-scroll__step.is-active{opacity:1}.map-scroll .map-canvas{position:sticky;top:12vh;height:76vh}.route-map__grid{display:grid;gap:var(--space-xl)}@media(min-width:52rem){.route-map__grid{grid-template-columns:1fr 1fr;align-items:start}.route-map__map{position:sticky;top:10vh}.route-map .map-canvas{height:80vh}}.route-map__steps{display:grid;gap:24vh}.route-step{padding:var(--space-lg);border:var(--border-width) solid var(--border);border-radius:var(--radius-lg);background:var(--bg-elev);opacity:.55;transition:opacity var(--dur) var(--ease)}.route-step.is-active{opacity:1;border-color:var(--accent)}.route-step__index{font-family:var(--font-mono);font-size:var(--step--1);color:var(--accent-strong)}.route-step__visited{color:var(--text-faint)}.route-map[data-layout=top-carousel] .route-map__steps{grid-auto-flow:row;grid-auto-columns:auto;overflow-x:visible;scroll-snap-type:none;padding-bottom:0;margin-top:0}.route-map[data-layout=top-carousel] .route-step{scroll-snap-align:none}.maplibregl-ctrl-attrib{font-size:10px}
