MarianaCodebase commited on
Commit
a350892
·
verified ·
1 Parent(s): 7c654bf

Upload index.html with huggingface_hub

Browse files
Files changed (1) hide show
  1. index.html +280 -0
index.html ADDED
@@ -0,0 +1,280 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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.0" />
6
+ <title>Lost Frequency Radio</title>
7
+ <link rel="stylesheet" href="/static/css/radio.css?v=2" />
8
+ </head>
9
+ <body>
10
+ <!-- Moving galaxy behind everything -->
11
+ <canvas id="galaxy" class="galaxy" aria-hidden="true"></canvas>
12
+ <div class="nebula nebula-a" aria-hidden="true"></div>
13
+ <div class="nebula nebula-b" aria-hidden="true"></div>
14
+
15
+ <!-- Boot screen: the wow before the radio -->
16
+ <div id="boot" class="boot">
17
+ <div class="boot-inner">
18
+ <div class="boot-portal" aria-hidden="true">
19
+ <span class="portal-ring portal-ring-1"></span>
20
+ <span class="portal-ring portal-ring-2"></span>
21
+ <span class="portal-ring portal-ring-3"></span>
22
+ <span class="portal-sweep"></span>
23
+ <img src="/static/img/host.webp" alt="" class="boot-host" draggable="false" />
24
+ </div>
25
+ <h1 class="boot-title" data-text="LOST FREQUENCY RADIO">LOST&nbsp;FREQUENCY&nbsp;RADIO</h1>
26
+ <div class="boot-strip" aria-hidden="true">
27
+ <span>87</span><span>92</span><span>97</span><span>·</span>
28
+ <span>102</span><span>108</span><span>112</span>
29
+ </div>
30
+ <p class="boot-sub" id="boot-sub">una radio que recibe universos perdidos</p>
31
+
32
+ <div class="boot-mission" id="boot-mission">
33
+ <div class="mission-step">
34
+ <span class="mission-num">1</span>
35
+ <span class="mission-body" id="mission-1"></span>
36
+ </div>
37
+ <div class="mission-step">
38
+ <span class="mission-num">2</span>
39
+ <span class="mission-body" id="mission-2"></span>
40
+ </div>
41
+ <div class="mission-step">
42
+ <span class="mission-num">3</span>
43
+ <span class="mission-body" id="mission-3"></span>
44
+ </div>
45
+ <div class="mission-step">
46
+ <span class="mission-num">4</span>
47
+ <span class="mission-body" id="mission-4"></span>
48
+ </div>
49
+ </div>
50
+
51
+ <div class="boot-langs" id="boot-langs" role="group" aria-label="Language">
52
+ <button type="button" data-lang="en">EN</button>
53
+ <button type="button" data-lang="es" class="active">ES</button>
54
+ </div>
55
+ <button type="button" id="power-btn" class="power-btn">
56
+ <span class="power-icon">⏻</span>
57
+ <span id="power-label">ENCENDER</span>
58
+ </button>
59
+ <p class="boot-hint" id="boot-hint">cada oyente recibe emisiones distintas</p>
60
+ </div>
61
+ </div>
62
+
63
+ <div class="tv-cabinet">
64
+ <div class="tv-screen" id="tv-screen">
65
+ <div class="screen-content">
66
+
67
+ <header class="screen-header">
68
+ <h1>LOST&nbsp;FREQUENCY&nbsp;RADIO</h1>
69
+ <p id="tagline">universos paralelos · sintonía manual</p>
70
+ </header>
71
+
72
+ <div class="screen-main">
73
+
74
+ <!-- Left panel: the transmission -->
75
+ <section class="panel panel-left">
76
+ <div id="transmission" class="transmission">— estática —</div>
77
+ <div id="console-wrap" class="console-wrap hidden">
78
+ <div id="console-log" class="console-log"></div>
79
+ <div class="console-input-row">
80
+ <span class="console-prompt">&gt;</span>
81
+ <input id="console-input" class="console-input" type="text"
82
+ autocomplete="off" spellcheck="false"
83
+ placeholder="transmitir de vuelta..." />
84
+ </div>
85
+ </div>
86
+ </section>
87
+
88
+ <!-- Center panel: tuning gauge -->
89
+ <section class="panel panel-center">
90
+ <div class="gauge-wrap" id="gauge-wrap" tabindex="0"
91
+ aria-label="Dial de frecuencia">
92
+ <svg id="dial" class="gauge-svg" viewBox="0 0 220 150">
93
+ <path class="gauge-arc" d="" id="gauge-arc-bg" />
94
+ <g id="dial-ticks"></g>
95
+ <line id="needle" class="dial-needle" x1="110" y1="124" x2="110" y2="34" />
96
+ <circle cx="110" cy="124" r="9" class="gauge-hub" />
97
+ </svg>
98
+ <div class="gauge-ornament" aria-hidden="true"></div>
99
+ </div>
100
+ <div id="freq-display" class="freq-display">95.0</div>
101
+ <div class="meters">
102
+ <div class="vu-meter" aria-hidden="true"><div id="vu-bar" class="vu-bar"></div></div>
103
+ <div id="tuning-lamp" class="tuning-lamp" title="Luz de sintonía"></div>
104
+ </div>
105
+ <div id="station-name" class="station-name">· · ·</div>
106
+ </section>
107
+
108
+ <!-- Right panel: the announcer -->
109
+ <section class="panel panel-right">
110
+ <div class="announcer-frame" id="announcer-frame">
111
+ <img id="announcer-img" class="announcer-img" alt="" draggable="false" />
112
+ <div class="announcer-nosignal" id="announcer-nosignal" aria-hidden="true"></div>
113
+ <div class="speech-bubble" id="speech-bubble" aria-hidden="true">
114
+ <span></span><span></span><span></span>
115
+ </div>
116
+ </div>
117
+ <div class="talk-bars" id="talk-bars" aria-hidden="true">
118
+ <i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i>
119
+ </div>
120
+ </section>
121
+ </div>
122
+
123
+ <canvas id="scope" class="scope" width="640" height="64" aria-hidden="true"></canvas>
124
+
125
+ <!-- Endgame HUD: appears in the secret band; shows fragment progress -->
126
+ <div id="mission-hud" class="mission-hud hidden" aria-hidden="true">
127
+ <div class="mission-hud-text" id="mission-hud-text"></div>
128
+ <div class="mission-hud-track">
129
+ <div id="mission-hud-fill" class="mission-hud-fill"></div>
130
+ </div>
131
+ <div class="mission-hud-pips" id="mission-hud-pips"></div>
132
+ </div>
133
+
134
+ <p class="hint" id="hint">gira el dial · busca las voces entre la estática</p>
135
+
136
+ <!-- Endgame answer bar: the operator speaks in the screen, you type here -->
137
+ <div id="endgame-bar" class="endgame-bar hidden">
138
+ <span class="endgame-caret" aria-hidden="true">&gt;</span>
139
+ <input id="endgame-input" class="endgame-input" type="text"
140
+ autocomplete="off" spellcheck="false" placeholder="..." />
141
+ </div>
142
+ </div>
143
+
144
+ <canvas id="noise" class="noise-canvas" aria-hidden="true"></canvas>
145
+ <div class="crt-scanlines" aria-hidden="true"></div>
146
+ <div class="crt-vignette" aria-hidden="true"></div>
147
+ <div class="crt-glass" aria-hidden="true"></div>
148
+
149
+ <!-- Operator intercept: the number-station warden warns you off as you
150
+ drift toward its frequency -->
151
+ <div id="intercept" class="intercept" aria-hidden="true">
152
+ <div class="intercept-frame">
153
+ <img id="intercept-img" class="intercept-img"
154
+ src="/static/img/st_1047.webp" alt="" draggable="false" />
155
+ </div>
156
+ <div class="intercept-text" id="intercept-text"></div>
157
+ </div>
158
+ </div>
159
+
160
+ <!-- Wooden bezel: the big tuning dial on the left, controls on the right -->
161
+ <div class="bezel">
162
+
163
+ <!-- Left wing: the prominent physical tuning knob -->
164
+ <div class="bezel-side bezel-left">
165
+ <div class="knob-housing">
166
+ <div id="tune-knob" class="tune-knob" tabindex="0" role="slider"
167
+ aria-label="Perilla de sintonía" aria-valuemin="87"
168
+ aria-valuemax="112" aria-valuenow="95">
169
+ <div class="knob-skirt" aria-hidden="true"></div>
170
+ <div id="knob-face" class="knob-face">
171
+ <span class="knob-marker" aria-hidden="true"></span>
172
+ <span class="knob-grip" aria-hidden="true"></span>
173
+ </div>
174
+ </div>
175
+ </div>
176
+ <span class="bezel-label knob-label" id="label-tuning">SINTONÍA</span>
177
+ </div>
178
+
179
+ <!-- Center: speaker grill flanking the help / host assistant button -->
180
+ <div class="bezel-mid">
181
+ <div class="speaker-grill" aria-hidden="true"></div>
182
+ <div class="help-wrap">
183
+ <button type="button" id="guide-btn" class="guide-btn" title="¿Qué es esto?">
184
+ <span class="guide-q" aria-hidden="true">?</span>
185
+ </button>
186
+ <span class="bezel-label help-label" id="label-help">AYUDA</span>
187
+ </div>
188
+ <div class="speaker-grill" aria-hidden="true"></div>
189
+ </div>
190
+
191
+ <!-- Right wing: language selector + static switch -->
192
+ <div class="bezel-side bezel-right">
193
+ <div class="bezel-group">
194
+ <span class="bezel-label" id="label-language">IDIOMA</span>
195
+ <div class="lang-switch" id="lang-switch" role="group" aria-label="Idioma">
196
+ <button type="button" data-lang="en">EN</button>
197
+ <button type="button" data-lang="es" class="active">ES</button>
198
+ </div>
199
+ </div>
200
+
201
+ <div class="bezel-group">
202
+ <span class="bezel-label" id="label-static">ESTÁTICA</span>
203
+ <button type="button" id="static-toggle" class="static-toggle on"
204
+ role="switch" aria-checked="true">
205
+ <span class="lever"></span>
206
+ <span class="state-on">ON</span>
207
+ <span class="state-off">OFF</span>
208
+ </button>
209
+ </div>
210
+ </div>
211
+ </div>
212
+ </div>
213
+
214
+ <!-- Field notebook: jot frequencies, the cipher, the fragments you find -->
215
+ <button id="notes-tab" class="notes-tab" type="button" aria-label="Notes">
216
+ <span class="notes-tab-icon">✎</span>
217
+ <span class="notes-tab-label" id="notes-tab-label">BITÁCORA</span>
218
+ </button>
219
+ <div id="notes-callout" class="notes-callout hidden" aria-hidden="true">
220
+ <span class="notes-callout-text" id="notes-callout-text"></span>
221
+ <span class="notes-callout-arrow" aria-hidden="true">&rarr;</span>
222
+ </div>
223
+ <aside id="notes-panel" class="notes-panel" aria-hidden="true">
224
+ <header class="notes-head">
225
+ <span id="notes-title">BITÁCORA</span>
226
+ <button id="notes-close" class="notes-close" type="button" aria-label="Close">×</button>
227
+ </header>
228
+ <div class="notes-section">
229
+ <div class="notes-label" id="notes-found-label">ESTACIONES</div>
230
+ <ul id="notes-found" class="notes-list"></ul>
231
+ </div>
232
+ <div class="notes-section">
233
+ <div class="notes-label" id="notes-cipher-label">CIFRADO</div>
234
+ <div id="notes-cipher" class="notes-cipher">—</div>
235
+ </div>
236
+ <div class="notes-section notes-grow">
237
+ <div class="notes-label" id="notes-scratch-label">APUNTES</div>
238
+ <textarea id="notes-scratch" class="notes-scratch" spellcheck="false"
239
+ placeholder="..."></textarea>
240
+ </div>
241
+ </aside>
242
+
243
+ <!-- Finale screen: the radio goes dark, a last word, and the credits roll -->
244
+ <div id="finale-screen" class="finale-screen hidden" aria-hidden="true">
245
+ <div class="finale-content">
246
+ <p class="finale-message" id="finale-message"></p>
247
+ <button type="button" id="finale-replay" class="finale-replay-btn"></button>
248
+ </div>
249
+ <div class="finale-credits" aria-hidden="true">
250
+ <div class="finale-credits-track">
251
+ <div class="finale-credits-block">
252
+ <p class="finale-credits-line finale-credits-title">LOST&nbsp;FREQUENCY&nbsp;RADIO</p>
253
+ <p class="finale-credits-line">Built by Mariana Sinisterra</p>
254
+ <p class="finale-credits-line finale-credits-heading">Tools</p>
255
+ <p class="finale-credits-line">Gradio</p>
256
+ <p class="finale-credits-line">OpenBMB · MiniCPM5-1B</p>
257
+ <p class="finale-credits-line">llama.cpp</p>
258
+ <p class="finale-credits-line finale-credits-heading">Built for</p>
259
+ <p class="finale-credits-line">Build Small Hackathon 2026</p>
260
+ <p class="finale-credits-line finale-credits-heading">Find me</p>
261
+ <p class="finale-credits-line">
262
+ <a href="https://github.com/Mariana-Codebase" target="_blank" rel="noopener">GitHub · Mariana-Codebase</a>
263
+ </p>
264
+ <p class="finale-credits-line">
265
+ <a href="https://www.linkedin.com/in/marianasinisterra/" target="_blank" rel="noopener">LinkedIn · marianasinisterra</a>
266
+ </p>
267
+ <p class="finale-credits-line">
268
+ <a href="https://marianacodebase.com" target="_blank" rel="noopener">marianacodebase.com</a>
269
+ </p>
270
+ <p class="finale-credits-line">
271
+ <a href="https://x.com/MarianaCodebase" target="_blank" rel="noopener">X · @MarianaCodebase</a>
272
+ </p>
273
+ </div>
274
+ </div>
275
+ </div>
276
+ </div>
277
+
278
+ <script type="module" src="/static/js/radio.js?v=2"></script>
279
+ </body>
280
+ </html>