Farola: la luz en campana que llega al suelo y se abre en un charco; propuestas en docs/marca/propuestas

This commit is contained in:
hacklab 2026-10-14 14:48:05 +02:00
parent 0d163dfe36
commit d645ab270b
24 changed files with 93 additions and 79 deletions

View file

@ -257,7 +257,7 @@ Tres piezas, cada una con su uso:
![Hoja de marca](docs/marca/hoja.png)
- **Símbolo** (`docs/marca/simbolo*.svg`): una farola moderna dentro de un aro grueso, como un emblema de tienda de graffiti (en la línea del sello de Writers Madrid), con la luz en naranja, ondeando como las banderas del logo antifa. Plano y rotundo, para que se lea en un favicon, una pegatina o un avatar. Versiones: positivo, negativo, sobre naranja y pegatina (círculo naranja). Se genera con `python3 tools/farola.py docs/marca`.
- **Símbolo** (`docs/marca/simbolo*.svg`): una farola moderna dentro de un aro grueso, como un emblema de tienda de graffiti (en la línea del sello de Writers Madrid), con la luz en naranja: baja de la cabeza en forma de campana, llega al suelo y se abre en un charco con el centro más claro. Las otras propuestas (onda suave, onda marcada, campana con línea de suelo y la recta) están en `docs/marca/propuestas/`. Plano y rotundo, para que se lea en un favicon, una pegatina o un avatar. Versiones: positivo, negativo, sobre naranja y pegatina (círculo naranja). Se genera con `python3 tools/farola.py docs/marca`.
- **Logotipo** (`docs/marca/logotipo*.svg`): «TAKE THE STREET» en **Grindy Brush**, todo en negro (o en blanco sobre negro). Va convertido a trazados, así que no hace falta la fuente. Hay versión en una línea y en dos.
- **Firma**: símbolo + logotipo. Es lo que va arriba a la izquierda de la web.
- **Ilustración** (`docs/calle.svg`): la imagen principal de la portada, nunca en la cabecera. Ver el apartado 6.

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><defs><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath></defs><g clip-path="url(#c)"><path d="M57,33 H77 C82,46 85,55 85,62 C85,69 88,73 89,76 H41 C42,72 45,69 45,62 C45,54 51,45 57,33 Z" fill="#f45a1c"/><ellipse cx="65" cy="76" rx="24" ry="5.5" fill="#f45a1c"/><ellipse cx="65" cy="76" rx="14.9" ry="3.0" fill="#ffb03a"/></g><g clip-path="url(#c)"><path d="M37,96 V40 Q37,25 52,25 H60" fill="none" stroke="#111" stroke-width="8"/></g><rect x="55" y="21" width="27" height="11" rx="3" fill="#111"/><circle cx="50" cy="50" r="45" fill="none" stroke="#111" stroke-width="7"/></svg>

After

Width:  |  Height:  |  Size: 678 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><defs><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath></defs><g clip-path="url(#c)"><path d="M57,33 H77 C78,52 82,66 92,76 H38 C48,66 56,52 57,33 Z" fill="#f45a1c"/><ellipse cx="65" cy="76" rx="27" ry="5.5" fill="#f45a1c"/><ellipse cx="65" cy="76" rx="16.7" ry="3.0" fill="#ffb03a"/></g><g clip-path="url(#c)"><path d="M37,96 V40 Q37,25 52,25 H60" fill="none" stroke="#111" stroke-width="8"/></g><rect x="55" y="21" width="27" height="11" rx="3" fill="#111"/><circle cx="50" cy="50" r="45" fill="none" stroke="#111" stroke-width="7"/></svg>

After

Width:  |  Height:  |  Size: 640 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><defs><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath></defs><g clip-path="url(#c)"><path d="M57,33 H77 C86,42 80,52 86,61 C90,67 91,72 90,76 H40 C39,72 41,67 44,61 C48,52 44,42 57,33 Z" fill="#f45a1c"/><ellipse cx="65" cy="76" rx="25" ry="5.5" fill="#f45a1c"/><ellipse cx="65" cy="76" rx="15.5" ry="3.0" fill="#ffb03a"/></g><g clip-path="url(#c)"><path d="M37,96 V40 Q37,25 52,25 H60" fill="none" stroke="#111" stroke-width="8"/></g><rect x="55" y="21" width="27" height="11" rx="3" fill="#111"/><circle cx="50" cy="50" r="45" fill="none" stroke="#111" stroke-width="7"/></svg>

