Files
calcserubi/DESIGN.md
T
2026-10-20 13:16:38 +09:00

3.2 KiB
Raw Blame History

Design — SERUBI Cashback Calculator

World: a bank-desk printing calculator. A navy machine body holds the inputs and one recessed display that carries the answer. A paper tape prints every figure and every step. The admin uses the same machine body as its side panel, with plain white work surfaces for editing.

Tokens (assets/css/base.css)

Role Light Dark
Desk (page ground) --desk #e7ebf2 #070c17
Machine body --machine / hi / lo #0b2e66 / #154290 / #072153 #0c2a5c / #12387a / #071a40
Key --key / edge #143c7c / #061a40 #11346d / #061a40
Gold (Bank Papua accent) --gold / ink #f2c14e / #241800 same
Display --display / ink / dim #04132f / #ffe6a0 / #c9b98c #020a1c / same
Paper --paper / ink / muted / rule #fffef8 / #1a2130 / #545d70 / #c3c7cf #ebe7db / #191f2b / #4c5464 / #b4b1a6
Good / bad #0a7140 / #b42318 same on paper

Radius: 8 / 12 / 22px (machine). Motion: 150–250ms, cubic-bezier(.16,1,.3,1); one signature motion (the tape "feeds" 10px on recalculation); all motion off under prefers-reduced-motion.

Type

  • Archivo (variable, self-hosted, font-stretch 62–125%): UI, labels, and display numerals (800 weight at ~78% width, tabular).
  • JetBrains Mono (self-hosted): the paper tape only, because it is printed data.
  • Labels on the machine: 0.8rem uppercase, 0.04–0.06em tracking.

Components

  • Key: navy fill with an inset 3px bottom edge for depth. Pressed: moves down 2px and the edge shrinks. The gold key is the primary action (print).
  • Segmented keys (tenor, customer type): radio inputs. The checked key turns gold.
  • Display: a recessed panel with the headline value right-aligned, a dashed rule, and three sub-values. When there is no cashback it dims and shows a note explaining why.
  • Tape: dotted leader lines (label ····· value), strong rows ruled above and below, collapsible sections, and a torn zig-zag bottom edge done with a CSS mask.
  • Comparison row: product name, total, a two-part bar (navy = bunga neto, gold = cashback neto), four metadata cells, and the difference vs deposito. The highest total gets a "Tertinggi" tag; deposito has a dashed border.
  • Admin: sticky navy side panel (on phones it becomes a sticky top strip with scrolling tabs), white panels, editable tier tables (shown as cards on phones), a save bar for unsaved changes, and a live "Pratinjau dampak" panel.

Layout

  • Calculator: one column below 900px. From 900px, the machine (360–460px, sticky) sits beside the tape. On phones, a compact display bar appears at the bottom once the main display scrolls out of view.
  • Admin: side panel + main from 960px. The preview gets a third column from 1320px.
  • Verified at 320, 390, 820, 1100, 1280, and 1440px with no horizontal page scroll.

Rules

  • Brand = the official Bank Papua logo (bank_logo() in includes/helpers.php, files in assets/img/, sourced, never redrawn) + the gold "SERUBI" tag. Color logo on light surfaces and paper/print; white logo on navy and in dark mode ('auto' switches by theme).
  • Numbers use tabular figures; Rupiah is formatted Rp1.234.567, percentages 2,70%.
  • Print shows only the tape.