Skip to content

Commit 0e7c30b

Browse files
committed
fix: mobile view clipping on Samsung S24 Ultra and similar devices
- Add viewport-fit=cover and safe-area insets for curved/notched edges - Add responsive --page-padding (16px on screens ≤480px) - Fix footer nav wrapping with flex-wrap and reduced mobile gap - Apply safe-area-aware padding to Navbar and Footer - Add overflow-x: hidden to prevent horizontal scroll Made-with: Cursor
1 parent bb6c5c8 commit 0e7c30b

File tree

5 files changed

+28
-6
lines changed

5 files changed

+28
-6
lines changed

index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<head>
44
<meta charset="UTF-8" />
55
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
6-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
6+
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
77
<meta name="theme-color" content="#33AAFF" />
88
<title>Ingenium Software Engineering | .NET, React & Azure Development</title>
99
<meta name="description" content="Ingenium Software Engineering delivers software development, architecture and infrastructure solutions. Specialists in .NET, React and Azure." />

src/components/layout/Footer.module.css

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
.footer {
22
background: var(--color-gray-900);
33
border-top: 1px solid var(--border-subtle);
4-
padding: var(--space-12) var(--page-padding);
4+
padding: var(--space-12) max(var(--page-padding), var(--safe-area-inset-right)) max(var(--space-12), var(--safe-area-inset-bottom)) max(var(--page-padding), var(--safe-area-inset-left));
55
color: rgba(255, 255, 255, 0.85);
66
}
77

@@ -39,6 +39,8 @@
3939

4040
.nav {
4141
display: flex;
42+
flex-wrap: wrap;
43+
justify-content: center;
4244
gap: var(--space-6);
4345
}
4446

@@ -60,8 +62,14 @@
6062
}
6163

6264
@media (max-width: 600px) {
65+
.footer {
66+
padding: var(--space-8) max(var(--space-4), var(--safe-area-inset-right)) max(var(--space-8), var(--safe-area-inset-bottom)) max(var(--space-4), var(--safe-area-inset-left));
67+
}
6368
.content {
6469
flex-direction: column;
6570
text-align: center;
6671
}
72+
.nav {
73+
gap: var(--space-3);
74+
}
6775
}

src/components/layout/Navbar.module.css

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77
display: flex;
88
align-items: center;
99
justify-content: space-between;
10-
padding: var(--space-4) var(--page-padding);
10+
padding-block: max(var(--space-4), var(--safe-area-inset-top)) var(--space-4);
11+
padding-inline: max(var(--page-padding), var(--safe-area-inset-left)) max(var(--page-padding), var(--safe-area-inset-right));
1112
background: rgba(255, 255, 255, 0.7);
1213
backdrop-filter: blur(12px);
1314
-webkit-backdrop-filter: blur(12px);
@@ -100,7 +101,7 @@
100101
flex-direction: column;
101102
align-items: stretch;
102103
gap: 0;
103-
padding: var(--space-2) 0;
104+
padding: var(--space-2) max(var(--page-padding), var(--safe-area-inset-right)) var(--space-2) max(var(--page-padding), var(--safe-area-inset-left));
104105
background: var(--surface-0);
105106
border-bottom: 1px solid var(--border-subtle);
106107
box-shadow: var(--floating-shadow);
@@ -116,7 +117,7 @@
116117
opacity: 1;
117118
}
118119
.navLink {
119-
padding: var(--space-4) var(--page-padding);
120+
padding: var(--space-4) max(var(--page-padding), var(--safe-area-inset-right)) var(--space-4) max(var(--page-padding), var(--safe-area-inset-left));
120121
font-size: var(--font-size-md);
121122
border-bottom: 1px solid var(--border-subtle);
122123
}
@@ -146,6 +147,7 @@
146147

147148
@media (max-width: 600px) {
148149
.navbar {
149-
padding: var(--space-3) var(--space-4);
150+
padding-block: max(var(--space-3), var(--safe-area-inset-top)) var(--space-3);
151+
padding-inline: max(var(--space-4), var(--safe-area-inset-left)) max(var(--space-4), var(--safe-area-inset-right));
150152
}
151153
}

src/styles/global.css

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,12 @@
1010

1111
html {
1212
scroll-behavior: smooth;
13+
overflow-x: hidden;
1314
}
1415

1516
body {
1617
margin: 0;
18+
overflow-x: hidden;
1719
font-family: var(--font-sans);
1820
font-size: var(--font-size-body);
1921
font-weight: var(--font-weight-regular);

src/styles/tokens.css

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,10 @@
100100
--space-16: 64px;
101101

102102
--page-padding: 24px;
103+
--safe-area-inset-left: env(safe-area-inset-left, 0px);
104+
--safe-area-inset-right: env(safe-area-inset-right, 0px);
105+
--safe-area-inset-top: env(safe-area-inset-top, 0px);
106+
--safe-area-inset-bottom: env(safe-area-inset-bottom, 0px);
103107
--card-padding: 16px;
104108
--section-gap: 64px;
105109
--content-max-width: 1200px;
@@ -159,3 +163,9 @@
159163
--danger-bg: rgba(240, 68, 56, 0.18);
160164
--danger-fg: #FDA29B;
161165
}
166+
167+
@media (max-width: 480px) {
168+
:root {
169+
--page-padding: 16px;
170+
}
171+
}

0 commit comments

Comments
 (0)