After

Width:  |  Height:  |  Size: 678 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><defs><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath></defs><g clip-path="url(#c)"><path d="M57,33 H77 C78,52 82,66 92,76 H38 C48,66 56,52 57,33 Z" fill="#f45a1c"/><ellipse cx="65" cy="76" rx="27" ry="5.5" fill="#f45a1c"/><ellipse cx="65" cy="76" rx="16.7" ry="3.0" fill="#ffb03a"/><path d="M8,84 H92" stroke="#111" stroke-width="3"/></g><g clip-path="url(#c)"><path d="M37,96 V40 Q37,25 52,25 H60" fill="none" stroke="#111" stroke-width="8"/></g><rect x="55" y="21" width="27" height="11" rx="3" fill="#111"/><circle cx="50" cy="50" r="45" fill="none" stroke="#111" stroke-width="7"/></svg>

After

Width:  |  Height:  |  Size: 692 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><defs><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath></defs><g clip-path="url(#c)"><path d="M57,33 H77 L98,92 H36 Z" fill="#f45a1c"/><ellipse cx="67" cy="86" rx="22" ry="5" fill="#111" opacity=".25"/></g><g clip-path="url(#c)"><path d="M37,96 V40 Q37,25 52,25 H60" fill="none" stroke="#111" stroke-width="8"/></g><rect x="55" y="21" width="27" height="11" rx="3" fill="#111"/><circle cx="50" cy="50" r="45" fill="none" stroke="#111" stroke-width="7"/></svg>

After

Width:  |  Height:  |  Size: 558 B

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><rect width="100" height="100" fill="#f04e23"/><defs><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath></defs><path d="M57,33 H77 C89.3,47.8 81.7,69.2 94,84 C76.7,79.0 59.3,89.0 42,84 C40.3,65.0 58.7,52.0 57,33 Z" fill="#fff" clip-path="url(#c)"/><g clip-path="url(#c)"><path d="M37,96 V40 Q37,25 52,25 H60" fill="none" stroke="#111" stroke-width="8"/></g><rect x="55" y="21" width="27" height="11" rx="3" fill="#111"/><circle cx="50" cy="50" r="45" fill="none" stroke="#111" stroke-width="7"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><rect width="100" height="100" fill="#f04e23"/><defs><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath></defs><g clip-path="url(#c)"><path d="M57,33 H77 C78,52 82,66 92,76 H38 C48,66 56,52 57,33 Z" fill="#fff"/><ellipse cx="65" cy="76" rx="27" ry="5.5" fill="#fff"/><ellipse cx="65" cy="76" rx="16.7" ry="3.0" fill="#ffe2a8"/></g><g clip-path="url(#c)"><path d="M37,96 V40 Q37,25 52,25 H60" fill="none" stroke="#111" stroke-width="8"/></g><rect x="55" y="21" width="27" height="11" rx="3" fill="#111"/><circle cx="50" cy="50" r="45" fill="none" stroke="#111" stroke-width="7"/></svg>

Before

Width:  |  Height:  |  Size: 598 B

After

Width:  |  Height:  |  Size: 681 B

Before After
Before After

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><rect width="100" height="100" fill="#111"/><defs><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath></defs><path d="M57,33 H77 C89.3,47.8 81.7,69.2 94,84 C76.7,79.0 59.3,89.0 42,84 C40.3,65.0 58.7,52.0 57,33 Z" fill="#f45a1c" clip-path="url(#c)"/><g clip-path="url(#c)"><path d="M37,96 V40 Q37,25 52,25 H60" fill="none" stroke="#fff" stroke-width="8"/></g><rect x="55" y="21" width="27" height="11" rx="3" fill="#fff"/><circle cx="50" cy="50" r="45" fill="none" stroke="#fff" stroke-width="7"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><rect width="100" height="100" fill="#111"/><defs><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath></defs><g clip-path="url(#c)"><path d="M57,33 H77 C78,52 82,66 92,76 H38 C48,66 56,52 57,33 Z" fill="#f45a1c"/><ellipse cx="65" cy="76" rx="27" ry="5.5" fill="#f45a1c"/><ellipse cx="65" cy="76" rx="16.7" ry="3.0" fill="#ffb03a"/></g><g clip-path="url(#c)"><path d="M37,96 V40 Q37,25 52,25 H60" fill="none" stroke="#fff" stroke-width="8"/></g><rect x="55" y="21" width="27" height="11" rx="3" fill="#fff"/><circle cx="50" cy="50" r="45" fill="none" stroke="#fff" stroke-width="7"/></svg>

