ProgrammerKhaled
ServicesProcessPricingContact Now
عالعربيةENEnglish
2026FEED2026
Menu2026
01Services02Process03Pricing04Contact Now
عالعربيةENEnglish
FEED
Case study

WETHAQ

A page that shows a law firm's thinking — not just lists it

Wethaq — Advocates & Consultants, Riyadh. A new firm with no office to photograph and no stock imagery: one page, ten sections, Arabic as the primary language rather than a translation layer, and every section shaped like the thinking it carries.

Visit live site
Role
Design & build
Sector
Law firm — Riyadh
Scope
One page · ten sections
WETHAQ

The diagnosis

Three people independently said a version of the same thing: “it reads like a newspaper”, “it feels like scrolling a Word document” — and none could say why. So I stopped arguing and measured the page: 5,014 characters with zero images, 1.15:1 contrast between two supposedly alternating grounds, and six of six sections at exactly 1430px wide. The page had one shape, repeated six times — which is why it read as one long article no matter how the words changed.

The idea & execution

01

A section's shape is its thinking

Six client situations are parallel entry points, not a sequence. Six possible answers are branches, not a list. Five commitments accumulate. Twenty-four services are a register. Four kinds of thinking — four different shapes.

02

Drawer, doors, register

Situations pull sideways like files in a drawer as you scroll. The six answers are doors; the sixth — “no action at all” — is drawn as an absence: no fill, a dashed hairline. Services read as ruled rows, like a real ledger.

03

The spine

A single rule runs the full height of the page and changes character with each chapter it crosses — solid, dashed, ticked. The least visible piece of the build, and the one doing the most work: it turns variety into structure.

Tech stack:Next.jsGSAPTailwind v4AVIF

What Arabic-first actually costs

Nominal size isn't reading size

An Arabic word body sits at 40% of the em; a Latin x-height is 48%. So 18px of Arabic reads about three sizes smaller. Both reading steps went up a notch.

In RTL, scrollLeft runs negative

Browsers only recently agreed on that. Every position in the horizontal track is derived from element rectangles instead — direction-agnostic, no branching.

Logical and physical don't mix

translate is physical, inset is logical. Together they work in LTR and quietly break in RTL. Caught by measuring a “centred” element and finding it off-centre.

Measured, not asserted

The working rule: a design claim is worth what its measurement is worth. It caught things review never would have.

What was believedWhat it measuredAfter
Section headings look inconsistentA 2.2× spread (40 → 88px) — the largest outranked the page title45 → 60px
The index numeral is decorative2.79:1 — an AA failure6.10:1
The margin rule is faint on dark1.00:1 — it did not exist on three screens1.97:1
One paragraph runs a little long156 characters on a line, against 43–79 elsewhere52

What shipped

100KB
Total webfont weight — three weights, both languages
44KB
Largest image at 1920px, served as AVIF
4
Distinct section anatomies, from one

Inside the page

01Practice areas — the ruled register
Practice areas — the ruled register
02Why Wethaq — how we make the difference
Why Wethaq — how we make the difference
03Contact & close
Contact & close

Lots of content, and a page that reads like a Word doc?

Let's give each section the shape its thinking deserves — and measure the difference instead of claiming it.

Tell me about your project
Back to process

From zero to a real site

Process
  • Services
  • Process
  • Pricing
  • Contact Now
Hire me now
See my code
Let's connect
Behind the scenes
Direct chat
  • Upwork
  • GitHub
  • LinkedIn
  • Instagram
  • WhatsApp
  • Privacy Policy
  • Terms of Use

© 2026 KHALED

2026 KHALED FULL STACK ENGINEER ©