Banyan Group · Admin Portal · Design Handoff

A calmer palette and one icon family.

Proposed changes for the back-end demo. The goal isn't fewer colors — it's pulling every hue into the same muted, earthy register so the interface reads as one considered system rather than five. Hex values and CSS tokens are ready to lift at the bottom.

01

What's on screen today

Roughly what the current build uses, grouped by role. Each of these is fine on its own — the trouble is they don't share a saturation or temperature, so placed together they compete for attention.

Forest greenPrimary buttons, "Morning" shifts, confirmed appointments
≈ #234C3A
Rust orange"Afternoon" shifts, Dining revenue bar
≈ #B8621B
Saturated blueDeep-tissue appointments, "SL" avatar, calendar icon
≈ #4A6FCF
Bright violet"MR" avatar, DUO badge, customers icon
≈ #7C4DFF
School-bus yellow"Leave", low-stock warnings, Hot-Stone blocks
≈ #F5C842
Fire-engine redCancellations, out-of-stock
≈ #D64545
Sage greyChart "past" bars, day-off cells
≈ #C3CFC0
Read: six accent hues, four different saturation levels. The violet and pure blue in particular are much louder than the forest green they sit beside, which is what makes the boards feel busy.
02

Proposed system

Same roles you already rely on — green as the brand, blue for information, red for cancellations — but every accent is desaturated to a shared earthy tone, plus one coordinated warm pair (clay + honey) that replaces both the rust orange and the bright yellow. Each hue ships as a full scale so states have depth without new colors.

Forest

Brand, primary actions, "Morning", confirmed
900#17362A
700 · base#234C3A
500#3C6B54
300#7FA891
100#DBE9E0
50#EFF5F1

Harbor

Information, "Deep Tissue", "Split" shifts
700#2E4F63
500 · base#4E7488
300#9FBAC7
100#DEEAEF

Clay

Warm accent — "Afternoon", Dining (replaces rust)
700#9C5330
500 · base#BE7548
300#DDAE8C
100#F2E3D7

Honey

Warnings, "Leave", low stock (replaces bright yellow)
600#C08A2E
400 · base#DDB05A
200#EFD9A2
100#F7ECD2

Brick

Cancellations, out-of-stock, destructive
600 · base#A8443B
400#C67A70
200#E6C0BA
100#F4E2DE

Neutrals

Text, borders, surfaces — a green-leaning grey so it sits under the brand
Ink#17211C
Slate 500#6B756E
Slate 300#B9C1BB
Mist 200#DDE3DE
Mist 100#EEF2EF
Paper#F8FAF8
03

Shift & appointment states

The same states you have now, remapped onto the new scales. Notice each stays distinguishable while sharing a temperature — that's the difference from the current board.

Shift planner

Morning 09:00–15:00 · Forest 700
Afternoon 14:00–21:00 · Clay 500
Split 9–13 / 17–21 · Harbor 700
Day Off Off · Mist 100
Leave Honey 100

Appointment calendar

Confirmed Thai Massage · Forest tint
In progress Deep Tissue · Harbor tint
Pending Hot Stone · Honey tint
Cancelled Brick tint
Avatars & DUO badge: rotate initials through five family tones instead of random brights. The violet becomes a muted plum so it still feels distinct.
AP
SL
DK
MR
JT
04

Icon pack — treatment setup

Replacing the emoji (📋 💰 👤 📅 ⚙️ 🗑️) with one line family: 24×24, 1.6px stroke, rounded joins, single-color so they inherit whatever the state calls for. These render crisply at any size and stay legible in the sidebar.

General
was 📋
Pricing & Duration
was 💰 · price tag
Therapists
was 👤
Availability & Rules
was 📅
Advanced
was ⚙️
Delete Treatment
was 🗑️ · uses Brick
05

Dashboard "logo" tiles

The coloured metric icons on the Dashboard and Inventory pages, unified. Same rounded tile, same line-icon family, each tinted with its own scale's 100 background and 500/600 icon — so the four cards read as a set instead of four random colours.