Before

Width:  |  Height:  |  Size: 598 B

After

Width:  |  Height:  |  Size: 684 B

Before After
Before After

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><defs><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath></defs><path d="M57,33 H77 C89.3,47.8 81.7,69.2 94,84 C76.7,79.0 59.3,89.0 42,84 C40.3,65.0 58.7,52.0 57,33 Z" fill="#f45a1c" clip-path="url(#c)"/><g clip-path="url(#c)"><path d="M37,96 V40 Q37,25 52,25 H60" fill="none" stroke="#111" stroke-width="8"/></g><rect x="55" y="21" width="27" height="11" rx="3" fill="#111"/><circle cx="50" cy="50" r="45" fill="none" stroke="#111" stroke-width="7"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><defs><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath></defs><g clip-path="url(#c)"><path d="M57,33 H77 C78,52 82,66 92,76 H38 C48,66 56,52 57,33 Z" fill="#f45a1c"/><ellipse cx="65" cy="76" rx="27" ry="5.5" fill="#f45a1c"/><ellipse cx="65" cy="76" rx="16.7" ry="3.0" fill="#ffb03a"/></g><g clip-path="url(#c)"><path d="M37,96 V40 Q37,25 52,25 H60" fill="none" stroke="#111" stroke-width="8"/></g><rect x="55" y="21" width="27" height="11" rx="3" fill="#111"/><circle cx="50" cy="50" r="45" fill="none" stroke="#111" stroke-width="7"/></svg>

Before

Width:  |  Height:  |  Size: 554 B

After

Width:  |  Height:  |  Size: 640 B

Before After
Before After

File diff suppressed because one or more lines are too long

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><defs><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath></defs><path d="M57,33 H77 C89.3,47.8 81.7,69.2 94,84 C76.7,79.0 59.3,89.0 42,84 C40.3,65.0 58.7,52.0 57,33 Z" fill="#f45a1c" clip-path="url(#c)"/><g clip-path="url(#c)"><path d="M37,96 V40 Q37,25 52,25 H60" fill="none" stroke="#111" stroke-width="8"/></g><rect x="55" y="21" width="27" height="11" rx="3" fill="#111"/><circle cx="50" cy="50" r="45" fill="none" stroke="#111" stroke-width="7"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><defs><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath></defs><g clip-path="url(#c)"><path d="M57,33 H77 C78,52 82,66 92,76 H38 C48,66 56,52 57,33 Z" fill="#f45a1c"/><ellipse cx="65" cy="76" rx="27" ry="5.5" fill="#f45a1c"/><ellipse cx="65" cy="76" rx="16.7" ry="3.0" fill="#ffb03a"/></g><g clip-path="url(#c)"><path d="M37,96 V40 Q37,25 52,25 H60" fill="none" stroke="#111" stroke-width="8"/></g><rect x="55" y="21" width="27" height="11" rx="3" fill="#111"/><circle cx="50" cy="50" r="45" fill="none" stroke="#111" stroke-width="7"/></svg>

Before

Width:  |  Height:  |  Size: 554 B

After

Width:  |  Height:  |  Size: 640 B

Before After
Before After

File diff suppressed because one or more lines are too long

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><defs><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath></defs><path d="M57,33 H77 C89.3,47.8 81.7,69.2 94,84 C76.7,79.0 59.3,89.0 42,84 C40.3,65.0 58.7,52.0 57,33 Z" fill="#f45a1c" clip-path="url(#c)"/><g clip-path="url(#c)"><path d="M37,96 V40 Q37,25 52,25 H60" fill="none" stroke="#111" stroke-width="8"/></g><rect x="55" y="21" width="27" height="11" rx="3" fill="#111"/><circle cx="50" cy="50" r="45" fill="none" stroke="#111" stroke-width="7"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><defs><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath></defs><g clip-path="url(#c)"><path d="M57,33 H77 C78,52 82,66 92,76 H38 C48,66 56,52 57,33 Z" fill="#f45a1c"/><ellipse cx="65" cy="76" rx="27" ry="5.5" fill="#f45a1c"/><ellipse cx="65" cy="76" rx="16.7" ry="3.0" fill="#ffb03a"/></g><g clip-path="url(#c)"><path d="M37,96 V40 Q37,25 52,25 H60" fill="none" stroke="#111" stroke-width="8"/></g><rect x="55" y="21" width="27" height="11" rx="3" fill="#111"/><circle cx="50" cy="50" r="45" fill="none" stroke="#111" stroke-width="7"/></svg>

