Brand Manual
SANN

Built in Sweden. Designed for Nordic trust.

Canonical web manual Version 1.6 · Updated 4 September 2026

00 · Foundation

SANN — Swedish for true, honest, genuine, trustworthy. Pronounced /san/. Always uppercase.

Sweden is the origin and the proof point; the Nordic region is the market frame. SANN keeps its Swedish name, restraint and infrastructure principles in every language without making Sweden the boundary of the brand.

Promise Trust by design

Make the safe and verifiable path feel like the simplest path.

Behaviour Calm, precise, useful

Restraint is not coldness. Every screen should help someone decide or act.

Test Evidence before claims

Show a verified state, receipt or clear consequence instead of trust theatre.

00.1 · Product principles

The safe path should also be the clearest path.

These principles decide the interface when no component example exists. They apply to the SANN app and every SANN product, regardless of theme, platform or product accent.

filter_1 One primary action

Each view has one obvious next step. Secondary actions remain available but quieter.

info State before action

Say what is true now before asking someone to approve, change or share anything.

fact_check Consequence before commitment

Name who, what, amount, duration and reversibility before a significant decision.

layers Progressive disclosure

Lead with the decision. Put legal, protocol and audit detail one deliberate step away.

receipt_long Evidence after action

Every important action ends in a durable status, receipt, timestamp or audit event.

restart_alt Recovery is part of the flow

Design undo, retry, cancellation and support paths together with the happy path.

01 · Brand architecture

One trusted masterbrand. Clear products beneath it.

SANN is a branded house. The masterbrand carries trust; product names describe the customer job in the language of their canonical market. Existing Swedish-market products keep their Swedish names in every locale. Features and technical components do not become brands merely because they have names in the codebase.

SANN

Company, trust layer and primary app. The app is light by default; contained dark surfaces create focus at moments of identity, verification and consent.

Customer products
SANN | MandatKöpmandat
SANN | AktiebokÄgarregister
SANN | FöreningFöreningsdrift
Inside SANN
MeddelandenFeature
KalenderFeature
BetalningarFeature
Developer platform
Identity APIEnglish contract
Messaging APIEnglish contract
Payments APIEnglish contract
Controlled exception

Products with a materially different culture or reputational risk use an independent name with a restrained endorsement: Verifierad med SANN or Byggd på SANN.

Who builds on whom · SANN shows less the higher you go Visual overview arrow_forward Full map with examples arrow_forward
4
White-label surfacesThe customer's own brand and domain, created through a SANN product
Footer only: “Securely powered by SANN” · proposed
2
SANN's own productsMandat · Förening · Aktiebok · the SANN app
Signature SANN | noun
3
Third-party appsIndependent brands using Identity, Messaging, Payments
Endorsement: Fortsätt · Verifierad · Byggd på SANN
1
The SANN platformIdentity · Messaging · Payments · Calendar · Relationships
The full wordmark

02 · Naming system

SANN | a concrete category noun.
Brand signature

SANN | Mandat

Use the divider in headers, footers, launch graphics and other deliberate brand signatures.

Running text

SANN Mandat

Omit the divider in prose, legal text, metadata, email sender names and accessible labels.

Inside the product

Mandat

Once context is established, navigation and page titles use the short product noun.

Internal or former name Visual lockup Written reference Inside the product
Capsule / main app SANN SANN “SANN-appen” only when prose needs the distinction
Mandat / Mandat SANN | Mandat SANN Mandat Mandat
Aktieboken SANN | Aktiebok SANN Aktiebok Aktiebok
SANN Förening / Club SANN | Förening SANN Förening Förening
Messenger — Not a separate consumer brand Meddelanden
Pay — Not a separate consumer brand Betalningar · “Betala med SANN” at checkout
Authentication / Login — Not a separate product Fortsätt med SANN · Verifiera med SANN
Graph — Technical and partner-facing only SANN Graph
Language

Local language for customers

Write complete customer experiences in the market language. Developer APIs and protocol contracts stay English. Swedish origin remains part of the masterbrand; never mix languages inside one interface level.

