mbisro.com
Hero · landing page
Bar-Mark groot, headline met underline-accent, service-tags. De canonical implementation.
Bar-Mark — het digitale mark
Wordmark + 6px verticale accent-bar in Industrial Blue. Favicon 16px t/m 512px. Twee tokens als props: color (wordmark) en accent (bar). Nooit <img> — span-lockup voor JSX, pure-SVG fallback voor email/print.
Bar-Mark
Light
Bar-Mark
Industrial Blue
Industrial Blue
Diep industrieel blauw. Gebruikt als bar-accent, underline, left-border, CTA, en getal-accent. Nooit als grote achtergrondkleur — overweldigt en kalft autoriteit af. De enige chromatische kleur in het systeem. Voor uitzendbureau-context geeft het seriositeit zonder corporate-kil.
Neutrale schaal
✓ Underline accent
✓ Left-border tag
✓ CTA button
✓ Getal-accent
✗ Achtergrond fill
✗ Overal plaatsen
JetBrains Mono — Display / Mark
Mono geeft het mark technische precisie — letters in vaste raster, evoceert engineering / CNC / drawings. Alleen voor wordmark, headers, en numerieke accents.
Inter / IBM Plex Sans — Body / UI
Van TIG-lasser tot CNC-draaier — voor elk vak een vakman, voor elke vakman vast werk.
Display
52px/800
H1
40px/800
H2
30px/700
H3
22px/700
Body Large
18px/400
Body
16px/400
Small
13px/400
Caption
11px/700
Buttons — hard offset shadow (craft signature)
Cards — asymmetrisch grid
Projecten afgeleverd
Van gaming-PC tot complete webshop. Elk project direct contact, vaste prijs, geen verrassingen.
PC Build Service
Custom gaming-PC van component-advies tot assemblage en installatie.
MEER INFO →Web & Branding
Next.js webshops en volledige huisstijl. Geen template, nooit.
MEER INFO →Drop dit in Claude, Cursor, of Codex context. De agent bouwt dan direct on-brand — Industrial Blue als signature, craft-details inbegrepen.
You are building UI for MBI s.r.o. — Dutch uitzendbureau (staffing agency) for the metalworking sector.
Audience: lassers, draaiers, fitters, montage-medewerkers + their employers (metaalbouwers, scheepswerven, machinefabrieken).
Voice: werkvloer-Nederlands. Concrete (loon, locatie, contract). Geen recruiter-mist. Tweede persoon enkelvoud (je) default.
MARK: Bar-Mark — wordmark + 6px verticale accent-bar. Span-lockup voor JSX:
<span style={{display:"inline-flex",alignItems:"center",gap:size*0.20}}>
<span style={{width:size*0.075,height:size*0.95,background:"#1E5BA8"}} aria-hidden />
<span style={{fontFamily:"ui-monospace,monospace",fontSize:size,fontWeight:800,letterSpacing:"-.025em"}}>MBI</span>
</span>
Pure-SVG fallback for favicon/email — see /brand/mbi-bar-mark.svg.
COLORS: bg=#F2EDE4 (paper-cream, never #fff), text=#0E1116 (steel-900), accent=#1E5BA8 (Industrial Blue — bar, underlines, left-borders, CTA only).
FORBIDDEN: #0066ff (rookie blue), recruiter-purple gradients, large blue backgrounds, border:1px solid (use shadow instead).
FONTS: JetBrains Mono 800 headings (-0.025em tracking) + Inter 400/500 body. Mono only for: wordmark, headings, numerieke accents. Never sans-headings.
BORDERS: box-shadow: rgba(14, 17, 22,0.08) 0px 0px 0px 1px — never CSS border
FOCUS: box-shadow: 0 0 0 3px rgba(30, 91, 168,0.25)
SHADOWS:
card: rgba(14, 17, 22,0.06) 0px 1px 3px, rgba(14, 17, 22,0.08) 0px 0px 0px 1px
float: rgba(14, 17, 22,0.15) 0px 8px 24px, rgba(14, 17, 22,0.08) 0px 0px 0px 1px
CTA hard offset (craft signature): 3px 3px 0 rgba(30, 91, 168,0.35)
CRAFT RULES (prevents AI-slop):
- Industrial Blue as ACCENT only — bar, underline, left-border, number highlight, CTA. Never large fill.
- Hard offset shadow on primary CTA: box-shadow: 3px 3px 0 rgba(30, 91, 168,0.35)
- Asymmetric grids on overzicht-pages — break uniform columns with col-span-full
- Headline tweede regel: fade naar 18% opacity voor visuele diepte ("Vakmensen / voor metaal.")
- Job listings: titel = functie + locatie + loon + contract. Niet "Spannende kans..."
- Numbers as design elements (counts, ervaring-jaren) in Industrial Blue
- Service tags: border-left: 2px solid #1E5BA8 (geen full border elsewhere)
- Vakkennis-Engels mag (TIG, MIG/MAG, CNC). Recruiter-Engels nooit ("leverage", "opportunity").
COMPONENTS:
- Primary btn: #0E1116 bg, #F2EDE4 text, 8px radius, 10/20px padding, shadow: 3px 3px 0 rgba(14, 17, 22,0.20)
- Industrial Blue CTA: #1E5BA8 bg, white text, shadow: 3px 3px 0 rgba(30, 91, 168,0.35)
- Vacature-card: #E8E3D9 bg, 12px radius, shadow-card, blue-bordered service-tags
- Worker-profiel: avatar (initials of foto) + naam mono + status pills (groen=beschikbaar, blue=cert valid)
- Input: #F2EDE4 bg, shadow-border, 8px radius:root van globals.css:root {
--koper: #1E5BA8; /* Signature — links, underlines, CTA */
--koper-hover: #14457E;
--koper-tint: rgba(30, 91, 168,0.10);
--ink: #0E1116;
--ink-mid: #2a2a2a;
--ink-soft: #5a5a5a;
--mid-aa: #5a5a5a; /* Captions, metadata, eyebrow text — WCAG AAA on paper (6.4:1). Aliased to Ink Soft */
--mid: #6B7280; /* DECORATIVE ONLY — placeholders, divider labels. Fails AA for body text */
--rule: #D4D0C5; /* Decorative dividers, never text */
--paper-dim: #E8E3D9;
--paper: #F2EDE4;
--steel-700: #1F252E; /* Surface dark — secondary card bg in dark mode */
--steel-500: #3A4350; /* Muted dark — divider in dark, never text */
--font-display: var(--font-display), ui-monospace, 'JetBrains Mono', monospace;
--font-body: var(--font-body), ui-sans-serif, 'Inter', system-ui, sans-serif;
--font-brand: var(--font-brand), 'IBM Plex Sans', system-ui, sans-serif;
--shadow-border: rgba(14, 17, 22,0.08) 0px 0px 0px 1px;
--shadow-card: rgba(14, 17, 22,0.06) 0px 1px 3px,
rgba(14, 17, 22,0.08) 0px 0px 0px 1px;
--shadow-float: rgba(14, 17, 22,0.15) 0px 8px 24px,
rgba(14, 17, 22,0.08) 0px 0px 0px 1px;
--shadow-cta: 3px 3px 0 rgba(30, 91, 168,0.35);
--focus-ring: 0 0 0 3px rgba(30, 91, 168,0.25);
/* Motion tokens (added 2026-04-26) */
--ease-craft: cubic-bezier(.2,.8,.2,1);
--dur-fast: 120ms;
--dur-base: 200ms;
--dur-slow: 360ms;
}
@media (prefers-reduced-motion: reduce) {
:root { --dur-fast: 0ms; --dur-base: 0ms; --dur-slow: 0ms; }
}Beweging mag voelen — maar niet zichzelf vieren. Drie durations, één easing. Reduced-motion clamps alles naar 0ms.
Craft easing
cubic-bezier(.2, .8, .2, 1)
Snelle out, langzame settle. Eén easing voor het hele systeem — geen ease-in-out spaghetti per component.
fast
120ms
--dur-fast
Hover, button-press, micro-interactions
base
200ms
--dur-base
Modals, dropdowns, accordion-toggles
slow
360ms
--dur-slow
Hero reveals, page transitions, stagger reveals
Stagger
Reduced-motion
Honor prefers-reduced-motion: reduce.
Alle duration-vars clamp naar 0ms via media-query in :root. Geen per-component opt-out nodig.
Werkvloer-Nederlands. Tweede persoon enkelvoud ("je") als default. Concreet over wat het werk is, wat je verdient, en wanneer je begint. Geen recruiter-mist, geen "spannende uitdagingen", geen Engels waar Nederlands volstaat.
Direct
Kort, imperatief, geen vulwoorden. "Bel Jan op 06-..." niet "Voor meer informatie kunt u contact opnemen met onze afdeling".
Vakkundig
Specifiek over technieken: TIG, MIG/MAG, plasmasnijden, CNC-draaien. Geen "metaalverwerking" als je TIG-lassen bedoelt.
Eerlijk
Schrijf het uurloon, contract-type, ploegendienst, en reisafstand. Geen verborgen voorwaarden, geen "marktconform salaris".
Copy — voorbeeld-paren
Vacature-CTA
✗ Don't
Klik hier voor meer informatie over deze interessante functie
✓ Do
Solliciteer in 2 min →
Waarom: Imperatief + duidelijke moeite-belofte. Niet "klik" + interesse-claim die vacature moet bewijzen.
Vacature-titel
✗ Don't
Spannende kans voor gedreven metaalprofessional
✓ Do
Lasser MIG/MAG · Tilburg · €17–22 p/u · vast contract
Waarom: Functie + locatie + loon + contract. Vier feiten beslissen 90% van de sollicitaties — zet ze in de titel.
Recruiter-bericht (eerste contact)
✗ Don't
Beste meneer/mevrouw, ik wil u graag in contact brengen met een van onze relaties voor een interessante carrière-stap.
✓ Do
Hoi Mark, ik zag je TIG-ervaring op de scheepsbouw — heb iets in Vlissingen, €23 p/u, dagdienst. 5 min bellen vanavond?
Waarom: Naam + relevante skill + concrete match + tijd-vraag. Recruiter-formaliteit kost vertrouwen, niet bouwt het.
Foutmelding (sollicitatie-form)
✗ Don't
Er is iets misgegaan. Probeer het opnieuw.
✓ Do
Sollicitatie kon niet verzonden worden. Bel ons direct: 088-XXX XXXX (ma–vr 7:00–18:00).
Waarom: Wat is fout + alternatief pad. Op werkvloer-context vooral: telefoon-fallback voor mensen die liever bellen.
Service-tag
✗ Don't
Innovatieve oplossingen voor de metaalsector
✓ Do
Lassers · Draaiers · Fitters
Waarom: Concrete vakken, niet abstracte branche-claim. Drie tags zegt meer dan één marketing-zin.
Bevestiging na sollicitatie
✗ Don't
Bedankt voor uw sollicitatie. Wij nemen z.s.m. contact met u op.
✓ Do
Bedankt Mark — ik bel je morgen tussen 9:00 en 12:00 op 06-XXX XX XXX. Als ik niet bel, bel mij: 088-XXX XXXX.
Waarom: Naam + concreet tijdvenster + reciprociteit. "z.s.m." is recruiter-luiheid.
Hero claim
✗ Don't
MBI — dé partner voor uw metaalsector personeelsbehoeften
✓ Do
MBI · uitzendbureau metaalsector · NL.
Waarom: Naam + sector + land. Footer dekt KvK + adres. Hero hoeft niets te bewijzen, alleen plaatsen.
Werkvloer-Nederlands · stance
Het systeem in de praktijk — zeven contexten waar MBI's brand-systeem leeft. Zelfde tokens, zelfde tone, andere oppervlakte. Per kaart één detail dat de inzet apart zet.
mbisro.com
Hero · landing page
Bar-Mark groot, headline met underline-accent, service-tags. De canonical implementation.
vacature · detail
Job listing card
Open · 3 plaatsen
Lasser MIG/MAG · Tilburg
€17–22 p/u · vast contract · 36u dagdienst
Loon + locatie + contract als titel. Skill-tags met blue left-border. Solliciteer-CTA met hard offset.
kandidaat · profiel
Worker dashboard card
Mark Kuipers
TIG-lasser · Vlissingen · sinds 2019
7
Jaar
Bar-Mark als avatar-context. Status-badge in Industrial Blue. Numerieke ervaring als getal-accent.
recruiter · WhatsApp
Outreach template
Werkvloer-NL + concrete match + tijd-vraag. Geen recruiter-formaliteit.
vacatures · overzicht
Asymmetric grid + count badges
Lassers (alle disciplines)
MIG · MAG · TIG · plasma
Hoofd-categorie span 2 + count in Industrial Blue. Sub-categorieën compact, getal als visual hook.
visitekaartje
Print · 85×55mm
Jan de Vries
Recruiter · MBI metaalsector
+31 6 X · jan@mbisro.com
Vakmensen voor de metaalsector
Recto: BarMark + naam-blok. Verso: tagline + brushed-steel texture. Spotvernis op bar.
email · bevestiging
Transactional template
Bar-Mark in header. Concreet tijd-venster + reciprociteit-pad. Footer met fysiek adres ipv "u kunt ons bereiken".
Brand-discipline ≠ vrijbrief om WCAG te negeren. Elke kleur-paar is hier expliciet gemeten — gebruik alleen de combinaties die AA/AAA halen.
Contrast pairs (WCAG)
Focus ring — Industrial Blue
Tab door deze inputs — focus is altijd zichtbaar, nooit outline:auto.
Stance
--focus-ringprefers-reduced-motion clamp via CSS-vars<img> — Bar-Mark inline SVG met aria-label="MBI"Spring naar inhoud als eerste tabstoph1 per pagina, geen skip h2→h4Dark mode — preview
Inverteer Ink ↔ Paper. Industrial Blue blijft hetzelfde — werkt op beide. Geen aparte dark-Industrial Blue variant.
Light · default
Voorbeeld hero
Ink op paper, Industrial Blue als underline-accent.
Dark
Voorbeeld hero
Paper op ink, Industrial Blue ongewijzigd.
8-stop scale gebaseerd op 4px-grid. Geen vrije waardes — kies dichtstbijzijnde token. Gap, padding, margin allemaal hier uit.
4px--space-1
icon-gap, badge-padding
8px--space-2
compact gaps, chip-padding
12px--space-3
card-padding, list-gap
16px--space-4
default gap, button-y
24px--space-6
section-padding, card-gap
32px--space-8
block-margin, hero-gap
48px--space-12
section-block-margin
64px--space-16
page-padding, hero-block
Vier shadow-niveaus. Geen 1-px CSS-borders — alle randen via box-shadow met inset 1px. Layered surfaces voor hover, focus, modals.
shadow-border
default chrome — replaces border:1px solid
rgba(14, 17, 22,0.08) 0px 0px 0px 1pxshadow-card
resting cards, inputs, list-items
rgba(14, 17, 22,0.06) 0px 1px 3px, rgba(14, 17, 22,0.08) 0px 0px 0px 1pxshadow-raised
hover-state cards, dropdowns
rgba(14, 17, 22,0.10) 0px 4px 8px, rgba(14, 17, 22,0.08) 0px 0px 0px 1pxshadow-float
popovers, modals, command-palettes
rgba(14, 17, 22,0.15) 0px 8px 24px, rgba(14, 17, 22,0.08) 0px 0px 0px 1pxshadow-koper-offset
primary CTA — craft signature
3px 3px 0 rgba(30, 91, 168,0.35)shadow-ink-offset
secondary CTA — paper-on-paper
3px 3px 0 rgba(14, 17, 22,0.20)Vijf-stop radius-scale. Tags +cards = 4–12px. Pills + nav = 100px (full). Knoppen volgen de container van het component.
4px--radius-xs
tags, code-inline, badges
6px--radius-sm
small inputs, sub-cards
8px--radius-md
buttons, default cards
12px--radius-lg
elevated cards, panels
16px--radius-xl
modals, hero-cards
9999px--radius-full
pills, avatars, nav
16 inline SVG-icons als baseline — 24×24 viewbox, stroke 2, currentColor (lucide/feather stijl). 6 systeem-iconen + 10 metaal-context iconen. Voor productie: switch naar lucide-react of phosphor-react.
In gebruik — vacature-card / CTA / metadata
Lasser MIG/MAG · Tilburg
CTA met icon · 16px stroke
Status pills · 14px stroke
Sollicitatie ontvangenCertificaat geldig tot 2027PBM verplicht op locatieMetaal-context · 10 iconen
Baseline UI · 6 iconen
12-koloms grid · 24px gutter · max-width 1160px. Mobile collapses naar 4-koloms. Layout-spans: 1/2/3/4/6/12. Geen 5/7/9 — die breken het ritme.
Live components — counter, input, toggle. Token-system in actie: Industrial Blue focus-rings, hard-offset shadows, 200ms transitions.
Counter
useState + brand-tokens — interactieve button states
Text input
leeg-state · no ring
Toggle / switch
state: false
Animated mark — bar-rise + letter stagger op first paint
Bar-Mark
Bar groeit bottom→top in 720ms (scaleY 0→1), letters M-B-I stagger-rise 100ms apart vanaf 300ms, dan Industrial Blue glow-pulse. IntersectionObserver triggert op first-paint, klik op het mark replay't. Respecteert prefers-reduced-motion.
Interactive flourishes — cursor-driven
3D Tilt
Perspective rotate op hover. Voor case-cards / portfolio items.
Magnetic CTA
Cursor-magnetisme via translate-vector. Strength=0.25.
Zes copy-animation patterns — typewriter, scramble, count-up, shimmer, word-stagger, blur-reveal. Inline-only (geen framer-motion / motion.dev). Patroon van 21st.dev / shadcn-blocks.
Typewriter
chars one-by-one + cursor blink, loops
Scramble
MBI · metaal
letters cycle random → settle
Count up
0
ease-out cubic, scroll-triggered
Shimmer
Industrial Blue
gradient sweep, infinite
Word stagger
Vakmensenachterelkeplaatsing
fade-up + translateY per word, 90ms apart
Blur reveal
Vast werk in de metaalsector.
blur(12px)→0 + opacity, 800ms
Patterns geïnspireerd door 21st.dev + shadcn-blocks · alle inline geïmplementeerd in brand/TextAnimations.tsx zonder externe deps. IntersectionObserver triggert scroll-aware variants.
Theme switcher schakelt CSS-vars op :root, persist via localStorage. Token-export downloads JSON / CSS / Tailwind v4 @theme — drop in elke brand-extension.
Theme
paper · ink · dim. Mutates --brand-page-bg + --brand-page-fg.
Token export
Drop-in snippets voor de meest-gebruikte components — Industrial Blue CTA, service-tag, card. Inline syntax-highlight (pure regex). Klik copy per snippet.
Industrial Blue CTA — primary button
Service tag — Industrial Blue left-border
Bar-Mark — JSX lockup
Card — shadow-as-border (no CSS border)
Briefpapier (A4) en transactionele email-template — beide op dezelfde tokens als de site. Letterhead voor contracten, sollicitatie-bevestigingen, inlener-overeenkomsten. Email-template voor sollicitatie-flow.
Briefpapier · A4 portrait (210×297mm)
Print-spec: A4 (210×297mm), 100gsm matte white. Header-band steel-ink (#0E1116) met Bar-Mark + brushed-steel texture, Industrial Blue accent-rail (#1E5BA8, 1.5mm) onder header en boven footer. Body 9pt Inter, mono-labels (datum, betreft, adres) 7pt JetBrains Mono uppercase. Marges 0 boven/onder (band-to-edge), 16mm zijden in body.
Email · sollicitatie-bevestiging (transactional)
Email-spec: max-width 600px, system-fonts fallback (Inter → Helvetica → Arial), inline CSS only, no external assets. Bar-Mark als pure-SVG (download) inline base64-encoded voor email-client compat.
Social Toolkit
8 platform-sized banner-templates — inline gerendered uit dezelfde tokens als de site. Voor productie: rechtsklik op tile → screenshot, of genereer pixel-perfect PNG via
satoriroute (volgt).Vakmensen voor metaal.
MBI · uitzendbureau metaalsector1200×630Vakmensen voor metaal.
MBI · uitzendbureau metaalsector1200×675Vakmensen voor metaal.
MBI · uitzendbureau metaalsector1200×6271584×396Lasser MIG/MAG
Tilburg · €17–22 p/u
vast contract
1080×1080Vakmensen
voor metaal.
1080×19201500×500400×400Tiles bovenstaand zijn live HTML — schalen mee met design-tokens. Voor pixel-perfect export naar PNG: screenshot via Chrome DevTools (rechts-klik tile → Capture node screenshot) op gewenste schaal, of voeg satori-route
/api/og?variant=…toe (volgt indien gewenst).