.places-card{margin-top:24px}.places-canvas{position:relative;width:100%;aspect-ratio:16/9;background:#000;cursor:crosshair;overflow:hidden;border-radius:12px;touch-action:manipulation}.places-canvas>img{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none}.places-pins{position:absolute;inset:0;pointer-events:none}.place-pin{position:absolute;transform:translate(-50%,-50%);width:32px;height:32px;border-radius:50%;border:2px solid white;background:#254536;color:white;font-size:12px;font-weight:700;pointer-events:auto;padding:0}.place-pin[aria-pressed=true]{background:var(--accent);color:#16220b;box-shadow:0 0 0 5px #cef36b40}.places-edit{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:20px}.places-edit label{flex:1 1 260px;margin:0}.places-list{display:flex;gap:8px;flex-wrap:wrap}.places-list button{max-width:100%;overflow-wrap:anywhere;white-space:normal}.places-list [aria-pressed=true]{border-color:var(--accent);color:var(--accent)}
.viewer-places{position:absolute;pointer-events:none;z-index:6;overflow:hidden}.viewer-place{position:absolute;width:0;height:0}.viewer-place:after{content:'';position:absolute;width:8px;height:8px;left:-4px;top:-4px;background:#cef36b;border:1px solid #fff;border-radius:50%;box-shadow:0 1px 5px #000}.viewer-place span{position:absolute;bottom:10px;left:0;transform:translateX(-50%);width:max-content;max-width:min(180px,40vw);padding:5px 8px;border-radius:7px;border:1px solid #b3d960;background:#142119ed;color:#f4f9ed;font:600 clamp(10px,1.1vw,14px)/1.3 system-ui,sans-serif;overflow-wrap:anywhere;box-shadow:0 2px 8px #0004}.viewer-place.align-left span{transform:none}.viewer-place.align-right span{transform:translateX(-100%)}.viewer-place.label-below span{bottom:auto;top:10px}
.viewer .archive-tools .places-toggle{font:600 14px/1.2 system-ui,sans-serif;white-space:nowrap;padding:8px 13px;min-height:40px;border-radius:8px}.viewer .places-toggle[aria-pressed=true]{color:var(--accent);border-color:var(--accent);background:#182518}
@media(max-width:1200px),(max-height:500px){.viewer .archive-tools{max-width:calc(100% - 24px);flex-wrap:wrap;justify-content:flex-end}.viewer .archive-tools .places-toggle{font-size:12px;min-height:44px;padding:8px 10px}}

/* Labels are arranged around their original pins; connector lines preserve location. */
.viewer-place>i{position:absolute;left:0;top:0;height:1px;background:#cef36bb3;transform-origin:left center;box-shadow:0 0 2px #000}
.viewer-place>span{z-index:1}
.viewer-place.place-collapsed{width:16px;height:16px;margin:-8px;pointer-events:auto;cursor:help}
.viewer-place.place-collapsed:after{left:4px;top:4px}
.viewer-place.place-collapsed>span{visibility:hidden}
.viewer-place.place-collapsed>i{visibility:hidden}
.viewer-place.place-collapsed:hover>span,.viewer-place.place-collapsed:focus>span{visibility:visible}
.viewer-place.place-collapsed:hover,.viewer-place.place-collapsed:focus{z-index:10}

/* Pins stay above labels and connector lines. */
.viewer-place:after{z-index:3}

/* Gradual reveal, matching the city overlays; space for labels is reserved in the sky. */
.viewer-place{opacity:0;visibility:hidden;transition:opacity .45s ease;pointer-events:none}
.viewer-place.place-visible{opacity:1;visibility:visible}
@media(prefers-reduced-motion:reduce){.viewer-place{transition:none}}
