Calculate profit margins instantly

Try Calculator

Internal Reference

Brand Guide: Atlas Accounting Group

The living reference for every visual decision on this site. If a style isn't here, add it here first — then use it in the build.

Colors

Primary

Deep navy — dark sections, hero, footer

#003954 · bg-primary

Secondary

Near-black — display headings on light

#181818 · bg-secondary

Accent

Orange — CTA fills, orange sections

#F4832B · bg-accent

Accent Light

Accent + 20% white — orange button hover fill + border

#F69C55 · bg-accent-light

Accent Ink

Orange TEXT on light surfaces (AA-safe)

#B4540A · text-accent-ink

Sky

Light blue — highlight words on navy only

#79CAE9 · text-sky

Sky Ink

Blue highlight TEXT on light surfaces + navy button hover fill (AA-safe)

#1E7AA8 · text-sky-ink

Input Border

Boundary for inputs & steppers — 3:1 per WCAG 1.4.11 (base-300 is decorative only)

#8A8A8A · border-input-border

Cream

Warm off-white section surface

#F7F5F4 · bg-cream

Cream Dark

Pale peach — LP v2 team band, newsletter band

#FFEDDF · bg-cream-dark

Base 100

Page surface — the white sections alternate with cream

#FFFFFF · bg-base-100

Base 200

Subtle fill — inline code (same value as Cream)

#F7F5F4 · bg-base-200

Base 300

Decorative hairline borders only — 1.59:1 on white, never a control boundary

#CDCDCD · border-base-300

Base Content

Default body text — 9.59:1 on white (8.82:1 on cream)

#454545 · text-base-content

Contrast rules: raw Sky and Accent are backgrounds/dark-surface colors only. Any orange or blue text on white/cream must use the Ink variants. Text on orange fills is navy, never white.

Logos

Atlas Accounting Group color logo on white
Atlas Accounting Group light logo on navy

Color SVG on light surfaces (header); light SVG on navy (footer, dark panels). Files: src/assets/images/branding/

Typography — Sofia Pro (self-hosted)

Display heading — .heading-display (700, uppercase, 1.06 lh, -0.01em tracking)

Built for the trades

Eyebrow — .eyebrow (600, uppercase, accent-ink on light; add text-sky on navy)

Who we serve

Body — 'Sofia Pro', sans-serif, weights 400/500/600/700 + italics

The quick brown fox jumps over the lazy dog. Italic, bold, medium.

Buttons

Square corners, uppercase, navy text on orange fills. Text link pattern: Learn More →

Orange hover (.btn-accent): fill and border both go to accent-light (accent + 20% white), navy text stays put at 5.7:1, plus a soft navy shadow.

Navy hover (.btn-primary): fill and border both go to sky-ink with the same shadow. White on sky-ink measures 4.77:1 — clears the 4.5:1 AA floor for the 15px button label since sky-ink was darkened to #1E7AA8.

Dark-surface outline (.btn-outline-light): white text and a white border, inverting to a white fill with navy text on hover. Use this instead of .btn-outline on navy — that variant draws itself in base-content grey, which sits at 1.6:1 on navy and fails the 3:1 WCAG 1.4.11 asks of a control boundary.

Motion

One global timing: 0.33s ease-in-out, set via Tailwind v4's --default-transition-duration / --default-transition-timing-function tokens in global.css. Every transition-* utility and every component class inherits it, so hovers and accordions feel the same everywhere. The one exception is press feedback (--duration-press, 120ms) — a slow :active nudge reads as lag. Only transform, opacity, colour, size and shadow are animated; never transition-all.

Layout Tokens

--header-h — 5.75rem
Sticky header height. The mobile menu panel and every scroll-mt anchor offset by it, so changing the logo size means changing this one value.
--hero-pad-y / --hero-pad-y-lg — 3.5rem / 5rem
Internal padding for .hero-copy. Hero grids carry no vertical padding of their own — the copy column supplies it and .hero-media stretches to the full row, so the photo always meets the sections above and below however long the copy grows.

Accordion — .accordion

One treatment for every <details> on the site. The panel animates open on the global timing via interpolate-size + ::details-content; the .accordion-icon rotates 45° to an ×. Older browsers snap open instead of animating.

What does this component look like?

Exactly like this — details/summary accordion with an animated plus icon, used for all FAQ sections.

Does it emit schema?

Pass schema={true} on one list per page (or emit a combined FAQPage JSON-LD at page level, as /frequently-asked-questions/ does).

Form Elements

Stepper — .stepper-btn

Section Heading Pattern

