diff --git a/explorer.qmd b/explorer.qmd index 90bc34a..3a4b93f 100644 --- a/explorer.qmd +++ b/explorer.qmd @@ -67,36 +67,93 @@ format: min-height: 0; aspect-ratio: auto; } + /* Slim top-right search overlay (Hana Figma node 222:456). The earlier + multi-row treatment (M-1A, PR #200) ate ~480px × ~100px on the left + side of the map; this collapses to one row at the right. The + Cesium toolbar is still at top-left (left:5px), so positioning at + top-right keeps both surfaces clear of each other. */ .map-search-overlay { position: absolute; top: 8px; - left: 50px; /* clear of Cesium toolbar column at left: 5px */ - width: min(480px, calc(100% - 60px)); + right: 8px; z-index: 1000; + display: flex; + align-items: center; + gap: 4px; background: rgba(255, 255, 255, 0.94); backdrop-filter: blur(4px); - padding: 8px 10px; + padding: 0 4px; border-radius: 6px; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); - display: flex; - flex-direction: column; - gap: 6px; + height: 32px; /* slim row; Figma 222:456 target is ~28 + 4 chrome */ + box-sizing: border-box; + } + .map-search-overlay input[type="text"] { + width: 260px; + max-width: 100%; + height: 24px; + padding: 0 8px; + border: 1px solid #ccc; + border-radius: 4px; + font-size: 13px; + outline: none; + background: white; + box-sizing: border-box; } - .map-search-overlay .search-results { color: #333; } - @media (max-width: 900px) { - /* Keep the overlay clear of the vertical Cesium toolbar column at - left: 5px. Don't switch to left: 8px here — that overlaps the - toolbar hit targets at narrow widths. */ - .map-search-overlay { - width: calc(100% - 58px); - } + .map-search-overlay input[type="text"]:focus { + border-color: #1565c0; + box-shadow: 0 0 0 2px rgba(21, 101, 192, 0.15); + } + .map-search-overlay #searchSubmitBtn { + background: #1565c0; + color: white; + border: none; + width: 24px; + height: 24px; + border-radius: 4px; + cursor: pointer; + display: inline-flex; + align-items: center; + justify-content: center; + padding: 0; + font-size: 14px; + box-sizing: border-box; + flex-shrink: 0; + } + .map-search-overlay #searchSubmitBtn:hover { background: #0d47a1; } + .map-search-overlay #searchSubmitBtn:focus-visible { + outline: 2px solid #0d47a1; + outline-offset: 2px; + } + /* Scope buttons + help paragraph are preserved in the DOM (handlers in + zoomWatcher / search wiring bind by id) but hidden in the slim + layout. Area-scoped search is still reachable via `?search_scope=area` + URL hydration, which calls doSearch('area') on boot. */ + .map-search-overlay .search-actions, + .map-search-overlay .search-help { display: none; } + /* The aria-live results-count line sits just under the overlay at the + same right edge. Hidden visually when empty so it doesn't add a + blank strip; aria-live still announces. */ + .map-search-results-line { + position: absolute; + top: 46px; + right: 8px; + max-width: 340px; + z-index: 1000; + font-size: 12px; + color: #333; + background: rgba(255, 255, 255, 0.92); + backdrop-filter: blur(4px); + padding: 3px 8px; + border-radius: 4px; + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.12); + } + .map-search-results-line:empty { display: none; } + @media (max-width: 600px) { + .map-search-overlay input[type="text"] { width: 160px; } } @media (max-width: 400px) { - /* At iPhone-SE-ish widths the two scope buttons would otherwise - overflow because of their nowrap labels. Stack them vertically. */ - .map-search-overlay .search-actions { - flex-direction: column; - } + .map-search-overlay input[type="text"] { width: 120px; } } /* Display-only color legend at bottom-center of the map. The functional source filter (toggle/show-hide) lives in #sourceFilter in the side @@ -401,20 +458,32 @@ Circle size = log(sample count). Color = dominant data source.
+
- -
- - -
-
-Searches labels, descriptions, and place names. First search can take 10-15 seconds while data loads; subsequent searches are faster. -Tracking issue: faster substrate FTS in progress. + + + + -
+
+