Maqueta del deck internacional

This commit is contained in:
hacklab 2026-10-13 12:34:08 +02:00
parent e3a5d631bf
commit 40636e566d
2 changed files with 182 additions and 0 deletions

81
mockup/css/deck.css Normal file
View file

@ -0,0 +1,81 @@
@font-face { font-family: "Rubik Wet Paint"; src: url("../fonts/rubik-wet-paint.woff2") format("woff2"); font-display: swap; }
@font-face { font-family: "Special Elite"; src: url("../fonts/special-elite.woff2") format("woff2"); font-display: swap; }
@font-face { font-family: "Anton"; src: url("../fonts/anton.woff2") format("woff2"); font-display: swap; }
:root {
--bg: #fff;
--fg: #000;
--neon: #ff1f1f;
--bd: 3px solid var(--fg);
--tit: "Rubik Wet Paint", Impact, sans-serif;
--zine: "Special Elite", "Courier New", monospace;
--bt: "Anton", Impact, "Arial Narrow", sans-serif;
--txt: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
}
*, *::before, *::after { box-sizing: border-box; }
body { margin: 0; background: var(--bg); color: var(--fg); font: 15px/1.45 var(--txt); }
a { color: inherit; }
.cab {
display: grid;
grid-template-columns: 260px 1fr auto;
align-items: center;
gap: 20px;
padding: 10px 20px;
border-bottom: var(--bd);
}
.cab img { width: 100%; height: auto; display: block; }
h1 {
margin: 0;
font: 400 clamp(40px, 6vw, 84px)/1 var(--tit);
text-transform: uppercase;
text-shadow: .03em .03em 0 var(--neon), .06em .06em 0 var(--neon);
}
.lema { margin: 22px 0 0; font: 18px var(--zine); }
.idiomas { display: flex; gap: 6px; font: 16px var(--bt); }
.idiomas a { border: var(--bd); border-radius: 6px; padding: 2px 8px; text-decoration: none; box-shadow: 3px 3px 0 var(--fg); }
.idiomas a[aria-current] { background: var(--fg); color: var(--bg); box-shadow: 3px 3px 0 var(--neon); }
.tags { display: flex; gap: 8px; flex-wrap: wrap; padding: 10px 20px; border-bottom: var(--bd); font: 15px var(--zine); }
.tags span { border: 2px dashed var(--fg); padding: 1px 8px; }
.tags span:first-child { background: var(--neon); color: #fff; border-style: solid; }
.deck { display: grid; grid-template-columns: 220px 1fr; min-height: 70vh; }
.arbol { border-right: var(--bd); padding: 14px 16px; font: 15px/1.7 var(--zine); }
.arbol h2, .col h2 { font: 400 22px/1 var(--bt); text-transform: uppercase; margin: 0 0 10px; }
.arbol ul { list-style: none; margin: 0; padding: 0 0 0 14px; border-left: 2px solid var(--fg); }
.arbol > ul { padding: 0; border: 0; }
.arbol .on { background: var(--fg); color: var(--bg); padding: 0 4px; }
.arbol .n { float: right; font: 13px var(--bt); }
.cols { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(260px, 1fr); overflow-x: auto; }
.col { border-right: var(--bd); padding: 14px 12px; }
.col h2 { display: flex; justify-content: space-between; align-items: baseline; border-bottom: var(--bd); padding-bottom: 6px; }
.col h2 small { font: 13px var(--zine); text-transform: none; }
.post { border: var(--bd); border-radius: 8px; padding: 10px 12px; margin: 0 0 12px; box-shadow: 4px 4px 0 var(--fg); }
.post p { margin: 6px 0 0; }
.meta { display: flex; gap: 8px; justify-content: space-between; font: 13px var(--zine); }
.red { white-space: nowrap; font: 12px/1 var(--bt); text-transform: uppercase; border: 2px solid var(--fg); border-radius: 4px; padding: 2px 5px; }
.post.cola { box-shadow: 4px 4px 0 var(--neon); }
.votos { margin-top: 8px; display: flex; gap: 6px; align-items: center; font: 13px var(--zine); }
.votos b { font: 14px var(--bt); border: 2px solid var(--fg); border-radius: 4px; padding: 1px 8px; }
.votos b.si { background: var(--fg); color: var(--bg); }
.directo { background: var(--fg); color: var(--bg); }
.directo .red { border-color: var(--neon); background: var(--neon); color: #fff; }
.mapa { font: 14px/1.6 var(--zine); margin: 0; padding: 0; list-style: none; }
.mapa li { display: flex; justify-content: space-between; border-bottom: 1px dashed var(--fg); }
.mapa .ko { text-decoration: line-through; }
@media (max-width: 700px) {
.cab { grid-template-columns: 1fr; text-align: center; padding: 10px 12px; }
.cab img { max-width: 360px; margin: 0 auto; }
.idiomas { justify-content: center; }
.tags { padding: 8px 12px; font-size: 13px; }
.deck { grid-template-columns: 1fr; }
.arbol { display: none; }
.cols { grid-auto-columns: 86vw; scroll-snap-type: x mandatory; }
.col { scroll-snap-align: start; }
}

101
mockup/index.html Normal file
View file

@ -0,0 +1,101 @@
<!doctype html>
<html lang="es">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>TAKE THE STREET · deck (maqueta)</title>
<link rel="stylesheet" href="css/deck.css">
</head>
<body>
<header class="cab">
<img src="../docs/calle.svg" alt="Gente con una pancarta «¡A la calle!» delante de las tiendas de una acampada">
<div>
<h1>Take the street</h1>
<p class="lema">La vivienda es un derecho, no un negocio · red internacional de acampadas</p>
</div>
<nav class="idiomas"><a href="#" aria-current="page">ES</a><a href="#">EN</a><a href="#">PT</a><a href="#">IT</a><a href="#">FR</a></nav>
</header>
<div class="tags"><span>#takethestreet</span><span>#26s</span><span>#acampadaporto</span><span>#generazionesenzacasa</span><span>#11N</span><span>#viviendaya</span></div>
<main class="deck">
<nav class="arbol" aria-label="Colectivos">
<h2>Colectivos</h2>
<ul>
<li><span class="on">TAKE THE STREET</span>
<ul>
<li>España <span class="n">11</span>
<ul><li>Madrid 26S</li><li>Barcelona</li><li>Sevilla</li><li>Bilbao</li><li>…</li></ul>
</li>
<li>Portugal <span class="n">1</span><ul><li>Porto</li></ul></li>
<li>Italia <span class="n">3</span><ul><li>Milano</li><li>Roma</li><li>CAU</li></ul></li>
<li>France <span class="n">?</span></li>
</ul>
</li>
</ul>
</nav>
<div class="cols">
<section class="col">
<h2>Cola de aprobación <small>3 pendientes</small></h2>
<article class="post cola">
<div class="meta"><span>de: Porto → TAKE THE STREET</span><span class="red">IG · Masto · TG</span></div>
<p>Convocatoria conjunta: el 26 de cada mes, todas las plazas a la vez. ES / PT / IT / FR / EN.</p>
<div class="votos"><b class="si">✓</b><b>·</b> 1 de 2 aprobaciones</div>
</article>
<article class="post cola">
<div class="meta"><span>de: Madrid 26S</span><span class="red">IG · Masto</span></div>
<p>Hilo traducido: qué es la huelga general del 11N y por qué empieza en las acampadas.</p>
<div class="votos"><b class="si">✓</b><b class="si">✓</b> aprobado · sale a las 20:00</div>
</article>
</section>
<section class="col">
<h2>Madrid 26S <small>@acampada26s</small></h2>
<article class="post directo">
<div class="meta"><span>Sol</span><span class="red">● directo</span></div>
<p>Asamblea general desde la plaza. PeerTube + sala abierta.</p>
</article>
<article class="post">
<div class="meta"><span>hace 12 min</span><span class="red">Mastodon</span></div>
<p>Ejemplo: acta de la asamblea y turnos de la noche en la wiki.</p>
</article>
</section>
<section class="col">
<h2>Porto <small>@acampadaporto</small></h2>
<article class="post">
<div class="meta"><span>Praça D. João I</span><span class="red">Instagram</span></div>
<p>Exemplo: tiraram as tendas, mas a assembleia continua. Concentração às 19h.</p>
</article>
</section>
<section class="col">
<h2>Italia <small>Milano · Roma</small></h2>
<article class="post">
<div class="meta"><span>Statale, Milano</span><span class="red">Instagram</span></div>
<p>Esempio: tende in cortile contro il caro affitti. 19/10 mobilitazione nazionale.</p>
</article>
<article class="post">
<div class="meta"><span>Termini, Roma</span><span class="red">Telegram</span></div>
<p>Esempio: assemblea pubblica il 15/10.</p>
</article>
</section>
<section class="col">
<h2>Mapa <small>13/10</small></h2>
<ul class="mapa">
<li><span>Madrid · Sol</span><span>activa</span></li>
<li><span>Sevilla · Setas</span><span>activa</span></li>
<li><span>Barcelona</span><span>activa</span></li>
<li><span>Porto</span><span>asamblea</span></li>
<li><span>Milano · Statale</span><span>activa</span></li>
<li><span>Roma</span><span>activa</span></li>
<li class="ko"><span>Málaga</span><span>levantada</span></li>
<li class="ko"><span>Granada</span><span>levantada</span></li>
</ul>
</section>
</div>
</main>
</body>
</html>