Petrol & Koper Design System
Networking4all · redesign 2026

Petrol & Koper

Eén visuele taal voor webshop én security-diensten. Elk token, elke component en elke regel op deze pagina is de bron voor de hifi-schermen, het prototype en de Vue-componentbibliotheek.

1 · Identiteit

Nuchter, precies, Nederlands

Networking4all is geen partnerkatalogus maar een team dat organisaties aantoonbaar veilig houdt. Diep petrol staat voor diepte, techniek en vertrouwen; één koper-accent geeft de scherpte van een besluit. Alle partnermerken krijgen grijs, het eigen merk krijgt kleur.

Wordmark · licht
networking4all

Waarom: een tekst-wordmark in de kopletter is direct herkenbaar in elke maat, en de koperen “4” is het enige merkteken dat de site nodig heeft.

Wordmark · op ink
networking4all

Eenvoud en vertrouwen boven trucs

Geen gradients, geen zwevende glaspanelen, geen parallax. Ruimte, ritme en typografie doen het werk.

Eigen merk boven partnermerk

DigiCert, GeoTrust, Thawte en GlobalSign zijn bewijs, geen kop. Ze staan altijd grijs en onder de eigen propositie.

Eén CTA per scherm

Elke pagina heeft één koperen knop en hooguit één secundaire. Alles daarbuiten is tekst met een pijl.

2 · Kleur

Petrol draagt, koper beslist

Koele neutralen met een lichte petrol-bias, twee merkkleuren en een aparte reeks voor validatieniveaus zodat DV, OV, EV en Qualified nooit met de merkkleur verward worden.

Petrol · primair

Waarom: petrol zit tussen blauw (vertrouwen) en groen (veilig) in en is in de Nederlandse security-markt nog niet geclaimd door een concurrent of partner.

Koper · accent en actie

Waarom: één warme kleur, uitsluitend voor de primaire knop en de “4”, zodat het oog altijd weet waar de volgende stap zit.

Neutralen

Waarom: grijzen met een koele bias lezen als gekozen in plaats van geërfd, en houden tekstkleuren op AA-niveau in beide thema’s.

Semantisch

Waarom: status-kleuren staan los van het accent; groen betekent altijd “ok”, nooit “klik hier”.

Validatieniveaus

Waarom: DV/OV/EV/Qualified zijn productinformatie; ze krijgen een eigen, gedempte reeks (grijs, petrol, goud, paars) die oploopt in gewicht met het vertrouwensniveau.

Contrast (WCAG 2.2 AA)

De ratio’s hieronder worden live berekend uit de hex-waarden van de tokens. Normale tekst vereist 4,5:1, grote tekst en UI-componenten 3:1.

CombinatieVoorbeeldRatioEisResultaat

Dark mode: de tokens wisselen alleen van ondergrond en tekst; petrol-500 en koper-500 blijven identiek zodat knoppen en badges in beide thema’s hetzelfde merk uitstralen. EV-goud, Qualified-paars en DV-grijs krijgen in het donker een lichtere tint om AA te halen.

3 · Typografie

Karakter in de kop, rust in de tekst

Bricolage Grotesque voor koppen, IBM Plex Sans voor alles wat gelezen moet worden, IBM Plex Mono voor alles wat gekopieerd moet worden.

H1 · Bricolage 700 · 64/1.05
Aantoonbaar veilig, zonder omwegen.
H2 · Bricolage 700 · 36/1.1
Het juiste certificaat in drie klikken.
H3 · Bricolage 600 · 22/1.15
Pentest die je auditor overtuigt en je developers helpt.
Lead · Plex Sans 400 · 20/1.5
Certificaten, pentests en managed security van één Nederlands team.
Body · Plex Sans 400 · 16/1.55
Wij ontzorgen IT-teams die hun organisatie aantoonbaar veilig willen houden. Van SSL/TLS en S/MIME tot 24/7 managed detection & response, klaar voor NIS2 en ISO 27001.
Label · Plex Sans 600 · 12 · caps
Validatieniveau
Mono · Plex Mono 400 · 14/1.6
# ACME Premium: eerste uitgifte met External Account Binding certbot certonly --server https://acme.networking4all.com/directory \ --eab-kid n4a_8f2c…a91e --eab-hmac-key ••••••••••••••••••••••••••••• \ -d www.voorbeeld.nl -d voorbeeld.nl

