Adityacprtm
Aditya Pratama
Site Reliability Engineer
operator/01
system status
status available
tzGMT+7
response<24h

Design System.

A live reference of the operator console tokens, components, and motion that render adityacprtm.dev. Every swatch reads the current data-theme; toggle the theme in the header to see it react.

01 / Palette

Color System

Tokens flip automatically between :root and [data-theme="dark"]. Prefer semantic tokens over raw hex.

Surface & Background

  • --c-bg
  • --c-surface
  • --c-surface-alt
  • --c-border
  • --c-border-ui

Text

  • --c-text
  • --c-heading
  • --c-muted

Accent

  • --c-accent
  • --c-accent-light
  • --c-accent-2
  • --c-accent-dark

Semantic

  • --c-success
  • --c-warning
  • --c-error
  • --c-dot-green

State (Rack / Nav)

  • --c-rack
  • --c-rack-line
  • --c-nav-hover
  • --c-nav-active-bg
  • --c-nav-active-mobile

Shadow

  • --c-shadow-sm
  • --c-shadow-md
  • --c-shadow-lg
  • --c-glow

Skeleton

  • --color-skeleton-base
  • --color-skeleton-shine
02 / Typography

Typography

Body pairs --font-body (Poppins) with --font-mono (JetBrains Mono / SF Mono) for operator console cues.

Body — var(--font-body)

The quick brown fox jumps over the lazy dog. 0123456789

Mono — var(--font-mono)

const status = "operational"; // 0xDEADBEEF

TokenrempxRoleSample
--font-xs0.6875rem11pxTiny labelsAa 01
--font-sm0.75rem12pxCaptions, badgesAa 01
--font-btn0.8125rem13pxCTA, back-linkAa 01
--font-body-sm0.875rem14pxBulletsAa 01
--font-body-xs0.9375rem15pxBlog mobileAa 01
--font-base1rem16pxBody (WCAG)Aa 01
--font-md1.0625rem17pxBody largeAa 01
--font-lg1.125rem18pxHeading smallAa 01
--font-xl1.25rem20pxh4 / largeAa 01
--font-2xl1.375rem22pxh3Aa 01
--font-2lg1.35rem22pxHeader identityAa 01
--font-3xl1.5rem24pxh2Aa 01
--font-4xl1.625rem26pxh1 altAa 01
--font-stat1.875rem30pxStat numbersAa 01
--font-5xl2rem32pxh1Aa 01

H1 · title--h1

H2 · title--h2

H3 · title--h3

Body copy at --font-base. The system favours short paragraphs, restrained line-lengths, and generous vertical rhythm.

Overhead label · .overhead
03 / Spacing

Spacing Scale

Rem-based rhythm. Bar width visualises the increment.

rempxVisual
0.125rem2px
0.25rem4px
0.375rem6px
0.5rem8px
0.75rem12px
1rem16px
1.25rem20px
1.5rem24px
1.875rem30px
2rem32px
2.5rem40px
04 / Buttons

Buttons

Live samples. Hover / focus to see states.

.header-action__ctaDownload CV
.filter-btn
.filter-btn.active
.explore-chip
.pillTerraform
.pill--activeProduction
.pill--toggle
05 / Cards

Cards

Container primitives. All ride the same shadow + radius rules from .box.

.stat-card
42Projects shipped
.scope-card

Infrastructure

Terraform · Kubernetes · Cloudflare · AWS · GCP

.portfolio-card

Portfolio Frontend

Vue 3 · vite-ssg · Cloudflare Pages

.exp-card
2024 — Present

DevOps Engineer

Company · Jakarta, ID

.edu-card
2018 — 2022

B.Sc. Computer Science

University Name

.client-card

Client Co.

Consulting engagement

06 / Pills & Badges

Pills & Badges

.pillDefault
.pill--monov1.4.0
.pill-smsm
.pill--activeActive
.pill--toggle
.availability-badgeAvailable for work
status · warningDegraded
status · errorDown
07 / Segmented

Segmented Controls

.seg-control-nav
.seg-control-locale
08 / Inputs

Form Inputs

09 / Navigation

Navigation Rack

Mono, uppercase, LED-cued. The rack is the site's spatial anchor.

10 / Elevation

Elevation & Shadows

--c-shadow-smDefault surface lift
--c-shadow-mdCard hover state
--c-shadow-lgModal / overlay
--c-glowAccent glow
11 / Motion

Motion & Animation

All keyframes respect prefers-reduced-motion. Use sparingly — high-signal moments only.

NameDurationEasingUsageDemo
blink1sstep-end infiniteCursor / caret
ledPulse2sease-in-out infiniteStatus LED
boxEntrance0.6scubic-bezier(.2,.7,.2,1)Card reveal
signalFadeIn0.5sease-outSignal wash
status-pulse1.8sease-in-out infiniteAvailability dot
blink — cursor caret
ledPulse — status indicator
status-pulse — availability dot
12 / Accessibility

Accessibility

WCAG AA compliance at minimum. Full validation still requires manual testing with assistive technologies.

Focus Visible

Every interactive element gets a 2px solid var(--c-accent) outline on keyboard focus. The :focus outline is suppressed; only :focus-visible fires.

Reduced Motion

Wrap all keyframe usage in @media (prefers-reduced-motion: no-preference). Transitions above 200ms should be guarded.

@media (prefers-reduced-motion: no-preference) {
  .reveal { animation: boxEntrance 0.6s; }
}

Colour Contrast

--c-text on --c-bg: ≥ 7:1 both themes.
--c-border-ui meets AA for UI components (3:1).
Accent on white / dark surface also AA-compliant.

Skip Link

A visually-hidden #main-content skip link is rendered in App.vue. Tab once from the address bar to reveal it.

© 2026 Aditya Chamim Pratama All systems operational