Fortsätt med SANN · Fortsett med SANN
Fortsätt with SANN · Continue med SANN
Grammar

Nouns, not promises

Use the base category noun. Put benefit, audience and emotion in the subtitle.

SANN | Aktiebok
SANN | Tryggare Ägande
Hierarchy

Features stay features

A navigation item does not need a logo, launch campaign or SANN prefix in its own UI.

Meddelanden
SANN Messenger™
Naming decision
01

Masterbrand?

Company, trust layer or primary app: use SANN.

02

Customer product?

Use SANN | category noun as the signature. Choose one canonical product name for its market; do not translate the brand name per screen.

03

Feature?

Use a plain functional label without SANN.

04

Developer primitive?

Use descriptive English API vocabulary.

05

Different risk?

Use an independent brand with a restrained SANN endorsement.

06

Implementation detail?

Keep it internal. A package name is not a public name.

03 · Product lockups

One wordmark system, not a collection of logos.

The canonical SANN wordmark remains unchanged. A thin vertical divider creates the product signature: SANN | Mandat. In interfaces, draw the divider as a 1 px rule — do not use a font glyph — so its weight, height and colour stay controlled. The lockup remains monochrome; product colour belongs in the experience around it.

Köpmandat för företag
Digital aktiebok för svenska bolag
Medlemmar, avgifter och aktiviteter
Lockup anatomy
Wordmark Always the master asset

Never typeset SANN. Use the approved SVG and preserve its proportions.

Divider 1 px · 95% of wordmark height

10 px optical space on each side at a 21 px wordmark. Use a subdued line token.

Descriptor 18 px · Semibold · −2%

Live text in the product UI font. Vertically centred; never baked into a logo file.

Header and footer pattern

Mandat is the reference implementation: the same lockup component appears in the global header and footer. The header establishes product context; the footer repeats it with a functional product description and operational metadata.

One compact signature. Product navigation starts beside it.

Header · link to the product home or current workspace
Footer · signature, purpose, links and factual status
App icon family
SANN
SANNMaster app · wordmark
approval
SANN MandatApp name in stores and accessibility text
table_view
SANN AktiebokApp name in stores and accessibility text
groups
SANN FöreningApp name in stores and accessibility text
Light product systems

The primary SANN app, Mandat, Aktiebok and Förening are all light, task-focused systems. They share restraint, clear hierarchy and evidence-led states, while preserving the tokens their work requires. Dark is a contained focus surface or an explicitly supported theme — never the assumed default.

SANN
+
Min identitet
Verifierad
Martin Belak
Du väljer vad som delas och med vem.
Visa uppgifter
SANN app

Flat-white everyday UI. Dark identity card as a contained trust anchor.

#ffffff · #f2f3f6 · #0f1115
SANNMandat
MB
Köp som väntar
Beslut krävs
Ahlsell · 24 800 kr
Ett orderbundet beslut för Nordmontage AB.
Granska köpet
Mandat

Precise decision instrument. Cool whites, midnight ink and one indigo action colour.

#061b31 · #533afd
SANNAktiebok
MB
Ägarbild
Aktuell
Emulator Ventures AB
4 aktieägare · 10 000 registrerade aktier.
Öppna aktieboken
Aktiebok

Modern Bolagsverket. Warm paper, forest green and restrained document chrome.

#254b38 · warm cream
SANNFörening
MB
På gång
12 anmälda
Träning på torsdag
18.30 · Klubbstugan · 8 platser kvar.
Visa aktiviteten
Förening

Approachable administration. Airy surfaces, human rhythm and a calm green accent.

#287a5d · cool white

04 · Domains and paths

One Nordic masterbrand. Markets in paths. Products on stable origins.

sann.com is the one canonical home for the SANN masterbrand. Country paths identify a commercial and legal market; language is a separate choice inside that market. Product subdomains run the applications. Public API and documentation hosts exist only where they represent a stable contract — never merely because a service has its own container.

Learn about it

SANN masterbrand

Market positioning, pricing, search content and lead capture live together.

sann.com/se/mandat
Use it

Product origin

Login, workspace selection and the product use one locale-independent origin.

mandat.sann.com
Masterbrand