1,284
Total Bookings
$124,320
Total Revenue
9,430
Total Customers
48
Today's Arrivals
10
Total Items
3
Low Stock Alerts
0
Out of Stock
$11,302
Total Stock Value
Note for dev: the current build tints these four differently (yellow box, green chart, violet people, blue calendar). Keeping the tile shape but restricting tints to the family is the single biggest calm-down for the dashboard.
06

Therapist avatars

Replacing the flat colour-initial blocks. Two placeholder options, both drawn from the family palette — swap in real staff headshots for production; these hold the layout and look intentional until then. Each therapist keeps one assigned tone across the whole portal so they stay recognisable.

Option A · Silhouette

Alexandra P.
Senior Therapist
Maya Reyes
Facial Specialist
David Kim
Deep Tissue Expert
Sarah Lopez
Aromatherapy
James To.
Hot Stone

Option B · Monogram

AP
Alexandra P.
Senior Therapist
MR
Maya Reyes
Facial Specialist
DK
David Kim
Deep Tissue Expert
SL
Sarah Lopez
Aromatherapy
JT
James To.
Hot Stone

Demo data · pravatar.cc

To populate the demo with photos, use pravatar.cc — free, no key, just a URL. Pin each therapist to a fixed img number so their face stays consistent across the shift planner and appointment schedule. Preview the numbers below and swap any that don't fit — the library has ~70 images.

/* pattern — size in px, img = fixed image id */
https://i.pravatar.cc/150?img={n}

/* suggested mapping (adjust to taste) */
Alexandra P.  — Senior Therapist      img=5
Maya Reyes    — Facial Specialist      img=9
David Kim     — Deep Tissue Expert     img=12
Sarah Lopez   — Aromatherapy           img=16
James To.     — Hot Stone              img=33

/* keep the identity ring regardless of photo */
.avatar{ border-radius:50%; border:2px solid var(--forest-500); }
  /* ring color = each therapist's assigned tone */
One thing to know: pravatar serves real people's photos released under CC0 (free, no attribution) — they are not AI-generated faces. Fine for a throwaway demo. If the requirement is specifically no real identifiable faces, use generated.photos instead, which produces synthetic people who don't exist. Either way the URLs slot into the same circular frame.
For production: drop real headshots into the same circular frame — keep the therapist's assigned tone as a 2px ring so identity colour survives even with photos. These placeholders are illustrative, not real people.
07

Drop-in tokens

The full set as CSS custom properties. Same names used throughout this doc.

/* Banyan Admin — color tokens */
:root{
  /* neutrals */
  --ink:#17211C;        --slate-700:#3E4842;  --slate-500:#6B756E;
  --slate-300:#B9C1BB;  --mist-200:#DDE3DE;   --mist-100:#EEF2EF;
  --paper:#F8FAF8;      --white:#FFFFFF;

  /* forest — brand / primary */
  --forest-900:#17362A; --forest-700:#234C3A; --forest-500:#3C6B54;
  --forest-300:#7FA891; --forest-100:#DBE9E0; --forest-50:#EFF5F1;

  /* harbor — information */
  --harbor-700:#2E4F63; --harbor-500:#4E7488; --harbor-300:#9FBAC7; --harbor-100:#DEEAEF;

  /* clay — warm accent */
  --clay-700:#9C5330;   --clay-500:#BE7548;   --clay-300:#DDAE8C;   --clay-100:#F2E3D7;

  /* honey — warnings */
  --amber-600:#C08A2E;  --amber-400:#DDB05A;  --amber-200:#EFD9A2;  --amber-100:#F7ECD2;

  /* brick — cancel / destructive */
  --red-600:#A8443B;    --red-400:#C67A70;    --red-200:#E6C0BA;    --red-100:#F4E2DE;

  /* avatar rotation */
  --plum-500:#7A5568;
}

Banyan Group admin portal · proposed design direction · shades of green, blue and brick retained per brief, pulled to one muted register · icons are single-color SVG, swap stroke to any token.