.places-intro { display:flex; align-items:end; justify-content:space-between; gap:24px; }
.places-intro > div { min-width:0; }
.places-count { font-size:.875rem; white-space:nowrap; flex-shrink:0; }
.memory-atlas { padding:22px; border:1px solid var(--line); background:var(--surface); }
.memory-atlas .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; }
.places-curation { margin-bottom:14px; }
.journey-heading { display:flex; align-items:end; justify-content:space-between; gap:24px; }
.journey-heading > div { min-width:0; }
#journey-title { margin:0 0 6px; font:400 1.65rem var(--font-serif); overflow-wrap:anywhere; }
.journey-field { display:grid; gap:6px; flex:0 1 280px; min-width:160px; color:var(--muted); font-size:.75rem; }
.journey-summary { margin:0; color:var(--muted); font-size:.8125rem; line-height:1.7; }
.date-browser { margin-top:16px; }
.date-heading { display:flex; align-items:center; justify-content:space-between; gap:14px; margin-bottom:10px; font-size:.8125rem; color:var(--muted); }
.date-jump { min-width:0; max-width:260px; }
.date-jump select { min-width:0; }
.journey-timeline { display:flex; align-items:center; gap:8px; }
.journey-timeline > .quiet-button { flex:0 0 44px; min-width:44px; min-height:44px; padding:8px; }
.journey-days { display:flex; flex:1; min-width:0; gap:8px; }
.journey-day { flex:1; min-width:0; min-height:68px; padding:9px 7px; border:1px solid var(--line); border-radius:3px; color:var(--ink); background:var(--surface); }
.journey-day strong { display:block; font-size:.9375rem; font-weight:500; }
.journey-day span { display:block; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; color:var(--muted); font-size:.75rem; margin-top:4px; }
.journey-day[aria-pressed="true"] { border-color:var(--accent); background:var(--soft); }
.journey-day[aria-pressed="true"] strong { text-decoration:underline; text-underline-offset:4px; text-decoration-thickness:2px; }
.memory-atlas button:disabled { opacity:.5; cursor:default; }
.map-tools { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:8px 14px; margin:10px 0; }
.map-tools > p { margin:0; font-size:.8125rem; line-height:1.7; color:var(--muted); }
.map-controls { display:flex; align-items:center; flex-wrap:wrap; gap:8px 14px; }
.map-mode { display:flex; gap:6px; }
.map-mode .quiet-button { min-height:44px; padding:8px 12px; }
.map-mode [aria-pressed="true"] { border-color:var(--accent); text-decoration:underline; text-underline-offset:4px; text-decoration-thickness:2px; }
.map-buttons { display:flex; align-items:center; gap:6px; flex-shrink:0; }
.map-buttons .quiet-button { min-width:44px; min-height:44px; padding:8px 12px; }
#map-scale { font:.75rem Consolas,monospace; min-width:44px; text-align:center; color:var(--muted); }
.world-board { position:relative; width:100%; height:auto; min-height:250px; aspect-ratio:2 / 1; overflow:hidden; border:1px solid var(--line); border-radius:3px; background:var(--soft); touch-action:none; cursor:grab; }
.map-detail { position:absolute; z-index:1; inset:0; opacity:0; visibility:hidden; pointer-events:none; transition:opacity .25s ease,visibility 0s linear .25s; }
.has-map-detail .map-detail { visibility:visible; transition:opacity .25s ease; }
@media(prefers-reduced-motion:reduce) { .map-detail,.has-map-detail .map-detail { transition:none; } }
.map-detail-credit { display:none; position:absolute; z-index:5; right:4px; bottom:4px; max-width:calc(100% - 8px); padding:2px 4px; background:var(--surface); color:var(--muted); font-size:.625rem; line-height:1.4; }
.has-map-detail .map-detail-credit { display:block; }
.map-detail-credit a { color:inherit; text-decoration:underline; }
.globe-layer { position:absolute; inset:0; z-index:4; background:var(--soft); overflow:hidden; }
.globe-layer[hidden] { display:none; }
.globe-space,.globe-canvas,.globe-pins { position:absolute; inset:0; width:100%; height:100%; }
.globe-space { pointer-events:none; }
.globe-space-label { position:absolute; left:16px; bottom:12px; max-width:calc(100% - 32px); margin:0; color:#e8e5dc; font-size:.75rem; line-height:1.4; white-space:pre-line; text-shadow:0 1px 4px #090f1a; pointer-events:none; }
.globe-space-label { padding:4px 6px; background:rgba(5,10,18,.8); }
.globe-space-label[hidden] { display:none; }
.globe-space-credits { display:none; }
.globe-space-credits:not([hidden]) { display:flex; flex-wrap:wrap; gap:2px 8px; margin-top:6px; color:var(--muted); font-size:.625rem; line-height:1.4; }
.globe-space-photo-credits { display:contents; }
.globe-space-source,.globe-space-earth-source,.globe-space-license { max-width:100%; color:inherit; font-size:inherit; text-decoration:underline; text-underline-offset:2px; }
.globe-space-project { position:absolute; right:16px; bottom:12px; max-width:45%; padding:6px; background:rgba(5,10,18,.9); color:#e8e5dc; font-size:.75rem; }
.globe-space-home { position:absolute; left:50%; bottom:60px; transform:translateX(-50%); min-height:44px; padding:8px 18px; cursor:pointer; opacity:0; visibility:hidden; pointer-events:none; transition:opacity .45s ease,visibility 0s linear .45s; }
.globe-space-home.is-visible { opacity:1; visibility:visible; pointer-events:auto; transition:opacity .45s ease,visibility 0s; }
.memory-atlas button.globe-space-home:disabled { opacity:0; }
.globe-return-message { margin:10px 0 0; padding:14px 18px; border:1px solid var(--line); background:var(--soft); color:var(--ink); font-family:var(--font-serif); font-size:clamp(1rem,1.5vw,1.3rem); line-height:1.5; text-align:center; }
.globe-return-message[hidden] { display:none; }
.globe-layer[data-space-scene="voyager"] .globe-space-label { max-width:calc(50% - 16px); overflow-wrap:anywhere; }
.globe-layer[data-space-scene="survey"] .globe-space-label { max-width:48%; }
@media(max-width:600px) {
  .globe-layer[data-space-scene="survey"] .globe-space-label { left:8px; bottom:48px; max-width:calc(100% - 16px); }
  .globe-layer[data-space-scene="survey"] .globe-space-project { right:8px; bottom:8px; max-width:calc(100% - 16px); }
  .globe-layer[data-space-scene="survey"] .globe-space-home { bottom:100px; }
}
.globe-space-source[hidden],.globe-space-earth-source[hidden],.globe-space-license[hidden],.globe-space-project[hidden] { display:none; }
.globe-canvas { pointer-events:none; }
.globe-canvas.globe-crossfading { transition:opacity .25s ease; }
.globe-detail { position:absolute; inset:0; opacity:0; visibility:hidden; pointer-events:none; transition:opacity .25s ease,visibility 0s linear .25s; }
.globe-detail.is-active { opacity:1; visibility:visible; transition:opacity .25s ease; }
@media(prefers-reduced-motion:reduce) { .globe-detail,.globe-detail.is-active,.globe-canvas.globe-crossfading { transition:none; } }
.globe-detail-credit,.globe-detail-notice { position:absolute; z-index:5; bottom:4px; margin:0; padding:2px 4px; background:var(--surface); color:var(--muted); font-size:.625rem; line-height:1.4; }
.globe-detail-credit { right:4px; max-width:calc(100% - 8px); }
.globe-detail-credit a { color:inherit; text-decoration:underline; }
.globe-detail-notice { left:4px; }
.globe-detail-credit[hidden],.globe-detail-notice[hidden] { display:none; }
.globe-pins { pointer-events:none; }
.globe-pin { pointer-events:auto; }
.globe-status { position:absolute; inset:0; display:grid; place-items:center; margin:0; padding:20px; color:var(--muted); font-size:.875rem; text-align:center; }
.globe-status[hidden] { display:none; }
.world-board.is-globe .map-sheet,.world-board.is-globe .map-detail,.world-board.is-globe .map-geography-labels,.world-board.is-globe .map-detail-credit { display:none; }
.world-board:focus-visible { outline:3px solid var(--accent); outline-offset:5px; }
.world-board { user-select:none; }
.world-board.is-dragging, .world-board.is-dragging .map-pin { cursor:grabbing; }
.world-board.is-dragging .map-pin { animation:none; }
.map-sheet { position:absolute; left:50%; top:50%; width:100%; aspect-ratio:1 / 1; }
.world-map { display:block; width:100%; height:100%; object-fit:fill; user-select:none; pointer-events:none; }
.map-vector-ready > img.world-map { display:none; }
.world-vector .world-land { fill:var(--line); stroke:var(--muted); stroke-opacity:.4; }
.world-vector .world-grid { stroke:var(--muted); stroke-opacity:.08; }
.world-vector .world-borders { fill:none; stroke:var(--muted); stroke-opacity:.35; stroke-width:.65; }
:root:not([data-theme="dark"]) .world-board:not(.is-globe) { background:#b4d4e1; }
:root:not([data-theme="dark"]) .world-vector .world-land { fill:#dce9d1; stroke:#9db49f; stroke-opacity:.55; }
:root:not([data-theme="dark"]) .world-vector .world-grid { stroke:#7f8989; stroke-opacity:.12; }
:root:not([data-theme="dark"]) .world-vector .world-borders { stroke:#8e9998; stroke-opacity:.45; }
:root:not([data-theme="dark"]) .map-sheet > img.world-map { filter:sepia(.22) hue-rotate(55deg) saturate(.8) brightness(1.08); }
:root[data-theme="dark"] .world-board:not(.is-globe) { background:#354f60; }
:root[data-theme="dark"] .globe-layer { background:#222e30; }
:root[data-theme="dark"] .world-vector .world-land { fill:#647c61; stroke:#a0b19b; stroke-opacity:.45; }
:root[data-theme="dark"] .world-vector .world-grid { stroke:#a5a5a5; stroke-opacity:.12; }
:root[data-theme="dark"] .world-vector .world-borders { stroke:#a5a5a5; stroke-opacity:.45; }
:root[data-theme="dark"] .map-sheet > img.world-map { filter:sepia(.3) hue-rotate(55deg) saturate(.75) brightness(.55); }
:root[data-theme="dark"] .map-geo-label { color:#f0f0f0; text-shadow:1px 1px 1px #555,-1px -1px 1px #555,1px -1px 1px #555,-1px 1px 1px #555; }
:root[data-theme="dark"] .map-geo-label small,:root[data-theme="dark"] .map-geo-label.geo-country { color:#f0f0f0; }
:root[data-theme="dark"] .map-geo-dot { background:#b2b2b2; }
:root[data-theme="dark"] .map-geo-leaders { stroke:#b2b2b2; }
.map-geography-labels { position:absolute; z-index:1; inset:0; pointer-events:none; overflow:hidden; }
.map-geo-label { position:absolute; color:var(--ink); font:400 .75rem/1.35 var(--font-body); white-space:nowrap; padding:2px 3px; text-shadow:1px 1px 1px var(--paper),-1px -1px 1px var(--paper),1px -1px 1px var(--paper),-1px 1px 1px var(--paper); }
.map-geo-label small { display:block; color:var(--muted); font-size:.6875rem; }
.map-geo-label.geo-country { color:var(--muted); font-size:.8125rem; font-weight:500; letter-spacing:.04em; }
.map-geo-label.geo-photo > span { font-weight:500; }
.map-geo-dot { position:absolute; width:4px; height:4px; border-radius:50%; background:var(--muted); transform:translate(-50%,-50%); }
.map-geo-leaders { position:absolute; inset:0; width:100%; height:100%; fill:none; stroke:var(--muted); stroke-opacity:.4; stroke-width:1; }
.board-label { position:absolute; bottom:12px; left:16px; font:10px Consolas,monospace; letter-spacing:.15em; color:#382815b8; pointer-events:none; }
.map-pin { position:absolute; width:clamp(64px,7vw,98px); padding:7px 7px 20px; border:0; background:#fffdf5; box-shadow:2px 5px 9px #35211765; transform:translate(-50%,0) rotate(var(--pin-angle,0deg)); transform-origin:50% 0; color:#382b25; z-index:2; }
.map-pin::before { content:""; position:absolute; top:-6px; left:calc(50% - 6px); width:12px; height:12px; border-radius:50%; background:radial-gradient(circle at 35% 28%,#edbeb5 0,#994335 48%,#5e2924 95%); box-shadow:1px 3px 3px #321c1566; z-index:2; }
.map-pin.has-stack::after { content:""; position:absolute; inset:0; z-index:-1; background:#f8efd9; transform:rotate(6deg) translate(3px,3px); box-shadow:2px 3px 5px #35211744; }
.map-pin img { display:block; width:100%; height:clamp(45px,5vw,72px); object-fit:cover; background:#d9d3c7; pointer-events:none; }
.map-pin .pin-count { position:absolute; bottom:4px; right:7px; font:10px Consolas,monospace; color:#735b46; }
.map-pin:hover, .map-pin[aria-pressed="true"] { z-index:3; }
.map-pin:focus-visible { z-index:4; outline:3px solid #803e34; outline-offset:4px; }
.map-footnotes { display:flex; align-items:baseline; justify-content:space-between; flex-wrap:wrap; gap:6px 18px; margin-top:8px; }
.map-instructions { min-width:0; flex:0 1 75ch; color:var(--muted); font-size:.75rem; }
.map-instructions summary { cursor:pointer; padding:4px 0; }
.map-instructions p { line-height:1.8; }
.map-credit { font-size:.6875rem; color:var(--muted); text-align:right; margin:0; }
.map-credit a { text-decoration:underline; text-underline-offset:3px; }
#places-status { margin:20px 0; font-size:.875rem; color:var(--muted); }
.places-empty { text-align:center; padding:46px 20px; }
.places-empty h2 { font:400 1.5rem var(--font-serif); }
.places-empty p { color:var(--muted); line-height:1.8; }
.place-photos { padding:32px 0; }
.place-heading { display:flex; justify-content:space-between; align-items:center; gap:20px; margin-bottom:24px; }
.place-heading > div { min-width:0; }
.place-heading h2 { font:400 1.8rem var(--font-serif); margin:12px 0 0; overflow-wrap:anywhere; }
.place-heading .eyebrow { font: .75rem Consolas,monospace; letter-spacing:.03em; color:var(--muted); }
.place-actions { display:flex; align-items:center; flex-wrap:wrap; gap:12px; flex-shrink:0; }
@media(max-width:600px) { .place-heading { flex-wrap:wrap; } .place-actions { width:100%; justify-content:space-between; } }
@media(max-width:600px) { .places-intro { display:block; } .places-count { margin-top:18px; } .place-heading { align-items:start; } .memory-atlas { padding:14px; } .journey-heading { display:block; } .journey-field { margin-top:12px; } .map-controls { width:100%; justify-content:space-between; } .map-mode .quiet-button { padding:8px; } .map-tools > p { font-size:.75rem; } .map-buttons .quiet-button { padding:8px; } #map-scale { min-width:36px; } .journey-day { padding:8px 3px; } .journey-day strong { font-size:.8125rem; } .journey-days { gap:6px; } }