sann.com

Global English home and market-specific product marketing.

sann.com/
sann.com/se/
sann.com/no/ · /dk/ · /fi/
Products

Dedicated origins

Separate sessions, deploys and product boundaries.

app.sann.com
mandat.sann.com
aktiebok.sann.com
forening.sann.com
Platform

Stable contracts

Only public audiences and protocols get hosts.

api.sann.com
docs.sann.com
status.sann.com
admin.sann.com
Canonical production hosts
Surface Canonical host Rule
Marketing sann.com Global English root; country offers live below market paths
Primary app app.sann.com Never publicly call it Capsule
Mandat mandat.sann.com Public product and receipt issuer use Mandat, not Mandat
Aktiebok aktiebok.sann.com Matches the canonical category noun
Förening forening.sann.com ASCII hostname; visible copy retains ö
Core API/OIDC api.sann.com One stable platform issuer and base URL
Documentation docs.sann.com Developer content; English by default
Administration admin.sann.com Access controlled and never indexed
Markets and languages
URL Meaning Default language
sann.com/ Global offer English
sann.com/se/ Sweden Swedish
sann.com/no/ Norway Norwegian Bokmål
sann.com/dk/ Denmark Danish
sann.com/fi/ Finland Finnish
sann.com/fi/sv/ Finland Swedish override
sann.com/no/en/ Norway English override
Precedence

Choice before inference

Direct URL and explicit saved choice win. Then use a supported device or browser language; the market default comes last. A language header may suggest, never redirect.

Discoverability

One URL per language

Give each version a stable URL, a self-canonical and reciprocal hreflang links. A language switch keeps the equivalent page and never silently changes market.

OIDC

User preference wins

Existing SANN choice precedes the standard ui_locales hint, then browser language and English fallback. A partner hint never persists over the user's choice.

Path grammar
Public content

Market-local and readable

After the market segment, use the page language: lowercase words, hyphens and ASCII transliteration. No file extensions or internal names.

/se/sakerhet · /no/sikkerhet
/se/security.html · /no/forening
Application

Do not repeat the host

User-visible paths may use the product's canonical market language. Keep IDs opaque, keep personal data out of URLs and do not rewrite a live route merely on language switch.

mandat.sann.com/foretag/{id}
mandat.sann.com/mandat/foretag/personnummer
Protocols

English and stable

OAuth, well-known, API and MCP paths follow technical conventions and are not localized.

api.sann.com/v1/messages
v1.api.sann.com/meddelanden
Environments
Environment Pattern Example
Production {product}.sann.com mandat.sann.com
Shared development {product}.dev.sann.com mandat.dev.sann.com
Pull-request preview {product}-pr-{number}.preview.sann.com mandat-pr-482.preview.sann.com
Local development Documented localhost ports localhost:7212
Product and tenant rules
MCP

Prefer a product path

Use mandat.sann.com/mcp. Create a nested hostname only when it needs a genuinely separate origin and policy.

Förening sites

Path, then custom domain

Start at forening.sann.com/{slug}. After verification, the association's own domain becomes canonical.

Cookies

Host-only sessions

Never set Domain=.sann.com. Share sign-in through OIDC, not a parent-domain cookie.

