1{{/*2 dock — the panel beside the map: what the map is drawing, why the count is3 what it is, the shortlist a reader can jump from, and the card.45 The card is nested rather than beside because that is where it belongs on6 screen, and it is its own region because it is its own swap: `select` moves7 the card and the list, and a re-render of the dock carries the card with it8 so the two can never disagree about what is open.9*/}}10{{define "dock"}}<aside id="atlas-dock" class="dock{{if not .Dock.Open}} is-folded{{end}}">11 <button type="button" class="dock-readout" id="dock-fold"12 aria-expanded="{{.Dock.Open}}" aria-label="{{.Dock.FoldLabel}}" title="{{.Dock.FoldLabel}}"13 hx-post="/session/dock"14 hx-vals:append='{"open":"{{if .Dock.Open}}0{{else}}1{{end}}","byHand":"1"}'>15 <span id="dock-count">{{.Dock.Count}}</span>16 <span class="dock-flag" id="dock-flag"{{if not .Dock.Flag}} hidden{{end}}{{with .Dock.FlagTitle}} title="{{.}}"{{end}}>{{.Dock.Flag}}</span>17 <span class="dock-fold" aria-hidden="true"><svg viewBox="0 0 16 16"><path d="m6 3 5 5-5 5"/></svg></span>18 </button>19 <span class="dock-rail-label" aria-hidden="true">Locations<span class="dock-rail-name" id="dock-rail-name"{{if not .Dock.RailName}} hidden{{end}}> · {{.Dock.RailName}}</span></span>20 <div class="dock-body">21 <div class="dock-results" id="dock-results">22 {{if .Dock.Empty}}<p class="search-empty">{{.Dock.Empty}}</p>{{end}}23 {{range .Dock.Rows}}<button type="button" class="search-result{{if .Selected}} is-selected{{end}}"24 {{if eq .Kind "point"}}data-location="{{.ID}}"{{else}}data-zone="{{.ID}}"{{end}}25 style="--pin-color: {{.Color}}"26 hx-post="/session/select" hx-vals:append='{"feature":"{{.ID}}","focus":"1"}'>27 <span class="result-dot" style="background: {{.Color}}">{{.Glyph}}</span>28 <span><strong>{{.Title}}</strong><small>{{.Collection}}{{if .Group}} · {{.Group}}{{end}}</small></span>29 </button>30 {{end}}31 {{if .Dock.Note}}<p class="dock-note">{{.Dock.Note}}</p>{{end}}32 </div>33 {{template "detail" .}}34 </div>35</aside>36{{end}}