|
21 | 21 | /* solar-amber signal accent (shared across themes) */ |
22 | 22 | --tigo-amber: #f4b23c; |
23 | 23 | --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; |
24 | 38 | } |
25 | 39 |
|
26 | 40 | /* Brand accent — silicon indigo — over Starlight's gray scale. |
|
52 | 66 | position: relative; |
53 | 67 | isolation: isolate; |
54 | 68 | } |
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". */ |
56 | 85 | .hero::before { |
57 | 86 | content: ''; |
58 | 87 | position: absolute; |
59 | | - inset: -40% -25% -20%; |
| 88 | + inset: -60% -70% -30%; |
60 | 89 | z-index: -1; |
61 | 90 | pointer-events: none; |
| 91 | + transform: perspective(1000px) rotateX(43deg) scale(1.15); |
| 92 | + transform-origin: 50% 100%; |
62 | 93 | 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%), |
64 | 95 | 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%); |
69 | 120 | } |
70 | 121 | .hero h1 { |
71 | 122 | font-family: var(--tigo-display); |
|
0 commit comments