Country-domain and legacy redirects
sann.se/* → sann.com/se/*Permanent
When owned: sann.no/* → /no/* · sann.dk/* → /dk/* · sann.fi/* → /fi/*Permanent
www.sann.com → sann.comPermanent
sann.se/mandat → sann.com/se/mandatExplicit path map
mandat.sann.se → mandat.sann.com · capsule.sann.se → app.sann.comReviewed migration

Country domains are regional entry points, never separate masterbrand sites. Preserve only approved marketing paths and query parameters; use an explicit map when localized slugs differ. API, OIDC, Universal Link, webhook and receipt issuer changes require an explicit protocol and security review and are never covered by a broad marketing redirect.

06 · Applications

How the mark shows up across digital surfaces, print, and physical goods. Always white on dark or dark on light — never rotated, recolored outside the brand palette, or reshaped.

SANN
Primary SANN app icon
Wordmark reserved for the master app. Product apps use the shared pictogram family.
Login button
Localise the action, never the wordmark. English: “Continue with SANN”.
SANN
Product Partners Docs
A new kind of trust infrastructure for the AI era.
Website header
Logo anchored left, navigation right. Generous whitespace.
SANN
Social avatar
X · LinkedIn · GitHub. Circle crop, full-bleed dark fill.
SANN
Martin Belak
Founder · martin@sann.com
sann.com
Email signature
Dark mark on white, Inter throughout, minimal metadata.
SANN
Martin Belak
Founder · +46 70 123 45 67
Business card
85 × 55 mm. Matte black stock, silk-screened white.
SANN
Sticker / merch
Die-cut vinyl, 60mm diameter. White border, dark fill.
SANN
Apparel
Chest or back placement. Heavy-weight cotton, screen print.
SANN
Partner Agreement
Integration terms
This agreement sets out the terms under which the Partner may integrate with the SANN trust infrastructure…
Document header
Contracts, whitepapers, PDFs. Always top-left, 56px wide.
Trust
by design.
SANN
Presentation
Logo anchored bottom-right, never competing with the slide's idea.

07 · Don'ts

Don't recolor outside the palette
Don't rotate or tilt
Don't stretch or distort
Don't place on busy gradients

08 · Tone of voice

SANN is best-in-class on privacy and security — but ~95% of users neither know nor care what E2EE or zero-stored-PII means. Lead with the user benefit ("you choose what to share"), mention a guarantee once where it matters, and route the deep story to a dedicated security/dev surface. Let security be the quiet default.

State
Mandatet är aktivt.
Grattis! Du är nu helt trygg.
Problem
Vi kunde inte verifiera köpet. Försök igen.
Något gick fel.
Privacy
Du väljer vilka uppgifter som delas.
Militärklassad integritetsteknik.

08.1 · Two registers

The brand speaks in two registers that share the same DNA — typeface, logo, icon discipline, and the "security is felt, not announced" rule.

The monochrome brand anchors the light products: the SANN mark, app icon and contained identity surfaces retain authority without turning whole workflows black. The shipped SANN app has one light palette today. A complete dark theme must be implemented and accessibility-tested as a system; it must not be created by inverting individual screens.

09 · Core color tokens

Light is the everyday default. Dark is deliberate.

These are the shipped SANN app tokens, taken from its source of truth. White is both the base and card surface; pale grey separates screen regions. Hairlines, not tinted cards, carry most structure. Product-specific systems remain documented in Product lockups.

SANN app · light palette
Contained dark surface · optional dark theme foundation

Use this inverse scale for identity cards, scanners, assistant bubbles and other focused trust moments. It also forms the base for a future dark theme, but does not make that theme complete by itself.

10 · Typography

Typography is shared by behaviour, not forced by one font file. The SANN core and editorial brand surfaces and the SANN app use Inter. Product interfaces may use an approved native system stack for speed and platform fidelity; Mandat and Förening do this today, while Aktiebok uses Inter.

Brand & editorial Inter 300–600

Headlines, presentations, marketing and this manual. Never typeset the wordmark.

Product UI System UI or established product stack

Prioritise predictable rendering. Do not add a blocking webfont only for conformity.

Data Tabular or monospace where meaning benefits

Amounts, identifiers, timestamps and protocol examples — never ordinary body copy.

Editorial display · 300 Trust, by design.
Body · 400 Body text. Every word earns its place.
Interface · 500 Primary button label
Compact emphasis · 600 Section header

11 · Iconography

Use one coherent icon family per product surface: Lucide in SANN web products, SF Symbols on iOS and Material Symbols on Android. Match the same meaning across platforms; do not mix families on one screen. Icons inherit text colour and never replace a required label. No emoji as interface controls.

shield Security
verified Verified
lock Protected
person Person
check_circle Complete
arrow_forward Continue

The glyphs above show semantic slots, not an instruction to import Material Icons on web. Use the current platform library and keep stroke, optical size and label treatment consistent.

12 · Layout, spacing and radii

Shared rhythm. Product-specific shape.

All systems align to a 4 px base rhythm and mobile-first responsive layouts. Radius and density communicate product character: Mandat is precise, Aktiebok document-like and Förening more accommodating.

4 px rhythm
4micro
8inline
12cluster
16control
24card
48section
12-column desktop frame
System Content width Screen gutter Radius character
SANN editorial 1120 px 24 px 10–14 px
SANN app Fluid native screen 16 px 8 / 12 / 16 / 20 / pill
Mandat 1320 px 20–24 px 4 px · crisp
Aktiebok 1280 px 16–24 px 6–14 px · document-like
Förening 1280 px 16–24 px 8–12 px · approachable

13 · Components and implementation

Base UI owns behaviour. SANN owns the experience.

SANN app controls are light-first: near-black primary actions, quiet outlined secondary actions and blue for focused platform actions. Product components use the owning product's accent and radius tokens. State colour always travels with an icon or explicit text label.

Approved primitive layer for React web products

Base UI is headless and unstyled. It supplies accessible interaction behaviour without importing another visual brand, so SANN retains full control of CSS, tokens and composition. Aktiebok and Förening already use it for switches, comboboxes, dialogs and menus; new primitives and migrations follow the same owned-wrapper pattern. Read the official overview ↗

Approved · incremental rollout
Product composition

Domain workflow, information hierarchy, density, accent and product-specific copy.

SANN components

Owned wrappers, semantic tokens, visual states, motion, labels and validation policy.

Base UI primitives

Roles, ARIA, keyboard interaction, focus management, portals and collision behaviour.

Platform

Native HTML on web; native iOS and Android controls in the SANN mobile app.

Use Base UI

Complex interaction primitives

Dialog, Alert Dialog, Menu, Popover, Select, Combobox, Tabs, Switch, Tooltip and Toast.

Use native HTML

When the platform already solves it

Buttons, links and simple text inputs do not need a primitive merely for consistency.

Own the boundary

Wrap once, reuse everywhere

Feature routes import SANN product components, not raw primitives with ad hoc styling.

Approved primitive map
AlertDialogComboboxDialogMenuPopoverSelectSwitchTabsToastTooltip

codeImplementation boundary

import { Switch } from '@base-ui/react/switch'

// Base UI exposes state; SANN applies semantic tokens.
<Switch.Root className="SannSwitch">
  <Switch.Thumb className="SannSwitchThumb" />
</Switch.Root>

/* Style [data-checked], [data-disabled] and :focus-visible. */
SANN app controls · shipped light palette

