Skip to content

Commit e172ea9

Browse files
committed
feat: adopt original Interscript brand mark + logo teal
The original Interscript logo is a teal (#008075) parallelogram with white "iS" letters. The whole design system now derives from it. Brand mark: - Copied the canonical symbol.svg from interscript/website/src/assets into public/symbol.svg (the actual logo, not a placeholder) - Replaced favicon.svg (was a generic blue "i" placeholder) - Header and footer use the real logo via <img src="/symbol.svg"> in place of the previous ⌘ character glyph - Brand mark sits slightly tilted (skewY -2deg) to evoke the parallelogram's bias Color system rebuilt around the logo's signature teal: - --color-brand: #008075 (canonical brand teal, from the logo) - --color-brand-deep: #005f57 (hover/pressed) - --color-brand-pale: #cfe5e1 (tints) - Replaces the previous --color-accent everywhere Palette retuned to harmonize with brand teal: - Paper: #f6f3ec (warmer, slightly cooler than before) - Ink: #1a1d1f (less blue-black, more neutral) Tests: - Updated palette expectations to brand teal - Added 5 new tests verifying symbol.svg ships in dist/, the brand teal is in the SVG, and every page renders <img src="/symbol.svg"> - 119 tests total, all passing
1 parent 31b64df commit e172ea9

8 files changed

Lines changed: 90 additions & 54 deletions

File tree

public/favicon.svg

Lines changed: 1 addition & 4 deletions
Loading

public/symbol.svg

Lines changed: 1 addition & 0 deletions
Loading

src/components/ScriptMosaic.vue

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -230,8 +230,8 @@ onUnmounted(() => {
230230
transition: background 0.3s ease;
231231
}
232232
.status-dot.live {
233-
background: var(--color-accent);
234-
box-shadow: 0 0 0 4px color-mix(in srgb, var(--color-accent) 25%, transparent);
233+
background: var(--color-brand);
234+
box-shadow: 0 0 0 4px color-mix(in srgb, var(--color-brand) 25%, transparent);
235235
animation: pulse 2.4s ease-in-out infinite;
236236
}
237237
@keyframes pulse {
@@ -277,7 +277,7 @@ onUnmounted(() => {
277277
font-size: var(--text-micro);
278278
letter-spacing: 0.18em;
279279
text-transform: uppercase;
280-
color: var(--color-accent);
280+
color: var(--color-brand);
281281
font-weight: 500;
282282
}
283283
.cell-counter {

src/layouts/Base.astro

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ const currentPath = Astro.url.pathname
4747
<header class="site-header">
4848
<div class="container header-inner">
4949
<a href="/" class="brand" aria-label="Interscript home">
50-
<span class="brand-mark" aria-hidden="true">⌘</span>
50+
<img src="/symbol.svg" alt="" class="brand-mark" width="22" height="22" />
5151
<span class="brand-name">Interscript</span>
5252
</a>
5353
<nav class="site-nav" aria-label="Primary">
@@ -79,7 +79,7 @@ const currentPath = Astro.url.pathname
7979
<div class="container footer-inner">
8080
<div class="footer-brand">
8181
<div class="brand-line">
82-
<span class="brand-mark" aria-hidden="true">⌘</span>
82+
<img src="/symbol.svg" alt="" class="brand-mark footer-mark" width="24" height="24" />
8383
<span class="brand-name">Interscript</span>
8484
</div>
8585
<p class="footer-tag">
@@ -165,11 +165,14 @@ const currentPath = Astro.url.pathname
165165
color: var(--color-ink);
166166
}
167167
.brand-mark {
168-
font-family: var(--font-display);
169-
font-size: 1.5rem;
170-
line-height: 1;
171-
color: var(--color-highlight);
172-
font-variation-settings: "SOFT" 100, "WONK" 1;
168+
display: inline-block;
169+
width: 22px;
170+
height: 22px;
171+
vertical-align: middle;
172+
flex-shrink: 0;
173+
/* Slight tilt to evoke the parallelogram's bias */
174+
transform: skewY(-2deg);
175+
}
173176
}
174177
.brand-name {
175178
font-family: var(--font-display);
@@ -238,9 +241,11 @@ const currentPath = Astro.url.pathname
238241
@media (max-width: 768px) {
239242
.footer-inner { grid-template-columns: 1fr; gap: 2.5rem; }
240243
}
241-
.footer-brand .brand-line { display: flex; align-items: baseline; gap: 0.5rem; }
244+
.footer-brand .brand-line { display: flex; align-items: center; gap: 0.5rem; }
242245
.footer-brand .brand-mark {
243-
color: var(--color-highlight);
246+
width: 24px;
247+
height: 24px;
248+
/* The footer bg is dark, so the teal stays visible as-is */
244249
}
245250
.footer-brand .brand-name { color: var(--color-vellum); }
246251
.footer-tag {
@@ -277,7 +282,7 @@ const currentPath = Astro.url.pathname
277282
transition: color 0.15s ease;
278283
}
279284
.footer-col a:hover {
280-
color: var(--color-accent);
285+
color: var(--color-brand);
281286
text-decoration: underline;
282287
}
283288
.footer-base {
@@ -305,7 +310,7 @@ const currentPath = Astro.url.pathname
305310
border-bottom: 1px solid color-mix(in srgb, var(--color-vellum) 12%, transparent);
306311
}
307312
.footer-partner-label { font-weight: 500; }
308-
.footer-partner strong { color: var(--color-accent); font-weight: 500; }
313+
.footer-partner strong { color: var(--color-brand); font-weight: 500; }
309314
.footer-partner-divider {
310315
color: color-mix(in srgb, var(--color-vellum) 35%, transparent);
311316
}

src/pages/index.astro

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,7 @@ curl interscript.org/maps/&lt;system-code&gt;.json</code></pre>
294294
}
295295
.hero-headline em {
296296
font-style: italic;
297-
color: var(--color-accent);
297+
color: var(--color-brand);
298298
font-variation-settings: "SOFT" 100, "WONK" 1;
299299
}
300300

@@ -416,7 +416,7 @@ curl interscript.org/maps/&lt;system-code&gt;.json</code></pre>
416416
font-family: var(--font-mono);
417417
font-size: var(--text-micro);
418418
letter-spacing: 0.15em;
419-
color: var(--color-accent);
419+
color: var(--color-brand);
420420
font-weight: 500;
421421
}
422422
.step-head h3 {
@@ -465,7 +465,7 @@ curl interscript.org/maps/&lt;system-code&gt;.json</code></pre>
465465
font-size: var(--text-micro);
466466
letter-spacing: 0.15em;
467467
text-transform: uppercase;
468-
color: var(--color-accent-deep);
468+
color: var(--color-brand-deep);
469469
font-weight: 500;
470470
}
471471
.system-name {

src/styles/global.css

Lines changed: 31 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,36 @@
11
@import "tailwindcss";
22

33
/* ──────────────────────────────────────────────────────────────────
4-
Interscript — "scholarly ink + script mosaic"
4+
Interscript — design system built on the original brand mark.
55
6-
Direction: warm parchment + deep printer's-ink blue-black, oxidized
7-
copperplate teal accent, vermillion highlight. Avoids the three
8-
current AI defaults (cream+terracotta, near-black+acid-green,
9-
broadsheet hairline columns). Type: Fraunces variable serif
10-
(personality display) + Inter Tight (body) + JetBrains Mono (data).
6+
The Interscript logo is a teal parallelogram (#008075) with white
7+
"iS" letters, set on the bias. The whole system is derived from it:
8+
brand teal as the primary accent, the parallelogram as a structural
9+
motif, off-white as paper. This is the canonical Ribose/Interscript
10+
brand identity — every surface inherits from it.
11+
12+
Type: Fraunces variable serif (characterful display) + Inter Tight
13+
(body) + JetBrains Mono (data).
1114
────────────────────────────────────────────────────────────────── */
1215

1316
@theme {
14-
/* Palette — deliberately not the AI defaults */
15-
--color-paper: #f4ede0;
16-
--color-paper-deep: #ebe2cf;
17-
--color-vellum: #fbf6ec;
18-
--color-ink: #0e1620;
19-
--color-ink-soft: #1c2532;
20-
--color-accent: #4a7a72;
21-
--color-accent-deep: #355a53;
17+
/* Palette — anchored on the original brand teal #008075 */
18+
--color-paper: #f6f3ec;
19+
--color-paper-deep: #ece6d6;
20+
--color-vellum: #fcfaf4;
21+
--color-ink: #1a1d1f;
22+
--color-ink-soft: #2a2f33;
23+
/* Brand teal — the logo's signature color. Lives in every accent. */
24+
--color-brand: #008075;
25+
--color-brand-deep: #005f57;
26+
--color-brand-pale: #cfe5e1;
27+
/* Highlight/CTA — warm complement to brand teal */
2228
--color-highlight: #b8462e;
2329
--color-highlight-deep: #8a3322;
30+
/* Stone grays for secondary text */
2431
--color-stone: #5c5852;
2532
--color-stone-light: #8c857b;
26-
--color-rule: #d4c9b0;
33+
--color-rule: #d8d0bc;
2734
--color-rule-strong: #b8ab8c;
2835

2936
/* Type */
@@ -116,11 +123,11 @@ kbd {
116123
}
117124

118125
code {
119-
background: color-mix(in srgb, var(--color-accent) 10%, transparent);
126+
background: color-mix(in srgb, var(--color-brand) 10%, transparent);
120127
padding: 0.1em 0.4em;
121128
border-radius: 2px;
122129
font-size: 0.9em;
123-
color: var(--color-accent-deep);
130+
color: var(--color-brand-deep);
124131
}
125132

126133
pre {
@@ -142,7 +149,7 @@ pre code {
142149
/* ── Accessibility ──────────────────────────────────────────────── */
143150

144151
:focus-visible {
145-
outline: 2px solid var(--color-accent);
152+
outline: 2px solid var(--color-brand);
146153
outline-offset: 3px;
147154
border-radius: 1px;
148155
}
@@ -196,7 +203,7 @@ pre code {
196203
}
197204
.rule-accent {
198205
border: 0;
199-
border-top: 2px solid var(--color-accent);
206+
border-top: 2px solid var(--color-brand);
200207
margin: 0;
201208
}
202209

@@ -217,11 +224,11 @@ pre code {
217224
display: inline-block;
218225
width: 1.75rem;
219226
height: 1.5px;
220-
background: var(--color-accent);
227+
background: var(--color-brand);
221228
}
222229

223230
.eyebrow-accent {
224-
color: var(--color-accent-deep);
231+
color: var(--color-brand-deep);
225232
}
226233

227234
/* ── Buttons ────────────────────────────────────────────────────── */
@@ -249,8 +256,8 @@ pre code {
249256
border-color: var(--color-ink);
250257
}
251258
.btn-primary:hover {
252-
background: var(--color-accent-deep);
253-
border-color: var(--color-accent-deep);
259+
background: var(--color-brand-deep);
260+
border-color: var(--color-brand-deep);
254261
color: var(--color-vellum);
255262
}
256263
.btn-accent {
@@ -299,7 +306,7 @@ pre code {
299306
color: var(--color-vellum);
300307
}
301308
.surface-ink a {
302-
color: var(--color-accent);
309+
color: var(--color-brand);
303310
}
304311
.surface-ink a:hover {
305312
color: var(--color-vellum);

test/redesign.test.ts

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,14 +49,40 @@ describe("scholarly-ink design system", () => {
4949
expect(css.toLowerCase()).toMatch(/inter[- ]?tight/)
5050
})
5151

52-
it("applies the new palette: paper, ink, accent, highlight", () => {
53-
expect(css).toContain("f4ede0") // paper
54-
expect(css).toContain("0e1620") // ink
55-
expect(css).toContain("4a7a72") // accent (teal)
52+
it("applies the new palette: paper, ink, brand teal, highlight", () => {
53+
expect(css).toContain("f6f3ec") // paper
54+
expect(css).toContain("1a1d1f") // ink
55+
expect(css).toContain("008075") // brand teal (from original logo)
5656
expect(css).toContain("b8462e") // highlight (vermillion)
5757
})
5858
})
5959

60+
describe("original brand logo adoption", () => {
61+
it("ships the original symbol.svg from the Ribose/Interscript brand", () => {
62+
const exists = existsSync(resolve(DIST, "symbol.svg"))
63+
expect(exists).toBe(true)
64+
})
65+
66+
it("uses the symbol as favicon", () => {
67+
const exists = existsSync(resolve(DIST, "favicon.svg"))
68+
expect(exists).toBe(true)
69+
})
70+
71+
it("symbol.svg contains the brand teal #008075 from the logo", () => {
72+
const svg = readFileSync(resolve(DIST, "symbol.svg"), "utf8")
73+
expect(svg).toContain("008075")
74+
})
75+
76+
it("every page renders the brand mark as an <img src='/symbol.svg'>", () => {
77+
const pages = allBuiltHtmlFiles()
78+
expect(pages.length).toBeGreaterThan(50)
79+
for (const page of pages.slice(0, 25)) {
80+
const html = readFileSync(page, "utf8")
81+
expect(html).toMatch(/src="\/symbol\.svg"/)
82+
}
83+
})
84+
})
85+
6086
describe("script mosaic signature element", () => {
6187
const home = readHtml("index.html")
6288

test/site.test.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -66,15 +66,15 @@ describe("design system — palette (in compiled CSS)", () => {
6666
const css = readAllCss()
6767

6868
it("uses warm paper background", () => {
69-
expect(css).toContain("f4ede0")
69+
expect(css).toContain("f6f3ec")
7070
})
7171

72-
it("uses oxidized copperplate teal accent", () => {
73-
expect(css).toContain("4a7a72")
72+
it("uses brand teal accent from the original logo", () => {
73+
expect(css).toContain("008075")
7474
})
7575

76-
it("uses deep blue-black ink", () => {
77-
expect(css).toContain("0e1620")
76+
it("uses deep near-black ink", () => {
77+
expect(css).toContain("1a1d1f")
7878
})
7979

8080
it("uses vermillion highlight for CTAs", () => {

0 commit comments

Comments
 (0)