- Elect transparent taxation regime before 30 September deadline
- File corrective return for the previous fiscal year (minor adjustment)
- Restructure holding to consolidate VAT group and reduce compliance burden
- Register for OSS scheme ahead of planned digital-services expansion
- Appoint dedicated compliance contact for Model 720 obligations
The belief under the brand.
The firms that serve demanding clients are usually too large to know them, or too small to reach across borders. BMC is built for the space between: one team, senior people, every jurisdiction that matters. Everything in this book protects that promise.
BMC
is the brand.
Written BMC in copy, or set as the mark. Never BM Consulting, Blue Mountain Consulting, or B.M.C. Consulting is the service we render, not a part of the name.
- The descriptor
- Tax, Legal & Strategy
The only line that pairs with the mark. Stays in English in every locale. It belongs to the logo, not to body copy.Retire:
Advisory · Strategy,Consulting, any translated logo line. - The legal entity
- Blue Mountain Asesores, S.L.U.
NIF B42985432. Used only where the law requires it: contracts, invoices, legal notices. Never as a brand signature. - The voice
- Precise. Authoritative. Quietly confident.
We advise institutions and people who already operate at a high level. We never oversell, never shout, never pad.
One mark. Five practices.
The mark never bends to a practice. There is no "B|M|C Tax" logo and no practice colour. Practice identity travels in the URL, the page headline, the active navigation and the breadcrumb. The mark stays whole, because a boutique's authority comes from being one team, not four services sharing a building.
A boutique earns trust by being one team with one point of contact, not four sub-brands sharing a building. Per-practice logos read as fragmentation and drift apart over time. So the practice appears everywhere except the mark.
Strategy
Corporate finance, transactions, restructuring and the advisory work that sets direction.
bm.consulting/strategy→ /es/corporativo · corporate-advisoryTax
Domestic and cross-border taxation, planning, compliance and special regimes.
bm.consulting/tax→ /es/fiscal · tax-fiscalLegal
Corporate, commercial and litigation counsel, contracts and dispute resolution.
bm.consulting/legal→ /es/legal · legalBusiness Services
Accounting, payroll, corporate secretarial and the recurring operational backbone.
bm.consulting/business→ /es/servicios-empresariales · business-servicesCompliance
AML, data protection, EU AI Act and digital regulation, the regulatory backbone across every practice.
bm.consulting/compliance→ /es/compliance · complianceA monogram, engineered.
Three Playfair Display letters at weight 800, parted by two bronze-gold bars: 0.10em wide, 0.60em tall, centred on the capitals, with a 0.13em gap, the bar's own width, at every size. The traced masters in brand/masters/ are the originals (geometry B, MJ, 01-11-2026); the .mk CSS system reproduces them and every export derives from them.
The two bars are the line itself. In tax and law everything turns on where the permitted ends; the mark is built on that line, twice.
- LettersPlayfair Display, weight
800, navy-800 - Barsheight
0.60em, width0.10em, centred on the cap height, clean endsradius 1px - Gap
0.13embetween a letter and a bar: the bar's own width, equidistant at every size. The spacing law. - Bar huebronze-gold
#C0922E, one value on every ground - Built in
brand/masters/*.svg(originals) ·BrandLogo.astroand the.mkCSS system ·brand/scripts/kit/for every export
Three variants, one per ground
Full lockup
Descriptor in DM Sans 600, uppercase, 0.22em of the mark, tracked 0.22em, in the same ink as the letters: navy-800 on light grounds, white on dark (the gold descriptor is retired). Centred 0.30em below the letters' baseline, measured to its capitals, never beside. From 40px of mark; the word never drops below 9px.
Favicon
"BMC, ruled in bronze": the three letters centred over a single bronze rule, white on navy. One mark at every size. Crisp from 32px up via the SVG; the 16px raster is the legacy fallback.
BMC One lockup
The platform is the same mark with the word ONE beneath it, in the descriptor's slot and with the descriptor's exact rule (MJ, 01-11-2026). The mark never changes; the word is never beside the C, never italic, never gold. From 40px of mark in the interface; in email the closing lockup goes down to 15px with the word at its 9px floor.
One rule for every word under the mark
- FaceDM Sans
600, uppercase - Size
0.22emof the mark, never below9px - Tracking
0.22em, with the trailing space compensated so the word sits centred - Distance
0.30emfrom the letters' baseline to the word's capitals - Inkthe letters' own: navy-800 on light, white on dark; never gold
- WordsTax, Legal & Strategy · ONE · RESEARCH. Only the word changes.
The mark fails the moment any of these happen
Navy carries it. Gold is the only spark.
The palette below mirrors the live design tokens to the hex. Click any swatch to copy it. Navy is the field, gold is the single accent, the warm neutrals do the quiet work between them.
Navy structure, headings, the mark, dark grounds
Gold the only accent, tiered for legibility
Warm neutrals token name "warm", the slate that fills the page
Gold is not a UI or body-text colour. Gold reads as orange at small sizes and fails AA on white (2.84 : 1), so it never sets eyebrows, taglines, labels, links or body. It is never text, not even the descriptor: on dark grounds the descriptor is white, on light grounds navy-800 (the gold-400 descriptor was retired on 01-11-2026). Otherwise gold is structure only: the mark bars, the full-bleed chapter rule, the active-nav indicator, the focus ring (gold-600), one featured-callout border, one highlighted data point, a single active icon, and the toast action link on navy. Everything else that is text is navy or warm-slate. That is what keeps gold rare, and the firm quiet.
Two families. Nothing else.
Body copy is set in DM Sans at a comfortable measure, never wider than seventy-five characters, with line-height near 1.7 so dense legal and fiscal writing stays readable across a long scroll.
One scale.
One gutter.
Every measurement in the BMC system is a multiple of 8. A single variable, --shell, sets the page gutter at every breakpoint.
8-point spacing scale
Ten steps, each a multiple of 4 or 8. Steps 4 and 12 exist for tight micro-spacing only. All layout, padding, and margin choices draw from this set.
Container widths
Three layout tiers plus unconstrained full-bleed. Content prose and components live in the 1080 container by default.
One gutter variable. --shell: clamp(20px, 5vw, 96px) is applied via .shell { padding-inline: var(--shell) }. Every section uses this class. Never hard-code a page-level horizontal margin. The gutter compresses gracefully on narrow viewports and reaches its 96 px maximum above ~1920 px.
Breakpoints
Four named breakpoints, all multiples of the 8-point grid. Use min-width media queries exclusively (mobile-first).
Gap scale
Three gap steps for grid and flex layouts. Use nothing outside this set.
Vertical rhythm
Section and element spacing that breathes consistently across viewports.
The rule
Every spatial decision must resolve to a value on the 8-point scale. If a value falls between steps, choose the nearest step. The only exception is border-radius and icon stroke widths, which may use odd pixels for optical correction. Never introduce a custom margin or padding outside the scale without explicit sign-off.
Stroke, not fill. Consistent at every size.
BMC icons are stroke-based, monochrome, and neutral by default. Gold is reserved for a single active or featured state per context, never applied decoratively.
Icon specimen, navy stroke, 24×24 grid, 1.5px stroke
Size ramp
-
Grid
24 × 24base grid. All icon artwork lives within a20pxlive area with2pxpadding on each side. -
Stroke weight
stroke-width="1.5"at 24px canonical size. Do not adjust per size: SVG scales stroke uniformly. -
Corner radius
2pxcorner radius on rectangles and paths where applicable (rx="2"). Sharp corners only for decorative right-angle joins (e.g. document fold). -
Linecap & join
stroke-linecap="round"andstroke-linejoin="round"on all paths. -
Fill policy
Default is
fill="none". The only permitted fill isfill="currentColor"on small status indicators (dot, badge, notification), never on structural shapes. -
Colour
stroke="currentColor", inherits the text colour of the surrounding element. Override tovar(--gold-500)for a single active or featured icon per context only. -
Sizes
16 / 20 / 24 / 32px. Never render at arbitrary sizes. If a layout demands an in-between value, use20rather than splitting the difference. -
Recommended library
Lucide (primary) or Phosphor Icons at
regularweight. Both ship 1.5px stroke, round caps, 24×24 grid. Import only what is used, never the full set.
Icon and label pairing
Icons almost never appear alone. Pair them with a visible label or a descriptive aria-label. The four patterns below cover all permitted combinations.
Leading icon (default)
Active state, gold icon, navy label
Gold is a single accent, not a palette. At most one icon per component may use var(--gold-500) as its stroke colour, and only to communicate a selected, active, or featured state. Multiple gold icons in a single view create visual noise and dilute the brand accent. When in doubt, keep every icon navy and surface active state through background or underline instead.
- Use
currentColorso icons inherit their context colour automatically - Scale to the nearest permitted size: 16, 20, 24, or 32
- Always pair standalone icons with an
aria-labelor visible label - Apply gold only to the single active icon in a navigation or action group
- Use Lucide or Phosphor at regular weight to keep stroke consistent across the system
- Import icons individually, tree-shake unused glyphs from the bundle
- Do not fill icon shapes with any brand colour, including navy or gold
- Do not apply gold to more than one icon per component or navigation group
- Do not mix Lucide and Phosphor icons in the same view
- Do not render at fractional or arbitrary pixel sizes (e.g. 18px, 22px)
- Do not add drop shadows, gradients, or opacity effects to icons
- Do not use outlined icons from one family alongside filled icons from another
Recommended libraries
Both libraries match the BMC stroke specification out of the box. Lucide is the primary choice; Phosphor is acceptable when its richer glyph set is needed.
Open-source, 1,500+ icons, 1.5px stroke, round caps, MIT licensed. Tree-shakeable React package. Ships a type-safe component API.
npm install lucide-react
Use the regular weight exclusively (1.5px stroke). Phosphor is appropriate when a glyph is absent from Lucide. Do not mix weights or other variants.
npm install @phosphor-icons/react
Motion clarifies.
It never decorates.
Every transition earns its place by directing attention, confirming state, or reducing cognitive load. If an animation cannot be justified in one sentence, it does not ship.
Hierarchy, not delight
Motion exists to reinforce visual hierarchy and signal cause and effect. Decorative loops, idle animations, and attention-seeking effects conflict with BMC's register of quiet authority. When in doubt, remove the animation.
Entrances only
Elements animate in to acknowledge a user action or a new context. Exits are short and functional. Content is never held hostage to an animation completing before it can be read.
Duration is information
A fast micro-interaction says "this is low stakes." A slower reveal says "this content deserves attention." Duration must match the semantic weight of the change, not the size of the element.
Duration scale
feedback
interaction
narrative
impression
Easing
Three easing values cover all permitted use cases. Everything else is forbidden, without exception.
Primary, Entrances
Fast start, overshoots just past resting position, then settles. Used for all element entrances, panel reveals, and opening transitions.
This is the only entrance easing. Never substitute ease-in-out or spring presets that produce visible bounce.
Exit easing
Starts fast, decelerates to rest. Signals controlled departure. Used for all dismissals: drawer close, modal exit, tooltip hide.
Exit duration is always at the short end of the Action tier (200 ms). The interface should not mourn the element's departure.
Linear, forbidden
Linear feels mechanical and robotic. No physical object moves at constant velocity. Remove all transition: ... linear from production CSS.
Exception: progress bars and loaders where mechanical pace is semantically correct (e.g., upload progress).
Bounce / spring, forbidden
Bounce overshoots past the natural resting point and oscillates. This reads as playful, not authoritative. It is incompatible with BMC's character.
The primary easing var(--ease) has a very slight settle, that is the maximum tolerated overshoot.
The [data-r] reveal pattern
Scroll-triggered entrances use a single shared mechanism: opacity 0 to 1 combined with translateY(20px) to none. An IntersectionObserver adds the class .in when the element crosses the viewport threshold.
Implementation contract
- 01Apply
data-rto the element. It is invisible by default (opacity: 0, translateY: 20px). - 02When the element reaches a threshold (typically rootMargin 0px 0px -10% 0px), add class
.in. Transition uses var(--ease), 900ms. - 03Stagger sibling elements using
transition-delay. Maximum 3 stagger steps. Increment: 90 ms. - 04Under
prefers-reduced-motion, all [data-r] elements are immediately visible. No observer fires. No transition runs.
Live stagger preview
Case titles shown are fictitious specimen data. Never use real client matter names or references in design documentation.
What to animate, what to never animate
Permitted and forbidden properties. This list is exhaustive, not illustrative.
Permitted
- YesopacityGPU-composited, no layout cost.
- Yestransformtranslate, scale, rotate. GPU-composited.
- Yesclip-pathReveal effects. Use sparingly, hero moments only.
- Yesfilterblur on enter/exit overlays. Not on body content.
- Yesbox-shadowDepth changes on interaction. Keep step changes small.
Forbidden
- Nolayout propswidth, height, top, left, margin, padding, gap trigger reflow.
- NocolorColour transitions appear inconsistent across displays and are imperceptible under motion preferences.
- Nofont-weightCauses layout shift. Optical size or opacity can substitute.
- Nobackground-colorUse opacity of an overlay layer instead.
- Noborder-radiusTriggers paint. Use transform:scale + overflow:hidden to simulate.
prefers-reduced-motion: mandatory compliance
This is not optional. Under prefers-reduced-motion: reduce, every [data-r] element is immediately visible with opacity:1; transform:none. All transitions are stripped. No intermediate keyframe state is visible to the user. The _shared.css rule handles this globally: *{animation:none!important;transition:none!important} and [data-r]{opacity:1;transform:none}. Component-scoped animations must add their own reduced-motion override if they are not covered by the global selector.
Architecture, graded cool.
Photography is restrained and architectural: real interiors and facades, never stock handshakes. Every image is desaturated, cooled toward navy in the shadows, and held back so type and the mark stay dominant.
Charts that inform, not impress.
Every chart BMC produces carries implicit authority. That authority depends on restraint: a precise palette, hairline precision, and a single accent that guides the eye to the point that matters.
Gold bar = featured data point. One per chart. No background fill. Gridlines at warm-200.
Gold dot + dashed drop line = one callout maximum. No area fill under the line.
These chart types and visual treatments are prohibited in all BMC-produced materials, print or digital.
Why these constraints
Advisory output is read by people who also read Bloomberg terminals and annual reports. Ornament signals effort spent on presentation, not on insight. The navy palette places every BMC chart firmly within the brand without requiring a logo. The single gold point is a navigational device: it tells the reader where to look first. These rules exist so charts need no explanation beyond their own labels.
One name, one place, one truth.
A three-tier taxonomy, primitive, semantic, component, ensures every value in production code traces back to a single canonical source. No raw hex lives inside a component.
Primitive
Named, immutable values that describe what a color or size literally is. Primitives have no opinion about usage. They are defined once in the design token source and never edited downstream.
Semantic
Role aliases that map a primitive to a purpose. Semantic tokens are what designers and developers reason about. Changing a semantic token cascades everywhere that role appears.
Component
Scoped tokens that bind a semantic role to a specific component. They allow component-level theming without touching shared semantics or primitives.
Category is the domain (color, space, radius, shadow, motion). Role describes intent (text-heading, surface-raised, border-focus). State is optional (hover, active, disabled, pressed). Omit state when the token has no variant form. Use kebab-case throughout. Never abbreviate to the point of ambiguity.
| Primitive token | Value | Semantic token | Role | Example component token |
|---|---|---|---|---|
| Navy, primary brand scale | ||||
| --navy-800 | #1A365D | --color-text-heading | Primary heading text | --hero-title-color |
| --navy-600 | #2C5282 | --color-text-subhead | Sub-headings, labels, links | --nav-link-color |
| --navy-900 | #152D4F | --color-surface-dark | Dark panel background | --footer-bg |
| --navy-950 | #0F2440 | --color-surface-darkest | Hero / night gradient end | --hero-bg-end |
| --navy-100 | #BEE3F8 | --color-surface-tint | Hover states on light surfaces | --table-row-hover-bg |
| Gold, accent scale (decoration only) | ||||
| --gold-500 | #C0922E | --color-accent | Mark bars, bleed rules, active-nav underline, callout border | --mark-bar-color |
| --gold-600 | #A86A0A | --color-accent-deep | Focus ring (outline), progress gradient, large-text gold (use gold-700 for AA body text) | --progress-bar-from |
| --gold-400 | #D8A94B | --color-accent-light | Inverted surface callouts | --hero-statement-em |
| Ink and surface (OKLCH-derived page tokens) | ||||
| --ink | oklch(0.22 0.03 255) | --color-text-body | Body copy | --card-body-color |
| --ink-soft | oklch(0.44 0.02 255) | --color-text-muted | Secondary / supporting text | --caption-color |
| --ink-faint | oklch(0.52 0.02 255) | --color-text-placeholder | Placeholders, clause numbers | --input-placeholder-color |
| --paper | oklch(0.992 0.003 250) | --color-surface-base | Page background | --page-bg |
| --paper-2 | oklch(0.972 0.005 250) | --color-surface-raised | Card, panel, table header | --panel-bg |
| --rule | oklch(0.30 0.04 255/.14) | --color-rule | Dividers, table borders | --card-border |
| Warm neutrals, supporting scale | ||||
| --warm-100 | #EDF2F7 | --color-surface-subtle | Tag backgrounds, badges | --badge-bg |
| --warm-500 | #718096 | --color-text-tertiary | Meta info, timestamps | --timestamp-color |
| --warm-900 | #171923 | --color-surface-inverse | Tooltips, dark overlays | --tooltip-bg |
No raw hex in component code, ever. Every color in a component must reference a semantic token. Semantic tokens reference primitives. This chain is non-negotiable. It is what makes theming, dark mode, and white-labelling coherent operations rather than search-and-replace exercises.
The live reference.
Every interactive element, rendered with shared tokens. Consult this page before building: the right state, color, and focus behavior is already decided.
Buttons
Primary: navy-800 bg, white text. Secondary: navy-800 outline, transparent fill. Tertiary: navy-600 text, gold underline on hover. All states use a 2px gold focus ring.
- Height
- 44px (
--input-h) - Radius
- 6px (
--radius-sm) - Font
var(--sans), 600, 0.9rem- Focus ring
- 2px solid
var(--gold-600), 2px offset - Disabled
- 38% opacity, pointer-events none
Form elements
Inputs: 1.5px warm-300 border, navy-600 border on focus, gold focus ring. Error state: red-700 border with matching ring. Error text leads with a filled circle icon, never color alone.
Checkbox and radio
Checkbox
Radio
Checked state: navy-800 fill, white checkmark or dot. Hover: navy-600 border. Focus-visible: gold ring. Never use color alone to communicate checked state.
Table
| Case | Client | Practice | Billed | Outstanding | Status |
|---|---|---|---|---|---|
| BMC-0412 | R. Lindqvist | Beckham Law | 8,400 | 0 | Active |
| BMC-0389 | Helder Holdings, S.L. | Corporate | 12,200 | 6,100 | Pending |
| BMC-0351 | A. Navarro | Tax advisory | 3,600 | 0 | Closed |
| BMC-0448 | T. Brandt | Residency | 5,750 | 2,875 | Pending |
| BMC-0461 | M. Costa | Beckham Law | 9,100 | 4,550 | Active |
Hairline borders (1px, var(--rule)). Even rows: warm-50. Hover: navy-50. Numbers: right-aligned, tabular-nums, navy-800 600-weight. Status badges: never gold, use semantic greens/grays/blues only. All names and figures shown are fictitious specimen data, never use real client names or amounts in design documentation.
Chips and tags
Default: warm-300 border, ink-soft text. Active: navy-800 fill, white text, gold dot indicator. Use aria-pressed for toggle chips; standard anchor or button for routing chips.
Callout
Compliance note
Under Ley 10/2010 (Anti-Money Laundering), all new client engagements above 15,000 EUR require Enhanced Due Diligence (EDD). Collect source-of-funds documentation before the first billable action.
Single gold top-border (3px, var(--gold-500)) on a paper-2 field. The border signals relevance, never urgency or brand decoration. Do not use colored fills or side stripes.
Toast notifications
Toasts appear centered above the viewport floor. They auto-dismiss after 4 seconds. The action link is optional.
Semantic variants
Background always dark navy. Text always white. Status toasts: role="status". Error or warning toasts: role="alert". Gold is not used as a toast background or indicator, only the action link may use gold-400.
Focus state reference
One rule applies everywhere: 2px solid var(--gold-600), 2px offset, 2px radius. Never suppress :focus-visible without replacing it. Use the pseudo-focus utility class in documentation to simulate focus without capturing keyboard navigation.
Every widget, one source.
The product surfaces, admin platform, public site and documents share one component vocabulary. This is the catalogue of every widget the firm ships, the canonical look for each, and the standards that keep them in sync. A pattern that is not here does not exist yet; build it here first.
The standards that unify them
Every widget below derives its colour, radius, shadow and type from the tokens in §11. These six rules are what stop the platform drifting into the dozens of off-brand variants an audit found (generic blue/emerald/purple, raw hex, three button clones).
Focus ring
Always --focus-ring (gold-600, 2px). Never navy, never gold-500. One ring on every interactive element.
Status colour
Map every state to --success / --warning / --error / --info. Never raw blue-*, emerald-*, purple-*.
Radius & shadow
Use --r-sm/md/lg/xl and --sh-sm/md/lg. No bespoke rounded-2xl / shadow-2xl one-offs.
One primitive per pattern
One Button, one Card, one Badge, one Modal, one Table, one Toast. Clones get deleted, not styled.
Tokens, not hex
Reference var(--navy-800), never #1A365D inline. Selected state is --navy-50, not blue-50.
Gold is structure
Gold-500 = mark, accent bar, active indicator. Gold text is gold-700 (AA). Gold is never a status colour.
Core primitives
Full coverage
Every widget category found across the admin platform, the public site and the documents layer. unified = on canonical tokens; migrate = exists but needs token alignment per the standards above.
| Widget | Canonical home | Status |
|---|---|---|
| Core primitives | ||
| Button | ui/Button.tsx · web ui/Button.astro | unified focus ring → gold-600 |
| Badge / Status pill | ui/Badge.tsx · books/StatusPill.tsx | unified gold-bug fixed; StatusPill semantic map pending |
| Card / Surface | ui/Card.tsx · web ui/Card.astro | migrate hex → vars, --sh-* shadows |
| Input / Field | ui/EditableField.tsx (needs shared Field) | migrate focus ring + shared primitive |
| Select / Dropdown | ui/EditableSelect.tsx | migrate selected state navy-50 not blue-50 |
| Tabs | tax/TaxTabs.tsx | migrate one pattern, tokens |
| Data display | ||
| Table | ui/DataTable.tsx | unified primitive ready; migrate call sites |
| Stat / Scorecard / KPI | ui/Scorecard.tsx · web Stats.astro | migrate trend colours → semantic |
| Kanban / Pipeline | deals/DealKanban.tsx | migrate column accents → tokens |
| Comparison table | web publisher/ComparisonTable.astro | unified |
| Charts / Data-viz | laboral charts/* (Recharts) | migrate series → navy/gold/warm (§10) |
| Navigation | ||
| Sidebar / Nav | layout/Sidebar.tsx · web Header/MegaMenu | unified (laboral sidebar migrate) |
| PageHeader | ui/PageHeader.tsx | migrate hex → vars |
| Breadcrumb | ui/Breadcrumbs.tsx | unified (best-tokenised) |
| Global search / ⌘K | comms/GlobalSearch.tsx | migrate --sh-* shadow |
| Feedback & overlays | ||
| Alert / Callout / Banner | web ui/Callout.astro · EngineOfflineBanner | migrate semantic tokens, one pattern |
| Toast | ui/Toast.tsx (ToastProvider + useToast) | unified primitive ready; migrate call sites |
| Modal / Dialog | ui/Modal.tsx | unified primitive ready; migrate call sites |
| Drawer / Slide-over | leads/LeadDrawer.tsx (motion/react) | migrate one anim pattern |
| Notification panel | comms/NotificationPanel.tsx | migrate type colours → tokens |
| Tooltip / Glossary | web ui/GlossaryTooltip.astro | unified |
| Skeleton / Spinner | ui/Skeleton.tsx · LoadingSpinner.tsx | migrate hex → vars |
| Empty state | ui/EmptyState.tsx | migrate hex → vars |
| Input & flow | ||
| Stepper / Wizard | books/onboarding/StepIndicator.tsx | migrate ring navy not blue, one impl |
| File upload / Drop zone | files/FileUploadZone.tsx | migrate drag state tokens, one impl |
| Date / Range picker | seo/DateRangePicker.tsx | migrate + add full calendar |
| Accordion | dashboard/CollapsibleSection.tsx | migrate generalise primitive |
| Site & marketing (web) | ||
| Hero | web sections/HeroHome · ServicePageHero | unified |
| Contextual / Sticky CTA | web cta/ContextualCTA.astro | unified (use Button) |
| Trust bar | web sections/TrustBar.astro | unified |
| Calculator widget | web calculators/* (Astro islands) | migrate calc-* classes → tokens |
| Eligibility wizard / modal | web services/v2/EligibilityCheckModal.astro | unified |
| Pricing / Honorarios | web page-scaffold/SectionPricing.astro | unified |
| FAQ accordion | web ui/FAQ.astro (+ FAQPageSchema) | unified |
| Timeline / Process | web sections/Timeline · ProcessSteps | unified |
| Testimonial | web sections/Testimonial.astro | unified |
| SEO / Schema blocks | web seo/*Schema.astro (13 types) | unified (no visual) |
| Documents & print | ||
| Letterhead / Proposal / Report | §15 Documents · brand-print.css | unified |
| Email templates | brand/guidelines/templates/*.html | unified |
How it stays in sync. Tokens come from brand/tokens.json → brand/dist/css/brand-tokens.css, served internally at app.bm.consulting/api/brand and shown at /brand (operators only). New widget? Add it here first, build it on the tokens, ship one implementation. Migrate-status rows above are the live backlog.
We write the way we advise.
Confident without being imposing, rigorous without being cold. We advise people who already operate at a high level, so we are precise, never loud, and we never pad.
Most firms write
"We can help you structure the transaction and review the options available."
BMC writes
"We advise on the structure. The recommendation is a holding in Madrid."
Strategic
We lead with the decision, not the process. Every answer points to what to do next.
Analytical
Claims are grounded, sourced and quantified. We show the reasoning, not only the verdict.
Advisory
We counsel, we do not sell: the calm authority of a partner across the table.
We say
advise · analysis · strategy · recommendation · due diligence · counsel · jurisdiction
Never
help · review · plan · suggestion · investigation · cheap · simple
Boilerplate
BMC advises companies and private clients on tax, legal and strategy across Spain and internationally.
One point of contact. One team. No separation between the advice and the people accountable for it. Blue Mountain Asesores, S.L.U., NIF B42985432.
Facts only. Confirm the office list before publishing; no track-record figures are asserted.
One firm, four languages.
BMC operates in Spanish (primary), English, French and German. We transcreate, never machine-translate: each language must read as a peer's writing, not a rendering of the Spanish. Some things never change, the slogan and the service names among them.
Stays fixed, every language
The B|M|C mark · the descriptor Tax, Legal & Strategy · the words ONE and RESEARCH under the mark · the slogan Counsel that endures. · service names (English) · the entity Blue Mountain Asesores, S.L.U. · the domain bm.consulting.
Localizes
All body, voice and marketing copy · URL slugs (ES uses Spanish slugs) · metadata and hreflang.
The slogan stays English
Counsel that endures.
One line, in English, in every locale, exactly like the mark and the descriptor. The body copy localizes; the slogan and the service names do not.
Boilerplate
BMC advises companies and private clients on tax, legal and strategy across Spain and internationally. One point of contact. One team. No separation between the advice and the people accountable for it. Blue Mountain Asesores, S.L.U.
BMC asesora a empresas y clientes privados en materia fiscal, jurídica y estratégica en España y a nivel internacional. Un único interlocutor. Un único equipo. Sin separación entre el asesoramiento y las personas que responden de él. Blue Mountain Asesores, S.L.U.
BMC conseille des entreprises et des clients privés en matière fiscale, juridique et stratégique, en Espagne et à l'international. Un seul interlocuteur. Une seule équipe. Sans écart entre le conseil fourni et les personnes qui en répondent. Blue Mountain Asesores, S.L.U.
BMC berät Unternehmen und Privatmandanten in steuerlichen, rechtlichen und strategischen Fragen, in Spanien und international. Ein Ansprechpartner. Ein Team. Kein Abstand zwischen der Beratung und den Personen, die dafür einstehen. Blue Mountain Asesores, S.L.U.
Register per language
Español
Formal usted throughout; warmth at sentence level, never bureaucratic. Asesorar, not ayudar.
primaryEnglish
Maximum compression. Cut "happy to", "do not hesitate". We advise; our analysis indicates.
internationalFrançais
Vous; weighty syntax without pomp. Conseil and accompagnement, not "advisory".
France / FR clientsDeutsch
Sie, full declension; embrace compounds, cap ~30-35 words per sentence; avoid anglicisms.
DACHBranded at the surface.
Plain where it matters.
BMC documents carry the mark on every cover and header, then step aside. Body text in contracts and NDAs stays in Times New Roman for execution integrity. Branding never competes with legal content.
All client names, entities, figures and references in the specimens below are fictitious. Never use real client names or financial amounts in design documentation.
Avda. Marqués de los Vélez 13, entresuelo
30008 Murcia
Calle Ejemplo, 12, 1.º
30001 Murcia
A4 Letterhead
- Mark top-left at 22 px; entity block top-right, right-aligned
- Gold 1 px hairline immediately below the header, full width
- NIF, address, and email in 7 pt footer, rule-separated
- Body font: DM Sans 10/15 for letters; Times New Roman 11/17 for contracts
Grupo Almeraya Inversiones, SA
Proposal Cover
- Full-bleed navy background (var(--night))
- Mark inverse (white letters, gold bars) top-left
- Document type label top-right, 7 pt, 55% white
- Matter title in Playfair 800, white; client name below in muted
- Date bottom-left, confidentiality notice bottom-right
Client Report & Memo
Two-zone layout: a branded exec-summary page in navy, followed by a 70/30 body (main column + data sidebar). The cover page carries the mark; inner pages use the gold hairline header only.
y optimización fiscal 2026
Report layout rules
- Exec-summary page: navy background, Playfair 800 title, DM Sans body, gold accent on key stat bar
- Body pages: 70/30 grid (prose left, key figures sidebar right)
- Sidebar widgets: paper-2 background, tabular-nums for all figures
- Page header (inner pages): mark at 14 px, gold hairline, document ref right-aligned
- No colour fills in body text zones; hierarchy via weight and size only
Engagement Letter
- Same header as letterhead: mark left, entity right, gold hairline
- "Carta de encargo" kicker in 7 pt uppercase, matter title below
- Key terms as labeled rows, rule-separated, DM Sans throughout
- Signature block at foot: two columns, 1 px rule above each line
- Body clauses (pages 2+): Times New Roman 11/17 for execution
NIF B42985432
Avda. Marqués de los Vélez 13, entresuelo, 30008 Murcia
Invoice Header
- Mark and full entity block top-left; invoice number and date top-right
- Gold hairline separator below the header zone
- Billing party and payment terms in a 2-col meta row
- Line items in a rule-separated table; total right-aligned in Playfair
- NIF and IBAN in 7 pt footer for SEPA compliance
Contract and NDA body text
The cover page is branded. Everything else defers to the legal standard.
The body rule
Cover only. Branding (mark, navy, gold hairline) appears on the cover page and the letterhead header of accompanying correspondence. From page 2 onward, contract and NDA body text uses Times New Roman 11 pt / 17 pt leading on white. This ensures optical consistency with court and notarial standards and removes any question of document tampering.
No coloured text in legal body. Defined terms may be bolded. Headings use Times New Roman Bold, not DM Sans. Section numbers are plain arabic numerals. No gold, no navy fills, no coloured table cells in the operative clauses.
Headers on inner pages. A slim header (5 mm) carries the document reference, party names abbreviated, and the page number. The BMC mark appears at 8 pt, greyscale only, to signal authorship without adding visual weight to content pages.
Production rules
Apply consistently across all document types and output formats (Word, PDF, InDesign).
#C0922E, full-width, immediately below the header block. One use per page; never repeated mid-document.
Cover branding is not optional. Every client-facing document, regardless of length, uses the branded cover or header. A one-page memo still carries the mark, gold hairline, and entity footer. Branding without a cover is not a permitted shortcut. If a document is delivered via email only, the letterhead header applies to page 1.
Print, digital, and screen identity.
Business cards, email signatures, and social avatars form the daily touchpoints of the BMC brand. Each must carry the mark faithfully and maintain the navy-bronze palette across every medium, whether 400gsm cotton stock, a Gmail thread, or a 20px favicon slot.
Spot-UV on mark and descriptor.
Matte laminate base.
- T+34 910 917 811
- Ee.vidal@bm.consulting
- Wbm.consulting
Oficinas / Offices: Avda. Marqués de los Vélez 13, entresuelo, 30008 Murcia
Left-aligned layout. Warm-white stock.
No spot-UV on back.
Print specification
- Size 85 × 55 mm
- Stock 400gsm cotton uncoated
- Finish Soft-matte laminate front, spot-UV on mark
- Front ink Navy: Pantone 289 C. Gold rule: Pantone 871 C metallic
- Bleed 3 mm all sides
- Safe zone 5 mm from trim edge
The mark on the front receives spot-UV varnish so it reads as a subtle tactile lift against the matte laminate. The descriptor "Tax, Legal & Strategy" and "Counsel that endures." are printed in standard ink. No per-practice variants: one card design, one set of templates.
One signature for everyone, in English: v7 (MJ, 31-10-2026), loaded by the Gmail API and shared with the platform's emails. Its rules, the reply variant and the automatic-email template are in section 20; the inline-CSS variants that used to live here (full, compact, plain text) are retired.
Dirk Manuel Martens Jiménez Founder & Managing Partner +34 868 300 587 · Mobile +34 600 000 000 | ||||||||||||||||
| ||||||||||||||||
| Come and meet us at one of our offices: Madrid · Marbella · Las Palmas · Barcelona · Palma de Mallorca · Andorra. | ||||||||||||||||
| ||||||||||||||||
|
Inline CSS only, tables for the bars, no background block behind the mark, no images. Reference: templates/email-signature-v7.html.
LinkedIn / X / WA
Google / Slack
Profile
Comment
Favicon
Tab
Construction
- Navy fill: #1A365D (var(--navy-800)) across all sizes
- "BMC" in Playfair Display 800 weight, white, centered
- Bronze rule (var(--gold-500)) below the wordmark: 2.5 px at 80 px, scaled proportionally
- Round variant: full bleed circle, same composition as square
- Export as SVG (master) plus PNG at 400 px, 200 px, 100 px, 32 px, 16 px
Usage rules
- One avatar everywhere: no per-practice or per-office variants
- Do not substitute a photo of the mark wordmark as the avatar
- Do not add a colored ring, glow, or badge to the avatar outside platform conventions
- The round crop is pre-composed: do not simply clip the square version (the composition shifts visually at circle boundaries)
- Below 24 px drop the rule and show the wordmark only
The avatar glyph is the favicon element described in Section 02 (Mark), applied here at social scale. It is intentionally distinct from the full lockup: "BMC" alone, no descriptor, no slogan. This keeps the icon legible at the smallest sizes while remaining unmistakably BMC.
The leave-behind
A4 presentation folder for proposals, reports and meeting packs. Navy board, gold-foil mark and descriptor centred, the slogan at the foot, a single gold spine rule. The one piece a client keeps on the desk.
- 300gsm navy board (PMS 295C), soft-touch laminate
- Mark and descriptor in gold foil; spine rule in foil
- A4+ with a right-hand pocket and a business-card slit
- Interior warm-white, unprinted, so the documents speak
Slide standards and deck masters.
Every deck is a client-facing document. These five slide templates form the complete master system: cover, section divider, content, data, and pull-quote. All slides share a two-typeface palette (Playfair Display for display text, DM Sans for body) and a single accent colour signal, gold, used only as a structural bar, never as fill behind text.
Exact strings, fixed placements.
Every legal, regulatory, and compliance notice BMC publishes follows a verbatim string and a defined placement. No paraphrasing, no vendor names, no improvisation.
Use the current year of publication. For works spanning multiple years, write the first and last year separated by a hyphen: © 2024–2025. Never use "BMC" alone as the rights holder in legal copy.
Website footer, below the entity statement. PDF documents: last page, footer. Presentations: title slide footer and final slide. The copyright line is always the same typeface and size as surrounding footer text, never distinguished by colour or weight.
All BMC disclaimers carry the same legal meaning: the content is informational, not legal advice, and engagement creates no professional relationship. Choose the size that fits the surface.
| Size | Context | Verbatim text | Placement |
|---|---|---|---|
| S | Insights, blog posts, calculator outputs | This content is for informational purposes only and does not constitute legal or tax advice. | Article footer or sidebar note |
| M | Email newsletters, proposals (cover page) | The information contained in this communication is intended for general informational purposes only. It does not constitute legal, tax, or financial advice, and should not be relied upon as such. No professional relationship is created by receipt of this material. | Below main body, above entity statement |
| L | Formal reports, legal opinions, due diligence summaries | This document has been prepared by Blue Mountain Asesores, S.L.U. for informational purposes only. It does not constitute legal, tax, regulatory, or financial advice, and does not create a professional relationship between Blue Mountain Asesores, S.L.U. and any recipient. The contents reflect information available at the date of preparation and may be subject to change. Recipients should seek independent professional advice before acting on any matter contained herein. Blue Mountain Asesores, S.L.U. accepts no liability for reliance placed on this document by any party. | Separate disclaimer page or full-width footer block |
Delivered in writing to every new client before or at the start of the professional relationship, as required by Ley 10/2010 de Prevención del Blanqueo de Capitales y de la Financiación del Terrorismo.
Verbatim notice: En cumplimiento de la Ley 10/2010, de 28 de abril, de prevención del blanqueo de capitales y de la financiación del terrorismo, Blue Mountain Asesores, S.L.U. está obligada a identificar y verificar la identidad de sus clientes, conocer la naturaleza de la actividad profesional o empresarial y el origen de los fondos involucrados en la relación de negocio. La información y documentación que le solicitamos tiene carácter obligatorio. La negativa a facilitarla impedirá el inicio o la continuación de la relación profesional.
When a user interacts with an AI system that could be mistaken for a human, they must be informed that they are interacting with an automated system. The disclosure must be made before or at the point of interaction, in plain language, and in the same language as the interaction.
The disclosure must not name the specific AI model or vendor. State only the function: "You are interacting with an automated assistant."
Voice greeting (first utterance) · Chat widget header · Pre-session email notificationContent generated or materially altered by an AI system and published externally must carry a machine-readable and human-readable label indicating it is AI-generated or AI-assisted. The label does not require identification of the system used.
Internal drafts, tools used exclusively by BMC staff, and client deliverables that are reviewed and approved by a licensed professional before transmission are exempt from this labelling requirement.
Metadata tag on published digital assets · Disclosure note on AI-generated reports delivered to clientsAny collection of personal data must be accompanied by a processing notice stating: the responsible party (Blue Mountain Asesores, S.L.U., NIF B42985432), the purpose and legal basis of processing, data retention period, and the data subject's rights (access, rectification, erasure, portability, objection). The notice must reference the supervisory authority (AEPD).
The notice may appear as an inline block, a linked privacy policy, or a pre-tick statement. The linked policy must always be accessible without authentication.
All web forms · Client onboarding documents · Email subscription confirmationsOne signature. Emails that read like letters.
Every email from BMC, written by a person or sent by the platform, ends the same way: the v7 signature, in English, with its legal block. The body is a normal email, not a designed one. And every page shares with a navy card that carries its own title.
The signature, v7 (MJ, 31-10-2026)
- Mark22px, navy letters on white, bars as table cells. No background block: mobile clients drop cell backgrounds and the letters would vanish.
- PersonName in DM Sans 600, role and area beneath; a team signs when the platform sends on its own (Billing Team, Tax Team, Client Service Team).
- LinksNine site links, each with its trailing slash; the offices list; legal pages in English.
- Legal blockEntity and NIF · rights mailbox
bbotia@bm.consulting(never dpo@: only Certus has a registered DPO) · AI disclosure, EN then ES · Registered office / Domicilio social: Avda. Marqués de los Vélez 13, Murcia. - Reply variantName, role, one line and a 9px-bar mark. Used for replies and for every automatic notice; the full signature only opens a relationship or sends a proposal.
- LoadingBy the Gmail API (
sendAs), never pasted; the same HTML signs the platform's emails. Twelve@bm.consultingaliases.
Reference HTML: templates/email-signature-v7.html and templates/email-signature-v7-reply.html.
Automatic emails (MJ, 01-11-2026)
They look like emails written by a person. No header, no boxes, no buttons, no card. One template for every sender, in the contact's language (ES, EN, FR, DE); no language, no send. Fixed order:
- 1Greeting with the name
- 2One or two paragraphs: what happened, what we do
- 3Facts as lines, Label: value, never a table or a box
- 4One action as a bold navy text link ending in ›, never a button
- 5"Adjunto: file.pdf (size)." when there is one
- 6Sign-off and the area team's reply signature
DM Sans 15/1.55 on #2D3748 with Arial fallback, 560px measure, identical text/plain part. Subject: the key fact in natural words, never a tool name. Reference: templates/email-plain.html.
As it renders
Full signature
Dirk Manuel Martens Jiménez Founder & Managing Partner +34 868 300 587 · Mobile +34 600 000 000 | ||||||||||||||||
| ||||||||||||||||
| Come and meet us at one of our offices: Madrid · Marbella · Las Palmas · Barcelona · Palma de Mallorca · Andorra. | ||||||||||||||||
| ||||||||||||||||
|
Reply variant
| Dirk Manuel Martens Jiménez | Founder & Managing Partner +34 868 300 587 | mj@bm.consulting | ||||||||
| ||||||||
|
Social cards
Static cards, one per section
1200 × 630. Navy gradient (#0B1C33 → #0F2440 → #16304F), the light lockup at 210px, the section word in DM Sans 600 20px tracked 0.30em at 82 % white: Industries, Legal, Business, Corporate, Tax, Employment, Immigration. Generated by brand/scripts/kit/og.py from masters/lockup-dark.svg, served from /og/v2/.
Dynamic cards, one per page
Insights, case studies, BOE and DGT pages render their own card at /api/og: eyebrow in the page's language (DM Sans 600 20px, tracked 0.30em), title in Playfair 700 at 60px, 50px from 90 characters and 44px from 130, three lines at most, the block centred; a second line in DM Sans 26px for the BOE id or the DGT date; the white mark at 40px cap height bottom left and bm.consulting bottom right. Proper names stay untranslated: BOE, BMC One, ids, Dirección General de Tributos.
How it stays locked.
Three sources, one truth
Machine-readable source: tokens.json (the canonical source of truth) → global.css is derived. Humans: this document. Agents: brand.md. A change to tokens.json regenerates the CSS, the guide and the assets in the same pull request.
The mark is code
It is rendered by BrandLogo.astro, not stored as art. SVG and PNG exports in brand/logos are derived for third parties and must follow the code, never lead it.
New need, same path
A genuinely new asset or colour is added here and to the tokens together, then it becomes canon. Until it is in this file, it is not the brand.
Nobody redraws the mark, rewrites the line, or invents a colour. They open this page.