Find a page, section, or term across The Brand.
Type to search.
Edition MMXXVI ● Volume I ● Riyadh, KSA
- the brand book -
The single source of truth for the brand: identity, foundations, components, patterns, voice. Everything visual, terminological, and operational that powers a F. BINSABBAR experience.
The wordmark, what it stands for, and the four owned surfaces it appears on. Every external touch starts here.
The brand wordmark is F. BINSABBAR. Always uppercase, always with a period after the F, always one space, always rendered with the canonical .brand or .brand-name class so it inherits the right tracking and weight.
// HTML - the kit auto-walker wraps this on every page. <span class="brand-name">F. BINSABBAR</span> // kit canonical .brand { font-weight: 500; letter-spacing: 0.10em; text-transform: uppercase; }
F. BINSABBAR for screen readers, copy-paste, and any unstyled context.F. BINSABBAR<sup>®</sup> in formal mastheads (cover, footer, identity blocks). Drop the ® in body copy.The portfolio is organised across three legal entities, each with its own short code used as an asset / folder / file prefix.
FBJ
F. BINSABBAR
The Jewellery House - customer-facing fine-jewellery brand. FB Ambassadors, Studio, the Online Store all operate under FBJ.
FBD
Faisal Binsabbar Design
The Design Firm - separate design practice under the parent.
FBC
Faisal Binsabbar Design LLC
The corporate parent - holds the trademark (TM-01-00-44436-25) and owns the other two.
The wordmark is the everyday mark. Three alternates are sanctioned for specific surfaces. SVGs render via currentColor - they re-tint per surface (dark plate inverts to white).
currentColor.The four surfaces F. BINSABBAR shows up on. Use these names verbatim - never abbreviate, never substitute.
Apps
Web
Trademark TM-01-00-44436-25, held by Faisal Binsabbar Design LLC, UNN 7025824553. Registered in the Kingdom of Saudi Arabia. The wordmark is a registered mark; its use outside the surfaces above requires written permission.
Six rules that shape every decision in this book. When in doubt, return to these.
Confidence without overstating. Every line is read twice before publishing. We never shout for attention.
Every screen is recognisably F. BINSABBAR before it is recognisably "the catalog page" or "the editor". Identity precedes utility.
Surfaces have warmth and depth. Frosted glass on warm canvas is the default; matte and solid are exceptions, used deliberately.
Colors, spacing, type, radius all read from fb-ui.css tokens. No hex codes in HTML, no magic numbers, no parallel scales.
If a component appears on two pages, its CSS lives in fb-ui.css - never restated per page. The kit is the law; pages only override what genuinely differs.
If a flourish doesn't serve clarity, remove it. The wordmark and the warm canvas already do most of the work - let them.
The atoms of the system: color, typography, spacing, radius, glass, and motion. Every component on every page composes from here.
Premium Yellow is the primary brand color. It carries the brand on hero surfaces, mastheads, and atmospheric washes. Signature Red is the action / accent (CTAs, focus, error). Vert and Royal Lavender are editorial accents - used sparingly for moments that warrant a different mood.
Neutrals and surface tones. Canvas is the default body background; Champagne anchors warm gradients; Ink is the default text.
| Token | Hex | Use | |
|---|---|---|---|
--text | #0e0e0e | Default body, headings. | |
--text-muted | #3a3a3a | Secondary copy, descriptions. | |
--text-faint | #5a5a5a | Captions, meta. WCAG AA on canvas. | |
--text-inverse | #f6f4ef | Body on dark surfaces. |
| Token | Hex | Use | |
|---|---|---|---|
--success | #2d8a4f | Saved, complete, paid. | |
--warning | #edb845 | Pending, attention needed. | |
--error | #f74827 | Errors, destructive actions. Same value as Signature Red. |
Single family: Futura PT, served via Adobe Typekit (kit ID vvg4egg). Three working weights: 300 Light, 400 Book, 500 Medium. Italic and 200 are reserved for editorial moments only.
An 8 pt grid. All padding, gaps, and margins read from these tokens. --s-9 is the 44 pt tap-target floor; control heights snap to this.
Six radius tokens. Pills for controls, glass for surfaces, smaller radii for chips and chrome.
| Preview | Token | Value | Use |
|---|---|---|---|
--radius-pill | 999px | Buttons, inputs, badges, tabs. | |
--radius-glass | 30px | Glass panels, cards, hero blocks. | |
--radius-card | 16px | Tight content cards. | |
--radius-control | 12px | Inputs that aren't pills. | |
--radius-sm | 8px | Color chips, small swatches. |
Frosted glass on warm canvas is the brand's surface aesthetic. Three tokens cover the entire system. Use glass when the surface is interactive (cards, sheets, controls); fall back to solid rgba(255,255,255,0.40) for static reference panels (swatches, type specimens).
| Token | Value | Use |
|---|---|---|
--glass-bg | rgba(249,248,246,0.22) | Default glass tint. |
--glass-bg-strong | rgba(249,248,246,0.42) | Sheets, modals - glass over busy backgrounds. |
--glass-blur | blur(18px) saturate(140%) | The blur amount everywhere. |
--glass-shadow | 0 2px 8px rgba(0,0,0,0.06), 0 0 0 1px rgba(255,255,255,0.30), inset 0 1px 0 rgba(255,255,255,0.55) | Outer shadow + hairline ring + top highlight. |
/* The kit utility - drop on any container */ .glass-card { background: var(--glass-bg); backdrop-filter: var(--glass-blur); border-radius: var(--radius-card); box-shadow: var(--glass-shadow); padding: var(--s-5); }
Most transitions snap at 0.18s ease. Glass-card hovers are 0.18s on transform and box-shadow. Page-level loaders use a 1.2 s spin and a 1.6 s pulse. The kit honours prefers-reduced-motion globally - animations collapse to 0.01 ms when the user requests less motion.
| Where | Duration | Easing |
|---|---|---|
| Tile / card hover | 180 ms | ease |
| Button press / fade | 80-150 ms | ease |
| Sheet / drawer open | 240-280 ms | cubic-bezier(.4,0,.2,1) |
| Loader ring | 1200 ms | linear |
| Loader star pulse | 1600 ms | ease-in-out |
Live, kit-canonical components. Every demo on this page reads from the same fb-ui.css that powers every brand-system surface - rendering identically here and everywhere it ships.
button.primary for the main action; button.secondary for alternatives; .btn for hyperlink-style CTAs in content.
<button class="primary">Save</button> <a class="btn" href="…">Open Brand Book</a> <a class="btn outline" href="…">Secondary</a>
.text-input is the 44 pt pill input; .v-input is the compact 32 pt centered numeric. Both inherit Futura, both grow a 2 px accent ring on hover.
.slider-field wraps a label + range input + numeric display. Track is 4 px; thumb is 32 × 24 px pill in Ink.
.fb-select is the kit's pill-shaped dropdown - 44 pt height, uppercase tracked label, single-line. Native <select> under the hood, so accessibility is free.
<select class="fb-select"> <option>Yellow gold 18k</option> </select>
.quality-pick is a radio group rendered as a pill segmented control. Use for 2-4 mutually exclusive choices where the labels are short.
.radio-row and .check-row render the kit's custom 36×20 px pill control. Radio fills with an inner accent pill when checked; checkbox shows a check glyph. Both inherit the 44 pt tap target via the surrounding label.
.switch follows the iOS toggle: 60×31 px track, 32×23 px knob, accent fill when on. Wrap in .switch-row with a .lbl for an inline labelled toggle.
Three flavours: .glass-card (utility - bare glass surface), .card (content block with built-in h3/p styles), a.tile (clickable with hover lift + corner link-direction indicator).
The .card is the workhorse content block. It holds an h3 at 17 px / 500 weight, body p at 14 px muted, and any list. Use it for "About" panels, brief sections, and feature breakdowns. Combines with any .grid-2 / .grid-3 for layout.
.stat is a glass tile with a big number on top of a small uppercase label. Use it for at-a-glance counts on hero/about panels.
Centered glass pill, always a single row. If items exceed available width the row scrolls horizontally inside the pill (scrollbar hidden). Works equally well for 3-item navs and 12-item navs on phone.
To pin under the viewport top, wrap the <nav class="tabs"> in <div class="tabs-bar sticky">. Splitting the sticky position onto a wrapper (instead of putting it directly on .tabs) is required because position: sticky + overflow-x on the same element doesn't trigger on iOS Safari.
// Pinned section nav - wrap the tabs in .tabs-bar.sticky <div class="tabs-bar sticky"> <nav class="tabs" aria-label="On this page"> <a href="#section-1">Section 1</a> <a href="#section-2">Section 2</a> </nav> </div>
Glass pill at the top of every non-home page. Single source in fb-ui.css; pages emit only the markup.
Small pill chips for status, count, and role. Use sparingly - too many in one row reads as noise.
.mat is the kit's material chip - pill-shaped, 44 pt tall, with a 22 px round swatch on the left. Used in the Studio Editor as a material picker; reusable anywhere a colour-tagged option needs choosing.
Two flavours. .toast-static sits in flow as an inline status block. .toast-live is a fixed-position transient notification, fades in via a .show class. Both come in default / success / warning / error variants.
.tip wraps the trigger; the inner .tip-bubble is a real element so the frosted glass renders consistently in Safari (where ::after backdrop-filter is unreliable). Hover or focus to reveal. Keep tooltip text to a short label only - never use it for descriptions.
Three primitives for "things that appear on top of the canvas". Each has an optional .show class for the visible state; pages drive that via JS. Esc and click-outside dismissal are application concerns.
Full-page glass overlay used during initial load on every studio surface and the login gate. 70 px spinning ring + 40 px pulsing wordmark star. Inset matches the canvas frame (10 px / 30 px radius). Edge-to-edge on phone. Honours prefers-reduced-motion.
// Drop at the top of <body>: <div class="page-loader" aria-hidden="true"> <div class="ring"></div> <div class="star"><svg…></div> </div> // When ready to dismiss: document.body.classList.add('fb-page-ready');
Monoline, 1.4 px stroke, 24×24 grid, rounded caps and joins. The library lives at icons.html with live filtering and sprite/ZIP downloads. Never embed icons from other sets - extend the brand library instead.
Compositions of the components above. Every brand-system page imports these without restatement; deviating means there's a reason worth writing down.
Every page sets html, body { background: var(--canvas-bg); } and inherits the 3-radial warm wash from the kit's body::before. The .page wrapper sets the page max-width and safe-area padding.
// Page wrapper - pages set their own max-width, everything else from kit. .page { max-width: 1100px; margin: 0 auto; padding: max(var(--s-10), calc(env(safe-area-inset-top) + var(--s-4))) max(var(--s-6), env(safe-area-inset-right)) 120px max(var(--s-6), env(safe-area-inset-left)); }
Eyebrow + h1 + p, optionally with a 128 px .app-icon ornament on the right. Mobile collapses to a single column.
<header class="hero"> <div> <p class="eyebrow">App</p> <h1>FB Ambassadors</h1> <p>The team's day-to-day operations app.</p> </div> <div class="app-icon"><svg…></div> </header>
How we write, in two paragraphs and a list. The voice is constant - the tone shifts by surface.
We write the way we present. Calm before loud. Specific before clever. Every sentence is read twice before publishing - once for accuracy, once for rhythm. We avoid superlatives ("amazing", "stunning"), avoid empty hospitality language ("we're so excited"), and avoid CAPS for emphasis. The brand wordmark already carries the formality.
Tone shifts by surface. Concierge: warm, specific, second person. Ambassador app: direct, neutral, present tense. Brand book / system docs: editorial, third person, declarative. Errors: what happened, why, what to do - never "Oops".
#f74827 when var(--accent) exists.Five rules. The kit handles most of these globally - pages just need to not undo them.
--s-9 (44 px). Set in --control-h; never override below.:focus-visible element. Already global in the kit; never set outline: none without a :focus-visible replacement.@media (prefers-reduced-motion: reduce) collapses every animation and transition to 0.01 ms. Already global; don't add un-guarded long animations.--text-faint (#5a5a5a) is the lowest text tone we ship - chosen for WCAG AA on the warm canvas. Do not introduce a fainter text token.text-transform alone. Decorative SVGs carry aria-hidden="true". Icon buttons need a visible label or aria-label.Reference material. Files, tokens, and where each lives.
guidelines/fb-ui.css - design tokens + every kit component class. The law.guidelines/brand-book.html - this document. The single canonical reference for identity, foundations, components, patterns, voice, accessibility.icons.html - live icon library, sprite + ZIP downloads.index.html - the brand-system masthead and directory of surfaces.ambassadors.html · studio.html · login.html - surface-specific reference pages.If you're new to the system, read in this order:
A live-generated Markdown reference for adopting the brand in another app. Includes the kit's CSS import, every token (color, spacing, radius, glass), typography, the canonical component class names, links to the icon library, and the app-icon / logo set. Generated from the live fb-ui.css on download - the values you get today reflect today's tokens. Re-download any time the system updates.
?v= query on the fb-ui.css link in every HTML file when tokens change - Safari caches past no-store.fb-ui.css on every download - no manual sync needed.You have three unsaved edits on the current bespoke. Closing now reverts everything to the last saved version - this cannot be undone.