diff --git a/nextjs-app/components/SchoolDetailView.module.css b/nextjs-app/components/SchoolDetailView.module.css
index 375ad3c..173ad28 100644
--- a/nextjs-app/components/SchoolDetailView.module.css
+++ b/nextjs-app/components/SchoolDetailView.module.css
@@ -87,6 +87,36 @@
background: #fff;
}
+/* Full label by default; phones over the map get an icon-only button
+ (same compact treatment as the section-nav compare icon). */
+.btnCompareGlyph {
+ display: none;
+}
+
+@media (max-width: 640px) {
+ .headerHasMap .actions .btnCompareLabel {
+ display: none;
+ }
+
+ .headerHasMap .actions .btnCompareGlyph {
+ display: inline;
+ }
+
+ .headerHasMap .actions .btnAdd,
+ .headerHasMap .actions .btnRemove {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ flex: none;
+ width: 40px;
+ height: 40px;
+ padding: 0;
+ border-radius: 999px;
+ font-size: 1.375rem;
+ line-height: 1;
+ }
+}
+
/* Inline "View on map ↗" trigger next to the address. */
.mapLink {
border: none;
diff --git a/nextjs-app/components/SchoolDetailView.tsx b/nextjs-app/components/SchoolDetailView.tsx
index 4fb42ec..b15dc4a 100644
--- a/nextjs-app/components/SchoolDetailView.tsx
+++ b/nextjs-app/components/SchoolDetailView.tsx
@@ -373,8 +373,15 @@ export function SchoolDetailView({
diff --git a/nextjs-app/components/SchoolHeroMap.module.css b/nextjs-app/components/SchoolHeroMap.module.css
index 4d06206..1dbb553 100644
--- a/nextjs-app/components/SchoolHeroMap.module.css
+++ b/nextjs-app/components/SchoolHeroMap.module.css
@@ -16,6 +16,17 @@
}
}
+/* Preview: move the OSM attribution off the bottom edge, where the school
+ title slides up under the fade — top-left is the band's only quiet corner
+ (Compare floats top-right). Fullscreen keeps Leaflet's default bottom-right,
+ since the zoom control occupies the top-left there. */
+.wrapper:not([data-fullscreen]) :global(.leaflet-bottom.leaflet-right) {
+ top: 0;
+ left: 0;
+ right: auto;
+ bottom: auto;
+}
+
/* Fullscreen: the Fullscreen API promotes this element to fill the viewport. */
.wrapper[data-fullscreen] {
height: 100vh;
diff --git a/nextjs-app/components/SecondarySchoolDetailView.module.css b/nextjs-app/components/SecondarySchoolDetailView.module.css
index c188fda..75daa41 100644
--- a/nextjs-app/components/SecondarySchoolDetailView.module.css
+++ b/nextjs-app/components/SecondarySchoolDetailView.module.css
@@ -87,6 +87,36 @@
background: #fff;
}
+/* Full label by default; phones over the map get an icon-only button
+ (same compact treatment as the section-nav compare icon). */
+.btnCompareGlyph {
+ display: none;
+}
+
+@media (max-width: 640px) {
+ .headerHasMap .actions .btnCompareLabel {
+ display: none;
+ }
+
+ .headerHasMap .actions .btnCompareGlyph {
+ display: inline;
+ }
+
+ .headerHasMap .actions .btnAdd,
+ .headerHasMap .actions .btnRemove {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ flex: none;
+ width: 40px;
+ height: 40px;
+ padding: 0;
+ border-radius: 999px;
+ font-size: 1.375rem;
+ line-height: 1;
+ }
+}
+
/* Inline "View on map ↗" trigger next to the address. */
.mapLink {
border: none;
diff --git a/nextjs-app/components/SecondarySchoolDetailView.tsx b/nextjs-app/components/SecondarySchoolDetailView.tsx
index 0f9d87f..7180594 100644
--- a/nextjs-app/components/SecondarySchoolDetailView.tsx
+++ b/nextjs-app/components/SecondarySchoolDetailView.tsx
@@ -292,8 +292,15 @@ export function SecondarySchoolDetailView({