diff --git a/frontend/css/styles.css b/frontend/css/styles.css
index b15b6da..3fe7f16 100644
--- a/frontend/css/styles.css
+++ b/frontend/css/styles.css
@@ -1059,9 +1059,53 @@ select {
height: 100%;
}
-.rec-map {
+.rec-panel {
+ flex-shrink: 0;
+}
+
+.rec-map-wrap {
flex: 1;
- min-height: 300px;
+ min-height: 200px;
+ position: relative;
+}
+.rec-map {
+ position: absolute;
+ inset: 0;
+}
+.gps-placeholder {
+ position: absolute;
+ inset: 0;
+ z-index: 1000;
+ background: url('../img/gps-placeholder.png') center/cover;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+.gps-placeholder-text {
+ background: rgba(0,0,0,0.7);
+ color: var(--on-bg);
+ padding: 12px 24px;
+ border-radius: 8px;
+ font-size: 18px;
+}
+
+/* Landscape: CSS rotation compensates physical rotation.
+ flex-direction stays column: element-bottom = visual-right after rotate.
+ No font-size changes — everything stays portrait-sized, just rearranged. */
+.rec-screen.landscape-right,
+.rec-screen.landscape-left {
+ position: fixed;
+ width: 100vh;
+ height: 100vw;
+ top: calc((100vh - 100vw) / 2);
+ left: calc((100vw - 100vh) / 2);
+ z-index: 9999;
+}
+.rec-screen.landscape-right {
+ transform: rotate(-90deg);
+}
+.rec-screen.landscape-left {
+ transform: rotate(90deg);
}
.rec-stats {
diff --git a/frontend/img/gps-placeholder.png b/frontend/img/gps-placeholder.png
new file mode 100644
index 0000000..4437c5a
Binary files /dev/null and b/frontend/img/gps-placeholder.png differ
diff --git a/frontend/index.html b/frontend/index.html
index 94fce5f..a182061 100644
--- a/frontend/index.html
+++ b/frontend/index.html
@@ -13,6 +13,7 @@
+
@@ -21,6 +22,7 @@
+