Werner Ops — Design System

app-components.css  ·  v1.1  ·  2026-05-05  ·  Admin-only reference page
Design Tokens — Color
--brand-primary
#1a2744
--brand-accent
#c8a951
--brand-light
#f4f5f7
--brand-white
#ffffff
--brand-border
#dde1e6
--brand-muted
#6b7280
--brand-green
#22c55e
--brand-red
#ef4444
--brand-blue
#3b82f6
--brand-yellow
#eab308
--brand-orange
#f97316
Buttons
.btn-primary
Aliases: .btn-save · .btn-add · .btn-user-add · .btn-modal-submit · .btn-send-memo
.btn-secondary
Aliases: .btn-modal-cancel
View
.btn-ghost
Aliases: .btn-user-action · .btn-user-edit  ·  works on <a> tags too
.btn-danger  ·  .btn-user-action.danger
Aliases: .btn-user-delete
.btn-gold — branded CTA
.btn-sm  ·  .btn-lg — size modifiers
[class*="btn-"]:disabled — unified disabled state
Badges
Active Overdue Pending Info Admin N/A
.wc-badge + .wc-badge-green / -red / -yellow / -blue / -navy / -muted
Pills
.wc-pill-group > .wc-pill · .wc-pill.active
Form Fields
.wc-field > .wc-label + .wc-input / .wc-textarea / .wc-select
Table
Driver Bus Trip Date Status Actions
John Smith Bus 702 Mar 26, 2026 Active
Maria Garcia Bus 888 Mar 27, 2026 Pending
Tom Bradley Bus 890 Mar 28, 2026 N/A
.wc-table — hover on rows, shared th/td/border styles
Card
Werner Coach

Est. 1929 — Phoenixville, PA — (610) 933-7100

.wc-card — white, bordered, 10px radius, 20/24px padding
Tabs
Showing: Overview tab content
.wc-tabs > .wc-tab · .wc-tab.active
Empty State
No results found. Try adjusting your filters.
.wc-empty (also .empty-section) — centered muted text, 40px padding
Modal
.modal-overlay.open → display:flex  ·  .modal / .modal-field / .modal-actions
Toast
.toast-container → .toast · .toast.success / .error / .warning
Number Stepper
Wide (.num-stepper.wide)
Narrow (.num-stepper.narrow)
Default (.num-stepper)
.num-stepper → .stepper-btn + input[type="number"] + .stepper-btn · Variants: .wide (80px input) · .narrow (54px input)

Digit-count sizing. Pair .digits-N with .wide or .narrow to right-size the input for the maximum realistic value. .wide/.narrow controls button size and overall height; .digits-N controls input width independently. Pick the smallest one that fits.

.digits-1 (40px) — e.g. count 0–9
.digits-2 (52px) — e.g. age, days
.digits-3 (64px) — gallons, qts (incl. .5)
.digits-4 (80px) — e.g. PM intervals
.digits-5 (96px) — e.g. low odometer
.digits-6 (112px) — odometer
.digits-7 (128px) — large totals
Tablet-sized buttons + 6-digit input: .num-stepper.wide.digits-6 · Compact qty: .num-stepper.narrow.digits-3
.wide.digits-6 (washbay/cleaning odometer)
.narrow.digits-3 (fluid qts)
Date / Time Pickers

Native styling applies automatically to every <input type="date|time|datetime-local|month|week"> site-wide — no opt-in class needed. Two CSS variables on :root control color so light and dark surfaces adapt without per-page CSS, and the calendar/clock glyph is a masked SVG so each tenant's --brand-* tokens automatically theme the icon.

Light theme (default — glyph tracks var(--brand-primary))
Dark theme (class="theme-dark" — glyph tracks var(--brand-accent), native popup is dark)
CSS Variables
Variable Default Purpose
--wc-picker-glyph var(--brand-primary) Color of the calendar / clock indicator icon
--wc-picker-scheme light color-scheme applied to the input — controls native popup theme

On .theme-dark wrappers, the glyph automatically swaps to var(--brand-accent) and the native popup switches to dark, so each tenant's brand colors theme the picker without any per-page overrides.

Opting a dark surface in
<!-- Whole page -->
<body class="theme-dark"> ... </body>

<!-- Or just one section -->
<div class="theme-dark">
  <input type="date" class="wc-input">
  <input type="time" class="wc-input">
</div>