Diamond StoneDiamond StoneAll plans

Diamond Stone Platform: Design

Scope note (11 November 2026): this document governs the staff app (and the driver's and logistics company's screens). The public website and the client portal have their own look, set out in docs/SITE-DESIGN.md. They share the brand (logo, colours, typefaces, words) but not the shell, glass, cards or pills.

Date: 2026-11-11. Revision 8. Status: draft for owner review. Companion to docs/PLAN.md and docs/SCREENS.md.

Revision 8: the Halo is one band at the very top of the screen, above the title; the drawer is that band grown downward; pulling the band down shows everything (section 7).

Revision 7: proportion and grouping fixed after the screens looked stretched; laws of UX applied; each screen reviewed (section 4, "Proportion and grouping").

Revision 6: every element made smaller, with two size sets and the pixel facts behind them (section 4, "Sizes"). Each role's screens are in docs/ROLES.md.

Revision 5: logo, colours, typefaces and wording now come from docs/BRAND.md, which takes precedence over sections 3, 5 and 12 here: Orbitron and Rajdhani replace Inter and Instrument Serif; teal #008A8A and graphite #525862 replace the earlier accent.

Revision 4: Halo on every signed-in screen, the drawer grows from its ring (section 7); the mistakes AI-designed interfaces make and the guard against each (section 15).

Revision 3: rules for condensing every screen (section 10): picture before shape before icon before words, three text levels, no question headings, a word budget per screen.

Revision 2: Halo, Halo drawer, Stream and Omnibar restored as one shell on every screen; cards designed from the person's question.

This document sets how the app looks, reads, moves and is checked. It is built on six research passes: Apple's Liquid Glass, the full Apple Human Interface Guidelines, published evidence on interface quality, evidence on visual-first design, typography and viewing research, and the earlier DiyaOS design work. Sources are listed in section 19.

A live sketch of everything here is in docs/ui-shell-mockup.html.

1. Basis

What the evidence says, in five lines

  1. Simple and familiar wins. People judge a screen in a fraction of a second, and screens that are visually simple and conventionally laid out are rated far higher. Novelty belongs in the stone photography, colour and type, not in navigation, forms or tables.
  2. Visual plus a few words, not visual instead of words. Icons with a short label, charts with a one-sentence headline, and exact figures for money are the forms that work. Lone icons, decoration and animated data are where visuals hurt.
  3. Navigation must be visible. In one study, hidden navigation was used 57% of the time against 86% when visible, and tasks were slower.
  4. Good looks buy patience, not usability. Polish matters most on the public site and a customer's first visit. For staff using it all day, speed and clarity come first.
  5. Much popular design advice has no evidence behind it (thumb-zone maps, the 60-30-10 colour rule, the golden ratio). It is not used here as a rule.

The design language

The app follows the ideas behind Apple's Liquid Glass. Most of them are layout and behaviour rules that work on any phone, whatever the surface looks like:

  1. Two layers: content underneath, a thin floating layer of controls above it.
  2. Glass belongs only to the floating layer. Never in content, never glass on glass.
  3. Content runs edge to edge beneath the controls and fades softly under them; no solid bars.
  4. Controls are capsules. Nested shapes share a centre: inner radius = outer radius minus padding.
  5. One tinted primary action per screen; every other control is neutral.
  6. Colour lives in the content, not the controls.
  7. Things open from their source: a sheet or menu grows out of the button that opened it.
  8. Controls come alive only while touched.
  9. Things appear by forming (scale and opacity together), not by a plain fade, and change state by morphing rather than cutting.
  10. Titles are bold and start-aligned.
  11. The person stays in charge of the effect: a solid option is always available.

What is not taken from Apple: the name "Liquid Glass", the San Francisco font, SF Symbols icons, and any Apple artwork. Those are licensed for Apple platforms only.

2. How people hold and see the phone

Fact Number What it means here
Viewing distance 30 to 40 cm; people over about 42 hold it near 39 cm Sizes are checked at 40 cm
Physical size of one CSS pixel 0.183 mm on both phones (if the A55 is 384 px wide) A size looks the same on both
Smallest comfortable text Letter height of 1.4 mm at 40 cm 16 px body passes with margin; 14 px has none; 12 px fails at 40 cm
Reading on the move Attention comes in bursts of a few seconds Each row must be understood in one glance
Grip Under half hold one-handed; people shift grip often and touch the centre most accurately Larger targets at edges and corners
Light text on dark Harder to read for young and old alike, worst in dim rooms Light theme is the default
Bright sun Reflections dominate; thin strokes vanish No light weights; 7:1 contrast on key figures

3. Type

Fonts

Use Font Notes
Interface, and every digit Rajdhani All text: body, labels, tables, figures and screen titles (owner, 11 November 2026; section 4)
Arabic IBM Plex Sans Arabic, weights 400 and 600 Limited to Arabic letters so digits always come from Rajdhani; enlarged to sit level with Rajdhani (amount to be set on the phones)
Wordmark only Orbitron Never for titles or text in the staff app. The website and portal set their own type in docs/SITE-DESIGN.md

All three are open-licence. Samsung phones would otherwise fall back to Roboto.

Scale

Role Size Line height Weight In Arabic
Display (public) Set in docs/SITE-DESIGN.md
Screen title 24 30 600 Line height 36
Section title 20 26 600 Line height 30
Card title 17 24 600 Line height 28
Body 16 24 400 Line height 28
Dense row 15 22 500 Line height 24
Secondary 14 20 400 Line height 24
Caption 12 16 500 13, line height 20
Small label, capitals 12 16 600, spaced 13, no capitals, no spacing
Key figure 28 to 32 34 600 Same digits
Money in rows 16 24 500 Same digits

Numbers and money

Arabic

No letter spacing, no italics, no capitals; emphasis by weight 600 or colour. Numbers, record numbers and amounts stay left-to-right inside Arabic text.

Loading