Primary

Near-black · white text · 52 px minimum · pill

Secondary

Transparent · subtle hairline · 52 px minimum · pill

Platform action

Blue #0060cc · readable white labels · use when platform meaning benefits

Destructive

Text-first danger #d03b30 · confirm consequences

Native app control rules

Unread and pending counts share a red (#D03B30) pill with white text, 20 pt minimum height, 6 pt horizontal padding and 12 pt semibold tabular figures. Hide zero; cap visible counts at 99+ and announce the full count through the parent control. Use this treatment in navigation, conversations and requests. Native Apple tabs retain system badge geometry with the same colours and count rule. Verification and other status pills retain their semantic colours.

Standalone actions use pill corners: 52 pt minimum for regular buttons and 44 pt for compact actions and filters. Labels may wrap; adjacent actions stretch to the same height. Cards retain 16 pt corners and fields 12 pt: their shape communicates a different role.

Loading preserves the measured label width and uses a full-contrast spinner. Keyboard focus has a separate 2 pt ring. Status pills use opaque light tints with dark semantic text, including on dark identity surfaces.

Native text and fields use bundled Inter faces. Apple controls use SF Symbols; Android uses Material icons through the shared icon boundary. Decorative animation is brief and respects Reduce Motion.

Light product example · Mandat
Purchase decision

Ahlsell · 24 800 kr

Nordmontage AB · Order 1048 · Giltigt till 16.30

check_circleMandatet är aktivt
scheduleBeslut krävs
cancelKöpet avvisades

14 · Forms and data entry

A field should explain itself before it fails.

Labels are persistent, help is concrete and validation appears near the affected field. Use native inputs for simple entry and Base UI Field, Fieldset, Form, Select, Number Field, Combobox or OTP Field when their interaction model adds value. Behaviour and accessible relationships come from the primitive; SANN styling and localized content remain ours.

Nytt köpmandat

Ange ramarna som mottagaren får handla inom.

Beloppsgräns Obligatoriskt 25 000 kr Högsta tillåtna totalbelopp inklusive moms.
Gäller till Valfritt 12 september 2026 · 16.30calendar_today
Kostnadsställe 12 Ange fyra siffror, exempelvis 1048.
Light · persistent labels, explicit units and local validation

Dela verifierade uppgifter

SVT Play frågar efter följande uppgifter.

Mottagare SVT Playverified
Uppgifter Namn och åldersintervallexpand_more Personnummer delas inte.
Giltighet Endast denna gångexpand_more
Dark · identical hierarchy and interaction, retested contrast
Labels

Never rely on placeholder text

Keep the label visible after entry. Put units beside the value and mark optional fields explicitly.

Validation

Validate at a useful moment

Use blur or submit for most fields. Reserve immediate validation for constraints the person can act on while typing.

Errors

Name the repair

Place the message by the field, connect it programmatically and summarise only when several fields fail.

Input Display convention Example
Money Swedish grouping, currency after amount 24 800 kr
Date and time Written month for people; ISO only in technical contexts 2 september 2026 · 16.30
Organisation number Format while typing; store canonical digits 559123-4567
Required fields State “Obligatoriskt”; never colour alone Label + programmatic requirement

15 · Component states

If a component can change, document every state.

Base UI exposes interaction state through properties and data attributes. Every SANN wrapper defines the visual, textual and accessibility response for the full state set before it is approved for reuse.

DefaultFortsätt
HoverFortsätt
Focus visibleFortsätt
PressedFortsätt
DisabledFortsätt
Loadingprogress_activityVänta
SuccesscheckKlart
Errorerror_outlineFörsök igen
State Visual requirement Behaviour and language
Hover Subtle tonal change; never the only affordance Pointer only; must not move layout
Focus visible Minimum 2 px high-contrast ring with separation Keyboard order follows the visual task order
Pressed Immediate feedback through tone or 1 px movement Action fires once; preserve label
Disabled Reduced emphasis, still legible Prefer explaining why nearby; do not use a tooltip as the only explanation
Loading Stable dimensions and visible progress Use aria-busy; prevent duplicate submission
Success / error Icon + text + semantic colour Name the result and next available action

16 · Recurring trust and decision flows

Context → review → commit → evidence.

Identity, consent and mandate decisions use the same four-part rhythm. People should never discover the recipient, consequence, duration or reversibility only after committing.

Consent and data sharing

Show who asks, exactly what leaves SANN, why it is needed and how long access lasts.

Medium risk
domainRequestSVT Play asks for age range
visibilityReviewData, purpose and duration
check_circleApproveExplicit “Dela uppgifter”
receipt_longReceiptActive sharing + revoke path

Mandate and commercial decision

Keep amount, seller, purchaser, validity and order reference visible at the commitment point.

High value
shopping_bagContextAhlsell · Order 1048
fact_checkReview24 800 kr · expiry 16.30
approvalDecideApprove or reject purchase
historyEvidenceDecision, actor and timestamp

Destructive or irreversible action

Use Base UI Alert Dialog for legal, financial or destructive consequences; initial focus goes to the safe action.

High risk
delete_outlineInitiateUse a specific action label
warning_amberConsequenceName what cannot be restored
lockConfirmSafe action receives first focus
task_altResolveResult, recovery or support
Confirmation level
Low risk

Act immediately

Provide undo when the action is easy to reverse.

Medium risk

Inline review

Show recipient, scope and duration before the final button.

High risk

Alert Dialog

Repeat the concrete consequence and use an explicit confirming verb.

17 · Shared product shell

Shared orientation. Product-specific work.

Every web product uses the same orientation model: product lockup, workspace, primary navigation, help and account. The shell may inherit product colour and density, but these locations and responsibilities do not drift between Mandat, Aktiebok and Förening.

Nordmontage AB expand_more
Nordmontage AB

Köp som väntar

Beslut krävs
Ahlsell · 24 800 kr
Order 1048 · Giltigt till 16.30
Desktop · global context remains visible around the work
menuMandatMB
Nordmontage AB

Köp som väntar

Beslut krävs
Ahlsell · 24 800 kr
Tools Sverige · 8 200 kr
Order 1046
Compact · context collapses, task and account remain reachable
Shell element Rule Responsive behaviour
Product signature Top-left on web; spoken name omits divider Descriptor may replace the full lockup after context is established
Workspace Current organisation is always visible before consequential actions Moves into the page header or navigation sheet
Navigation Task nouns, stable order, one active item Sidebar becomes drawer or a small set of bottom destinations
Account and help Persistent, separate from task actions Remain reachable within one tap
Environment DEV and staging use a text badge, not colour alone Never shown in production
Footer Repeat signature, purpose, legal links and factual status Stack groups; preserve reading order

18 · Data-heavy interfaces

Make dense information calm, comparable and reversible.

Tables are work surfaces, not spreadsheets embedded by default. Prioritise comparison, scanning and accountable actions. On narrow screens, preserve the task by turning each row into a summary record instead of shrinking every column.

Aktiebok

Aktieägare

Alla 24PersonerBolag
2 aktieägare valdaExportera utdrag
□ Aktieägare ↕ Aktieslag Aktier Andel Status
☑ Martin Belak A 4 800 48,0 % Aktuell
☑ Emulator Ventures AB A 3 200 32,0 % Aktuell
□ Anna Lind B 2 000 20,0 % Aktuell
Visar 1–3 av 24Föregående · Nästa
Desktop · search, filters, bulk selection and comparable numeric columns
24 aktieägare

Ägarbild

Martin BelakAktuell
A-aktier · 4 80048,0 %
Emulator Ventures ABAktuell
A-aktier · 3 20032,0 %
Anna LindAktuell
B-aktier · 2 00020,0 %
Mobile · row becomes a task-focused record; no miniature table
Comparison

Align meaning

Keep identifiers left, numbers right and use tabular numerals. Units live in headings or values consistently.

Control

Make scope visible

Show active filters, selected count and whether export or bulk action applies to visible or all results.

Scale

Choose pagination deliberately

Use pagination for accountable sets, virtualisation for continuous exploration and server-side filtering for large records.

19 · Web and mobile application patterns

Keep the hierarchy. Change the palette as a system.

The examples below translate the same SANN manner across viewport and theme: restrained chrome, obvious task hierarchy, flat or lightly elevated cards, visible state and one primary action. The shipped SANN mobile app uses the light pattern. Dark examples define a coherent option for products that explicitly support it — not an automatic inversion.

Light · everyday default

Pale neutral page, white cards, near-black text and hairline separation. A contained dark card may anchor identity without changing the surrounding theme.

Dark · supported option

Near-black page, charcoal elevation and inverse text. Keep semantic colours stable, retest contrast and replace shadows with borders or tonal separation.

Responsive web
app.sann.com/inkorg
Tisdag 2 september
God eftermiddag
Olästa3
Delningar2
Kommande4
SVT SVT PlayNy inloggning att granska 14.32
SEB SEBDin delning är aktiv 11.08
Web · light

Quiet persistent navigation, 12-column-ready content and white work surfaces.

app.sann.com/inkorg
Tisdag 2 september
God eftermiddag
Olästa3
Delningar2
Kommande4
SVT SVT PlayNy inloggning att granska 14.32
SEB SEBDin delning är aktiv 11.08
Web · dark

Identical information architecture; tonal elevation replaces the light-mode shadow.

Native mobile
Min identitet
Verifierad
MBMartin Belak@belak · Sverige
badge Uppgifter3 verifierade ›
groups Organisationer ›
chat_bubble_outlineInkorg badgeIdentitet exploreUpptäck calendar_todayKalender qr_code_scannerSkanna
Mobile · light · current SANN pattern

Native header and tabs, 16 px gutter, pale page, white grouped rows and a dark hero.

Min identitet
Verifierad
MBMartin Belak@belak · Sverige
badge Uppgifter3 verifierade ›
groups Organisationer ›
chat_bubble_outlineInkorg badgeIdentitet exploreUpptäck calendar_todayKalender qr_code_scannerSkanna
Mobile · dark · optional system

Same content and spacing. Elevated charcoal cards, inverse text and blue focus remain.

Responsive, not compressed

Web navigation collapses deliberately; tables become summaries or horizontal regions, never illegible miniatures.

Native where it helps

Use platform tabs, back behaviour, safe areas and input controls while keeping SANN hierarchy and tokens.

Theme every state

Loading, focus, pressed, error, charts, empty states and third-party embeds must work in the selected theme.

20 · Imagery and illustration

Show the work. Avoid trust theatre.

Prefer real artefacts, workflows and consequences over generic locks, glowing shields or staged handshakes. People are active participants, never anonymous compliance decoration.

Mandat
Mandat · decisions and evidence

Receipts, limits, order context and accountable action. Precise, never dramatic.

Aktiebok
Aktiebok · living records

Paper, structured tables and continuity over time. Modern authority, not nostalgia.

Förening · people in motion

Real participation, places and activity. Warm without becoming lifestyle stock.

Own or license it

Record source, consent, territory and expiry for every published image.

Write useful alt text

Describe the information or purpose, not colour and composition alone.

Do not bake in copy

Keep essential words as HTML so they can translate, resize and be read aloud.

21 · Accessibility

Trust must work for everyone.
Focus Visible on every interactive element
Contrast WCAG AA minimum

4.5:1 for normal text; 3:1 for large text and meaningful UI boundaries.

Ink / white White / indigo
Names Speak the name, not the divider

The visual signature is “SANN | Mandat”; its accessible name, page title and alt text are “SANN Mandat”. Decorative logo parts use empty alt text.

22 · Motion

Controls120–180 ms

Hover, press and compact disclosure. Immediate, never theatrical.

Layout180–300 ms

Panels and route context. Animate opacity and transform before layout-heavy properties.

ContinuousOnly while work is happening

Progress may loop. Decorative shimmer and trace must not run forever.

Honour prefers-reduced-motion. The reduced experience must preserve state and causality, not merely set every duration to zero.

23 · Co-branding and endorsement

The divider is for SANN products, not partners.
Product signature

Use the vertical divider only when the second name is a SANN-owned product.

Partner×SANN
Equal partnership

Use neutral spacing or ×. Agree optical size, order and background with the partner.

Verifierad med SANN
Endorsement

Use “Verifierad med SANN”, “Fortsätt med SANN” or “Byggd på SANN” for a specific role.

SANN | Mandat · Partner × SANN · Verifierad med SANN
SANN | Partner · SANN Partner Mandat Edition

24 · Governance and release checklist

If it ships, it must be traceable.

This web page is the canonical manual. Product source tokens are authoritative for shipped UI values; this page explains how they relate. Proposed patterns are labelled before they become defaults, and replaced names remain in redirect maps rather than public navigation.

Approved

May ship

Documented here and represented by a maintained source component or asset.

Experimental

Test locally

Labelled in product work; not copied across the portfolio until reviewed.

Deprecated

Redirect and remove

Preserve compatibility, stop new use and give every migration an owner.

check_circleThe name is in the correct tier: masterbrand, product, feature or API.
check_circleThe lockup uses a drawn divider; prose and accessibility omit it.
check_circleThe domain, canonical URL, redirects and session boundary follow chapter 04.
check_circleLight/dark register, accent and radius come from the owning product tokens.
check_circleCopy names the state, consequence and next action without hype.
check_circleKeyboard, contrast, text zoom, reduced motion and accessible names are verified.
check_circleEvery reusable component documents default, focus, disabled, loading and result states.
check_circleReact web primitives follow the Base UI boundary or record why native HTML is sufficient.
check_circleConsequential flows expose context, review, commitment and durable evidence.
check_circleShell and dense data views preserve their task hierarchy at narrow widths.

25 · Resources

Reference the source, not a screenshot of it.