Skip to content
VEILANCE Design System · v1.2.6
VEILANCE · DESIGN SYSTEM · v1.2.6

Brilliance, Unveiled.

The canonical reference for the VEILANCE design system. Every token, every component, every rule. Drop this in — get the entire brand identity in one fetch.

SEC.01 · COLOUR · X: 0.00 Y: 0.00
Foundations · 01

Colour System

Built in OKLCH for perceptually uniform steps, mapped to sRGB hex for delivery. Every token has a purpose — no decorative bloat. All pairings WCAG 2.1 AA verified.

Gulf Teal Range

The identity anchor. A five-step teal scale inspired by the deep waters of the Arabian Gulf.

Deepest
#051E28page bg
--v-deepest
Gulf Dark
#082F3Csection bg
--v-gulf-dark
Gulf Teal
#0C4A5Efeatured bg
--v-gulf-teal
Teal Core
#1A7A8Fdecorative
--v-teal-core
Teal Light
#7FC4D4accent
--v-teal-light

Terracotta Accent

Three tokens enforce WCAG: fill for CTAs, hover for transient state, text-only token for small labels.

Terracotta
#A5603ACTA fill
--v-terracotta · white 4.85:1 AA
T. Hover
#B5693FCTA :hover
--v-terracotta-hover · 4.15:1 AA-lg
T. Text
#D08A5Esmall text
--v-terracotta-text · 6.12:1 AA
Blush Stone
#D4AFA0decorative
--v-blush · NEVER for text

Sandstone Range (Light Mode)

Reserved for proposals, decks, email signatures, and print. Sand Mid is decorative only.

Sand Pale
#F7F4EDlight page
--v-sand-pale
Sandstone
#EDE6D8light card
--v-sandstone
Sand Mid
#D4C4A8decorative
--v-sand-mid · NEVER for text
Sand Dark
#7A6B52tertiary text
--v-sand-dark · 4.5:1 on Sandstone

Light Surface Stack

Five explicit warm-cream surfaces, each ≥5 luminance units apart. Cards visibly lift off the page; sections sink; raised state lives on top.

Sand Deep
#E8E0CEwell / sunk
--v-surface-sunk
Sandstone
#EDE6D8section band
--v-surface-section
Sand Pale
#F4EFE2page
--v-surface-page
Paper
#FBF8F0card / panel
--v-surface-card
Paper Lift
#FFFDF7hover / modal
--v-surface-raised

Light Ink Scale (Text)

Four explicit text tiers, every value AAA-verified on every light surface. ink-3 clears AAA-large on every layer; ink-4 is AA-large only — reserved for hints and disabled states.

Ink 1
#1A2E38heading · 13.2:1 card
--v-ink-1 · primary
Ink 2
#324148body · 9.1:1 card
--v-ink-2 · body
Ink 3
#4A5860caption · 6.4:1 card
--v-ink-3 · meta / mono
Ink 4
#6B7780hint · 4.7:1 card
--v-ink-4 · hint / disabled

Accent Text on Light

