Cinco ejes y un faro: Hogar, Emergencia climática, Rompiendo fronteras, Pueblos libres e Igualdad

- Techo pasa a Hogar, Tierra a Emergencia climática, Sin fronteras a
  Rompiendo fronteras y Paz a Pueblos libres («No a la guerra»), en las
  dos webs y los cinco idiomas.
- Igualdad deja de ser la franja de los feminismos y es una tarjeta más.
- Iconos nuevos pintados con spray: casa, planeta que gotea, valla
  abierta, cadena rota y signo igual (tools/ejes.py).
- El símbolo deja la farola por un faro con la luz amarilla: haz
  horizontal y ondas en círculo (tools/faro.py). Cambia en la cabecera,
  el favicon y el mapa. Fuera tools/farola.py y sus propuestas.
- Ideario y README al día.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
hacklab 2026-10-14 21:26:32 +02:00
parent a1700098b3
commit 879764b6a9
56 changed files with 492 additions and 399 deletions

View file

@ -4,7 +4,7 @@
![Una piña de gente de colores llena la calle](docs/calle.svg) ![Una piña de gente de colores llena la calle](docs/calle.svg)
**takethestreet.net / takethestreet.org**: red internacional de las acampadas que nacieron en la Puerta del Sol el 26 de septiembre de 2026 (26S). Empezaron por la vivienda y hoy juntan vivienda, ecologismo, antirracismo y antimilitarismo. Una calle, todas las luchas. **takethestreet.net / takethestreet.org**: red internacional de las acampadas que nacieron en la Puerta del Sol el 26 de septiembre de 2026 (26S). Empezaron por la vivienda y hoy juntan vivienda, ecologismo, antirracismo, antimilitarismo y feminismo. Una calle, todas las luchas.
Este repo tiene el plan de comunicación, el plan del deck internacional (`deck.takethestreet.net`) y una maqueta. Todavía no hay nada publicado. Este repo tiene el plan de comunicación, el plan del deck internacional (`deck.takethestreet.net`) y una maqueta. Todavía no hay nada publicado.
@ -35,7 +35,7 @@ Ya existe una red europea, la **European Action Coalition for the Right to Housi
## 2. Plan de comunicación ## 2. Plan de comunicación
1. **Marco común**: *Take the street. Una calle, todas las luchas.* Cuatro ejes: *Techo*, *Tierra*, *Sin fronteras* y *Paz* (ver el ideario). En *Techo*: congelar alquileres, parar los desahucios y recuperar la vivienda de los fondos y la que está vacía. Cada ciudad mantiene sus propias demandas: la LAU, la Lei do Arrendamento, la ley 431/98, residencias públicas… 1. **Marco común**: *Take the street. Una calle, todas las luchas.* Cinco ejes: *Hogar*, *Emergencia climática*, *Rompiendo fronteras*, *Pueblos libres* e *Igualdad* (ver el ideario). En *Hogar*: congelar alquileres, parar los desahucios y recuperar la vivienda de los fondos y la que está vacía. Cada ciudad mantiene sus propias demandas: la LAU, la Lei do Arrendamento, la ley 431/98, residencias públicas…
2. **Etiqueta paraguas**: `#takethestreet`, además de la de cada lugar (`#26s`, `#acampadaporto`…). Cada nodo publica en su idioma. 2. **Etiqueta paraguas**: `#takethestreet`, además de la de cada lugar (`#26s`, `#acampadaporto`…). Cada nodo publica en su idioma.
3. **Calendario**: 15/10 Roma → 17/10 Estados Unidos → 19/10 Italia → 11/11 huelga general en España. 3. **Calendario**: 15/10 Roma → 17/10 Estados Unidos → 19/10 Italia → 11/11 huelga general en España.
4. **Primer contacto**: mensaje privado o correo a Acampada Porto, *Não dá mais para viver assim*, Cambiare Rotta, Asia-USB, los CAU, DAL y la European Action Coalition. Una carta corta en ES, EN, PT, IT y FR que diga quiénes somos (Sol 26S), qué proponemos (etiqueta y deck común) y qué pedimos (sus redes y una persona de enlace de comunicación). 4. **Primer contacto**: mensaje privado o correo a Acampada Porto, *Não dá mais para viver assim*, Cambiare Rotta, Asia-USB, los CAU, DAL y la European Action Coalition. Una carta corta en ES, EN, PT, IT y FR que diga quiénes somos (Sol 26S), qué proponemos (etiqueta y deck común) y qué pedimos (sus redes y una persona de enlace de comunicación).
@ -44,7 +44,7 @@ Ya existe una red europea, la **European Action Coalition for the Right to Housi
## Ideario ## Ideario
Borrador para la asamblea en [`docs/ideario.md`](docs/ideario.md). Propuesta: **«Una calle, todas las luchas»**, con cuatro ejes: *Techo* (vivienda), *Tierra* (ecologismo), *Sin fronteras* (antirracismo) y *Paz* (antimilitarismo, con Palestina). Los feminismos atraviesan los cuatro. Lemas en ES, EN, PT, IT y FR. Borrador para la asamblea en [`docs/ideario.md`](docs/ideario.md). Propuesta: **«Una calle, todas las luchas»**, con cinco ejes: *Hogar* (vivienda), *Emergencia climática* (ecologismo), *Rompiendo fronteras* (antirracismo), *Pueblos libres* (no a la guerra, con Palestina) e *Igualdad* (feminismos). Los feminismos atraviesan los cuatro. Lemas en ES, EN, PT, IT y FR.
### La web: takethestreet.net ### La web: takethestreet.net
@ -52,11 +52,11 @@ Borrador para la asamblea en [`docs/ideario.md`](docs/ideario.md). Propuesta: **
`sites/` tiene dos webs con el mismo diseño: `takethestreet/` (takethestreet.net, internacional) y `tomalacalle/` (tomalacalle.net, estatal). HTML y CSS, sin JavaScript, igual que acampada26s.net. El deck va aparte, en `deck.takethestreet.net`. La portada cuenta el ideario de arriba abajo: `sites/` tiene dos webs con el mismo diseño: `takethestreet/` (takethestreet.net, internacional) y `tomalacalle/` (tomalacalle.net, estatal). HTML y CSS, sin JavaScript, igual que acampada26s.net. El deck va aparte, en `deck.takethestreet.net`. La portada cuenta el ideario de arriba abajo:
1. **Cabecera** en una línea: la farola a la izquierda, el logotipo en el centro como título (sin lema) y los idiomas a la derecha. 1. **Cabecera** en una línea: el faro a la izquierda, el logotipo en el centro como título (sin lema) y los idiomas a la derecha.
2. **Dibujo** (el boceto 5, el cruce) y tres botones: Encuentra tu acampada (al mapa), Síguelas (al panel) y Monta una en tu ciudad (a cómo nos organizamos y el contacto). En móvil van en columna y a todo lo ancho. 2. **Dibujo** (el boceto 5, el cruce) y tres botones: Encuentra tu acampada (al mapa), Síguelas (al panel) y Monta una en tu ciudad (a cómo nos organizamos y el contacto). En móvil van en columna y a todo lo ancho.
3. **Síguelas**: un panel como el del deck, con el árbol de colectivos, una columna por acampada con sus cuentas de verdad y un mapa. Internacional en takethestreet.net y estatal en tomalacalle.net. En móvil va una acampada por fila. 3. **Síguelas**: un panel como el del deck, con el árbol de colectivos, una columna por acampada con sus cuentas de verdad y un mapa. Internacional en takethestreet.net y estatal en tomalacalle.net. En móvil va una acampada por fila.
4. **Dónde estamos**: cifras (ciudades, países, desde el 26/09) y un mapa que se mueve y se amplía: Leaflet 1.9.4 (copiado en `js/leaflet/`, sin CDN) con las teselas de OpenStreetMap, y botones para saltar a España o Europa, Canarias e India. Las teselas se piden a tile.openstreetmap.org, que ve la IP de quien mira el mapa. Sin JavaScript se ve un mapa SVG fijo con base de Natural Earth. La farola marca las acampadas, el círculo discontinuo las convocadas, el punto negro las grandes protestas y el gris las levantadas. Cada punto abre una ventanita con su web, cuenta o noticia y un enlace a su tarjeta en «Acampadas». 4. **Dónde estamos**: cifras (ciudades, países, desde el 26/09) y un mapa que se mueve y se amplía: Leaflet 1.9.4 (copiado en `js/leaflet/`, sin CDN) con las teselas de OpenStreetMap, y botones para saltar a España o Europa, Canarias e India. Las teselas se piden a tile.openstreetmap.org, que ve la IP de quien mira el mapa. Sin JavaScript se ve un mapa SVG fijo con base de Natural Earth. El faro marca las acampadas, el círculo discontinuo las convocadas, el punto negro las grandes protestas y el gris las levantadas. Cada punto abre una ventanita con su web, cuenta o noticia y un enlace a su tarjeta en «Acampadas».
5. **Cuatro ejes**: una tarjeta por eje, con una piña de monigotes en su color (*Techo* naranja, *Tierra* verde, *Sin fronteras* amarillo, *Paz* azul). Debajo, la franja violeta de los feminismos. 5. **Cinco ejes**: una tarjeta por eje, con un símbolo pintado con spray en su color: *Hogar*, una casa, en naranja; *Emergencia climática*, un planeta que gotea, en verde; *Rompiendo fronteras*, una valla abierta, en amarillo; *Pueblos libres*, una cadena rota, en azul; *Igualdad*, un signo igual, en violeta.
6. **Quiénes somos**: dos párrafos, de Sol a todas las luchas. 6. **Quiénes somos**: dos párrafos, de Sol a todas las luchas.
7. **Acampadas**: por país en takethestreet.net y por territorio en tomalacalle.net, más «¿Y tu ciudad?». 7. **Acampadas**: por país en takethestreet.net y por territorio en tomalacalle.net, más «¿Y tu ciudad?».
8. **Cómo nos organizamos**, con el contacto para montar una acampada. 8. **Cómo nos organizamos**, con el contacto para montar una acampada.
@ -134,7 +134,7 @@ Las personas de enlace de cada ciudad no se ponen aquí: van en OASIS, en una tr
### Cuentas afines para pedir difusión ### Cuentas afines para pedir difusión
Colectivos y personas públicas de fuera de España, afines a los cuatro ejes, a quienes escribir por privado para pedir que compartan. Comprobado el 13-10-2026. Colectivos y personas públicas de fuera de España, afines a los cinco ejes, a quienes escribir por privado para pedir que compartan. Comprobado el 13-10-2026.
- **✔** La cuenta está comprobada: enlazada desde su web oficial o consultada en el propio perfil. - **✔** La cuenta está comprobada: enlazada desde su web oficial o consultada en el propio perfil.
- **?** La cuenta es probable, pero no está confirmada. - **?** La cuenta es probable, pero no está confirmada.
@ -257,7 +257,7 @@ Tres piezas, cada una con su uso:
![Hoja de marca](docs/marca/hoja.png) ![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: baja de la cabeza ondeando en una S pronunciada, llega al suelo y se abre en un charco con el centro más claro. Las otras propuestas (onda suave, campana, onda marcada, campana con línea de suelo, S media, S en espejo 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`. - **Símbolo** (`docs/marca/simbolo*.svg`): un faro dentro de un aro grueso, como un emblema de tienda de graffiti (en la línea del sello de Writers Madrid). La luz es amarilla: un haz horizontal que se abre hacia los dos lados y ondas en círculo alrededor de la linterna. La torre, en negro, con dos franjas. Plano y rotundo, para que se lea en un favicon, una pegatina o un avatar. Versiones: positivo, negativo, sobre naranja y pegatina (círculo amarillo). Se genera con `python3 tools/faro.py docs/marca` y se copia a `sites/<web>/img/simbolo.svg` y a `favicon.svg`.
- **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. - **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. - **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. - **Ilustración** (`docs/calle.svg`): la imagen principal de la portada, nunca en la cabecera. Ver el apartado 6.

View file

@ -4,20 +4,27 @@ Esto es una propuesta para discutir, no un texto cerrado. Sirve de base para Tak
## Punto de partida ## Punto de partida
Nacimos en la Puerta del Sol el 26 de septiembre por la vivienda. La vivienda es la puerta de entrada, pero no la única lucha: en las plazas ya estamos colectivos de vivienda, ecologistas, antirracistas y antimilitaristas. Fuera de España, las acampadas crecen con esa misma mezcla. Nacimos en la Puerta del Sol el 26 de septiembre por la vivienda. La vivienda es la puerta de entrada, pero no la única lucha: en las plazas ya estamos colectivos de vivienda, ecologistas, antirracistas, antimilitaristas y feministas. Fuera de España, las acampadas crecen con esa misma mezcla.
**Idea fuerza: una sola calle, muchas luchas.** No nos quitan la casa, el planeta, los papeles y la paz por separado. Es el mismo modelo, que pone el beneficio de una minoría por encima de la vida de todas. Por eso salimos juntas a la misma calle. **Idea fuerza: una sola calle, muchas luchas.** No nos quitan la casa, el planeta, los papeles, la paz y la igualdad por separado. Es el mismo modelo, que pone el beneficio de una minoría por encima de la vida de todas. Por eso salimos juntas a la misma calle.
## Cuatro ejes ## Cinco ejes
1. **Techo.** La vivienda es un derecho, no un negocio. Contra los desahucios, la especulación, los fondos buitre y la turistificación. Por la vivienda pública y unos barrios donde se pueda vivir. 1. **Hogar.** La vivienda es un derecho, no un negocio. Contra los desahucios, la especulación, los fondos buitre y la turistificación. Por la vivienda pública y unos barrios donde se pueda vivir.
2. **Tierra.** El planeta también es nuestra casa. Justicia climática: que paguen quienes contaminan, no los barrios. Ciudades verdes, transporte público y frenar la destrucción del territorio. 2. **Emergencia climática.** El planeta también es nuestra casa. Justicia climática: que paguen quienes contaminan, no los barrios. Ciudades verdes, transporte público y frenar la destrucción del territorio.
3. **Sin fronteras.** Ninguna persona es ilegal. Regularización, fin de las redadas racistas y de los CIE, y los mismos derechos para quien vive aquí. 3. **Rompiendo fronteras.** Ninguna persona es ilegal. Regularización, fin de las redadas racistas y de los CIE, y los mismos derechos para quien vive aquí.
4. **Paz.** Dinero para la vida, no para la guerra. Menos gasto militar y más vivienda, sanidad y clima. Contra el comercio de armas y en solidaridad con los pueblos que sufren la guerra y la ocupación: con Palestina, alto y claro. 4. **Pueblos libres.** No a la guerra. Ningún pueblo bajo las bombas ni bajo la ocupación. Más casas, menos tanques: dinero para la vida y no para la guerra, menos gasto militar y fin del comercio de armas. Con Palestina, alto y claro.
5. **Igualdad.** Los cuidados en el centro. Las que más sufren los desahucios, las que sostienen los cuidados, las que cruzan fronteras. Contra la violencia machista y por los mismos derechos para todas.
**Feminismos en todo.** No es un quinto eje, sino una mirada que atraviesa los cuatro: las que más sufren los desahucios, las que sostienen los cuidados, las que cruzan fronteras. Cinco ejes y no más, a propósito: así el paraguas es grande y cabe mucha gente. Palestina va dentro de *Pueblos libres*.
Cuatro ejes y no más, a propósito: así el paraguas es grande y cabe mucha gente. Palestina va dentro de *Paz* y los feminismos atraviesan todo. | Eje | EN | PT | IT | FR |
|---|---|---|---|---|
| Hogar | Home | Lar | Casa | Un chez-soi |
| Emergencia climática | Climate emergency | Emergência climática | Emergenza climatica | Urgence climatique |
| Rompiendo fronteras | Breaking borders | Romper fronteiras | Rompere le frontiere | Briser les frontières |
| Pueblos libres | Free peoples | Povos livres | Popoli liberi | Peuples libres |
| Igualdad | Equality | Igualdade | Uguaglianza | Égalité |
## Cómo nos organizamos ## Cómo nos organizamos
@ -40,12 +47,12 @@ El principal va en los cinco idiomas de la web. El resto, para pancartas y redes
| Ni desahucios, ni fronteras, ni guerras | No evictions, no borders, no wars | Nem despejos, nem fronteiras, nem guerras | Né sfratti, né frontiere, né guerre | Ni expulsions, ni frontières, ni guerres | | Ni desahucios, ni fronteras, ni guerras | No evictions, no borders, no wars | Nem despejos, nem fronteiras, nem guerras | Né sfratti, né frontiere, né guerre | Ni expulsions, ni frontières, ni guerres |
| El planeta también es nuestra casa | The planet is our home too | O planeta também é a nossa casa | Anche il pianeta è casa nostra | La planète aussi, c'est chez nous | | El planeta también es nuestra casa | The planet is our home too | O planeta também é a nossa casa | Anche il pianeta è casa nostra | La planète aussi, c'est chez nous |
| Más casas, menos tanques | More homes, fewer tanks | Mais casas, menos tanques | Più case, meno carri armati | Plus de logements, moins de chars | | Más casas, menos tanques | More homes, fewer tanks | Mais casas, menos tanques | Più case, meno carri armati | Plus de logements, moins de chars |
| No a la guerra | No to war | Não à guerra | No alla guerra | Non à la guerre |
| Ninguna persona es ilegal | No one is illegal | Nenhuma pessoa é ilegal | Nessuna persona è illegale | Aucune personne n'est illégale | | Ninguna persona es ilegal | No one is illegal | Nenhuma pessoa é ilegal | Nessuna persona è illegale | Aucune personne n'est illégale |
Propuesta: **«Una calle, todas las luchas»** como lema principal de takethestreet.net y de las Acampadas 26S. Debajo van los cuatro ejes: *Techo · Tierra · Sin fronteras · Paz*. La Acampada de Madrid puede seguir con su lema de vivienda y añadir los ejes. Propuesta: **«Una calle, todas las luchas»** como lema principal de takethestreet.net y de las Acampadas 26S. Debajo van los cinco ejes: *Hogar · Emergencia climática · Rompiendo fronteras · Pueblos libres · Igualdad*. La Acampada de Madrid puede seguir con su lema de vivienda y añadir los ejes.
## Por decidir en asamblea ## Por decidir en asamblea
- ¿Cómo encajan otras luchas, como el trabajo y la precariedad o la sanidad y la educación públicas? Propuesta: dentro de los cuatro ejes, sin abrir ejes nuevos. - ¿Cómo encajan otras luchas, como el trabajo y la precariedad o la sanidad y la educación públicas? Propuesta: dentro de los cinco ejes, sin abrir ejes nuevos.
- ¿«Paz» o «Antimilitarismo» como nombre del cuarto eje?
- ¿Qué colectivos firman? Lo propuesto: los de la acampada, sobre todo ecologistas, antirracistas, antimilitaristas y movimientos de vivienda. - ¿Qué colectivos firman? Lo propuesto: los de la acampada, sobre todo ecologistas, antirracistas, antimilitaristas y movimientos de vivienda.

View file

@ -1 +0,0 @@
<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>

Before

Width:  |  Height:  |  Size: 678 B

View file

@ -1 +0,0 @@
<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: 640 B

View file

@ -1 +0,0 @@
<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>

Before

Width:  |  Height:  |  Size: 678 B

View file

@ -1 +0,0 @@
<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>

Before

Width:  |  Height:  |  Size: 692 B

View file

@ -1 +0,0 @@
<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 C64,48 102,60 92,76 H40 C58,60 40,48 57,33 Z" fill="#f45a1c"/><ellipse cx="65" cy="76" rx="26" ry="5.5" fill="#f45a1c"/><ellipse cx="65" cy="76" rx="16.1" 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: 641 B

View file

@ -1 +0,0 @@
<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 C70,48 96,60 92,76 H40 C54,60 46,48 57,33 Z" fill="#f45a1c"/><ellipse cx="65" cy="76" rx="26" ry="5.5" fill="#f45a1c"/><ellipse cx="65" cy="76" rx="16.1" 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: 640 B

View file

@ -1 +0,0 @@
<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 C66,50 100,58 92,76 H38 C30,58 68,50 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: 641 B

View file

@ -1 +0,0 @@
<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 C70,50 94,58 92,76 H38 C36,58 64,50 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: 640 B

View file

@ -1 +0,0 @@
<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>

Before

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><g clip-path="url(#c)"><path d="M57,33 H77 C64,48 102,60 92,76 H40 C58,60 40,48 57,33 Z" fill="#fff"/><ellipse cx="65" cy="76" rx="26" ry="5.5" fill="#fff"/><ellipse cx="65" cy="76" rx="16.1" 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> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><rect width="100" height="100" fill="#f04e23"/><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath><g clip-path="url(#c)"><path d="M50,33 L0,19 V53 L50,39 L100,53 V19 Z" fill="#fff" opacity=".9"/><circle cx="50" cy="36" r="19" fill="none" stroke="#fff" stroke-width="3" opacity="0.9"/><circle cx="50" cy="36" r="27" fill="none" stroke="#fff" stroke-width="2.2" opacity="0.55"/><circle cx="50" cy="36" r="12" fill="#fff"/><circle cx="50" cy="36" r="6.5" fill="#ffe2a8"/><path d="M42,46 H58 L65,100 H35 Z" fill="#111"/><path d="M42.0,56 H58.0 L59.4,62 H40.6 Z" fill="#f04e23"/><path d="M39.9,72 H60.1 L61.4,78 H38.6 Z" fill="#f04e23"/><rect x="39" y="43" width="22" height="4" rx="1" fill="#111"/><path d="M44,43 V31 M56,43 V31" stroke="#111" stroke-width="2.6"/><path d="M41,31 L50,21 L59,31 Z" fill="#111"/></g><circle cx="50" cy="50" r="45" fill="none" stroke="#111" stroke-width="7"/></svg>

Before

Width:  |  Height:  |  Size: 682 B

After

Width:  |  Height:  |  Size: 988 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><g clip-path="url(#c)"><path d="M57,33 H77 C64,48 102,60 92,76 H40 C58,60 40,48 57,33 Z" fill="#f45a1c"/><ellipse cx="65" cy="76" rx="26" ry="5.5" fill="#f45a1c"/><ellipse cx="65" cy="76" rx="16.1" 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> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><rect width="100" height="100" fill="#111"/><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath><g clip-path="url(#c)"><path d="M50,33 L0,19 V53 L50,39 L100,53 V19 Z" fill="#ffc21a" opacity=".9"/><circle cx="50" cy="36" r="19" fill="none" stroke="#ffc21a" stroke-width="3" opacity="0.9"/><circle cx="50" cy="36" r="27" fill="none" stroke="#ffc21a" stroke-width="2.2" opacity="0.55"/><circle cx="50" cy="36" r="12" fill="#ffc21a"/><circle cx="50" cy="36" r="6.5" fill="#fff4b8"/><path d="M42,46 H58 L65,100 H35 Z" fill="#fff"/><path d="M42.0,56 H58.0 L59.4,62 H40.6 Z" fill="#111"/><path d="M39.9,72 H60.1 L61.4,78 H38.6 Z" fill="#111"/><rect x="39" y="43" width="22" height="4" rx="1" fill="#fff"/><path d="M44,43 V31 M56,43 V31" stroke="#fff" stroke-width="2.6"/><path d="M41,31 L50,21 L59,31 Z" fill="#fff"/></g><circle cx="50" cy="50" r="45" fill="none" stroke="#fff" stroke-width="7"/></svg>

Before

Width:  |  Height:  |  Size: 685 B

After

Width:  |  Height:  |  Size: 991 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="48"/></clipPath></defs><circle cx="50" cy="50" r="48" fill="#f45a1c"/><g clip-path="url(#c)"><path d="M33,99 V38 Q33,22 49,22 H58" fill="none" stroke="#111" stroke-width="9"/></g><rect x="52" y="17" width="30" height="11" rx="3" fill="#111"/><path d="M58,35 L50,52" stroke="#fff" stroke-width="4" stroke-linecap="round"/><path d="M67,36 L67,56" stroke="#fff" stroke-width="4" stroke-linecap="round"/><path d="M76,35 L84,52" stroke="#fff" stroke-width="4" stroke-linecap="round"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><clipPath id="c"><circle cx="50" cy="50" r="48"/></clipPath><circle cx="50" cy="50" r="48" fill="#ffc21a"/><g clip-path="url(#c)"><path d="M50,33 L0,19 V53 L50,39 L100,53 V19 Z" fill="#fff" opacity=".9"/><circle cx="50" cy="36" r="19" fill="none" stroke="#fff" stroke-width="3" opacity="0.9"/><circle cx="50" cy="36" r="27" fill="none" stroke="#fff" stroke-width="2.2" opacity="0.55"/><circle cx="50" cy="36" r="12" fill="#fff"/><circle cx="50" cy="36" r="6.5" fill="#fff"/><path d="M42,46 H58 L65,100 H35 Z" fill="#111"/><path d="M42.0,56 H58.0 L59.4,62 H40.6 Z" fill="#ffc21a"/><path d="M39.9,72 H60.1 L61.4,78 H38.6 Z" fill="#ffc21a"/><rect x="39" y="43" width="22" height="4" rx="1" fill="#111"/><path d="M44,43 V31 M56,43 V31" stroke="#111" stroke-width="2.6"/><path d="M41,31 L50,21 L59,31 Z" fill="#111"/></g></svg>

Before

Width:  |  Height:  |  Size: 623 B

After

Width:  |  Height:  |  Size: 910 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><g clip-path="url(#c)"><path d="M57,33 H77 C64,48 102,60 92,76 H40 C58,60 40,48 57,33 Z" fill="#f45a1c"/><ellipse cx="65" cy="76" rx="26" ry="5.5" fill="#f45a1c"/><ellipse cx="65" cy="76" rx="16.1" 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> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath><g clip-path="url(#c)"><path d="M50,33 L0,19 V53 L50,39 L100,53 V19 Z" fill="#ffc21a" opacity=".9"/><circle cx="50" cy="36" r="19" fill="none" stroke="#ffc21a" stroke-width="3" opacity="0.9"/><circle cx="50" cy="36" r="27" fill="none" stroke="#ffc21a" stroke-width="2.2" opacity="0.55"/><circle cx="50" cy="36" r="12" fill="#ffc21a"/><circle cx="50" cy="36" r="6.5" fill="#fff4b8"/><path d="M42,46 H58 L65,100 H35 Z" fill="#111"/><path d="M42.0,56 H58.0 L59.4,62 H40.6 Z" fill="#fff"/><path d="M39.9,72 H60.1 L61.4,78 H38.6 Z" fill="#fff"/><rect x="39" y="43" width="22" height="4" rx="1" fill="#111"/><path d="M44,43 V31 M56,43 V31" stroke="#111" stroke-width="2.6"/><path d="M41,31 L50,21 L59,31 Z" fill="#111"/></g><circle cx="50" cy="50" r="45" fill="none" stroke="#111" stroke-width="7"/></svg>

Before

Width:  |  Height:  |  Size: 641 B

After

Width:  |  Height:  |  Size: 947 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 143 KiB

After

Width:  |  Height:  |  Size: 918 KiB

Before After
Before After

View file

@ -4,11 +4,11 @@
--bg: #fff; --bg: #fff;
--fg: #111; --fg: #111;
--neon: #f04e23; --neon: #f04e23;
--techo: #f04e23; --hogar: #f04e23;
--tierra: #14965a; --clima: #14965a;
--fronteras: #f2b705; --fronteras: #f2b705;
--paz: #3b5bdb; --pueblos: #3b5bdb;
--feminismos: #8e44c9; --igualdad: #8e44c9;
--bd: 3px solid var(--fg); --bd: 3px solid var(--fg);
--bt: "League Gothic", "Arial Narrow", Impact, sans-serif; --bt: "League Gothic", "Arial Narrow", Impact, sans-serif;
--txt: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; --txt: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
@ -31,7 +31,7 @@ img { max-width: 100%; }
.portada { padding: 0 0 24px; border-bottom: var(--bd); text-align: center; overflow: hidden; } .portada { padding: 0 0 24px; border-bottom: var(--bd); text-align: center; overflow: hidden; }
h1 { margin: 0; font: 400 clamp(52px, 8vw, 112px)/.92 var(--bt); text-transform: uppercase; } h1 { margin: 0; font: 400 clamp(52px, 8vw, 112px)/.92 var(--bt); text-transform: uppercase; }
.c-techo { color: var(--techo); } .c-tierra { color: var(--tierra); } .c-fronteras { color: #c99500; } .c-paz { color: var(--paz); } .c-hogar { color: var(--hogar); } .c-clima { color: var(--clima); } .c-fronteras { color: #c99500; } .c-pueblos { color: var(--pueblos); } .c-igualdad { color: var(--igualdad); }
.calle { display: block; width: 100%; height: clamp(220px, 36vw, 600px); object-fit: cover; object-position: 65% 60%; margin: 0; } .calle { display: block; width: 100%; height: clamp(220px, 36vw, 600px); object-fit: cover; object-position: 65% 60%; margin: 0; }
.acciones { display: flex; flex-wrap: wrap; justify-content: center; gap: 14px; margin-top: 18px; padding: 0 16px; } .acciones { display: flex; flex-wrap: wrap; justify-content: center; gap: 14px; margin-top: 18px; padding: 0 16px; }
.bt { font: 400 26px/1 var(--bt); letter-spacing: .05em; text-transform: uppercase; text-decoration: none; border: var(--bd); border-radius: 8px; padding: 12px 22px 9px; box-shadow: 4px 4px 0 var(--fg); } .bt { font: 400 26px/1 var(--bt); letter-spacing: .05em; text-transform: uppercase; text-decoration: none; border: var(--bd); border-radius: 8px; padding: 12px 22px 9px; box-shadow: 4px 4px 0 var(--fg); }
@ -45,18 +45,14 @@ h3 { margin: 0; font: 400 34px/1 var(--bt); text-transform: uppercase; letter-sp
.intro p { max-width: 820px; margin: 0 auto 14px; font-size: 20px; } .intro p { max-width: 820px; margin: 0 auto 14px; font-size: 20px; }
.intro .fuerte { font-weight: 700; } .intro .fuerte { font-weight: 700; }
.ejes { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 18px; } .ejes { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 18px; }
.eje { border: var(--bd); border-radius: 10px; padding: 16px 16px 10px; box-shadow: 6px 6px 0 var(--c); } .eje { border: var(--bd); border-radius: 10px; padding: 16px 16px 10px; box-shadow: 6px 6px 0 var(--c); }
.eje img { display: block; height: 120px; margin: 0 auto 6px; } .eje img { display: block; height: 120px; margin: 0 auto 6px; }
.eje h3 { color: var(--c); } .eje h3 { color: var(--c); }
.eje .lema { font-weight: 700; margin: 6px 0; } .eje .lema { font-weight: 700; margin: 6px 0; }
.eje p { margin: 0 0 8px; font-size: 16px; } .eje p { margin: 0 0 8px; font-size: 16px; }
.e-techo { --c: var(--techo); } .e-tierra { --c: var(--tierra); } .e-fronteras { --c: var(--fronteras); } .e-paz { --c: var(--paz); } .e-feminismos { --c: var(--feminismos); } .e-hogar { --c: var(--hogar); } .e-clima { --c: var(--clima); } .e-fronteras { --c: var(--fronteras); } .e-pueblos { --c: var(--pueblos); } .e-igualdad { --c: var(--igualdad); }
.e-fronteras h3 { color: #c99500; } .e-fronteras h3 { color: #c99500; }
.transversal { display: flex; align-items: center; gap: 18px; margin-top: 22px; border: var(--bd); border-left: 14px solid var(--c); border-radius: 10px; padding: 10px 18px; }
.transversal img { height: 90px; }
.transversal p { margin: 0; }
.transversal b { color: var(--c); }
.paises { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 18px; } .paises { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 18px; }
.pais { border-top: var(--bd); padding-top: 10px; } .pais { border-top: var(--bd); padding-top: 10px; }
@ -104,6 +100,9 @@ h3 { margin: 0; font: 400 34px/1 var(--bt); text-transform: uppercase; letter-sp
.mapa li span + span { font-size: 12px; opacity: .75; } .mapa li span + span { font-size: 12px; opacity: .75; }
.mapa .ko span:first-child { text-decoration: line-through; } .mapa .ko span:first-child { text-decoration: line-through; }
@media (max-width: 1100px) {
.ejes { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 900px) { @media (max-width: 900px) {
.ejes, .paises { grid-template-columns: repeat(2, minmax(0, 1fr)); } .ejes, .paises { grid-template-columns: repeat(2, minmax(0, 1fr)); }
} }

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><g clip-path="url(#c)"><path d="M57,33 H77 C64,48 102,60 92,76 H40 C58,60 40,48 57,33 Z" fill="#f45a1c"/><ellipse cx="65" cy="76" rx="26" ry="5.5" fill="#f45a1c"/><ellipse cx="65" cy="76" rx="16.1" 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> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath><g clip-path="url(#c)"><path d="M50,33 L0,19 V53 L50,39 L100,53 V19 Z" fill="#ffc21a" opacity=".9"/><circle cx="50" cy="36" r="19" fill="none" stroke="#ffc21a" stroke-width="3" opacity="0.9"/><circle cx="50" cy="36" r="27" fill="none" stroke="#ffc21a" stroke-width="2.2" opacity="0.55"/><circle cx="50" cy="36" r="12" fill="#ffc21a"/><circle cx="50" cy="36" r="6.5" fill="#fff4b8"/><path d="M42,46 H58 L65,100 H35 Z" fill="#111"/><path d="M42.0,56 H58.0 L59.4,62 H40.6 Z" fill="#fff"/><path d="M39.9,72 H60.1 L61.4,78 H38.6 Z" fill="#fff"/><rect x="39" y="43" width="22" height="4" rx="1" fill="#111"/><path d="M44,43 V31 M56,43 V31" stroke="#111" stroke-width="2.6"/><path d="M41,31 L50,21 L59,31 Z" fill="#111"/></g><circle cx="50" cy="50" r="45" fill="none" stroke="#111" stroke-width="7"/></svg>

Before

Width:  |  Height:  |  Size: 641 B

After

Width:  |  Height:  |  Size: 947 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

After

Width:  |  Height:  |  Size: 5.6 KiB

View file

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 140 170" width="140" height="170"><defs><filter id="spray" x="-30%" y="-10%" width="160%" height="120%"><feTurbulence type="fractalNoise" baseFrequency="0.8" numOctaves="2" seed="3" result="t"/><feDisplacementMap in="SourceGraphic" in2="t" scale="1.6" result="d"/><feGaussianBlur in="d" stdDeviation=".4" result="b"/><feGaussianBlur in="SourceGraphic" stdDeviation="2.5" result="n"/><feComponentTransfer in="n" result="n2"><feFuncA type="linear" slope=".3"/></feComponentTransfer><feMerge><feMergeNode in="n2"/><feMergeNode in="b"/></feMerge></filter></defs><path d="M38.5,38.0 L32.9,40.1 L43.0,42.0 L32.8,43.7 L43.5,45.5 L30.2,47.6 L42.6,49.8 L35.1,51.8 L38.9,53.7 L27.9,57.9 L45.3,61.2 L26.9,64.5 L47.4,67.8 L31.5,72.1 L46.2,75.8 L31.3,80.0 L44.8,83.5 L29.9,86.8 L45.0,90.9 L30.3,94.1 L45.2,98.1 L30.6,101.7 L41.6,105.6 L34.4,109.4 L42.8,113.1 L36.5,117.1 L39.6,121.2 L33.7,124.5 L42.3,127.9 L38.3,132.0 L37.5,135.8 L32.9,139.4 L43.3,142.7 L40.7,146.9" fill="none" stroke="#8e44c9" stroke-width="1.8" stroke-linejoin="round" stroke-linecap="round" filter="url(#spray)"/><path d="M102.6,36.0 L97.5,37.9 L107.0,39.9 L93.9,42.2 L108.4,44.5 L96.3,46.8 L106.6,48.7 L99.5,51.0 L103.4,53.1 L93.0,57.5 L110.7,62.1 L92.3,65.6 L111.8,70.1 L93.0,74.1 L109.9,77.9 L93.3,81.8 L108.4,86.4 L92.4,90.1 L108.0,94.3 L94.2,98.3 L107.5,102.8 L97.7,107.4 L105.3,111.1 L97.9,115.5 L106.8,119.8 L100.9,123.3 L102.4,127.3 L97.1,131.8 L107.5,135.5 L103.1,139.6 L100.5,143.4 L96.5,148.0 L108.3,152.5" fill="none" stroke="#8e44c9" stroke-width="1.9" stroke-linejoin="round" stroke-linecap="round" filter="url(#spray)"/><path d="M70.8,20.0 L63.6,22.5 L78.0,25.3 L62.9,27.8 L79.2,30.6 L63.3,32.8 L74.8,35.4 L67.9,37.7 L71.1,39.9 L58.1,44.4 L80.5,49.3 L56.3,53.5 L81.9,58.4 L60.3,63.4 L79.3,68.2 L58.5,73.1 L81.1,77.2 L62.9,81.3 L79.3,85.4 L59.5,90.6 L78.1,94.8 L60.5,100.2 L76.6,105.3 L64.1,109.7 L76.5,114.1 L63.0,119.2 L75.1,123.5 L63.2,128.1 L76.0,132.8 L64.3,137.7 L74.1,142.4 L65.5,147.1 L72.9,151.5 L67.2,156.6" fill="none" stroke="#8e44c9" stroke-width="2.2" stroke-linejoin="round" stroke-linecap="round" filter="url(#spray)"/><path d="M80.4,48.0 L77.4,43.3 L82.2,38.7 L79.2,34.0 L84.1,29.3 L81.1,24.7 L86.0,20.0 L83.0,15.3 L87.8,10.7 L84.8,6.0" fill="none" stroke="#8e44c9" stroke-width="2.2" stroke-linecap="round" filter="url(#spray)"/></svg>

Before

Width:  |  Height:  |  Size: 2.3 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 6.4 KiB

Before After
Before After

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 140 170" width="140" height="170"><defs><filter id="spray" x="-30%" y="-10%" width="160%" height="120%"><feTurbulence type="fractalNoise" baseFrequency="0.8" numOctaves="2" seed="3" result="t"/><feDisplacementMap in="SourceGraphic" in2="t" scale="1.6" result="d"/><feGaussianBlur in="d" stdDeviation=".4" result="b"/><feGaussianBlur in="SourceGraphic" stdDeviation="2.5" result="n"/><feComponentTransfer in="n" result="n2"><feFuncA type="linear" slope=".3"/></feComponentTransfer><feMerge><feMergeNode in="n2"/><feMergeNode in="b"/></feMerge></filter></defs><path d="M71.6,23.4 L63.8,26.3 L79.0,28.8 L58.1,31.5 L84.8,34.0 L52.0,36.5 L89.3,39.4 L46.9,42.1 L97.5,44.7 L41.2,47.1 L102.9,49.4 L35.6,51.7 L108.7,54.5 L30.5,56.8 L113.3,59.7 L22.4,62.5 L118.9,64.8 L18.3,67.3 L126.7,69.9" fill="none" stroke="#f04e23" stroke-width="3.6" stroke-linejoin="round" stroke-linecap="round" filter="url(#spray)"/><path d="M53.3,73.4 L23.0,76.0 L54.3,78.7 L23.0,81.3 L53.1,84.0 L23.9,86.9 L55.1,89.2 L23.6,92.1 L53.5,95.0 L24.2,97.7 L53.0,100.5 L23.2,102.7 L54.7,105.2 L23.1,108.0 L53.3,110.8 L24.0,113.0 L55.0,115.9 L24.7,118.5 L53.2,120.9 L24.4,123.8 L53.6,126.2 L22.9,129.0 L54.7,131.3 L23.8,133.7 L53.9,136.3 L23.4,138.7 L54.6,141.6 L22.9,144.5 L54.8,146.8" fill="none" stroke="#f04e23" stroke-width="3.6" stroke-linejoin="round" stroke-linecap="round" filter="url(#spray)"/><path d="M116.7,73.4 L85.7,75.9 L115.8,78.6 L84.9,81.2 L116.3,84.1 L85.9,86.5 L117.0,89.2 L87.0,91.5 L114.9,94.1 L86.5,96.6 L116.2,98.9 L86.2,101.6 L114.8,103.8 L85.2,106.8 L116.2,109.1 L86.6,111.3 L115.6,114.1 L86.0,116.8 L115.2,119.6 L85.0,121.8 L117.2,124.7 L86.6,127.2 L116.2,129.6 L86.1,132.1 L116.9,135.0 L86.8,137.9 L115.3,140.5 L86.3,143.4 L115.7,145.7 L86.7,147.9" fill="none" stroke="#f04e23" stroke-width="3.6" stroke-linejoin="round" stroke-linecap="round" filter="url(#spray)"/><path d="M84.8,73.4 L55.0,76.1 L86.6,79.0 L54.1,81.4 L86.2,83.8 L53.3,86.3 L85.1,89.0 L54.3,91.3 L85.1,94.1" fill="none" stroke="#f04e23" stroke-width="3.6" stroke-linejoin="round" stroke-linecap="round" filter="url(#spray)"/><path d="M97.8,49.1 L99.0,25.5 L108.9,26.0 L110.1,59.8" fill="none" stroke="#f04e23" stroke-width="5.0" stroke-linejoin="round" stroke-linecap="round" opacity="1" filter="url(#spray)"/><path d="M98.2,49.1 L97.2,26.2 L109.0,25.9 L109.4,60.6" fill="none" stroke="#f04e23" stroke-width="3.0" stroke-linejoin="round" stroke-linecap="round" opacity="0.7" filter="url(#spray)"/><path d="M30.0,144.0 L30.0,166.0" stroke="#f04e23" stroke-width="2.4" stroke-linecap="round" filter="url(#spray)"/><circle cx="30.0" cy="166.0" r="2.2" fill="#f04e23" filter="url(#spray)"/><path d="M47.0,144.0 L47.1,158.0" stroke="#f04e23" stroke-width="2.4" stroke-linecap="round" filter="url(#spray)"/><circle cx="47.0" cy="158.0" r="2.2" fill="#f04e23" filter="url(#spray)"/><path d="M92.0,144.0 L91.8,172.0" stroke="#f04e23" stroke-width="2.4" stroke-linecap="round" filter="url(#spray)"/><circle cx="92.0" cy="172.0" r="2.2" fill="#f04e23" filter="url(#spray)"/><path d="M110.0,144.0 L110.0,160.0" stroke="#f04e23" stroke-width="2.4" stroke-linecap="round" filter="url(#spray)"/><circle cx="110.0" cy="160.0" r="2.2" fill="#f04e23" filter="url(#spray)"/></svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 140 170" width="140" height="170"><defs><filter id="spray" x="-30%" y="-10%" width="160%" height="120%"><feTurbulence type="fractalNoise" baseFrequency="0.8" numOctaves="2" seed="3" result="t"/><feDisplacementMap in="SourceGraphic" in2="t" scale="1.6" result="d"/><feGaussianBlur in="d" stdDeviation=".4" result="b"/><feGaussianBlur in="SourceGraphic" stdDeviation="2.5" result="n"/><feComponentTransfer in="n" result="n2"><feFuncA type="linear" slope=".3"/></feComponentTransfer><feMerge><feMergeNode in="n2"/><feMergeNode in="b"/></feMerge></filter></defs><path d="M125.8,47.4 L14.9,50.1 L125.3,52.4 L13.1,54.7 L125.2,56.9 L15.2,59.5 L125.7,62.2 L14.5,64.8 L125.0,67.2 L14.3,70.1 L125.0,72.4 L15.1,74.7 L99.3,77.0" fill="none" stroke="#8e44c9" stroke-width="3.6" stroke-linejoin="round" stroke-linecap="round" filter="url(#spray)"/><path d="M124.9,97.4 L15.3,100.0 L125.3,102.9 L13.4,105.3 L126.4,107.5 L13.8,110.4 L126.5,112.6 L14.4,115.4 L126.8,117.9 L14.2,120.6 L125.4,123.2 L14.7,125.8 L55.2,128.5" fill="none" stroke="#8e44c9" stroke-width="3.6" stroke-linejoin="round" stroke-linecap="round" filter="url(#spray)"/><path d="M30.0,73.0 L30.4,87.0" stroke="#8e44c9" stroke-width="2.4" stroke-linecap="round" filter="url(#spray)"/><circle cx="30.0" cy="87.0" r="2.2" fill="#8e44c9" filter="url(#spray)"/><path d="M100.0,69.0 L99.5,79.0" stroke="#8e44c9" stroke-width="2.4" stroke-linecap="round" filter="url(#spray)"/><circle cx="100.0" cy="79.0" r="2.2" fill="#8e44c9" filter="url(#spray)"/><path d="M46.0,123.0 L45.6,145.0" stroke="#8e44c9" stroke-width="2.4" stroke-linecap="round" filter="url(#spray)"/><circle cx="46.0" cy="145.0" r="2.2" fill="#8e44c9" filter="url(#spray)"/><path d="M112.0,120.0 L111.7,134.0" stroke="#8e44c9" stroke-width="2.4" stroke-linecap="round" filter="url(#spray)"/><circle cx="112.0" cy="134.0" r="2.2" fill="#8e44c9" filter="url(#spray)"/></svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View file

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 140 170" width="140" height="170"><defs><filter id="spray" x="-30%" y="-10%" width="160%" height="120%"><feTurbulence type="fractalNoise" baseFrequency="0.8" numOctaves="2" seed="3" result="t"/><feDisplacementMap in="SourceGraphic" in2="t" scale="1.6" result="d"/><feGaussianBlur in="d" stdDeviation=".4" result="b"/><feGaussianBlur in="SourceGraphic" stdDeviation="2.5" result="n"/><feComponentTransfer in="n" result="n2"><feFuncA type="linear" slope=".3"/></feComponentTransfer><feMerge><feMergeNode in="n2"/><feMergeNode in="b"/></feMerge></filter></defs><path d="M38.4,38.0 L34.4,40.2 L44.4,42.2 L31.5,44.5 L43.0,46.6 L32.6,48.6 L41.9,50.9 L36.9,53.1 L49.3,56.5 L29.3,60.6 L47.1,63.9 L28.0,67.7 L46.6,71.6 L30.2,75.4 L44.3,78.7 L28.9,82.9 L47.0,86.5 L32.2,90.2 L45.2,94.4 L30.8,98.7 L44.8,102.0 L33.9,106.1 L40.9,109.6 L34.3,113.6 L42.9,117.8 L36.7,121.0 L38.2,124.6 L32.5,128.5 L42.7,132.3 L38.8,136.1 L36.5,140.4 L32.1,143.6 L43.3,147.5" fill="none" stroke="#3b5bdb" stroke-width="1.8" stroke-linejoin="round" stroke-linecap="round" filter="url(#spray)"/><path d="M102.5,36.0 L98.1,38.3 L107.2,40.7 L95.1,43.0 L107.3,44.9 L94.4,47.4 L107.1,49.4 L100.6,51.9 L111.4,56.4 L92.1,60.7 L112.6,65.3 L91.0,69.7 L112.0,73.6 L94.5,77.1 L110.1,81.7 L93.5,85.9 L110.3,89.7 L95.1,94.2 L108.2,98.1 L93.8,101.7 L107.0,106.0 L97.7,110.2 L104.3,113.9 L97.6,117.6 L106.4,122.2 L101.6,126.2 L102.6,129.7 L96.6,133.8 L108.0,138.4 L103.3,143.0 L99.6,146.7 L96.3,151.1 L108.1,154.5" fill="none" stroke="#3b5bdb" stroke-width="1.9" stroke-linejoin="round" stroke-linecap="round" filter="url(#spray)"/><path d="M70.7,20.0 L65.1,22.4 L76.5,24.6 L62.9,27.0 L78.7,29.3 L63.4,32.1 L75.7,34.3 L66.8,37.0 L71.1,39.7 L60.2,44.7 L82.9,49.0 L57.9,53.7 L81.9,58.1 L59.4,62.5 L82.5,67.2 L59.8,72.2 L80.2,77.4 L60.7,82.4 L77.6,87.2 L60.9,92.5 L78.6,97.7 L63.7,101.7 L78.2,107.0 L61.6,112.3 L78.3,116.6 L63.0,121.4 L75.1,126.2 L64.7,130.9 L74.7,135.3 L65.9,139.9 L74.9,144.1 L66.5,148.6 L73.5,153.7 L67.7,158.3" fill="none" stroke="#3b5bdb" stroke-width="2.2" stroke-linejoin="round" stroke-linecap="round" filter="url(#spray)"/><path d="M80.4,48.0 L77.4,43.3 L82.2,38.7 L79.2,34.0 L84.1,29.3 L81.1,24.7 L86.0,20.0 L83.0,15.3 L87.8,10.7 L84.8,6.0" fill="none" stroke="#3b5bdb" stroke-width="2.2" stroke-linecap="round" filter="url(#spray)"/></svg>

Before

Width:  |  Height:  |  Size: 2.3 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 6.4 KiB

View file

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 140 170" width="140" height="170"><defs><filter id="spray" x="-30%" y="-10%" width="160%" height="120%"><feTurbulence type="fractalNoise" baseFrequency="0.8" numOctaves="2" seed="3" result="t"/><feDisplacementMap in="SourceGraphic" in2="t" scale="1.6" result="d"/><feGaussianBlur in="d" stdDeviation=".4" result="b"/><feGaussianBlur in="SourceGraphic" stdDeviation="2.5" result="n"/><feComponentTransfer in="n" result="n2"><feFuncA type="linear" slope=".3"/></feComponentTransfer><feMerge><feMergeNode in="n2"/><feMergeNode in="b"/></feMerge></filter></defs><path d="M38.5,38.0 L34.6,40.3 L45.3,42.2 L32.6,44.4 L45.8,46.4 L33.5,48.4 L41.3,50.7 L36.8,52.9 L49.8,56.6 L28.2,60.0 L49.3,63.3 L29.0,66.7 L48.3,70.8 L28.0,74.1 L45.4,78.3 L31.3,82.3 L44.3,85.7 L29.5,89.3 L46.8,93.0 L32.2,97.2 L43.0,100.9 L34.3,104.7 L40.3,108.6 L34.4,112.5 L42.4,116.6 L35.9,119.9 L38.5,124.2 L33.3,128.5 L43.2,132.3 L39.5,136.4 L36.1,139.6 L32.3,143.2 L43.3,147.2" fill="none" stroke="#f04e23" stroke-width="1.8" stroke-linejoin="round" stroke-linecap="round" filter="url(#spray)"/><path d="M102.5,36.0 L97.8,37.9 L109.5,40.4 L93.9,42.6 L107.9,44.6 L95.2,47.1 L106.4,49.1 L101.1,51.5 L103.4,53.5 L92.2,57.2 L111.8,61.2 L93.6,65.0 L112.6,69.4 L95.0,73.9 L112.3,77.6 L92.2,81.4 L109.8,85.2 L94.3,89.4 L107.9,93.5 L94.2,97.9 L109.0,101.7 L97.1,105.9 L106.3,109.3 L98.4,113.4 L107.0,117.3 L100.0,120.9 L103.4,125.0 L97.6,128.4 L106.9,133.0 L102.4,136.7 L101.3,140.1 L96.4,144.5 L107.9,148.6 L105.3,152.9" fill="none" stroke="#f04e23" stroke-width="1.9" stroke-linejoin="round" stroke-linecap="round" filter="url(#spray)"/><path d="M70.5,20.0 L63.0,22.9 L78.2,25.3 L61.4,27.7 L78.5,30.2 L61.4,33.1 L75.7,36.0 L68.8,38.6 L82.8,43.8 L59.0,48.0 L83.0,52.0 L61.7,57.4 L82.8,62.3 L58.5,67.5 L80.3,71.7 L59.9,76.2 L78.0,80.7 L62.7,85.5 L79.3,89.7 L63.2,94.7 L77.8,98.8 L60.6,103.0 L75.6,107.4 L62.8,112.1 L76.9,116.7 L64.8,120.8 L74.5,125.6 L65.2,130.2 L75.1,135.3 L65.9,140.1 L74.1,144.8 L66.1,149.5 L73.5,154.2 L67.8,158.8" fill="none" stroke="#f04e23" stroke-width="2.2" stroke-linejoin="round" stroke-linecap="round" filter="url(#spray)"/><path d="M80.4,48.0 L77.4,43.3 L82.2,38.7 L79.2,34.0 L84.1,29.3 L81.1,24.7 L86.0,20.0 L83.0,15.3 L87.8,10.7 L84.8,6.0" fill="none" stroke="#f04e23" stroke-width="2.2" stroke-linecap="round" filter="url(#spray)"/></svg>

Before

Width:  |  Height:  |  Size: 2.3 KiB

View file

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 140 170" width="140" height="170"><defs><filter id="spray" x="-30%" y="-10%" width="160%" height="120%"><feTurbulence type="fractalNoise" baseFrequency="0.8" numOctaves="2" seed="3" result="t"/><feDisplacementMap in="SourceGraphic" in2="t" scale="1.6" result="d"/><feGaussianBlur in="d" stdDeviation=".4" result="b"/><feGaussianBlur in="SourceGraphic" stdDeviation="2.5" result="n"/><feComponentTransfer in="n" result="n2"><feFuncA type="linear" slope=".3"/></feComponentTransfer><feMerge><feMergeNode in="n2"/><feMergeNode in="b"/></feMerge></filter></defs><path d="M38.5,38.0 L34.6,39.9 L44.1,42.2 L31.2,44.4 L45.3,46.4 L31.4,48.5 L42.7,50.7 L37.1,52.7 L48.7,56.1 L27.9,59.5 L45.1,63.4 L31.2,67.5 L48.0,71.7 L28.7,75.1 L44.5,79.1 L31.7,83.1 L46.2,87.3 L32.5,91.6 L45.3,95.2 L32.5,99.1 L42.4,103.3 L35.4,106.8 L40.5,110.7 L33.7,114.7 L41.8,118.3 L37.0,121.7 L38.4,125.7 L32.9,129.7 L43.3,133.9 L39.6,137.5 L35.8,140.8 L32.2,144.9 L43.3,149.0" fill="none" stroke="#14965a" stroke-width="1.8" stroke-linejoin="round" stroke-linecap="round" filter="url(#spray)"/><path d="M102.5,36.0 L96.8,38.5 L108.8,40.9 L93.6,43.0 L108.0,45.5 L95.4,47.7 L105.6,50.1 L100.5,52.2 L110.8,56.0 L93.1,60.3 L110.8,64.8 L93.2,69.3 L112.2,73.8 L94.5,78.1 L108.5,81.8 L93.1,85.4 L108.9,88.9 L95.6,93.0 L108.4,96.8 L96.3,101.1 L106.3,105.7 L98.5,110.0 L105.7,114.0 L96.8,118.6 L107.0,122.0 L100.8,126.6 L102.7,130.6 L96.3,134.3 L107.0,138.6 L103.3,142.7 L100.2,146.5 L95.7,151.1 L107.8,154.9" fill="none" stroke="#14965a" stroke-width="1.9" stroke-linejoin="round" stroke-linecap="round" filter="url(#spray)"/><path d="M70.7,20.0 L63.4,22.8 L77.7,25.3 L60.5,27.7 L77.2,30.4 L62.4,33.0 L74.7,35.4 L68.6,38.0 L71.7,40.5 L60.8,45.7 L82.7,50.9 L61.5,55.9 L79.1,60.9 L60.5,66.1 L78.5,70.6 L61.6,75.8 L79.4,81.0 L60.2,85.3 L76.7,90.0 L62.6,95.2 L79.1,99.2 L62.8,104.2 L77.4,108.5 L62.4,113.3 L76.8,118.0 L64.8,123.0 L75.7,127.3 L63.9,132.3 L74.7,137.5 L66.5,142.5 L73.1,147.1 L65.8,152.3 L73.1,157.2" fill="none" stroke="#14965a" stroke-width="2.2" stroke-linejoin="round" stroke-linecap="round" filter="url(#spray)"/><path d="M80.4,48.0 L77.4,43.3 L82.2,38.7 L79.2,34.0 L84.1,29.3 L81.1,24.7 L86.0,20.0 L83.0,15.3 L87.8,10.7 L84.8,6.0" fill="none" stroke="#14965a" stroke-width="2.2" stroke-linecap="round" filter="url(#spray)"/></svg>

Before

Width:  |  Height:  |  Size: 2.3 KiB

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"/><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath><g clip-path="url(#c)"><path d="M50,33 L0,19 V53 L50,39 L100,53 V19 Z" fill="#ffc21a" opacity=".9"/><circle cx="50" cy="36" r="19" fill="none" stroke="#ffc21a" stroke-width="3" opacity="0.9"/><circle cx="50" cy="36" r="27" fill="none" stroke="#ffc21a" stroke-width="2.2" opacity="0.55"/><circle cx="50" cy="36" r="12" fill="#ffc21a"/><circle cx="50" cy="36" r="6.5" fill="#fff4b8"/><path d="M42,46 H58 L65,100 H35 Z" fill="#fff"/><path d="M42.0,56 H58.0 L59.4,62 H40.6 Z" fill="#111"/><path d="M39.9,72 H60.1 L61.4,78 H38.6 Z" fill="#111"/><rect x="39" y="43" width="22" height="4" rx="1" fill="#fff"/><path d="M44,43 V31 M56,43 V31" stroke="#fff" stroke-width="2.6"/><path d="M41,31 L50,21 L59,31 Z" fill="#fff"/></g><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: 991 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><g clip-path="url(#c)"><path d="M57,33 H77 C64,48 102,60 92,76 H40 C58,60 40,48 57,33 Z" fill="#f45a1c"/><ellipse cx="65" cy="76" rx="26" ry="5.5" fill="#f45a1c"/><ellipse cx="65" cy="76" rx="16.1" 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> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath><g clip-path="url(#c)"><path d="M50,33 L0,19 V53 L50,39 L100,53 V19 Z" fill="#ffc21a" opacity=".9"/><circle cx="50" cy="36" r="19" fill="none" stroke="#ffc21a" stroke-width="3" opacity="0.9"/><circle cx="50" cy="36" r="27" fill="none" stroke="#ffc21a" stroke-width="2.2" opacity="0.55"/><circle cx="50" cy="36" r="12" fill="#ffc21a"/><circle cx="50" cy="36" r="6.5" fill="#fff4b8"/><path d="M42,46 H58 L65,100 H35 Z" fill="#111"/><path d="M42.0,56 H58.0 L59.4,62 H40.6 Z" fill="#fff"/><path d="M39.9,72 H60.1 L61.4,78 H38.6 Z" fill="#fff"/><rect x="39" y="43" width="22" height="4" rx="1" fill="#111"/><path d="M44,43 V31 M56,43 V31" stroke="#111" stroke-width="2.6"/><path d="M41,31 L50,21 L59,31 Z" fill="#111"/></g><circle cx="50" cy="50" r="45" fill="none" stroke="#111" stroke-width="7"/></svg>

Before

Width:  |  Height:  |  Size: 641 B

After

Width:  |  Height:  |  Size: 947 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

@ -4,11 +4,11 @@
--bg: #fff; --bg: #fff;
--fg: #111; --fg: #111;
--neon: #f04e23; --neon: #f04e23;
--techo: #f04e23; --hogar: #f04e23;
--tierra: #14965a; --clima: #14965a;
--fronteras: #f2b705; --fronteras: #f2b705;
--paz: #3b5bdb; --pueblos: #3b5bdb;
--feminismos: #8e44c9; --igualdad: #8e44c9;
--bd: 3px solid var(--fg); --bd: 3px solid var(--fg);
--bt: "League Gothic", "Arial Narrow", Impact, sans-serif; --bt: "League Gothic", "Arial Narrow", Impact, sans-serif;
--txt: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; --txt: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
@ -31,7 +31,7 @@ img { max-width: 100%; }
.portada { padding: 0 0 24px; border-bottom: var(--bd); text-align: center; overflow: hidden; } .portada { padding: 0 0 24px; border-bottom: var(--bd); text-align: center; overflow: hidden; }
h1 { margin: 0; font: 400 clamp(52px, 8vw, 112px)/.92 var(--bt); text-transform: uppercase; } h1 { margin: 0; font: 400 clamp(52px, 8vw, 112px)/.92 var(--bt); text-transform: uppercase; }
.c-techo { color: var(--techo); } .c-tierra { color: var(--tierra); } .c-fronteras { color: #c99500; } .c-paz { color: var(--paz); } .c-hogar { color: var(--hogar); } .c-clima { color: var(--clima); } .c-fronteras { color: #c99500; } .c-pueblos { color: var(--pueblos); } .c-igualdad { color: var(--igualdad); }
.calle { display: block; width: 100%; height: clamp(220px, 36vw, 600px); object-fit: cover; object-position: 65% 60%; margin: 0; } .calle { display: block; width: 100%; height: clamp(220px, 36vw, 600px); object-fit: cover; object-position: 65% 60%; margin: 0; }
.acciones { display: flex; flex-wrap: wrap; justify-content: center; gap: 14px; margin-top: 18px; padding: 0 16px; } .acciones { display: flex; flex-wrap: wrap; justify-content: center; gap: 14px; margin-top: 18px; padding: 0 16px; }
.bt { font: 400 26px/1 var(--bt); letter-spacing: .05em; text-transform: uppercase; text-decoration: none; border: var(--bd); border-radius: 8px; padding: 12px 22px 9px; box-shadow: 4px 4px 0 var(--fg); } .bt { font: 400 26px/1 var(--bt); letter-spacing: .05em; text-transform: uppercase; text-decoration: none; border: var(--bd); border-radius: 8px; padding: 12px 22px 9px; box-shadow: 4px 4px 0 var(--fg); }
@ -45,18 +45,14 @@ h3 { margin: 0; font: 400 34px/1 var(--bt); text-transform: uppercase; letter-sp
.intro p { max-width: 820px; margin: 0 auto 14px; font-size: 20px; } .intro p { max-width: 820px; margin: 0 auto 14px; font-size: 20px; }
.intro .fuerte { font-weight: 700; } .intro .fuerte { font-weight: 700; }
.ejes { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 18px; } .ejes { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 18px; }
.eje { border: var(--bd); border-radius: 10px; padding: 16px 16px 10px; box-shadow: 6px 6px 0 var(--c); } .eje { border: var(--bd); border-radius: 10px; padding: 16px 16px 10px; box-shadow: 6px 6px 0 var(--c); }
.eje img { display: block; height: 120px; margin: 0 auto 6px; } .eje img { display: block; height: 120px; margin: 0 auto 6px; }
.eje h3 { color: var(--c); } .eje h3 { color: var(--c); }
.eje .lema { font-weight: 700; margin: 6px 0; } .eje .lema { font-weight: 700; margin: 6px 0; }
.eje p { margin: 0 0 8px; font-size: 16px; } .eje p { margin: 0 0 8px; font-size: 16px; }
.e-techo { --c: var(--techo); } .e-tierra { --c: var(--tierra); } .e-fronteras { --c: var(--fronteras); } .e-paz { --c: var(--paz); } .e-feminismos { --c: var(--feminismos); } .e-hogar { --c: var(--hogar); } .e-clima { --c: var(--clima); } .e-fronteras { --c: var(--fronteras); } .e-pueblos { --c: var(--pueblos); } .e-igualdad { --c: var(--igualdad); }
.e-fronteras h3 { color: #c99500; } .e-fronteras h3 { color: #c99500; }
.transversal { display: flex; align-items: center; gap: 18px; margin-top: 22px; border: var(--bd); border-left: 14px solid var(--c); border-radius: 10px; padding: 10px 18px; }
.transversal img { height: 90px; }
.transversal p { margin: 0; }
.transversal b { color: var(--c); }
.paises { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 18px; } .paises { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 18px; }
.pais { border-top: var(--bd); padding-top: 10px; } .pais { border-top: var(--bd); padding-top: 10px; }
@ -104,6 +100,9 @@ h3 { margin: 0; font: 400 34px/1 var(--bt); text-transform: uppercase; letter-sp
.mapa li span + span { font-size: 12px; opacity: .75; } .mapa li span + span { font-size: 12px; opacity: .75; }
.mapa .ko span:first-child { text-decoration: line-through; } .mapa .ko span:first-child { text-decoration: line-through; }
@media (max-width: 1100px) {
.ejes { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 900px) { @media (max-width: 900px) {
.ejes, .paises { grid-template-columns: repeat(2, minmax(0, 1fr)); } .ejes, .paises { grid-template-columns: repeat(2, minmax(0, 1fr)); }
} }

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><g clip-path="url(#c)"><path d="M57,33 H77 C64,48 102,60 92,76 H40 C58,60 40,48 57,33 Z" fill="#f45a1c"/><ellipse cx="65" cy="76" rx="26" ry="5.5" fill="#f45a1c"/><ellipse cx="65" cy="76" rx="16.1" 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> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath><g clip-path="url(#c)"><path d="M50,33 L0,19 V53 L50,39 L100,53 V19 Z" fill="#ffc21a" opacity=".9"/><circle cx="50" cy="36" r="19" fill="none" stroke="#ffc21a" stroke-width="3" opacity="0.9"/><circle cx="50" cy="36" r="27" fill="none" stroke="#ffc21a" stroke-width="2.2" opacity="0.55"/><circle cx="50" cy="36" r="12" fill="#ffc21a"/><circle cx="50" cy="36" r="6.5" fill="#fff4b8"/><path d="M42,46 H58 L65,100 H35 Z" fill="#111"/><path d="M42.0,56 H58.0 L59.4,62 H40.6 Z" fill="#fff"/><path d="M39.9,72 H60.1 L61.4,78 H38.6 Z" fill="#fff"/><rect x="39" y="43" width="22" height="4" rx="1" fill="#111"/><path d="M44,43 V31 M56,43 V31" stroke="#111" stroke-width="2.6"/><path d="M41,31 L50,21 L59,31 Z" fill="#111"/></g><circle cx="50" cy="50" r="45" fill="none" stroke="#111" stroke-width="7"/></svg>

Before

Width:  |  Height:  |  Size: 641 B

After

Width:  |  Height:  |  Size: 947 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

After

Width:  |  Height:  |  Size: 5.6 KiB

View file

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 140 170" width="140" height="170"><defs><filter id="spray" x="-30%" y="-10%" width="160%" height="120%"><feTurbulence type="fractalNoise" baseFrequency="0.8" numOctaves="2" seed="3" result="t"/><feDisplacementMap in="SourceGraphic" in2="t" scale="1.6" result="d"/><feGaussianBlur in="d" stdDeviation=".4" result="b"/><feGaussianBlur in="SourceGraphic" stdDeviation="2.5" result="n"/><feComponentTransfer in="n" result="n2"><feFuncA type="linear" slope=".3"/></feComponentTransfer><feMerge><feMergeNode in="n2"/><feMergeNode in="b"/></feMerge></filter></defs><path d="M38.5,38.0 L32.9,40.1 L43.0,42.0 L32.8,43.7 L43.5,45.5 L30.2,47.6 L42.6,49.8 L35.1,51.8 L38.9,53.7 L27.9,57.9 L45.3,61.2 L26.9,64.5 L47.4,67.8 L31.5,72.1 L46.2,75.8 L31.3,80.0 L44.8,83.5 L29.9,86.8 L45.0,90.9 L30.3,94.1 L45.2,98.1 L30.6,101.7 L41.6,105.6 L34.4,109.4 L42.8,113.1 L36.5,117.1 L39.6,121.2 L33.7,124.5 L42.3,127.9 L38.3,132.0 L37.5,135.8 L32.9,139.4 L43.3,142.7 L40.7,146.9" fill="none" stroke="#8e44c9" stroke-width="1.8" stroke-linejoin="round" stroke-linecap="round" filter="url(#spray)"/><path d="M102.6,36.0 L97.5,37.9 L107.0,39.9 L93.9,42.2 L108.4,44.5 L96.3,46.8 L106.6,48.7 L99.5,51.0 L103.4,53.1 L93.0,57.5 L110.7,62.1 L92.3,65.6 L111.8,70.1 L93.0,74.1 L109.9,77.9 L93.3,81.8 L108.4,86.4 L92.4,90.1 L108.0,94.3 L94.2,98.3 L107.5,102.8 L97.7,107.4 L105.3,111.1 L97.9,115.5 L106.8,119.8 L100.9,123.3 L102.4,127.3 L97.1,131.8 L107.5,135.5 L103.1,139.6 L100.5,143.4 L96.5,148.0 L108.3,152.5" fill="none" stroke="#8e44c9" stroke-width="1.9" stroke-linejoin="round" stroke-linecap="round" filter="url(#spray)"/><path d="M70.8,20.0 L63.6,22.5 L78.0,25.3 L62.9,27.8 L79.2,30.6 L63.3,32.8 L74.8,35.4 L67.9,37.7 L71.1,39.9 L58.1,44.4 L80.5,49.3 L56.3,53.5 L81.9,58.4 L60.3,63.4 L79.3,68.2 L58.5,73.1 L81.1,77.2 L62.9,81.3 L79.3,85.4 L59.5,90.6 L78.1,94.8 L60.5,100.2 L76.6,105.3 L64.1,109.7 L76.5,114.1 L63.0,119.2 L75.1,123.5 L63.2,128.1 L76.0,132.8 L64.3,137.7 L74.1,142.4 L65.5,147.1 L72.9,151.5 L67.2,156.6" fill="none" stroke="#8e44c9" stroke-width="2.2" stroke-linejoin="round" stroke-linecap="round" filter="url(#spray)"/><path d="M80.4,48.0 L77.4,43.3 L82.2,38.7 L79.2,34.0 L84.1,29.3 L81.1,24.7 L86.0,20.0 L83.0,15.3 L87.8,10.7 L84.8,6.0" fill="none" stroke="#8e44c9" stroke-width="2.2" stroke-linecap="round" filter="url(#spray)"/></svg>

Before

Width:  |  Height:  |  Size: 2.3 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 6.4 KiB

Before After
Before After

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 140 170" width="140" height="170"><defs><filter id="spray" x="-30%" y="-10%" width="160%" height="120%"><feTurbulence type="fractalNoise" baseFrequency="0.8" numOctaves="2" seed="3" result="t"/><feDisplacementMap in="SourceGraphic" in2="t" scale="1.6" result="d"/><feGaussianBlur in="d" stdDeviation=".4" result="b"/><feGaussianBlur in="SourceGraphic" stdDeviation="2.5" result="n"/><feComponentTransfer in="n" result="n2"><feFuncA type="linear" slope=".3"/></feComponentTransfer><feMerge><feMergeNode in="n2"/><feMergeNode in="b"/></feMerge></filter></defs><path d="M71.6,23.4 L63.8,26.3 L79.0,28.8 L58.1,31.5 L84.8,34.0 L52.0,36.5 L89.3,39.4 L46.9,42.1 L97.5,44.7 L41.2,47.1 L102.9,49.4 L35.6,51.7 L108.7,54.5 L30.5,56.8 L113.3,59.7 L22.4,62.5 L118.9,64.8 L18.3,67.3 L126.7,69.9" fill="none" stroke="#f04e23" stroke-width="3.6" stroke-linejoin="round" stroke-linecap="round" filter="url(#spray)"/><path d="M53.3,73.4 L23.0,76.0 L54.3,78.7 L23.0,81.3 L53.1,84.0 L23.9,86.9 L55.1,89.2 L23.6,92.1 L53.5,95.0 L24.2,97.7 L53.0,100.5 L23.2,102.7 L54.7,105.2 L23.1,108.0 L53.3,110.8 L24.0,113.0 L55.0,115.9 L24.7,118.5 L53.2,120.9 L24.4,123.8 L53.6,126.2 L22.9,129.0 L54.7,131.3 L23.8,133.7 L53.9,136.3 L23.4,138.7 L54.6,141.6 L22.9,144.5 L54.8,146.8" fill="none" stroke="#f04e23" stroke-width="3.6" stroke-linejoin="round" stroke-linecap="round" filter="url(#spray)"/><path d="M116.7,73.4 L85.7,75.9 L115.8,78.6 L84.9,81.2 L116.3,84.1 L85.9,86.5 L117.0,89.2 L87.0,91.5 L114.9,94.1 L86.5,96.6 L116.2,98.9 L86.2,101.6 L114.8,103.8 L85.2,106.8 L116.2,109.1 L86.6,111.3 L115.6,114.1 L86.0,116.8 L115.2,119.6 L85.0,121.8 L117.2,124.7 L86.6,127.2 L116.2,129.6 L86.1,132.1 L116.9,135.0 L86.8,137.9 L115.3,140.5 L86.3,143.4 L115.7,145.7 L86.7,147.9" fill="none" stroke="#f04e23" stroke-width="3.6" stroke-linejoin="round" stroke-linecap="round" filter="url(#spray)"/><path d="M84.8,73.4 L55.0,76.1 L86.6,79.0 L54.1,81.4 L86.2,83.8 L53.3,86.3 L85.1,89.0 L54.3,91.3 L85.1,94.1" fill="none" stroke="#f04e23" stroke-width="3.6" stroke-linejoin="round" stroke-linecap="round" filter="url(#spray)"/><path d="M97.8,49.1 L99.0,25.5 L108.9,26.0 L110.1,59.8" fill="none" stroke="#f04e23" stroke-width="5.0" stroke-linejoin="round" stroke-linecap="round" opacity="1" filter="url(#spray)"/><path d="M98.2,49.1 L97.2,26.2 L109.0,25.9 L109.4,60.6" fill="none" stroke="#f04e23" stroke-width="3.0" stroke-linejoin="round" stroke-linecap="round" opacity="0.7" filter="url(#spray)"/><path d="M30.0,144.0 L30.0,166.0" stroke="#f04e23" stroke-width="2.4" stroke-linecap="round" filter="url(#spray)"/><circle cx="30.0" cy="166.0" r="2.2" fill="#f04e23" filter="url(#spray)"/><path d="M47.0,144.0 L47.1,158.0" stroke="#f04e23" stroke-width="2.4" stroke-linecap="round" filter="url(#spray)"/><circle cx="47.0" cy="158.0" r="2.2" fill="#f04e23" filter="url(#spray)"/><path d="M92.0,144.0 L91.8,172.0" stroke="#f04e23" stroke-width="2.4" stroke-linecap="round" filter="url(#spray)"/><circle cx="92.0" cy="172.0" r="2.2" fill="#f04e23" filter="url(#spray)"/><path d="M110.0,144.0 L110.0,160.0" stroke="#f04e23" stroke-width="2.4" stroke-linecap="round" filter="url(#spray)"/><circle cx="110.0" cy="160.0" r="2.2" fill="#f04e23" filter="url(#spray)"/></svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 140 170" width="140" height="170"><defs><filter id="spray" x="-30%" y="-10%" width="160%" height="120%"><feTurbulence type="fractalNoise" baseFrequency="0.8" numOctaves="2" seed="3" result="t"/><feDisplacementMap in="SourceGraphic" in2="t" scale="1.6" result="d"/><feGaussianBlur in="d" stdDeviation=".4" result="b"/><feGaussianBlur in="SourceGraphic" stdDeviation="2.5" result="n"/><feComponentTransfer in="n" result="n2"><feFuncA type="linear" slope=".3"/></feComponentTransfer><feMerge><feMergeNode in="n2"/><feMergeNode in="b"/></feMerge></filter></defs><path d="M125.8,47.4 L14.9,50.1 L125.3,52.4 L13.1,54.7 L125.2,56.9 L15.2,59.5 L125.7,62.2 L14.5,64.8 L125.0,67.2 L14.3,70.1 L125.0,72.4 L15.1,74.7 L99.3,77.0" fill="none" stroke="#8e44c9" stroke-width="3.6" stroke-linejoin="round" stroke-linecap="round" filter="url(#spray)"/><path d="M124.9,97.4 L15.3,100.0 L125.3,102.9 L13.4,105.3 L126.4,107.5 L13.8,110.4 L126.5,112.6 L14.4,115.4 L126.8,117.9 L14.2,120.6 L125.4,123.2 L14.7,125.8 L55.2,128.5" fill="none" stroke="#8e44c9" stroke-width="3.6" stroke-linejoin="round" stroke-linecap="round" filter="url(#spray)"/><path d="M30.0,73.0 L30.4,87.0" stroke="#8e44c9" stroke-width="2.4" stroke-linecap="round" filter="url(#spray)"/><circle cx="30.0" cy="87.0" r="2.2" fill="#8e44c9" filter="url(#spray)"/><path d="M100.0,69.0 L99.5,79.0" stroke="#8e44c9" stroke-width="2.4" stroke-linecap="round" filter="url(#spray)"/><circle cx="100.0" cy="79.0" r="2.2" fill="#8e44c9" filter="url(#spray)"/><path d="M46.0,123.0 L45.6,145.0" stroke="#8e44c9" stroke-width="2.4" stroke-linecap="round" filter="url(#spray)"/><circle cx="46.0" cy="145.0" r="2.2" fill="#8e44c9" filter="url(#spray)"/><path d="M112.0,120.0 L111.7,134.0" stroke="#8e44c9" stroke-width="2.4" stroke-linecap="round" filter="url(#spray)"/><circle cx="112.0" cy="134.0" r="2.2" fill="#8e44c9" filter="url(#spray)"/></svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View file

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 140 170" width="140" height="170"><defs><filter id="spray" x="-30%" y="-10%" width="160%" height="120%"><feTurbulence type="fractalNoise" baseFrequency="0.8" numOctaves="2" seed="3" result="t"/><feDisplacementMap in="SourceGraphic" in2="t" scale="1.6" result="d"/><feGaussianBlur in="d" stdDeviation=".4" result="b"/><feGaussianBlur in="SourceGraphic" stdDeviation="2.5" result="n"/><feComponentTransfer in="n" result="n2"><feFuncA type="linear" slope=".3"/></feComponentTransfer><feMerge><feMergeNode in="n2"/><feMergeNode in="b"/></feMerge></filter></defs><path d="M38.4,38.0 L34.4,40.2 L44.4,42.2 L31.5,44.5 L43.0,46.6 L32.6,48.6 L41.9,50.9 L36.9,53.1 L49.3,56.5 L29.3,60.6 L47.1,63.9 L28.0,67.7 L46.6,71.6 L30.2,75.4 L44.3,78.7 L28.9,82.9 L47.0,86.5 L32.2,90.2 L45.2,94.4 L30.8,98.7 L44.8,102.0 L33.9,106.1 L40.9,109.6 L34.3,113.6 L42.9,117.8 L36.7,121.0 L38.2,124.6 L32.5,128.5 L42.7,132.3 L38.8,136.1 L36.5,140.4 L32.1,143.6 L43.3,147.5" fill="none" stroke="#3b5bdb" stroke-width="1.8" stroke-linejoin="round" stroke-linecap="round" filter="url(#spray)"/><path d="M102.5,36.0 L98.1,38.3 L107.2,40.7 L95.1,43.0 L107.3,44.9 L94.4,47.4 L107.1,49.4 L100.6,51.9 L111.4,56.4 L92.1,60.7 L112.6,65.3 L91.0,69.7 L112.0,73.6 L94.5,77.1 L110.1,81.7 L93.5,85.9 L110.3,89.7 L95.1,94.2 L108.2,98.1 L93.8,101.7 L107.0,106.0 L97.7,110.2 L104.3,113.9 L97.6,117.6 L106.4,122.2 L101.6,126.2 L102.6,129.7 L96.6,133.8 L108.0,138.4 L103.3,143.0 L99.6,146.7 L96.3,151.1 L108.1,154.5" fill="none" stroke="#3b5bdb" stroke-width="1.9" stroke-linejoin="round" stroke-linecap="round" filter="url(#spray)"/><path d="M70.7,20.0 L65.1,22.4 L76.5,24.6 L62.9,27.0 L78.7,29.3 L63.4,32.1 L75.7,34.3 L66.8,37.0 L71.1,39.7 L60.2,44.7 L82.9,49.0 L57.9,53.7 L81.9,58.1 L59.4,62.5 L82.5,67.2 L59.8,72.2 L80.2,77.4 L60.7,82.4 L77.6,87.2 L60.9,92.5 L78.6,97.7 L63.7,101.7 L78.2,107.0 L61.6,112.3 L78.3,116.6 L63.0,121.4 L75.1,126.2 L64.7,130.9 L74.7,135.3 L65.9,139.9 L74.9,144.1 L66.5,148.6 L73.5,153.7 L67.7,158.3" fill="none" stroke="#3b5bdb" stroke-width="2.2" stroke-linejoin="round" stroke-linecap="round" filter="url(#spray)"/><path d="M80.4,48.0 L77.4,43.3 L82.2,38.7 L79.2,34.0 L84.1,29.3 L81.1,24.7 L86.0,20.0 L83.0,15.3 L87.8,10.7 L84.8,6.0" fill="none" stroke="#3b5bdb" stroke-width="2.2" stroke-linecap="round" filter="url(#spray)"/></svg>

Before

Width:  |  Height:  |  Size: 2.3 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 6.4 KiB

View file

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 140 170" width="140" height="170"><defs><filter id="spray" x="-30%" y="-10%" width="160%" height="120%"><feTurbulence type="fractalNoise" baseFrequency="0.8" numOctaves="2" seed="3" result="t"/><feDisplacementMap in="SourceGraphic" in2="t" scale="1.6" result="d"/><feGaussianBlur in="d" stdDeviation=".4" result="b"/><feGaussianBlur in="SourceGraphic" stdDeviation="2.5" result="n"/><feComponentTransfer in="n" result="n2"><feFuncA type="linear" slope=".3"/></feComponentTransfer><feMerge><feMergeNode in="n2"/><feMergeNode in="b"/></feMerge></filter></defs><path d="M38.5,38.0 L34.6,40.3 L45.3,42.2 L32.6,44.4 L45.8,46.4 L33.5,48.4 L41.3,50.7 L36.8,52.9 L49.8,56.6 L28.2,60.0 L49.3,63.3 L29.0,66.7 L48.3,70.8 L28.0,74.1 L45.4,78.3 L31.3,82.3 L44.3,85.7 L29.5,89.3 L46.8,93.0 L32.2,97.2 L43.0,100.9 L34.3,104.7 L40.3,108.6 L34.4,112.5 L42.4,116.6 L35.9,119.9 L38.5,124.2 L33.3,128.5 L43.2,132.3 L39.5,136.4 L36.1,139.6 L32.3,143.2 L43.3,147.2" fill="none" stroke="#f04e23" stroke-width="1.8" stroke-linejoin="round" stroke-linecap="round" filter="url(#spray)"/><path d="M102.5,36.0 L97.8,37.9 L109.5,40.4 L93.9,42.6 L107.9,44.6 L95.2,47.1 L106.4,49.1 L101.1,51.5 L103.4,53.5 L92.2,57.2 L111.8,61.2 L93.6,65.0 L112.6,69.4 L95.0,73.9 L112.3,77.6 L92.2,81.4 L109.8,85.2 L94.3,89.4 L107.9,93.5 L94.2,97.9 L109.0,101.7 L97.1,105.9 L106.3,109.3 L98.4,113.4 L107.0,117.3 L100.0,120.9 L103.4,125.0 L97.6,128.4 L106.9,133.0 L102.4,136.7 L101.3,140.1 L96.4,144.5 L107.9,148.6 L105.3,152.9" fill="none" stroke="#f04e23" stroke-width="1.9" stroke-linejoin="round" stroke-linecap="round" filter="url(#spray)"/><path d="M70.5,20.0 L63.0,22.9 L78.2,25.3 L61.4,27.7 L78.5,30.2 L61.4,33.1 L75.7,36.0 L68.8,38.6 L82.8,43.8 L59.0,48.0 L83.0,52.0 L61.7,57.4 L82.8,62.3 L58.5,67.5 L80.3,71.7 L59.9,76.2 L78.0,80.7 L62.7,85.5 L79.3,89.7 L63.2,94.7 L77.8,98.8 L60.6,103.0 L75.6,107.4 L62.8,112.1 L76.9,116.7 L64.8,120.8 L74.5,125.6 L65.2,130.2 L75.1,135.3 L65.9,140.1 L74.1,144.8 L66.1,149.5 L73.5,154.2 L67.8,158.8" fill="none" stroke="#f04e23" stroke-width="2.2" stroke-linejoin="round" stroke-linecap="round" filter="url(#spray)"/><path d="M80.4,48.0 L77.4,43.3 L82.2,38.7 L79.2,34.0 L84.1,29.3 L81.1,24.7 L86.0,20.0 L83.0,15.3 L87.8,10.7 L84.8,6.0" fill="none" stroke="#f04e23" stroke-width="2.2" stroke-linecap="round" filter="url(#spray)"/></svg>

Before

Width:  |  Height:  |  Size: 2.3 KiB

View file

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 140 170" width="140" height="170"><defs><filter id="spray" x="-30%" y="-10%" width="160%" height="120%"><feTurbulence type="fractalNoise" baseFrequency="0.8" numOctaves="2" seed="3" result="t"/><feDisplacementMap in="SourceGraphic" in2="t" scale="1.6" result="d"/><feGaussianBlur in="d" stdDeviation=".4" result="b"/><feGaussianBlur in="SourceGraphic" stdDeviation="2.5" result="n"/><feComponentTransfer in="n" result="n2"><feFuncA type="linear" slope=".3"/></feComponentTransfer><feMerge><feMergeNode in="n2"/><feMergeNode in="b"/></feMerge></filter></defs><path d="M38.5,38.0 L34.6,39.9 L44.1,42.2 L31.2,44.4 L45.3,46.4 L31.4,48.5 L42.7,50.7 L37.1,52.7 L48.7,56.1 L27.9,59.5 L45.1,63.4 L31.2,67.5 L48.0,71.7 L28.7,75.1 L44.5,79.1 L31.7,83.1 L46.2,87.3 L32.5,91.6 L45.3,95.2 L32.5,99.1 L42.4,103.3 L35.4,106.8 L40.5,110.7 L33.7,114.7 L41.8,118.3 L37.0,121.7 L38.4,125.7 L32.9,129.7 L43.3,133.9 L39.6,137.5 L35.8,140.8 L32.2,144.9 L43.3,149.0" fill="none" stroke="#14965a" stroke-width="1.8" stroke-linejoin="round" stroke-linecap="round" filter="url(#spray)"/><path d="M102.5,36.0 L96.8,38.5 L108.8,40.9 L93.6,43.0 L108.0,45.5 L95.4,47.7 L105.6,50.1 L100.5,52.2 L110.8,56.0 L93.1,60.3 L110.8,64.8 L93.2,69.3 L112.2,73.8 L94.5,78.1 L108.5,81.8 L93.1,85.4 L108.9,88.9 L95.6,93.0 L108.4,96.8 L96.3,101.1 L106.3,105.7 L98.5,110.0 L105.7,114.0 L96.8,118.6 L107.0,122.0 L100.8,126.6 L102.7,130.6 L96.3,134.3 L107.0,138.6 L103.3,142.7 L100.2,146.5 L95.7,151.1 L107.8,154.9" fill="none" stroke="#14965a" stroke-width="1.9" stroke-linejoin="round" stroke-linecap="round" filter="url(#spray)"/><path d="M70.7,20.0 L63.4,22.8 L77.7,25.3 L60.5,27.7 L77.2,30.4 L62.4,33.0 L74.7,35.4 L68.6,38.0 L71.7,40.5 L60.8,45.7 L82.7,50.9 L61.5,55.9 L79.1,60.9 L60.5,66.1 L78.5,70.6 L61.6,75.8 L79.4,81.0 L60.2,85.3 L76.7,90.0 L62.6,95.2 L79.1,99.2 L62.8,104.2 L77.4,108.5 L62.4,113.3 L76.8,118.0 L64.8,123.0 L75.7,127.3 L63.9,132.3 L74.7,137.5 L66.5,142.5 L73.1,147.1 L65.8,152.3 L73.1,157.2" fill="none" stroke="#14965a" stroke-width="2.2" stroke-linejoin="round" stroke-linecap="round" filter="url(#spray)"/><path d="M80.4,48.0 L77.4,43.3 L82.2,38.7 L79.2,34.0 L84.1,29.3 L81.1,24.7 L86.0,20.0 L83.0,15.3 L87.8,10.7 L84.8,6.0" fill="none" stroke="#14965a" stroke-width="2.2" stroke-linecap="round" filter="url(#spray)"/></svg>

Before

Width:  |  Height:  |  Size: 2.3 KiB

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"/><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath><g clip-path="url(#c)"><path d="M50,33 L0,19 V53 L50,39 L100,53 V19 Z" fill="#ffc21a" opacity=".9"/><circle cx="50" cy="36" r="19" fill="none" stroke="#ffc21a" stroke-width="3" opacity="0.9"/><circle cx="50" cy="36" r="27" fill="none" stroke="#ffc21a" stroke-width="2.2" opacity="0.55"/><circle cx="50" cy="36" r="12" fill="#ffc21a"/><circle cx="50" cy="36" r="6.5" fill="#fff4b8"/><path d="M42,46 H58 L65,100 H35 Z" fill="#fff"/><path d="M42.0,56 H58.0 L59.4,62 H40.6 Z" fill="#111"/><path d="M39.9,72 H60.1 L61.4,78 H38.6 Z" fill="#111"/><rect x="39" y="43" width="22" height="4" rx="1" fill="#fff"/><path d="M44,43 V31 M56,43 V31" stroke="#fff" stroke-width="2.6"/><path d="M41,31 L50,21 L59,31 Z" fill="#fff"/></g><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: 991 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><g clip-path="url(#c)"><path d="M57,33 H77 C64,48 102,60 92,76 H40 C58,60 40,48 57,33 Z" fill="#f45a1c"/><ellipse cx="65" cy="76" rx="26" ry="5.5" fill="#f45a1c"/><ellipse cx="65" cy="76" rx="16.1" 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> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath><g clip-path="url(#c)"><path d="M50,33 L0,19 V53 L50,39 L100,53 V19 Z" fill="#ffc21a" opacity=".9"/><circle cx="50" cy="36" r="19" fill="none" stroke="#ffc21a" stroke-width="3" opacity="0.9"/><circle cx="50" cy="36" r="27" fill="none" stroke="#ffc21a" stroke-width="2.2" opacity="0.55"/><circle cx="50" cy="36" r="12" fill="#ffc21a"/><circle cx="50" cy="36" r="6.5" fill="#fff4b8"/><path d="M42,46 H58 L65,100 H35 Z" fill="#111"/><path d="M42.0,56 H58.0 L59.4,62 H40.6 Z" fill="#fff"/><path d="M39.9,72 H60.1 L61.4,78 H38.6 Z" fill="#fff"/><rect x="39" y="43" width="22" height="4" rx="1" fill="#111"/><path d="M44,43 V31 M56,43 V31" stroke="#111" stroke-width="2.6"/><path d="M41,31 L50,21 L59,31 Z" fill="#111"/></g><circle cx="50" cy="50" r="45" fill="none" stroke="#111" stroke-width="7"/></svg>

Before

Width:  |  Height:  |  Size: 641 B

After

Width:  |  Height:  |  Size: 947 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

Binary file not shown.

View file

@ -1,8 +1,8 @@
# Genera sites/<web>/img/eje-*.svg: una piña pequeña de tres monigotes de un trazo en zigzag, # Genera sites/<web>/img/eje-*.svg: un símbolo por eje pintado con spray (relleno en zigzag,
# en el color de cada eje del ideario (los mismos colores que los regueros del dibujo). # trazos con pulso y chorreones), en el color de cada eje (los mismos que los regueros del dibujo).
import sys, random, math, os import sys, random, math, os
OUT = sys.argv[1] OUT = sys.argv[1]
EJES = {"techo": "#f04e23", "tierra": "#14965a", "fronteras": "#f2b705", "paz": "#3b5bdb", "feminismos": "#8e44c9"} EJES = {"hogar": "#f04e23", "clima": "#14965a", "fronteras": "#f2b705", "pueblos": "#3b5bdb", "igualdad": "#8e44c9"}
DEFS = ('<defs><filter id="spray" x="-30%" y="-10%" width="160%" height="120%"><feTurbulence type="fractalNoise" baseFrequency="0.8" numOctaves="2" seed="3" result="t"/>' DEFS = ('<defs><filter id="spray" x="-30%" y="-10%" width="160%" height="120%"><feTurbulence type="fractalNoise" baseFrequency="0.8" numOctaves="2" seed="3" result="t"/>'
'<feDisplacementMap in="SourceGraphic" in2="t" scale="1.6" result="d"/><feGaussianBlur in="d" stdDeviation=".4" result="b"/>' '<feDisplacementMap in="SourceGraphic" in2="t" scale="1.6" result="d"/><feGaussianBlur in="d" stdDeviation=".4" result="b"/>'
'<feGaussianBlur in="SourceGraphic" stdDeviation="2.5" result="n"/><feComponentTransfer in="n" result="n2"><feFuncA type="linear" slope=".3"/></feComponentTransfer>' '<feGaussianBlur in="SourceGraphic" stdDeviation="2.5" result="n"/><feComponentTransfer in="n" result="n2"><feFuncA type="linear" slope=".3"/></feComponentTransfer>'
@ -34,11 +34,102 @@ def monigote(o, x, y, h, col, brazo=False, paso=False):
p = [(bx + j / 9 * h * .06 + (-1 if j % 2 else 1) * h * .014, by - j / 9 * h * .3) for j in range(10)] p = [(bx + j / 9 * h * .06 + (-1 if j % 2 else 1) * h * .014, by - j / 9 * h * .3) for j in range(10)]
o.append(f'<path d="M' + " L".join(f"{px:.1f},{py:.1f}" for px, py in p) + f'" fill="none" stroke="{col}" stroke-width="{sw:.1f}" stroke-linecap="round" filter="url(#spray)"/>') o.append(f'<path d="M' + " L".join(f"{px:.1f},{py:.1f}" for px, py in p) + f'" fill="none" stroke="{col}" stroke-width="{sw:.1f}" stroke-linecap="round" filter="url(#spray)"/>')
def j(v, a):
return v + random.uniform(-a, a)
def relleno(o, poly, col, paso=2.6, sw=3.6):
# Zigzag horizontal que rellena un polígono convexo, como una pasada de spray.
ys = [y for _, y in poly]
pts, y, i = [], min(ys) + sw * .4, 0
while y <= max(ys) - sw * .4:
xs = []
for (x1, y1), (x2, y2) in zip(poly, poly[1:] + poly[:1]):
if (y1 <= y < y2) or (y2 <= y < y1):
xs.append(x1 + (y - y1) * (x2 - x1) / (y2 - y1))
if len(xs) >= 2:
a, b = min(xs), max(xs)
pts.append((j(a if i % 2 else b, 1.2), y))
i += 1
y += paso * random.uniform(.85, 1.15)
o.append(f'<path d="M{" L".join(f"{x:.1f},{y:.1f}" for x, y in pts)}" fill="none" stroke="{col}" stroke-width="{sw:.1f}" stroke-linejoin="round" stroke-linecap="round" filter="url(#spray)"/>')
def linea(o, pts, col, sw=5):
# Trazo con pulso: dos pasadas ligeramente desplazadas.
for k in range(2):
d = "M" + " L".join(f"{j(x, 1.1):.1f},{j(y, 1.1):.1f}" for x, y in pts)
o.append(f'<path d="{d}" fill="none" stroke="{col}" stroke-width="{sw * (1 if k == 0 else .6):.1f}" stroke-linejoin="round" stroke-linecap="round" opacity="{1 if k == 0 else .7}" filter="url(#spray)"/>')
def chorreon(o, x, y, largo, col):
y -= 6
o.append(f'<path d="M{x:.1f},{y:.1f} L{j(x, .6):.1f},{y + largo:.1f}" stroke="{col}" stroke-width="2.4" stroke-linecap="round" filter="url(#spray)"/>')
o.append(f'<circle cx="{x:.1f}" cy="{y + largo:.1f}" r="2.2" fill="{col}" filter="url(#spray)"/>')
def hogar(o, col):
# Una casa: tejado, dos muros y el dintel; la puerta queda en blanco.
relleno(o, [(70, 22), (128, 72), (12, 72)], col)
relleno(o, [(24, 72), (54, 72), (54, 150), (24, 150)], col)
relleno(o, [(86, 72), (116, 72), (116, 150), (86, 150)], col)
relleno(o, [(54, 72), (86, 72), (86, 96), (54, 96)], col)
linea(o, [(98, 50), (98, 26), (110, 26), (110, 60)], col, 5)
for x, l in ((30, 22), (47, 14), (92, 28), (110, 16)):
chorreon(o, x, 150, l, col)
def clima(o, col):
# El planeta que se derrite: anillo en zigzag, meridianos y chorreones.
cx, cy, r, pts = 70, 72, 52, []
for i in range(220):
a = 2 * math.pi * i / 219
rr = r - (0 if i % 2 else 11) + random.uniform(-1.5, 1.5)
pts.append((cx + rr * math.cos(a), cy + rr * math.sin(a)))
o.append(f'<path d="M{" L".join(f"{x:.1f},{y:.1f}" for x, y in pts)}" fill="none" stroke="{col}" stroke-width="3.2" stroke-linejoin="round" filter="url(#spray)"/>')
linea(o, [(cx + 44 * math.cos(math.pi * k / 20), cy + 44 * math.sin(math.pi * k / 20) * .32) for k in range(21)], col, 4)
linea(o, [(cx + 44 * math.cos(math.pi * k / 20) * .38, cy - 44 * math.sin(math.pi * k / 20)) for k in range(-10, 11)], col, 4)
for x, l in ((40, 26), (55, 40), (72, 30), (88, 44), (102, 20)):
y0 = cy + math.sqrt(max(0, r * r - (x - cx) ** 2)) - 4
chorreon(o, x, y0, l, col)
def fronteras(o, col):
# Una valla rota: barrotes que se abren en el centro y alambre de espino cortado.
for x in (14, 32, 108, 126):
linea(o, [(x, 40), (x, 150)], col, 6)
linea(o, [(50, 150), (52, 100), (40, 56)], col, 6)
linea(o, [(90, 150), (88, 100), (100, 56)], col, 6)
linea(o, [(6, 62), (44, 66)], col, 5)
linea(o, [(96, 66), (134, 62)], col, 5)
linea(o, [(6, 112), (54, 114)], col, 5)
linea(o, [(86, 114), (134, 112)], col, 5)
for x, y in ((22, 64), (116, 64), (22, 113), (118, 113)):
linea(o, [(x - 4, y - 4), (x + 4, y + 4)], col, 4)
linea(o, [(x + 4, y - 4), (x - 4, y + 4)], col, 4)
def igualdad(o, col):
# El signo igual, en dos barras de spray con chorreones.
relleno(o, [(14, 50), (126, 46), (126, 76), (14, 80)], col)
relleno(o, [(14, 100), (126, 96), (126, 126), (14, 130)], col)
for x, y, l in ((30, 79, 14), (100, 75, 10), (46, 129, 22), (112, 126, 14)):
chorreon(o, x, y, l, col)
def eslabon(o, cx, cy, ang, col, roto=False):
# Un eslabón: óvalo a pulso; el roto se abre por un extremo.
ca, sa, pts = math.cos(ang), math.sin(ang), []
for k in range(29 if roto else 37):
t = 2 * math.pi * (k / 36 + (.12 if roto else 0))
x, y = 19 * math.cos(t), 11 * math.sin(t)
pts.append((cx + x * ca - y * sa, cy + x * sa + y * ca))
linea(o, pts, col, 7)
def pueblos(o, col):
# Una cadena rota: dos tramos enlazados que se abren en el centro, con chispas en el corte.
eslabon(o, 20, 118, -.3, col)
eslabon(o, 48, 108, -.3, col, roto=True)
eslabon(o, 92, 108, .3 + math.pi, col, roto=True)
eslabon(o, 120, 118, .3, col)
for a in (-2.5, -2.0, -1.57, -1.14, -.64):
linea(o, [(70 + 16 * math.cos(a), 96 + 16 * math.sin(a)), (70 + 36 * math.cos(a), 96 + 36 * math.sin(a))], col, 5)
os.makedirs(OUT, exist_ok=True) os.makedirs(OUT, exist_ok=True)
for n, (nombre, col) in enumerate(EJES.items()): for n, (nombre, col) in enumerate(EJES.items()):
random.seed(40 + n) random.seed(40 + n)
o = [] o = []
monigote(o, 38, 150, 112, col, paso=True) globals()[nombre](o, col)
monigote(o, 102, 156, 120, col, paso=True)
monigote(o, 70, 160, 140, col, brazo=True)
open(f"{OUT}/eje-{nombre}.svg", "w").write(f'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 140 170" width="140" height="170">{DEFS}' + "".join(o) + "</svg>\n") open(f"{OUT}/eje-{nombre}.svg", "w").write(f'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 140 170" width="140" height="170">{DEFS}' + "".join(o) + "</svg>\n")

50
tools/faro.py Normal file
View file

@ -0,0 +1,50 @@
# Genera el símbolo: un faro dentro de un aro grueso, como un emblema de tienda de graffiti.
# La luz es amarilla: un haz horizontal que se abre hacia los dos lados y un halo en círculo.
import sys
INK, BL, NAR = "#111", "#fff", "#f04e23"
LUZ, CLARA = "#ffc21a", "#fff4b8"
CX, CY = 50, 36 # centro de la linterna
def luz_(luz, clara):
# Haz: dos cuñas horizontales que se ensanchan hacia fuera, y ondas en círculo alrededor.
haz = (f'<path d="M{CX},{CY - 3} L0,{CY - 17} V{CY + 17} L{CX},{CY + 3} L100,{CY + 17} V{CY - 17} Z" fill="{luz}" opacity=".9"/>')
ondas = "".join(f'<circle cx="{CX}" cy="{CY}" r="{r}" fill="none" stroke="{luz}" stroke-width="{w}" opacity="{o}"/>'
for r, w, o in ((19, 3, .9), (27, 2.2, .55)))
halo = f'<circle cx="{CX}" cy="{CY}" r="12" fill="{luz}"/><circle cx="{CX}" cy="{CY}" r="6.5" fill="{clara}"/>'
return haz + ondas + halo
def torre(ink, papel):
# Torre que se estrecha hacia arriba, con dos franjas, la linterna y el tejado en punta.
cuerpo = f'<path d="M42,46 H58 L65,100 H35 Z" fill="{ink}"/>'
franjas = "".join(f'<path d="M{43.3 - (y - 46) * 7 / 54:.1f},{y} H{56.7 + (y - 46) * 7 / 54:.1f} L{57.3 + (y + 6 - 46) * 7 / 54:.1f},{y + 6} H{42.7 - (y + 6 - 46) * 7 / 54:.1f} Z" fill="{papel}"/>'
for y in (56, 72))
balcon = f'<rect x="39" y="43" width="22" height="4" rx="1" fill="{ink}"/>'
linterna = f'<path d="M44,43 V31 M56,43 V31" stroke="{ink}" stroke-width="2.6"/>'
tejado = f'<path d="M41,31 L50,21 L59,31 Z" fill="{ink}"/>'
return cuerpo + franjas + balcon + linterna + tejado
def faro(estilo="aro", ink=INK, luz=LUZ, papel=BL, clara=CLARA, clip="c", grueso=7, fondo_aro=None):
if estilo == "aro":
defs = f'<clipPath id="{clip}"><circle cx="50" cy="50" r="42"/></clipPath>'
fondo = f'<circle cx="50" cy="50" r="47" fill="{fondo_aro}"/>' if fondo_aro else ""
dentro = f'<g clip-path="url(#{clip})">{luz_(luz, clara)}{torre(ink, papel)}</g>'
aro = f'<circle cx="50" cy="50" r="45" fill="none" stroke="{ink}" stroke-width="{grueso}"/>'
return defs + fondo + dentro + aro
# Pegatina: círculo amarillo, la luz en blanco
defs = f'<clipPath id="{clip}"><circle cx="50" cy="50" r="48"/></clipPath>'
return defs + f'<circle cx="50" cy="50" r="48" fill="{luz}"/><g clip-path="url(#{clip})">{luz_(papel, BL)}{torre(ink, luz)}</g>'
def svg(cuerpo, fondo=None):
bg = f'<rect width="100" height="100" fill="{fondo}"/>' if fondo else ""
return f'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100">{bg}{cuerpo}</svg>\n'
def simbolo_mapa():
# El mismo faro para el <symbol id="faro"> del mapa estático: fondo blanco y aro más grueso.
return faro(clip="fc", grueso=9, fondo_aro=BL)
if __name__ == "__main__":
d = sys.argv[1]
open(f"{d}/simbolo.svg", "w").write(svg(faro()))
open(f"{d}/simbolo-negativo.svg", "w").write(svg(faro(ink=BL, papel=INK), INK))
open(f"{d}/simbolo-naranja.svg", "w").write(svg(faro(luz=BL, papel=NAR, clara="#ffe2a8"), NAR))
open(f"{d}/simbolo-pegatina.svg", "w").write(svg(faro("pegatina")))

View file

@ -1,64 +0,0 @@
import sys
NAR, LUZ, CLARA, INK, BL = "#f04e23", "#f45a1c", "#ffb03a", "#111", "#fff"
# 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",
# S pronunciada: los dos lados ondean hacia el mismo lado, como una bandera
"s": "M57,33 H77 C64,48 102,60 92,76 H40 C58,60 40,48 57,33 Z",
"s-media": "M57,33 H77 C70,48 96,60 92,76 H40 C54,60 46,48 57,33 Z",
# S en espejo: se estrecha arriba y se abre abajo como una llama
"s-espejo": "M57,33 H77 C66,50 100,58 92,76 H38 C30,58 68,50 57,33 Z",
"s-espejo-media": "M57,33 H77 C70,50 94,58 92,76 H38 C36,58 64,50 57,33 Z",
}
CHARCO = {"onda-suave": 24, "campana": 27, "onda": 25, "s": 26, "s-media": 26, "s-espejo": 27, "s-espejo-media": 27}
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 farola(estilo="aro", ink=INK, luz=LUZ, fondo=None, papel=BL, clara=CLARA, cono="s", 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'<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 + 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}"/>'
rayos = "".join(f'<path d="M{x0},{y0} L{x1},{y1}" stroke="{papel}" stroke-width="4" stroke-linecap="round"/>'
for x0, y0, x1, y1 in ((58, 35, 50, 52), (67, 36, 67, 56), (76, 35, 84, 52)))
return f'<defs><clipPath id="c"><circle cx="50" cy="50" r="48"/></clipPath></defs>{pegatina}<g clip-path="url(#c)">{poste}</g>{cabeza}{rayos}'
def svg(cuerpo, fondo=None):
bg = f'<rect width="100" height="100" fill="{fondo}"/>' if fondo else ""
return f'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100">{bg}{cuerpo}</svg>\n'
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, 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")))
for n, cono in enumerate(("s", "s-media", "s-espejo", "s-espejo-media"), 5):
open(f"{d}/propuestas/farola-{n}-{cono}.svg", "w").write(svg(farola(cono=cono)))