Before

Width:  |  Height:  |  Size: 554 B

After

Width:  |  Height:  |  Size: 640 B

Before After
Before After

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><defs><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath></defs><path d="M57,33 H77 C89.3,47.8 81.7,69.2 94,84 C76.7,79.0 59.3,89.0 42,84 C40.3,65.0 58.7,52.0 57,33 Z" fill="#f45a1c" clip-path="url(#c)"/><g clip-path="url(#c)"><path d="M37,96 V40 Q37,25 52,25 H60" fill="none" stroke="#111" stroke-width="8"/></g><rect x="55" y="21" width="27" height="11" rx="3" fill="#111"/><circle cx="50" cy="50" r="45" fill="none" stroke="#111" stroke-width="7"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><defs><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath></defs><g clip-path="url(#c)"><path d="M57,33 H77 C78,52 82,66 92,76 H38 C48,66 56,52 57,33 Z" fill="#f45a1c"/><ellipse cx="65" cy="76" rx="27" ry="5.5" fill="#f45a1c"/><ellipse cx="65" cy="76" rx="16.7" ry="3.0" fill="#ffb03a"/></g><g clip-path="url(#c)"><path d="M37,96 V40 Q37,25 52,25 H60" fill="none" stroke="#111" stroke-width="8"/></g><rect x="55" y="21" width="27" height="11" rx="3" fill="#111"/><circle cx="50" cy="50" r="45" fill="none" stroke="#111" stroke-width="7"/></svg>

Before

Width:  |  Height:  |  Size: 554 B

After

Width:  |  Height:  |  Size: 640 B

Before After
Before After

File diff suppressed because one or more lines are too long

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><defs><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath></defs><path d="M57,33 H77 C89.3,47.8 81.7,69.2 94,84 C76.7,79.0 59.3,89.0 42,84 C40.3,65.0 58.7,52.0 57,33 Z" fill="#f45a1c" clip-path="url(#c)"/><g clip-path="url(#c)"><path d="M37,96 V40 Q37,25 52,25 H60" fill="none" stroke="#111" stroke-width="8"/></g><rect x="55" y="21" width="27" height="11" rx="3" fill="#111"/><circle cx="50" cy="50" r="45" fill="none" stroke="#111" stroke-width="7"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><defs><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath></defs><g clip-path="url(#c)"><path d="M57,33 H77 C78,52 82,66 92,76 H38 C48,66 56,52 57,33 Z" fill="#f45a1c"/><ellipse cx="65" cy="76" rx="27" ry="5.5" fill="#f45a1c"/><ellipse cx="65" cy="76" rx="16.7" ry="3.0" fill="#ffb03a"/></g><g clip-path="url(#c)"><path d="M37,96 V40 Q37,25 52,25 H60" fill="none" stroke="#111" stroke-width="8"/></g><rect x="55" y="21" width="27" height="11" rx="3" fill="#111"/><circle cx="50" cy="50" r="45" fill="none" stroke="#111" stroke-width="7"/></svg>

Before

Width:  |  Height:  |  Size: 554 B

After

Width:  |  Height:  |  Size: 640 B