Teal Light (#7FC4D4) is decorative-only on cream — at 1.57:1 on the page surface it is not legible text. Every accent text use flips to the deep Gulf Teal #0C4A5E (8.46:1 on page — AAA) via the cascade.

Accent Text
#0C4A5Eall accent text
--v-accent-text · 8.46:1 page
Accent Strong
#051E28emphasis
--v-accent-strong · 14.4:1 page
Teal Core
#1A7A8Fdisplay em only
--v-teal-core · 4.33:1 page · AA-large display only

Neutrals & Text Tokens

Charcoal
#1E2426footer bg
--v-charcoal
On-Dark Primary
#F0EDE7headings
--v-text-primary · 14.5:1 AAA
On-Dark Secondary
#B8CAD0body
--v-text-secondary · 8.9:1 AAA
On-Dark Tertiary
#8AA0A8labels
--v-text-tertiary · 6.4:1 AAA
Paper
#FAFAF6pure light
--v-paper

Opacity Scale — Teal Light

Atmospheric effects use rgba(127,196,212, α) at deterministic stops. Mapped to --v-border-1 through --v-border-9.

2%ring 3
4%grid
6%divider
8%tick
12%hover
15%accent
20%focus
25%active
SEC.02 · TYPOGRAPHY · X: 0.00 Y: 1200
Foundations · 02

Typography

Four type stacks each with a single job. Fraunces is identity-defining and NEVER above weight 300. DM Mono is ALWAYS uppercase with 3–5px tracking. Arabic surfaces use Dubai.

Fraunces · Display · weight 100–300 only

We architect the systems that automate, integrate, and transform your enterprise.

Fraunces 100 — the brand voice in display form. The ultra-thin weight is non-negotiable.

Outfit · Body · weight 300 / 400 / 500

Outfit 300 — long-form body. Line-height 1.85 for readability. Used for descriptions, paragraph copy, and form input text.

Outfit 400 — emphasized body, nav links, outcome statements.

Outfit 500 — strong emphasis within paragraphs.

DM Mono · Technical · ALWAYS uppercase + tracked

SEC.01 · CAPABILITIES · X: 0.00 Y: 0.00

CHOICE OF ARCHITECTURE

PROOF · 20+ YEARS · 7 DISCIPLINES · 100% FOUNDER-LED

IBM Plex Sans · Precision · proposals & documents

IBM Plex Sans 300 — reserved for proposals, statements of work, technical specifications, and form labels that demand precision. Not the primary website body font.

Dubai · Arabic · replaces Outfit / DM Mono / IBM Plex

نصمّم الأنظمة التي تُؤتمت، وتربط، وتُحوّل المؤسسة.

جسد فيلانس مهندس بصمت — يبني الأنظمة التي تشعر بها المؤسسة دون أن تراها. عشرون عامًا من الخبرة المتجذّرة في النسيج الرقمي لدولة الإمارات.

٢٠+ سنة · ٧ تخصصات · ١٠٠٪ بقيادة المؤسس

Type Scale

Hero h1

Heading at clamp 28–56px

Fraunces 100 · 2px tracking
Section h2

Section Title

Fraunces 200 · 26–44px
Subsection h3

Subsection

Fraunces 200 · 22–34px
Service h4

Service Name

Fraunces 300 · 20px
Stat20+Fraunces 100 · 36–56px
Body lg

Long-form body copy at 17px.

Outfit 300 · 17px / 1.85
Body md

Default body copy.

Outfit 300 · 16px / 1.85
Body sm

Small body for cards.

Outfit 300 · 14–15px / 1.7
OverlineSEC.04 · CAPABILITIESDM Mono 400 · 11px · 4px
LabelFORM LABELDM Mono 400 · 10px · 3px
MicroFOOTER NOTEDM Mono 400 · 9px · 3px
Fraunces ≤ 300 DM Mono uppercase + tracked Email inputs stay LTR Fraunces 400+ DM Mono mixed case Use Dubai for the wordmark
SEC.03 · SPACING · X: 0.00 Y: 2400
Foundations · 03

Spacing & Layout

A 4px scale powers every measurement. Sections use 80px vertical / 48px horizontal padding (60px / 24px on mobile). Containers cap at 1200px (max), 780px (readable), 580px (tight).

4px--v-space-1
8px--v-space-2
12px--v-space-3
16px--v-space-4
24px--v-space-6
32px--v-space-8
48px--v-space-12
80px--v-space-20

Containers

.v-container · .v-container--readable · .v-container--tight
1200 max
780 readable
580 tight

Breakpoints

smMobile portrait — full-width single columns≤ 640px
mdNav links collapse to CTA only · 2-col stats≤ 768px
lgGrids collapse to 1 column · cap strip 3-col≤ 1024px
xlDefault desktop · full multi-column layouts≥ 1280px
SEC.04 · MOTION · X: 0.00 Y: 3600
Foundations · 04

Motion

CSS-only motion. No JavaScript animation libraries. Every continuous animation respects prefers-reduced-motion: reduce.

Durations

instantMicro-interactions (state echo, button press)100ms
fastHover state, focus ring200ms
baseLink underline, input focus300ms
slowCard hover, panel open500ms
revealScroll-triggered reveal800ms
cinemaHero V mark scale-in1400ms

Easings

--v-ease-outEntrance, settlecubic-bezier(.16, 1, .3, 1)
--v-ease-in-outSustained motion, panel switchcubic-bezier(.4, 0, .2, 1)
--v-ease-snapButton press, decisive statecubic-bezier(.2, 0, .2, 1)

Atmospheric Loops

v-glow · 6s
v-ring-spin · 25–55s
v-scan · 8s
scanning…
SEC.05 · ELEVATION · X: 0.00 Y: 4800
Foundations · 05

Elevation

VEILANCE is mostly flat — depth comes from layered atmosphere (grain, glow, grid) not box shadows. Use shadows only for CTAs and modals.

glow-sm
glow-md
cta
SEC.06 · RADIUS · X: 0.00 Y: 6000
Foundations · 06

Radius & Borders

VEILANCE prefers crisp corners. Radius is reserved for very specific contexts (chip outlines, focus rings on toggles).

0--v-radius-0
2px--v-radius-1
4px--v-radius-2
999pxpill
50%circle
SEC.07 · Z-INDEX · X: 0.00 Y: 7200
Foundations · 07

Z-index Scale

A small, deterministic z-index ladder. Don't invent new values in components — pick the role and reuse the token.

baseDefault stacking context--v-z-base · 1
raisedCard hover, sticky elements within a section--v-z-raised · 10
stickySticky headers within scroll regions--v-z-sticky · 100
navGlobal navigation--v-z-nav · 1000
modalDialog / drawer--v-z-modal · 2000
toastTransient notifications--v-z-toast · 3000
tooltipHover/focus tooltip--v-z-tooltip · 4000
skip-linkAlways on top--v-z-skip-link · 10000
SEC.10 · WORDMARK · X: 0.00 Y: 8400
Brand · 01

Wordmark

Fraunces Light (weight 100), uppercase, 10px letter-spacing at 18px nav size. ALWAYS in Fraunces — even on Arabic pages.

.v-wordmark
<a class="v-wordmark" href="/">VEILANCE</a>
<a class="v-wordmark v-wordmark--sm" href="/">VEILANCE</a>  <!-- 14px / 8px tracking -->
<a class="v-wordmark v-wordmark--lg" href="/">VEILANCE</a>  <!-- 24px / 14px tracking -->
Fraunces 100 Uppercase + tracked Always >= 4.5:1 contrast No rotation / skew No drop shadows or glows No gradient fills Never Dubai on Arabic pages
SEC.11 · V MARK · X: 0.00 Y: 9600
Brand · 02

V Mark

The crystalline V mark is the hero centrepiece. Always transparent background, breathing drop-shadow, three orbital rings. Minimum size 120px width.

.v-vmark + <v-orbital-rings>
<!-- Shorthand: brand mark + breathing glow + 3 orbital rings -->
<v-vmark size="200px"></v-vmark>

<!-- Or compose by hand -->
<div class="v-vmark">
  <v-orbital-rings></v-orbital-rings>
  <img src="veilance-vmark.webp" alt="VEILANCE">
</div>
SEC.11A · LOGO KIT · X: 1.00 Y: 10.20
Brand · 02b

Logo Kit

Every brand surface (browser tab, mobile home screen, OG card, transactional email) uses one canonical mark: the crystalline V derived from dist/veilance-vmark.webp. All scaled variants are exported alongside.

Mark sizes — all derived from the source webp (1024×1024)
favicon svg
SVG · ANY
favicon.svg
favicon
FAVICON · 32
favicon.png
apple touch icon
iOS · 180
apple-touch-icon.png
android icon
ANDROID · 192
icon-192.png
og 512
PWA · 512
icon-512.png
vmark source
SOURCE · 1024
veilance-vmark.webp
<!-- Drop into every <head> — full kit (favicon + PWA + OG + Twitter) -->
<link rel="icon" type="image/svg+xml" href="/dist/favicon.svg">
<link rel="icon" type="image/png" sizes="32x32"  href="/dist/favicon.png">
<link rel="icon" type="image/png" sizes="192x192" href="/dist/icon-192.png">
<link rel="icon" type="image/png" sizes="512x512" href="/dist/icon-512.png">
<link rel="apple-touch-icon" sizes="180x180" href="/dist/apple-touch-icon.png">
<link rel="shortcut icon" href="/dist/favicon.ico">
<link rel="manifest" href="/dist/manifest.webmanifest">
<meta name="theme-color" content="#051E28" media="(prefers-color-scheme: dark)">
<meta name="theme-color" content="#F7F4ED" media="(prefers-color-scheme: light)">
<meta name="color-scheme" content="dark light">

<!-- Open Graph + Twitter -->
<meta property="og:type" content="website">
<meta property="og:site_name" content="VEILANCE">
<meta property="og:title" content="VEILANCE — Brilliance, Unveiled">
<meta property="og:description" content="Boutique IT consultancy. 20+ years, 7 disciplines, founder-led.">
<meta property="og:image" content="/dist/og-image.jpg">
<meta property="og:image:width"  content="1200">
<meta property="og:image:height" content="630">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:image" content="/dist/og-image.jpg">

Social card · 1200×630

og-image.jpg — used for og:image and twitter:image
VEILANCE social card preview

DIMENSIONS · 1200 × 630 · ASPECT 1.91 : 1

Asset manifest

Everything shipped in dist/
FilePurposeDimensions
veilance-vmark.webpCanonical V mark — source of all derivatives1024 × 1024
favicon.svgVector favicon, scales to any size512 × 512
favicon.icoLegacy fallback for older browsers32 × 32
favicon.pngStandard PNG favicon32 × 32
apple-touch-icon.pngiOS home-screen icon180 × 180
icon-192.pngAndroid home-screen / PWA192 × 192
icon-512.pngPWA splash, maskable512 × 512
og-image.jpgOpen Graph / Twitter social card1200 × 630
manifest.webmanifestPWA install manifest
veilance-icons.svgSprite of UI icons used by <v-icon>

Hero use — V mark in context

Default presentation (Deepest surface + breathing glow + orbital rings)
Light-surface use (proposals / print) — keeps the same asset
SEC.12 · LOCKUP · X: 0.00 Y: 10800
Brand · 03

Footer Lockup

Wordmark + 1px vertical divider + tagline. The tagline is "Brilliance, Unveiled." (EN) / "تميُّز يتكشّف" (AR).

.v-footer-lockup
SEC.20 · BUTTON · X: 0.00 Y: 12000
Atoms · 01

Button

DM Mono, uppercase, 3px tracking. Primary = Terracotta fill. Secondary = transparent + bordered. Ghost = no border. White text used ONLY on Terracotta.

Variants
Sizes
States
Block + Icon
HTML
<button class="v-btn v-btn--primary">Start a Conversation</button>
<button class="v-btn v-btn--secondary">Read More</button>
<button class="v-btn v-btn--ghost">Cancel</button>
<button class="v-btn v-btn--primary" data-loading="true">Loading</button>
<button class="v-btn v-btn--primary v-btn--block">Block</button>
SEC.21 · INPUT · X: 0.00 Y: 13200
Atoms · 02

Inputs

All form controls share one visual language: subtle teal-tinted background, 1px border, teal-light focus ring. Labels in DM Mono uppercase.

Text input
As you'd like us to address you.
Invalid format
Textarea
Select
SEC.22 · CHECKBOX/RADIO · X: 0.00 Y: 14400
Atoms · 03

Checkbox & Radio

Custom-rendered squares (checkbox) and discs (radio) over a native input. Focus ring is the same teal-light outline used everywhere.

Checkbox
Radio group
SEC.23 · TOGGLE · X: 0.00 Y: 15600
Atoms · 04

Toggle

A switch built on a native checkbox for screen reader correctness. The DM Mono label sits to the right (or left in RTL).

.v-toggle
SEC.24 · BADGE · X: 0.00 Y: 16800
Atoms · 05

Badge / Chip / Tag

Three flavors of inline marker. Badge = status / count. Chip = removable selection. Tag = neutral metadata.

Inline markers
Default Sprint 04 · 6 weeks Featured CTA Azure Microsoft 365 Power Platform Public Sector Finance
SEC.25 · AVATAR · X: 0.00 Y: 18000
Atoms · 06

Avatar

Used sparingly. Initial in Fraunces 200 on Gulf Teal background, with a 1px Teal Light/8% border.

.v-avatar
YH YH YH
SEC.26 · SPINNER/SKELETON · X: 0.00 Y: 19200
Atoms · 07

Spinner & Skeleton

Loading indicators. The shimmer on skeletons respects reduced-motion (frozen frame at 50%).

Spinner
Skeleton
SEC.27 · PROGRESS · X: 0.00 Y: 20400
Atoms · 08

Progress

A single 2px bar — never tall, never neon. Indeterminate version uses a 30%-width slider.

Determinate · 35%
Indeterminate
SEC.29 · CODE/KBD · X: 0.00 Y: 22800
Atoms · 10

Code & Keyboard

Inline code uses DM Mono on a 2% Teal Light tint. Keyboard hints add a 1px border at 8% Teal Light.

Inline

Open the panel with K or by calling Veilance.toast.show({title: 'Done'}).

/* veilance.css excerpt */
.v-btn--primary {
  background: var(--v-terracotta);
  color: #fff;
}
SEC.40 · CARD · X: 0.00 Y: 24000
Molecules · 01

Card

Four surface levels (page, section, featured, footer). Three hover treatments (top bar, bottom bar, left bar). Featured cards add a grid texture overlay.

Default · hover-top (terracotta)
01

Enterprise Integration Architecture

Make disconnected systems operate as one.

Replace fragile point-to-point wiring with a governed integration layer that scales.

Secondary · hover-left (teal-core)
02

AI & Intelligent Automation

Replace manual volume with machine intelligence.

Classifiers, agents, and routing engines that move thousands of decisions without human touch.

Featured · with grid texture
Bordered + Blueprint corners
03

Process Automation

Eliminate every handoff that doesn't need a human.

SEC.41 · STAT · X: 0.00 Y: 25200
Molecules · 02

Stat

Animated counter on viewport entry (1.6s ease-out). Locale-aware: numeric input animates; non-numeric strings render as-is.

<v-stat>
SEC.42 · QUOTE · X: 0.00 Y: 26400
Molecules · 03

Quote

Fraunces 100 statement with a 2px Terracotta accent bar (left in LTR, right in RTL). Emphasis word in Teal Light, never italic.

.v-quote-block

Our engagements don't add people. They remove manual work — permanently.

— VEILANCE Architecture Practice

SEC.43 · OVERLINE · X: 0.00 Y: 27600
Molecules · 04

Overline

A small DM Mono label preceded by a 24px Teal Light rule. Used to title every section. Use .v-overline--no-rule to drop the rule.

.v-overline
SEC.07 · APPROACH · X: 0.00 Y: 0.00

Every Engagement. Same Sequence.

A small DM Mono label preceded by a 24px Teal Light rule.

SEC.44 · BLUEPRINT · X: 0.00 Y: 28800
Molecules · 05

Blueprint Marks

Corner ticks, coordinate markers, crosshair, grid textures, dimension lines, blueprint dividers. All decorative (carry aria-hidden="true").

Corner ticks (.v-blueprint-corner)
CARD
Coord markers
Crosshair
Grid texture
Blueprint divider
SEC.08 // ENGAGEMENT // Y: 4800
SEC.45 · TABS · X: 0.00 Y: 30000
Molecules · 06

Tabs

Underline-reveal tab strip. Arrow keys / Home / End for keyboard nav. RTL-aware (Left/Right arrows swap).

<v-tabs>

Discovery — frame the problem, identify the constraints, surface every hidden assumption.

Design — the blueprint that makes transformation inevitable.

Build — the architecture rendered in working systems.

Operate — the handover, the runbooks, the long tail.

SEC.46 · ACCORDION · X: 0.00 Y: 31200
Molecules · 07

Accordion

Single-open by default. Add multi attribute for multi-open. + / − marker animates.

<v-accordion>
Every engagement starts with a 2-week design sprint. Architecture comes before allocation; allocation comes before code.
We're Gulf-native, globally capable. Most engagements are UAE-anchored, but we support multi-region rollouts.
From first conversation to signed engagement: 2–3 weeks. From engagement start to first running automation: 4–8 weeks.
SEC.48 · TOOLTIP · X: 0.00 Y: 33600
Molecules · 09

Tooltip

Hover / focus reveal. DM Mono uppercase. Used for icon-only buttons and abbreviated metadata.

.v-tooltip
Architecture-led Sprint 04 Discover → Design
SEC.49 · TOAST · X: 0.00 Y: 34800
Molecules · 10

Toast

Transient notification, anchored bottom-right (bottom-left in RTL). Auto-dismisses after 4 seconds. Call Veilance.toast.show({...}).

Veilance.toast.show(...)
SEC.52 · PAGINATION · X: 0.00 Y: 38400
Molecules · 13

Pagination

Square 36×36 cells. Bordered, no fills. Current page tinted with Teal-Light/6%.

.v-pagination
SEC.53 · TABLE · X: 0.00 Y: 39600
Molecules · 14

Table

DM Mono headers, Outfit body. No vertical rules. Row hover at 3% Teal Light. Use <table> semantics.

.v-table
DisciplineOutcomeLead-time
Enterprise IntegrationMake disconnected systems operate as one6–10 weeks
AI & AutomationReplace manual volume with machine intelligence8–14 weeks
Solution ArchitectureDesign the system before you build it2–4 weeks
SEC.54 · STEPPER · X: 0.00 Y: 40800
Molecules · 15

Stepper

Interactive process stepper. Click or arrow-key any node. Progress line + ring states (idle / active / current).

<v-stepper>
STEP 01

Discover

2 WEEKS

Frame the problem, identify the constraints, surface every hidden assumption. We don't start at "what should we build?" — we start at "what's actually broken?"

Deliverables
  • Stakeholder map & intent doc
  • Current-state architecture
  • Risk & constraint register
ARTIFACT · DISCOVERY MAP
┌── stakeholder ──┐  ┌── intent ──┐
│ CFO · CTO · CEO │──│ outcome    │
└─────────────────┘  └────────────┘
        │
   ┌────▼────┐
   │ root    │
   │ cause   │
   └─────────┘
STEP 02

Design

3 WEEKS

The blueprint. Every integration point named, every data contract defined, every failure mode considered before code touches a repo.

Deliverables
  • Solution architecture doc
  • Data & integration contracts
  • Decision record
ARTIFACT · BLUEPRINT
  ┌──────────┐    ┌──────────┐
  │  CRM     │───▶│  Bus     │
  └──────────┘    └────┬─────┘
                       │
                  ┌────▼─────┐
                  │ AI svc   │
                  └──────────┘
STEP 03

Build

6–10 WEEKS

Architecture rendered in working systems. Continuous delivery, every change observable, every assumption testable.

Deliverables
  • Production-grade integrations
  • Test & observability suite
  • Runbooks
ARTIFACT · DEPLOYMENT
deploy
  ├── stage  ✓
  ├── canary ✓
  └── prod   ▸
STEP 04

Operate

ONGOING

Handover, runbooks, the long tail. The architecture stays sound because someone designed for the day VEILANCE walks away.

Deliverables
  • Operational handover pack
  • Knowledge transfer sessions
  • Optional retainer
ARTIFACT · RUNBOOK
▸ alert thresholds
▸ incident playbook
▸ owner rotation
▸ SLO targets
SEC.55 · ATMOSPHERE · X: 0.00 Y: 42000
Molecules · 16

Atmosphere

The cinematic layer: particles, ambient glow, scan line, orbital rings, scroll indicator, film grain. All decorative, all aria-hidden, all gated by reduced-motion.

<v-particles>
18 particles · 8–22s drift
.v-ambient-glow
.v-scan-line
8s vertical scan
.v-scroll-indicator
Scroll
SEC.60 · HERO · X: 0.00 Y: 43200
Sections · 01

Hero

Cinematic centrepiece. V mark + orbital rings + ambient glow + 18 particles + scan line. Heading uses Fraunces 100 with Teal-Light emphasis. One CTA only.

.v-hero (compact preview)

We architect the systems that automate, integrate, and transform your enterprise.

VEILANCE is an architecture-led IT consultancy. We design the systems the enterprise feels but never sees.

20+ YEARS · 7 DISCIPLINES · 100% FOUNDER-LED

Start a Conversation
SEC.61 · CAP STRIP · X: 0.00 Y: 44400
Sections · 02

Capability Strip

Five disciplines on Gulf Dark, separated by 1px Teal-Light/6% verticals. Hover tints to Gulf Teal/12%.

.v-cap-strip
01
Enterprise Integration
02
Process Automation
03
AI & Intelligent Systems
04
Solution Architecture
05
Programme Recovery
SEC.62 · STATS BAR · X: 0.00 Y: 45600
Sections · 03

Stats Bar

Four counters on Gulf Dark, counter-animated on scroll. Use capability proof only — never client counts or project metrics.

.v-stats-bar
SEC.63 · THESIS · X: 0.00 Y: 46800
Sections · 04

Thesis Divider

Gulf-Teal bar with grid texture. One Fraunces-100 sentence, centered, Teal-Light emphasis word.

.v-thesis

The answer is not more people, more tools, or more budget. It's architecture.

SEC.64 · QUOTE SECTION · X: 0.00 Y: 48000
Sections · 05

Quote Section

A single statement between the Stats bar and Services. Pair the .v-quote-block molecule with a Deepest section.

.v-quote-section

Our engagements don't add people. They remove manual work — permanently.

— Yamen Hmidan, Founder

SEC.65 · OUTCOMES · X: 0.00 Y: 49200
Sections · 06

Outcomes

Three outcome cards on a 2px-gap grid. Top hover bar in Terracotta. Outcome labels in Terracotta Text.

.v-card-grid--3 + .v-outcome-card
8 → 1
CONSOLIDATION

Eight overlapping platforms reduced to a single integration layer — same outcomes, a tenth of the surface area.

90%
AUTOMATED CLASSIFICATION

Monthly ticket triage handled by AI agents. Human queue collapsed to true edge cases.

0
MANUAL HANDOFFS

Procurement workflow re-architected. Four approvals, zero email chains, zero spreadsheets.

SEC.66 · SERVICES · X: 0.00 Y: 50400
Sections · 07

Services

Featured (Gulf-Teal) card spans full width, followed by 2×3 secondary grid. Left hover bar (Teal Core, scaleY).

.v-card-grid--svc
02

AI & Intelligent Automation

Replace manual volume with machine intelligence.

03

Power Platform & Portals

Turn manual processes into self-service platforms.

04

Solution Architecture

Design the system before you build it.

05

Process Automation

Eliminate every handoff that doesn't need a human.

06

Identity & Compliance

Govern access, enforce policy, meet UAE requirements.

07

Digital Strategy & Roadmaps

Align technology investment to business outcomes.

SEC.67 · ENGAGEMENT · X: 0.00 Y: 51600
Sections · 08

Engagement

Four engagement models on a 4-column grid. Bottom hover bar in Teal Core. Use the icon slot for a two-letter glyph.

.v-card-grid--4
DS

Design

A focused architecture sprint to design the system before code touches a repo.

BD

Build

End-to-end delivery of the architecture into production.

OV

Oversee

Architectural oversight of an internal or partner-delivered programme.

RS

Rescue

A failing programme stabilised, re-scoped, and re-architected.

SEC.68 · PROBLEM · X: 0.00 Y: 52800
Sections · 09

Problem (Cinematic)

Three full-viewport scenes — one per C-suite role. Each has a giant Fraunces-100 background keyword at 6% opacity and a unique atmospheric animation.

.v-problem-scene--drag

CEO · OPERATING DRAG

Your organisation moves slower than your competitors. The cost isn't a line item — it's compounding.

Every quarter you defer the architecture conversation, the organisation pays again in cycle time and lost optionality.

.v-problem-scene--debt

CTO · INTEGRATION DEBT

Twenty platforms speaking nineteen languages. The interest payments are now larger than new feature work.

You inherited a landscape, not an architecture. We design the layer that makes it operate as one.

.v-problem-scene--bleed

CFO · MARGIN BLEED

Operating cost climbs year-over-year. Every "transformation" makes the run-rate worse, not better.

Automation that doesn't replace manual volume isn't automation. It's another system to maintain.

SEC.69 · APPROACH · X: 0.00 Y: 54000
Sections · 10

Approach

Use the interactive <v-stepper> molecule on a Deepest section. See the Stepper component above for the full markup.

SEC.70 · CONTACT · X: 0.00 Y: 55200
Sections · 11

Contact

Two columns on Deepest: text + form. Email input stays LTR even in RTL pages.

.v-contact-layout
Start with a Conversation

Architecture is the conversation. Allocation comes next.

Tell us what's actually broken. We'll respond within 48 hours.

Email
Region
Dubai, UAE
SEC.80 · RTL · X: 0.00 Y: 58800
Patterns · 01

RTL & Arabic

Set lang="ar" and dir="rtl" on the root. The DS auto-applies the Dubai font, removes uppercase, reduces letter-spacing to 0.5px, and bumps tiny labels to 12px.

English (LTR)
SEC.04 · CAPABILITIES

Seven Disciplines. One Layer.

Architecture-led delivery, with a single integration plane stitching every system together.

20+ YEARS · 7 DISCIPLINES · 100% FOUNDER-LED

Arabic (RTL)
القسم.04 · القدرات

سبعة تخصصات. طبقة واحدة.

منهج قائم على الهندسة المعمارية مع طبقة تكامل واحدة تربط كل الأنظمة.

٢٠+ سنة · ٧ تخصصات · ١٠٠٪ بقيادة المؤسس

font-familyBody, mono, precision → Dubai. Wordmark stays Fraunces.var(--v-font-arabic)
text-transformUppercase removed from every mono / label classnone
letter-spacingReduced from 3–5px to 0.5px0.5px
font-size bumps9–10px labels bumped to 12px (tashkeel needs room)12px floor
line-heightHeadings increase to 1.41.4
numeralsEastern Arabic (٠١, ٪٤٠) — content layer٠–٩
logical propertiesmargin-inline-start, padding-inline-endpreferred over LTR/RTL props
email inputsStay LTR even on Arabic pagesdir="ltr"
Wordmark stays Fraunces Email / URL inputs stay LTR Use logical props Machine-translated copy Uppercase Arabic labels Translate coordinate markers
SEC.81 · A11Y · X: 0.00 Y: 60000
Patterns · 02

Accessibility

VEILANCE targets WCAG 2.1 AA across every documented pairing. Decorative elements are aria-hidden. Every animation has a prefers-reduced-motion escape.

Focus Indicators

Tab through these controls
Link

Touch Targets

Hero CTA16px vertical + 40px horizontal padding≥ 44 × 44
Submit button14px vertical + 36px horizontal padding44 height
Stepper node32px ring + surrounding label as tap areaAA · 24
Nav link72px nav height = comfortable vertical target44 effective

Reduced Motion

prefers-reduced-motion: reduce

When the user has reduced-motion enabled:

  • All animations/transitions clamp to 0.01ms.
  • .v-reveal classes snap to their final state.
  • Particle field is suppressed entirely (no DOM nodes created).
  • Stat counters jump to final value without easing.
  • Scroll behavior reverts to auto.

Semantic Structure

page headingExactly one h1 per page (hero)<h1>
section titlesEvery section opens with an h2<h2>
subsectionsh3 for sub-headings within sections<h3>
skip linkFirst element in <body>, visible on focus.v-skip-link
decorativeParticles, grids, scan, coord markersaria-hidden="true"
form statusLive region for submit feedbackrole="status" aria-live="polite"
SEC.82 · VOICE · X: 0.00 Y: 61200
Patterns · 03

Voice

Quietly confident. Outcome-focused. Regional authority. Capability proof, never client counts.

PILLAR 01

Quietly Confident

VEILANCE doesn't shout. Every statement is backed by substance. The confidence comes from 20 years of doing the work — not from marketing copy.

PILLAR 02

Precise, Not Technical

We speak to decision-makers, not developers. The language is clear, direct, and outcome-focused. Jargon is reserved for the implementation — never the conversation.

PILLAR 03

Regional Authority

VEILANCE isn't learning the Gulf — it grew up here. Geography is communicated through context and credibility, not explicit labels.

PILLAR 04

Impact Over Activity

The voice always points to outcomes, never hours. We measure in processes eliminated, decisions accelerated, complexity dissolved.

Words We Use

StrategicArchitectInvisibleAutomateEliminateSimplifyIntelligencePrecisionOutcomeEmbeddedGulf-nativeTransformationIntegrateAccelerateDragDebtBleedFounder-ledDiscipline

Words We Avoid

DisruptSynergyLeverage (verb)Bleeding-edgeParadigmCircle backDeep dive (non-literal)PivotScalable (no context)Body shopResources (re: people)

Tone Spectrum

Website"Your enterprise runs on systems that were never architected."Cinematic, confrontational
C-Suite Hook"You inherited a landscape, not an architecture."Direct, empathetic
Thesis"The answer is not more people, more tools, or more budget. It's architecture."Declarative, singular
Services"Make disconnected systems operate as one."Outcome-first
Proposals"This architecture eliminates 3 manual handoffs."Precise, authoritative
SEC.83 · DON'TS · X: 0.00 Y: 62400
Patterns · 04

Don'ts Gallery

A reference of brand violations. Every example here is a violation — do not copy these patterns.

✕ Fraunces above weight 300

Architecture That Works

Heavy Fraunces breaks identity
✕ DM Mono mixed case

Section 01 · Capabilities

DM Mono must be uppercase
✕ Sand Mid as text colour

Decorative-only colour fails contrast.

Decorative tokens never become text
✕ Terracotta-on-dark for small text

Small terracotta text fails AA (3.54:1).

Use --v-terracotta-text (6.12:1) instead
✕ Italic emphasis

automate, integrate, transform

Emphasis = colour only, never italic
✕ Dubai for the Arabic wordmark

فيلانس

Wordmark stays Fraunces, even in AR
✕ Multi-CTA hero
✕ Client logos / project counts

"Trusted by 47 enterprises across the GCC."

Capability proof only — no client data
SEC.90 · INSTALL · X: 0.00 Y: 63600
Integration · 01

Quickstart

Three integration paths. Pick the one that matches your stack.

A · Plain HTML / CDN

Drop these two tags into <head>
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Fraunces:opsz,[email protected],100;9..144,200;9..144,300&family=Outfit:wght@300;400;500&family=IBM+Plex+Sans:wght@300;400;500&family=DM+Mono:wght@300;400;500&family=Cairo:wght@300;400;500;700&display=swap">
<link rel="stylesheet" href="/dist/veilance.css?v=1779882879">
<script type="module" src="/dist/veilance.js?v=1779882879"></script>

<body class="v-body" data-theme="dark">
  <a href="#main" class="v-skip-link">Skip to content</a>
  <!-- your content -->
</body>

B · npm

Install + import
npm install @veilance/ds

# In your entry file:
import '@veilance/ds/css';
import '@veilance/ds/js';

C · Tokens only

Just the CSS variables
<link rel="stylesheet" href="/dist/veilance.css?v=1779882879">

/* Then use the tokens directly */
.my-card {
  background: var(--v-surface-section);
  color: var(--v-on-primary);
  border: 1px solid var(--v-border-5);
  font-family: var(--v-font-display);
}

Theme & Language

JavaScript API
// Switch theme
Veilance.setTheme('light');  // or 'dark'

// Switch language (and direction)
Veilance.setLang('ar');      // sets lang="ar" dir="rtl"
Veilance.setLang('en');      // sets lang="en" dir="ltr"

// Show a toast
Veilance.toast.show({
  title: 'Brief Submitted',
  message: 'We\'ll respond within 48 hours.',
  variant: 'accent',
  duration: 4000,
});
SEC.91 · API · X: 0.00 Y: 64800
Integration · 02

Web Components API

All components are framework-agnostic custom elements. Light DOM only — your CSS still applies, your selectors still work.

<v-stat>Animated counter on viewport entryvalue, unit, desc, prefix, suffix, duration
<v-reveal>Wraps content with scroll-triggered revealvariant, delay
<v-particles>Generates floating particlescount, min-duration, max-duration
<v-orbital-rings>Three orbital rings (decorative)
<v-stepper>Process stepper · arrow-key navevents: v-stepper:change
<v-tabs>Tabs with arrow-key navevents: v-tabs:change
<v-accordion>Disclosure listattr: multi (allows multi-open)
<v-modal>Native <dialog> wrappermethods: open(), close()
<v-toast-region>Toast container (auto-injected)Veilance.toast.show(...)
<v-toggle>Accessible switchlabel, name, checked
<v-theme-toggle>Dark/Light theme toggle (persists)localStorage: veilance-theme
<v-lang-toggle>EN/AR toggle (sets lang & dir)localStorage: veilance-lang
<v-copy-button>Clipboard copy helpertarget (selector) or text
<v-nav>Toggles data-scrolled when scrolledthreshold (default 60)
SEC.99 · CHANGELOG · X: 0.00 Y: 66000
Reference

Changelog

v1.2.6Fit fixes — <v-daterange> field widened to fit full YYYY-MM-DD dates, .v-table-wrap promoted to global DS utility, hero CTAs wrap on narrow viewports, last unwrapped instruction-page table fixed. Page-wide overflow sweep at 375px is now clean.2026-05-28
v1.2.5Real <v-daterange> web component — replaces the prior static markup. Popover calendar, first click sets start, second click sets end, click-before-start restarts, range highlight, Clear / Escape, dispatches v-daterange:change.2026-05-28
v1.2.3Mobile burger + slide-in TOC drawer on instructions page (≤1024px). New <v-back-to-top> web component — reusable across any DS page, fades in past 400px scroll, smooth scroll, RTL + reduced-motion aware.2026-05-28
v1.2.1Hotfix — sticky topbar broken by html { overflow-x: hidden }. Swapped hiddenclip on html + body. Refreshed displayed version in topbar and essence tag.2026-05-28
v1.2.0Light theme rework — 5-layer cream surface stack, ink-1..4 text scale (AAA on every surface), warm shadows, raised topbar. No token API breakage.2026-05-27
v1.1.0App-grade additions — intent / chart / density tokens, app-shell + workspace bar, accessibility primitives.2026-05-26
v1.0.0Initial release — tokens, primitives, sections, motion, RTL, light+dark, accessibility, voice. Mirrors VEILANCE Brand Guidelines v3.2026-05-26

VEILANCE — Brilliance, Unveiled.

[email protected] · DUBAI, UAE

SEC.100 · INTENT TOKENS · X: 1.10 Y: 0.00
v1.1 · Tokens

Intent · Chart · Density

Semantic intent tokens (success / warning / info / danger) for application status. A 7-tone chart palette for data viz. Density modes (compact / comfortable / spacious) for power-user surfaces.

Semantic intent

Success
#5BA88CAAA 7.4:1
--v-success · --v-success-text
Warning
#D4B477AAA 7.5:1
--v-warning · --v-warning-text
Info
#7FC4D4AAA 8.79:1
--v-info · --v-info-text
Danger
#A5603ACTA fill
--v-danger · --v-danger-text

Chart palette · 7 tones

--chart-1
--chart-2
--chart-3
--chart-4
--chart-5
--chart-6

Density modes

Set [data-density="compact"] on the root or any subtree to scale every control 0.8× — for power users / data-heavy surfaces. spacious goes the other way (1.15×) for touch-first / public-facing screens.

compact
comfortable (default)
spacious
SEC.101 · AAA · X: 1.10 Y: 1.00
v1.1 · Accessibility

WCAG AAA Contrast Mode

Opt-in via <html data-contrast="aaa">. Lifts every text token to ≥ 7:1 on its surface, thickens the focus ring to 3px, and bumps brand CTAs to weight 500. Brand marketing surfaces stay on the default palette for visual hierarchy; app surfaces (forms, dashboards) declare AAA.

Tip
Use the AAA button in the top bar to preview the entire doc in AAA mode. It persists in localStorage so you can audit at your leisure.
Default (AA)
CAPABILITIES

Sample heading

Tertiary text on Deepest at 6.4:1 — AAA-large only.

AAA mode
CAPABILITIES

Sample heading

Tertiary text bumped to ≥ 7:1 — AAA for body.

SEC.102 · ICONS · X: 1.10 Y: 2.00
v1.1 · Atoms

Icon System

100+ icon sprite shipping in dist/veilance-icons.svg. Reference any icon by name via the <v-icon> element. Stroke is currentColor so icons inherit text colour. Sizes: sm (14), default (18), lg (22), xl (32).

All icons
home dashboard grid layout list menu search filter sort settings sliders user users bell mail phone message edit trash copy share download upload save refresh external link paperclip bookmark star heart thumbs-up check check-circle x x-circle plus minus info alert-circle alert-triangle lock unlock shield shield-check eye eye-off calendar clock credit-card dollar bar-chart line-chart pie-chart trending-up trending-down activity target globe map-pin tag flag key zap sun moon laptop smartphone monitor cloud database server cpu package truck gift coffee rocket help command sparkles layers bookmark-plus receipt megaphone compass bot mic camera chevron-left chevron-right arrow-up-right more
<v-icon name="search"></v-icon>
<v-icon name="bell" size="lg"></v-icon>
SEC.103 · ALERT · X: 1.10 Y: 3.00
v1.1 · Atoms

Alert

Inline contextual messaging. Distinct from toast (transient): an alert sits inside the page flow and persists until dismissed or addressed. Four intents map to brand-aligned semantic colours.

Info
Heads up — the Practice tier renewal is in 7 days.
Success
Architecture blueprint published. Three stakeholders notified.
Warning
Sprint cadence has slipped 2 days behind cadence target.
Danger
Integration with Azure failed authentication. Re-link to continue.
SEC.104 · EMPTY · X: 1.10 Y: 4.00
v1.1 · Molecules

Empty State

A first-class component, not a placeholder. Combines illustration ring, title, supportive copy, and a primary CTA.

.v-empty
No engagements yet

Every engagement starts with a 2-week architecture sprint. The blueprint comes before the allocation, the allocation comes before the code.

SEC.105 · OTP · X: 1.10 Y: 5.00
v1.1 · Atoms

OTP Input

Six-digit one-time-code input. Paste-aware, keyboard-navigable, numeric-keypad-aware on mobile, autocomplete-hinted for SMS-delivered codes.

<v-otp length="6">
SEC.106 · SLIDER · X: 1.10 Y: 6.00
v1.1 · Atoms

Slider

Native range input themed to the brand. Teal-light thumb with focus glow ring, hair-thin track. Touch-target compliant on mobile.

<v-slider min="0" max="100" value="65">
SPRINT VELOCITY 7 / 10
SEC.107 · COMBOBOX · X: 1.10 Y: 7.00
v1.1 · Molecules

Combobox

Searchable select with keyboard navigation. Filters the option list as you type. Use for any select with more than ~7 options.

<v-combobox>
Lead
Practice
SEC.108 · COMMAND · X: 1.10 Y: 8.00
v1.1 · Molecules

Command Palette

⌘K / Ctrl-K opens. Linear-class command surface — type-to-filter, arrow-key nav, grouped actions, shortcut hints.

<v-command> (press K)
SEC.109 · CALENDAR · X: 1.10 Y: 9.00
v1.1 · Molecules

Calendar & Date Picker

A first-class calendar primitive paired with a popover-anchored date picker. Locale-aware weekday labels, keyboard navigation, today marker, selected state.

<v-datepicker>
<v-daterange>
SEC.110 · FILE · X: 1.10 Y: 10.00
v1.1 · Molecules

File Upload / Dropzone

Drag-and-drop or click to upload. Renders default illustration + copy when content slot is empty.

<v-file-drop>
SEC.111 · DRAWER · X: 1.10 Y: 11.00
v1.1 · Molecules

Drawer & Sheet

Drawer slides in from the trailing edge — for detail panels, filters, quick-edit forms. Sheet slides in from the bottom — for mobile actions, modals, and contextual menus.

<v-drawer>
<v-sheet> (mobile bottom sheet)

Engagement details

Quick-edit panel. Most app surfaces should default to a drawer over a modal — preserves page context while still being clearly modal in attention.

Choose action

SEC.113 · CHARTS · X: 1.10 Y: 13.00
v1.1 · Data Viz

Charts

SVG-based chart primitives, themed with the chart palette. No external dependencies — pure custom-element renderers covering area, line, bar, and sparkline. Pair with Recharts/Chart.js if you need scatter / radar / heatmap.

Area chart
Line chart
Bar chart
Sparkline (inline)

Last 30 days: +24%

SEC.114 · DATA TABLE · X: 1.10 Y: 14.00
v1.1 · Molecules

Advanced Data Table

Wrap a <table> in <v-data-table> to get sort, filter, and row-selection wiring. Sticky header by default. Click any sortable column header to sort.

<v-data-table>
EngagementDisciplineOwnerStartedStatus
Mubadala · Integration LayerEnterprise IntegrationY. Hmidan2026-03-12Active
DEWA · AI TriageAI & AutomationR. Bahri2026-04-02Active
Etihad · Sourcing PortalPower PlatformY. Hmidan2026-02-18At-risk
Mashreq · Identity RefreshIdentity & ComplianceL. Khoury2026-01-05Paused
RTA · Process AutomationProcess AutomationY. Hmidan2026-05-01Active
SEC.115 · FORM · X: 1.10 Y: 15.00
v1.1 · Molecules

Form Composer

A composition system: .v-form wraps .v-form-sections, each with a head + grid of fields, and an action bar at the end. Auto-collapses to single column on mobile.

.v-form
Engagement
The scope, cadence, and stakeholders. Architecture-led.
Outcomes
What this engagement should deliver. Outcomes, not activities.
SEC.116 · MORE ATOMS · X: 1.10 Y: 16.00
v1.1 · Atoms

More Atoms

Button group, toggle group, number stepper, rating, color picker, tag input, secret field, input group, status indicator, banner, cookie banner.

Button group · Toggle group
Number stepper · Rating
Input group · Tag input
https:// .com
Secret field
Status indicators
Live Healthy Degraded Down Idle
Banner
Sprint 04 closes Friday. Three blueprints ready for review.
Scheduled maintenance Friday 18:00 GST. Expected 20 minutes.
SEC.117 · MORE MOLECULES · X: 1.10 Y: 17.00
v1.1 · Molecules

More Molecules

Avatar group · Status dot · Comment thread · Timeline · Notification list · Filter panel · Tree view · Code block · Integration card · Kanban · Wizard · Workspace switcher.

Avatar group · Status dot
YHRBLK+4
YH
Workspace switcher
Comment thread
YH
Yamen2H AGO

Reviewed the integration blueprint. Three boundary changes — pinging @rana to validate.

RB
Rana45M AGO

Boundary 2 conflicts with the current ESB schema. Suggest re-shaping the canonical envelope before Sprint 05.

Timeline
  1. Architecture sprint kicked off
    SPRINT 04 · 2026-03-12
  2. Blueprint v1 published
    2026-03-21
  3. Stakeholder review
    2026-04-03 · IN PROGRESS
  4. Build kickoff
    2026-04-15
Tree view
practice
roadmap.md
blueprint-v3.md
Integration card
Microsoft Azure
Provisioning, identity, observability.
Connected
Wizard / linear stepper
Discover
2Design
3Build
4Operate
SEC.120 · MOBILE · X: 1.10 Y: 20.00
v1.1 · Mobile

Mobile Patterns

Brand the same way across web, webapp, and mobile native-feel surfaces. Safe-area aware, touch-target-compliant, platform-flavoured via data-platform="ios" or data-platform="android".

Mobile nav · Bottom nav · FAB
Dashboard

Architecture practice

SPRINTS ACTIVE
8
+2 vs. last week
OUTCOMES SHIPPED
23
Action sheet · Swipe row · Pull refresh
PULLED TO REFRESH
YH
Architecture blueprint v3
2H AGO

Platform skinning

Toggle the Web button in the top bar to cycle through web · iOS · Android. Buttons gain platform-native rounding (iOS = 12px corners, Android = 4px crisp), and font stacks switch to SF Pro / Roboto-aligned defaults.

SEC.130 · AUTH · X: 1.10 Y: 30.00
v1.1 · SaaS

Auth Shell

Centered card on a Deepest surface. Brand wordmark + tagline, social login providers, divider, primary form. See the full auth pattern template.

VEILANCE
Sign in
Architecture starts here.
OR
SEC.131 · SETTINGS · X: 1.10 Y: 31.00
v1.1 · SaaS

Settings Page

Left-anchored nav + main panel + sticky save bar. See the full settings pattern template.

SEC.132 · PRICING · X: 1.10 Y: 32.00
v1.1 · SaaS

Pricing Tiers

Three-tier responsive grid. Featured tier gets Gulf Teal background + grid texture overlay.

.v-pricing · .v-price-card
STARTER
$2,400 /mo

A focused architecture sprint for a single engagement.

  • 1 active engagement
  • 2-week sprint cadence
  • Email support
ENTERPRISE
Custom

Architecture-as-a-practice at scale, embedded in your organisation.

  • Unlimited engagements
  • Dedicated architect bench
  • Quarterly architecture review
  • SLA-backed delivery
SEC.133 · KPI · X: 1.10 Y: 33.00
v1.1 · Dashboard

KPI & Metric Grid

Dashboard tile pattern. Each KPI shows label, value, optional delta, optional sparkline. Combine with .v-metric-grid for a tight 2-pixel-gap board.

.v-metric-grid + .v-kpi
ACTIVE ENGAGEMENTS
8
+2 this sprint
OUTCOMES SHIPPED
23
+6 MTD
HOURS ARCH-LED
1,240
−4% vs goal
DECISIONS ACCELERATED
348
SEC.140 · TOKENS.JSON · X: 1.10 Y: 40.00
Integration

design-tokens.json (W3C)

Every token published as W3C Design Tokens Community Group v1 (Oct 2025 stable). Import directly into Figma Variables, Style Dictionary, or Tokens Studio.

dist/veilance-tokens.json
{
  "$schema": "https://design-tokens.org/schemas/tokens.json",
  "$metadata": {
    "name": "@veilance/ds",
    "version": "1.1.0"
  },
  "color": {
    "gulf": {
      "deepest":     { "$value": "#051E28", "$type": "color" },
      "teal-light":  { "$value": "#7FC4D4", "$type": "color" }
    }
  },
  "typography": {
    "family": {
      "display": { "$value": ["Fraunces", "Georgia", "serif"], "$type": "fontFamily" }
    }
  }
}
SEC.141 · TAILWIND · X: 1.10 Y: 41.00
Integration

Tailwind v4 Preset

If your app uses Tailwind v4, import the preset to get every brand token as a utility class.

dist/veilance-tailwind.css
@import "@veilance/ds/tailwind";

<button class="bg-terracotta text-white font-mono uppercase tracking-mono px-10 py-4 hover:bg-terracotta-hover">
  Start a Conversation
</button>

<div class="bg-deepest text-text-primary p-section-py font-display">...</div>
SEC.142 · TS · X: 1.10 Y: 42.00
Integration

TypeScript Types

Full .d.ts for the JS API, every custom element, and every custom event — including JSX support for React / Solid / Preact consumers.

dist/veilance.d.ts
import { Veilance } from '@veilance/ds/js';

Veilance.setTheme('dark');
Veilance.setLang('ar');
Veilance.setContrast('aaa');
Veilance.toast.show({ title: 'Saved', message: 'Blueprint published.', variant: 'accent' });

// Strongly-typed custom elements
const stepper = document.querySelector('v-stepper');
stepper?.activate(2);

// Strongly-typed events
document.addEventListener('v-stepper:change', (e) => {
  console.log(e.detail.index); //  ← number
});