Web-based surveillance video player for Alta/Ava Security camera exports with multi-camera sync, timeline, digital zoom, motion analytics, and cryptographic integrity verification. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
13 KiB
Design System — Alta Style
This document defines the visual identity for all tools and interfaces built under the Alta brand. It covers colors, typography, component styling, and interaction patterns. It does NOT prescribe layouts, page structures, or application architecture — use whatever structure fits your application.
Apply this to web apps, Electron apps, dashboards, internal tools, Chrome extensions, or any UI that should feel like part of the Alta product family.
Colors are sourced from the Alta Video platform's global CSS variables (
--colorPrimary,--colorLink, etc.) and computed element styles.
1. Color Palette
1.1 Backgrounds
| Token | Value | When to use |
|---|---|---|
--bg-app |
#121826 |
Page/body background — deep navy |
--bg-panel |
#121826 |
Headers, nav bars, top-level panels |
--bg-surface |
#181F32 |
Cards, containers, secondary sections |
--bg-surface-hover |
rgba(0, 110, 215, 0.12) |
Hovered rows, list items, interactive elements |
--bg-surface-active |
rgba(0, 110, 215, 0.20) |
Selected/pressed/active states |
--bg-input |
rgba(0, 110, 215, 0.10) |
Text inputs, search bars, selects, dropdowns |
--bg-button |
rgba(0, 110, 215, 0.20) |
Default button background |
--bg-button-hover |
rgba(0, 110, 215, 0.32) |
Hovered button background |
Key principle: Alta layers semi-transparent tints of the brand blue (
rgba(0, 110, 215, *)) on the navy background. The secondary surface color#181F32provides a subtle lift for cards and sections without transparency.
1.2 Borders
| Token | Value | When to use |
|---|---|---|
--border-default |
#C2C7CC |
Standard borders on components in dark context |
--border-light |
#EBEEF0 |
Lighter borders, dividers within cards/panels |
--border-subtle |
rgba(244, 244, 246, 0.12) |
Very subtle separators on dark backgrounds |
Alta uses light-colored borders (
#C2C7CC,#EBEEF0) even on the dark theme. These are typically used at low opacity or on specific components. For most dark-on-dark dividers, use--border-subtle.
1.3 Text
| Token | Value | When to use |
|---|---|---|
--text-primary |
#F4F4F6 |
Headings, labels, body content |
--text-secondary |
#656972 |
Descriptions, metadata, timestamps |
--text-muted |
#8D9399 |
Placeholders, disabled text, hints |
--text-on-accent |
#FFFFFF |
Text on accent or status backgrounds |
Primary text is off-white (
#F4F4F6), not pure white. Reserve#FFFFFFfor text on accent-colored or status-colored backgrounds.
1.4 Accent & Brand
| Token | Value | When to use |
|---|---|---|
--accent-primary |
#006ED7 |
Brand blue — links, primary actions, active states (Alta --colorPrimary / --colorLink) |
--accent-primary-hover |
#0080F0 |
Hovered links and primary elements |
--accent-primary-muted |
rgba(0, 110, 215, 0.20) |
Tinted backgrounds using brand blue |
1.5 Status
| Token | Value | When to use |
|---|---|---|
--status-success |
#20C62F |
Success, connected, healthy, complete |
--status-error |
#DE1111 |
Error, failed, disconnected, destructive actions |
--status-warning |
#EAA301 |
Warning, caution, pending, needs attention |
--status-info |
#8D9399 |
Informational, neutral, secondary indicators |
--status-purple |
#8957E5 |
Special category badges, analytics |
--status-motion |
#A855F7 |
Activity, progress, event indicators |
1.6 Overlays
| Token | Value | When to use |
|---|---|---|
--overlay-dark |
rgba(18, 24, 38, 0.60) |
Dimming layer behind modals/dialogs |
--overlay-panel |
rgba(18, 24, 38, 0.85) |
Floating panels, dropdown backdrops |
2. Typography
Font stack: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif
| Role | Size | Weight | Notes |
|---|---|---|---|
| Page / section title | 16px | 600 | |
| Body / labels | 14px | 400 | |
| Emphasized labels | 14px | 600 | Selected items, active states |
| Compact labels | 13px | 500 | Dense UI, toolbar text |
| Captions | 12px | 400 | Metadata, timestamps, subtitles |
| Badges | 10px | 600 | Inline status/category badges |
| Micro | 11px | 600 | Tiny indicators, status labels |
Spacing: letter-spacing -0.01em on titles, 0 on body.
Line-height: 1.3 titles, 1.4 body.
3. Component Styles
3.1 Buttons
| Variant | Background | Text | Hover |
|---|---|---|---|
| Primary | --accent-primary |
#FFFFFF |
--accent-primary-hover |
| Secondary | --bg-button |
--text-primary |
--bg-button-hover |
| Ghost/Icon | transparent |
--text-secondary |
--bg-button, text brightens |
| Danger | --status-error |
#FFFFFF |
lighten ~10% |
- No visible borders on buttons — Alta buttons are borderless
- Border-radius:
6px - Padding:
8px 16px(text) /8px(icon-only) - Heights:
32pxsmall,36pxdefault,40pxlarge - Font: 13px, weight 500
3.2 Inputs
- Height:
36px - Background:
--bg-input - Border:
1px solid var(--border-subtle), radius6px - Placeholder:
--text-muted - Focus: border changes to
--accent-primary, addvar(--shadow-focus)ring
3.3 Badges
- Padding:
2px 6px, radius4px - Font: 10px, weight 600,
#FFFFFFtext - Use
--status-purplefor special/category badges - Use
--accent-primaryfor general tags
3.4 Status Indicators
- Dot size:
8pxcircle - Colors:
--status-success,--status-error,--status-warning - Always pair with a text label or icon — never color alone
- Pulsing dots:
animation: pulse 1.5s ease-in-out infinite(opacity 1 → 0.35)
3.5 Cards & Containers
- Background:
--bg-surface(#181F32) - Border:
1px solid var(--border-subtle) - Border-radius:
8px - Elevated variant adds:
var(--shadow-elevated)
3.6 Tables & Lists
- Header row:
--text-muted, 11px, weight 600, uppercase,letter-spacing: 0.05em - Body rows:
--text-primary, 13–14px - Row hover:
--bg-surface-hover - Selected row:
--bg-surface-active - Row dividers:
rgba(244, 244, 246, 0.08)
3.7 Tooltips & Popovers
- Background:
--bg-surface - Border:
1px solid var(--border-subtle) - Border-radius:
8px, padding8px 12px - Shadow:
var(--shadow-elevated) - Text:
--text-primary, 13px
3.8 Navigation Items
- Default: icon/text in
--text-secondary - Hover: bg
--bg-surface-hover, text brightens to--text-primary - Active: bg
--accent-primary, text/icon#FFFFFF, radius8px
3.9 Modals & Dialogs
- Backdrop:
--overlay-dark - Panel:
--bg-surfacebackground,1px solid var(--border-subtle), radius12px - Shadow:
var(--shadow-elevated) - Title: 16px weight 600, body: 14px weight 400
3.10 Tabs
- Inactive:
--text-secondary, transparent background - Active:
--text-primary, bottom border2px solid var(--accent-primary) - Hover: text brightens toward
--text-primary
3.11 Progress & Bar Charts
- Track:
--bg-input - Fill: use status colors based on meaning (green good, yellow caution, red bad)
- Height:
8px, radius4px
3.12 Toast / Notification
- Background:
--bg-surface - Border-left:
3px solidusing appropriate status color - Border-radius:
8px - Shadow:
var(--shadow-elevated) - Auto-dismiss with fade-out
4. Iconography
- Style: Outline, 1.5px stroke weight
- Library: Lucide Icons (preferred) or Heroicons Outline
- Sizes:
20pxnavigation,16pxinline,14pxcompact/dense UI - Colors:
--text-secondarydefault →--text-primaryon hover →#FFFFFFon accent backgrounds - Don't mix filled and outline styles in the same interface
5. Animation & Transitions
| What | Duration | Easing |
|---|---|---|
| Hover states | 150ms | ease-out |
| Panel open/close | 250ms | cubic-bezier(.4,0,.2,1) |
| Fade in/out | 150ms | ease |
| Pulse indicators | 1500ms | ease-in-out (infinite) |
| Content transitions | 200ms | ease-out |
All motion is functional. No decorative animation.
6. Theme Rules
- Dark-only. No light mode.
- Navy, not black. The base is
#121826. Never use#000000for backgrounds. - Two surface levels.
#121826for the page,#181F32for elevated cards/sections. - Vivid brand blue. The accent is
#006ED7— a strong, saturated blue. Not muted, not pastel. - Off-white text. Use
#F4F4F6, not#FFFFFF. Pure white is only for accent backgrounds. - Real status colors. Green
#20C62F, red#DE1111, orange#EAA301— these are vivid and intentional. - Pair color with meaning. Never use color alone for status — always include a label or icon.
- WCAG AA contrast. All text must meet ≥ 4.5:1 ratio against its background.
7. CSS Variables
:root {
/* Backgrounds */
--bg-app: #121826;
--bg-panel: #121826;
--bg-surface: #181F32;
--bg-surface-hover: rgba(0, 110, 215, 0.12);
--bg-surface-active: rgba(0, 110, 215, 0.20);
--bg-input: rgba(0, 110, 215, 0.10);
--bg-button: rgba(0, 110, 215, 0.20);
--bg-button-hover: rgba(0, 110, 215, 0.32);
/* Borders */
--border-default: #C2C7CC;
--border-light: #EBEEF0;
--border-subtle: rgba(244, 244, 246, 0.12);
/* Text */
--text-primary: #F4F4F6;
--text-secondary: #656972;
--text-muted: #8D9399;
--text-on-accent: #FFFFFF;
/* Accent */
--accent-primary: #006ED7;
--accent-primary-hover: #0080F0;
--accent-primary-muted: rgba(0, 110, 215, 0.20);
/* Status */
--status-success: #20C62F;
--status-error: #DE1111;
--status-warning: #EAA301;
--status-info: #8D9399;
--status-purple: #8957E5;
--status-motion: #A855F7;
/* Overlays */
--overlay-dark: rgba(18, 24, 38, 0.60);
--overlay-panel: rgba(18, 24, 38, 0.85);
/* Spacing */
--space-xs: 4px;
--space-sm: 8px;
--space-md: 12px;
--space-lg: 16px;
--space-xl: 24px;
--space-2xl: 32px;
/* Radii */
--radius-sm: 4px;
--radius-md: 6px;
--radius-lg: 8px;
--radius-xl: 12px;
/* Shadows */
--shadow-elevated: 0 8px 24px rgba(0, 0, 0, 0.4);
--shadow-focus: 0 0 0 3px rgba(0, 110, 215, 0.25);
/* Typography */
--font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
}
8. Applying This System
When starting any new UI:
- Set
body { background: var(--bg-app); color: var(--text-primary); font-family: var(--font-family); } - Use
--bg-surface(#181F32) for any card or container — not a custom gray - Use
--accent-primary(#006ED7) for links, active states, and primary actions - Use
--bg-button/--bg-button-hoverfor secondary buttons - Apply hover/active states using the brand blue opacity scale
- Pick status colors from the status tokens —
#20C62Fgreen,#DE1111red,#EAA301orange - Keep transitions ≤ 250ms and functional
- Use Lucide outline icons at 1.5px stroke weight
This system works for dashboards, forms, data tables, settings pages, tools, admin panels, extensions, or any other interface. The layout is yours — the colors, type, and component feel are Alta.