tawasuyu

tawasuyu/brahman

Rust 506TOML 198Markdown 56JSON 197212 Sutichaykuna

⎇ 2545d3108dda328e199a5c4170b4082fbbacf5a1 crates/apps/gioser-web/index.html HTML · 195 siq'ikuna · 8.7 KB Ñawpa willay ch'uya

portada chakana 2x2: reticula, 4 cuadrantes 0x00-0x03, hover metadatos, canvas opaco atras 2545d3108 · Sergio ·

1<!doctype html>
2<html lang="es">
3<head>
4  <meta charset="utf-8">
5  <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
6  <meta name="description" content="GioSer · arquitectura de sistemas distribuidos">
7  <title>GioSer · 0x00–0x03</title>
8  <link rel="stylesheet" href="/styles.css">
9</head>
10<body>
11  <!-- Canvas de fondo (opcional para portada, necesario para WASM) -->
12  <canvas id="gioser-canvas" style="position:fixed;inset:0;width:100%;height:100%;pointer-events:none;opacity:0;z-index:0;" aria-hidden="true"></canvas>
13
14  <!-- Portada: retícula 2×2 tipo chakana -->
15  <div id="portada" class="portada">
16    <!-- Líneas de la retícula -->
17    <div class="reticula-v" aria-hidden="true"></div>
18    <div class="reticula-h" aria-hidden="true"></div>
19    <div class="reticula-center" aria-hidden="true"></div>
20
21    <!-- Cuadrante I: 0x00 - Bare-Metal OS (sup-der) -->
22    <button class="cuadrante cuadrante-00" data-q="00" aria-label="0x00 Bare-Metal OS">
23      <div class="cuadrante-border"></div>
24      <div class="cuadrante-content">
25        <span class="cuadrante-hex">0x00</span>
26        <span class="cuadrante-title">Bare-Metal OS</span>
27        <span class="cuadrante-context">El control directo sobre el silicio y la secuencia de arranque.</span>
28        <div class="cuadrante-meta">
29          <span class="meta-cta">⏎ init</span>
30          <span class="meta-stat">init · boot · sovereign</span>
31        </div>
32        <ul class="cuadrante-crates">
33          <li>arjé (Init/Nivel 0)</li>
34        </ul>
35      </div>
36    </button>
37
38    <!-- Cuadrante II: 0x01 - Systems & Compositors (sup-izq) -->
39    <button class="cuadrante cuadrante-01" data-q="01" aria-label="0x01 Systems & Compositors">
40      <div class="cuadrante-border"></div>
41      <div class="cuadrante-content">
42        <span class="cuadrante-hex">0x01</span>
43        <span class="cuadrante-title">Systems &amp; Compositors</span>
44        <span class="cuadrante-context">Entorno operativo intermedio para Linux libres de telemetría.</span>
45        <div class="cuadrante-meta">
46          <span class="meta-cta">⏎ shell</span>
47          <span class="meta-stat">compositor · launcher</span>
48        </div>
49        <ul class="cuadrante-crates">
50          <li>eidolon (Compositor Wayland)</li>
51          <li>shimi (Shell/Launcher)</li>
52        </ul>
53      </div>
54    </button>
55
56    <!-- Cuadrante III: 0x02 - Simulators & Geometry (inf-izq) -->
57    <button class="cuadrante cuadrante-02" data-q="02" aria-label="0x02 Simulators & Geometry">
58      <div class="cuadrante-border"></div>
59      <div class="cuadrante-content">
60        <span class="cuadrante-hex">0x02</span>
61        <span class="cuadrante-title">Simulators &amp; Geometry</span>
62        <span class="cuadrante-context">Modelado del tiempo en bloque, frecuencias celestes, simulación determinista.</span>
63        <div class="cuadrante-meta">
64          <span class="meta-cta">⏎ simulate</span>
65          <span class="meta-stat">efemérides · orbital · mundos</span>
66        </div>
67        <ul class="cuadrante-crates">
68          <li>eternal (Efemérides analíticas)</li>
69          <li>cosmobiología (Canvas orbital)</li>
70          <li>dominium (Simulador de mundos)</li>
71        </ul>
72      </div>
73    </button>
74
75    <!-- Cuadrante IV: 0x03 - Core & Orchestration (inf-der) -->
76    <button class="cuadrante cuadrante-03" data-q="03" aria-label="0x03 Core & Orchestration">
77      <div class="cuadrante-border"></div>
78      <div class="cuadrante-content">
79        <span class="cuadrante-hex">0x03</span>
80        <span class="cuadrante-title">Core &amp; Orchestration</span>
81        <span class="cuadrante-context">Motor invisible: persistencia local-first, P2P, ERP, encriptación.</span>
82        <div class="cuadrante-meta">
83          <span class="meta-cta">⏎ orchestrate</span>
84          <span class="meta-stat">dht · p2p · erp</span>
85        </div>
86        <ul class="cuadrante-crates">
87          <li>brahman (Supervisor)</li>
88          <li>minga / minga-vfs (FS distribuido)</li>
89          <li>brahman-auth · nakui (ERP)</li>
90        </ul>
91      </div>
92    </button>
93  </div>
94
95  <!-- DECK: contenedor para páginas md (oculto hasta expandir cuadrante) -->
96  <div id="deck" class="deck" aria-hidden="true">
97    <div id="deck-strip" class="deck-strip" role="region" aria-label="Vistas abiertas"></div>
98  </div>
99
100  <!-- Controles fijos -->
101  <div class="page-controls" id="global-page-controls" style="opacity:0;pointer-events:none;">
102    <button class="page-control-btn page-minimize" data-minimize type="button" aria-label="Minimizar">
103      <svg viewBox="0 0 24 24" aria-hidden="true"><path d="M5 19 H19" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round"/></svg>
104    </button>
105    <button class="page-control-btn page-close" data-close-page type="button" aria-label="Cerrar">×</button>
106  </div>
107
108  <!-- Taskbar -->
109  <nav class="taskbar" aria-label="Barra de vistas">
110    <button class="taskbar-home" data-home aria-label="Volver a la chakana" type="button">
111      <svg viewBox="0 0 24 24" class="taskbar-home-glyph" aria-hidden="true">
112        <path d="M3 12 L12 3 L21 12" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linejoin="round" stroke-linecap="round"/>
113        <path d="M5 11 V20 H10 V14 H14 V20 H19 V11" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linejoin="round"/>
114        <circle cx="12" cy="17" r="0.8" fill="currentColor"/>
115      </svg>
116    </button>
117    <a class="taskbar-brand" href="#" aria-label="GioSer">
118      <span>Gio</span><span class="brand-dot">·</span><span>Ser</span>
119    </a>
120    <span class="taskbar-divider" aria-hidden="true"></span>
121    <ul class="taskbar-list" id="taskbar-list" role="presentation"></ul>
122    <span class="taskbar-spacer" aria-hidden="true"></span>
123    <a class="taskbar-credit" href="https://sergio.gioser.net" target="_blank" rel="noopener noreferrer" aria-label="Copyleft sergio">
124      <span class="copyleft-mark" aria-hidden="true">©</span>
125      <span class="taskbar-credit-text">sergio@gioser.net</span>
126    </a>
127  </nav>
128
129  <!-- Tips ocultos para navegación WASM (se mantienen para compatibilidad) -->
130  <div id="tips" hidden aria-hidden="true">
131    <a id="tip-aire" href="#aire" data-md="/md/aire.md"></a>
132    <a id="tip-fuego" href="#fuego" data-md="/md/fuego.md"></a>
133    <a id="tip-tierra" href="#tierra" data-md="/md/tierra.md"></a>
134    <a id="tip-agua" href="#agua" data-md="/md/agua.md"></a>
135    <a id="tip-cuerpo" href="#cuerpo" data-md="/md/cuerpo.md"></a>
136    <a id="tip-sombra" href="#sombra" data-md="/md/sombra.md"></a>
137    <a id="tip-cosmos" href="#cosmos" data-md="/md/cosmos.md"></a>
138    <a id="tip-practica" href="#practica" data-md="/md/practica.md"></a>
139    <a id="tip-olvido" href="#olvido" data-md="/md/olvido.md"></a>
140  </div>
141
142  <script type="module">
143    // Mapa: cuadrante hex → camino md
144    const Q_TO_CAMINO = {
145      '00': 'aire',    // Bare-Metal → Software
146      '01': 'fuego',   // Systems → Quién Soy
147      '02': 'tierra',  // Simulators → Manifiesto
148      '03': 'agua',    // Core → Mística
149    };
150
151    // JS de portada: hover/click en cuadrantes
152    const portada = document.getElementById('portada');
153    const deck = document.getElementById('deck');
154    const controls = document.getElementById('global-page-controls');
155
156    document.querySelectorAll('.cuadrante').forEach(q => {
157      q.addEventListener('click', function(e) {
158        const hex = this.dataset.q;
159        const camino = Q_TO_CAMINO[hex] || 'aire';
160        // cerrar portada
161        portada.classList.add('portada-closing');
162        // mostrar deck
163        deck.removeAttribute('aria-hidden');
164        controls.style.opacity = '1';
165        controls.style.pointerEvents = 'auto';
166        // navegar vía hash para que el WASM lo atrape
167        // (el WASM escucha popstate + lee hash al boot)
168        history.pushState({}, '', '/estudio/' + camino);
169        window.dispatchEvent(new PopStateEvent('popstate'));
170      });
171    });
172
173    // Botón home en taskbar: volver a portada
174    document.querySelectorAll('[data-home]').forEach(btn => {
175      btn.addEventListener('click', function(e) {
176        e.preventDefault();
177        portada.classList.remove('portada-closing');
178        deck.setAttribute('aria-hidden', 'true');
179        controls.style.opacity = '0';
180        controls.style.pointerEvents = 'none';
181        history.pushState({}, '', '/');
182      });
183    });
184
185    // Importar WASM existente
186    import init from "/pkg/gioser_web.js";
187    init().catch(err => {
188      console.error(err);
189      document.body.insertAdjacentHTML('beforeend',
190        '<pre style="color:#f59056;position:fixed;left:1rem;bottom:1rem;max-width:90vw;white-space:pre-wrap;font-family:monospace;z-index:9999">' +
191        String(err) + '</pre>');
192    });
193  </script>
194</body>
195</html>