Eyebrow label

Section heading with a highlight

Intro copy sits under the heading with relaxed leading. Use align='center' for centered sections.

Testimonial

This is the reusable testimonial treatment — peach panel, orange quote mark, attribution line.
Component Sample, Brand Guide

Photo testimonial - PhotoTestimonial

Client photo with the name over a dark gradient, beside a large pull quote and the full quote. The homepage and landing-page treatment; service pages use it when their testimonial has a photo. With quoteMarks (landing page v2) the quote column centres between the brand's orange quote mark, enlarged, above and turned 180° below; the headline then drops its own quotation marks. Sample text below.

“Pull quote with one highlight.”

The full quote sits under the pull quote in body type.

Sample client, Role, Company

Cards

Tile card — .card-tile

The site's primary card: square, white, hairline border. On hover/focus it scales to 1.04, the border goes brand orange, and a layered navy + orange shadow lifts it. Used for the homepage industry grid, the trade-page service cards, and the step/option cards. Render it as an <a> so the whole tile is the target — it already sets display:flex; flex-direction:column, so only padding and alignment utilities need adding.

Orange tile - .card-tile.card-tile-accent

The orange variant, for the one highlighted service card (Financial Advisory on the construction page). Navy text. On hover the fill lightens to accent-light and the border goes navy, since an orange border disappears on an orange fill.

Partner logo - PartnerLogo (.logo-mask)

A partner's wordmark in a card, opposite the card's icon (the DIY Gusto card on Payroll). The logo file is a CSS mask over the text colour, so the white Gusto logo made for the dark marquee shows on white in a token colour (text-secondary here). Set a height (h-9); the width follows the logo. Use alt="" when the card's heading already names the partner. Not interactive, so no hover or focus state.

DIY Gusto

One or two sentences.

Other card surfaces

Card on white

Rounded .card variant — used for panels, not for link tiles.

Card on cream

Shadowed white card on cream section.

Card on navy

Translucent card, hover:border-sky.

Team Headshot — .team-headshot

Round headshot with an orange disc offset behind it. Used by TeamRoundup on landing pages, on a navy .team-roundup band (sky glow). Always round: two source headshots are pre-cropped circles with transparent corners. Not interactive, so no hover or focus state. The roster itself lives in src/data/team.ts.

Chris Lewis CPA headshot

Chris Lewis, CPA

CEO

Jenny Page headshot

Jenny Page

Senior Accountant

Nicole Orlando headshot

Nicole Orlando

Senior Accountant

Liz Collazo headshot

Liz Collazo

Senior Accountant & Payroll Specialist

Review Slider - ReviewSlider

Short review snippets in the landing page v2 hero, one at a time: stars and source, the snippet, the reviewer's name, and an optional title and company line under it. Navy panel with the step badge's hard orange offset; orange stars on navy (4.67:1), white text, sky name and source. Phones swipe it (scroll snap); the arrows loop and the counter updates for screen readers. No autoplay. Snippets are verbatim (an ellipsis marks any cut), and stars only go on reviews that carry them on the source. Arrows: white outline at rest, white fill on hover, shrink on press, white focus ring.

Google review

“One or two verbatim sentences from a real review.”

Reviewer NameOwner, Company Name
Google review

“A second snippet, to show the arrows and counter.”

Second Reviewer

1 / 2

Plan List - .plan-item

The example plan in landing page v2's "Only the Services You Need" card, under a small "Example plan" label that names the list. A static list, not controls: each service is navy with white text (12.6:1) and a ticked white box. No hover, focus or press states, since nothing is clickable.

  • Monthly bookkeeping
  • Payroll setup

Static Tile - Reasons cards

The tile card when it is not a link (the "Reasons" cards on landing page v2): white, square, hairline border-base-300, on a cream section, with no hover lift, since a tile that reacts reads as clickable. Icon at the shared .service-icon size, display heading, one or two lines, then optional partner logos. Utilities: flex flex-col bg-base-100 border border-base-300 p-6 md:p-7.

Reason heading

One or two short lines that say why this matters.

Team Strip - .team-strip / .team-headshot-light

The roster as one row of small headshots with names (TeamStrip), under a centred eyebrow and heading. Scrolls sideways and snaps on a phone; from lg the headshots grow and the row sits centred. .team-headshot-light lightens the headshot shadow for cream and white surfaces. On the pale peach band (tone="peach", landing page v2) all text is navy, since the orange-ink eyebrow falls to 4.37:1 on peach, and the headshots keep their orange disc, as below.

  • Chris Lewis, CPA

  • Jenny Page

  • Nicole Orlando

  • Liz Collazo

  • Zach German

  • Madison Maxwell

  • Chris Lewis, CPA

  • Jenny Page

  • Nicole Orlando

  • Liz Collazo