Before After
Before After

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,33 +1,36 @@
import sys
NAR, LUZ, INK, BL = "#f04e23", "#f45a1c", "#111", "#fff"
NAR, LUZ, CLARA, INK, BL = "#f04e23", "#f45a1c", "#ffb03a", "#111", "#fff"
def ctrl(a, b, amp):
(x0, y0), (x1, y1) = a, b
dx, dy = x1 - x0, y1 - y0
L = (dx * dx + dy * dy) ** .5
px, py = -dy / L * amp, dx / L * amp
return (x0 + dx / 3 + px, y0 + dy / 3 + py), (x0 + dx * 2 / 3 - px, y0 + dy * 2 / 3 - py)
# La luz baja de la cabeza, llega al suelo y se abre en un charco (naranja por fuera, claro en el centro).
CONOS = {
"recta": "M57,33 H77 L98,92 H36 Z",
"onda-suave": "M57,33 H77 C82,46 85,55 85,62 C85,69 88,73 89,76 H41 C42,72 45,69 45,62 C45,54 51,45 57,33 Z",
"campana": "M57,33 H77 C78,52 82,66 92,76 H38 C48,66 56,52 57,33 Z",
"onda": "M57,33 H77 C86,42 80,52 86,61 C90,67 91,72 90,76 H40 C39,72 41,67 44,61 C48,52 44,42 57,33 Z",
}
CHARCO = {"onda-suave": 24, "campana": 27, "onda": 25}
def c(p1, p2, fin):
return f"C{p1[0]:.1f},{p1[1]:.1f} {p2[0]:.1f},{p2[1]:.1f} {fin[0]},{fin[1]}"
def luz_(cono, luz, clara, ink, suelo=False):
out = f'<path d="{CONOS[cono]}" fill="{luz}"/>'
if cono in CHARCO:
rx, ry = CHARCO[cono], 5.5
out += (f'<ellipse cx="65" cy="76" rx="{rx}" ry="{ry}" fill="{luz}"/>'
f'<ellipse cx="65" cy="76" rx="{rx * .62:.1f}" ry="{ry * .55:.1f}" fill="{clara}"/>')
if cono == "recta":
out += f'<ellipse cx="67" cy="86" rx="22" ry="5" fill="{ink}" opacity=".25"/>'
if suelo:
out += f'<path d="M8,84 H92" stroke="{ink}" stroke-width="3"/>'
return out
def bandera(a, b, cc, d, amp, amp_b):
der = ctrl(b, cc, amp)
izq = ctrl(a, d, amp)
abajo = ctrl(cc, d, amp_b)
return (f"M{a[0]},{a[1]} H{b[0]} {c(der[0], der[1], cc)} {c(abajo[0], abajo[1], d)} "
f"{c(izq[1], izq[0], a)} Z")
def farola(estilo="aro", ink=INK, luz=LUZ, fondo=None, papel=BL):
def farola(estilo="aro", ink=INK, luz=LUZ, fondo=None, papel=BL, clara=CLARA, cono="campana", suelo=False):
bg = f'<rect width="100" height="100" fill="{fondo}"/>' if fondo else ""
if estilo == "aro":
defs = '<defs><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath></defs>'
cono = f'<path d="{bandera((57, 33), (77, 33), (94, 84), (42, 84), -7, 5)}" fill="{luz}" clip-path="url(#c)"/>'
suelo = ""
cono = f'<g clip-path="url(#c)">{luz_(cono, luz, clara, ink, suelo)}</g>'
poste = f'<path d="M37,96 V40 Q37,25 52,25 H60" fill="none" stroke="{ink}" stroke-width="8"/>'
cabeza = f'<rect x="55" y="21" width="27" height="11" rx="3" fill="{ink}"/>'
aro = f'<circle cx="50" cy="50" r="45" fill="none" stroke="{ink}" stroke-width="7"/>'
return defs + cono + suelo + f'<g clip-path="url(#c)">{poste}</g>' + cabeza + aro
return defs + cono + f'<g clip-path="url(#c)">{poste}</g>' + cabeza + aro
pegatina = f'<circle cx="50" cy="50" r="48" fill="{luz}"/>'
poste = f'<path d="M33,99 V38 Q33,22 49,22 H58" fill="none" stroke="{ink}" stroke-width="9"/>'
cabeza = f'<rect x="52" y="17" width="30" height="11" rx="3" fill="{ink}"/>'
@ -43,5 +46,11 @@ if __name__ == "__main__":
d = sys.argv[1]
open(f"{d}/simbolo.svg", "w").write(svg(farola()))
open(f"{d}/simbolo-negativo.svg", "w").write(svg(farola(ink=BL, papel=INK), INK))
open(f"{d}/simbolo-naranja.svg", "w").write(svg(farola(luz=BL, papel=NAR), NAR))
open(f"{d}/simbolo-naranja.svg", "w").write(svg(farola(luz=BL, papel=NAR, clara="#ffe2a8"), NAR))
open(f"{d}/simbolo-pegatina.svg", "w").write(svg(farola("pegatina")))
# Propuestas que no se usan, para tenerlas a mano
import os
os.makedirs(f"{d}/propuestas", exist_ok=True)
for n, (cono, suelo) in enumerate((("onda-suave", False), ("campana", False), ("onda", False), ("campana", True)), 1):
open(f"{d}/propuestas/farola-{n}-{cono}{'-suelo' if suelo else ''}.svg", "w").write(svg(farola(cono=cono, suelo=suelo)))
open(f"{d}/propuestas/farola-recta.svg", "w").write(svg(farola(cono="recta")))