Fonts are served from our own address and cached on the phone. Budget: 48 KB for English, 91 KB for Arabic, 21 KB more for the display face. Text shows at once in a matching fallback so nothing jumps when the font arrives.

4. Layout

Item Value
Side margin 16 px in the staff app; 20 px in the portal and public site
Grid 4 columns, 16 px gap
Spacing steps 4, 8, 12, 16, 20, 24, 32, 40, 48, 64
Corners 8 (inputs, thumbnails), 16 (cards), 28 (sheets), and full capsule (controls, chips)
Touch target 48 px minimum; 56 px or more at edges and corners
Row height 64 to 72 px comfortable; 52 to 56 px compact (finance lists)
Space rule The gap inside a group is at most half the gap between groups
Dividers Only in dense tables; elsewhere, space does the grouping

Screen budget

Galaxy S25 Galaxy A55 5G
Usable height, installed About 700 px About 750 px
Top bar 48 (Compact) 48
Halo strip 62 on Home; 32 elsewhere Same
Omnibar 56 56
Left for content About 500 px on home, 580 elsewhere About 550 and 630

Fixed controls never take more than a quarter of the screen. With the keyboard open the Omnibar hides, and the field, its label, any error and the action stay visible.

Sizes (revision 6: everything was too large)

The owner found every element oversized. Measuring the sketch confirmed it: avatars and icon circles were 52 px, list rows about 80 px, cards had 20 to 22 px corners with 16 px padding, and the fixed bars (status bar, top bar, Halo, Omnibar) took about a third of a record screen. The text sizes were roughly right; the containers were not.

Two separate causes.

  1. The elements really were too big. Business apps used all day run denser than consumer apps. Design systems that publish both sets (SAP Fiori "cozy" and "compact", IBM Carbon, Salesforce) keep the text the same and shrink the controls and spacing.
  2. A phone sketch on a monitor looks 30 to 50 % bigger than the phone. The Galaxy S25 packs about 139 CSS pixels into an inch; a monitor shows about 92 to 109. A 360 px frame is 66 mm wide on the S25 and 84 to 100 mm on a monitor. The sketch now has a True size control: hold the phone against the screen and adjust until the frames match. Sizes are judged on the phone or in True size, never at 100 % on a monitor.

The touch area and the visible element are different things. A finger needs about 9 mm (48 px). The thing drawn can be much smaller, with invisible padding making up the touch area. Google's own guidance draws a 24 px icon inside a 48 px target. The earlier sketch made the drawn element as big as the touch area; that is what made it look heavy.

Pixel facts for the two phones

Galaxy S25 Galaxy A55 5G
Panel 6.2 in, 1080 × 2340, about 416 pixels per inch 6.6 in, 1080 × 2340, about 390 pixels per inch
Page size a web app gets 360 × 780 Reported as 412 × 892 (one database); earlier assumed 384 × 832. Read it from the real phone in Stage 0
One CSS pixel 0.183 mm 0.171 mm if the page is 412 wide
48 px 8.8 mm 8.2 mm

If the A55 is 412 wide, everything is about 7 % physically smaller on it than on the S25, so the comfortable set is checked on the A55 first.

Two size sets, one design. Office roles get Compact. Roles that work standing, outdoors or with gloves (warehouse, drivers) get Comfortable. Any user can switch in Me → Appearance. Text size follows the phone's own font-size setting in both.