Waarom Bricolage: een grotesk met optische maten en een eigenzinnige “g” en “a”, waardoor koppen een gezicht krijgen zonder speels te worden.

Waarom Plex: Sans en Mono delen dezelfde tekenaar en x-hoogte, dus een ACME-commando in een lopende zin blijft op één lijn staan.

Typeschaal

StapGrootteRolFont · gewichtRegelhoogte
6464pxH1 desktop (hero)Bricolage 7001.05
4848pxH1 pagina · H1 mobiel 36Bricolage 7001.05
3636pxH2 desktop · mobiel 28Bricolage 7001.1
2828pxH2 mobiel · grote prijsBricolage 7001.1
2222pxH3, kaarttitelBricolage 6001.15
1818–20pxLead, introPlex Sans 4001.5
1616pxBodyPlex Sans 4001.55
1414–15pxUI-tekst, tabellen, knoppenPlex Sans 500/6001.45
1212pxLabels, badges, eyebrow (caps, +.06–.08em)Plex Sans 6001.3
4 · Spacing & grid

Een 4px-ritme, twaalf kolommen

Alle afstanden komen uit één schaal. Secties ademen op 96px desktop en 56px mobiel; componenten op 16 en 24.

Spacing-schaal

Waarom: negen stappen zijn genoeg voor elke layout en te weinig om willekeurige pixelwaarden te verleiden.

Grid

Container 1200px, 12 kolommen, gutter 24px. Mobiel 4 kolommen, gutter 16px, zijmarge 16px.

Desktop · 12 kolommen
Mobiel · 4 kolommen (390px)

Waarom: 12 kolommen delen door 2, 3, 4 en 6, wat precies de kaartrasters zijn die de site nodig heeft (twee ingangen, drie cases, vier domeinen, zes merken).

Radius

r-1 · 6
r-2 · 12
r-3 · 20
pill

Waarom: 6px op controls en 12px op kaarten is scherp genoeg voor een security-merk en zacht genoeg om niet als formulier uit 2005 te lezen; 20px is alleen voor device-frames en sheets.

5 · Componenten

De bibliotheek

Elke component hieronder is echte markup met de klassen die het prototype en de Vue-componenten gebruiken.

Buttons · .btn

Hoogte 44px, radius r-1, Plex Sans 600 15px. Primary is altijd koper-600 (wit erop haalt 4,9:1), secondary is een petrol-outline, ghost is tekst met pijl.

VariantDefaultHoverFocusDisabled Primary Secondary Ghost Bekijk alle diensten Bekijk alle diensten Bekijk alle diensten Bekijk alle diensten

Waarom: 44px haalt de aanraaknorm op mobiel zonder op desktop log te ogen, en één knopkleur maakt de CTA-hiërarchie afdwingbaar in code.

Cards · .card

Surface, 1px lijn, r-2, padding 24. Geen linker-accentbalk, geen schaduw in rust. Featured-cards zijn ink met on-dark tekst.

Pentesting

Netwerk, webapplicatie, API en Azure-audit. CVSS 3.1-gescoord, retest inbegrepen.

Bekijk scope

Security Awareness

Eigen e-learning, phishing- en vishing-simulaties. Meetbaar: klikratio per afdeling.

Bekijk programma

Waarom: één featured-card per raster geeft de belangrijkste dienst gewicht zonder een extra kleur toe te voegen.

Validatie-badges · .badge-val

Pill, 12px 600 caps. Altijd naast de productnaam, nooit als knop.

