carlos / movement Public

Clone
git clone https://amadan.net/carlos/movement

Plain git — no account needed to clone.

Download

Download this file

1/* bill — the flyposted bill.
2 Structure lives in tokens.css; this file is colour, type and shape.
3
4 The look: a sheet pasted on a wall. Cheap coloured stock, two inks, and
5 a heavy impression. Where the two inks cross they overprint to a third,
6 which is where the green comes from — it is a consequence of the
7 material, not a colour anyone chose, and it is why this sits next to
8 carlosframework.com's teal as a relative rather than a copy.
9
10 Drenched, not accented: the stock IS the surface on the bill itself.
11 The stance pages drop to bone, because acid yellow is a shout and the
12 three responses are the part you actually read.
13
14 No radius anywhere. A printed sheet has corners. Depth is ink and
15 perforation, never elevation — the one shadow in the system belongs to
16 a tab lifting off the wall, which is a thing paper does.
17 ─────────────────────────────────────────────────────────────────────── */
18
19@font-face {
20 font-family: "Big Shoulders";
21 src: url("fonts/big-shoulders-800.woff2") format("woff2");
22 font-weight: 800;
23 font-style: normal;
24 font-display: swap;
25}
26@font-face {
27 font-family: "Public Sans";
28 src: url("fonts/public-sans-400.woff2") format("woff2");
29 font-weight: 400;
30 font-style: normal;
31 font-display: swap;
32}
33@font-face {
34 font-family: "Public Sans";
35 src: url("fonts/public-sans-700.woff2") format("woff2");
36 font-weight: 700;
37 font-style: normal;
38 font-display: swap;
39}
40
41:root {
42 color-scheme: light;
43
44 /* ── The stock ──────────────────────────────────────────────────────
45 Yellow is the bill. Bone is the reading surface. Both are paper, so
46 both are warm; neither is white, because white is a screen colour and
47 this is a printed thing. */
48 --bill-stock: #f0e34a;
49 --bill-bone: #f7f4e6;
50 --bill-ink: #17140f;
51 --bill-blue: #1b2a8f;
52 --bill-cyan: #14a0c8; /* the second ink */
53
54 /* The sharpie. A third pen rather than a third press ink: a marker drawn
55 ON the stock does not overprint with what was printed under it, so the
56 pills render solid while everything else multiplies. */
57 --pill-blue: #1f3fd0;
58 --pill-blue-line: #12246f;
59 --pill-red: #cf2233;
60 --pill-red-line: #7d1119;
61 --bill-over: #2f6b46; /* what cyan makes of the yellow stock */
62 --bill-dim: #6b5f14; /* the ink thinned, for secondary text ON yellow */
63 --bill-dim-bone: #6a6455;
64
65 /* ── rastrillo's contract ───────────────────────────────────────────
66 tokens.css reads these. Defaults here are the bone reading surface;
67 the bill itself overrides them on its own page. */
68 --rst-bg: var(--bill-bone);
69 --rst-surface: var(--bill-bone);
70 --rst-surface-2: #efeada;
71 --rst-overlay: rgba(23, 20, 15, 0.55);
72
73 --rst-text: var(--bill-ink);
74 --rst-text-muted: var(--bill-dim-bone);
75 --rst-text-faint: #8b8574;
76
77 --rst-accent: var(--bill-blue);
78 --rst-accent-strong: #121d68;
79 --rst-accent-soft: rgba(27, 42, 143, 0.1);
80 --rst-on-accent: var(--bill-stock);
81
82 --rst-line: rgba(23, 20, 15, 0.22);
83 --rst-line-strong: rgba(23, 20, 15, 0.55);
84 --rst-header-rule: var(--bill-ink);
85
86 /* A printed sheet has corners. */
87 --rst-radius: 0;
88 --rst-radius-sm: 0;
89 --rst-radius-pill: 0;
90
91 /* The only depth in the system: paper lifting off a wall. Offset and
92 blur, because that is what a real shadow has. */
93 --rst-shadow-lift: 0 6px 18px rgba(23, 20, 15, 0.28);
94 --rst-shadow-pop: 0 10px 30px rgba(23, 20, 15, 0.32);
95 --rst-shadow-knob: 0 2px 6px rgba(23, 20, 15, 0.3);
96
97 /* Status stays legible against paper without becoming a second accent. */
98 --rst-tone-positive-bg: rgba(47, 107, 70, 0.14);
99 --rst-tone-positive-fg: #1f5334;
100 --rst-tone-warning-bg: rgba(160, 96, 12, 0.16);
101 --rst-tone-warning-fg: #7a4708;
102 --rst-tone-negative-bg: rgba(158, 42, 26, 0.14);
103 --rst-tone-negative-fg: #8e2417;
104 --rst-tone-neutral-bg: rgba(23, 20, 15, 0.08);
105 --rst-tone-neutral-fg: #4a4437;
106
107
108 /* ── The type ramp ──────────────────────────────────────────────────
109 Four display steps and five text steps. Nothing sets a literal size:
110 a bill has a handful of sorts in the case, not a continuum. */
111 --t-shout: clamp(4rem, 16vw, 10.5rem);
112 --t-display-1: clamp(2rem, 5vw, 3.25rem);
113 --t-display-2: clamp(1.5rem, 3.2vw, 2.75rem);
114 --t-display-3: clamp(1.35rem, 3vw, 1.9rem);
115
116 --t-lede: clamp(1.0625rem, 1.3vw, 1.1875rem);
117 --t-body: clamp(1rem, 1.15vw, 1.125rem);
118 --t-base: 0.9375rem;
119 --t-sm: 0.875rem;
120 --t-xs: 0.8125rem;
121 --t-xxs: 0.75rem;
122
123 --rst-font: "Public Sans", ui-sans-serif, system-ui, -apple-system, sans-serif;
124 --bill-display: "Big Shoulders", "Haettenschweiler", "Arial Narrow", sans-serif;
125 --bill-mono: ui-monospace, SFMono-Regular, "Cascadia Mono", Menlo, monospace;
126}
127
128/* ── The browser's own surfaces ─────────────────────────────────────────
129 Selection, caret, focus and scrollbar ship with defaults that belong to
130 no design system. On a two-ink sheet they are the cheapest place to be
131 consistent: selection is the inks swapped, focus is a registration mark. */
132::selection {
133 background: var(--bill-blue);
134 color: var(--bill-stock);
135}
136:root {
137 caret-color: var(--bill-blue);
138 scrollbar-color: var(--bill-ink) transparent;
139 scrollbar-width: thin;
140}
141:where(a, button, input, textarea, summary, [tabindex]):focus-visible {
142 outline: 3px solid var(--bill-blue);
143 outline-offset: 2px;
144 border-radius: 0;
145}
146