CIMLAS
01ABOUT02SERVICES03PORTFOLIO04PROCESS05FAQ06BLOG
CIMLAS BESPOKE SOLUTIONS LLCCONTACT
The Transmission
Mobile web design
Tech & EngineeringApril 11, 20265 min read

What Building My Own Site Taught Me About Mobile-First Development

The gap between "it works on desktop" and "it works everywhere" is bigger than you think — lessons from building CIMLAS Bespoke Solutions in production.

R

Raymond

The irony isn't lost on me.

I build websites for a living. Precision-engineered, custom-coded, no shortcuts. And yet, when I launched CIMLAS Bespoke Solutions, my own site had a horizontal scroll gap on mobile that I couldn't pin down for weeks.

That's the thing about building in public — your standards get tested in real time.

Here's what I learned.

The Problem Nobody Warns You About: The Pinch-Zoom Gap

It started with a simple observation. On desktop, the site looked exactly how I designed it. Clean. Sharp. No overflow. But on mobile — specifically on Android Chrome — users could pinch-zoom out and reveal a ghost column on the right side of the screen.

Not a scroll bar. Not a padding issue. A full invisible overflow zone that made the page feel broken.

I chased it across every component. I checked paddings. I checked max-widths. I reduced clamp values. Nothing fixed it.

The real culprit? Three separate sources, all compounding:

  1. A whiteSpace: nowrap on footer nav links forcing the document wider than the viewport
  2. A Three.js WebGL canvas with 3D perspective transforms painting outside its container bounds
  3. No overflow-x: hidden on the <body> — only on individual sections, which doesn't prevent the document itself from expanding

The fix for #3 was one line in app/layout.tsx:

tsx

<body style={{ overflowX: 'hidden' }}>

One line. Two weeks of intermittent debugging. That's mobile development.

Three.js in a Nav Bar Was a Mistake

I'll be honest — the 3D rotating icons in the nav looked incredible on desktop. An astronaut helmet for the About page. A glowing tech cube for Services. A burnished gold gear for Process. Each one a tiny WebGL canvas, fully lit, slowly rotating.

They also caused hydration mismatches, added 200KB+ to the bundle, and on certain mobile browsers triggered layout shifts that broke the entire nav alignment.

I replaced all five with inline SVGs. The result? Faster load, zero layout issues, and honestly — they still look great. A blue person icon. An orange grid. A purple monitor. A gold star. A green document.

Sometimes the right engineering decision is the simpler one.

clamp() Is the Most Underrated CSS Function

Before this build, I used media queries for responsive padding. Specific breakpoints, specific values, done.

This site changed how I think about it. Every section now uses clamp() for padding:

css

padding: clamp(100px, 15vw, 140px) clamp(20px, 5vw, 48px)

The result is a layout that doesn't snap — it flows. There's no jarring reflow at 768px. The spacing breathes naturally across every screen size, from a 375px iPhone SE to a 1440px desktop.

It's a small thing. But small things compound into polish.

The Alternating Layout Problem

The portfolio page uses an alternating card layout — even cards show image on the left, odd cards show image on the right. It looks great on desktop. On mobile, when the grid collapses to a single column, odd cards were rendering content first and image second — which means users were reading a title and description before they even knew what they were looking at.

The fix was one CSS media query:

css

@media (max-width: 640px) { .card-image { order: -1 !important; } }

Image always comes first on mobile. Content follows. The reading flow makes sense.

What I'd Do Differently

If I were starting over, I'd build mobile-first from day one — not as an afterthought after the desktop version was "done."

I'd also be more disciplined about overflow-x: hidden at the root level early, not after chasing bugs for days.

And I'd think twice before reaching for WebGL in a navigation bar.

The site is better for all of it. Every bug I fixed made me a sharper engineer. That's the value of building your own production system — you can't hide behind a client's acceptance criteria. The only standard is yours.

TAGS

#mobile#nextjs#css#buildinpublic#webdev#website#web design#design#cimlas#how-to#bespoke web design#bespokeweb
← Back to The Transmission