Skip to content

Commit bc58275

Browse files
committed
feat(site): replace the hero blueprint grid with a PV array
The grid behind the headline said nothing about solar — it was the generic graph paper every technical docs site uses. It is now an array receding toward the horizon: cells, three busbars each, and module frames, all stacked CSS gradients so there is no image to serve and it re-tints with the theme. Two things carry it. The rotateX from a bottom origin makes near modules large and far ones tight, which is the cue the eye reads as "on a roof" — flat, it is still graph paper. And module boundaries are drawn frame/gap/ frame rather than as one line, because a single heavier line just reads as another cell gap and the modules never visually separate. Light theme needed its own cell/busbar/frame values, not lower opacity; the dark-theme colours vanish against white. Tuned on hardware-accurate preview: tilt 43deg, cell 67%, module edge 42%, cell size 58px. Claude-Session: https://claude.ai/code/session_01RgSnMCa3JQigphGnPbazdw
1 parent 21e0ee2 commit bc58275

2 files changed

Lines changed: 59 additions & 8 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
99

1010
### Changed
1111
- **Docs rewritten for first-time installers.** A new **Start Here** guide covers what to buy, what the jargon means, and the five steps from parts on the desk to a live dashboard — the "Get Started" button used to drop you into a high-voltage warning and a terminal-block diagram. The sidebar is now ordered by when you need something rather than alphabetically, the Config Builder explains what each field is for, and the reference-heavy pages say up front whether you need to read them. No behaviour changed.
12-
- **Docs site recoloured to the brand mark.** Link and accent colours moved from green to the mark's silicon indigo and busbar silver; amber keeps its one meaning — this part is live.
12+
- **Docs site recoloured to the brand mark.** Link and accent colours moved from green to the mark's silicon indigo and busbar silver; amber keeps its one meaning — this part is live. The blueprint grid behind the headline is now a PV array receding toward the horizon — cells, busbars and module frames, drawn in CSS gradients so it stays sharp at any size and re-tints with the theme.
1313
- **New brand mark.** The green-to-blue tile is replaced by an optimizer emitting a telemetry frame, in silicon indigo and amber. It's drawn at three sizes rather than scaled — the device favicon, the device UI sidebar, and the docs — so it stays legible in a browser tab. The docs site had no logo or favicon configured before and now carries the same mark the device serves.
1414

1515
### Fixed

site/src/styles/theme.css

Lines changed: 58 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,20 @@
2121
/* solar-amber signal accent (shared across themes) */
2222
--tigo-amber: #f4b23c;
2323
--tigo-amber-soft: color-mix(in srgb, var(--tigo-amber) 22%, transparent);
24+
25+
/* Hero PV array — see .hero::before. Dark theme reads as modules seen at
26+
dusk; light theme has to survive a white ground, so the cell darkens and
27+
the busbars invert rather than the whole thing washing out. */
28+
--tigo-cell: #1d2a63;
29+
--tigo-busbar: #c6d0e2;
30+
--tigo-frame: #b9c6e4;
31+
--tigo-gap: #05070d;
32+
}
33+
:root[data-theme='light'] {
34+
--tigo-cell: #2b3a7a;
35+
--tigo-busbar: #dfe6f5;
36+
--tigo-frame: #e8edf8;
37+
--tigo-gap: #46538a;
2438
}
2539

2640
/* Brand accent — silicon indigo — over Starlight's gray scale.
@@ -52,20 +66,57 @@
5266
position: relative;
5367
isolation: isolate;
5468
}
55-
/* blueprint grid + twin radial glows (green + amber), faded at the edges */
69+
/* A PV array receding toward the horizon, lit by a low amber sun.
70+
71+
Built from stacked repeating gradients rather than an image, so it scales to
72+
any viewport and re-tints with the theme. Layers, front to back:
73+
1-2 atmosphere — indigo bounce light, amber sun high right
74+
3 busbars — three fine silver lines across each cell
75+
4-5 cell gaps — the 58px lattice that makes cells read as cells
76+
6-7 module edges — every 6x4 cells, drawn as frame/gap/frame rather than
77+
one line, because that is what you actually see where two modules
78+
meet: two bright aluminium rails with dark air between them. A single
79+
line reads as another cell gap and the modules never separate.
80+
8 the silicon itself
81+
82+
The rotateX is what stops it reading as graph paper: perspective from a
83+
bottom origin makes near modules large and far ones tight, which is the
84+
cue the eye uses for "array on a roof". */
5685
.hero::before {
5786
content: '';
5887
position: absolute;
59-
inset: -40% -25% -20%;
88+
inset: -60% -70% -30%;
6089
z-index: -1;
6190
pointer-events: none;
91+
transform: perspective(1000px) rotateX(43deg) scale(1.15);
92+
transform-origin: 50% 100%;
6293
background:
63-
radial-gradient(60% 55% at 22% 18%, color-mix(in srgb, var(--sl-color-accent) 30%, transparent), transparent 70%),
94+
radial-gradient(60% 55% at 22% 18%, color-mix(in srgb, var(--sl-color-accent) 26%, transparent), transparent 70%),
6495
radial-gradient(45% 45% at 88% 12%, var(--tigo-amber-soft), transparent 70%),
65-
repeating-linear-gradient(0deg, transparent 0 47px, color-mix(in srgb, var(--sl-color-gray-4) 30%, transparent) 47px 48px),
66-
repeating-linear-gradient(90deg, transparent 0 47px, color-mix(in srgb, var(--sl-color-gray-4) 30%, transparent) 47px 48px);
67-
-webkit-mask-image: radial-gradient(120% 90% at 50% 20%, #000 35%, transparent 78%);
68-
mask-image: radial-gradient(120% 90% at 50% 20%, #000 35%, transparent 78%);
96+
repeating-linear-gradient(90deg,
97+
transparent 0 18px,
98+
color-mix(in srgb, var(--tigo-busbar) 16%, transparent) 18px 19px),
99+
repeating-linear-gradient(0deg,
100+
transparent 0 55px,
101+
color-mix(in srgb, var(--tigo-busbar) 15%, transparent) 55px 58px),
102+
repeating-linear-gradient(90deg,
103+
transparent 0 55px,
104+
color-mix(in srgb, var(--tigo-busbar) 15%, transparent) 55px 58px),
105+
repeating-linear-gradient(0deg,
106+
transparent 0 221px,
107+
color-mix(in srgb, var(--tigo-frame) 42%, transparent) 221px 225px,
108+
color-mix(in srgb, var(--tigo-gap) 70%, transparent) 225px 228px,
109+
color-mix(in srgb, var(--tigo-frame) 42%, transparent) 228px 232px),
110+
repeating-linear-gradient(90deg,
111+
transparent 0 337px,
112+
color-mix(in srgb, var(--tigo-frame) 42%, transparent) 337px 341px,
113+
color-mix(in srgb, var(--tigo-gap) 70%, transparent) 341px 344px,
114+
color-mix(in srgb, var(--tigo-frame) 42%, transparent) 344px 348px),
115+
linear-gradient(0deg, color-mix(in srgb, var(--tigo-cell) 67%, transparent), color-mix(in srgb, var(--tigo-cell) 67%, transparent));
116+
/* Fades toward the horizon (top) and off both sides, so the array has no
117+
visible edge and never fights the headline for contrast. */
118+
-webkit-mask-image: radial-gradient(120% 78% at 50% 96%, #000 18%, transparent 82%);
119+
mask-image: radial-gradient(120% 78% at 50% 96%, #000 18%, transparent 82%);
69120
}
70121
.hero h1 {
71122
font-family: var(--tigo-display);

0 commit comments

Comments
 (0)