tawasuyu

tawasuyu/brahman

Rust 483TOML 191Markdown 50JSON 176778 Definitions

⎇ 88a3aae7626ce823f3142cfbefaa834b39ceb62f crates/apps/gioser-web/styles.css CSS · 455 lines · 9.2 KB History raw

portada: reticula 2px, hover con glow masivo rgba(220,0.35) que llena, cuadrante bg+inset 88a3aae76 · Sergio ·

1/* ===================================================
2   GioSer · Estilos de Portada (Chakana 2×2)
3   =================================================== */
4
5*,
6*::before,
7*::after {
8  margin: 0;
9  padding: 0;
10  box-sizing: border-box;
11}
12
13:root {
14  --bg: #0c0c0c;
15  --bg-alt: #111;
16  --fg: #c8c8c8;
17  --fg-dim: #666;
18  --fg-bright: #e0e0e0;
19  --accent: #a0a0a0;
20  --font: 'SF Mono', 'JetBrains Mono', 'Fira Code', 'Cascadia Code', monospace;
21  --font-ui: -apple-system, 'Inter', 'Segoe UI', sans-serif;
22}
23
24html, body {
25  height: 100%;
26  width: 100%;
27  overflow: hidden;
28  background: var(--bg);
29  color: var(--fg);
30  font-family: var(--font);
31  font-size: 14px;
32  line-height: 1.4;
33  -webkit-font-smoothing: antialiased;
34}
35
36/* ===================================================
37   PORTADA — grid 2×2
38   =================================================== */
39
40.portada {
41  position: fixed;
42  inset: 0;
43  display: grid;
44  grid-template-columns: 1fr 1fr;
45  grid-template-rows: 1fr 1fr;
46  z-index: 10;
47  background: var(--bg);
48}
49
50/* ===================================================
51   RETÍCULA — 2px, brillo rotundo, glow masivo en hover
52   =================================================== */
53
54.portada::before {
55  content: '';
56  position: absolute;
57  top: 0; left: 0; right: 0; bottom: 0;
58  z-index: 30;
59  pointer-events: none;
60  transition: all 0.35s ease;
61  background:
62    linear-gradient(90deg, transparent calc(50% - 1px), rgba(180,180,180,0.5) calc(50% - 1px), rgba(180,180,180,0.65) calc(50% + 1px), transparent calc(50% + 1px)),
63    linear-gradient(0deg, transparent calc(50% - 1px), rgba(180,180,180,0.5) calc(50% - 1px), rgba(180,180,180,0.65) calc(50% + 1px), transparent calc(50% + 1px)),
64    radial-gradient(circle at 50% 50%, transparent calc(14px), rgba(180,180,180,0.55) calc(14px), rgba(180,180,180,0.55) calc(17px), transparent calc(17px));
65}
66
67.portada-hover::before {
68  background:
69    linear-gradient(90deg, transparent calc(50% - 1px), rgba(255,255,255,0.85) calc(50% - 1px), rgba(255,255,255,0.95) calc(50% + 1px), transparent calc(50% + 1px)),
70    linear-gradient(0deg, transparent calc(50% - 1px), rgba(255,255,255,0.85) calc(50% - 1px), rgba(255,255,255,0.95) calc(50% + 1px), transparent calc(50% + 1px)),
71    radial-gradient(circle at 50% 50%, transparent calc(14px), rgba(255,255,255,0.9) calc(14px), rgba(255,255,255,0.9) calc(17px), transparent calc(17px)),
72    radial-gradient(circle at 50% 50%, rgba(220,220,220,0.35) 0%, rgba(220,220,220,0.20) 15%, rgba(200,200,200,0.10) 30%, transparent 55%);
73}
74
75/* ===================================================
76   CUADRANTES
77   =================================================== */
78
79.cuadrante {
80  position: relative;
81  background: transparent;
82  border: none;
83  cursor: pointer;
84  z-index: 5;
85  overflow: hidden;
86  transition: background 0.3s ease;
87  text-align: left;
88  font-family: var(--font);
89  color: var(--fg);
90  padding: 0;
91}
92
93.cuadrante:hover {
94  background: rgba(200, 200, 200, 0.10);
95  box-shadow: inset 0 0 0 1px rgba(220,220,220,0.25);
96}
97
98/* Borde iluminado en hover */
99.cuadrante-border {
100  position: absolute;
101  inset: -1px;
102  border: 1px solid transparent;
103  transition: border-color 0.3s ease;
104  pointer-events: none;
105}
106
107.cuadrante:hover .cuadrante-border {
108  border-color: rgba(200,200,200,0.3);
109}
110
111/* Contenido */
112.cuadrante-content {
113  position: absolute;
114  inset: 0;
115  display: flex;
116  flex-direction: column;
117  justify-content: center;
118  padding: 40px 32px;
119  opacity: 0.7;
120  transition: opacity 0.3s ease;
121}
122
123.cuadrante:hover .cuadrante-content {
124  opacity: 1;
125}
126
127/* Alineación: izquierda mira a la derecha, derecha mira a la izquierda */
128.cuadrante-01 .cuadrante-content,
129.cuadrante-02 .cuadrante-content {
130  align-items: flex-end;
131  text-align: right;
132  padding-right: 40px;
133  padding-left: 20px;
134}
135
136.cuadrante-00 .cuadrante-content,
137.cuadrante-03 .cuadrante-content {
138  align-items: flex-start;
139  text-align: left;
140  padding-left: 40px;
141  padding-right: 20px;
142}
143
144.cuadrante-hex {
145  font-size: 11px;
146  font-weight: 600;
147  color: var(--fg-dim);
148  letter-spacing: 0.15em;
149  margin-bottom: 6px;
150  font-family: var(--font);
151}
152
153.cuadrante-title {
154  font-size: 17px;
155  font-weight: 600;
156  color: var(--fg-bright);
157  letter-spacing: 0.06em;
158  margin-bottom: 12px;
159  font-family: var(--font-ui);
160}
161
162.cuadrante-context {
163  font-size: 13px;
164  color: var(--fg-dim);
165  line-height: 1.6;
166  margin-bottom: 16px;
167  max-width: 70%;
168  font-family: var(--font-ui);
169}
170
171.cuadrante-01 .cuadrante-context,
172.cuadrante-02 .cuadrante-context {
173  text-align: right;
174}
175
176.cuadrante-00 .cuadrante-context,
177.cuadrante-03 .cuadrante-context {
178  text-align: left;
179}
180
181.cuadrante-meta {
182  display: flex;
183  align-items: center;
184  gap: 14px;
185  margin-bottom: 12px;
186}
187
188.cuadrante-01 .cuadrante-meta,
189.cuadrante-02 .cuadrante-meta {
190  flex-direction: row-reverse;
191}
192
193.cuadrante-00 .cuadrante-meta,
194.cuadrante-03 .cuadrante-meta {
195  flex-direction: row;
196}
197
198.meta-cta {
199  font-size: 11px;
200  font-weight: 600;
201  color: var(--accent);
202  font-family: var(--font);
203  letter-spacing: 0.05em;
204  border: 1px solid #333;
205  padding: 2px 8px;
206  border-radius: 2px;
207  transition: border-color 0.3s ease, color 0.3s ease;
208}
209
210.cuadrante:hover .meta-cta {
211  border-color: var(--fg-bright);
212  color: var(--fg-bright);
213}
214
215.meta-stat {
216  font-size: 10px;
217  color: var(--fg-dim);
218  letter-spacing: 0.08em;
219  font-family: var(--font);
220  opacity: 0;
221  transition: opacity 0.4s ease;
222}
223
224.cuadrante:hover .meta-stat {
225  opacity: 0.7;
226}
227
228.cuadrante-crates {
229  list-style: none;
230  font-size: 11px;
231  color: var(--fg-dim);
232  font-family: var(--font);
233  line-height: 1.6;
234  margin: 0;
235  opacity: 0;
236  transition: opacity 0.4s ease;
237}
238
239.cuadrante:hover .cuadrante-crates {
240  opacity: 0.6;
241}
242
243.cuadrante-crates li::before {
244  content: '◆ ';
245  color: var(--fg-dim);
246  font-size: 7px;
247  opacity: 0.4;
248}
249
250/* ===================================================
251   TRANSICIÓN CIERRE PORTADA
252   =================================================== */
253
254.portada-closing {
255  animation: portadaFade 0.6s ease forwards;
256}
257
258@keyframes portadaFade {
259  0% {
260    opacity: 1;
261    pointer-events: auto;
262  }
263  100% {
264    opacity: 0;
265    pointer-events: none;
266  }
267}
268
269/* ===================================================
270   DECK (páginas md, mismo estilo de antes)
271   =================================================== */
272
273.deck {
274  position: fixed;
275  inset: 0;
276  z-index: 20;
277  background: var(--bg);
278  opacity: 0;
279  transition: opacity 0.5s ease;
280}
281
282.deck:not([aria-hidden]) {
283  opacity: 1;
284}
285
286.deck-strip {
287  height: 100%;
288  width: 100%;
289  display: flex;
290  overflow-x: auto;
291  overflow-y: hidden;
292  scroll-snap-type: x mandatory;
293  -webkit-overflow-scrolling: touch;
294}
295
296/* ===================================================
297   CONTROLES DE PÁGINA
298   =================================================== */
299
300.page-controls {
301  position: fixed;
302  top: 12px;
303  right: 12px;
304  display: flex;
305  gap: 8px;
306  z-index: 100;
307  transition: opacity 0.3s ease;
308}
309
310.page-control-btn {
311  width: 32px;
312  height: 32px;
313  background: rgba(255,255,255,0.04);
314  border: 1px solid #333;
315  border-radius: 4px;
316  color: var(--fg);
317  cursor: pointer;
318  display: flex;
319  align-items: center;
320  justify-content: center;
321  transition: background 0.2s ease, border-color 0.2s ease;
322}
323
324.page-control-btn:hover {
325  background: rgba(255,255,255,0.08);
326  border-color: #666;
327}
328
329.page-close {
330  font-size: 18px;
331  font-family: var(--font-ui);
332  font-weight: 300;
333}
334
335/* ===================================================
336   TASKBAR
337   =================================================== */
338
339.taskbar {
340  position: fixed;
341  bottom: 0;
342  left: 0;
343  right: 0;
344  height: 40px;
345  background: rgba(12, 12, 12, 0.92);
346  border-top: 1px solid #333;
347  display: flex;
348  align-items: center;
349  gap: 6px;
350  padding: 0 10px;
351  z-index: 200;
352  backdrop-filter: blur(8px);
353  -webkit-backdrop-filter: blur(8px);
354  font-family: var(--font);
355  font-size: 12px;
356}
357
358.taskbar-home,
359.taskbar-brand {
360  display: flex;
361  align-items: center;
362  gap: 4px;
363  color: var(--fg);
364  cursor: pointer;
365  text-decoration: none;
366  background: transparent;
367  border: none;
368  font-family: var(--font);
369  font-size: 12px;
370  padding: 4px 8px;
371  border-radius: 3px;
372  transition: background 0.2s ease;
373}
374
375.taskbar-home:hover,
376.taskbar-brand:hover {
377  background: rgba(255,255,255,0.06);
378}
379
380.taskbar-home-glyph {
381  width: 16px;
382  height: 16px;
383}
384
385.brand-dot {
386  color: var(--fg-dim);
387  margin: 0 1px;
388}
389
390.taskbar-divider {
391  width: 1px;
392  height: 20px;
393  background: #333;
394  margin: 0 4px;
395}
396
397.taskbar-list {
398  display: flex;
399  gap: 2px;
400  list-style: none;
401  margin: 0;
402  padding: 0;
403  max-width: 60vw;
404  overflow-x: auto;
405}
406
407.taskbar-list::-webkit-scrollbar {
408  height: 0;
409}
410
411.taskbar-spacer {
412  flex: 1;
413}
414
415.taskbar-credit {
416  color: var(--fg-dim);
417  text-decoration: none;
418  display: flex;
419  align-items: center;
420  gap: 4px;
421  padding: 4px 8px;
422  border-radius: 3px;
423  transition: color 0.2s ease;
424  font-size: 11px;
425}
426
427.taskbar-credit:hover {
428  color: var(--fg);
429}
430
431.copyleft-mark {
432  font-size: 11px;
433}
434
435/* ===================================================
436   SCROLLBAR
437   =================================================== */
438
439::-webkit-scrollbar {
440  width: 6px;
441  height: 6px;
442}
443
444::-webkit-scrollbar-track {
445  background: transparent;
446}
447
448::-webkit-scrollbar-thumb {
449  background: #333;
450  border-radius: 3px;
451}
452
453::-webkit-scrollbar-thumb:hover {
454  background: #666;
455}