Green instead of gold, and a leaf that reads at 16px
The brand accent was rune gold. It is now mallorn green: --gold becomes
--leaf in tokens.css and everywhere it resolved, and the mark's wafer is
the green of the leaves lembas travels wrapped in rather than the biscuit
inside. Yellow is left to mean exactly one thing in the interface -- a
warning -- instead of two.
Two knock-on choices the rename forced:
- Code keywords move from the brand accent to --warning. Strings are
--success, which is green; keywords in leaf green beside them is not
a colour scheme.
- --success itself leans teal now. Two greens a hue apart read as one
colour rendered badly, and an unread dot has to be tellable from a
brand badge at a glance.
The mark is redrawn, not just recoloured. The blade is ovate -- widest a
third up from the base, rounded where the stem meets it, drawn out only
at the tip -- because the old one was pointed at both ends and read as an
eye. It is also much larger relative to the tile: at 16px the silhouette
is all that survives, and a small leaf on a large tile is a green square
with a smudge on it. Veins sweep towards the tip and shorten as the blade
narrows. The score cross is thinner and fainter so it stays texture.
A single diagonal score was tried first and rejected: behind a diagonal
leaf it does not read as scoring, it reads as a line struck through the
mark.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
@@ -10,8 +10,8 @@
|
|||||||
<stop offset="1" stop-color="#1A2530"/>
|
<stop offset="1" stop-color="#1A2530"/>
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<radialGradient id="b-glow" cx="0.5" cy="0.54" r="0.5">
|
<radialGradient id="b-glow" cx="0.5" cy="0.54" r="0.5">
|
||||||
<stop offset="0" stop-color="#C9A227" stop-opacity="0.22"/>
|
<stop offset="0" stop-color="#9BCC5A" stop-opacity="0.22"/>
|
||||||
<stop offset="1" stop-color="#C9A227" stop-opacity="0"/>
|
<stop offset="1" stop-color="#9BCC5A" stop-opacity="0"/>
|
||||||
</radialGradient>
|
</radialGradient>
|
||||||
<!-- Cool light sitting just above the ridge line, so the far mountains
|
<!-- Cool light sitting just above the ridge line, so the far mountains
|
||||||
separate from the near ones instead of merging into one dark mass. -->
|
separate from the near ones instead of merging into one dark mass. -->
|
||||||
@@ -21,17 +21,17 @@
|
|||||||
</radialGradient>
|
</radialGradient>
|
||||||
|
|
||||||
<linearGradient id="b-wafer" x1="0" y1="0" x2="0.3" y2="1">
|
<linearGradient id="b-wafer" x1="0" y1="0" x2="0.3" y2="1">
|
||||||
<stop offset="0" stop-color="#EACB74"/>
|
<stop offset="0" stop-color="#7FB758"/>
|
||||||
<stop offset="0.5" stop-color="#C9A227"/>
|
<stop offset="0.5" stop-color="#4C8C33"/>
|
||||||
<stop offset="1" stop-color="#916F13"/>
|
<stop offset="1" stop-color="#2A5522"/>
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<linearGradient id="b-leaf" x1="0.1" y1="1" x2="0.9" y2="0">
|
<linearGradient id="b-leaf" x1="0.1" y1="1" x2="0.9" y2="0">
|
||||||
<stop offset="0" stop-color="#93A5B6"/>
|
<stop offset="0" stop-color="#9DB49A"/>
|
||||||
<stop offset="0.4" stop-color="#F1F6FA"/>
|
<stop offset="0.4" stop-color="#F3F8EE"/>
|
||||||
<stop offset="1" stop-color="#B8C7D5"/>
|
<stop offset="1" stop-color="#C6D8BE"/>
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<clipPath id="b-clip">
|
<clipPath id="b-clip">
|
||||||
<rect x="6" y="6" width="52" height="52" rx="13"/>
|
<rect x="5" y="5" width="54" height="54" rx="14"/>
|
||||||
</clipPath>
|
</clipPath>
|
||||||
</defs>
|
</defs>
|
||||||
|
|
||||||
@@ -170,55 +170,55 @@
|
|||||||
</g>
|
</g>
|
||||||
<rect y="180" width="1280" height="240" fill="url(#b-horizon)"/>
|
<rect y="180" width="1280" height="240" fill="url(#b-horizon)"/>
|
||||||
<rect width="1280" height="420" fill="url(#b-glow)"/>
|
<rect width="1280" height="420" fill="url(#b-glow)"/>
|
||||||
<g transform="translate(120 90) rotate(-18) scale(0.42) translate(-32 -32)" opacity="0.16"><path d="M20.5 45.5 C13.8 31.7 23.8 20.9 45.5 18.5 C49.8 35 39.8 45.8 20.5 45.5 Z" fill="#E0B252"/></g>
|
<g transform="translate(120 90) rotate(-18) scale(0.42) translate(-32 -32)" opacity="0.16"><path d="M21 46 C19.6 40.5 20.4 34.2 23.4 30.5 C27.5 25.5 35 20.5 46 18 C43.5 26.5 40.5 36.5 36.1 41.9 C33 45.6 26.5 47 21 46 Z" fill="#9BCC5A"/></g>
|
||||||
<g transform="translate(250 250) rotate(24) scale(0.3) translate(-32 -32)" opacity="0.17"><path d="M20.5 45.5 C13.8 31.7 23.8 20.9 45.5 18.5 C49.8 35 39.8 45.8 20.5 45.5 Z" fill="#E0B252"/></g>
|
<g transform="translate(250 250) rotate(24) scale(0.3) translate(-32 -32)" opacity="0.17"><path d="M21 46 C19.6 40.5 20.4 34.2 23.4 30.5 C27.5 25.5 35 20.5 46 18 C43.5 26.5 40.5 36.5 36.1 41.9 C33 45.6 26.5 47 21 46 Z" fill="#9BCC5A"/></g>
|
||||||
<g transform="translate(1035 95) rotate(12) scale(0.36) translate(-32 -32)" opacity="0.17"><path d="M20.5 45.5 C13.8 31.7 23.8 20.9 45.5 18.5 C49.8 35 39.8 45.8 20.5 45.5 Z" fill="#E0B252"/></g>
|
<g transform="translate(1035 95) rotate(12) scale(0.36) translate(-32 -32)" opacity="0.17"><path d="M21 46 C19.6 40.5 20.4 34.2 23.4 30.5 C27.5 25.5 35 20.5 46 18 C43.5 26.5 40.5 36.5 36.1 41.9 C33 45.6 26.5 47 21 46 Z" fill="#9BCC5A"/></g>
|
||||||
<g transform="translate(1160 215) rotate(-32) scale(0.46) translate(-32 -32)" opacity="0.18"><path d="M20.5 45.5 C13.8 31.7 23.8 20.9 45.5 18.5 C49.8 35 39.8 45.8 20.5 45.5 Z" fill="#E0B252"/></g>
|
<g transform="translate(1160 215) rotate(-32) scale(0.46) translate(-32 -32)" opacity="0.18"><path d="M21 46 C19.6 40.5 20.4 34.2 23.4 30.5 C27.5 25.5 35 20.5 46 18 C43.5 26.5 40.5 36.5 36.1 41.9 C33 45.6 26.5 47 21 46 Z" fill="#9BCC5A"/></g>
|
||||||
<g transform="translate(905 300) rotate(40) scale(0.26) translate(-32 -32)" opacity="0.17"><path d="M20.5 45.5 C13.8 31.7 23.8 20.9 45.5 18.5 C49.8 35 39.8 45.8 20.5 45.5 Z" fill="#E0B252"/></g>
|
<g transform="translate(905 300) rotate(40) scale(0.26) translate(-32 -32)" opacity="0.17"><path d="M21 46 C19.6 40.5 20.4 34.2 23.4 30.5 C27.5 25.5 35 20.5 46 18 C43.5 26.5 40.5 36.5 36.1 41.9 C33 45.6 26.5 47 21 46 Z" fill="#9BCC5A"/></g>
|
||||||
<g transform="translate(185 300) rotate(-8) scale(0.24) translate(-32 -32)" opacity="0.18"><path d="M20.5 45.5 C13.8 31.7 23.8 20.9 45.5 18.5 C49.8 35 39.8 45.8 20.5 45.5 Z" fill="#E0B252"/></g>
|
<g transform="translate(185 300) rotate(-8) scale(0.24) translate(-32 -32)" opacity="0.18"><path d="M21 46 C19.6 40.5 20.4 34.2 23.4 30.5 C27.5 25.5 35 20.5 46 18 C43.5 26.5 40.5 36.5 36.1 41.9 C33 45.6 26.5 47 21 46 Z" fill="#9BCC5A"/></g>
|
||||||
|
|
||||||
<!-- Ridge lines, furthest first. Each is lighter than the one in front of it,
|
<!-- Ridge lines, furthest first. Each is lighter than the one in front of it,
|
||||||
which is what reads as distance. -->
|
which is what reads as distance. -->
|
||||||
<polygon points="0.0,366.0 77.4,260.4 99.7,287.8 209.3,307.1 222.5,340.5 301.6,290.7 339.9,314.6 467.1,267.1 496.3,282.9 606.7,228.9 632.9,259.8 746.4,307.3 778.6,334.3 861.2,310.5 896.2,334.5 1013.6,227.8 1044.7,263.3 1135.1,235.4 1159.3,271.3 1280.0,304.0 1280.0,366.0 1280,999 0,999" fill="#1C2836"/>
|
<polygon points="0.0,366.0 77.4,260.4 99.7,287.8 209.3,307.1 222.5,340.5 301.6,290.7 339.9,314.6 467.1,267.1 496.3,282.9 606.7,228.9 632.9,259.8 746.4,307.3 778.6,334.3 861.2,310.5 896.2,334.5 1013.6,227.8 1044.7,263.3 1135.1,235.4 1159.3,271.3 1280.0,304.0 1280.0,366.0 1280,999 0,999" fill="#1C2836"/>
|
||||||
<polygon points="0.0,392.0 76.5,282.7 92.5,305.1 157.2,334.8 195.6,347.7 306.6,319.4 331.0,337.8 404.6,292.3 419.7,305.8 478.9,333.4 502.2,359.5 591.3,344.5 610.7,372.4 673.6,307.7 696.0,329.2 781.8,302.5 807.3,323.8 939.9,310.5 956.3,320.6 1092.6,317.2 1110.4,344.2 1216.2,299.7 1251.5,314.1 1280.0,288.9 1280.0,392.0 1280,999 0,999" fill="#111A25"/>
|
<polygon points="0.0,392.0 76.5,282.7 92.5,305.1 157.2,334.8 195.6,347.7 306.6,319.4 331.0,337.8 404.6,292.3 419.7,305.8 478.9,333.4 502.2,359.5 591.3,344.5 610.7,372.4 673.6,307.7 696.0,329.2 781.8,302.5 807.3,323.8 939.9,310.5 956.3,320.6 1092.6,317.2 1110.4,344.2 1216.2,299.7 1251.5,314.1 1280.0,288.9 1280.0,392.0 1280,999 0,999" fill="#111A25"/>
|
||||||
<polygon points="0.0,416.0 71.3,356.9 100.4,368.9 176.0,352.0 209.4,364.3 309.1,378.7 321.9,389.3 428.2,386.8 461.4,395.6 538.3,388.1 576.7,403.3 707.1,360.5 720.7,370.5 819.7,384.5 856.9,395.1 927.4,350.8 943.4,368.4 1038.7,363.5 1060.3,375.6 1133.4,388.3 1168.4,397.2 1280.0,380.1 1280.0,416.0 1280,999 0,999" fill="#080D13"/>
|
<polygon points="0.0,416.0 71.3,356.9 100.4,368.9 176.0,352.0 209.4,364.3 309.1,378.7 321.9,389.3 428.2,386.8 461.4,395.6 538.3,388.1 576.7,403.3 707.1,360.5 720.7,370.5 819.7,384.5 856.9,395.1 927.4,350.8 943.4,368.4 1038.7,363.5 1060.3,375.6 1133.4,388.3 1168.4,397.2 1280.0,380.1 1280.0,416.0 1280,999 0,999" fill="#080D13"/>
|
||||||
<rect y="415" width="1280" height="5" fill="#C9A227" opacity="0.55"/>
|
<rect y="415" width="1280" height="5" fill="#9BCC5A" opacity="0.55"/>
|
||||||
|
|
||||||
<!-- Lockup. Colours are fixed rather than themed: the banner carries its own
|
<!-- Lockup. Colours are fixed rather than themed: the banner carries its own
|
||||||
night sky, so it must not follow the reader's colour scheme. -->
|
night sky, so it must not follow the reader's colour scheme. -->
|
||||||
<g transform="translate(304.75 118.00) scale(2.1250)">
|
<g transform="translate(304.75 118.00) scale(2.1250)">
|
||||||
<rect x="6" y="6" width="52" height="52" rx="13" fill="url(#b-wafer)"/>
|
<rect x="5" y="5" width="54" height="54" rx="14" fill="url(#b-wafer)"/>
|
||||||
<g clip-path="url(#b-clip)" fill="none" stroke-linecap="round">
|
<g clip-path="url(#b-clip)" fill="none" stroke-linecap="round">
|
||||||
<g stroke="#7A5C10" stroke-opacity="0.38" stroke-width="2">
|
<g stroke="#1F4019" stroke-opacity="0.30" stroke-width="1.8">
|
||||||
<path d="M32 6 V58"/>
|
<path d="M32 5 V59"/>
|
||||||
<path d="M6 32 H58"/>
|
<path d="M5 32 H59"/>
|
||||||
</g>
|
</g>
|
||||||
<g stroke="#F6E3A8" stroke-opacity="0.3" stroke-width="1">
|
<g stroke="#C7E7A6" stroke-opacity="0.20" stroke-width="0.9">
|
||||||
<path d="M33.2 6 V58"/>
|
<path d="M33.1 5 V59"/>
|
||||||
<path d="M6 33.2 H58"/>
|
<path d="M5 33.1 H59"/>
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
<rect x="7.1" y="7.1" width="49.8" height="49.8" rx="11.9"
|
<rect x="6.1" y="6.1" width="51.8" height="51.8" rx="12.9"
|
||||||
fill="none" stroke="#7A5C10" stroke-opacity="0.3" stroke-width="1.2"/>
|
fill="none" stroke="#1F4019" stroke-opacity="0.32" stroke-width="1.2"/>
|
||||||
<g>
|
<g>
|
||||||
<path d="M21.2 44.8 L17 49.4" stroke="#8A9AA8" stroke-width="3"
|
<path d="M21.4 45.6 L16.3 51.2" stroke="#8B9E86" stroke-width="3"
|
||||||
stroke-linecap="round" fill="none"/>
|
stroke-linecap="round" fill="none"/>
|
||||||
<path d="M20.5 45.5 C13.8 31.7 23.8 20.9 45.5 18.5 C49.8 35 39.8 45.8 20.5 45.5 Z" fill="url(#b-leaf)"/>
|
<path d="M21 46 C19.6 40.5 20.4 34.2 23.4 30.5 C27.5 25.5 35 20.5 46 18 C43.5 26.5 40.5 36.5 36.1 41.9 C33 45.6 26.5 47 21 46 Z" fill="url(#b-leaf)"/>
|
||||||
<path d="M20.5 45.5 C28 38 36 29 45.5 18.5" fill="none" stroke="#61758A" stroke-opacity="0.5"
|
<path d="M21 46 Q30.5 34.5 46 18" fill="none" stroke="#57734F" stroke-opacity="0.5"
|
||||||
stroke-width="1.5" stroke-linecap="round"/>
|
stroke-width="1.5" stroke-linecap="round"/>
|
||||||
<g fill="none" stroke="#61758A" stroke-opacity="0.32"
|
<g fill="none" stroke="#57734F" stroke-opacity="0.32"
|
||||||
stroke-width="1" stroke-linecap="round">
|
stroke-width="1" stroke-linecap="round">
|
||||||
<path d="M26.9 38.8 Q25.2 35.8 24.9 32.1"/>
|
<path d="M26.8 39.2 Q24.9 37.4 24.7 35.3"/>
|
||||||
<path d="M32.3 33.1 Q30.9 30.3 30.4 26.9"/>
|
<path d="M32.0 33.3 Q30.1 31.5 29.8 29.2"/>
|
||||||
<path d="M37.8 27.0 Q36.6 24.6 36.3 21.7"/>
|
<path d="M37.8 26.9 Q36.4 25.6 36.1 23.7"/>
|
||||||
<path d="M26.9 38.8 Q30.5 40.1 33.7 40.3"/>
|
<path d="M26.8 39.2 Q28.7 40.9 30.7 40.8"/>
|
||||||
<path d="M32.3 33.1 Q35.8 34.3 38.6 34.5"/>
|
<path d="M32.0 33.3 Q33.9 35.0 36.1 34.9"/>
|
||||||
<path d="M37.8 27.0 Q40.8 27.9 43.2 28.1"/>
|
<path d="M37.8 26.9 Q39.4 28.2 40.9 28.2"/>
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
<g transform="translate(470.08 232.00)">
|
<g transform="translate(470.08 232.00)">
|
||||||
<style>.base { fill: #EDE6D6; } .accent { fill: #E0B252; }</style>
|
<style>.base { fill: #EDE6D6; } .accent { fill: #9BCC5A; }</style>
|
||||||
<path class="accent" data-char="L" d="M4.67 -88.57 14.83 -87.33C15.24 -76.48 15.24 -61.52 15.24 -49.02V-42.98C15.24 -30.21 15.24 -14.83 14.83 -3.84L4.67 -2.61V0.00H65.91L67.56 -26.78H64.95L56.30 -3.43H29.93C29.52 -14.28 29.39 -29.93 29.39 -42.98V-49.02C29.39 -61.52 29.52 -76.48 29.93 -87.33L39.96 -88.57V-91.18H4.67Z"/>
|
<path class="accent" data-char="L" d="M4.67 -88.57 14.83 -87.33C15.24 -76.48 15.24 -61.52 15.24 -49.02V-42.98C15.24 -30.21 15.24 -14.83 14.83 -3.84L4.67 -2.61V0.00H65.91L67.56 -26.78H64.95L56.30 -3.43H29.93C29.52 -14.28 29.39 -29.93 29.39 -42.98V-49.02C29.39 -61.52 29.52 -76.48 29.93 -87.33L39.96 -88.57V-91.18H4.67Z"/>
|
||||||
<path class="accent" data-char="L" d="M75.52 -88.57 85.68 -87.33C86.10 -76.48 86.10 -61.52 86.10 -49.02V-42.98C86.10 -30.21 86.10 -14.83 85.68 -3.84L75.52 -2.61V0.00H136.76L138.41 -26.78H135.80L127.15 -3.43H100.79C100.38 -14.28 100.24 -29.93 100.24 -42.98V-49.02C100.24 -61.52 100.38 -76.48 100.79 -87.33L110.81 -88.57V-91.18H75.52Z"/>
|
<path class="accent" data-char="L" d="M75.52 -88.57 85.68 -87.33C86.10 -76.48 86.10 -61.52 86.10 -49.02V-42.98C86.10 -30.21 86.10 -14.83 85.68 -3.84L75.52 -2.61V0.00H136.76L138.41 -26.78H135.80L127.15 -3.43H100.79C100.38 -14.28 100.24 -29.93 100.24 -42.98V-49.02C100.24 -61.52 100.38 -76.48 100.79 -87.33L110.81 -88.57V-91.18H75.52Z"/>
|
||||||
<path class="base" data-char="e" d="M175.76 -60.97C182.76 -60.97 187.43 -55.47 187.43 -45.18C187.43 -39.13 185.37 -37.07 179.06 -37.07H161.07C162.03 -54.65 168.76 -60.97 175.76 -60.97ZM175.90 1.79C186.20 1.79 194.85 -2.88 199.79 -13.46L197.87 -14.83C193.75 -9.75 188.39 -6.45 180.98 -6.45C169.44 -6.45 160.93 -16.20 160.93 -32.82V-33.92H198.69C199.24 -35.84 199.52 -37.49 199.52 -40.51C199.52 -54.79 189.63 -64.26 175.62 -64.26C160.38 -64.26 146.93 -51.49 146.93 -30.07C146.93 -9.89 159.70 1.79 175.90 1.79Z"/>
|
<path class="base" data-char="e" d="M175.76 -60.97C182.76 -60.97 187.43 -55.47 187.43 -45.18C187.43 -39.13 185.37 -37.07 179.06 -37.07H161.07C162.03 -54.65 168.76 -60.97 175.76 -60.97ZM175.90 1.79C186.20 1.79 194.85 -2.88 199.79 -13.46L197.87 -14.83C193.75 -9.75 188.39 -6.45 180.98 -6.45C169.44 -6.45 160.93 -16.20 160.93 -32.82V-33.92H198.69C199.24 -35.84 199.52 -37.49 199.52 -40.51C199.52 -54.79 189.63 -64.26 175.62 -64.26C160.38 -64.26 146.93 -51.49 146.93 -30.07C146.93 -9.89 159.70 1.79 175.90 1.79Z"/>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB |
@@ -3,25 +3,25 @@
|
|||||||
<title>LLeMbas</title>
|
<title>LLeMbas</title>
|
||||||
<defs>
|
<defs>
|
||||||
<linearGradient id="f-wafer" x1="0" y1="0" x2="0.3" y2="1">
|
<linearGradient id="f-wafer" x1="0" y1="0" x2="0.3" y2="1">
|
||||||
<stop offset="0" stop-color="#EACB74"/>
|
<stop offset="0" stop-color="#7FB758"/>
|
||||||
<stop offset="0.5" stop-color="#C9A227"/>
|
<stop offset="0.5" stop-color="#4C8C33"/>
|
||||||
<stop offset="1" stop-color="#916F13"/>
|
<stop offset="1" stop-color="#2A5522"/>
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<linearGradient id="f-leaf" x1="0.1" y1="1" x2="0.9" y2="0">
|
<linearGradient id="f-leaf" x1="0.1" y1="1" x2="0.9" y2="0">
|
||||||
<stop offset="0" stop-color="#93A5B6"/>
|
<stop offset="0" stop-color="#9DB49A"/>
|
||||||
<stop offset="0.4" stop-color="#F1F6FA"/>
|
<stop offset="0.4" stop-color="#F3F8EE"/>
|
||||||
<stop offset="1" stop-color="#B8C7D5"/>
|
<stop offset="1" stop-color="#C6D8BE"/>
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<clipPath id="f-clip">
|
<clipPath id="f-clip">
|
||||||
<rect x="6" y="6" width="52" height="52" rx="13"/>
|
<rect x="5" y="5" width="54" height="54" rx="14"/>
|
||||||
</clipPath>
|
</clipPath>
|
||||||
</defs>
|
</defs>
|
||||||
<rect x="2" y="2" width="60" height="60" rx="14" fill="url(#f-wafer)"/>
|
<rect x="1" y="1" width="62" height="62" rx="15" fill="url(#f-wafer)"/>
|
||||||
<g transform="translate(32 32) scale(1.16) translate(-32 -32)">
|
<g transform="translate(32 32) scale(1.1) translate(-32 -32)">
|
||||||
<path d="M20.6 44.6 L15.6 50.1" stroke="#8A9AA8" stroke-width="3.4"
|
<path d="M21.4 45.6 L16.3 51.2" stroke="#8B9E86" stroke-width="3.4"
|
||||||
stroke-linecap="round" fill="none"/>
|
stroke-linecap="round" fill="none"/>
|
||||||
<path d="M20.5 45.5 C13.8 31.7 23.8 20.9 45.5 18.5 C49.8 35 39.8 45.8 20.5 45.5 Z" fill="url(#f-leaf)"/>
|
<path d="M21 46 C19.6 40.5 20.4 34.2 23.4 30.5 C27.5 25.5 35 20.5 46 18 C43.5 26.5 40.5 36.5 36.1 41.9 C33 45.6 26.5 47 21 46 Z" fill="url(#f-leaf)"/>
|
||||||
<path d="M20.5 45.5 C28 38 36 29 45.5 18.5" fill="none" stroke="#61758A" stroke-opacity="0.45"
|
<path d="M21 46 Q30.5 34.5 46 18" fill="none" stroke="#57734F" stroke-opacity="0.45"
|
||||||
stroke-width="1.8" stroke-linecap="round"/>
|
stroke-width="1.8" stroke-linecap="round"/>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 62 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
@@ -3,55 +3,55 @@
|
|||||||
<title>LLeMbas</title>
|
<title>LLeMbas</title>
|
||||||
<defs>
|
<defs>
|
||||||
<linearGradient id="l-wafer" x1="0" y1="0" x2="0.3" y2="1">
|
<linearGradient id="l-wafer" x1="0" y1="0" x2="0.3" y2="1">
|
||||||
<stop offset="0" stop-color="#EACB74"/>
|
<stop offset="0" stop-color="#7FB758"/>
|
||||||
<stop offset="0.5" stop-color="#C9A227"/>
|
<stop offset="0.5" stop-color="#4C8C33"/>
|
||||||
<stop offset="1" stop-color="#916F13"/>
|
<stop offset="1" stop-color="#2A5522"/>
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<linearGradient id="l-leaf" x1="0.1" y1="1" x2="0.9" y2="0">
|
<linearGradient id="l-leaf" x1="0.1" y1="1" x2="0.9" y2="0">
|
||||||
<stop offset="0" stop-color="#93A5B6"/>
|
<stop offset="0" stop-color="#9DB49A"/>
|
||||||
<stop offset="0.4" stop-color="#F1F6FA"/>
|
<stop offset="0.4" stop-color="#F3F8EE"/>
|
||||||
<stop offset="1" stop-color="#B8C7D5"/>
|
<stop offset="1" stop-color="#C6D8BE"/>
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<clipPath id="l-clip">
|
<clipPath id="l-clip">
|
||||||
<rect x="6" y="6" width="52" height="52" rx="13"/>
|
<rect x="5" y="5" width="54" height="54" rx="14"/>
|
||||||
</clipPath>
|
</clipPath>
|
||||||
</defs>
|
</defs>
|
||||||
<style>
|
<style>
|
||||||
.base { fill: var(--lembas-ink, #1B1F23); }
|
.base { fill: var(--lembas-ink, #1B1F23); }
|
||||||
.accent { fill: var(--lembas-gold, #C9A227); }
|
.accent { fill: var(--lembas-leaf, #4C7A22); }
|
||||||
@media (prefers-color-scheme: dark) {
|
@media (prefers-color-scheme: dark) {
|
||||||
.base { fill: var(--lembas-ink, #EDE6D6); }
|
.base { fill: var(--lembas-ink, #EDE6D6); }
|
||||||
.accent { fill: var(--lembas-gold, #E0B252); }
|
.accent { fill: var(--lembas-leaf, #9BCC5A); }
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<g transform="translate(4.0 4.0)">
|
<g transform="translate(4.0 4.0)">
|
||||||
<rect x="6" y="6" width="52" height="52" rx="13" fill="url(#l-wafer)"/>
|
<rect x="5" y="5" width="54" height="54" rx="14" fill="url(#l-wafer)"/>
|
||||||
<g clip-path="url(#l-clip)" fill="none" stroke-linecap="round">
|
<g clip-path="url(#l-clip)" fill="none" stroke-linecap="round">
|
||||||
<g stroke="#7A5C10" stroke-opacity="0.38" stroke-width="2">
|
<g stroke="#1F4019" stroke-opacity="0.30" stroke-width="1.8">
|
||||||
<path d="M32 6 V58"/>
|
<path d="M32 5 V59"/>
|
||||||
<path d="M6 32 H58"/>
|
<path d="M5 32 H59"/>
|
||||||
</g>
|
</g>
|
||||||
<g stroke="#F6E3A8" stroke-opacity="0.3" stroke-width="1">
|
<g stroke="#C7E7A6" stroke-opacity="0.20" stroke-width="0.9">
|
||||||
<path d="M33.2 6 V58"/>
|
<path d="M33.1 5 V59"/>
|
||||||
<path d="M6 33.2 H58"/>
|
<path d="M5 33.1 H59"/>
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
<rect x="7.1" y="7.1" width="49.8" height="49.8" rx="11.9"
|
<rect x="6.1" y="6.1" width="51.8" height="51.8" rx="12.9"
|
||||||
fill="none" stroke="#7A5C10" stroke-opacity="0.3" stroke-width="1.2"/>
|
fill="none" stroke="#1F4019" stroke-opacity="0.32" stroke-width="1.2"/>
|
||||||
<g>
|
<g>
|
||||||
<path d="M21.2 44.8 L17 49.4" stroke="#8A9AA8" stroke-width="3"
|
<path d="M21.4 45.6 L16.3 51.2" stroke="#8B9E86" stroke-width="3"
|
||||||
stroke-linecap="round" fill="none"/>
|
stroke-linecap="round" fill="none"/>
|
||||||
<path d="M20.5 45.5 C13.8 31.7 23.8 20.9 45.5 18.5 C49.8 35 39.8 45.8 20.5 45.5 Z" fill="url(#l-leaf)"/>
|
<path d="M21 46 C19.6 40.5 20.4 34.2 23.4 30.5 C27.5 25.5 35 20.5 46 18 C43.5 26.5 40.5 36.5 36.1 41.9 C33 45.6 26.5 47 21 46 Z" fill="url(#l-leaf)"/>
|
||||||
<path d="M20.5 45.5 C28 38 36 29 45.5 18.5" fill="none" stroke="#61758A" stroke-opacity="0.5"
|
<path d="M21 46 Q30.5 34.5 46 18" fill="none" stroke="#57734F" stroke-opacity="0.5"
|
||||||
stroke-width="1.5" stroke-linecap="round"/>
|
stroke-width="1.5" stroke-linecap="round"/>
|
||||||
<g fill="none" stroke="#61758A" stroke-opacity="0.32"
|
<g fill="none" stroke="#57734F" stroke-opacity="0.32"
|
||||||
stroke-width="1" stroke-linecap="round">
|
stroke-width="1" stroke-linecap="round">
|
||||||
<path d="M26.9 38.8 Q25.2 35.8 24.9 32.1"/>
|
<path d="M26.8 39.2 Q24.9 37.4 24.7 35.3"/>
|
||||||
<path d="M32.3 33.1 Q30.9 30.3 30.4 26.9"/>
|
<path d="M32.0 33.3 Q30.1 31.5 29.8 29.2"/>
|
||||||
<path d="M37.8 27.0 Q36.6 24.6 36.3 21.7"/>
|
<path d="M37.8 26.9 Q36.4 25.6 36.1 23.7"/>
|
||||||
<path d="M26.9 38.8 Q30.5 40.1 33.7 40.3"/>
|
<path d="M26.8 39.2 Q28.7 40.9 30.7 40.8"/>
|
||||||
<path d="M32.3 33.1 Q35.8 34.3 38.6 34.5"/>
|
<path d="M32.0 33.3 Q33.9 35.0 36.1 34.9"/>
|
||||||
<path d="M37.8 27.0 Q40.8 27.9 43.2 28.1"/>
|
<path d="M37.8 26.9 Q39.4 28.2 40.9 28.2"/>
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 5.9 KiB After Width: | Height: | Size: 5.9 KiB |
@@ -1,49 +1,49 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="64" height="64"
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="64" height="64"
|
||||||
role="img" aria-label="LLeMbas">
|
role="img" aria-label="LLeMbas">
|
||||||
<title>LLeMbas</title>
|
<title>LLeMbas</title>
|
||||||
<desc>A silver mallorn leaf laid across a scored golden lembas wafer.</desc>
|
<desc>A pale mallorn leaf laid across a scored green lembas wafer.</desc>
|
||||||
<defs>
|
<defs>
|
||||||
<linearGradient id="m-wafer" x1="0" y1="0" x2="0.3" y2="1">
|
<linearGradient id="m-wafer" x1="0" y1="0" x2="0.3" y2="1">
|
||||||
<stop offset="0" stop-color="#EACB74"/>
|
<stop offset="0" stop-color="#7FB758"/>
|
||||||
<stop offset="0.5" stop-color="#C9A227"/>
|
<stop offset="0.5" stop-color="#4C8C33"/>
|
||||||
<stop offset="1" stop-color="#916F13"/>
|
<stop offset="1" stop-color="#2A5522"/>
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<linearGradient id="m-leaf" x1="0.1" y1="1" x2="0.9" y2="0">
|
<linearGradient id="m-leaf" x1="0.1" y1="1" x2="0.9" y2="0">
|
||||||
<stop offset="0" stop-color="#93A5B6"/>
|
<stop offset="0" stop-color="#9DB49A"/>
|
||||||
<stop offset="0.4" stop-color="#F1F6FA"/>
|
<stop offset="0.4" stop-color="#F3F8EE"/>
|
||||||
<stop offset="1" stop-color="#B8C7D5"/>
|
<stop offset="1" stop-color="#C6D8BE"/>
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<clipPath id="m-clip">
|
<clipPath id="m-clip">
|
||||||
<rect x="6" y="6" width="52" height="52" rx="13"/>
|
<rect x="5" y="5" width="54" height="54" rx="14"/>
|
||||||
</clipPath>
|
</clipPath>
|
||||||
</defs>
|
</defs>
|
||||||
<rect x="6" y="6" width="52" height="52" rx="13" fill="url(#m-wafer)"/>
|
<rect x="5" y="5" width="54" height="54" rx="14" fill="url(#m-wafer)"/>
|
||||||
<g clip-path="url(#m-clip)" fill="none" stroke-linecap="round">
|
<g clip-path="url(#m-clip)" fill="none" stroke-linecap="round">
|
||||||
<g stroke="#7A5C10" stroke-opacity="0.38" stroke-width="2">
|
<g stroke="#1F4019" stroke-opacity="0.30" stroke-width="1.8">
|
||||||
<path d="M32 6 V58"/>
|
<path d="M32 5 V59"/>
|
||||||
<path d="M6 32 H58"/>
|
<path d="M5 32 H59"/>
|
||||||
</g>
|
</g>
|
||||||
<g stroke="#F6E3A8" stroke-opacity="0.3" stroke-width="1">
|
<g stroke="#C7E7A6" stroke-opacity="0.20" stroke-width="0.9">
|
||||||
<path d="M33.2 6 V58"/>
|
<path d="M33.1 5 V59"/>
|
||||||
<path d="M6 33.2 H58"/>
|
<path d="M5 33.1 H59"/>
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
<rect x="7.1" y="7.1" width="49.8" height="49.8" rx="11.9"
|
<rect x="6.1" y="6.1" width="51.8" height="51.8" rx="12.9"
|
||||||
fill="none" stroke="#7A5C10" stroke-opacity="0.3" stroke-width="1.2"/>
|
fill="none" stroke="#1F4019" stroke-opacity="0.32" stroke-width="1.2"/>
|
||||||
<g>
|
<g>
|
||||||
<path d="M21.2 44.8 L17 49.4" stroke="#8A9AA8" stroke-width="3"
|
<path d="M21.4 45.6 L16.3 51.2" stroke="#8B9E86" stroke-width="3"
|
||||||
stroke-linecap="round" fill="none"/>
|
stroke-linecap="round" fill="none"/>
|
||||||
<path d="M20.5 45.5 C13.8 31.7 23.8 20.9 45.5 18.5 C49.8 35 39.8 45.8 20.5 45.5 Z" fill="url(#m-leaf)"/>
|
<path d="M21 46 C19.6 40.5 20.4 34.2 23.4 30.5 C27.5 25.5 35 20.5 46 18 C43.5 26.5 40.5 36.5 36.1 41.9 C33 45.6 26.5 47 21 46 Z" fill="url(#m-leaf)"/>
|
||||||
<path d="M20.5 45.5 C28 38 36 29 45.5 18.5" fill="none" stroke="#61758A" stroke-opacity="0.5"
|
<path d="M21 46 Q30.5 34.5 46 18" fill="none" stroke="#57734F" stroke-opacity="0.5"
|
||||||
stroke-width="1.5" stroke-linecap="round"/>
|
stroke-width="1.5" stroke-linecap="round"/>
|
||||||
<g fill="none" stroke="#61758A" stroke-opacity="0.32"
|
<g fill="none" stroke="#57734F" stroke-opacity="0.32"
|
||||||
stroke-width="1" stroke-linecap="round">
|
stroke-width="1" stroke-linecap="round">
|
||||||
<path d="M26.9 38.8 Q25.2 35.8 24.9 32.1"/>
|
<path d="M26.8 39.2 Q24.9 37.4 24.7 35.3"/>
|
||||||
<path d="M32.3 33.1 Q30.9 30.3 30.4 26.9"/>
|
<path d="M32.0 33.3 Q30.1 31.5 29.8 29.2"/>
|
||||||
<path d="M37.8 27.0 Q36.6 24.6 36.3 21.7"/>
|
<path d="M37.8 26.9 Q36.4 25.6 36.1 23.7"/>
|
||||||
<path d="M26.9 38.8 Q30.5 40.1 33.7 40.3"/>
|
<path d="M26.8 39.2 Q28.7 40.9 30.7 40.8"/>
|
||||||
<path d="M32.3 33.1 Q35.8 34.3 38.6 34.5"/>
|
<path d="M32.0 33.3 Q33.9 35.0 36.1 34.9"/>
|
||||||
<path d="M37.8 27.0 Q40.8 27.9 43.2 28.1"/>
|
<path d="M37.8 26.9 Q39.4 28.2 40.9 28.2"/>
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
@@ -5,10 +5,10 @@
|
|||||||
LLM and take the accent colour; see scripts/build_artwork.py. -->
|
LLM and take the accent colour; see scripts/build_artwork.py. -->
|
||||||
<style>
|
<style>
|
||||||
.base { fill: var(--lembas-ink, #1B1F23); }
|
.base { fill: var(--lembas-ink, #1B1F23); }
|
||||||
.accent { fill: var(--lembas-gold, #C9A227); }
|
.accent { fill: var(--lembas-leaf, #4C7A22); }
|
||||||
@media (prefers-color-scheme: dark) {
|
@media (prefers-color-scheme: dark) {
|
||||||
.base { fill: var(--lembas-ink, #EDE6D6); }
|
.base { fill: var(--lembas-ink, #EDE6D6); }
|
||||||
.accent { fill: var(--lembas-gold, #E0B252); }
|
.accent { fill: var(--lembas-leaf, #9BCC5A); }
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<g transform="translate(-5.07 110.15)">
|
<g transform="translate(-5.07 110.15)">
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB |
@@ -64,18 +64,26 @@ TAGLINE = "Waybread for the long road of thought"
|
|||||||
ACCENT_GLYPHS = frozenset({0, 1, 3})
|
ACCENT_GLYPHS = frozenset({0, 1, 3})
|
||||||
|
|
||||||
# --- Palette -----------------------------------------------------------------
|
# --- Palette -----------------------------------------------------------------
|
||||||
GOLD_LIGHT = "#EACB74"
|
# The wafer is mallorn green because that is how lembas travels: wrapped in the
|
||||||
GOLD = "#C9A227"
|
# leaves, not bare. Green also leaves yellow free to mean one thing in the
|
||||||
GOLD_DARK = "#916F13"
|
# interface -- a warning -- instead of two.
|
||||||
GOLD_SCORE = "#7A5C10"
|
WAFER_LIGHT = "#7FB758"
|
||||||
GOLD_HILIGHT = "#F6E3A8"
|
WAFER = "#4C8C33"
|
||||||
RUNE_GOLD = "#E0B252"
|
WAFER_DARK = "#2A5522"
|
||||||
|
WAFER_SCORE = "#1F4019"
|
||||||
|
WAFER_HILIGHT = "#C7E7A6"
|
||||||
|
# The brand green, matching --leaf in tokens.css. Type accent and the drifting
|
||||||
|
# leaves on the banner.
|
||||||
|
MALLORN = "#9BCC5A"
|
||||||
|
MALLORN_DEEP = "#4C7A22"
|
||||||
|
|
||||||
LEAF_EDGE = "#93A5B6"
|
# The blade stays pale: a leaf the same green as the wafer it lies on has no
|
||||||
LEAF_LIGHT = "#F1F6FA"
|
# silhouette, and the silhouette is the whole mark at 16px.
|
||||||
LEAF_MID = "#B8C7D5"
|
LEAF_EDGE = "#9DB49A"
|
||||||
LEAF_VEIN = "#61758A"
|
LEAF_LIGHT = "#F3F8EE"
|
||||||
LEAF_STEM = "#8A9AA8"
|
LEAF_MID = "#C6D8BE"
|
||||||
|
LEAF_VEIN = "#57734F"
|
||||||
|
LEAF_STEM = "#8B9E86"
|
||||||
|
|
||||||
NIGHT_TOP = "#080B0F"
|
NIGHT_TOP = "#080B0F"
|
||||||
NIGHT_MID = "#101822"
|
NIGHT_MID = "#101822"
|
||||||
@@ -85,22 +93,37 @@ INK = "#1B1F23"
|
|||||||
MUTED = "#9AA7B4"
|
MUTED = "#9AA7B4"
|
||||||
|
|
||||||
# --- The mallorn leaf --------------------------------------------------------
|
# --- The mallorn leaf --------------------------------------------------------
|
||||||
# Drawn once, in a 64x64 box, and reused everywhere. Tuned so the silhouette
|
# Drawn once, in a 64x64 box, and reused everywhere. The blade runs corner to
|
||||||
# still reads as a leaf at 16px, where veins and score lines disappear.
|
# corner and fills most of the tile, because at 16px the only thing that
|
||||||
|
# survives is the outline: a small leaf on a large tile reads as a green square
|
||||||
|
# with a smudge on it. Veins and the score line are detail-only for the same
|
||||||
|
# reason.
|
||||||
|
# Ovate, not lens-shaped: the widest point sits about a third up from the base,
|
||||||
|
# the base is a rounded cusp where the stem meets it, and only the tip is drawn
|
||||||
|
# out to a point. A blade pointed at both ends reads as an eye.
|
||||||
LEAF_BLADE = (
|
LEAF_BLADE = (
|
||||||
"M20.5 45.5 C13.8 31.7 23.8 20.9 45.5 18.5 C49.8 35 39.8 45.8 20.5 45.5 Z"
|
"M21 46 C19.6 40.5 20.4 34.2 23.4 30.5 C27.5 25.5 35 20.5 46 18 "
|
||||||
|
"C43.5 26.5 40.5 36.5 36.1 41.9 C33 45.6 26.5 47 21 46 Z"
|
||||||
)
|
)
|
||||||
LEAF_MIDRIB = "M20.5 45.5 C28 38 36 29 45.5 18.5"
|
LEAF_MIDRIB = "M21 46 Q30.5 34.5 46 18"
|
||||||
LEAF_STEM_PATH = "M21.2 44.8 L17 49.4"
|
LEAF_STEM_PATH = "M21.4 45.6 L16.3 51.2"
|
||||||
|
# Veins sweep towards the tip rather than leaving the midrib square-on, and
|
||||||
|
# shorten as the blade narrows.
|
||||||
LEAF_VEINS = [
|
LEAF_VEINS = [
|
||||||
"M26.9 38.8 Q25.2 35.8 24.9 32.1",
|
"M26.8 39.2 Q24.9 37.4 24.7 35.3",
|
||||||
"M32.3 33.1 Q30.9 30.3 30.4 26.9",
|
"M32.0 33.3 Q30.1 31.5 29.8 29.2",
|
||||||
"M37.8 27.0 Q36.6 24.6 36.3 21.7",
|
"M37.8 26.9 Q36.4 25.6 36.1 23.7",
|
||||||
"M26.9 38.8 Q30.5 40.1 33.7 40.3",
|
"M26.8 39.2 Q28.7 40.9 30.7 40.8",
|
||||||
"M32.3 33.1 Q35.8 34.3 38.6 34.5",
|
"M32.0 33.3 Q33.9 35.0 36.1 34.9",
|
||||||
"M37.8 27.0 Q40.8 27.9 43.2 28.1",
|
"M37.8 26.9 Q39.4 28.2 40.9 28.2",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
# The wafer's break-lines. Axis-aligned and crossed, deliberately: a single
|
||||||
|
# diagonal behind a diagonal leaf does not read as scoring, it reads as a line
|
||||||
|
# struck through the mark. Thin and faint, so it is texture and not structure.
|
||||||
|
WAFER_SCORES = ("M32 5 V59", "M5 32 H59")
|
||||||
|
WAFER_SCORE_HILIGHTS = ("M33.1 5 V59", "M5 33.1 H59")
|
||||||
|
|
||||||
HEADER = '<svg xmlns="http://www.w3.org/2000/svg"'
|
HEADER = '<svg xmlns="http://www.w3.org/2000/svg"'
|
||||||
|
|
||||||
|
|
||||||
@@ -193,10 +216,10 @@ def type_style(indent: str = " ") -> str:
|
|||||||
"""
|
"""
|
||||||
return f"""{indent}<style>
|
return f"""{indent}<style>
|
||||||
{indent} .base {{ fill: var(--lembas-ink, {INK}); }}
|
{indent} .base {{ fill: var(--lembas-ink, {INK}); }}
|
||||||
{indent} .accent {{ fill: var(--lembas-gold, {GOLD}); }}
|
{indent} .accent {{ fill: var(--lembas-leaf, {MALLORN_DEEP}); }}
|
||||||
{indent} @media (prefers-color-scheme: dark) {{
|
{indent} @media (prefers-color-scheme: dark) {{
|
||||||
{indent} .base {{ fill: var(--lembas-ink, {PARCHMENT}); }}
|
{indent} .base {{ fill: var(--lembas-ink, {PARCHMENT}); }}
|
||||||
{indent} .accent {{ fill: var(--lembas-gold, {RUNE_GOLD}); }}
|
{indent} .accent {{ fill: var(--lembas-leaf, {MALLORN}); }}
|
||||||
{indent} }}
|
{indent} }}
|
||||||
{indent}</style>"""
|
{indent}</style>"""
|
||||||
|
|
||||||
@@ -205,9 +228,9 @@ def type_style(indent: str = " ") -> str:
|
|||||||
def mark_defs(prefix: str) -> str:
|
def mark_defs(prefix: str) -> str:
|
||||||
return f""" <defs>
|
return f""" <defs>
|
||||||
<linearGradient id="{prefix}-wafer" x1="0" y1="0" x2="0.3" y2="1">
|
<linearGradient id="{prefix}-wafer" x1="0" y1="0" x2="0.3" y2="1">
|
||||||
<stop offset="0" stop-color="{GOLD_LIGHT}"/>
|
<stop offset="0" stop-color="{WAFER_LIGHT}"/>
|
||||||
<stop offset="0.5" stop-color="{GOLD}"/>
|
<stop offset="0.5" stop-color="{WAFER}"/>
|
||||||
<stop offset="1" stop-color="{GOLD_DARK}"/>
|
<stop offset="1" stop-color="{WAFER_DARK}"/>
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<linearGradient id="{prefix}-leaf" x1="0.1" y1="1" x2="0.9" y2="0">
|
<linearGradient id="{prefix}-leaf" x1="0.1" y1="1" x2="0.9" y2="0">
|
||||||
<stop offset="0" stop-color="{LEAF_EDGE}"/>
|
<stop offset="0" stop-color="{LEAF_EDGE}"/>
|
||||||
@@ -215,7 +238,7 @@ def mark_defs(prefix: str) -> str:
|
|||||||
<stop offset="1" stop-color="{LEAF_MID}"/>
|
<stop offset="1" stop-color="{LEAF_MID}"/>
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<clipPath id="{prefix}-clip">
|
<clipPath id="{prefix}-clip">
|
||||||
<rect x="6" y="6" width="52" height="52" rx="13"/>
|
<rect x="5" y="5" width="54" height="54" rx="14"/>
|
||||||
</clipPath>
|
</clipPath>
|
||||||
</defs>"""
|
</defs>"""
|
||||||
|
|
||||||
@@ -223,23 +246,23 @@ def mark_defs(prefix: str) -> str:
|
|||||||
def mark_body(prefix: str, *, detail: bool = True) -> str:
|
def mark_body(prefix: str, *, detail: bool = True) -> str:
|
||||||
"""The wafer-and-leaf mark in a 64x64 box.
|
"""The wafer-and-leaf mark in a 64x64 box.
|
||||||
|
|
||||||
detail=False drops the score lines, rim and veins for small-size use.
|
detail=False drops the score line, rim and veins for small-size use.
|
||||||
"""
|
"""
|
||||||
parts = [f' <rect x="6" y="6" width="52" height="52" rx="13" fill="url(#{prefix}-wafer)"/>']
|
parts = [f' <rect x="5" y="5" width="54" height="54" rx="14" fill="url(#{prefix}-wafer)"/>']
|
||||||
|
|
||||||
if detail:
|
if detail:
|
||||||
|
scores = "\n".join(f' <path d="{s}"/>' for s in WAFER_SCORES)
|
||||||
|
hilights = "\n".join(f' <path d="{s}"/>' for s in WAFER_SCORE_HILIGHTS)
|
||||||
parts.append(f""" <g clip-path="url(#{prefix}-clip)" fill="none" stroke-linecap="round">
|
parts.append(f""" <g clip-path="url(#{prefix}-clip)" fill="none" stroke-linecap="round">
|
||||||
<g stroke="{GOLD_SCORE}" stroke-opacity="0.38" stroke-width="2">
|
<g stroke="{WAFER_SCORE}" stroke-opacity="0.30" stroke-width="1.8">
|
||||||
<path d="M32 6 V58"/>
|
{scores}
|
||||||
<path d="M6 32 H58"/>
|
|
||||||
</g>
|
</g>
|
||||||
<g stroke="{GOLD_HILIGHT}" stroke-opacity="0.3" stroke-width="1">
|
<g stroke="{WAFER_HILIGHT}" stroke-opacity="0.20" stroke-width="0.9">
|
||||||
<path d="M33.2 6 V58"/>
|
{hilights}
|
||||||
<path d="M6 33.2 H58"/>
|
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
<rect x="7.1" y="7.1" width="49.8" height="49.8" rx="11.9"
|
<rect x="6.1" y="6.1" width="51.8" height="51.8" rx="12.9"
|
||||||
fill="none" stroke="{GOLD_SCORE}" stroke-opacity="0.3" stroke-width="1.2"/>""")
|
fill="none" stroke="{WAFER_SCORE}" stroke-opacity="0.32" stroke-width="1.2"/>""")
|
||||||
|
|
||||||
parts.append(f""" <g>
|
parts.append(f""" <g>
|
||||||
<path d="{LEAF_STEM_PATH}" stroke="{LEAF_STEM}" stroke-width="3"
|
<path d="{LEAF_STEM_PATH}" stroke="{LEAF_STEM}" stroke-width="3"
|
||||||
@@ -264,7 +287,7 @@ def build_logo_mark() -> str:
|
|||||||
return f"""{HEADER} viewBox="0 0 64 64" width="64" height="64"
|
return f"""{HEADER} viewBox="0 0 64 64" width="64" height="64"
|
||||||
role="img" aria-label="LLeMbas">
|
role="img" aria-label="LLeMbas">
|
||||||
<title>LLeMbas</title>
|
<title>LLeMbas</title>
|
||||||
<desc>A silver mallorn leaf laid across a scored golden lembas wafer.</desc>
|
<desc>A pale mallorn leaf laid across a scored green lembas wafer.</desc>
|
||||||
{mark_defs("m")}
|
{mark_defs("m")}
|
||||||
{mark_body("m")}
|
{mark_body("m")}
|
||||||
</svg>
|
</svg>
|
||||||
@@ -272,14 +295,19 @@ def build_logo_mark() -> str:
|
|||||||
|
|
||||||
|
|
||||||
def build_favicon() -> str:
|
def build_favicon() -> str:
|
||||||
"""Small-size variant: no score lines or veins, larger blade, tighter tile."""
|
"""Small-size variant: no score line or veins, larger blade, tighter tile.
|
||||||
|
|
||||||
|
The tile grows to the edge of the box and the leaf is scaled up again on top
|
||||||
|
of that: at 16px the padding of the full mark is several device pixels of
|
||||||
|
nothing, spent on a rounded corner nobody can see.
|
||||||
|
"""
|
||||||
return f"""{HEADER} viewBox="0 0 64 64" width="64" height="64"
|
return f"""{HEADER} viewBox="0 0 64 64" width="64" height="64"
|
||||||
role="img" aria-label="LLeMbas">
|
role="img" aria-label="LLeMbas">
|
||||||
<title>LLeMbas</title>
|
<title>LLeMbas</title>
|
||||||
{mark_defs("f")}
|
{mark_defs("f")}
|
||||||
<rect x="2" y="2" width="60" height="60" rx="14" fill="url(#f-wafer)"/>
|
<rect x="1" y="1" width="62" height="62" rx="15" fill="url(#f-wafer)"/>
|
||||||
<g transform="translate(32 32) scale(1.16) translate(-32 -32)">
|
<g transform="translate(32 32) scale(1.1) translate(-32 -32)">
|
||||||
<path d="M20.6 44.6 L15.6 50.1" stroke="{LEAF_STEM}" stroke-width="3.4"
|
<path d="{LEAF_STEM_PATH}" stroke="{LEAF_STEM}" stroke-width="3.4"
|
||||||
stroke-linecap="round" fill="none"/>
|
stroke-linecap="round" fill="none"/>
|
||||||
<path d="{LEAF_BLADE}" fill="url(#f-leaf)"/>
|
<path d="{LEAF_BLADE}" fill="url(#f-leaf)"/>
|
||||||
<path d="{LEAF_MIDRIB}" fill="none" stroke="{LEAF_VEIN}" stroke-opacity="0.45"
|
<path d="{LEAF_MIDRIB}" fill="none" stroke="{LEAF_VEIN}" stroke-opacity="0.45"
|
||||||
@@ -441,7 +469,7 @@ def _drifting_leaves(seed: int) -> str:
|
|||||||
out.append(
|
out.append(
|
||||||
f' <g transform="translate({cx} {cy}) rotate({rot}) '
|
f' <g transform="translate({cx} {cy}) rotate({rot}) '
|
||||||
f'scale({scale}) translate(-32 -32)" opacity="{opacity:.2f}">'
|
f'scale({scale}) translate(-32 -32)" opacity="{opacity:.2f}">'
|
||||||
f'<path d="{LEAF_BLADE}" fill="{RUNE_GOLD}"/></g>'
|
f'<path d="{LEAF_BLADE}" fill="{MALLORN}"/></g>'
|
||||||
)
|
)
|
||||||
return "\n".join(out)
|
return "\n".join(out)
|
||||||
|
|
||||||
@@ -481,8 +509,8 @@ def build_banner() -> str:
|
|||||||
<stop offset="1" stop-color="{NIGHT_LOW}"/>
|
<stop offset="1" stop-color="{NIGHT_LOW}"/>
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<radialGradient id="b-glow" cx="0.5" cy="0.54" r="0.5">
|
<radialGradient id="b-glow" cx="0.5" cy="0.54" r="0.5">
|
||||||
<stop offset="0" stop-color="{GOLD}" stop-opacity="0.22"/>
|
<stop offset="0" stop-color="{MALLORN}" stop-opacity="0.22"/>
|
||||||
<stop offset="1" stop-color="{GOLD}" stop-opacity="0"/>
|
<stop offset="1" stop-color="{MALLORN}" stop-opacity="0"/>
|
||||||
</radialGradient>
|
</radialGradient>
|
||||||
<!-- Cool light sitting just above the ridge line, so the far mountains
|
<!-- Cool light sitting just above the ridge line, so the far mountains
|
||||||
separate from the near ones instead of merging into one dark mass. -->
|
separate from the near ones instead of merging into one dark mass. -->
|
||||||
@@ -506,7 +534,7 @@ def build_banner() -> str:
|
|||||||
{_mountains(width, 366, 3, 150, "#1C2836")}
|
{_mountains(width, 366, 3, 150, "#1C2836")}
|
||||||
{_mountains(width, 392, 8, 112, "#111A25")}
|
{_mountains(width, 392, 8, 112, "#111A25")}
|
||||||
{_mountains(width, 416, 21, 74, "#080D13")}
|
{_mountains(width, 416, 21, 74, "#080D13")}
|
||||||
<rect y="{height - 5:.0f}" width="{width:.0f}" height="5" fill="{GOLD}" opacity="0.55"/>
|
<rect y="{height - 5:.0f}" width="{width:.0f}" height="5" fill="{MALLORN}" opacity="0.55"/>
|
||||||
|
|
||||||
<!-- Lockup. Colours are fixed rather than themed: the banner carries its own
|
<!-- Lockup. Colours are fixed rather than themed: the banner carries its own
|
||||||
night sky, so it must not follow the reader's colour scheme. -->
|
night sky, so it must not follow the reader's colour scheme. -->
|
||||||
@@ -514,7 +542,7 @@ def build_banner() -> str:
|
|||||||
{mark_body("b")}
|
{mark_body("b")}
|
||||||
</g>
|
</g>
|
||||||
<g transform="translate({lockup_x + mark_size + gap - run.x0:.2f} {baseline_y:.2f})">
|
<g transform="translate({lockup_x + mark_size + gap - run.x0:.2f} {baseline_y:.2f})">
|
||||||
<style>.base {{ fill: {PARCHMENT}; }} .accent {{ fill: {RUNE_GOLD}; }}</style>
|
<style>.base {{ fill: {PARCHMENT}; }} .accent {{ fill: {MALLORN}; }}</style>
|
||||||
{run.paths(ACCENT_GLYPHS, indent=" ")}
|
{run.paths(ACCENT_GLYPHS, indent=" ")}
|
||||||
</g>
|
</g>
|
||||||
<g transform="translate({tag_x:.2f} {tag_y:.2f})">
|
<g transform="translate({tag_x:.2f} {tag_y:.2f})">
|
||||||
|
|||||||
@@ -342,7 +342,7 @@ button, input, textarea, select {
|
|||||||
background: var(--surface-active);
|
background: var(--surface-active);
|
||||||
color: var(--ink-muted);
|
color: var(--ink-muted);
|
||||||
}
|
}
|
||||||
.badge--gold { background: var(--gold-soft); color: var(--gold); }
|
.badge--leaf { background: var(--leaf-soft); color: var(--leaf); }
|
||||||
.badge--success { background: var(--success-soft); color: var(--success); }
|
.badge--success { background: var(--success-soft); color: var(--success); }
|
||||||
.badge--danger { background: var(--danger-soft); color: var(--danger); }
|
.badge--danger { background: var(--danger-soft); color: var(--danger); }
|
||||||
|
|
||||||
@@ -381,7 +381,7 @@ button, input, textarea, select {
|
|||||||
}
|
}
|
||||||
.sidebar__brand:hover { color: var(--ink); }
|
.sidebar__brand:hover { color: var(--ink); }
|
||||||
.sidebar__brand .brand-mark { width: 1.65rem; height: 1.65rem; flex: none; }
|
.sidebar__brand .brand-mark { width: 1.65rem; height: 1.65rem; flex: none; }
|
||||||
.sidebar__brand .brand-llm { color: var(--gold); }
|
.sidebar__brand .brand-llm { color: var(--leaf); }
|
||||||
|
|
||||||
.sidebar__actions {
|
.sidebar__actions {
|
||||||
display: flex;
|
display: flex;
|
||||||
@@ -554,7 +554,7 @@ button, input, textarea, select {
|
|||||||
place-items: center;
|
place-items: center;
|
||||||
padding: var(--sp-6);
|
padding: var(--sp-6);
|
||||||
background:
|
background:
|
||||||
radial-gradient(ellipse 60% 50% at 50% 0%, var(--gold-soft), transparent 70%),
|
radial-gradient(ellipse 60% 50% at 50% 0%, var(--leaf-soft), transparent 70%),
|
||||||
var(--bg);
|
var(--bg);
|
||||||
}
|
}
|
||||||
.auth__card {
|
.auth__card {
|
||||||
@@ -826,7 +826,7 @@ button, input, textarea, select {
|
|||||||
font-size: var(--text-sm);
|
font-size: var(--text-sm);
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
}
|
}
|
||||||
.picker__pin { color: var(--gold); }
|
.picker__pin { color: var(--leaf); }
|
||||||
.picker__option-desc {
|
.picker__option-desc {
|
||||||
font-size: var(--text-xs);
|
font-size: var(--text-xs);
|
||||||
color: var(--ink-faint);
|
color: var(--ink-faint);
|
||||||
@@ -842,8 +842,8 @@ button, input, textarea, select {
|
|||||||
font-size: 0.6875rem;
|
font-size: 0.6875rem;
|
||||||
padding: 0 0.35rem;
|
padding: 0 0.35rem;
|
||||||
border-radius: var(--radius-sm);
|
border-radius: var(--radius-sm);
|
||||||
background: var(--gold-soft);
|
background: var(--leaf-soft);
|
||||||
color: var(--gold);
|
color: var(--leaf);
|
||||||
}
|
}
|
||||||
.picker__tick { color: var(--accent); flex: none; margin-top: 0.35rem; }
|
.picker__tick { color: var(--accent); flex: none; margin-top: 0.35rem; }
|
||||||
.picker__empty {
|
.picker__empty {
|
||||||
|
|||||||
@@ -131,7 +131,7 @@
|
|||||||
height: 1.05em;
|
height: 1.05em;
|
||||||
margin-left: 1px;
|
margin-left: 1px;
|
||||||
vertical-align: text-bottom;
|
vertical-align: text-bottom;
|
||||||
background: var(--gold);
|
background: var(--leaf);
|
||||||
opacity: 0.75;
|
opacity: 0.75;
|
||||||
animation: caret 1.05s steps(1) infinite;
|
animation: caret 1.05s steps(1) infinite;
|
||||||
}
|
}
|
||||||
@@ -167,7 +167,7 @@
|
|||||||
.reasoning__summary::-webkit-details-marker { display: none; }
|
.reasoning__summary::-webkit-details-marker { display: none; }
|
||||||
.reasoning__summary:hover { color: var(--ink); background: var(--surface-hover); }
|
.reasoning__summary:hover { color: var(--ink); background: var(--surface-hover); }
|
||||||
|
|
||||||
.reasoning__icon { color: var(--gold); flex: none; }
|
.reasoning__icon { color: var(--leaf); flex: none; }
|
||||||
.reasoning__label { flex: 1; font-style: italic; }
|
.reasoning__label { flex: 1; font-style: italic; }
|
||||||
|
|
||||||
.reasoning__chevron {
|
.reasoning__chevron {
|
||||||
@@ -225,7 +225,7 @@
|
|||||||
}
|
}
|
||||||
.tool-activity__summary::-webkit-details-marker { display: none; }
|
.tool-activity__summary::-webkit-details-marker { display: none; }
|
||||||
.tool-activity__summary:hover { color: var(--ink); background: var(--surface-hover); }
|
.tool-activity__summary:hover { color: var(--ink); background: var(--surface-hover); }
|
||||||
.tool-activity__icon { color: var(--gold); flex: none; }
|
.tool-activity__icon { color: var(--leaf); flex: none; }
|
||||||
.tool-activity__label { flex: 1; }
|
.tool-activity__label { flex: 1; }
|
||||||
.tool-activity__count { color: var(--ink-faint); }
|
.tool-activity__count { color: var(--ink-faint); }
|
||||||
.tool-activity[open] .reasoning__chevron { transform: rotate(180deg); }
|
.tool-activity[open] .reasoning__chevron { transform: rotate(180deg); }
|
||||||
@@ -423,7 +423,9 @@
|
|||||||
so code follows the active theme. classprefix "pg-" is set in markdown.py.
|
so code follows the active theme. classprefix "pg-" is set in markdown.py.
|
||||||
*/
|
*/
|
||||||
.pg-c, .pg-c1, .pg-cm, .pg-cs, .pg-cp { color: var(--ink-faint); font-style: italic; }
|
.pg-c, .pg-c1, .pg-cm, .pg-cs, .pg-cp { color: var(--ink-faint); font-style: italic; }
|
||||||
.pg-k, .pg-kn, .pg-kd, .pg-kc, .pg-kr, .pg-kt { color: var(--gold); }
|
/* Keywords take --warning, not the brand accent: strings are already green, and
|
||||||
|
two greens in one code block is not a colour scheme, it is a bug report. */
|
||||||
|
.pg-k, .pg-kn, .pg-kd, .pg-kc, .pg-kr, .pg-kt { color: var(--warning); }
|
||||||
.pg-s, .pg-s1, .pg-s2, .pg-sb, .pg-sd, .pg-se, .pg-sh, .pg-si, .pg-sx { color: var(--success); }
|
.pg-s, .pg-s1, .pg-s2, .pg-sb, .pg-sd, .pg-se, .pg-sh, .pg-si, .pg-sx { color: var(--success); }
|
||||||
.pg-m, .pg-mi, .pg-mf, .pg-mh, .pg-mo { color: var(--danger); }
|
.pg-m, .pg-mi, .pg-mf, .pg-mh, .pg-mo { color: var(--danger); }
|
||||||
.pg-nf, .pg-nd { color: var(--accent); }
|
.pg-nf, .pg-nd { color: var(--accent); }
|
||||||
|
|||||||
@@ -77,7 +77,7 @@
|
|||||||
MORIA (default, dark)
|
MORIA (default, dark)
|
||||||
|
|
||||||
Deep stone and lamplight: the halls under the mountain. Surfaces are cool and
|
Deep stone and lamplight: the halls under the mountain. Surfaces are cool and
|
||||||
near-neutral so the gold and mithril accents carry all the colour.
|
near-neutral so the mallorn and mithril accents carry all the colour.
|
||||||
---------------------------------------------------------------------------
|
---------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
:root,
|
:root,
|
||||||
@@ -105,18 +105,27 @@
|
|||||||
--accent-ink: #0B0E11;
|
--accent-ink: #0B0E11;
|
||||||
--accent-soft: rgba(143, 179, 204, 0.14);
|
--accent-soft: rgba(143, 179, 204, 0.14);
|
||||||
|
|
||||||
/* Rune gold: the warm accent. Brand colour, and the assistant's mark. */
|
/*
|
||||||
--gold: #E0B252;
|
Mallorn: the brand accent, and the assistant's mark. A yellow-leaning leaf
|
||||||
--gold-hover: #EDC46F;
|
green, so it stays warm against the mithril blue rather than turning the
|
||||||
--gold-soft: rgba(224, 178, 82, 0.13);
|
palette into two cool accents that compete.
|
||||||
|
*/
|
||||||
|
--leaf: #9BCC5A;
|
||||||
|
--leaf-hover: #B1DD74;
|
||||||
|
--leaf-soft: rgba(155, 204, 90, 0.14);
|
||||||
|
|
||||||
/* Ember: destructive actions and errors. */
|
/* Ember: destructive actions and errors. */
|
||||||
--danger: #E2795A;
|
--danger: #E2795A;
|
||||||
--danger-hover: #EC8E72;
|
--danger-hover: #EC8E72;
|
||||||
--danger-soft: rgba(226, 121, 90, 0.14);
|
--danger-soft: rgba(226, 121, 90, 0.14);
|
||||||
|
|
||||||
--success: #7FB77E;
|
/*
|
||||||
--success-soft: rgba(127, 183, 126, 0.14);
|
Success leans teal rather than leaf. Two greens a hue apart read as one
|
||||||
|
colour rendered inconsistently -- an unread dot beside a brand badge has to
|
||||||
|
be tellable from it at a glance.
|
||||||
|
*/
|
||||||
|
--success: #5FBFA0;
|
||||||
|
--success-soft: rgba(95, 191, 160, 0.14);
|
||||||
--warning: #DFAE58;
|
--warning: #DFAE58;
|
||||||
--warning-soft: rgba(223, 174, 88, 0.14);
|
--warning-soft: rgba(223, 174, 88, 0.14);
|
||||||
|
|
||||||
@@ -137,7 +146,7 @@
|
|||||||
SHIRE (light)
|
SHIRE (light)
|
||||||
|
|
||||||
Parchment, ink and moss: warm, low-contrast, easy to read for a long time.
|
Parchment, ink and moss: warm, low-contrast, easy to read for a long time.
|
||||||
Backgrounds are deliberately off-white -- pure #FFF next to the gold accent
|
Backgrounds are deliberately off-white -- pure #FFF next to the leaf accent
|
||||||
reads as clinical rather than as paper.
|
reads as clinical rather than as paper.
|
||||||
---------------------------------------------------------------------------
|
---------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@@ -165,16 +174,17 @@
|
|||||||
--accent-ink: #FDFBF5;
|
--accent-ink: #FDFBF5;
|
||||||
--accent-soft: rgba(62, 107, 122, 0.12);
|
--accent-soft: rgba(62, 107, 122, 0.12);
|
||||||
|
|
||||||
--gold: #A8801A;
|
/* The same mallorn, darkened until it holds its own as text on parchment. */
|
||||||
--gold-hover: #8E6B12;
|
--leaf: #4C7A22;
|
||||||
--gold-soft: rgba(168, 128, 26, 0.13);
|
--leaf-hover: #3C6318;
|
||||||
|
--leaf-soft: rgba(76, 122, 34, 0.13);
|
||||||
|
|
||||||
--danger: #A6432B;
|
--danger: #A6432B;
|
||||||
--danger-hover: #8C3722;
|
--danger-hover: #8C3722;
|
||||||
--danger-soft: rgba(166, 67, 43, 0.11);
|
--danger-soft: rgba(166, 67, 43, 0.11);
|
||||||
|
|
||||||
--success: #4F7A3F;
|
--success: #2C7360;
|
||||||
--success-soft: rgba(79, 122, 63, 0.12);
|
--success-soft: rgba(44, 115, 96, 0.12);
|
||||||
--warning: #98701A;
|
--warning: #98701A;
|
||||||
--warning-soft: rgba(152, 112, 26, 0.13);
|
--warning-soft: rgba(152, 112, 26, 0.13);
|
||||||
|
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
@@ -10,8 +10,8 @@
|
|||||||
<stop offset="1" stop-color="#1A2530"/>
|
<stop offset="1" stop-color="#1A2530"/>
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<radialGradient id="b-glow" cx="0.5" cy="0.54" r="0.5">
|
<radialGradient id="b-glow" cx="0.5" cy="0.54" r="0.5">
|
||||||
<stop offset="0" stop-color="#C9A227" stop-opacity="0.22"/>
|
<stop offset="0" stop-color="#9BCC5A" stop-opacity="0.22"/>
|
||||||
<stop offset="1" stop-color="#C9A227" stop-opacity="0"/>
|
<stop offset="1" stop-color="#9BCC5A" stop-opacity="0"/>
|
||||||
</radialGradient>
|
</radialGradient>
|
||||||
<!-- Cool light sitting just above the ridge line, so the far mountains
|
<!-- Cool light sitting just above the ridge line, so the far mountains
|
||||||
separate from the near ones instead of merging into one dark mass. -->
|
separate from the near ones instead of merging into one dark mass. -->
|
||||||
@@ -21,17 +21,17 @@
|
|||||||
</radialGradient>
|
</radialGradient>
|
||||||
|
|
||||||
<linearGradient id="b-wafer" x1="0" y1="0" x2="0.3" y2="1">
|
<linearGradient id="b-wafer" x1="0" y1="0" x2="0.3" y2="1">
|
||||||
<stop offset="0" stop-color="#EACB74"/>
|
<stop offset="0" stop-color="#7FB758"/>
|
||||||
<stop offset="0.5" stop-color="#C9A227"/>
|
<stop offset="0.5" stop-color="#4C8C33"/>
|
||||||
<stop offset="1" stop-color="#916F13"/>
|
<stop offset="1" stop-color="#2A5522"/>
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<linearGradient id="b-leaf" x1="0.1" y1="1" x2="0.9" y2="0">
|
<linearGradient id="b-leaf" x1="0.1" y1="1" x2="0.9" y2="0">
|
||||||
<stop offset="0" stop-color="#93A5B6"/>
|
<stop offset="0" stop-color="#9DB49A"/>
|
||||||
<stop offset="0.4" stop-color="#F1F6FA"/>
|
<stop offset="0.4" stop-color="#F3F8EE"/>
|
||||||
<stop offset="1" stop-color="#B8C7D5"/>
|
<stop offset="1" stop-color="#C6D8BE"/>
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<clipPath id="b-clip">
|
<clipPath id="b-clip">
|
||||||
<rect x="6" y="6" width="52" height="52" rx="13"/>
|
<rect x="5" y="5" width="54" height="54" rx="14"/>
|
||||||
</clipPath>
|
</clipPath>
|
||||||
</defs>
|
</defs>
|
||||||
|
|
||||||
@@ -170,55 +170,55 @@
|
|||||||
</g>
|
</g>
|
||||||
<rect y="180" width="1280" height="240" fill="url(#b-horizon)"/>
|
<rect y="180" width="1280" height="240" fill="url(#b-horizon)"/>
|
||||||
<rect width="1280" height="420" fill="url(#b-glow)"/>
|
<rect width="1280" height="420" fill="url(#b-glow)"/>
|
||||||
<g transform="translate(120 90) rotate(-18) scale(0.42) translate(-32 -32)" opacity="0.16"><path d="M20.5 45.5 C13.8 31.7 23.8 20.9 45.5 18.5 C49.8 35 39.8 45.8 20.5 45.5 Z" fill="#E0B252"/></g>
|
<g transform="translate(120 90) rotate(-18) scale(0.42) translate(-32 -32)" opacity="0.16"><path d="M21 46 C19.6 40.5 20.4 34.2 23.4 30.5 C27.5 25.5 35 20.5 46 18 C43.5 26.5 40.5 36.5 36.1 41.9 C33 45.6 26.5 47 21 46 Z" fill="#9BCC5A"/></g>
|
||||||
<g transform="translate(250 250) rotate(24) scale(0.3) translate(-32 -32)" opacity="0.17"><path d="M20.5 45.5 C13.8 31.7 23.8 20.9 45.5 18.5 C49.8 35 39.8 45.8 20.5 45.5 Z" fill="#E0B252"/></g>
|
<g transform="translate(250 250) rotate(24) scale(0.3) translate(-32 -32)" opacity="0.17"><path d="M21 46 C19.6 40.5 20.4 34.2 23.4 30.5 C27.5 25.5 35 20.5 46 18 C43.5 26.5 40.5 36.5 36.1 41.9 C33 45.6 26.5 47 21 46 Z" fill="#9BCC5A"/></g>
|
||||||
<g transform="translate(1035 95) rotate(12) scale(0.36) translate(-32 -32)" opacity="0.17"><path d="M20.5 45.5 C13.8 31.7 23.8 20.9 45.5 18.5 C49.8 35 39.8 45.8 20.5 45.5 Z" fill="#E0B252"/></g>
|
<g transform="translate(1035 95) rotate(12) scale(0.36) translate(-32 -32)" opacity="0.17"><path d="M21 46 C19.6 40.5 20.4 34.2 23.4 30.5 C27.5 25.5 35 20.5 46 18 C43.5 26.5 40.5 36.5 36.1 41.9 C33 45.6 26.5 47 21 46 Z" fill="#9BCC5A"/></g>
|
||||||
<g transform="translate(1160 215) rotate(-32) scale(0.46) translate(-32 -32)" opacity="0.18"><path d="M20.5 45.5 C13.8 31.7 23.8 20.9 45.5 18.5 C49.8 35 39.8 45.8 20.5 45.5 Z" fill="#E0B252"/></g>
|
<g transform="translate(1160 215) rotate(-32) scale(0.46) translate(-32 -32)" opacity="0.18"><path d="M21 46 C19.6 40.5 20.4 34.2 23.4 30.5 C27.5 25.5 35 20.5 46 18 C43.5 26.5 40.5 36.5 36.1 41.9 C33 45.6 26.5 47 21 46 Z" fill="#9BCC5A"/></g>
|
||||||
<g transform="translate(905 300) rotate(40) scale(0.26) translate(-32 -32)" opacity="0.17"><path d="M20.5 45.5 C13.8 31.7 23.8 20.9 45.5 18.5 C49.8 35 39.8 45.8 20.5 45.5 Z" fill="#E0B252"/></g>
|
<g transform="translate(905 300) rotate(40) scale(0.26) translate(-32 -32)" opacity="0.17"><path d="M21 46 C19.6 40.5 20.4 34.2 23.4 30.5 C27.5 25.5 35 20.5 46 18 C43.5 26.5 40.5 36.5 36.1 41.9 C33 45.6 26.5 47 21 46 Z" fill="#9BCC5A"/></g>
|
||||||
<g transform="translate(185 300) rotate(-8) scale(0.24) translate(-32 -32)" opacity="0.18"><path d="M20.5 45.5 C13.8 31.7 23.8 20.9 45.5 18.5 C49.8 35 39.8 45.8 20.5 45.5 Z" fill="#E0B252"/></g>
|
<g transform="translate(185 300) rotate(-8) scale(0.24) translate(-32 -32)" opacity="0.18"><path d="M21 46 C19.6 40.5 20.4 34.2 23.4 30.5 C27.5 25.5 35 20.5 46 18 C43.5 26.5 40.5 36.5 36.1 41.9 C33 45.6 26.5 47 21 46 Z" fill="#9BCC5A"/></g>
|
||||||
|
|
||||||
<!-- Ridge lines, furthest first. Each is lighter than the one in front of it,
|
<!-- Ridge lines, furthest first. Each is lighter than the one in front of it,
|
||||||
which is what reads as distance. -->
|
which is what reads as distance. -->
|
||||||
<polygon points="0.0,366.0 77.4,260.4 99.7,287.8 209.3,307.1 222.5,340.5 301.6,290.7 339.9,314.6 467.1,267.1 496.3,282.9 606.7,228.9 632.9,259.8 746.4,307.3 778.6,334.3 861.2,310.5 896.2,334.5 1013.6,227.8 1044.7,263.3 1135.1,235.4 1159.3,271.3 1280.0,304.0 1280.0,366.0 1280,999 0,999" fill="#1C2836"/>
|
<polygon points="0.0,366.0 77.4,260.4 99.7,287.8 209.3,307.1 222.5,340.5 301.6,290.7 339.9,314.6 467.1,267.1 496.3,282.9 606.7,228.9 632.9,259.8 746.4,307.3 778.6,334.3 861.2,310.5 896.2,334.5 1013.6,227.8 1044.7,263.3 1135.1,235.4 1159.3,271.3 1280.0,304.0 1280.0,366.0 1280,999 0,999" fill="#1C2836"/>
|
||||||
<polygon points="0.0,392.0 76.5,282.7 92.5,305.1 157.2,334.8 195.6,347.7 306.6,319.4 331.0,337.8 404.6,292.3 419.7,305.8 478.9,333.4 502.2,359.5 591.3,344.5 610.7,372.4 673.6,307.7 696.0,329.2 781.8,302.5 807.3,323.8 939.9,310.5 956.3,320.6 1092.6,317.2 1110.4,344.2 1216.2,299.7 1251.5,314.1 1280.0,288.9 1280.0,392.0 1280,999 0,999" fill="#111A25"/>
|
<polygon points="0.0,392.0 76.5,282.7 92.5,305.1 157.2,334.8 195.6,347.7 306.6,319.4 331.0,337.8 404.6,292.3 419.7,305.8 478.9,333.4 502.2,359.5 591.3,344.5 610.7,372.4 673.6,307.7 696.0,329.2 781.8,302.5 807.3,323.8 939.9,310.5 956.3,320.6 1092.6,317.2 1110.4,344.2 1216.2,299.7 1251.5,314.1 1280.0,288.9 1280.0,392.0 1280,999 0,999" fill="#111A25"/>
|
||||||
<polygon points="0.0,416.0 71.3,356.9 100.4,368.9 176.0,352.0 209.4,364.3 309.1,378.7 321.9,389.3 428.2,386.8 461.4,395.6 538.3,388.1 576.7,403.3 707.1,360.5 720.7,370.5 819.7,384.5 856.9,395.1 927.4,350.8 943.4,368.4 1038.7,363.5 1060.3,375.6 1133.4,388.3 1168.4,397.2 1280.0,380.1 1280.0,416.0 1280,999 0,999" fill="#080D13"/>
|
<polygon points="0.0,416.0 71.3,356.9 100.4,368.9 176.0,352.0 209.4,364.3 309.1,378.7 321.9,389.3 428.2,386.8 461.4,395.6 538.3,388.1 576.7,403.3 707.1,360.5 720.7,370.5 819.7,384.5 856.9,395.1 927.4,350.8 943.4,368.4 1038.7,363.5 1060.3,375.6 1133.4,388.3 1168.4,397.2 1280.0,380.1 1280.0,416.0 1280,999 0,999" fill="#080D13"/>
|
||||||
<rect y="415" width="1280" height="5" fill="#C9A227" opacity="0.55"/>
|
<rect y="415" width="1280" height="5" fill="#9BCC5A" opacity="0.55"/>
|
||||||
|
|
||||||
<!-- Lockup. Colours are fixed rather than themed: the banner carries its own
|
<!-- Lockup. Colours are fixed rather than themed: the banner carries its own
|
||||||
night sky, so it must not follow the reader's colour scheme. -->
|
night sky, so it must not follow the reader's colour scheme. -->
|
||||||
<g transform="translate(304.75 118.00) scale(2.1250)">
|
<g transform="translate(304.75 118.00) scale(2.1250)">
|
||||||
<rect x="6" y="6" width="52" height="52" rx="13" fill="url(#b-wafer)"/>
|
<rect x="5" y="5" width="54" height="54" rx="14" fill="url(#b-wafer)"/>
|
||||||
<g clip-path="url(#b-clip)" fill="none" stroke-linecap="round">
|
<g clip-path="url(#b-clip)" fill="none" stroke-linecap="round">
|
||||||
<g stroke="#7A5C10" stroke-opacity="0.38" stroke-width="2">
|
<g stroke="#1F4019" stroke-opacity="0.30" stroke-width="1.8">
|
||||||
<path d="M32 6 V58"/>
|
<path d="M32 5 V59"/>
|
||||||
<path d="M6 32 H58"/>
|
<path d="M5 32 H59"/>
|
||||||
</g>
|
</g>
|
||||||
<g stroke="#F6E3A8" stroke-opacity="0.3" stroke-width="1">
|
<g stroke="#C7E7A6" stroke-opacity="0.20" stroke-width="0.9">
|
||||||
<path d="M33.2 6 V58"/>
|
<path d="M33.1 5 V59"/>
|
||||||
<path d="M6 33.2 H58"/>
|
<path d="M5 33.1 H59"/>
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
<rect x="7.1" y="7.1" width="49.8" height="49.8" rx="11.9"
|
<rect x="6.1" y="6.1" width="51.8" height="51.8" rx="12.9"
|
||||||
fill="none" stroke="#7A5C10" stroke-opacity="0.3" stroke-width="1.2"/>
|
fill="none" stroke="#1F4019" stroke-opacity="0.32" stroke-width="1.2"/>
|
||||||
<g>
|
<g>
|
||||||
<path d="M21.2 44.8 L17 49.4" stroke="#8A9AA8" stroke-width="3"
|
<path d="M21.4 45.6 L16.3 51.2" stroke="#8B9E86" stroke-width="3"
|
||||||
stroke-linecap="round" fill="none"/>
|
stroke-linecap="round" fill="none"/>
|
||||||
<path d="M20.5 45.5 C13.8 31.7 23.8 20.9 45.5 18.5 C49.8 35 39.8 45.8 20.5 45.5 Z" fill="url(#b-leaf)"/>
|
<path d="M21 46 C19.6 40.5 20.4 34.2 23.4 30.5 C27.5 25.5 35 20.5 46 18 C43.5 26.5 40.5 36.5 36.1 41.9 C33 45.6 26.5 47 21 46 Z" fill="url(#b-leaf)"/>
|
||||||
<path d="M20.5 45.5 C28 38 36 29 45.5 18.5" fill="none" stroke="#61758A" stroke-opacity="0.5"
|
<path d="M21 46 Q30.5 34.5 46 18" fill="none" stroke="#57734F" stroke-opacity="0.5"
|
||||||
stroke-width="1.5" stroke-linecap="round"/>
|
stroke-width="1.5" stroke-linecap="round"/>
|
||||||
<g fill="none" stroke="#61758A" stroke-opacity="0.32"
|
<g fill="none" stroke="#57734F" stroke-opacity="0.32"
|
||||||
stroke-width="1" stroke-linecap="round">
|
stroke-width="1" stroke-linecap="round">
|
||||||
<path d="M26.9 38.8 Q25.2 35.8 24.9 32.1"/>
|
<path d="M26.8 39.2 Q24.9 37.4 24.7 35.3"/>
|
||||||
<path d="M32.3 33.1 Q30.9 30.3 30.4 26.9"/>
|
<path d="M32.0 33.3 Q30.1 31.5 29.8 29.2"/>
|
||||||
<path d="M37.8 27.0 Q36.6 24.6 36.3 21.7"/>
|
<path d="M37.8 26.9 Q36.4 25.6 36.1 23.7"/>
|
||||||
<path d="M26.9 38.8 Q30.5 40.1 33.7 40.3"/>
|
<path d="M26.8 39.2 Q28.7 40.9 30.7 40.8"/>
|
||||||
<path d="M32.3 33.1 Q35.8 34.3 38.6 34.5"/>
|
<path d="M32.0 33.3 Q33.9 35.0 36.1 34.9"/>
|
||||||
<path d="M37.8 27.0 Q40.8 27.9 43.2 28.1"/>
|
<path d="M37.8 26.9 Q39.4 28.2 40.9 28.2"/>
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
<g transform="translate(470.08 232.00)">
|
<g transform="translate(470.08 232.00)">
|
||||||
<style>.base { fill: #EDE6D6; } .accent { fill: #E0B252; }</style>
|
<style>.base { fill: #EDE6D6; } .accent { fill: #9BCC5A; }</style>
|
||||||
<path class="accent" data-char="L" d="M4.67 -88.57 14.83 -87.33C15.24 -76.48 15.24 -61.52 15.24 -49.02V-42.98C15.24 -30.21 15.24 -14.83 14.83 -3.84L4.67 -2.61V0.00H65.91L67.56 -26.78H64.95L56.30 -3.43H29.93C29.52 -14.28 29.39 -29.93 29.39 -42.98V-49.02C29.39 -61.52 29.52 -76.48 29.93 -87.33L39.96 -88.57V-91.18H4.67Z"/>
|
<path class="accent" data-char="L" d="M4.67 -88.57 14.83 -87.33C15.24 -76.48 15.24 -61.52 15.24 -49.02V-42.98C15.24 -30.21 15.24 -14.83 14.83 -3.84L4.67 -2.61V0.00H65.91L67.56 -26.78H64.95L56.30 -3.43H29.93C29.52 -14.28 29.39 -29.93 29.39 -42.98V-49.02C29.39 -61.52 29.52 -76.48 29.93 -87.33L39.96 -88.57V-91.18H4.67Z"/>
|
||||||
<path class="accent" data-char="L" d="M75.52 -88.57 85.68 -87.33C86.10 -76.48 86.10 -61.52 86.10 -49.02V-42.98C86.10 -30.21 86.10 -14.83 85.68 -3.84L75.52 -2.61V0.00H136.76L138.41 -26.78H135.80L127.15 -3.43H100.79C100.38 -14.28 100.24 -29.93 100.24 -42.98V-49.02C100.24 -61.52 100.38 -76.48 100.79 -87.33L110.81 -88.57V-91.18H75.52Z"/>
|
<path class="accent" data-char="L" d="M75.52 -88.57 85.68 -87.33C86.10 -76.48 86.10 -61.52 86.10 -49.02V-42.98C86.10 -30.21 86.10 -14.83 85.68 -3.84L75.52 -2.61V0.00H136.76L138.41 -26.78H135.80L127.15 -3.43H100.79C100.38 -14.28 100.24 -29.93 100.24 -42.98V-49.02C100.24 -61.52 100.38 -76.48 100.79 -87.33L110.81 -88.57V-91.18H75.52Z"/>
|
||||||
<path class="base" data-char="e" d="M175.76 -60.97C182.76 -60.97 187.43 -55.47 187.43 -45.18C187.43 -39.13 185.37 -37.07 179.06 -37.07H161.07C162.03 -54.65 168.76 -60.97 175.76 -60.97ZM175.90 1.79C186.20 1.79 194.85 -2.88 199.79 -13.46L197.87 -14.83C193.75 -9.75 188.39 -6.45 180.98 -6.45C169.44 -6.45 160.93 -16.20 160.93 -32.82V-33.92H198.69C199.24 -35.84 199.52 -37.49 199.52 -40.51C199.52 -54.79 189.63 -64.26 175.62 -64.26C160.38 -64.26 146.93 -51.49 146.93 -30.07C146.93 -9.89 159.70 1.79 175.90 1.79Z"/>
|
<path class="base" data-char="e" d="M175.76 -60.97C182.76 -60.97 187.43 -55.47 187.43 -45.18C187.43 -39.13 185.37 -37.07 179.06 -37.07H161.07C162.03 -54.65 168.76 -60.97 175.76 -60.97ZM175.90 1.79C186.20 1.79 194.85 -2.88 199.79 -13.46L197.87 -14.83C193.75 -9.75 188.39 -6.45 180.98 -6.45C169.44 -6.45 160.93 -16.20 160.93 -32.82V-33.92H198.69C199.24 -35.84 199.52 -37.49 199.52 -40.51C199.52 -54.79 189.63 -64.26 175.62 -64.26C160.38 -64.26 146.93 -51.49 146.93 -30.07C146.93 -9.89 159.70 1.79 175.90 1.79Z"/>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB |
@@ -3,25 +3,25 @@
|
|||||||
<title>LLeMbas</title>
|
<title>LLeMbas</title>
|
||||||
<defs>
|
<defs>
|
||||||
<linearGradient id="f-wafer" x1="0" y1="0" x2="0.3" y2="1">
|
<linearGradient id="f-wafer" x1="0" y1="0" x2="0.3" y2="1">
|
||||||
<stop offset="0" stop-color="#EACB74"/>
|
<stop offset="0" stop-color="#7FB758"/>
|
||||||
<stop offset="0.5" stop-color="#C9A227"/>
|
<stop offset="0.5" stop-color="#4C8C33"/>
|
||||||
<stop offset="1" stop-color="#916F13"/>
|
<stop offset="1" stop-color="#2A5522"/>
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<linearGradient id="f-leaf" x1="0.1" y1="1" x2="0.9" y2="0">
|
<linearGradient id="f-leaf" x1="0.1" y1="1" x2="0.9" y2="0">
|
||||||
<stop offset="0" stop-color="#93A5B6"/>
|
<stop offset="0" stop-color="#9DB49A"/>
|
||||||
<stop offset="0.4" stop-color="#F1F6FA"/>
|
<stop offset="0.4" stop-color="#F3F8EE"/>
|
||||||
<stop offset="1" stop-color="#B8C7D5"/>
|
<stop offset="1" stop-color="#C6D8BE"/>
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<clipPath id="f-clip">
|
<clipPath id="f-clip">
|
||||||
<rect x="6" y="6" width="52" height="52" rx="13"/>
|
<rect x="5" y="5" width="54" height="54" rx="14"/>
|
||||||
</clipPath>
|
</clipPath>
|
||||||
</defs>
|
</defs>
|
||||||
<rect x="2" y="2" width="60" height="60" rx="14" fill="url(#f-wafer)"/>
|
<rect x="1" y="1" width="62" height="62" rx="15" fill="url(#f-wafer)"/>
|
||||||
<g transform="translate(32 32) scale(1.16) translate(-32 -32)">
|
<g transform="translate(32 32) scale(1.1) translate(-32 -32)">
|
||||||
<path d="M20.6 44.6 L15.6 50.1" stroke="#8A9AA8" stroke-width="3.4"
|
<path d="M21.4 45.6 L16.3 51.2" stroke="#8B9E86" stroke-width="3.4"
|
||||||
stroke-linecap="round" fill="none"/>
|
stroke-linecap="round" fill="none"/>
|
||||||
<path d="M20.5 45.5 C13.8 31.7 23.8 20.9 45.5 18.5 C49.8 35 39.8 45.8 20.5 45.5 Z" fill="url(#f-leaf)"/>
|
<path d="M21 46 C19.6 40.5 20.4 34.2 23.4 30.5 C27.5 25.5 35 20.5 46 18 C43.5 26.5 40.5 36.5 36.1 41.9 C33 45.6 26.5 47 21 46 Z" fill="url(#f-leaf)"/>
|
||||||
<path d="M20.5 45.5 C28 38 36 29 45.5 18.5" fill="none" stroke="#61758A" stroke-opacity="0.45"
|
<path d="M21 46 Q30.5 34.5 46 18" fill="none" stroke="#57734F" stroke-opacity="0.45"
|
||||||
stroke-width="1.8" stroke-linecap="round"/>
|
stroke-width="1.8" stroke-linecap="round"/>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 62 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
@@ -1,49 +1,49 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="64" height="64"
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="64" height="64"
|
||||||
role="img" aria-label="LLeMbas">
|
role="img" aria-label="LLeMbas">
|
||||||
<title>LLeMbas</title>
|
<title>LLeMbas</title>
|
||||||
<desc>A silver mallorn leaf laid across a scored golden lembas wafer.</desc>
|
<desc>A pale mallorn leaf laid across a scored green lembas wafer.</desc>
|
||||||
<defs>
|
<defs>
|
||||||
<linearGradient id="m-wafer" x1="0" y1="0" x2="0.3" y2="1">
|
<linearGradient id="m-wafer" x1="0" y1="0" x2="0.3" y2="1">
|
||||||
<stop offset="0" stop-color="#EACB74"/>
|
<stop offset="0" stop-color="#7FB758"/>
|
||||||
<stop offset="0.5" stop-color="#C9A227"/>
|
<stop offset="0.5" stop-color="#4C8C33"/>
|
||||||
<stop offset="1" stop-color="#916F13"/>
|
<stop offset="1" stop-color="#2A5522"/>
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<linearGradient id="m-leaf" x1="0.1" y1="1" x2="0.9" y2="0">
|
<linearGradient id="m-leaf" x1="0.1" y1="1" x2="0.9" y2="0">
|
||||||
<stop offset="0" stop-color="#93A5B6"/>
|
<stop offset="0" stop-color="#9DB49A"/>
|
||||||
<stop offset="0.4" stop-color="#F1F6FA"/>
|
<stop offset="0.4" stop-color="#F3F8EE"/>
|
||||||
<stop offset="1" stop-color="#B8C7D5"/>
|
<stop offset="1" stop-color="#C6D8BE"/>
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<clipPath id="m-clip">
|
<clipPath id="m-clip">
|
||||||
<rect x="6" y="6" width="52" height="52" rx="13"/>
|
<rect x="5" y="5" width="54" height="54" rx="14"/>
|
||||||
</clipPath>
|
</clipPath>
|
||||||
</defs>
|
</defs>
|
||||||
<rect x="6" y="6" width="52" height="52" rx="13" fill="url(#m-wafer)"/>
|
<rect x="5" y="5" width="54" height="54" rx="14" fill="url(#m-wafer)"/>
|
||||||
<g clip-path="url(#m-clip)" fill="none" stroke-linecap="round">
|
<g clip-path="url(#m-clip)" fill="none" stroke-linecap="round">
|
||||||
<g stroke="#7A5C10" stroke-opacity="0.38" stroke-width="2">
|
<g stroke="#1F4019" stroke-opacity="0.30" stroke-width="1.8">
|
||||||
<path d="M32 6 V58"/>
|
<path d="M32 5 V59"/>
|
||||||
<path d="M6 32 H58"/>
|
<path d="M5 32 H59"/>
|
||||||
</g>
|
</g>
|
||||||
<g stroke="#F6E3A8" stroke-opacity="0.3" stroke-width="1">
|
<g stroke="#C7E7A6" stroke-opacity="0.20" stroke-width="0.9">
|
||||||
<path d="M33.2 6 V58"/>
|
<path d="M33.1 5 V59"/>
|
||||||
<path d="M6 33.2 H58"/>
|
<path d="M5 33.1 H59"/>
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
<rect x="7.1" y="7.1" width="49.8" height="49.8" rx="11.9"
|
<rect x="6.1" y="6.1" width="51.8" height="51.8" rx="12.9"
|
||||||
fill="none" stroke="#7A5C10" stroke-opacity="0.3" stroke-width="1.2"/>
|
fill="none" stroke="#1F4019" stroke-opacity="0.32" stroke-width="1.2"/>
|
||||||
<g>
|
<g>
|
||||||
<path d="M21.2 44.8 L17 49.4" stroke="#8A9AA8" stroke-width="3"
|
<path d="M21.4 45.6 L16.3 51.2" stroke="#8B9E86" stroke-width="3"
|
||||||
stroke-linecap="round" fill="none"/>
|
stroke-linecap="round" fill="none"/>
|
||||||
<path d="M20.5 45.5 C13.8 31.7 23.8 20.9 45.5 18.5 C49.8 35 39.8 45.8 20.5 45.5 Z" fill="url(#m-leaf)"/>
|
<path d="M21 46 C19.6 40.5 20.4 34.2 23.4 30.5 C27.5 25.5 35 20.5 46 18 C43.5 26.5 40.5 36.5 36.1 41.9 C33 45.6 26.5 47 21 46 Z" fill="url(#m-leaf)"/>
|
||||||
<path d="M20.5 45.5 C28 38 36 29 45.5 18.5" fill="none" stroke="#61758A" stroke-opacity="0.5"
|
<path d="M21 46 Q30.5 34.5 46 18" fill="none" stroke="#57734F" stroke-opacity="0.5"
|
||||||
stroke-width="1.5" stroke-linecap="round"/>
|
stroke-width="1.5" stroke-linecap="round"/>
|
||||||
<g fill="none" stroke="#61758A" stroke-opacity="0.32"
|
<g fill="none" stroke="#57734F" stroke-opacity="0.32"
|
||||||
stroke-width="1" stroke-linecap="round">
|
stroke-width="1" stroke-linecap="round">
|
||||||
<path d="M26.9 38.8 Q25.2 35.8 24.9 32.1"/>
|
<path d="M26.8 39.2 Q24.9 37.4 24.7 35.3"/>
|
||||||
<path d="M32.3 33.1 Q30.9 30.3 30.4 26.9"/>
|
<path d="M32.0 33.3 Q30.1 31.5 29.8 29.2"/>
|
||||||
<path d="M37.8 27.0 Q36.6 24.6 36.3 21.7"/>
|
<path d="M37.8 26.9 Q36.4 25.6 36.1 23.7"/>
|
||||||
<path d="M26.9 38.8 Q30.5 40.1 33.7 40.3"/>
|
<path d="M26.8 39.2 Q28.7 40.9 30.7 40.8"/>
|
||||||
<path d="M32.3 33.1 Q35.8 34.3 38.6 34.5"/>
|
<path d="M32.0 33.3 Q33.9 35.0 36.1 34.9"/>
|
||||||
<path d="M37.8 27.0 Q40.8 27.9 43.2 28.1"/>
|
<path d="M37.8 26.9 Q39.4 28.2 40.9 28.2"/>
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
@@ -20,33 +20,34 @@
|
|||||||
<svg class="{{ cls }}" viewBox="0 0 64 64" role="img" aria-label="LLeMbas">
|
<svg class="{{ cls }}" viewBox="0 0 64 64" role="img" aria-label="LLeMbas">
|
||||||
<defs>
|
<defs>
|
||||||
<linearGradient id="mk-{{ uid }}-w" x1="0" y1="0" x2="0.3" y2="1">
|
<linearGradient id="mk-{{ uid }}-w" x1="0" y1="0" x2="0.3" y2="1">
|
||||||
<stop offset="0" stop-color="#EACB74"/>
|
<stop offset="0" stop-color="#7FB758"/>
|
||||||
<stop offset="0.5" stop-color="#C9A227"/>
|
<stop offset="0.5" stop-color="#4C8C33"/>
|
||||||
<stop offset="1" stop-color="#916F13"/>
|
<stop offset="1" stop-color="#2A5522"/>
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<linearGradient id="mk-{{ uid }}-l" x1="0.1" y1="1" x2="0.9" y2="0">
|
<linearGradient id="mk-{{ uid }}-l" x1="0.1" y1="1" x2="0.9" y2="0">
|
||||||
<stop offset="0" stop-color="#93A5B6"/>
|
<stop offset="0" stop-color="#9DB49A"/>
|
||||||
<stop offset="0.4" stop-color="#F1F6FA"/>
|
<stop offset="0.4" stop-color="#F3F8EE"/>
|
||||||
<stop offset="1" stop-color="#B8C7D5"/>
|
<stop offset="1" stop-color="#C6D8BE"/>
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<clipPath id="mk-{{ uid }}-c"><rect x="6" y="6" width="52" height="52" rx="13"/></clipPath>
|
<clipPath id="mk-{{ uid }}-c"><rect x="5" y="5" width="54" height="54" rx="14"/></clipPath>
|
||||||
</defs>
|
</defs>
|
||||||
<rect x="6" y="6" width="52" height="52" rx="13" fill="url(#mk-{{ uid }}-w)"/>
|
<rect x="5" y="5" width="54" height="54" rx="14" fill="url(#mk-{{ uid }}-w)"/>
|
||||||
<g clip-path="url(#mk-{{ uid }}-c)" fill="none" stroke-linecap="round">
|
<g clip-path="url(#mk-{{ uid }}-c)" fill="none" stroke-linecap="round">
|
||||||
<g stroke="#7A5C10" stroke-opacity="0.38" stroke-width="2">
|
<g stroke="#1F4019" stroke-opacity="0.30" stroke-width="1.8">
|
||||||
<path d="M32 6 V58"/><path d="M6 32 H58"/>
|
<path d="M32 5 V59"/><path d="M5 32 H59"/>
|
||||||
</g>
|
</g>
|
||||||
<g stroke="#F6E3A8" stroke-opacity="0.3" stroke-width="1">
|
<g stroke="#C7E7A6" stroke-opacity="0.20" stroke-width="0.9">
|
||||||
<path d="M33.2 6 V58"/><path d="M6 33.2 H58"/>
|
<path d="M33.1 5 V59"/><path d="M5 33.1 H59"/>
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
<rect x="7.1" y="7.1" width="49.8" height="49.8" rx="11.9" fill="none"
|
<rect x="6.1" y="6.1" width="51.8" height="51.8" rx="12.9" fill="none"
|
||||||
stroke="#7A5C10" stroke-opacity="0.3" stroke-width="1.2"/>
|
stroke="#1F4019" stroke-opacity="0.32" stroke-width="1.2"/>
|
||||||
<path d="M21.2 44.8 L17 49.4" stroke="#8A9AA8" stroke-width="3"
|
<path d="M21.4 45.6 L16.3 51.2" stroke="#8B9E86" stroke-width="3"
|
||||||
stroke-linecap="round" fill="none"/>
|
stroke-linecap="round" fill="none"/>
|
||||||
<path d="M20.5 45.5 C13.8 31.7 23.8 20.9 45.5 18.5 C49.8 35 39.8 45.8 20.5 45.5 Z"
|
<path d="M21 46 C19.6 40.5 20.4 34.2 23.4 30.5 C27.5 25.5 35 20.5 46 18
|
||||||
|
C43.5 26.5 40.5 36.5 36.1 41.9 C33 45.6 26.5 47 21 46 Z"
|
||||||
fill="url(#mk-{{ uid }}-l)"/>
|
fill="url(#mk-{{ uid }}-l)"/>
|
||||||
<path d="M20.5 45.5 C28 38 36 29 45.5 18.5" fill="none" stroke="#61758A"
|
<path d="M21 46 Q30.5 34.5 46 18" fill="none" stroke="#57734F"
|
||||||
stroke-opacity="0.5" stroke-width="1.5" stroke-linecap="round"/>
|
stroke-opacity="0.5" stroke-width="1.5" stroke-linecap="round"/>
|
||||||
</svg>
|
</svg>
|
||||||
{%- endmacro %}
|
{%- endmacro %}
|
||||||
@@ -54,7 +55,7 @@
|
|||||||
{#
|
{#
|
||||||
The wordmark as live text rather than the outlined SVG: it stays selectable,
|
The wordmark as live text rather than the outlined SVG: it stays selectable,
|
||||||
searchable and readable to a screen reader, and scales with the user's font
|
searchable and readable to a screen reader, and scales with the user's font
|
||||||
size. The capitals spelling LLM take the gold accent.
|
size. The capitals spelling LLM take the leaf accent.
|
||||||
#}
|
#}
|
||||||
{% macro wordmark() -%}
|
{% macro wordmark() -%}
|
||||||
<span class="brand-llm">LL</span>e<span class="brand-llm">M</span>bas
|
<span class="brand-llm">LL</span>e<span class="brand-llm">M</span>bas
|
||||||
|
|||||||
@@ -38,7 +38,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="btn-row">
|
<div class="btn-row">
|
||||||
{% if model.model_id == default_model %}
|
{% if model.model_id == default_model %}
|
||||||
<span class="badge badge--gold">{{ icon("star", "icon--sm") }} default model</span>
|
<span class="badge badge--leaf">{{ icon("star", "icon--sm") }} default model</span>
|
||||||
{% else %}
|
{% else %}
|
||||||
<form method="post" action="/admin/models/{{ model.id }}/default">
|
<form method="post" action="/admin/models/{{ model.id }}/default">
|
||||||
<button class="btn btn--sm" type="submit">
|
<button class="btn btn--sm" type="submit">
|
||||||
|
|||||||
@@ -92,13 +92,13 @@
|
|||||||
<div class="model-row__title">
|
<div class="model-row__title">
|
||||||
<a class="model-row__name" href="/admin/models/{{ model.id }}/edit">{{ model.label }}</a>
|
<a class="model-row__name" href="/admin/models/{{ model.id }}/edit">{{ model.label }}</a>
|
||||||
{% if model.model_id == default_model %}
|
{% if model.model_id == default_model %}
|
||||||
<span class="badge badge--gold">default</span>
|
<span class="badge badge--leaf">default</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if model.pinned %}<span class="badge">pinned</span>{% endif %}
|
{% if model.pinned %}<span class="badge">pinned</span>{% endif %}
|
||||||
{% if not model.enabled %}<span class="badge badge--danger">disabled</span>{% endif %}
|
{% if not model.enabled %}<span class="badge badge--danger">disabled</span>{% endif %}
|
||||||
{% if not model.public %}<span class="badge">restricted</span>{% endif %}
|
{% if not model.public %}<span class="badge">restricted</span>{% endif %}
|
||||||
{% for name, on in (model.capabilities_json or {}).items() %}
|
{% for name, on in (model.capabilities_json or {}).items() %}
|
||||||
{% if on %}<span class="badge badge--gold">{{ name }}</span>{% endif %}
|
{% if on %}<span class="badge badge--leaf">{{ name }}</span>{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
<code class="model-row__id">{{ model.model_id }} · {{ model.connection.name }}</code>
|
<code class="model-row__id">{{ model.model_id }} · {{ model.connection.name }}</code>
|
||||||
|
|||||||
@@ -68,7 +68,7 @@
|
|||||||
<span class="status-dot {{ 'is-ok' if account.active else 'is-off' }}"></span>
|
<span class="status-dot {{ 'is-ok' if account.active else 'is-off' }}"></span>
|
||||||
<strong class="truncate">{{ account.name }}</strong>
|
<strong class="truncate">{{ account.name }}</strong>
|
||||||
<code class="text-xs faint">{{ account.email }}</code>
|
<code class="text-xs faint">{{ account.email }}</code>
|
||||||
{% if account.is_admin %}<span class="badge badge--gold">admin</span>{% endif %}
|
{% if account.is_admin %}<span class="badge badge--leaf">admin</span>{% endif %}
|
||||||
{% if not account.active %}<span class="badge badge--danger">deactivated</span>{% endif %}
|
{% if not account.active %}<span class="badge badge--danger">deactivated</span>{% endif %}
|
||||||
{% if account.id == user.id %}<span class="badge">you</span>{% endif %}
|
{% if account.id == user.id %}<span class="badge">you</span>{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
<h2 class="card__title">
|
<h2 class="card__title">
|
||||||
Shared with
|
Shared with
|
||||||
{% if shared_users or shared_groups %}
|
{% if shared_users or shared_groups %}
|
||||||
<span class="badge badge--gold">{{ shared_users|length + shared_groups|length }}</span>
|
<span class="badge badge--leaf">{{ shared_users|length + shared_groups|length }}</span>
|
||||||
{% else %}
|
{% else %}
|
||||||
<span class="badge">nobody</span>
|
<span class="badge">nobody</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|||||||
@@ -44,7 +44,7 @@
|
|||||||
<div class="text-xs faint">{{ note.body[:160] }}{{ "…" if note.body|length > 160 }}</div>
|
<div class="text-xs faint">{{ note.body[:160] }}{{ "…" if note.body|length > 160 }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="btn-row">
|
<div class="btn-row">
|
||||||
{% if note.author == "model" %}<span class="badge badge--gold">written by a model</span>{% endif %}
|
{% if note.author == "model" %}<span class="badge badge--leaf">written by a model</span>{% endif %}
|
||||||
{% if note.owner_id != user.id %}<span class="badge">shared</span>{% endif %}
|
{% if note.owner_id != user.id %}<span class="badge">shared</span>{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
|
|||||||
@@ -103,7 +103,7 @@
|
|||||||
<div style="min-width: 0">
|
<div style="min-width: 0">
|
||||||
<strong>{{ revision.created_at.strftime("%Y-%m-%d %H:%M") }}</strong>
|
<strong>{{ revision.created_at.strftime("%Y-%m-%d %H:%M") }}</strong>
|
||||||
{% if revision.author == "model" %}
|
{% if revision.author == "model" %}
|
||||||
<span class="badge badge--gold">model</span>
|
<span class="badge badge--leaf">model</span>
|
||||||
{% else %}
|
{% else %}
|
||||||
<span class="badge">you</span>
|
<span class="badge">you</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|||||||
@@ -46,7 +46,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="btn-row">
|
<div class="btn-row">
|
||||||
{% if not skill.enabled %}<span class="badge">off</span>{% endif %}
|
{% if not skill.enabled %}<span class="badge">off</span>{% endif %}
|
||||||
{% if skill.author == "model" %}<span class="badge badge--gold">written by a model</span>{% endif %}
|
{% if skill.author == "model" %}<span class="badge badge--leaf">written by a model</span>{% endif %}
|
||||||
{% if skill.owner_id != user.id %}<span class="badge">shared</span>{% endif %}
|
{% if skill.owner_id != user.id %}<span class="badge">shared</span>{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
|
|||||||
@@ -80,7 +80,7 @@
|
|||||||
<a class="nav-item" href="/settings">
|
<a class="nav-item" href="/settings">
|
||||||
{{ icon("user", "icon--sm") }}
|
{{ icon("user", "icon--sm") }}
|
||||||
<span class="nav-item__label">{{ user.name }}</span>
|
<span class="nav-item__label">{{ user.name }}</span>
|
||||||
{% if user.is_admin %}<span class="badge badge--gold">admin</span>{% endif %}
|
{% if user.is_admin %}<span class="badge badge--leaf">admin</span>{% endif %}
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<div class="sidebar__tools">
|
<div class="sidebar__tools">
|
||||||
|
|||||||
@@ -70,7 +70,7 @@
|
|||||||
<dt>Name</dt><dd>{{ user.name }}</dd>
|
<dt>Name</dt><dd>{{ user.name }}</dd>
|
||||||
<dt>Email</dt><dd class="mono">{{ user.email }}</dd>
|
<dt>Email</dt><dd class="mono">{{ user.email }}</dd>
|
||||||
<dt>Role</dt>
|
<dt>Role</dt>
|
||||||
<dd><span class="badge {{ 'badge--gold' if user.is_admin }}">{{ user.role }}</span></dd>
|
<dd><span class="badge {{ 'badge--leaf' if user.is_admin }}">{{ user.role }}</span></dd>
|
||||||
<dt>Groups</dt>
|
<dt>Groups</dt>
|
||||||
<dd>
|
<dd>
|
||||||
{% if user.groups %}
|
{% if user.groups %}
|
||||||
@@ -149,7 +149,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="btn-row">
|
<div class="btn-row">
|
||||||
{% for name, on in (model.capabilities_json or {}).items() %}
|
{% for name, on in (model.capabilities_json or {}).items() %}
|
||||||
{% if on %}<span class="badge badge--gold">{{ name }}</span>{% endif %}
|
{% if on %}<span class="badge badge--leaf">{{ name }}</span>{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% if model.pinned %}<span class="badge">pinned</span>{% endif %}
|
{% if model.pinned %}<span class="badge">pinned</span>{% endif %}
|
||||||
</div>
|
</div>
|
||||||
@@ -312,7 +312,7 @@
|
|||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
{% if memory.author == "model" %}
|
{% if memory.author == "model" %}
|
||||||
<span class="badge badge--gold">remembered</span>
|
<span class="badge badge--leaf">remembered</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</li>
|
</li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|||||||