/* ============================================================ LOCKED DESIGN — DO NOT MODIFY Frozen: 2026-06-03 Site: groomport.com (custom domain, also served at willhouseos.polsia.app/root) and groomport.polsia.app root route (hostname router) Any design change must actively override these values. ============================================================ COLORS (CSS custom properties): --bg: #F5EFE6 (primary background — warm cream) --surface: #EDE5D8 (card/section backgrounds) --surface2: #E2D8C8 (nested surface, phone mockup appointments) --border: #D4C4A8 (borders, dividers) --accent: #C97B3A (primary CTA, buttons, highlights) --accent2: #D4956A (secondary accent, status dots, proof stats) --text: #3D2410 (primary text — deep warm brown) --muted: #7A5C3A (body copy, secondary text) --muted2: #A08060 (placeholder text, labels, timestamps) TYPOGRAPHY: Headings: 'Nunito' (weights: 600, 700, 800) — Google Fonts import: https://fonts.googleapis.com/css2?family=Nunito:wght@600;700;800 Body: 'DM Sans' (weights: 400, 500, 600) — Google Fonts import: https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600 Fallback: -apple-system, BlinkMacSystemFont, sans-serif BUTTONS / CTAs: Primary background: --accent (#C97B3A) Primary hover: #B56A2A Box shadow: 0 4px 20px rgba(201,123,58,.30) Hover shadow: 0 8px 28px rgba(201,123,58,.35) Border radius: 8px (nav), 10px (buttons/inputs), 16px (cards), 20px (major cards) Transition: background .2s, transform .15s, box-shadow .2s BORDERS: border-color: var(--border) = #D4C4A8 card border: 1px solid var(--border) (16px radius) card border hover: var(--muted2) NAVIGATION: background: rgba(245,239,230,.92) backdrop-filter: blur(16px) border-bottom: 1px solid var(--border) height: 60px SPACING: container max-width: 1100px (main product layout) container--narrow max-width: 780px (FAQ section) section padding: 80px 0 (desktop), 60px 0 (mobile) border-radius: 8px (nav), 10px (inputs/buttons), 16px (cards), 20px (major cards) phone mockup border-radius: 24px SHADOWS: phone mockup: 0 12px 40px rgba(60,30,10,.18) CTA buttons: 0 4px 20px rgba(201,123,58,.30) CTA hover: 0 8px 28px rgba(201,123,58,.35) ANIMATIONS: fadeUp: opacity 0→1, translateY 22px→0, .5s ease-out scroll reveals: opacity 0→1, translateY 24px→0, .5s ease-out ============================================================ */
Scheduling, routing, client comms, and payments — all in one place. Built for solo groomers and micro teams. Stop piecing together tools that don't talk to each other.
Why Groomers Struggle
Spreadsheets, text threads, paper notebooks. When a client cancels at 8am and you need to fill that slot, you're scrambling — and sometimes you just don't.
Figuring out the most efficient route between 6 appointments across town — manually, in your head, while driving. You lose an hour a day just on logistics.
Texting from your personal phone, trying to remember who needs a reminder, who confirmed, who booked what service. It's chaos — and clients can feel it.
Chasing payments after appointments, cash that never gets deposited, Venmo requests that go unanswered. You did the work — you shouldn't have to chase the money.
What GroomPort Does
Book appointments, manage availability, and handle same-day changes in one place. Your calendar — finally in order.
Automatic route planning across your daily appointments. Less time driving, more time grooming. Your schedule reorders itself intelligently.
Pet profiles, service history, preferences, contact info — everything about every client in one spot. No more digging through texts.
Send invoices, accept payments, track who's paid. Get paid faster — without chasing. Works with the tools you already use.
Appointment confirmations and reminders go out automatically. Fewer no-shows, fewer back-and-forth texts the day before.
Built for solo operators first. When you're ready to grow, add a second groomer — the software scales with you, not the other way around.
Get Early Access
We're opening access in small batches. The earlier you join, the sooner you're in.
Common Questions
Join the waitlist and be first in line when we open access.
Get Early Access →