DVDomain Validation. Alleen domeineigendom, uitgifte in minuten. Voor test, staging en persoonlijke sites. OVOrganisation Validation. Bedrijf gecontroleerd in KvK, 1–3 werkdagen. Standaard voor zakelijke websites en S/MIME. EVExtended Validation. Strengste bedrijfscontrole, verplicht voor EV code signing en aan te raden voor banken, overheid en e-commerce. QualifiedEU Qualified (eIDAS). Juridisch bindende handtekeningen en zegels; alleen via gekwalificeerde vertrouwensdiensten.

Waarom: de badge is het enige element waar een klant op vergelijkt; hij moet in een tabel, een kaart en een menu identiek lezen.

Prijstabel · .pricing-table

Product, validatie, looptijd, prijs per jaar, actie. Prijzen in mono met tabular-nums; vanaf-prijzen per jaar zoals in de webshop, excl. btw. Slechts één rij toont hier de knop; in de vergelijker heeft elke rij er een.

ProductValidatieLevertijdPrijs per jaar
Basic SSL DVNetworking4allDV15 minuten€ 38,35 excl. btw
Business SSL OVNetworking4allOV1-2 dagen€ 113,91 excl. btw
True BusinessIDGeoTrustOV1-2 dagen€ 159,53 excl. btw
OrganizationSSLGlobalSignOV1-2 dagen€ 215,42 excl. btwBestel
Business SSL EVNetworking4allEV2-4 dagen€ 164,67 excl. btw

Waarom: het merk staat als bijschrift onder de productnaam, zodat de klant eerst op behoefte kiest en pas daarna op fabrikant.

Partner-logostrip · .partner-strip

Tekst-wordmarks in text-3. Echte logo’s komen in productie in grijstint, nooit in kleur en nooit boven de vouw.

Officieel partner van DigiCertGeoTrustThawteGlobalSignKeyTalk

Waarom: grijs houdt zes merken visueel gelijk en houdt de aandacht bij de koperen knop.

Trust-bar · .trust-bar

Vier feiten die kloppen, direct onder de hero: locatie, bereikbaarheid, partners en reviews. Geen cijfers die niet onderbouwd zijn.

Sinds 2000 · 25+ jaar ervaring
ISO 27001 & ISO 9001 gecertificeerd
CCV Pentest Keurmerk
Cybersecurity Made in Europe

Waarom: social proof boven de vouw is het goedkoopste conversiemiddel dat de huidige site mist.

Formulier · .form

Labels boven het veld, 44px inputs, r-1. Een fout zegt wat er mis is én hoe je het oplost.

Gebruik een zakelijk adres (geen gmail of outlook), zodat we uw organisatie kunnen koppelen aan de offerte.
Gevonden in het Handelsregister
Geen exacte scope? Beschrijf het doel; we scopen samen in de intake.
Reactie binnen één werkdag. NDA op verzoek.

Waarom: de foutmelding vertelt de oplossing, niet alleen het probleem; dat scheelt de helft van de afhakers op offerteformulieren.

Navigatie · .nav

De vervanger van het mega-menu met 60+ links: één rij, twee dropdowns met maximaal twee niveaus, zoeken, taal, cart, login en één CTA. Werkt met muis en toetsenbord (Enter/Spatie opent, pijltjes navigeren, Escape sluit).

Waarom: twee niveaus dwingen redactionele keuzes af: elk product krijgt één plek, gegroepeerd op hoe een klant zoekt (type, validatie, tool) in plaats van hoe het bedrijf is georganiseerd.

Mobiel menu

Op schermen onder 900px wordt de rij een full-screen sheet met een accordion per hoofdgroep. Dezelfde twee niveaus, dezelfde volgorde, CTA onderaan altijd zichtbaar.

Waarom: een accordion houdt de twee niveaus intact op mobiel en laat de CTA staan, waar een uitschuifmenu met 60 links hem juist verbergt.

6 · Tokens als code

Eén bestand, overal dezelfde waarden

