Files
pi-pm3/app/plugins/supra_theme/static/tokens.css
michael a9acdb85ce Build optimization: pre-built PM3 binaries, ARM64 CI, base image caching
Replace PM3 compile-from-source in pi-gen with pre-built tarball extraction
(saves 43-58 min). Merge stagePM3 into stageDangerousPi as 02-pm3-install
substage, renumber all subsequent substages. Switch CI PM3 build to native
ARM64 runner (ubuntu-24.04-arm64) eliminating QEMU overhead. Add weekly
base-image workflow for pre-baking stages 0-2. Support PM3_TARBALL,
BASE_IMAGE, and APT_PROXY env vars in build-image.sh.

Also includes prior Phase 5 work: theme system, design system integration,
component update system, OS updates, CI build pipeline, and test results.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 12:01:01 -08:00

233 lines
6.2 KiB
CSS

/* VivoKey Supra Theme — CSS Custom Properties + Component Overrides */
/* Distributed as a Dangerous-Pi theme plugin */
/* Source: @dangerousthings/tokens + @dangerousthings/web */
/* ============================================================================
Dark Mode (Default)
============================================================================ */
:root[data-brand="supra"] {
/* Backgrounds */
--color-bg: #000000;
--color-bg-rgb: 0, 0, 0;
--color-surface: #28292E;
--color-surface-rgb: 40, 41, 46;
--color-surface-hover: #303136;
--color-border: #42667E;
/* Text */
--color-text-primary: #ffffff;
--color-text-secondary: #e2e8f0;
--color-text-muted: #94a3b8;
/* Brand Palette */
--color-primary: #42667E;
--color-primary-rgb: 66, 102, 126;
--color-primary-dim: #385872;
--color-secondary: #8BAEC7;
--color-secondary-rgb: 139, 174, 199;
--color-accent: #8BAEC7;
--color-accent-rgb: 139, 174, 199;
--color-other: #F67448;
--color-other-rgb: 246, 116, 72;
/* Status */
--color-success: #8BB174;
--color-success-rgb: 139, 177, 116;
--color-warning: #F67448;
--color-warning-rgb: 246, 116, 72;
--color-error: #ED4337;
--color-error-rgb: 237, 67, 55;
--color-info: #42667E;
--color-info-rgb: 66, 102, 126;
/* Typography */
--font-heading: var(--font-sans);
--font-body: var(--font-sans);
/* Shape */
--bevel-sm: 0px;
--bevel-md: 0px;
--bevel-lg: 0px;
--radius-sm: 0.5rem;
--radius: 0.625rem;
--radius-lg: 0.75rem;
color-scheme: dark;
}
/* ============================================================================
Light Mode
============================================================================ */
:root[data-brand="supra"][data-theme="light"] {
/* Backgrounds */
--color-bg: #ffffff;
--color-bg-rgb: 255, 255, 255;
--color-surface: #f0f2f4;
--color-surface-rgb: 240, 242, 244;
--color-surface-hover: #e5e8eb;
--color-border: #000000;
/* Text */
--color-text-primary: #000000;
--color-text-secondary: #374151;
--color-text-muted: #6b7280;
/* Brand Palette */
--color-primary: #42667E;
--color-primary-rgb: 66, 102, 126;
--color-primary-dim: #385872;
--color-secondary: #F67448;
--color-secondary-rgb: 246, 116, 72;
--color-accent: #b45309;
--color-accent-rgb: 180, 83, 9;
--color-other: #F67448;
--color-other-rgb: 246, 116, 72;
/* Status */
--color-success: #4d7c0f;
--color-success-rgb: 77, 124, 15;
--color-warning: #F67448;
--color-warning-rgb: 246, 116, 72;
--color-error: #ED4337;
--color-error-rgb: 237, 67, 55;
--color-info: #42667E;
--color-info-rgb: 66, 102, 126;
color-scheme: light;
}
/* ============================================================================
Auto Mode (follows system preference)
============================================================================ */
@media (prefers-color-scheme: light) {
:root[data-brand="supra"][data-theme="auto"] {
/* Backgrounds */
--color-bg: #ffffff;
--color-bg-rgb: 255, 255, 255;
--color-surface: #f0f2f4;
--color-surface-rgb: 240, 242, 244;
--color-surface-hover: #e5e8eb;
--color-border: #000000;
/* Text */
--color-text-primary: #000000;
--color-text-secondary: #374151;
--color-text-muted: #6b7280;
/* Brand Palette */
--color-primary: #42667E;
--color-primary-rgb: 66, 102, 126;
--color-primary-dim: #385872;
--color-secondary: #F67448;
--color-secondary-rgb: 246, 116, 72;
--color-accent: #b45309;
--color-accent-rgb: 180, 83, 9;
--color-other: #F67448;
--color-other-rgb: 246, 116, 72;
/* Status */
--color-success: #4d7c0f;
--color-success-rgb: 77, 124, 15;
--color-warning: #F67448;
--color-warning-rgb: 246, 116, 72;
--color-error: #ED4337;
--color-error-rgb: 237, 67, 55;
--color-info: #42667E;
--color-info-rgb: 66, 102, 126;
color-scheme: light;
}
}
/* ============================================================================
Supra Component Overrides — MD3 Elevation & Rounded Corners
============================================================================ */
/* Card Elevation */
[data-brand="supra"] .card {
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.18);
border-radius: var(--radius-lg);
}
[data-brand="supra"] .card:hover {
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.22);
}
/* Button — Dual-layer inset shadow (hardware button feel) */
[data-brand="supra"] .btn-primary {
box-shadow:
inset -2px -2px 4px rgba(0, 0, 0, 0.18),
inset 2px 2px 4px rgba(255, 255, 255, 0.25);
border-radius: var(--radius);
}
[data-brand="supra"] .btn-primary:hover {
box-shadow:
inset -2px -2px 6px rgba(0, 0, 0, 0.22),
inset 2px 2px 6px rgba(255, 255, 255, 0.3);
transform: translateY(-1px);
}
[data-brand="supra"] .btn-secondary {
border-radius: var(--radius);
}
[data-brand="supra"] .btn-danger {
border-radius: var(--radius);
}
/* Badge — Rounded pill (MD3 chip style) */
[data-brand="supra"] .badge {
border-radius: 8px;
}
/* Badge text — readable on translucent backgrounds */
[data-brand="supra"] .badge-success,
[data-brand="supra"] .badge-error,
[data-brand="supra"] .badge-warning,
[data-brand="supra"] .badge-info {
color: var(--color-text-primary);
}
/* Input — Rounded with standard focus ring */
[data-brand="supra"] .input,
[data-brand="supra"] input,
[data-brand="supra"] textarea,
[data-brand="supra"] select {
border-radius: var(--radius);
}
[data-brand="supra"] .input:focus,
[data-brand="supra"] input:focus,
[data-brand="supra"] textarea:focus,
[data-brand="supra"] select:focus {
box-shadow: 0 0 0 3px rgba(var(--color-primary-rgb), 0.2);
}
/* Terminal — Rounded with subtle elevation */
[data-brand="supra"] .terminal {
border-radius: var(--radius);
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.18);
}
/* Elevation Utility Classes */
.supra-elevation-1 {
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12);
}
.supra-elevation-2 {
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.18);
}
.supra-elevation-3 {
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.22);
}
.supra-elevation-4 {
box-shadow: 0 6px 12px rgba(0, 0, 0, 0.25);
}
.supra-elevation-5 {
box-shadow: 0 8px 16px rgba(0, 0, 0, 0.3);
}