Element Was Compact Comfortable
Top bar 56 48 52
Screen title (Rajdhani, bold) 17 15 16
Body and values (Rajdhani) 16 15 / 20 16 / 22
Caption 14 13 (never under 12) 14
Key figure 28 22 to 24 28
Halo ring, full / compact 48 / 36 40 / 28 48 / 36
List row, two lines about 80 56 68
Avatar 44 to 52 36 44
Icon 24 20 24
Icon circle 52 36 44
Ring gauge 52 40 48
Chip 24 20 to 22 drawn 28
Button 48 40 48
Omnibar 64 56 64
Omnibar round buttons 56 44 52
Main action 56 48 56 (the driver's next step: 92)
Card padding 14 to 16 10 to 12 14 to 16
Card corner 20 to 22 16 20
Gap between cards 12 8 12
Side margin 16 14 16
Touch area, every control 48 44 at least, 8 apart 48 at least; 56 for the main action

Rules

What the change did in the sketch: content on a record screen starts 121 px from the top instead of 153; the order record shows four more rows; the owner's Home shows cash, receivables and payables, four promise rings and the month's figures above the first order card.

Not established: no published measurements were found for well-known apps' row heights; the claim that large elements "look cheap" is practitioner opinion, not a study. The size sets must be confirmed with the staff on their own phones (section 16).

Sources: Android accessibility guidance on touch targets (support.google.com/accessibility/android/answer/7101858); WCAG 2.2 target size (w3.org/WAI/WCAG22/Understanding/target-size-minimum); Nielsen Norman Group on touch targets and on content against chrome (nngroup.com/articles/touch-target-size, nngroup.com/articles/mobile-ux); Parhi, Karlson and Bederson 2006 on thumb targets; Material density (m2.material.io/blog/material-density-web); IBM Carbon button sizes; SAP Fiori cozy and compact; font metrics from the Capsize collection; Legge and Bigelow 2011 on legible letter size; device figures from yesviz.com.

Proportion and grouping (revision 7: everything looked stretched)

After the sizes were reduced the owner found the screens stretched and unfriendly. The elements had shrunk but were still laid out for the full width, so small things floated far apart. Each screen was inspected at full size and judged as a layout designer, a typographer and an interface designer would. What was wrong, the principle it breaks and the fix:

What was wrong Principle Fix, now in the sketch
Three small items each centred in a third of the width, with a caption floating beneath Proximity: things far apart read as unrelated (Nielsen Norman Group; Gestalt) Each cell is left-aligned. A ring or icon sits beside its caption; a figure sits directly above its caption. Four items become two rows of two
Stage dots pulled edge to edge by long connecting lines Uniform connectedness: joined items should read as one compact object Dots sit together with short joins. They spread only when each has a label beneath it
Thin progress bars and trend lines as wide as the card A mark should be as large as its meaning, not as its container Bars capped at about 130 px; a trend line is a small mark beside its figure
A caption pushed to the far right of its icon ("to us") Label next to what it labels; one left edge for the eye Caption sits beside the icon. Only number columns, a status chip or a chevron sit on the right
Every block its own full-width white rounded box, all the same weight Similarity and common region: identical boxes read as one grey mass; a boundary should enclose one subject The picture, its facts and its total join into one surface. Homogeneous rows (orders, people, reveal rows, checklist steps) share one surface with hairlines. Cards are kept for things that genuinely differ
The wide Orbitron titles beside the narrow Rajdhani text Type pairing: contrast on one axis, not a fight between very wide and condensed Screen titles are set in the body face, bold. Orbitron is kept for the wordmark and the website's stone names
Figures looked loosely spaced Tabular figures are for columns Proportional figures in text and headings; tabular only in aligned columns
Omnibar's four controls spread evenly across the bar Fitts: frequent targets together, where the thumb rests The place stays left; Add, Scan and Search sit together on the right

Layout rules added

  1. Space inside a group is at most half the space between groups: 2 to 4 px label to value, 8 px related items, 10 to 12 px between groups in a surface, 16 px or more between surfaces.
  2. One left edge per surface. Nothing is centred except a single icon in a circle, an empty state, or a sign-in screen.
  3. Left and right ends of a row are used only when the right-hand item is a number column, a status or a chevron.
  4. A control is as wide as its content. One full-width button per screen at most: the Omnibar action.
  5. A list of like things is a list: one surface, hairlines, no gaps. A card is for a single subject, and never sits inside another card.
  6. At most two levels: the page, and a surface on it.
  7. Content starts at the top. Space left at the bottom stays empty; nothing is stretched to fill it.
  8. The squint test: with eyes half closed, a screen shows three or four groups, not a ladder of equal boxes.

The laws of UX, as applied here

Law Applied as
Fitts Touch areas of 44 to 48 px; frequent actions grouped at the bottom
Hick One main action per screen; Add offers at most six choices
Miller, chunking A record is three or four groups, not a dozen loose facts
Jakob List rows, back, bottom actions behave as in the apps people already use
Tesler The app works out status and next step; the person does not
Doherty Every tap answers within 400 ms, with a skeleton if data is still coming
Aesthetic-usability A screen that looks cared for is trusted more; proportion is not decoration
Von Restorff One accent on a screen: the thing that needs attention
Serial position The identifying fact first in a row, the action last
Zeigarnik, goal-gradient Stage dots and close rings show progress already made
Peak-end Sending a quote, a signed delivery and a closed month get a finished, calm end state
Occam A box, line or label that does no work is removed
Proximity, similarity, common region, connectedness The table and rules above

Evidence is strong for Fitts, proximity, similarity, common region, Von Restorff and serial position. Hick, Jakob, Tesler, Occam and Pareto are working rules of thumb rather than measured laws.

Typeface decision (owner, 11 November 2026): keep Rajdhani for all text. Both brand typefaces were designed as display faces, and a separate text face for small labels and data was offered and declined. Rajdhani therefore carries body, labels and tables. Because it was not drawn for small sizes: nothing that must be read is under 13 px, captions use weight 500, and its legibility in long tables and outdoors on the A55 is a named check in section 16.

Each screen, reviewed

Screens Purpose What was wrong Now
Home (all roles) What needs me, in order A ladder of equal cards; figures centred in thirds Blocks joined by subject; figures left-aligned; one order card
Halo drawer Decide in one look Three centred islands A tight row of ring, tick and amount
Quote, Order, Enquiry, Customer, Invoice, Payment, Claim The subject, its state, its total Hero, facts, total and stages as four separate boxes One summary surface; stages compact; reveal rows as one list
Shipment, Supplier order, Lot Where it is, what is left Same, plus dots not matching their labels Dots align with their labels; details as one list
Orders, Inbox, Cases, Receivables, Promises, Close, Audit pack, Automatic messages Scan and compare Each row a separate card with a gap One list surface with hairlines
Stock grid, Shipments map Browse by picture Sound Unchanged
Quote builder, Review, Journal, Bank Enter and confirm Summary figures centred Left-aligned; fields unchanged
Money, Statement, VAT, Figure to paper Read figures Trend line stretched; trail of four steps pulled across the card Trend beside the figure; trail compact
Sign-in screens One step Centred by intent Unchanged, apart from the strip on the passkey screen
Driver, Warehouse One next step, large Sound for their conditions Unchanged
Portal, website Reassure, then act Stages stretched Since redrawn in their own look, without the app's cards, chips or stage dots (docs/SITE-DESIGN.md)

Still weak, not yet fixed: many screens are short and leave the lower half empty, which is correct but shows there is room for the next most useful content on several (for example recent activity on a customer). The sign-in and help screens have had the least design attention. Dark mode, Arabic and the A55 have still not been reviewed.

Sources: lawsofux.com; Nielsen Norman Group on proximity, common region, form spacing, cards, the F-pattern and layer-cake scanning (nngroup.com/articles/gestalt-proximity, /common-region, /form-design-white-space, /cards-component); Richard Rutter on table typography (alistapart.com/article/web-typography-tables); Refactoring UI, "Labels are a last resort"; Butterick's Practical Typography on letterspacing, figures and line length; Steven Hoober on how people hold phones (uxmatters.com, 2013 and 2017); the Orbitron and Rajdhani project descriptions (github.com/theleagueof/orbitron, github.com/itfoundry/rajdhani).

Cards and images

5. Colour

Ninety per cent neutral, one accent, four status colours. The stone photography carries the colour.

Token Light Dark Use
Background #F6F4EF #0F1114 Page
Surface #FFFFFF #191C21 Cards; lighter than the page in dark mode
Sunk #ECE8E0 #22262C Wells, tracks
Ink #17191C #F2F0EB Text
Muted ink #5F646B #A2A7AE Secondary text
Line #E2DDD4 #2D3138 Hairlines
Accent (teal) #006F73 Not set: no dark palette is defined yet (docs/BRAND.md section 2) The one primary action; selected state
Good #1F7A54 #6CC39B Done, paid
Warning #A25F00 #E0A84E Needs attention
Problem #B3402E #E88674 Blocked, overdue
Info #2A5F8F #7FB0DC Neutral notice
Urgent (Halo level 3) #D98A00 #F0B03C A customer promise about to be missed

Rules:

6. Surfaces and glass

Where glass goes

Only on the floating layer: the Omnibar, sheet tops, and the Halo strip once content scrolls under it. Cards, lists, tables and forms are solid.

How it is drawn

Property Rule
Tint Strong enough that text on it keeps 4.5:1 over the brightest and the darkest content that can pass beneath. Starting point 72%; measured, not assumed
Blur About 12 px with a slight colour boost. Fixed; never animated
Edge One fine light line along the top edge, one soft shadow below. Nothing else
Under the bar Content fades softly as it nears the bar, so text never sits under text
Count At most two glass surfaces at once on the S25; one on the A55
Sheets Glass at half height; solid when pulled to full height
While moving On the slower phone a surface turns solid while it animates, then returns to glass
Pressed A soft glow under the finger and a slight shrink

Quality levels

Set per device by the test described in docs/PLAN.md section 7.

Level Surface Expected on
3 Glass with light bending at the edges Galaxy S25, after it is verified on the phone
2 Glass: blur and tint Galaxy A55 5G if it passes; iPhones
1 Frosted: a fixed frosted tint, no live blur Slower or power-saving phones
0 Solid Reduced transparency, higher contrast, or the person's choice
Sun Opaque, maximum contrast, heavier text Bright daylight; one tap under the "You" ring. Added after the build audit (docs/FRONTEND.md section 10)

Layout, sizes and behaviour are identical at every level. The light-bending effect works only in Chrome-family browsers and has not been tested by anyone on Android phones, so it is verified on the real S25 before it is relied on.

7. Shell

One shell on every staff screen. (The website and the client portal have no Halo, Stream or Omnibar: docs/SITE-DESIGN.md section 13.) Halo at the top, Stream in the middle, Omnibar at the bottom. This is the owner's design from the DiyaOS work, kept consistent everywhere and slimmed to what a trading company needs. No screen builds its own header, footer or navigation.

Zone What it is Job
Halo (top) A strip of rings for what needs attention Look: "is everything fine?"
Stream (middle) The content, in one of four forms Read and choose
Omnibar (bottom) One floating glass capsule Do

The rule that ties them together: the top is for looking, the bottom is for doing. The Halo and its drawer never contain a form field or a signing step; they hand the action down to the Omnibar.

Replanned on 11 November 2026 in docs/SHELL.md (drawn in docs/shell-map.html): four kinds of ring; kept and live places; adding, removing and reordering by the person; putting off and handing over; nine Omnibar modes; and 44 problems with their answers. Where the text below differs, docs/SHELL.md is the plan.

Omnibar

One capsule, always in the same place, on every screen.

At rest it holds four things:

Part What it does
Place (icon and name of the current area) Shows where you are. Tap to open the areas sheet: all eight areas, Home and settings
Add (accent) The few things this role creates
Scan Camera for a QR label, a receipt or a document
Search Find any record by name or number

The original design had Add, Camera and Voice, with navigation inside the Add sheet. Two changes, both for evidence: navigation is made visible as the Place part, because hidden navigation is used far less; and Search replaces Voice, because voice is unreliable at yard noise levels. Voice notes on a record can be added later.

With a card selected or a record open, the same capsule becomes that item's action: a More button for secondary actions, and one accent button naming exactly what it does ("Approve 1,260.000"). Cards and records carry no action buttons of their own; choosing one arms the Omnibar.

After an action, the capsule shows the result and "Undo …" naming what it undoes. The card folds to a one-line receipt, and the next item waiting becomes current. Undo stays until the next action or until the person leaves; there is no countdown.

Rules:

Halo

Where it sits (revision 8). The Halo is the first thing on the screen: one band fixed to the very top, reaching up under the status bar, with rounded lower corners and a small handle at its lower edge. The screen's title, and on Home the greeting, sit below it. Nothing is ever placed above the Halo. (Before this revision the title sat above it; the owner asked for the Halo to lead.)

The band has three positions, and it is the same surface in all three:

Position How to get there Shows
At rest — The rings: with labels on Home and lists, without on records and forms
One ring open Tap a ring The band grows downward. That ring stays where it is, marked; the others fade; the few figures needed to decide and one action appear beneath
Pulled down Drag the handle or the band downward; or tap the handle; or tap "+N" Everything: "Needs you", "Watching", and the Places this role has, as one grid
Level Looks like Used for
0 Nothing; appears in the daily digest Information
1 Thin ring, a count, a word Things to look at today
2 Segmented ring, one segment per step, a count, a word Work waiting for this person
3 Solid amber ring with a clock icon and the time left in words A customer promise about to be missed; legal and money deadlines

Each ring has an icon or initials, a short word, and a spoken description. Level shows in the ring's shape as well as its colour.

Halo drawer

Tapping a ring opens the Halo drawer. It is not a card and it does not float. It is the Halo band itself, grown downward: the same fill, no gap, no border between band and drawer, and the rounded lower corners and handle move down to the drawer's lower edge. The open ring keeps its place and gains a ring of the action colour, with a small marker beneath it pointing into the drawer. The ring is the drawer's header, so the drawer does not repeat the face or icon.

Part Content
Tag Area and kind of record
Who and when The party's circle and name, and the time left ("Al Noor Contracting · due in 3 h")
Summary Two lines at most
Steps Pills (1 of 4) when there is more than one thing waiting
One main button Hands the action to the Omnibar and closes the drawer
Text links Open the record, Snooze (with a reason for level 3), Pin
Back to A chip that returns to what you were doing

Pulled down, the band shows everything in three groups: what needs this person, what they are watching, and the Places their role has. It gives a second, visible route to every area. It opens by pulling the band or handle down, by tapping the handle, or by tapping "+N" (see "Where it sits" above for how this stays clear of Android's own pull-down).

Left out of the original: the jiggle (reordering itself is now planned, with a button for every move: docs/SHELL.md section 4), the broadcast composer, the industry-pack picker, prayer and driving modes, and blur behind the drawer.

Stream

The stream is the same component on every screen. It takes one of four forms:

Form Used for What it holds
Feed (the story feed) Home, inbox, approvals Record cards, most important first, ending in a clear "that is everything" line
Record One quote, order, shipment, invoice The record laid out for reading; tapping a figure arms the Omnibar to change it
List Stock, customers, ledgers Compact rows or a pinned-column table; selecting several arms a batch action
Board or map Shipments on a map, orders by stage Items placed by position or stage

The shell on each kind of screen

Screen Halo Stream Omnibar
Home The band at the very top, rings with labels; the greeting below it Feed Place, Add, Scan, Search
List The band at the top, shrinking to rings only on scroll List At rest; selecting rows shows the batch action
Record Compact: rings only, no labels Record, with Back at the top More, and the record's one action
Form Compact; hidden only while the keyboard is open The form Above the keyboard: the form's action
Halo drawer open Strip and drawer sharp Dimmed, not tappable Live
Omnibar sheet open Shrunk At least half visible The sheet
Camera Hidden Hidden Shutter, mode, close
Settings Compact The settings The screen's action
First-time setup Rings show setup progress Step cards The step's action
Driver's job Compact: You, this job, the next job One job The next stage button
Logistics company Compact: You, new job, moving, invoices Jobs The job's action
Client portal None: a line of words with counts, in the portal's own look (docs/SITE-DESIGN.md section 13) Their orders; an order No Omnibar: a bar with "WhatsApp" at the left and the page's action at the right
Sign-in screens, lock screen None: nobody is signed in One step The step's action
Public website None Pages, in the site's own look No Omnibar: a bar with "WhatsApp" at the left and the page's action at the right

The Halo is on every signed-in screen of the staff app, the driver and the logistics company. Drivers and carriers get a short Halo of two to five rings, each one a thing they can act on. Customers have no Halo (changed 11 November 2026): the client portal shows a line of words with counts and its own bar (docs/SITE-DESIGN.md section 13; docs/SHELL.md, "Customers"). To test with people (section 16): whether customers who visit rarely understand that line without help.

Consistency rules

Home by role

Role Home shows Place opens to
Owner Promises at risk, approvals, cash and receivables, orders in progress Money
Sales New enquiries with time left, quotes awaiting reply, samples out Sell
Operations Orders to source, inspections due, shipments moving, claims Deliver
Finance Payments to verify, bills due, unmatched bank lines, close checklist Money
Admin and HR Expiring documents, leave requests, payroll status People
Everyone Clock in, my leave, my payslips, my expenses —

Heavy screens on a phone

Screen Pattern
Bank matching One bank line at a time with suggested matches
Journal entry Lines as stacked cards; debit and credit totals pinned at the bottom
Statements Collapsible sections; tap a line to see what is behind it; share as PDF
Ledgers and trial balance A true table with the first column pinned and a clear cue that it scrolls sideways
Payroll run One card per employee; exceptions first
Quote builder Lines added one at a time; totals pinned

8. Elements

Every screen is built from these and nothing else. The full plan, 96 components each with its parts, kinds, switchable features, states and movement, is in docs/COMPONENTS.md (drawn in docs/component-map.html); the list below is the summary it grew from.

Element Use
Halo ring and story card What needs attention
Omnibar Place, Add, Scan, Search at rest; the selected item's one action; result and undo
Halo drawer The card that drops from a ring: summary, steps, one button
Receipt strip A finished card folded to one line, with Undo
Sheet Grows from its button; half height on glass, full height solid
Record card Designed from the person's questions (section 10): who, what, where it is, what next, how much
List row The compact form of a record card: photo with the customer's circle, two lines, status
Record page The answers in order: what is asked, whose, what, is it sound, how much, what next; then reveal rows. No tabs (docs/SCREENS.md section 3)
Reveal row A closed row with a one-line summary that opens in place
Preview sheet A small sheet showing another record at a glance, with a way to open it
Stage tracker 3 to 6 named stages, current one in words, a date for the next
Status chip Colour, icon shape and word
Money amount Exact figure in the one format
Figure tile One number, one comparison, an inline bar or small trend line
Bullet bar A value against its target and usual range
Form sheet and fields One column; label above every field; the right keyboard
Review step Formatted totals before any posting; the button disables after one tap
Approval card What, who, how much; approve or reject with a note
Match card One item with suggested matches
Photo set Capture, resize on the phone, attach; a customer can approve a set
Property scale A stone's measured property as a marker on a labelled scale
Container fill A container drawing with weight and floor-space bars
QR scan and label Open a sample, lot or shipment; print its label
Message thread Conversation on a record
Calculator panel Inputs and a live result
Privacy cover Hides amounts when a customer is looking; press and hold to reveal
Feedback Sync badge, undo, empty state, loading placeholder, confirm dialog

9. Icons

Animated icons play once, on an event. Evidence says animation helps only for actions that are hard to picture, so the list is short:

Icon Event Animation
Tick Action confirmed Draws itself
Add Sheet opens and closes Plus turns to a cross
Sync Syncing An arc turns, only while working
Upload Uploading A ring fills, then a tick
Scan Code recognised Corners close in
Send Sent The plane leaves
Stage icon Stage reached Arrives as its segment fills
Lock Fingerprint accepted Opens

Recognition test: each new icon is shown without its word to at least ten staff across the language groups, who say what it means in their own words. Under two-thirds correct, the word becomes permanent; the aim is 85%.

10. Showing information visually

Which visual for which information

On a 360 px screen:

Information Use Avoid
One key figure Large number, short label, unit A dial; a lone pie
Figure against a target Bullet bar with a target mark, plus "82% of target" Many radial bars
Trend over time Line or bars, one or two series, a headline sentence, last value labelled Animation; two vertical scales; bars not starting at zero
Parts of a whole One stacked bar or a ring, two to four parts, each labelled A pie with more than four slices; 3D
Ranking Sorted horizontal bars with the value at the end Upright bars with tilted labels
Two values compared Two aligned bars with the difference in words Two pies; sizes of icons
Status of one thing Colour, icon shape and word A colour dot alone
Progress through stages Stage tracker: 3 to 6 named stages, a date for the next Unlabelled dots
Deadline The date and "N days left", with colour and an icon when close A ticking clock
Stock level A bar against the reorder mark, with the number and unit A dial
Where a shipment is Stage list with places and dates; a small map is optional A map as the only status
Approval queue Rows with party, amount and how long it has waited Icon-only actions
Document set A checklist with a tick or missing mark per document, plus "4 of 6" A percentage ring alone
Person or company Photo or initials, name, role A picture alone
Money The exact figure A chart as the only carrier
Error Icon, a plain sentence and a fix button, beside the field A red border alone
Empty screen One sentence and one button Large artwork above the button
How to do something Three to five steps, each a picture with a one-line caption, shown where it is needed A tutorial at first launch
A stone's property A marker on a labelled scale beside familiar reference stones, with the exact value and test standard Stars; a radar chart
One customer's rating Stars, with the number available to screen readers A sentence such as "scored 5 of 5"
Satisfaction overall The score, bars showing the spread, and how many answered Emoji faces alone

Cards answer a person's question

Every card is designed from what the person looking at it needs to know, in the order they need it. This is checked for each card before it is built.

  1. Write down who looks at the card and why.
  2. List the questions they have, most important first.
  3. Give each question the most direct visual answer: a face or logo for "who", the stone's photograph for "what", stage icons for "where is it", a date for "when", stars for a rating.
  4. Put codes and record numbers last and small. Nobody thinks of a customer as "SO-0142".
  5. Remove anything that answers no question.

The order card, as the worked example:

Question Answer on the card
Whose is it? Customer logo or initials in a circle, then the name as the title
What is it? The stone's photograph across the top; stone, finish and quantity as one caption line
Where is it? A row of stage icons: done, current, still to come
What happens next, and when? One plain line with a date
Is anything wrong? A status chip in the corner; coloured only when something needs attention
How much? The exact amount
How did it go? Stars, once delivered and rated
Which record? The order number, small

Rules that keep picture-led cards readable:

Condensing: say it with the fewest words

The questions above are how a screen is designed. They are never printed on the screen. A screen that reads "Where is it? Now: Hatta border. Arrives: 14 Nov. Last seen: 12 min ago" has turned the method into text. The same answer is one route line with a truck on it.

Each piece of information takes the first form in this list that works:

  1. A picture of the thing: stone photograph, face, logo, map, route line.
  2. A shape that carries the value: ring, bar, stage dots, stars, calendar strip, scale marker.
  3. An icon with a figure: a clock and "12 d", a truck and "14 Nov".
  4. A figure with a caption of one or two words.
  5. A sentence. Only for something a person wrote, or a decision that needs explaining.

Three levels of text, and no others, on any screen:

Level Used for Style
Title The one name or figure the screen is about 17–22 px, weight 600
Value Figures, names in lists, button words 13–15 px, weight 600, tabular figures
Caption Unit, one or two word label, time 11–12 px, muted

Rules:

Budget for one phone screen (360 × 780): at most one title, one status chip, one main picture, three strips or figures, four reveal rows and one main action. A record screen should come to about 40 words or fewer before anything is opened.

Before and after, from the shipment screen:

Before After
Heading "Where is it?" with three tiles: "Now / Hatta border", "Arrives / 14 Nov", "Last seen / 12 min ago" One route line: Sohar to site, truck at the border, "14 Nov" at the end, a small "12 min" beside the truck
Heading "Is it complete?" with a sentence "14 of 14 slabs loaded, inspected" A ring showing 14/14 with a tick, caption "slabs"
Three tags: "Honed", "20 mm", "86.4 m²" One caption line under the stone's name

Chart rules

  1. Compare with length and position (bars, dots). Never with area, angle or icon size.
  2. Bars start at zero. No broken scales.
  3. At most two lines per line chart and twelve bars per bar chart. Beyond that, small charts side by side, or a top list.
  4. At most five colours in a chart, from a colour-blind-safe set, each also marked by shape or label.
  5. Every chart has a one-sentence headline stating what it shows, and labels its key values directly. No separate legend for three series or fewer.
  6. A small chart opens a larger one in the same style. Tapping is never required to see a critical figure.
  7. Every chart has a text description and a "view as table" option.
  8. Exact numbers sit beside charts on any money screen: the figure for reading, the bar for comparing.
  9. Charts do not animate, except a single change being pointed out.
  10. Labels inside charts are 12 px or more and are real text, never part of an image.

Stone and trade visuals

11. Motion

How each movement is coded, the springs, and what each does to the person are in docs/FRONTEND.md, with live samples in docs/ui-build.html. An evaluation of this section found 26 gaps; the completed specification is docs/MOTION.md, and where it differs from the tables below, it is the plan (one set of times, curves and springs; distance and stagger tokens; interruption; drag numbers; a motion ladder; waiting; testing).

Principles

Motion explains what happened, never makes anyone wait, starts from its source, moves one thing at a time, and is still at rest.

Timing

Token Time Used for
tap 90 ms Press feedback: slight shrink and glow
quick 150 ms Colour and opacity changes
move 220 ms Things entering or changing shape
sheet 280 ms in, 200 ms out Sheets, story card, moving between screens
settle about 480 ms A completed step; the only one with a small overshoot (about 3 %), kept by the owner's decision. Springs for anything a finger lets go of are in docs/FRONTEND.md

Leaving is faster than arriving. Timing is in real time, so it is the same on a 60 Hz and a 120 Hz screen.

Small movements

Element When What happens
Any button or row Pressed Shrinks slightly, glows under the finger
Omnibar A record opens The navigation capsule gives way to the action capsule; the accent button stays where it was
Omnibar Action confirmed A tick draws; "Undo …" forms beside it
Halo ring New item / count changes / step done Forms from slightly smaller / number cross-fades / segment fills
Story card, sheet Opened Grows from the ring or button that opened it
List row Added or removed Opens or closes in height; neighbours slide
Stage tracker Stage completes The next segment fills once
Amounts and figures Value changes Cross-fade. Numbers never count up or roll
Field Error Message fades in beside it. No shaking
Approval or match card Decided Slides toward the Omnibar; the next rises
Photo Taken Shrinks into its thumbnail; a ring shows upload
Loading Wait over 300 ms Grey placeholders in the shape of the content

Between screens

Transition What happens
List to record The record slides in from the reading-direction side; back is the reverse, faster
One area to another A cross-fade; areas have no position relative to each other
Halo card to record The card closes upward, then the record opens. In sequence, under 450 ms
Sheet to full height The glass turns solid as it rises
Keyboard opens The Omnibar hides; the form's action stays visible
Language or theme change The whole screen cross-fades

Customer moments

The range approved, the quote accepted, the layout approved, delivery confirmed. On staff screens each gets the stage tracker advancing and one tick, under 600 ms. No confetti, no sound. In the portal these moments follow docs/SITE-MOTION.md.

Rules

12. Words

13. Forms and money entry

  1. One column. A label above every field, always visible.
  2. Choose rather than type wherever possible. Pre-fill from the last record, the scan or the role.
  3. The right keyboard for each field; amounts get the decimal keypad.
  4. A field is checked when the person leaves it, never while they type. The error clears the moment it is fixed.
  5. Entered amounts are echoed back formatted, with the currency.
  6. Every posting has a review step showing formatted totals. The button disables after one tap.
  7. Nothing is silently "corrected". A malformed entry is refused with a reason.
  8. Ask permission for the camera, location or notifications only when first needed, with a one-sentence reason.

14. Behaviour

Principle What we do
Familiar is faster Conventional navigation, forms and tables
Fewer choices are faster One accent action per screen
People keep defaults Safe, pre-filled defaults
Each extra field costs completions Ask only what cannot be worked out; lead tools ask for contact last
Undo beats "Are you sure?" Named undo for everyday actions; a specific confirmation only for what cannot be reversed
Too many alerts get ignored Four Halo levels, six rings at most, bundling, a daily digest, quiet hours
A suggestion is easily over-trusted Every AI suggestion is marked, shows its source beside it, is never pre-ticked, and highlights any field it doubted; money, dates and identity numbers are always confirmed by a person; accept and change rates are measured (docs/AI.md)
Waiting feels shorter when explained The customer always sees the stage, the next one and a date
Showing the work raises its value The customer sees their range, their layout and the shipping as they happen; never rejects, tone groups or supplier details (docs/MATCHING.md section 7)
Imposed games backfire No points, badges or streaks for staff
Habits take about two months One daily reason per role to open the app; one role at a time, with a named helper
Trust is fragile No forced consent, hidden costs or false urgency

15. Quality bar

Every screen is checked against this before it is accepted.

Look and layout 1. One accent action, visually dominant. 2. One accent colour, neutrals, four status colours. Nothing else. 3. Only the corner and spacing values in section 4. 4. Glance test: a new person can name the screen's purpose and main action after five seconds. 5. Navigation, forms and lists follow the conventional pattern. 6. Fixed controls take no more than a quarter of the screen.

Type 7. Body 16 px; nothing under 12 px (13 in Arabic); money 16 px or more. 8. At most three weights; none lighter than 400. 9. Every amount uses the one format and is never cut short.

Colour and contrast 10. Text 4.5:1; icons and control edges 3:1; key figures 7:1. 11. Nothing is shown by colour alone. 12. Text on glass keeps its contrast over the brightest and darkest content.

Touch and navigation 13. Every target 48 px or more, 8 px apart; 56 px at edges. 14. Navigation is visible; every navigation icon has a word. 15. Every swipe or drag has a tap alternative. 16. A destructive action is never beside the main one. 17. Nothing tappable in the upper right edge strip.

Forms and money 18. One column; visible labels; the right keyboard. 19. Errors on leaving the field, saying how to fix it. 20. A review step before every posting. 21. Undo names what it undoes; a confirmation names the thing and amount. 22. Every record shows its status, who changed it last and when, and who acts next.

Visuals 23. Every action icon has a word, or has passed the recognition test. 24. Every chart has a headline, starts at zero, and has a text description. 25. Photographs are real, sharp and sized, with space reserved. 25a. The screen answers the person's questions in order; every figure opens what it is made of; other detail is one tap away.

States, motion, speed 26. Empty, loading, error and offline states are all designed. 27. Response within 100 ms; a progress indicator after 1 second. 28. Motion uses the five tokens and respects reduced motion. 29. On the Galaxy A55 5G: first screen in 2.5 seconds, 60 frames a second.

Two languages and access 30. Passes in Arabic: mirrored layout and arrows, numbers kept left-to-right, nothing clipped. 31. Works at 200% text and 320 px wide, with zoom allowed. 32. No automatic accessibility errors; every icon button has a spoken name.

Mistakes AI-designed interfaces make, and the guard against each

This app's screens are drawn and coded largely by AI models. Published evaluations and audits show the same faults again and again in such work. Each has a guard here that does not depend on the model's own opinion of its work. Evidence is strongest for accessibility, security and duplicated code (measured studies); the rest comes from practitioner reports that agree with each other.

# The mistake Why a model makes it Our guard
1 The same look as every other AI app: default font, purple gradients, glow, glass everywhere, emoji as icons, a badge on everything With no direction a model produces the average of what it has seen Tokens for font, colour, radius and depth are fixed before any screen is made. Banned list checked automatically: gradients as decoration, glow, emoji, coloured side-borders, glass outside the shell
2 Everything the same weight; cards inside cards; decoration that means nothing It copies a layout, not the person's priorities Each screen's spec names one question and one action first (SCREENS.md). Three text levels. No card inside a card. One accent use per screen. Counted by script
3 Too many words; labels that repeat their value Text is the model's native output The condensing rules and word budget in section 10
4 Each screen re-invents spacing, colours and components Each generation starts fresh Values come only from tokens; raw colours and pixel sizes fail the lint. New screens are composed from the existing components; a new component needs a person's approval
5 Looks accessible, is not: clickable divs, icon buttons with no name, meaningless descriptions, dialogs that trap or lose focus Visual review never penalises it; scanners miss it Native buttons, links and dialogs only. Svelte's accessibility warnings are build errors. axe runs on every screen in the test suite. Because scanners miss meaning, a person goes through every flow with TalkBack before each release
6 Small or crowded touch targets, weak contrast Drawn at desktop scale Every interactive element is measured by test: at least 48 px. Every text and background token pair is contrast-tested
7 Only the happy path: no loading, empty, error, offline, refused or partly-loaded state Sample data is always full and instant A screen is not done until all eight states exist and are screenshotted: loading, empty, error, offline, no permission, partial, very long text, very large number
8 Breaks with real content: long names, Arabic, nine-digit amounts overflow Tested only with tidy samples Stress fixtures (60-character names, Arabic, 999,999.999) on every screen with an automatic check that nothing overflows at 360 px
9 Breaks on a real phone: content under the keyboard or the gesture bar, 100vh, zoom on focus, janky blur The model never sees a keyboard, a notch or a mid-range chip Dynamic viewport units and safe-area insets only; inputs at 16 px or more; the right keyboard for each field; frame-time measured on the A55 (PLAN.md section 7)
10 Controls that do nothing; things that look tappable and are not Generated for appearance A test taps every control on every screen and fails if nothing changes
11 Hover-only actions, no Undo, dialogs for everything, Back that surprises Desktop habits in the training data No hover-dependent behaviour. Named Undo. Every screen has an address, so Back is predictable (JOURNEYS.md)
12 Believable but invented figures, features and icons It fills gaps with what is likely No business data in components; every figure comes from the server. One icon-to-meaning table. One glossary: one word per thing. Sample data in sketches is marked as sample
13 Flows quietly changed during an unrelated edit; whole files rewritten It optimises the request in front of it Small changes only. The navigation map is a specification; any change to routes is reviewed by a person. Screenshot comparison on every screen for every change
14 Duplicated code, invented packages, secrets or checks left in the browser Measured: duplication up sharply; about one in five generated samples named a package that does not exist; nearly half introduced a security flaw Duplicate detection in the build. Every new dependency approved by a person. Secret scan. Permissions enforced on the server only. No raw HTML from untrusted text. A person reviews anything touching sign-in, money or permissions
15 The model marks its own work and says "done" Models rate their own output higher than others' "Done" needs: automated checks green, screenshots at 360 px in light, dark, English and Arabic, and a person's sign-off. The model that built a screen never approves it
16 A polished sketch is taken for a finished product It looks finished The mockup is labelled a sketch. Nothing is accepted until it runs on the S25 and A55 and five people in the role have done their real tasks on it (section 16)

What this means for the current sketch. docs/ui-shell-mockup.html was drawn by an AI model and has so far been checked only by that model, in light mode, in English, at Galaxy S25 size, with tidy sample data. By rows 7, 8, 9, 15 and 16 above it is a direction to react to, not an approved design. Still to do before any screen is built: the eight states, the stress content, dark mode, Arabic, the A55, and review by a person.

16. Testing with people

17. Where there is no evidence

These are decided by our own tests, not by assumption:

18. Decisions to confirm

# Decision Recommendation
1 Halo and Omnibar on every staff screen; the Omnibar shows the current area (tap to change), Add, Scan and Search; Search in place of Voice Yes. It keeps your design everywhere and makes navigation visible
2 Western digits everywhere, including Arabic Yes for all financial data; confirm normal practice with the accountant
3 Money format 1,250.500 OMR Yes
4 Fonts: Rajdhani for all text, Orbitron for the wordmark only, IBM Plex Sans Arabic Decided by the owner, 11 November 2026 (section 4); review Arabic beside English on the real phones
5 Light theme as default, following the phone's setting Yes
6 Icons keep a word until they pass the recognition test Yes
7 Undo stays until the next action instead of a five-second countdown Yes
8 Glass on the Omnibar, sheet tops and Halo only Yes
9 The product does not use the name "Liquid Glass" Yes

19. Sources

Some findings were checked only against summaries rather than the full papers, and a few recent Apple and Samsung details come from press coverage. Anything the plan depends on is re-checked on the real phones in Stage 0.

AI-designed interfaces (added in revision 4)

No measured study was found on missing states or phone-specific faults in AI-built interfaces; rows 7 to 11 of the table rest on practitioner reports and general mobile-web guidance.

Scope: one desk layout (added 12 November 2026)

This document governs the staff app, which is phone only, except the Money area, which also has a desk layout built from the same tokens and the same Halo and command ideas: docs/MONEY-DESK.md.