Scheduler Notice - .scheduler-notice

The status line over the Calendly calendar (LeadFormCta scheduler) when the calendar hasn’t loaded after 10 seconds: blocked, held by the consent manager, or a very slow connection. Cream band, navy-black semibold text; a "Send your details instead" button that opens the form below, and the phone number, both styled as accent-ink links (4.56:1 on cream) with hover, active and focus states. The script fills it (it is a role="status" region, empty and hidden otherwise) and shrinks the frame; the form stays closed until the visitor opens it. If Calendly arrives late the notice clears itself.

The calendar hasn’t loaded yet. or call (360) 900-0421.

Numbered Steps — .steps / .step / .step-number

Process steps for HowItWorks on landing pages. Navy square, sky numeral, the same offset orange block as the team headshot, and a dashed orange connector to the next step (vertical on a phone, horizontal from md). Use on an <ol> and keep the numerals aria-hidden: the list already announces the order. In HowItWorks the numbers fade in and the connectors draw, one step at a time, once the steps are fully on screen (the whole row from md, each step as it arrives on a phone). Reduced motion shows them static. The sample below does not animate.

  1. First step

    One or two sentences on what happens at this step.

  2. Second step

    One or two sentences on what happens at this step.

  3. Third step

    One or two sentences on what happens at this step.

Header Dropdown - .nav-dropdown-panel

Desktop main nav (Nav.astro). A trade is a split control: its label links to the pillar page and a narrow chevron button opens its services; About and Toolbox are a single button. The panel opens from the button's aria-expanded (click, Enter or Space) and on mouse hover, fades down in 180ms, and closes on Escape, an outside click, or tabbing out. White panel, hairline border, orange top lip, navy-tinted shadow. Items reuse the .menu link states. A trade's panel leads with its own pillar page ("Construction overview"), matching the mobile accordion, and every panel has an aria-label ("Construction services") so repeated labels like "Payroll Setup" keep their trade for screen-reader users. Entries come from NAV in constants.ts; trade dropdowns are built from src/data/trades.ts and list only live pages.

Service Page Sections

Building blocks of the shared service-page template (src/layouts/ServicePage.astro). The full template, with sample copy, is at the template preview.

Icon cards - .service-cards + .service-icon

Centered icon, title and copy, three across from lg; flex, so a short last row centres instead of leaving a gap. Used for both "Sound familiar?" and "What's included". Icons are the site's black + orange line set (the Payroll and Tax page treatment), all at the one .service-icon size, decorative (alt="", aria-hidden).

  • First card

    One or two sentences.

  • Second card

    One or two sentences.

  • Third card

    One or two sentences.

Photo cards - .card-tile.photo-card

The closing "Everything else we handle" cards on every industry-service page (TradeServices), and the guide cards (RelatedPosts, 16:9 with .photo-card-media-wide). Each service card shows the hero photo of the page it links to, registered in src/data/trades.ts; each guide card shows the post's featured graphic. A navy wash from the bottom ties the photo to the palette; on hover the tile lifts and the photo eases in.

Worked example ledger - .ledger

A real table comparing two states of the same job. Numbers right-aligned in tabular figures, the "after" column tinted sky, totals double-underlined the way an accountant marks a final figure. White card with the orange lip; built for a navy section.

Sample ledger
BeforeAfter
Revenue$100,000$100,000
Costs$88,000$82,000
Profit$12,000$18,000
Sample figures.

Text link - .service-text-link

Secondary action beside a button. Underline and arrow nudge on hover, navy on press, navy focus ring. Not currently used on any page (the service pages' pricing links were removed 2026-10-20); kept as a pattern.

See pricing

Bridge band - BridgeBand

Full-width orange band between "Sound familiar?" and "What's included" on every service page. Navy text and a navy button on orange (4.7:1), never white (2.6:1). Copy left and photo right from lg, stacked below; a labelled placeholder renders when a draft has no photo yet.

Sample bridge heading

One or two sentences that turn the page from the problem to the answer.

CTA Band

Reusable closing CTA band

Navy band with radial sky glow — ends most pages.

Blog posts use this navy band. Every other page closes with LeadFormCta instead — the same orange duotone photo band, carrying the lead form on a white card. It replaced the Calendly embed sitewide on 2026-08-12; the retired components are in src/components/_archive/.

Call (360) 900-0421Schedule Call