From d8364d949a5505737f5c64ea8a5139475359b6ee Mon Sep 17 00:00:00 2001 From: Doxa Maps Date: Mon, 28 Sep 2026 17:21:22 +0000 Subject: [PATCH] Fix two defects in the floating note, one of which I committed broken MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The previous commit did not parse, and I pushed it: check:sfc-parse exited 1 and I read the exit code after the push instead of before it. The gate names this exact cause in its own failure text — a backtick inside the shadow-CSS template literal ends the literal, so everything after it is read as code. I had written the word dark in backticks inside a CSS comment. The gate was right, it was specific, and it was already telling me. The second defect had no symptom a gate could show. The note is a direct child of .legend-sheet-root, and .legend-sheet-root>* re-enables pointer events for every direct child at the same specificity as the note's own rule and AFTER it, so that rule won. The note would have swallowed a map drag across the full width just above the sheet — the precise thing its comment claimed it must never do. Stated now after the rule that would otherwise override it. Both are the same shape: I wrote a claim in a comment and did not check the claim was true of the code beneath it. --- library/components/legends/LegendMobile.vue | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/library/components/legends/LegendMobile.vue b/library/components/legends/LegendMobile.vue index b70e41623..b274bae81 100644 --- a/library/components/legends/LegendMobile.vue +++ b/library/components/legends/LegendMobile.vue @@ -32,10 +32,16 @@ useShadowStyles(` pointer-events:none with the root — nothing here is tappable and it must never eat a map drag. The scrim keeps it legible over an arbitrary basemap without becoming another panel. */ .approx-pin-note--floating{position:absolute;inset-inline:0;bottom:calc(var(--legend-sheet-h,0px) + 6px);z-index:1001;margin:0 10px !important;text-align:center;pointer-events:none;text-shadow:0 1px 2px rgba(255,255,255,0.85);} -/* The note's own text colour flips with `dark`, so the scrim has to flip with it: a white halo - behind light text is a smear, not legibility. Same reason the note takes `dark` at all. */ +/* The note's own text colour flips with the dark prop, so the scrim has to flip with it: a white + halo behind light text is a smear, not legibility. (No backticks in this comment: the whole + block is a JS template literal and a backtick would end it — which is what it just did.) */ .approx-pin-note--floating-dark{text-shadow:0 1px 2px rgba(0,0,0,0.85);} .legend-sheet-root>*{pointer-events:auto;} +/* ...except the floating note. The rule above re-enables pointer events for every direct child of + the root, at the same specificity as the note's own rule and AFTER it, so it was winning and the + note would have swallowed a map drag across the full width just above the sheet. It is text with + nothing tappable in it; stated here, after the rule that would otherwise override it. */ +.legend-sheet-root>.approx-pin-note--floating{pointer-events:none;} /* ── Attribution stays visible (driver bug 2026-09-16) ── The sheet is a bottom overlay, so the engine's bottom-left logo / bottom-right