:root{
  --paper:#f6f5f0;--surface:#fbfaf7;--ink:#171716;--muted:#74716a;
  --hair:rgba(23,23,22,.14);--hair-strong:rgba(23,23,22,.26);
  --timeline-h:112px;--sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif;
  --serif:"Iowan Old Style","Palatino Linotype",Palatino,Baskerville,"Times New Roman",serif;
}
*{box-sizing:border-box}html,body{height:100%;margin:0;overflow:hidden;background:var(--paper);color:var(--ink)}
body{font-family:var(--sans);-webkit-font-smoothing:antialiased}
button{font:inherit;color:inherit}
button:focus-visible{outline:1px solid var(--ink);outline-offset:3px}
.shell{position:fixed;inset:0;background:var(--paper)}
.grain{position:fixed;inset:0;z-index:2000;pointer-events:none;opacity:.5;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='260' height='260'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .06 0'/%3E%3C/filter%3E%3Crect width='260' height='260' filter='url(%23g)'/%3E%3C/svg%3E")}
.vignette{position:absolute;inset:0;z-index:820;pointer-events:none;box-shadow:inset 0 0 130px rgba(23,23,22,.055),inset 0 0 34px rgba(23,23,22,.028)}
.map-wrap{position:absolute;inset:0 0 var(--timeline-h);overflow:hidden}
#map{width:100%;height:100%;background:var(--paper);cursor:grab}
#map:active{cursor:grabbing}
.base-map{filter:contrast(1.04);opacity:.96}
.leaflet-container{font-family:var(--sans);background:var(--paper)}
.leaflet-control-attribution{display:none}
.leaflet-div-icon{border:0!important;background:transparent!important}
.leaflet-overlay-pane svg path{vector-effect:non-scaling-stroke}
.atlas-deco{overflow:visible}
.atlas-deco .graticule{fill:none;stroke:var(--ink);stroke-width:.55;opacity:.09}
.journey-line{animation:march 85s linear infinite}
@keyframes march{to{stroke-dashoffset:-360}}
.topbar{position:absolute;z-index:900;top:0;left:0;right:0;height:88px;display:flex;align-items:flex-start;justify-content:space-between;padding:25px 30px;pointer-events:none;background:linear-gradient(to bottom,rgba(246,245,240,.96),rgba(246,245,240,0))}
.identity{pointer-events:auto}.eyebrow{font-size:10px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin-bottom:4px}.identity h1{margin:0;font:400 24px/1.05 var(--serif);letter-spacing:-.02em}.identity h1 .amp{font-style:italic;padding:0 .05em}.top-meta{pointer-events:auto;text-align:right;font-size:11px;line-height:1.45;color:var(--muted)}
.map-instruction{position:absolute;z-index:850;left:50%;bottom:20px;transform:translateX(-50%);font:italic 400 12.5px/1.3 var(--serif);letter-spacing:.02em;color:var(--muted);pointer-events:none;transition:opacity .25s}.map-wrap.has-moved .map-instruction{opacity:0}
.compass{position:absolute;z-index:840;left:26px;bottom:14px;width:44px;height:44px;color:var(--ink);opacity:.45;pointer-events:none}
.zoom-controls{position:absolute;z-index:900;right:24px;top:105px;display:flex;flex-direction:column;background:rgba(251,250,247,.94);border:1px solid var(--hair);backdrop-filter:blur(10px)}
.zoom-controls button{width:38px;height:38px;border:0;background:transparent;cursor:pointer;font-size:18px;font-weight:300}.zoom-controls button+button{border-top:1px solid var(--hair)}.zoom-controls .home{font-size:13px;letter-spacing:-.02em}
.zoom-readout{position:absolute;z-index:850;right:24px;top:226px;width:38px;text-align:center;font-size:9px;letter-spacing:.1em;color:var(--muted)}
@keyframes rise{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:none}}
.topbar{animation:rise .8s .05s cubic-bezier(.2,.7,.2,1) both}
.zoom-controls,.zoom-readout,.compass{animation:rise .8s .22s cubic-bezier(.2,.7,.2,1) both}
.timeline{animation:rise .8s .14s cubic-bezier(.2,.7,.2,1) both}
.memory-marker{position:relative;width:18px;height:18px;transform:translate(.5px,.5px)}
.memory-cluster{background:transparent;border:0}.cluster-mark{display:grid;place-items:center;width:31px;height:31px;border:1px solid var(--ink);border-radius:50%;background:rgba(251,250,247,.96);box-shadow:0 0 0 5px rgba(246,245,240,.82);outline:1px solid rgba(23,23,22,.26);outline-offset:2.5px;font:600 10px/1 var(--sans);letter-spacing:-.02em;transition:transform .2s,background .2s,color .2s}
@media(hover:hover){
.zoom-controls button:hover{background:rgba(23,23,22,.045)}
.memory-marker:hover .marker-badge{box-shadow:0 4px 12px rgba(23,23,22,.3),0 0 0 3px rgba(246,245,240,.95),0 0 0 4.5px rgba(23,23,22,.35)}
.memory-cluster:hover .cluster-mark{transform:scale(1.08);background:var(--ink);color:var(--surface)}
.timeline-event:hover:before{opacity:1;height:18px;margin-top:7px}
.panel-close:hover{color:var(--ink)}
}
.marker-label{position:absolute;left:17px;top:-3px;white-space:nowrap;pointer-events:auto;color:var(--ink);text-shadow:0 1px 0 var(--paper),1px 0 0 var(--paper),0 -1px 0 var(--paper),-1px 0 0 var(--paper),1px 1px 0 var(--paper),-1px -1px 0 var(--paper),1px -1px 0 var(--paper),-1px 1px 0 var(--paper),0 0 5px var(--paper)}
.marker-world{display:block;font:500 11px/1.2 var(--sans);letter-spacing:-.01em}
.marker-city,.marker-date{display:block;opacity:0;transform:translateY(2px);transition:opacity .22s,transform .22s}
.marker-city{font:400 14px/1.15 var(--serif);letter-spacing:-.01em}.marker-date{margin-top:2px;font:400 10px/1.2 var(--sans);color:var(--muted);letter-spacing:.03em;text-transform:uppercase}
.theme-cover{position:relative;height:108px;background:#eceae3;overflow:hidden;border-bottom:1px solid var(--hair)}
.cover-art{position:absolute;left:0;top:-13%;width:100%;height:126%;object-fit:cover;animation:kenburns 18s ease-in-out infinite alternate}
.leaflet-marker-pane img.cover-art,.leaflet-marker-pane .wp-card img{width:100%;max-width:none}
.leaflet-marker-pane img.marker-badge{width:54px;max-width:none}
.marker-badge{position:absolute;z-index:1;left:50%;top:50%;width:54px;height:54px;border-radius:50%;border:1.5px solid rgba(23,23,22,.6);box-shadow:0 2px 7px rgba(23,23,22,.22),0 0 0 3px rgba(246,245,240,.92);background:#f6f5f0;filter:contrast(1.18) saturate(1.15);transition:opacity .25s,box-shadow .2s;pointer-events:auto;cursor:pointer}
.memory-marker.active .marker-badge{border-color:var(--ink);box-shadow:0 3px 9px rgba(23,23,22,.28),0 0 0 3px rgba(246,245,240,.95),0 0 0 4.5px rgba(23,23,22,.5)}
#map[data-detail="0"] .marker-label{left:40px;top:6px}
#map[data-detail="1"] .marker-label,#map[data-detail="2"] .marker-label{left:40px;top:0}
@keyframes kenburns{from{transform:scale(1)}to{transform:scale(1.06)}}
.theme-cover .rain{animation:rainfall 1.7s linear infinite}
@keyframes rainfall{to{transform:translateY(28px)}}
.theme-cover .twinkle{transform-box:fill-box;transform-origin:center;animation:twinkle 2.6s ease-in-out infinite}
@keyframes twinkle{0%,100%{opacity:.12}50%{opacity:1}}
.theme-cover svg{display:block;width:100%;height:100%;color:var(--ink)}
.theme-cover .ink{fill:none;stroke:currentColor;stroke-width:1.35;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.theme-cover .ink2{fill:none;stroke:currentColor;stroke-width:.8;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke;opacity:.85}
.theme-cover .ink3{fill:none;stroke:currentColor;stroke-width:.5;stroke-linecap:round;vector-effect:non-scaling-stroke;opacity:.5}
.theme-cover .wash{fill:rgba(23,23,22,.035);stroke:none}.theme-cover .wash2{fill:rgba(23,23,22,.07);stroke:none}.theme-cover .solid{fill:var(--ink);stroke:none}
.theme-cover .draw{stroke-dasharray:420;stroke-dashoffset:0;animation:inkDraw 5.5s cubic-bezier(.3,.7,.3,1) infinite}
.theme-cover .drift{animation:drift 5s ease-in-out infinite}.theme-cover .breathe{transform-box:fill-box;transform-origin:center;animation:breathe 3.2s ease-in-out infinite}.theme-cover .sway{transform-box:fill-box;transform-origin:bottom center;animation:sway 4s ease-in-out infinite}.theme-cover .roll{animation:roll 6s ease-in-out infinite}
@keyframes inkDraw{0%,100%{stroke-dashoffset:0;opacity:1}50%{stroke-dashoffset:24;opacity:.72}}
@keyframes drift{50%{transform:translateY(-3px)}}@keyframes breathe{50%{transform:scale(1.035)}}@keyframes sway{50%{transform:rotate(2deg)}}@keyframes roll{0%,100%{transform:translateX(5px)}50%{transform:translateX(165px)}}
.waypoint-marker{position:relative;width:10px;height:10px;opacity:0;transition:opacity .3s;pointer-events:none}
.wp-dot{position:absolute;left:2.5px;top:2.5px;width:5px;height:5px;border:1px solid var(--ink);border-radius:50%;background:var(--paper)}
.wp-label{position:absolute;left:11px;top:-4px;white-space:nowrap;font:italic 400 11px/1.2 var(--serif);color:var(--ink);opacity:0;transition:opacity .25s;text-shadow:0 1px 0 var(--paper),1px 0 0 var(--paper),0 -1px 0 var(--paper),-1px 0 0 var(--paper),0 0 4px var(--paper)}
.wp-label i{display:block;font:400 8px/1.4 var(--sans);font-style:normal;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.wp-label.left{left:auto;right:11px;text-align:right}
.waypoint-marker.has-card{pointer-events:auto;cursor:pointer}
.waypoint-marker.has-card:after{content:'';position:absolute;inset:-7px}
.wp-card{position:absolute;left:13px;top:10px;width:158px;background:var(--surface);border:1px solid var(--hair);box-shadow:0 12px 30px rgba(23,23,22,.12);opacity:0;transform:translateY(4px);transition:opacity .22s,transform .22s;pointer-events:none;display:block}
.wp-card img{display:block;width:100%;height:100px;object-fit:cover}
.wp-card i{display:block;font:italic 400 10.5px/1.35 var(--serif);color:var(--ink);padding:7px 9px 8px}
.waypoint-marker.open .wp-card{opacity:1;transform:none}
.waypoint-marker.open .wp-label{opacity:0!important}
#map[data-detail="1"] .waypoint-marker,#map[data-detail="2"] .waypoint-marker{opacity:1}
#map[data-deep="1"] .wp-label{opacity:.85}
#map[data-detail="1"] .marker-world,#map[data-detail="2"] .marker-world{display:none}
#map[data-detail="1"] .marker-city,#map[data-detail="1"] .marker-date,#map[data-detail="2"] .marker-city,#map[data-detail="2"] .marker-date{opacity:1;transform:none}
#map[data-detail="1"] .memory-marker:not(.active) .marker-badge,#map[data-detail="2"] .memory-marker:not(.active) .marker-badge{opacity:.62}
#map[data-detail="1"] .memory-marker:not(.active) .marker-label,#map[data-detail="2"] .memory-marker:not(.active) .marker-label{opacity:0;pointer-events:none}
#map[data-detail="2"] .memory-marker:not(.active) #map[data-deep="1"] .memory-marker:not(.active) .marker-label{opacity:1;pointer-events:none}
#map[data-deep="1"] .memory-marker:not(.active) .marker-city{opacity:.8}
#map[data-deep="1"] .memory-marker:not(.active) .marker-date{opacity:.7}
.detail-panel{position:absolute;z-index:1000;left:0;top:0;width:min(430px,calc(100vw - 32px));max-height:calc(100% - var(--timeline-h) - 90px);background:var(--surface);border:1px solid var(--hair-strong);box-shadow:0 18px 50px rgba(23,23,22,.16),0 2px 8px rgba(23,23,22,.08);padding:27px 27px 23px;overflow:auto;opacity:0;visibility:hidden;pointer-events:none;will-change:transform,opacity}.detail-panel.open{opacity:1;visibility:visible;pointer-events:auto}
.map-wrap.panel-open .memory-marker.active .panel-close{position:absolute;right:21px;top:20px;width:34px;height:34px;border:0;background:transparent;cursor:pointer;font-size:21px;font-weight:200;color:var(--muted)}
.panel-visits{display:flex;gap:6px;margin:-2px 0 14px}.panel-visits:empty{display:none}.panel-visits button{font:600 9px/1 var(--sans);letter-spacing:.08em;text-transform:uppercase;padding:5px 9px;border:1px solid var(--hair-strong);background:transparent;cursor:pointer;color:var(--muted)}.panel-visits button.on{background:var(--ink);color:var(--surface);border-color:var(--ink)}
.panel-index{font-size:10px;letter-spacing:.15em;text-transform:uppercase;color:var(--muted);margin:2px 42px 37px 0}
.panel-place{font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;margin-bottom:12px}.panel-cover{position:relative;height:168px;margin:0 0 25px;background:#eceae3;border:1px solid var(--hair);overflow:hidden}.panel-cover .theme-cover{height:100%;border:0}.detail-panel h2{font:400 34px/1.03 var(--serif);letter-spacing:-.035em;margin:0 0 16px;max-width:310px}.panel-copy{font:400 16px/1.6 var(--serif);letter-spacing:-.005em;margin:0;color:#35332e}.panel-rule{height:1px;background:var(--hair);margin:28px 0 19px}.panel-note{font:italic 400 12.5px/1.5 var(--serif);color:var(--muted);margin-bottom:13px}
.postmark{position:absolute;right:9px;top:9px;width:84px;height:84px;color:var(--ink);opacity:.5;transform:rotate(-8deg);mix-blend-mode:multiply;pointer-events:none;font-family:var(--sans)}
.photo-strip{display:grid;grid-template-columns:1.4fr 1fr;grid-template-rows:105px 105px;gap:5px}.photo-placeholder{position:relative;background:#e9e7e0;overflow:hidden}.photo-placeholder:first-child{grid-row:1/3}.photo-placeholder:after{content:'PHOTO';position:absolute;left:9px;bottom:8px;font-size:8px;letter-spacing:.14em;color:#8b877f}
.photo-placeholder img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:saturate(.85)}
.photo-placeholder.has-photo:after{content:none}.photo-placeholder:before{z-index:1;content:'';position:absolute;inset:0;background-image:linear-gradient(135deg,var(--surface) 7px,rgba(23,23,22,.2) 7px,rgba(23,23,22,.2) 7.75px,transparent 7.75px),linear-gradient(225deg,var(--surface) 7px,rgba(23,23,22,.2) 7px,rgba(23,23,22,.2) 7.75px,transparent 7.75px),linear-gradient(45deg,var(--surface) 7px,rgba(23,23,22,.2) 7px,rgba(23,23,22,.2) 7.75px,transparent 7.75px),linear-gradient(315deg,var(--surface) 7px,rgba(23,23,22,.2) 7px,rgba(23,23,22,.2) 7.75px,transparent 7.75px)}
.panel-footer{display:flex;justify-content:space-between;align-items:center;margin-top:20px;padding-top:15px;border-top:1px solid var(--hair);font-size:10px;color:var(--muted)}
.timeline{position:absolute;z-index:950;left:0;right:0;bottom:0;height:var(--timeline-h);background:rgba(248,247,243,.97);border-top:1px solid var(--hair-strong);backdrop-filter:blur(12px);padding:0 4.5vw}
.timeline-head{position:absolute;left:4.5vw;top:13px;font-size:9px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);pointer-events:none}
.timeline-scroll{position:absolute;inset:0;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.timeline-scroll::-webkit-scrollbar{display:none}
.timeline-inner{position:relative;height:100%;min-width:100%}
.timeline.can-scroll .timeline-scroll{-webkit-mask-image:linear-gradient(to right,transparent,black 38px,black calc(100% - 38px),transparent);mask-image:linear-gradient(to right,transparent,black 38px,black calc(100% - 38px),transparent)}
.timeline.can-scroll.at-start .timeline-scroll{-webkit-mask-image:linear-gradient(to right,black,black calc(100% - 38px),transparent);mask-image:linear-gradient(to right,black,black calc(100% - 38px),transparent)}
.timeline.can-scroll.at-end .timeline-scroll{-webkit-mask-image:linear-gradient(to right,transparent,black 38px,black);mask-image:linear-gradient(to right,transparent,black 38px,black)}
.timeline-track{position:absolute;left:5.5%;right:5.5%;top:44px;height:10px;border-top:1px solid var(--hair-strong);background:repeating-linear-gradient(to right,var(--hair) 0 1px,transparent 1px 11px)}.timeline-progress{height:100%;width:0;background:repeating-linear-gradient(to right,rgba(23,23,22,.8) 0 1px,transparent 1px 11px);transition:width .5s cubic-bezier(.2,.75,.2,1)}
.timeline-events{position:absolute;left:5.5%;right:5.5%;top:0;height:100%}
.timeline-event{position:absolute;top:33px;width:92px;transform:translateX(-50%);border:0;background:transparent;padding:0;text-align:center;cursor:pointer}.timeline-event:before{content:'';display:block;width:1.5px;height:14px;background:var(--ink);opacity:.5;margin:11px auto 8px;transition:.2s}.timeline-event.active:before{opacity:1;width:2px;height:21px;margin-top:4px}
.timeline-event strong{display:block;font-size:10px;font-weight:600;letter-spacing:.01em}.timeline-event span{display:block;margin-top:2px;font:400 9px/1 var(--sans);color:var(--muted);letter-spacing:.03em;text-transform:uppercase}
@media(max-width:720px){:root{--timeline-h:102px}.topbar{padding:19px 18px}.top-meta{display:none}.identity h1{font-size:21px}.zoom-controls{right:14px;top:82px}.zoom-readout{right:14px;top:202px}.timeline{padding:0}.timeline-head{left:16px}.timeline-events{left:30px;right:30px}.timeline-track{left:30px;right:30px}.timeline-event{width:64px}.timeline-event strong{font-size:9px}.timeline-event span{display:none}.detail-panel{width:calc(100vw - 24px);max-height:calc(100% - var(--timeline-h) - 86px);padding:23px 21px 21px}.map-instruction{bottom:14px}.compass{display:none}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}.detail-panel,.timeline-progress,.marker-badge,.marker-city,.marker-date{transition:none!important}.theme-cover *{animation:none!important;stroke-dashoffset:0!important}.journey-line,.topbar,.timeline,.zoom-controls,.zoom-readout,.compass{animation:none!important}}
