The brand, in full.
A neo-brutalist engineering terminal: pure black ground, white ink, one phosphor-green accent reserved for commitments, one monospace family, zero radius, 2px borders, hard offset shadows, and readouts that are real. It looks like an instrument, not a brochure. Everything below is rendered from the tokens and the brand data — swap the tokens and the whole document re-skins.
- tokens
- v0.1.0
- source
- brand/tokens.json · design-language.md
- status
- handoff artifact · noindex
Identity & voice
Voice is first person singular — I, never we. A plural voice asserts a team that does not exist. Claims sit next to evidence or are written as commitments; marketing adjectives without adjacent evidence are banned outright.
>_ locked copy
- Hero headline
- I build, modernise, and maintain the web software your business runs on.
- Hero sub-line
- One accountable person, end to end: I don't hand you off. Full-Stag Digital is a digital solutions studio in Eindhoven. Whether it's something new, something you've inherited, or something that's grown past its limits, you deal directly with the engineer who owns the result.
- Primary CTA
- Start the conversation
- Closing CTA
- Send me your problem
- CTA claim line
- Odd problem, weird integration, or no idea where to start — bring it.
- Contact lead-in
- Email is the way in:
>_ commitments — the one job green does
- Платен доклад за осъществимост, част от цената на изграждането, преди да се ангажирате с него. src: Как работя · стъпка 03
- Фиксирана оферта след него. src: Как работя · стъпка 04
- Новите идеи по средата на изграждането не издуват тихо сметката: планират се за следващата версия, като ваше решение. src: заявен ангажимент, все още няма дневник
>_ voice — do / don't
First person singular
No marketing adjective without adjacent evidence
A claim sits next to its evidence, or is written as a commitment
Banned adjectives: innovative, seamless, cutting-edge, world-class, best-in-class .
The mark
The stag head is the only illustrative element the brand owns. Base fill is white or currentColor — never solid green (one scoped exception: the favicon, Amendment E), never distorted. Shipped sizes (escalated 2026-07-06): CTA glyph 32px, nav 72px, footer 88px, hero up to 320px. Minimum 24px; clear space at least 25% of the mark's height.
- Base fill is white or currentColor — never solid green, never distorted or cropped.
- The only illustrative element the brand owns; icons are lucide, used only to disambiguate a label.
- Amendment C glow trace is scoped to exactly this treatment on exactly this element; it generalises to nothing.
- All motion on the mark is removed under prefers-reduced-motion.
>_ variant inventory (source → shipped)
- The mark — source of truth
- brand/assets/deer-head-outline-1.svgSingle closed compound outline, white fill. Every shipped rendering derives from it.
- Live in-app mark
- app/components/StagMark.vueoutline-1's path inlined verbatim; fill driven by tone (ink / accent / current); aria-hidden.
- Static asset
- public/brand/stag-mark.svgByte-identical copy of outline-1, served at /brand/stag-mark.svg.
- Tab icon — Amendment E
- public/favicon.svgoutline-1 on a black backdrop with the fill flipped to the accent green. The one green-filled rendering — ratified as a scoped exception at operator direction (Amendment E, 2026-07-06); like Amendment C it generalises to nothing else.
- Full illustration
- brand/assets/deer-head.svg → public/brand/stag-mark-full.svgThe detailed gradient-shaded rendering — a static asset for external/manual use, never the UI mark.
- Unused alternates
- brand/assets/deer-head-outline-{2,3}.svgSource options only; no shipped derivative traces to either.
>_ misuse — never
Wordmark lockups
ПредстоиThree dot-pattern wordmark lockups are planned (PLAN.md stage 0) but not on disk. They are documented here when the operator ships them — never mocked up in the meantime.
Colour
Colour carries meaning before branding. Every colour maps to a semantic role; no colour may be introduced without one. The binding rule is on the accent: green marks commitment and nothing else.
>_ semantic roles
>_ surface steps
>_ accent — one atomic state machine
Default, hover, and active change together or not at all. A lone default flip splits the press state's identity — measured: red at rest, green on hover. Hover and active are derived from the default in the skin.
>_ status accents
Typography
JetBrains Mono carries the whole identity. The distinction a second typeface would carry is expressed inside the mono family instead — through weight, case, colour, and tabular figures.
>_ four semantic levels
- Narrative
- Prose a human readsRegular weight, sentence case, foreground
- Specification
- Headings, section labelsBold, uppercase, wide tracking
- Evidence
- Numbers, metrics, code, commitmentstabular-nums, accent or foreground, source + date adjacent
- Metadata
- Labels, captions, provenance linesSmall, muted ink, uppercase where terse
>_ type scale (1.25 text · 1.618 display)
Aa
- display
- 5.11rem
Built end-to-end
- h1
- 3.16rem
One operator
- h2
- 1.953rem
A written feasibility report
- h3
- 1.5625rem
Email is the way in.
- lead
- 1.25rem
I build them end-to-end and I don't hand you off.
- body
- 1rem
Secondary detail and fine print.
- small
- 0.8rem
SRC: HOW I WORK · STEP 03
- metadata
- 0.64rem
Space, elevation, texture
Hierarchy is built from spacing (8px base), 2px borders, and surface steps, then — as the only sanctioned third dimension — a hard offset shadow. Soft or blurred shadows are banned globally; radius is 0 everywhere.
>_ radius & hard offset shadow
>_ texture
Motion
Motion communicates a state change — press, reveal, focus, load. Durations come only from tokens; no springs, no bounces, no scroll choreography. Three ambient signatures are sanctioned because they signal liveness, and all three vanish under prefers-reduced-motion.
>_ durations
>_ the three sanctioned signatures (live)
tokens v0.1.0 · chrome.liveReadout.commitLabel 8487dc8 · chrome.liveReadout.builtLabel 2026-07-12 06:57 UTC · signature demo — a ticker carries a real readout, never decoration ·
All three are removed entirely under prefers-reduced-motion.
Components
Every component is the real shipped one, rendered live in its variants and states — not a screenshot. This is the implementation reference.
>_ BrutalButton — variants
>_ the primary CTA — focal point (Amendment D)
The one green-stays-green button. Variant "cta" walks the accent atomic group (default → hover → active) instead of inverting to transparent, sits one elevation tier above every other block (8px shadow + the matching deep press), and carries the stag glyph as identity framing. One per page — the closing "Start the conversation" (and the hero's, on the homepage). Nav, form submits, and utility buttons keep the quieter variants so the focal point stays focal.
>_ ServiceCard (teaser) & ServiceBrief (with inspection layer)
- 01
Уеб приложения и SaaS
Софтуер по поръчка, оформен около начина, по който бизнесът ви наистина работи: изцяло ваш и построен да расте с вас.
- Как работя
- Проектирам модела на данните преди интерфейса, така че всичко, което виждате, стъпва върху основа, която вече е правилна.
- Какво получавате
- Софтуер, който се разраства с бизнеса ви, вместо да опре до скъпо преизграждане, защото планирането е свършено отрано.
- 02
Електронна търговия
Онлайн магазин, от който се купува лесно и който приема плащания надеждно, всеки път. Построен да продава.
В търговията съм от ученическите си години (образование по електронна търговия, 2012–2017) и същината не се е променила оттогава: магазинът трябва да приема пари надеждно. Изграждам каталога, касата и плащанията и тествам точно пътищата, където един провал би ви струвал поръчка, автоматично, преди всяко издание.
Who it's for: For anyone selling products or services online who needs the checkout to work every time, not most of the time.
Какво получавате- Работещ каталог и каса
- Интеграция за плащане през утвърден процесор (Stripe или Mollie)
- Автоматизирани тестове (Playwright, Vitest) по пътищата на касата, които ви струват поръчка
Промоционална визияТехническа схема- Как работя
- Плащанията минават през утвърден процесор (Stripe или Mollie, избран за вашия пазар), така че данните от карти никога не докосват системата ви и товарът на сигурността никога не става ваш.
- Какво получавате
- Каса, която приема пари надеждно, а рискът от съответствие и измами се носи от процесора, не от вас.
>_ ProcessStep (with commitment)
03: Доклад за осъществимост
Писмена препоръка, която сваля риска от изграждането за вас: посоката, която бих поел, какво включва и честна цена, за да се ангажирате уверено. Платена услуга на част от това, което би струвало да строите на сляпо.
- Резултат
- Писмена препоръка, която можете да занесете на всеки разработчик.
- What I need from you
- Honest steers on priorities, constraints, budget, and timeline, so the recommendation reflects your reality.
Платен доклад за осъществимост, част от цената на изграждането, преди да се ангажирате с него.
Фиг.03Доклад за осъществимост
>_ FactList
Education
- 2017 –
Софтуерно инженерство, Fontys ICT, Айндховен
От септември 2017 г., дипломирането е в ход.
- 2024
Сертификат за минор Digital Experience Design, Fontys ICT
Сертификат за минор, завършен 2024 г.
>_ PendingSlot (honest absence)
VAT (BTW) number
ПредстоиNot yet designated for publication. Renders visibly pending — never a fabricated value.
>_ LegalEntry
- Търговско наименование
- Full-Stag Digital
>_ ContactForm (disabled prototype preview)
>_ CtaBlock
Донесете ми проблема. Ще намеря решението, което пасва на бизнеса ви.
Първият разговор е безплатен и с прости думи. След това платеният доклад за осъществимост ви дава посоката, честната цена и правилния път напред, за да се ангажирате уверено, вместо да строите на сляпо. източник: Как работя · стъпка 03
>_ SiteNav — index links · accent hover · active underline
The real component in a static frame (in situ it is the sticky header at the top of this page). Each link takes a position-derived 01/02… index and fills with the accent on hover; the link matching the current route carries a 2px underline via aria-current — visible on the live nav when you are on a linked page, not on this unlisted styleguide. Below 1024px the links collapse behind the menu toggle; nothing is hover-only.
>_ SiteSection — the index-rail section shell
The shared full-width section shell: an oversized index block, a terminal-style title, and a contained inner wrapper. The homepage sections compose from it.
Content dropped into the default slot sits in the contained inner wrapper. The index is display text kept in sync by hand — section wayfinding, so it renders in the accent only as a sanctioned index, never as a commitment.
>_ InspectionLayer — persistent aside ≥1024px · disclosure below
- Как работя
- Плащанията минават през утвърден процесор (Stripe или Mollie, избран за вашия пазар), така че данните от карти никога не докосват системата ви и товарът на сигурността никога не става ваш.
- Какво получавате
- Каса, която приема пари надеждно, а рискът от съответствие и измами се носи от процесора, не от вас.
The brand's interaction signature: Constraint / Decision / Tradeoff rows are always reachable. At ≥1024px it is a persistent aside (shown open here); below 1024px it collapses behind a real [+] / [-] disclosure button that is keyboard-focusable — never hover-only. This is the same layer embedded in ServiceBrief above.
>_ SiteFooter
Live in situ at the foot of every page. Brand colophon, the sitemap and legal columns, and the confirmed studio line (Eindhoven, KvK) — first-person, no marketing adjectives, the same voice invariant the whole site holds.
Block grammar
Pages compose from typed blocks; blocks compose from primitives (Claim, Evidence, Constraint, Decision, Commitment, Action, Context, Reference, Outcome, Tradeoff). Each block states what it must contain and what it may add.
| Block | Requires | Optional |
|---|---|---|
| Hero | Claim, Action | Commitment, live Evidence |
| Service | Claim (plain layer) | Constraint, Decision, Tradeoff (inspection layer) |
| Process step | Claim, Outcome | Commitment, Evidence |
| Ledger row | Outcome, Evidence (with provenance) | Reference, Tradeoff |
| CTA | Action, Commitment | Constraint |
| Contact | Action, Context (real facts only) | Commitment |
Honesty & evidence
Every visual element is honest or load-bearing, or it goes. Data shown is real; a readout that cannot be made real is removed, not faked. These are the mechanics that keep the terminal aesthetic true.
Accessibility
One structure, three readers: the same markup serves eyes, screen readers, and browsing agents. The accessibility rules and the agent rules are the same rules.
- Semantic elements do their real jobs: <button> for actions, <a> for navigation, never a clickable div; headings in document order.
- Every input has a programmatic label; every actionable element is visible, reasonably sized, and shows a pointer cursor.
- Nothing informational is hover-only — everything revealed on hover is reachable by keyboard focus and tap.
- No text hidden from humans but exposed to machines, except assistive labels that describe and never instruct.
Invariants & governance
Invariants come in two classes. Presentational ones are reversible values with no truth content — bendable under a sanctioned experiment. Truth invariants are never bendable; the correct response to a request that breaks one is refusal with citation.
>_ tier 1 — machine-checked
- 01Colours only from tokens — no arbitrary hex, rgb, or unknown utility classes.
- 02border-radius is 0 everywhere; no soft box-shadow outside the .brutal-shadow layer.
- 03Motion durations/easings only from tokens; no infinite loop outside the three sanctioned signatures.
- 04Every Evidence node carries source and date (content-schema gate).
- 05Copy contains no first-person plural and no banned marketing vocabulary (prose linter).
- 06Templates pass accessibility linting; public pages emit JSON-LD.
>_ tier 2 — judgment-checked
- 01Classify every element REQUIRED / SUPPORTING / DECORATIVE / MISLEADING — delete the last two.
- 02Strip test: with CSS off, the page still makes its argument in order.
- 03Survival test: would this element exist if colour, motion, and branding were removed?
- 04Third-reader test: could an agent, given only this page, answer the buyer question and act?
>_ transformation rules
- Hierarchy
- Spacing, then borders, then surface steps, then a hard offset shadow. Never a soft shadow or colour wash.
- Emphasis
- Weight and case, then size, then accent — only if it is a commitment. Never a new colour.
- Grouping
- Whitespace, then a border. Never a rounded card.
- Delight
- Make a readout real, or expose a decision. Never add an ornament.
- Trust
- Add evidence with provenance, or a commitment. Never add an adjective.
>_ forbidden outright
- Fabricated data of any kind — fake telemetry, coordinates, booking slots, statistics.
- Hover-only information (excludes keyboard and touch).
- Decorative symbolic artefacts — spheres, HUD rings, ornament that measures nothing.
- Soft or blurred shadows; rounded corners.
- Marketing adjectives without adjacent evidence.
- Any colour without a semantic role.
A request that breaks a presentational invariant is answered refuse → formal amendment → implement : the reviewing agent refuses with citation until the operator issues a scoped amendment, then implements it exactly. The accent index numerals and the mark's glow trace both entered this way.
Colophon
This magazine renders from the brand's own source of truth. Nothing here is hand-copied — the values trace to the tokens, the components are the shipped ones, and the copy is the ratified deck.
- Token source
- brand/tokens.json · v0.1.0
- Values read live via app/utils/brand.ts.
- Content source
- design-language.md · agent-kit · site.ts
- Copy is the operator-ratified deck.
- Templatable
- Swap the tokens, re-skin the document.
- Fully real once the token build script lands; today @theme is hand-synced with the source and CI diffs it.
- Framework seam
- A disciplined internal design system.
- Build the renderer once; every future brand instance earns its own magazine by swapping tokens.