Kopieer dit blok naar resources/css/tokens.css. Elke Vue-component en elk Storyblok-blok leest uitsluitend deze variabelen.

:root{
  --ink:#0E1B26; --ink-2:#16283A;
  --petrol-900:#0F3A47; --petrol-700:#14505F; --petrol-500:#1E7A8C; --petrol-300:#6FB3C0; --petrol-100:#DCEEF1;
  --koper-700:#9E4519; --koper-600:#B8531F; --koper-500:#D8622A; --koper-300:#F0A77E; --koper-100:#FBE9DF;
  --bg:#F6F8F9; --surface:#FFFFFF; --surface-2:#EEF2F4; --line:#D9E0E4; --line-strong:#B9C4CB;
  --text:#0E1B26; --text-2:#465A66; --text-3:#5F717C; --on-dark:#F2F6F7; --on-dark-2:#B8C7CE;
  --ok:#1F8A4C; --warn:#C7860B; --danger:#C2352B; --info:#1E7A8C;
  --dv:#5B6B76; --ov:#1E7A8C; --ev:#8A5A0B; --ev-bg:#FBF1D9; --qual:#5B3FA6; --qual-bg:#EDE8F8;
  --r-1:6px; --r-2:12px; --r-3:20px; --r-pill:999px;
  --s-1:4px; --s-2:8px; --s-3:12px; --s-4:16px; --s-5:24px; --s-6:32px; --s-7:48px; --s-8:64px; --s-9:96px;
  --shadow-1:0 1px 2px rgba(14,27,38,.06),0 1px 3px rgba(14,27,38,.08);
  --shadow-2:0 8px 24px -8px rgba(14,27,38,.18);
  --focus:0 0 0 3px #F6F8F9,0 0 0 6px var(--petrol-500);
  --font-display:"Bricolage Grotesque",ui-sans-serif,system-ui,"Helvetica Neue",Arial,sans-serif;
  --font-body:"IBM Plex Sans",ui-sans-serif,system-ui,"Helvetica Neue",Arial,sans-serif;
  --font-mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  --container:1200px; --gutter:24px;
}
/* dark */
[data-theme="dark"]{
  --bg:#0B151D; --surface:#12212C; --surface-2:#182B38; --line:#243947; --line-strong:#375062;
  --text:#EAF1F4; --text-2:#B8C7CE; --text-3:#87A0AC; --on-dark:#F2F6F7;
  --petrol-100:#143441; --koper-100:#3A2418; --ev-bg:#3A2C10; --qual-bg:#2A2140;
  --ev:#E0B457; --qual:#B9A3EE; --dv:#9FB0BA;
  --shadow-1:0 1px 2px rgba(0,0,0,.4); --shadow-2:0 8px 24px -8px rgba(0,0,0,.6);
  --focus:0 0 0 3px #0B151D,0 0 0 6px var(--petrol-300);
}

Implementatie in Laravel / Vue / Storyblok

Laravel · tokens & fonts

Eén tokens.css in Vite, geladen vóór alle andere stijlen. Google Fonts via <link rel="preload"> in de Blade-layout. Het data-theme-attribuut op <html> komt uit een cookie, zodat dark mode zonder flits rendert.

Vue · componenten 1:1

Elke component hierboven wordt één SFC: N4aButton, N4aCard, N4aBadgeVal, N4aPricingTable, N4aTrustBar, N4aForm*, N4aNav. Props volgen de varianten (variant="primary|secondary|ghost", level="dv|ov|ev|qual"). Geen inline-kleuren buiten de tokens.

Storyblok · bloks = secties

Secties uit de hifi-schermen worden bloks: hero_split, trust_bar, service_cards, case_highlight, cta_block, pricing_table, process_steps, faq. De redactie kiest uit bloks, niet uit kleuren; NL en EN zijn twee folders met dezelfde bloks.

Waarom: tokens in CSS-variabelen betekenen dat een merkkleur-wijziging één regel is, en dat Storyblok-redacteuren nooit iets buiten het systeem kunnen zetten.