PageSourceSearch

https://spacewaves2.net/about/

html spacewaves2.net collected 2026-09-26 03:39:10 UTC 79,777 bytes, 1,033 lines download raw bytes

1<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="naver-site-verification" content="4ede67ba010f46805db6673737c3267e5f1cc3d3"><meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover"><meta http-equiv="X-UA-Compatible" content="IE=edge"><title>About Space Waves | Space Waves</title><meta name="description" content="Learn about spacewaves2.net, our mission to make browser arcade games more accessible, what we offer players, and where we are taking the site next."><link rel="canonical" href="https://spacewaves2.net/about/"><meta name="naver-site-verification" content="4ede67ba010f46805db6673737c3267e5f1cc3d3"><link rel="icon" href="https://spacewaves2.net/favicon.png" type="image/png"><link rel="icon" href="https://spacewaves2.net/favicon.ico" type="image/x-icon"><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link rel="preload" as="style" href="https://fonts.googleapis.com/css2?family=Nunito:wght@400;700&display=swap"><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Nunito:wght@400;700&display=swap" media="print" onload="this.media='all'"><noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Nunito:wght@400;700&display=swap"></noscript><link rel="stylesheet" href="/template/default/css/twmin.css"><link rel="stylesheet" href="/template/default/css/site-header.css"><link rel="stylesheet" href="/template/default/css/favorites.css"><link rel="stylesheet" href="/template/default/css/site-footer.css"><meta property="og:type" content="website"><meta property="og:site_name" content="Space Waves Game"><meta property="og:title" content="About Space Waves | Space Waves"><meta property="og:description" content="Learn about spacewaves2.net, our mission to make browser arcade games more accessible, what we offer players, and where we are taking the site next."><meta property="og:url" content="https://spacewaves2.net/about/"><meta property="og:image" content="https://spacewaves2.net/android-chrome-192x192.png"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content="@Space Waves Game" /><meta name="twitter:creator" content="@Space Waves Game" /><meta name="twitter:title" content="About Space Waves | Space Waves" /><meta name="twitter:url" content="https://spacewaves2.net/about/" /><meta name="twitter:image" content="https://spacewaves2.net/favicon-32x32.png" /><meta name="twitter:description" content="Learn about spacewaves2.net, our mission to make browser arcade games more accessible, what we offer players, and where we are taking the site next."><meta name="twitter:card" content="summary" /><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"><link rel="manifest" href="/manifest.webmanifest"><meta name="theme-color" content="#6a0dad"><link rel="stylesheet" href="/template/default/css/privacy-consent.css">
1<script>
2(function () {
3    window.dataLayer = window.dataLayer || [];
4    window.gtag = window.gtag || function () { window.dataLayer.push(arguments); };
5
6    var saved = null;
7    try { saved = window.localStorage.getItem('spacewaves_consent_v1'); } catch (e) {}
8    var granted = saved === 'granted';
9
10    window.gtag('consent', 'default', {
11        ad_storage: granted ? 'granted' : 'denied',
12        analytics_storage: granted ? 'granted' : 'denied',
13        ad_user_data: granted ? 'granted' : 'denied',
14        ad_personalization: granted ? 'granted' : 'denied',
15        functionality_storage: 'granted',
16        security_storage: 'granted',
17        wait_for_update: 500
18    });
19    window.gtag('set', 'ads_data_redaction', true);
20    window.__spacewavesConsentSaved = saved === 'granted' || saved === 'denied';
21})();
22</script>
22<script defer src="/template/default/js/pwa-register.js"></script>
22<script defer src="/template/default/js/game-mobile-expand.js?v=play-expand-10"></script>
22<meta name="mobile-web-app-capable" content="yes" /><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"><meta name="apple-mobile-web-app-title" content="Space Waves Game"><style>
23    :root{
24        --font-sans:'Nunito',system-ui,sans-serif;
25        --default-font-family:'Nunito',system-ui,sans-serif;
26        --accent:#f1c40f;
27        --accent-rgb:241,196,15;
28        --accent-2:#ffdb00;
29        --accent-3:#d4a80a;
30        --accent-hover:#ffe566;
31        --bg:#6a0dad;
32        --bg-deep:#5a0099;
33        --page-bg-image:url('https://cdn.spacewaves2.net/images/mainbg.webp');
34        --bg-fallback:#1a0848;
35        --text:#fff;
36        --text-muted:#d1c4e9;
37        --text-secondary:#d1c4e9;
38        --prose-text:#e8ddf5;
39        --prose-heading:#fff;
40        --card-bg:#00175A;
41        --card-border:#4F5E89;
42        --border-subtle:#4F5E89;
43        --border-hover:#6a7aa8;
44        --surface:#00175A;
45        --surface-input:#001040;
46        --surface-elevated:#00175A;
47        --surface-contrast:#000;
48        --brand-green:#f1c40f;
49        --brand-yellow:#f1c40f;
50        --heading-color:#fff;
51        --ads-side-column:0px;
52        --site-content-max:min(1280px,90vw);
53    }
54    @media (max-width:768px){
55        :root{
56            --ads-side-column:0px;
57            --site-content-max:100%;
58        }
59        html,body{overflow-x:hidden}
60    }
61    body,html{height:100%;margin:0;padding:0;background-color:var(--bg-fallback);background-image:var(--page-bg-image);background-repeat:repeat;background-position:0 0}
62    html{font-family:var(--font-sans)}
63    body{font-family:var(--font-sans);color:var(--text);font-size:18px;line-height:1.6;font-weight:400}
64    img{max-width:100%;height:auto;display:block}
65    .resp-iframe{position:relative;width:100%;padding-top:56.25%}
66    .resp-iframe>iframe{position:absolute;inset:0;width:100%;height:100%;border:0;border-radius:.5rem}
67    :where(article,aside,nav,section) h1{font-size:1.5rem;line-height:2rem}
68    .expanded-mode {
69        position: fixed !important;
70        top: 0 !important; left: 0 !important;
71        width: 100vw !important;
72        height: 100vh !important;
73        height: 100dvh !important;
74        z-index: 9900 !important;
75        margin: 0 !important; padding: 0 !important;
76        max-width: none !important;
77        display: flex !important; flex-direction: column !important;
78    }
79    .expanded-mode .game-card-wrap {
80        flex: 1 1 auto !important;
81        display: flex !important; flex-direction: column !important;
82        position: static !important;
83        width: 100% !important; height: 100% !important;
84        max-width: none !important;
85        margin: 0 !important; padding: 0 !important;
86        border: none !important; border-radius: 0 !important;
87        background: #000 !important; box-shadow: none !important;
88        overflow: hidden !important;
89    }
90    .expanded-mode #game-frame-wrap {
91        flex: 1 1 auto !important;
92        position: relative !important;
93        width: 100% !important;
94        padding-top: 0 !important;
95        height: auto !important;
96        border-radius: 0 !important;
97        overflow: hidden !important;
98    }
99    .expanded-mode #game-frame-wrap iframe {
100        position: absolute !important;
101        inset: 0 !important;
102        width: 100% !important; height: 100% !important;
103        border-radius: 0 !important;
104    }
105    .expanded-mode #game-frame-wrap .game-continue-hint {
106        z-index: 12 !important;
107    }
108    .expanded-mode #game-controls {
109        flex: 0 0 56px !important;
110        position: static !important;
111        width: 100% !important;
112        height: 56px !important;
113        background: var(--card-bg) !important;
114        border-top: 1px solid var(--card-border) !important;
115        padding: 0 20px !important;
116        margin: 0 !important;
117        box-sizing: border-box !important;
118        display: flex !important; align-items: center !important;
119    }
120    .expanded-mode { overflow: hidden !important; }
121    .expanded-mode .banner-ad-wrap { display: none !important; }
122    .expanded-mode .game-hero-below { display: none !important; }
123    .expanded-mode .game-hero-shell {
124        flex: 1 1 auto !important;
125        display: flex !important;
126        flex-direction: column !important;
127        min-height: 0 !important;
128        overflow: hidden !important;
129        margin: 0 !important;
130        padding: 0 !important;
131    }
132    .expanded-mode .game-hero-main {
133        flex: 1 1 auto !important;
134        min-height: 0 !important;
135        display: flex !important;
136        flex-direction: column !important;
137        overflow: hidden !important;
138    }
139
140    body:has(> header.site-header){padding-top:calc(64px + env(safe-area-inset-top,0px))}
141    body.game-expanded { overflow: hidden !important; padding-top: 0 !important; }
142    body.game-expanded > *:not(main):not(#share-modal-bg):not(#spacewaves-toast) { display: none !important; }
143    body.game-expanded .col-left > *:not(#play-space-waves):not(#play-game-embed-online),
144    body.game-expanded .col-sidebar { display: none !important; }
145    body.game-expanded .page-grid {
146        display: block !important;
147        max-width: none !important; width: 100% !important;
148        padding: 0 !important; margin: 0 !important;
149    }
150    body.game-expanded main {
151        max-width: none !important; width: 100% !important;
152        padding: 0 !important; margin: 0 !important;
153    }
154    body.game-expanded #game-controls {
155        flex-wrap: nowrap !important;
156        margin-top: 0 !important;
157        overflow: hidden !important;
158    }
159    body.game-expanded #game-controls h1 {
160        font-size: 1.05rem !important;
161        margin: 0 !important;
162        line-height: 1 !important;
163        font-weight: 800 !important;
164    }
165    body.game-expanded #controls-actions {
166        display: flex !important;
167        gap: 6px !important;
168        width: auto !important;
169        grid-template-columns: none !important;
170    }
171    @media(max-width:768px) {
172        body.game-expanded #game-controls .rating-row { display: none !important; }
173        body.game-expanded #game-controls,
174        #play-game-embed-online.expanded-mode #game-controls,
175        #play-space-waves.expanded-mode #game-controls { padding: 0 12px !important; gap: 8px !important; }
176        body.game-expanded #controls-actions > *:not(#share-btn):not(#expand-btn),
177        body.game-embed-expanded #controls-actions > *:not(#share-btn):not(#expand-btn),
178        #play-game-embed-online.expanded-mode #controls-actions > *:not(#share-btn):not(#expand-btn),
179        #play-space-waves.expanded-mode #controls-actions > *:not(#share-btn):not(#expand-btn) {
180            display: none !important;
181        }
182        body.game-expanded #controls-actions,
183        #play-game-embed-online.expanded-mode #controls-actions,
184        #play-space-waves.expanded-mode #controls-actions {
185            display: flex !important;
186            width: auto !important;
187            max-width: none !important;
188            grid-template-columns: none !important;
189            flex-shrink: 0 !important;
190            margin-left: auto !important;
191            gap: 6px !important;
192        }
193        #play-game-embed-online.expanded-mode .gcbar-left,
194        #play-space-waves.expanded-mode .gcbar-left {
195            flex: 1 1 auto !important;
196            min-width: 0 !important;
197            overflow: hidden !important;
198        }
199        #play-game-embed-online.expanded-mode #title-line,
200        #play-game-embed-online.expanded-mode #game-controls h1,
201        #play-space-waves.expanded-mode #title-line,
202        #play-space-waves.expanded-mode #game-controls h1 {
203            min-width: 0 !important;
204            max-width: 100% !important;
205            overflow: hidden !important;
206        }
207        #play-game-embed-online.expanded-mode .game-title-link,
208        #play-space-waves.expanded-mode .game-title-link {
209            display: block !important;
210            overflow: hidden !important;
211            text-overflow: ellipsis !important;
212            white-space: nowrap !important;
213            max-width: 100% !important;
214            font-size: 1rem !important;
215        }
216        body.game-expanded #controls-actions > #share-btn,
217        body.game-expanded #controls-actions > #expand-btn,
218        body.game-embed-expanded #controls-actions > #share-btn,
219        body.game-embed-expanded #controls-actions > #expand-btn,
220        #play-game-embed-online.expanded-mode #controls-actions > #share-btn,
221        #play-game-embed-online.expanded-mode #controls-actions > #expand-btn,
222        #play-space-waves.expanded-mode #controls-actions > #share-btn,
223        #play-space-waves.expanded-mode #controls-actions > #expand-btn {
224            width: auto !important;
225            display: inline-flex !important;
226        }
227    }
228
229    body.game-embed-expanded { overflow: hidden !important; padding-top: 0 !important; }
230
231    html.game-landscape-lock,
232    html.game-landscape-lock body { overflow: hidden !important; touch-action: none; }
233    html.game-landscape-lock .expanded-mode,
234    html.game-landscape-lock #play-space-waves.expanded-mode,
235    html.game-landscape-lock #play-game-embed-online.expanded-mode {
236        position: fixed !important;
237        top: 0 !important;
238        left: 0 !important;
239        width: 100vh !important;
240        width: 100dvh !important;
241        height: 100vw !important;
242        height: 100dvw !important;
243        max-width: none !important;
244        max-height: none !important;
245        transform: rotate(90deg) translateY(-100%) !important;
246        transform-origin: top left !important;
247        z-index: 9900 !important;
248        margin: 0 !important;
249        padding: 0 !important;
250    }
251    html.game-landscape-lock .expanded-mode .game-hero-shell,
252    html.game-landscape-lock .expanded-mode .game-hero-main,
253    html.game-landscape-lock .expanded-mode .game-card-wrap,
254    html.game-landscape-lock #play-space-waves.expanded-mode .game-hero-shell,
255    html.game-landscape-lock #play-space-waves.expanded-mode .game-hero-main,
256    html.game-landscape-lock #play-space-waves.expanded-mode .game-card-wrap,
257    html.game-landscape-lock #play-game-embed-online.expanded-mode .game-hero-shell,
258    html.game-landscape-lock #play-game-embed-online.expanded-mode .game-hero-main,
259    html.game-landscape-lock #play-game-embed-online.expanded-mode .game-card-wrap {
260        flex-direction: column !important;
261        position: relative !important;
262    }
263    html.game-landscape-lock .expanded-mode .game-card-wrap,
264    html.game-landscape-lock #play-space-waves.expanded-mode .game-card-wrap,
265    html.game-landscape-lock #play-game-embed-online.expanded-mode .game-card-wrap {
266        padding-left: 44px !important;
267    }
268    html.game-landscape-lock .expanded-mode #game-frame-wrap,
269    html.game-landscape-lock #play-space-waves.expanded-mode #game-frame-wrap,
270    html.game-landscape-lock #play-game-embed-online.expanded-mode #game-frame-wrap {
271        flex: 1 1 auto !important;
272        width: auto !important;
273        min-width: 0 !important;
274        min-height: 0 !important;
275    }
276    html.game-landscape-lock .expanded-mode #game-controls,
277    html.game-landscape-lock #play-space-waves.expanded-mode #game-controls,
278    html.game-landscape-lock #play-game-embed-online.expanded-mode #game-controls {
279        position: absolute !important;
280        left: 0 !important;
281        top: 0 !important;
282        flex: none !important;
283        width: 100vw !important;
284        width: 100dvw !important;
285        height: 44px !important;
286        min-height: 44px !important;
287        max-height: 44px !important;
288        padding: 0 10px !important;
289        box-sizing: border-box !important;
290        flex-direction: row !important;
291        align-items: center !important;
292        justify-content: space-between !important;
293        gap: 8px !important;
294        transform: rotate(-90deg) translateX(-100%) !important;
295        transform-origin: top left !important;
296        border-top: none !important;
297        z-index: 20 !important;
298    }
299    html.game-landscape-lock .expanded-mode .gcbar-left,
300    html.game-landscape-lock #play-space-waves.expanded-mode .gcbar-left,
301    html.game-landscape-lock #play-game-embed-online.expanded-mode .gcbar-left {
302        display: flex !important;
303        flex: 1 1 auto !important;
304        min-width: 0 !important;
305        overflow: hidden !important;
306    }
307    html.game-landscape-lock .expanded-mode .game-title-link,
308    html.game-landscape-lock .expanded-mode .game-title-text,
309    html.game-landscape-lock #play-space-waves.expanded-mode .game-title-link,
310    html.game-landscape-lock #play-game-embed-online.expanded-mode .game-title-link {
311        display: block !important;
312        overflow: hidden !important;
313        text-overflow: ellipsis !important;
314        white-space: nowrap !important;
315        font-size: 0.95rem !important;
316    }
317    html.game-landscape-lock .expanded-mode #controls-actions,
318    html.game-landscape-lock .expanded-mode .gcbar-right,
319    html.game-landscape-lock #play-space-waves.expanded-mode #controls-actions,
320    html.game-landscape-lock #play-space-waves.expanded-mode .gcbar-right,
321    html.game-landscape-lock #play-game-embed-online.expanded-mode #controls-actions,
322    html.game-landscape-lock #play-game-embed-online.expanded-mode .gcbar-right {
323        display: flex !important;
324        flex-direction: row !important;
325        align-items: center !important;
326        margin: 0 !important;
327        margin-left: auto !important;
328        width: auto !important;
329        gap: 6px !important;
330        flex-shrink: 0 !important;
331    }
332
333        h1,h2,h3,h4,h5,h6{font-family:var(--font-sans);font-weight:400;color:var(--heading-color)}
334        h1{font-size:2.5rem;font-weight:700}
335        h2{font-size:2.2rem;font-weight:700}
336        h3{font-size:1.5rem}
337        h1.section-heading,h2.section-heading{font-weight:700}
338        .heading-font{font-family:var(--font-sans);font-weight:400;color:var(--heading-color)}
339        header.site-header .heading-font{font-weight:700}
340        .prose-card,.prose-card p,.step-body-text,.step-body-text p,.tip-body,.faq-answer,.faq-answer p,.feature-card p,.compare-card__desc,.compare-card__verdict,.comments__text{font-weight:400}
341        .prose-card strong{font-weight:600}
342        h2{background:none;-webkit-background-clip:border-box;background-clip:border-box;-webkit-text-fill-color:var(--accent);color:var(--accent)}
343        .faq-section h3{font-size:1.2rem;line-height:1.35}
344        @media (min-width:1024px){.faq-section h3{font-size:1.3rem}}
345        a{color:inherit;transition:color .2s ease}
346        a:hover{color:rgba(255,255,255,.95)}
347        .btn{transition:transform .15s ease,opacity .15s ease}
348        .btn:active{transform:scale(.98)}
349        .card{background:var(--card-bg);backdrop-filter:saturate(130%) blur(4px);border:1px solid var(--card-border);border-radius:14px;box-shadow:0 6px 18px rgba(0,0,0,.25)}
350        .soft-surface{background:rgba(var(--accent-rgb),.1)}
351        .brand-title{background:0 0!important;-webkit-background-clip:initial!important;background-clip:initial!important;-webkit-text-fill-color:initial!important;color:var(--text)!important}
352        #title-line{display:flex;flex-direction:column;align-items:flex-start;gap:4px}
353        #title-line #played-text{display:block;margin-left:0;margin-top:2px}
354        .gradient-text.brand-title{background:0 0!important;-webkit-background-clip:initial!important;background-clip:initial!important;-webkit-text-fill-color:initial!important;color:inherit!important}
355        .resp-iframe{position:relative;width:100%;padding-top:56.25%}
356        .resp-iframe>iframe{position:absolute;inset:0;width:100%;height:100%;border:0;border-radius:.5rem}
357        @media (max-width:768px){.resp-iframe{padding-top:84.375%}}
358        .share-pop{position:absolute;right:0;top:3rem;z-index:40}
359        .star{cursor:pointer;transition:transform .12s ease}
360        .star:hover{transform:scale(1.05)}
361        .faq-section,.howto-section{content-visibility:auto;contain-intrinsic-size:900px}
362        .step-dot{display:inline-flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;border-radius:50%;background:var(--brand-yellow);color:#000;font-weight:700;border:1px solid var(--accent-3);box-shadow:0 6px 16px rgba(var(--accent-rgb),.3)}
363        #avg-rating,#played-text{color:var(--text-secondary)!important}
364        .text-gray-300{color:var(--text-secondary)!important}
365        .btn{color:var(--text);font-weight:600}
366        .star svg{transition:fill .15s ease,stroke .15s ease}
367        .star svg path{transition:fill .15s ease,stroke .15s ease}
368        .btn.soft-surface{transition:background .2s ease,color .2s ease,transform .12s ease}
369        .btn.soft-surface:hover{background:var(--brand-yellow);color:var(--surface-contrast);border:1px solid var(--accent-3)}
370        .howto-section .howto-step{align-items:center}
371        .howto-section .howto-divider{height:1px;background:var(--card-border)}
372        .howto-section .step-img{border:1px solid var(--card-border);width:300px;height:300px;object-fit:cover}
373        .howto-section .grid>article{display:flex;flex-direction:column;align-items:center;gap:1rem;text-align:center}
374        .howto-section .grid>article>.inline-flex{justify-content:center;gap:.5rem;text-align:center}
375        .howto-section .grid>article>div:not(.inline-flex),.howto-section .grid>article>p{text-align:left}
376        .language-selector{font-family:inherit}
377        .lang-btn{background:0 0;color:var(--text);border:1px solid var(--card-border);box-shadow:0 2px 8px rgba(0,0,0,.25);transition:all .3s cubic-bezier(.4,0,.2,1);font-weight:600}
378        .lang-btn:hover{background:rgba(var(--accent-rgb),.1);transform:translateY(-1px);box-shadow:0 4px 12px rgba(0,0,0,.3)}
379        .lang-btn.active .lang-arrow{transform:rotate(180deg)}
380        .lang-flag{font-size:1.1em;filter:drop-shadow(0 1px 2px rgba(0,0,0,.1))}
381        .lang-dropdown{background:var(--bg);border:1px solid var(--card-border);backdrop-filter:blur(10px);box-shadow:0 10px 30px rgba(0,0,0,.35)}
382        .language-selector:hover .lang-dropdown{opacity:1;visibility:visible;transform:translateY(0)}
383        .lang-option{color:var(--text);text-decoration:none;border-bottom:1px solid rgba(255,255,255,.06);position:relative;overflow:hidden;font-weight:500}
384        .lang-option:last-child{border-bottom:none}
385        .lang-option:hover{background:rgba(var(--accent-rgb),.08)!important;color:var(--text);transform:translateX(2px)}
386        .lang-option.active{background:rgba(var(--accent-rgb),.12);color:var(--text);font-weight:600}
387        .lang-option.active::after{content:'✓';position:absolute;right:12px;top:50%;transform:translateY(-50%);color:var(--brand-yellow);font-weight:700}
388        .lang-emoji{font-size:1.2em;filter:drop-shadow(0 1px 2px rgba(0,0,0,.1))}
389        .lang-name{font-weight:500;transition:all .2s ease}
390        @media (max-width:640px){.lang-btn{padding:.5rem .75rem}.lang-text{display:none}.lang-flag{font-size:1.3em}.lang-dropdown{min-width:140px;right:-10px}.lang-option{padding:.75rem 1rem}.lang-name{font-size:.9rem}}
391        .howto-section .grid>article picture,.howto-section .grid>article>img{align-self:center}
392        @media(min-width:1024px){.howto-section .grid>article{flex-direction:column;align-items:center}}
393        .howto-section .grid>article picture,.howto-section .grid>article>img{max-width:220px;border:1px solid var(--card-border);border-radius:.5rem;box-shadow:0 10px 24px rgba(0,0,0,.25)}
394        @media(min-width:1024px){.howto-section .grid>article picture,.howto-section .grid>article>img{max-width:300px}}
395        @media(min-width:1280px){.howto-section .grid>article picture,.howto-section .grid>article>img{max-width:360px}}
396        .howto-section .grid>article .heading-font{margin:0}
397        .howto-section .grid>article .step-dot{width:2rem;height:2rem}
398        .howto-section .grid>article+article{padding-top:1rem;margin-top:.5rem}
399        .faq-section details summary{display:flex;align-items:center;gap:.5rem;cursor:pointer}
400        .faq-section details summary h3{margin:0;line-height:1.4}
401        .faq-section details summary::-webkit-details-marker{display:none}
402        .faq-section details summary::marker{content:''}
403        .faq-section details summary::before{content:'';display:inline-block;width:.6rem;height:.6rem;border-right:2px solid currentColor;border-top:2px solid currentColor;transform:rotate(45deg);transition:transform .2s ease;margin-right:.1rem}
404        .faq-section details[open] summary::before{transform:rotate(135deg)}
405        .about-section{margin-top:2rem}
406        .about-section h2,.faq-section h2,.features-section h2,.howto-section h2{margin-bottom:1.5rem;color:var(--heading-color)}
407        .howto-section h3{font-weight:400;letter-spacing:.01em}
408        .howto-section h3::after{content:"";display:block;width:64px;
408height:4px;margin:.4rem auto 0;background:var(--brand-yellow);border-radius:9999px;opacity:.95}
409        .features-section h3{font-weight:400}
410        .features-section h3{margin-bottom:.75rem}
411        .feature-card .icon-wrap{width:48px;height:48px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:rgba(139,92,246,.15);color:#fff;border:1px solid #4C1D95;box-shadow:0 8px 20px rgba(0,0,0,.25)}
412        .feature-card .badge{min-width:28px;height:28px;border-radius:9999px;background:rgba(255,255,255,.08);display:inline-flex;align-items:center;justify-content:center;margin-left:.5rem;font-weight:700}
413        #back-to-top{position:fixed;right:calc(16px + env(safe-area-inset-right,0px));bottom:calc(16px + env(safe-area-inset-bottom,0px));width:48px;height:48px;box-sizing:border-box;display:none;align-items:center;justify-content:center;background:var(--card-bg);border:1px solid var(--card-border);color:#fff;border-radius:9999px;box-shadow:0 4px 18px rgba(0,0,0,.45);z-index:2147483600;padding:0;cursor:pointer;-webkit-tap-highlight-color:transparent}
414        #back-to-top.is-visible{display:flex!important}
415        #back-to-top svg{display:block;width:24px;height:24px;flex-shrink:0}
416        #back-to-top svg path{fill:#fff}
417        .toc-float-wrap{position:fixed;right:calc(16px + env(safe-area-inset-right,0px));bottom:calc(74px + env(safe-area-inset-bottom,0px));z-index:2147483600;display:flex;flex-direction:column;align-items:flex-end;gap:10px}
418        .toc-float-wrap .html-toc{position:relative!important;right:auto!important;bottom:auto!important;z-index:auto;display:none;order:1;margin:0;padding:0}
419        .toc-float-wrap .html-toc.open{display:block}
420        .toc-float-wrap .toc-toggle{position:static!important;right:auto!important;bottom:auto!important;z-index:auto;order:2;width:46px;height:46px;display:flex;align-items:center;justify-content:center;background:var(--card-bg);border:1px solid var(--card-border);color:#fff;border-radius:9999px;box-shadow:0 4px 16px rgba(0,0,0,.4);padding:0;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background .15s,box-shadow .15s}
421        .toc-float-wrap .toc-toggle:hover{background:rgba(255,255,255,.1);box-shadow:0 4px 20px rgba(0,0,0,.45)}
422        .toc-float-wrap .toc-toggle svg{display:block;width:24px;height:24px;flex-shrink:0}
423        .toc-float-wrap .toc-toggle svg circle,.toc-float-wrap .toc-toggle svg path,.toc-float-wrap .toc-toggle svg rect{fill:currentColor}
424        .html-toc-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.6);backdrop-filter:blur(2px);z-index:2147483598;display:none}
425        .toc-float-wrap .html-toc.open .html-toc-backdrop{display:block!important}
426        .html-toc-pop{position:relative;z-index:2147483599;min-width:240px;max-width:88vw;max-height:58vh;overflow:auto;background:var(--card-bg);border:1px solid var(--card-border);border-radius:14px;box-shadow:0 20px 48px rgba(0,0,0,.6)}
427        .toc-header{padding:12px 16px 8px;font-weight:800;color:#fff;font-size:.82rem;text-transform:uppercase;letter-spacing:.1em}
428        .toc-list{list-style:none;padding:4px 16px 14px;margin:0}
429        .toc-item{margin:5px 0;display:flex;align-items:flex-start;gap:9px}
430        .toc-dot{display:inline-block;width:5px;height:5px;border-radius:9999px;background:rgba(255,255,255,.45);margin-top:9px;flex-shrink:0;opacity:.9}
431        .toc-link{color:#fff;text-decoration:none;font-size:.9rem;line-height:1.5;transition:color .15s}
432        .toc-link:hover{color:rgba(255,255,255,.82)}
433        .content-section{margin-top:28px}
434        .section-heading{font-size:1.75rem;font-weight:700;line-height:1.2;margin-bottom:10px;color:var(--accent);background:none;-webkit-background-clip:border-box;background-clip:border-box;-webkit-text-fill-color:var(--accent);letter-spacing:-.01em}
435        @media(min-width:768px){.section-heading{font-size:2.1rem}}
436        @media(max-width:768px){.section-heading{font-size:1.5rem}}
437        .content-section>h3.section-subheading{margin:0 0 16px;font-size:1.08rem;font-weight:400;line-height:1.35;color:var(--text-muted);letter-spacing:.01em;-webkit-text-fill-color:var(--text-muted)}
438        @media(min-width:768px){.content-section>h3.section-subheading{font-size:1.14rem;margin-bottom:18px}}
439        .content-section>h3.section-subheading.section-subheading--follow{margin-top:22px;margin-bottom:10px}
440        .prose-card{background:var(--surface);border:1px solid var(--border-subtle);border-radius:20px;
440padding:24px 26px;font-size:1.05rem;line-height:1.88;color:var(--prose-text);font-weight:400;box-shadow:0 4px 18px rgba(0,0,0,.28)}
441        .prose-card p+p{margin-top:14px}
442        .prose-card strong{color:var(--prose-heading);font-weight:600}
443        .prose-card a{color:#fff;text-decoration:underline;text-underline-offset:3px}
444        .prose-card a:hover{color:var(--text-muted)}
445        .prose-card ol{padding-left:1.5em;display:flex;flex-direction:column;gap:12px;font-size:1rem}
446        .prose-card .further-tip{margin-top:14px}
447        .content-section .prose-card>img:first-of-type{display:block;width:100%;max-width:min(100%,520px);margin:0 auto 18px;height:auto;border-radius:14px;border:1px solid var(--border-subtle);background:var(--card-bg);vertical-align:top;box-shadow:0 2px 14px rgba(0,0,0,.28),inset 0 0 0 1px rgba(0,0,0,.2)}
448        .howto-steps{display:flex;flex-direction:column;gap:16px;margin-top:16px}
449        .howto-step-card{background:var(--surface);border:1px solid var(--border-subtle);border-radius:20px;padding:24px 26px;position:relative;overflow:hidden;box-shadow:0 4px 18px rgba(0,0,0,.28);transition:border-color .2s}
450        .howto-step-card:hover{border-color:var(--border-hover)}
451        .howto-step-head{display:flex;align-items:center;gap:10px;margin-bottom:10px}
452        .step-num-bg{font-size:6rem;font-weight:900;color:var(--text-muted);opacity:.12;position:absolute;top:-14px;right:16px;line-height:1;pointer-events:none;user-select:none;letter-spacing:-.05em}
453        .step-label{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:8px;background:var(--accent);color:#000;font-size:.85rem;font-weight:900;flex-shrink:0}
454        .howto-step-card h3.step-title-text{font-size:1.12rem;font-weight:400;color:var(--prose-heading);margin:0;flex:1;min-width:0;line-height:1.25;-webkit-text-fill-color:var(--prose-heading)}
455        .step-body-text{font-size:1rem;color:var(--prose-text);line-height:1.82;font-weight:400}
456        .step-body-text p+p{margin-top:10px}
457        .step-body-text .howto-detail-grid{display:flex;flex-direction:column;gap:10px;margin-top:12px}
458        .step-body-text .howto-detail-row{padding:12px 14px;background:var(--surface-input);border:1px solid var(--border-subtle);border-radius:10px}
459        .step-body-text .howto-detail-label{display:block;font-size:.92rem;font-weight:600;color:var(--prose-heading);margin:0 0 6px;letter-spacing:.02em}
460        .step-body-text .howto-detail-row p{margin:0;font-size:.98rem;line-height:1.7}
461        .step-body-text .step-list{margin-top:12px}
462        .howto-step-figure{margin:4px auto 12px;max-width:min(100%,380px);border-radius:10px;overflow:hidden;border:1px solid var(--border-subtle);background:var(--card-bg);line-height:0;box-shadow:inset 0 0 0 1px rgba(0,0,0,.2)}
463        .howto-step-figure img{display:block;width:100%;height:auto;vertical-align:top}
464        .site-main.site-game-shell .GAME-step.howto-step-card{border-left:0;background:var(--surface);padding:24px 26px;margin-bottom:16px}
465        .site-main.site-game-shell .GAME-article{background:transparent;border:none;box-shadow:none;padding:0;margin:0}
466        .site-main.site-game-shell #game-intro .GAME-intro-img-wrap{margin:0 0 18px;border:none;background:transparent;border-radius:0;overflow:visible}
467        .site-main.site-game-shell #game-intro .prose-card.GAME-intro-prose .GAME-intro-img-wrap--in-prose{margin-top:0}
468        .site-main.site-game-shell #game-intro .GAME-intro-img-wrap img{display:block;width:100%;max-width:min(100%,520px);margin:0 auto;height:auto;border-radius:14px;border:1px solid var(--border-subtle);background:var(--card-bg);box-shadow:0 2px 14px rgba(0,0,0,.28),inset 0 0 0 1px rgba(0,0,0,.2)}
469        .prose-card.GAME-intro-prose ul{padding-left:1.5em;display:flex;flex-direction:column;gap:10px;margin:0}
470        .site-main.site-game-shell .GAME-faq-item{background:var(--surface);border:1px solid var(--border-subtle);border-radius:15px;overflow:hidden;transition:border-color .2s,box-shadow .2s;margin-bottom:10px}
471        .site-main.site-game-shell .GAME-faq-item.is-open{border-color:var(--border-hover);box-shadow:0 4px 16px rgba(0,0,0,.28)}
472        .site-main.site-game-shell .GAME-faq-q-wrap{margin:0;padding:0;font-size:inherit;line-height:inherit;font-weight:inherit}
473        .site-main.site-game-shell .GAME-faq-q{position:relative;width:100%;text-align:left;padding:14px 44px 14px 20px;background:transparent;border:0;color:var(--prose-heading);font-weight:700;font-size:1.05rem;line-height:1.45;cursor:pointer;display:flex;align-items:flex-start;gap:12px}
474        .site-main.site-game-shell .GAME-faq-q::after{content:'';position:absolute;right:18px;top:50%;transform:translateY(-50%);width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid var(--text-muted);transition:transform .2s}
475        .site-main.site-game-shell .GAME-faq-item.is-open .GAME-faq-q{padding-bottom:8px}
476        .site-main.site-game-shell .GAME-faq-item.is-open .GAME-faq-q::after{transform:translateY(-50%) rotate(180deg)}
477        .site-main.site-game-shell .GAME-faq-a{display:none;padding:0 20px 14px 20px;color:var(--prose-text);font-size:1rem;line-height:1.82}
478        .site-main.site-game-shell .GAME-faq-item.is-open .GAME-faq
478-a{display:block}
479        .site-main.site-game-shell .GAME-faq-a-inner{padding:0}
480        .site-main.site-game-shell .GAME-video-wrap{position:relative;width:100%;padding-top:56.25%;border-radius:14px;overflow:hidden;border:1px solid var(--border-subtle);background:#000;margin-top:10px}
481        .site-main.site-game-shell .GAME-video-card>.GAME-video-wrap{margin-top:14px}
482        .site-main.site-game-shell .GAME-video-card .GAME-video-watch-more{margin:12px 0 0;font-size:.92rem}
483        .site-main.site-game-shell .GAME-video-card .GAME-video-watch-more a{color:#c4b5fd;text-decoration:underline;text-underline-offset:3px}
484        .site-main.site-game-shell .GAME-video-wrap iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
485        @media(max-width:480px){.prose-card{padding:18px}.howto-step-card{padding:18px 18px 20px}}
486        .content-page-main .content-page-breadcrumb{margin:0 0 .55rem}
487        .content-page-main .content-page-breadcrumb ol{display:flex;flex-wrap:wrap;align-items:baseline;column-gap:.4rem;row-gap:.1rem;margin:0;padding:0;list-style:none;color:var(--text-muted);line-height:1.4}
488        .content-page-main .content-page-breadcrumb a{color:#fff;text-decoration:none;white-space:nowrap}
489        .content-page-main .content-page-breadcrumb a:hover{color:var(--accent);text-decoration:underline}
490        .content-page-main .content-page-breadcrumb .sep{flex:0 0 auto;opacity:.45}
491        .content-page-main .content-page-breadcrumb .current{color:var(--text-muted);min-width:0}
492        .content-page-main .content-page-article{margin-top:.75rem}
493        .content-page-main .content-page-article a:not([class*="inline-flex"]){color:#fbbf24;text-decoration:underline;text-underline-offset:3px;text-decoration-color:rgba(251,191,36,.65);transition:color .15s ease,text-decoration-color .15s ease}
494        .content-page-main .content-page-article a:not([class*="inline-flex"]):hover{color:#fde68a;text-decoration-color:#fde68a}
495        .content-page-main .content-page-article>h1{font-size:1.75rem;line-height:1.28;font-weight:700;margin:0 0 .9rem;color:#fff}
496        .content-page-main .content-page-stack{margin-top:1rem}
497        @media(max-width:640px){
498            .content-page-main{padding-left:14px;padding-right:14px;padding-top:12px;padding-bottom:20px}
499            .content-page-main .content-page-breadcrumb{font-size:.78rem;margin-bottom:.4rem}
500            .content-page-main .content-page-breadcrumb ol{flex-wrap:nowrap;align-items:center}
501            .content-page-main .content-page-breadcrumb li:first-child{flex:0 0 auto}
502            .content-page-main .content-page-breadcrumb .current{flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
503            .content-page-main .content-page-article{margin-top:.55rem;padding:16px 16px 18px!important}
504            .content-page-main .content-page-article>h1{font-size:1.28rem;line-height:1.3;margin-bottom:.75rem}
505        }
506        .content-page-article .about-lead-img{display:block;width:100%;max-width:min(100%,520px);margin:0 auto 18px;height:auto;border-radius:14px;border:1px solid var(--border-subtle);background:var(--card-bg);vertical-align:top;box-shadow:0 2px 14px rgba(0,0,0,.28),inset 0 0 0 1px rgba(0,0,0,.2)}
507        .content-page-main .howto-steps{margin:1.25rem 0 1.75rem}
508        .toast{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);z-index:9999;padding:15px 24px;border-radius:8px;background:rgba(0,0,0,.75);color:#fff;font-size:14px;opacity:0;transition:opacity .2s ease}
509        .toast.show{opacity:1}
510        .toast-success{background:rgba(16,185,129,.9)}
511        .toast-error{background:rgba(239,68,68,.95)}
512        @media(max-width:640px){#title-line{display:flex;flex-direction:column;align-items:flex-start;gap:4px}#title-line #played-text{margin-left:0;display:block}}
513        @media(max-width:640px){#game-controls{gap:10px}.heading-font.text-2xl{display:block}.heading-font.text-2xl+#played-text{display:block;margin-left:0}.heading-font+#played-text{display:block}.heading-font~#played-text{display:block}.heading-font+span#played-text{display:block}.heading-font+#played-text{margin-top:2px}.heading-font{white-space:normal}.heading-font+#played-text{white-space:normal}.heading-font+#played-text{line-height:1.4}#controls-actions{display:grid!important;grid-template-columns:repeat(3,1fr);gap:10px;width:100%}#controls-actions>a.btn,#controls-actions>button.btn{width:100%;justify-content:center}#controls-actions svg{margin:0 auto}}
514        @media(max-width:640px){
515            body.game-expanded #controls-actions,
516            #play-game-embed-online.expanded-mode #controls-actions,
517            #play-space-waves.expanded-mode #controls-actions{
518                display:flex!important;
519                grid-template-columns:none!important;
520                width:auto!important;
521                gap:6px!important;
522                flex-shrink:0!important;
523                margin-left:auto!important;
524            }
525            body.game-expanded #controls-actions>#share-btn,
526            body.game-expanded #controls-actions>#expand-btn,
527            #play-game-embed-online.expanded-mode #controls-actions>#share-btn,
528            #play-game-embed-online.expanded-mode #controls-actions>#expand-btn,
529            #play-space-waves.expanded-mode #controls-actions>#share-btn,
530            #play-space-waves.expanded-mode #controls-actions>#expand-btn{
531                width:auto!important;
532                display:inline-flex!important;
533            }
534            body.game-expanded #controls-actions>
534*:not(#share-btn):not(#expand-btn),
535            #play-game-embed-online.expanded-mode #controls-actions>*:not(#share-btn):not(#expand-btn),
536            #play-space-waves.expanded-mode #controls-actions>*:not(#share-btn):not(#expand-btn){
537                display:none!important;
538            }
539        }
540        @media(max-width:640px){.step-img{display:block!important;margin:0 auto!important;width:300px!important;height:300px!important;object-fit:cover!important}.about-section picture,.howto-section .grid>article picture{display:block!important;margin-left:auto!important;margin-right:auto!important;text-align:center!important;float:none!important}}
541        a:hover{color:rgba(255,255,255,.95)!important}
542        .nav-current{color:var(--accent)!important;text-decoration:none;font-weight:800}
543        .comments__form_submit{background:var(--accent)!important;color:var(--surface-contrast,#000)!important;border:1px solid rgba(0,0,0,.25)!important;box-shadow:0 4px 16px rgba(var(--accent-rgb),.28)!important;font-weight:800;transition:filter .2s ease,transform .15s ease,box-shadow .2s ease,border-color .15s ease}
544        .comments__form_submit:hover{filter:brightness(1.07)!important;border-color:rgba(0,0,0,.32)!important;color:var(--surface-contrast,#000)!important;transform:translateY(-1px);box-shadow:0 6px 20px rgba(var(--accent-rgb),.35)!important}
545        .comments__form-input{background:var(--surface-input)!important;border:1px solid var(--border-subtle)!important;color:var(--text)!important}
546        .comments__form-input::placeholder{color:rgba(255,255,255,.45)!important}
547        .comments__form-input:focus{outline:2px solid var(--brand-yellow)!important;border-color:var(--accent-3)!important;box-shadow:0 0 0 3px rgba(var(--accent-rgb),.22)}
548        #controls-actions .btn{border:1px solid var(--card-border)!important}
549        #game-card{border:1px solid var(--card-border)!important}
550        .about-section .card,.faq-section .card,.features-section .card,.howto-section .card{border:1px solid var(--card-border)!important;background:var(--card-bg)!important}
551        .brand-title,.site-title{background:none!important;-webkit-background-clip:border-box!important;background-clip:border-box!important;-webkit-text-fill-color:#fff!important;color:#fff!important}
552        .howto-section .grid>article{display:flex!important;flex-direction:column!important;align-items:center!important;gap:1rem!important}
553        .howto-section .grid>article>.inline-flex{order:1}
554        .howto-section .grid>article>div:not(.inline-flex),.howto-section .grid>article>p{order:3;text-align:left}
555        #controls-actions a.btn:hover,#controls-actions button.btn:hover,.btn.soft-surface:hover{color:var(--surface-contrast)!important}
556        .character-card{background:linear-gradient(135deg,#1A1A2E 0%,#16213E 50%,#0F3460 100%)!important;border:2px solid rgba(139,92,246,0.3)!important;transition:all 0.4s cubic-bezier(0.34,1.56,0.64,1)!important;position:relative;overflow:hidden}
557        .character-card::before{content:'';position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(45deg,transparent 30%,rgba(139,92,246,0.1) 50%,transparent 70%);transform:translateX(-100%);transition:transform 0.6s ease;z-index:1}
558        .character-card:hover::before{transform:translateX(100%)}
559        .character-card:hover{transform:translateY(-8px) scale(1.02);border-color:var(--accent)!important;box-shadow:0 20px 40px rgba(139,92,246,0.4),0 0 30px rgba(225,29,72,0.2)!important}
560        .character-card > *{position:relative;z-index:2}
561        .character-img{border:3px solid rgba(225,29,72,0.4)!important;transition:all 0.3s ease!important;box-shadow:0 8px 20px rgba(0,0,0,0.3)}
562        .character-card:hover .character-img{border-color:var(--accent-2)!important;transform:scale(1.1) rotate(5deg);box-shadow:0 12px 30px rgba(225,29,72,0.5)}
563        .character-card .badge{background:linear-gradient(135deg,#E11D48,#8B5CF6)!important;color:#FFFFFF!important;font-weight:800!important;text-shadow:0 2px 4px rgba(0,0,0,0.5);animation:pulse 2s infinite}
564        .character-card h3{background:linear-gradient(135deg,#8B5CF6,#E11D48,#3B82F6);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;text-shadow:none!important}
565        @keyframes pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.05)}}
566        .max-w-7xl{max-width:1000px!important}
567        .max-w-prose{max-width:100%!important}
568        @media (max-width: 768px) {
569            .characters-section .grid-cols-2 {
570                grid-template-columns: 1fr !important;
571            }
572        }
573        .video-container {
574            transition: all 0.3s ease;
575        }
576        .play-button {
577            transition: all 0.3s ease;
578            box-shadow: 0 4px 15px rgba(220, 38, 38, 0.4);
579        }
580        .play-button:hover {
581            transform: scale(1.1);
582            box-shadow: 0 6px 20px rgba(220, 38, 38, 0.6);
583        }
584        .strategies-section .icon-wrap,
585        .music-section .icon-wrap,
586        .development-section .icon-wrap {
587            width: 48px;
588            height: 48px;
589            border-radius: 50%;
590            display: inline-flex;
591            align-items: center;
592            justify-content: center;
593            background: rgba(139,92,246,.15);
594            color: var(--brand-yellow);
595            border: 1px solid #4C1D95;
596            box-shadow: 0 8px 20px rgba(0,0,0,.25);
597            font-size: 20px;
598        }
599        .footer-border {
600            border-color: var(--card-border) !important;
601        }
602        .song-names-container {
603            background: var(--fnf-gradient-3) !important;
604            border: 2px solid rgba(139,92,246,0.3) !important;
605            box-shadow: 0 8px 32px rgba(139,92,246,0.15) !important;
606            transition: all 0.3s ease !important;
607        }
608        .song-names-container:hover {
609            border-color: rgba(225,29,72,0.4) !important;
610            box-shadow: 0 12px 40px rgba(139,92,246,0.25) !important;
611        }
612        .week-section {
613            background: linear-gradient(135deg, rgba(139,92,246,0.1) 0%, rgba(225,29,72,0.1) 100%);
614            border: 1px solid rgba(139,92,246,0.2);
615            border-radius: 12px;
616            padding: 16px;
617            transition: all 0.3s ease;
618        }
619        .week-section:hover {
620            border-color: rgba(139,92,246,0.4);
621            box-shadow: 0 8px 25px rgba(139,92,246,0.2);
622        }
623        .week-title {
624            font-size: 1.1rem;
625            font-weight: 600;
626            color: #F3F4F6;
627            margin-bottom: 12px;
628            background: linear-gradient(135deg, #8B5CF6, #E11D48);
629            -webkit-background-clip: text;
630            background-clip: text;
631            -webkit-text-fill-color: transparent;
632        }
633        .songs-grid {
634            display: grid;
635            grid-template-columns: 1fr 1fr 1fr;
636            gap: 8px;
637        }
638        .songs-grid.week1-grid {
639            grid-template-columns: 1fr 1fr 1fr 1fr;
640        }
641        @media (max-width: 768px) {
642            .songs-grid {
643                grid-template-columns: 1fr 1fr;
644            }
645            .songs-grid.week1-grid {
646                grid-template-columns: 1fr 1fr;
647            }
648        }
649        @media (max-width: 480px) {
650            .songs-grid {
651                grid-template-columns: 1fr;
652            }
653        }
654        .song-tag {
655            padding: 6px 12px;
656            border-radius: 20px;
657            font-size: 0.875rem;
658            font-weight: 500;
659            transition: all 0.3s ease;
660        }
661        .song-tag:hover {
662            transform: translateY(-2px);
663            box-shadow: 0 4px 15px rgba(0,0,0,0.3);
664        }
665        .song-tag.tutorial { background: rgba(156,163,175,0.3); color: #D1D5DB; }
666        .song-tag.week1 { background: rgba(59,130,246,0.3); color: #93C5FD; }
667        .song-tag.week2 { background: rgba(249,115,22,0.3); color: #FDBA74; }
668        .song-tag.week3 { background: rgba(34,197,94,0.3); color: #86EFAC; }
669        .song-tag.week4 { background: rgba(236,72,153,0.3); color: #F9A8D4; }
670        .song-tag.week5 { background: rgba(14,165,233,0.3); color: #7DD3FC; }
671        .song-tag.week6 { background: rgba(168,85,247,0.3); color: #C4B5FD; }
672        .song-tag.week7 { background: rgba(239,68,68,0.3); color: #FCA5A5; }
673        .song-tag.week8 { background: rgba(245,101,101,0.3); color: #FEB2B2; }
674kbd {
675    display: inline-block;
676    padding: 3px 6px;
677    margin: 0 2px;
678    font-size: 0.85em;
679    font-weight: 600;
680    line-height: 1;
681    color: #1f2937;
682    background: linear-gradient(135deg, #f3f4f6, #e5e7eb);
683    border: 1px solid #d1d5db;
684    border-radius: 4px;
685    box-shadow: 0 2px 4px rgba(0,0,0,0.1), inset 0 1px 0 rgba(255,255,255,0.5);
686    font-family: 'Courier New', monospace;
687    text-shadow: 0 1px 0 rgba(255,255,255,0.8);
688}
689.screenshot-img {
690    border: 2px solid rgba(139,92,246,0.3) !important;
691    transition: all 0.3s ease !important;
692    box-shadow: 0 4px 12px rgba(139,92,246,0.15) !important;
693}
694
695.screenshot-img:hover {
696    border-color: rgba(225,29,72,0.5) !important;
697    box-shadow: 0 8px 20px rgba(139,92,246,0.25) !important;
698    transform: translateY(-2px) !important;
699}
700
701.screenshot-item {
702    transition: all 0.3s ease !important;
703}
704
705.screenshot-item:hover {
706    transform: translateY(-4px) !important;
707}
708
709.howto-step .step-header {
710    margin-bottom: 1rem !important;
711}
712
713.howto-step .step-image {
714    margin: 1rem 0 !important;
715}
716
717.howto-step .step-content {
718    margin-top: 1rem !important;
719}
720        @media (max-width:640px){
721            .pcgg { display:none!important;}
722        }
723        
724        .step-image img {
725            display: block;
726            max-width: 100%;
727            height: auto;
728        }
729        .screenshot-item {
730            position: relative;
731        }
732        .screenshot-item img {
733            display: block;
734            width: 100%;
735            height: auto;
736        }
737        .character-img {
738            display: block;
739            width: 80px;
740            height: 80px;
741            object-fit: cover;
742        }
743        .video-container {
744            width: 100%;
745            aspect-ratio: 16/9;
746            min-height: 200px;
747            max-width: 100%;
748            box-sizing: border-box;
749        }
750        @media (max-width: 768px) {
751            .video-container {
752                aspect-ratio: 16/9;
753                min-height: 180px;
754                margin: 0 auto;
755                width: 100%;
756                max-width: calc(100vw - 2rem);
757            }
758        
759            .music-section .card {
760                padding: 1rem !important;
761                overflow: hidden;
762            }
763            
764            .video-container .play-button {
765                width: 60px !important;
766                height: 60px !important;
767            }
768            
769            .video-container .play-button svg {
770                width: 24px !important;
771                height: 24px !important;
772            }
773            
774            .video-container p {
775                font-size: 14px !important;
776            }
777            
778            .video-container .text-lg {
779                font-size: 16px !important;
780            }
781        }
782        
783        @media (max-width: 480px) {
784            .video-container {
785                aspect-ratio: 4/3;
786                min-height: 150px;
787            }
788        }
789        
790        img[loading="lazy"] {
791            min-height: 1px;
792        }
793        
794        #game-frame-wrap {
795            contain: layout style paint;
796        }
797        
798        .resp-iframe {
799            contain: layout;
800        }
801        
802        .card {
803            contain: layout style;
804        }
805        
806        main {
807            contain: layout;
808        }
809        </style>
809<script defer src="/template/default/js/performance-optimizer.js"></script>
809<style>
810@media (min-width: 1101px) {
811  .page-grid > .col-sidebar,
812  aside.col-sidebar {
813    position: sticky;
814    top: var(--rail-sticky-top, 12px);
815    align-self: start;
816  }
817}
818</style>
818<script>
819(function () {
820  'use strict';
821  var inner = null;
822  var raf = 0;
823  var mqRail = window.matchMedia('(min-width: 768px)');
824  var mqSidebar = window.matchMedia('(min-width: 1101px)');
825
826  function findRail() {
827    return document.querySelector('.home-page-cols__rail-inner')
828      || document.querySelector('.page-grid > .col-sidebar')
829      || document.querySelector('aside.col-sidebar');
830  }
831
832  function isColSidebar(el) {
833    return el && el.classList && el.classList.contains('col-sidebar');
834  }
835
836  function headerOffset() {
837    var nodes = [document.documentElement, document.body];
838    var keys = ['--site-sticky-topbar-h', '--site-sticky-topbar-offset'];
839    for (var i = 0; i < nodes.length; i++) {
840      var cs = getComputedStyle(nodes[i]);
841      for (var k = 0; k < keys.length; k++) {
842        var n = parseFloat(cs.getPropertyValue(keys[k]).trim());
843        if (isFinite(n) && n > 0) return n;
844      }
845    }
846    var hdr = document.querySelector('header.site-header');
847    if (hdr) {
848      var h = Math.ceil(hdr.getBoundingClientRect().height);
849      if (h > 0) return h;
850    }
851    return 66;
852  }
853
854  function mqMatches(el) {
855    return isColSidebar(el) ? mqSidebar.matches : mqRail.matches;
856  }
857
858  function updateRailStickyTop() {
859    if (!inner) inner = findRail();
860    if (!inner) return;
861    if (!mqMatches(inner)) {
862      inner.style.removeProperty('--rail-sticky-top');
863      return;
864    }
865    var topPad = headerOffset() + 12;
866    var bottomPad = 12;
867    var h = inner.offsetHeight;
868    if (!h) return;
869    var top = Math.min(topPad, window.innerHeight - h - bottomPad);
870    inner.style.setProperty('--rail-sticky-top', top + 'px');
871  }
872
873  function scheduleUpdate() {
874    if (raf) return;
875    raf = requestAnimationFrame(function () {
876      raf = 0;
877      updateRailStickyTop();
878    });
879  }
880
881  function init() {
882    inner = findRail();
883    if (!inner) return;
884    updateRailStickyTop();
885    window.addEventListener('resize', scheduleUpdate, { passive: true });
886    if (typeof mqRail.addEventListener === 'function') {
887      mqRail.addEventListener('change', scheduleUpdate);
888      mqSidebar.addEventListener('change', scheduleUpdate);
889    } else if (typeof mqRail.addListener === 'function') {
890      mqRail.addListener(scheduleUpdate);
891      mqSidebar.addListener(scheduleUpdate);
892    }
893    if (typeof ResizeObserver === 'function') {
894      try { new ResizeObserver(scheduleUpdate).observe(inner); } catch (e) {}
895    }
896    window.addEventListener('load', scheduleUpdate, { once: true });
897  }
898
899  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', init);
900  else init();
901})();
902</script>
902</head><body class="min-h-screen antialiased"><header class="w-full site-header"><div class="site-header__inner"><a href="/" class="inline-flex items-center gap-3 flex-shrink-0" aria-label="Space Waves 2"><img src="https://cdn.spacewaves2.net/images/spacewaves.webp" alt="Space Waves 2" width="32" height="32" class="rounded" loading="eager" fetchpriority="high" decoding="async"><span class="heading-font brand-title site-title site-logo-title" style="font-size:1.5rem;font-weight:700;line-height:1;letter-spacing:-.02em">Space Waves 2</span></a><div class="site-header__nav-cluster"><nav class="site-nav" id="site-nav" aria-label="Main navigation"><a href="/" class="nav-link nav-home">Home</a><div class="nav-dropdown" id="nav-howto-dropdown"><div class="nav-dropdown__row"><a href="/how-to-play/" class="nav-link nav-dropdown__trigger">How to Play</a><button type="button" class="nav-dropdown__toggle" id="nav-howto-toggle" aria-expanded="false" aria-controls="nav-howto-submenu" aria-label="How to Play menu"><svg class="nav-dropdown__chevron" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path fill="currentColor" d="M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6z"/></svg></button></div><div class="nav-dropdown__menu" id="nav-howto-submenu" role="menu"><a href="/tips-and-tricks/" class="nav-dropdown__item" role="menuitem">Tips & Tricks</a></div></div><div class="nav-dropdown" id="nav-games-dropdown"><div class="nav-dropdown__row"><span class="nav-link nav-dropdown__trigger">More Games</span><button type="button" class="nav-dropdown__toggle" id="nav-games-toggle" aria-expanded="false" aria-controls="nav-games-submenu" aria-label="More Games menu"><svg class="nav-dropdown__chevron" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path fill="currentColor" d="M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6z"/></svg></button></div><div class="nav-dropdown__menu" id="nav-games-submenu" role="menu"><a href="/wave-games/" class="nav-dropdown__item" role="menuitem">Wave Games</a><a href="/geometry-games/" class="nav-dropdown__item" role="menuitem">Geometry Games</a><a href="/arcade-games/" class="nav-dropdown__item" role="menuitem">Arcade Games</a></div></div><div class="nav-search" id="nav-search-wrap" data-no-results="No matching games"><div class="nav-search__field"><span class="nav-search__icon" aria-hidden="true"><svg viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round"><circle cx="10.5" cy="10.5" r="6.5"/><path d="M15 15l5.5 5.5"/></svg></span><input type="search" id="nav-game-search" class="nav-search__input" name="q" placeholder="Search games…" autocomplete="off" spellcheck="false" aria-label="Search games by name" aria-autocomplete="list" aria-controls="nav-search-listbox" aria-expanded="false" maxlength="80"></div><div class="nav-search__dropdown" id="nav-search-listbox" role="listbox" aria-label="Search games by name" hidden></div></div></nav><div class="game-favorites" id="game-favorites-menu" data-empty-label="No favorites yet" data-empty-hint="Tap the heart under any game player to save it here." data-panel-label="My favorites" data-remove-label="Remove" data-move-up-label="Move up" data-added-label="Added to favorites" data-removed-label="Removed from favorites" data-quick-actions-label="Quick actions" data-install-app-label="Install to Desktop" data-add-preferred-google-label="Add preferred on Google" data-home-thumb="https://cdn.spacewaves2.net/images/spacewaves.webp"><button type="button" class="game-favorites__trigger" id="game-favorites-trigger" aria-expanded="false" aria-controls="game-favorites-dropdown" aria-haspopup="listbox" title="My favorites"><span class="game-favorites__trigger-heart" aria-hidden="true"><svg class="game-favorites__trigger-icon" viewBox="0 0 24 24" focusable="false"><path fill="none" stroke="currentColor" stroke-width="2" d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z"/></svg></span><span class="game-favorites__trigger-label">My favorites</span><span class="game-favorites__trigger-badge" id="game-favorites-badge" hidden aria-hidden="true">0</span>
902<svg class="game-favorites__trigger-chevron" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path fill="currentColor" d="M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6z"/></svg></button><div class="game-favorites__dropdown" id="game-favorites-dropdown" role="listbox" aria-label="My favorites" hidden></div></div></div><button class="nav-hamburger" id="nav-toggle" type="button" aria-label="Open menu" aria-expanded="false" data-aria-label-open="Open menu" data-aria-label-close="Close menu"><span></span><span></span><span></span></button></div></header><div class="nav-backdrop" id="nav-backdrop" hidden aria-hidden="true"></div>
902<script defer src="/template/default/js/site-header.js"></script>
902<script defer src="/template/default/js/spacewaves_favorites.js"></script>
902<script defer src="/template/default/js/surprise-me.js"></script>
902<main class="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8 py-4 content-page-main"><nav aria-label="Breadcrumb" class="text-sm content-page-breadcrumb"><ol class="flex items-center gap-2 text-gray-300"><li><a href="/" class="hover:underline">Space Waves Game</a></li><li aria-hidden="true">/</li><li><a href="/about/" class="hover:underline">About</a></li></ol></nav><article class="card rounded-lg p-6 sm:p-8 max-w-none content-page-article"><h1 class="heading-font text-3xl text-white mb-4">About Space Waves Game</h1><img class="about-lead-img" src="https://cdn.spacewaves2.net/images/spacewaves-intro.webp" alt="Space Waves browser game featured on spacewaves2.net" width="520" height="293" loading="lazy" decoding="async"><p class="text-lg text-gray-200 leading-relaxed">spacewaves2.net is an independent browser game site built around Space Waves and a growing collection of wave, geometry, and arcade titles. We are not do.Games, and we are not the official site of any game publisher. Everything here, from the game guides to the curated directories, is written and maintained by the people who actually play these games.</p><h2 class="heading-font text-2xl mt-8 text-white">Our Mission</h2><p class="mt-3 text-gray-300 leading-relaxed">Our mission is straightforward: give players a single, well-organized place to find Space Waves and similar browser arcade games, with guides that are actually useful and games that reliably load. Too many game directories are built around SEO automation, ad revenue, or bulk imports rather than the player experience. We take a different approach. Every title we add gets a hand-written guide, a verified game that works, and a page we would want to land on ourselves.</p><p class="mt-4 text-gray-300 leading-relaxed">We believe browser gaming should be accessible, fast, and straightforward. No installs, no accounts, no friction. Open a tab and play.</p><h2 class="heading-font text-2xl mt-8 text-white">What You Will Find Here</h2><p class="mt-3 text-gray-300 leading-relaxed">Our homepage centers on <strong>Space Waves</strong>, developed by <strong>do.Games</strong>, playable instantly in your browser. Alongside it, we maintain three curated game directories:</p><ul class="mt-3 list-disc pl-6 space-y-2 text-gray-300 leading-relaxed"><li><a href="/wave-games/" class="text-yellow-400 hover:text-yellow-300">Wave Games</a> — tunnel runners, wave dash titles, slope-style speed games, and wave-flying mechanics</li><li><a href="/geometry-games/" class="text-yellow-400 hover:text-yellow-300">Geometry Games</a> — rhythm platformers, cube-style stages, and geometry arcade variants</li><li><a href="/arcade-games/" class="text-yellow-400 hover:text-yellow-300">Arcade Games</a> — stage-based platformers, racers, and other fast browser picks</li></ul><p class="mt-4 text-gray-300 leading-relaxed">Each game page includes the playable game, original gameplay notes, controls, step-by-step screenshots, and an FAQ section we write ourselves.</p><h2 class="heading-font text-2xl mt-8 text-white">Our Features</h2><ul class="mt-3 space-y-4 text-gray-300 leading-relaxed"><li><strong class="text-white">Play Anywhere, No Install Required.</strong> Every game on this site runs directly in your browser on desktop, tablet, or mobile. There is nothing to download, no account to create, and no app to install. Open a tab and you are playing in seconds.</li><li><strong class="text-white">Hand-Curated Game Collection.</strong> We do not bulk-import game catalogs. Every title we list has been played, tested, and written about by us. If a game does not load reliably in the browser, it does not go on the site.</li><li><strong class="text-white">Original Guides and FAQs.</strong> Controls, tips, step-by-step screenshots, and answers to common questions are all written in-house. We treat each game page as a genuine resource, not a placeholder.</li><li><strong class="text-white">Related Game Discovery.</strong> Each game page surfaces the most similar titles based on actual gameplay mechanics, so players who enjoy one game can find others that match the same style rather than seeing a generic alphabetical list.</li><li><strong class="text-white">Regular Updates.</strong> We monitor game availability, fix broken pages, and add new games on an ongoing basis. Every update is logged in our public <a href="/changelog/" class="text-yellow-400 hover:text-yellow-300">changelog</a> so you can see exactly what has changed and when.</li></ul><h2 class="heading-font text-2xl mt-8 text-white">How We Choose Games</h2><p class="mt-3 text-gray-300 leading-relaxed">We add games that fit our focus on fast, reflex-driven browser play and that load reliably across modern desktop and mobile browsers. Before a title appears in a directory, we play it ourselves, confirm it loads correctly, and write original content for the page. We do not list games solely because they are trending elsewhere, and we do not accept payment to feature titles.</p><h2 class="heading-font text-2xl mt-8 text-white">What We Are Not</h2><p class="mt-3 text-gray-300 leading-relaxed">We do not develop, publish, or own the games listed here. Space Waves, Geometry Dash-related titles, and every other game name or logo shown on this site belong to their respective developers and trademark owners. We are an independent curator site. We are not affiliated with, endorsed by, or sponsored by do.Games, RobTop Games, or any other publisher unless explicitly stated.</p><p class="mt-3 text-gray-300 leading-relaxed">Games are sourced from third-party providers and run directly in your browser. If a provider changes or removes a game, we update or retire the page. For copyright or trademark concerns, see our <a href="/copyright/" class="text-yellow-400 hover:text-yellow-300">Copyright &amp; DMCA</a> page.</p><h2 class="heading-font text-2xl mt-8 text-white">Our Vision for the Future</h2><p class="mt-3 text-gray-300 leading-relaxed">We are building toward a more complete home for browser arcade gaming in the wave and geometry genre. In the near term, that means expanding our game directories with more thoroughly documented titles, improving how players discover games that match their preferred style, and making guides richer with more screenshots, video clips, and structured tips.</p><p class="mt-4 text-gray-300 leading-relaxed">Longer term, we want to make it easier for players to track the games they have tried, share their experiences, and find new picks based on what they already enjoy. Browser gaming is more capable than most directories reflect, and we think there is a lot of room to build something genuinely useful for the people who play these games regularly rather than casually.</p><h2 class="heading-font text-2xl mt-8 text-white">Who Runs the Site</h2><p class="mt-3 text-gray-300 leading-relaxed">We play these games ourselves and write everything you see here: guides, FAQs, directory notes, and site copy. We decide which titles to add, how pages are organized, and what gets improved next. This site is not managed by an outside game network or automated content system.</p><h2 class="heading-font text-2xl mt-8 text-white">Get in Touch</h2><p class="mt-3 text-gray-300 leading-relaxed">Found a game that stopped working, want to suggest a title that fits our directories, or need to report a copyright issue? <a href="/contact/" class="text-yellow-400 hover:text-yellow-300">Contact us</a> by email. We read every message. Formal copyright notices should follow the steps on our <a href="/copyright/" class="text-yellow-400 hover:text-yellow-300">Copyright &amp; DMCA</a> page.</p><p class="mt-10"><a href="https://spacewaves2.net/about/" class="inline-flex items-center gap-2 text-purple-400 hover:text-pink-400 font-semibold">Play Space Waves Game →</a></p></article></main><footer class="site-footer" role="contentinfo"><div class="site-footer__row">
902<p class="site-footer__copy">© <span id="year"></span>&nbsp;<a href="https://spacewaves2.net/about/">Space Waves Game</a>&nbsp;All rights reserved.</p><nav class="site-footer__nav" aria-label="Footer links"><a href="/about/">About</a><a href="/contact/">Contact</a><a href="/changelog/">Changelog</a><a href="/copyright/">Copyright & DMCA</a><a href="/privacy-policy/">Privacy Policy</a><a href="/terms-of-service/">Terms of Service</a><button type="button" class="privacy-settings-button" data-open-privacy-settings aria-label="Your privacy choices" title="Your privacy choices"><svg class="privacy-settings-button__icon" viewBox="0 0 30 14" width="30" height="14" aria-hidden="true" focusable="false"><rect x=".5" y=".5" width="29" height="13" rx="2" fill="#0a56c2" stroke="#fff" stroke-width="1"/><circle cx="8" cy="7" r="4.2" fill="#fff"/><path d="M6.6 7.05l1.05 1.1 2.15-2.3" fill="none" stroke="#0a56c2" stroke-width="1.35" stroke-linecap="round" stroke-linejoin="round"/><path d="M20.6 4.7l4.2 4.2M24.8 4.7l-4.2 4.2" fill="none" stroke="#fff" stroke-width="1.45" stroke-linecap="round"/></svg></button></nav></div><p class="site-footer__fine">We run spacewaves2.net as an independent fan site for browser games. We are not affiliated with, endorsed by, or sponsored by any game developer or publisher.</p><div class="site-footer__lang-wrap"><nav class="site-footer__lang" aria-label="Select Language"><div class="lang-tabs"><a class="lang-tabs__btn is-active" href="https://spacewaves2.net/" hreflang="en" aria-current="true">EN</a><a class="lang-tabs__btn" href="https://spacewaves2.net/pt-br/" hreflang="pt-BR">BR</a><a class="lang-tabs__btn" href="https://spacewaves2.net/nl/" hreflang="nl">NL</a><a class="lang-tabs__btn" href="https://spacewaves2.net/sv/" hreflang="sv">SE</a><a class="lang-tabs__btn" href="https://spacewaves2.net/es/" hreflang="es">ES</a><a class="lang-tabs__btn" href="https://spacewaves2.net/fr/" hreflang="fr">FR</a><a class="lang-tabs__btn" href="https://spacewaves2.net/de/" hreflang="de">DE</a></div></nav></div></footer><button id="back-to-top" type="button" aria-label="Back to top"><svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true"><path fill="currentColor" d="M12 5l-7 7h4v7h6v-7h4z"/></svg></button>
902<script defer>
903(function(){
904    var y = document.getElementById('year');
905    if (y) y.textContent = String(new Date().getFullYear());
906})();
907(function(){
908    var btn = document.getElementById('back-to-top');
909    if (!btn) return;
910    var ticking = false;
911    function getScrollY() {
912        return Math.max(
913            window.scrollY || 0,
914            window.pageYOffset || 0,
915            document.documentElement.scrollTop || 0,
916            document.body.scrollTop || 0
917        );
918    }
919    function onScroll() {
920        if (ticking) return;
921        ticking = true;
922        requestAnimationFrame(function() {
923            var threshold = Math.min(240, (window.innerHeight || 800) * 0.35);
924            var show = getScrollY() > threshold;
925            btn.classList.toggle('is-visible', show);
926            btn.style.display = show ? 'flex' : 'none';
927            ticking = false;
928        });
929    }
930    window.addEventListener('scroll', onScroll, { passive: true, capture: true });
931    document.addEventListener('scroll', onScroll, { passive: true, capture: true });
932    btn.addEventListener('click', function() { window.scrollTo({ top: 0, behavior: 'smooth' }); });
933    onScroll();
934})();
935
936function __runWhenIdle(fn) {
937    if (window.requestIdleCallback) window.requestIdleCallback(fn);
938    else setTimeout(fn, 1);
939}
940
941window.showToast = function(message, isSuccess, confirm) {
942    if (!window.toastLoaded) {
943        loadToastSystem().then(function() { window.showToast(message, isSuccess, confirm); });
944        return;
945    }
946    if (confirm) return window.showConfirm(message, confirm);
947    var toast = document.createElement('div');
948    toast.className = 'toast ' + (isSuccess ? 'toast-success' : 'toast-error');
949    toast.innerHTML = '<span class="toast-message">' + message + '</span>';
950    var fullscreenElement = document.fullscreenElement || document.webkitFullscreenElement || document.msFullscreenElement;
951    (fullscreenElement || document.body).appendChild(toast);
952    requestAnimationFrame(function() { toast.classList.add('show'); });
953    setTimeout(function() {
954        toast.classList.remove('show');
955        setTimeout(function() { toast.remove(); }, 300);
956    }, 3000);
957};
958
959function loadToastSystem() {
960    return new Promise(function(resolve) {
961        if (window.toastLoaded) return resolve();
962        __runWhenIdle(function() {
963            var style = document.createElement('style');
964            style.textContent = '.toast-dialog{position:fixed;top:0;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;z-index:2147483647;opacity:0;pointer-events:none;transition:opacity 0.2s ease}.toast-dialog.show{opacity:1;pointer-events:auto}.toast-dialog-backdrop{position:absolute;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,0.5);backdrop-filter:blur(4px)}.toast-dialog-content{position:relative;background:var(--card-bg);border-radius:12px;width:90%;max-width:400px;overflow:hidden;box-shadow:0 18px 40px rgba(0,0,0,.45);transform:translateY(20px);transition:transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);border:1px solid var(--card-border)}.toast-dialog.show .toast-dialog-content{transform:translateY(0)}.toast-dialog-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px}.toast-dialog-title{font-size:18px;font-weight:600;color:var(--text)}.toast-dialog-icon{font-size:20px;color:var(--accent)}.toast-dialog-body{padding:15px 20px 35px 20px;font-size:18px;line-height:1.5;color:var(--text);text-align:center}.toast-dialog-footer{display:flex;border-top:1px solid var(--card-border)}.toast-dialog-btn{flex:1;padding:14px;border:none;background:none;font-size:16px;cursor:pointer;transition:all 0.2s;color:var(--text)}.toast-dialog-cancel{border-right:1px solid var(--card-border)}.toast-dialog-cancel:hover{background-color:rgba(255,255,255,.06)}.toast-dialog-ok{font-weight:600;color:var(--accent)}.toast-dialog-ok:hover{background-color:rgba(105,249,68,.1)}@media(max-width:480px){.toast-dialog-content{width:calc(100%-40px);margin:20px}.toast-dialog-body{padding:20px 16px}.toast-dialog-btn{padding:12px}}';
965            document.head.appendChild(style);
966            window.showConfirm = function(message, options) {
967                options = options || {};
968                if (typeof options === 'function') options = { onOk: options };
969                var title = options.title || "Confirm";
970                var okText = options.okText || "Confirm";
971                var cancelText = options.cancelText || "Cancel";
972                var onOk = options.onOk;
973                var onCancel = options.onCancel;
974                var dialog = document.createElement('div');
975                dialog.className = 'toast-dialog';
976                dialog.innerHTML = '<div class="toast-dialog-backdrop"></div><div class="toast-dialog-content"><div class="toast-dialog-header"><span class="toast-dialog-title">' + title + '</span><span class="toast-dialog-icon">?</span></div><div class="toast-dialog-body">' + message + '</div><div class="toast-dialog-footer"><button type="button" class="toast-dialog-btn toast-dialog-cancel">' + cancelText + '</button><button type="button" class="toast-dialog-btn toast-dialog-ok">
976' + okText + '</button></div></div>';
977                document.body.appendChild(dialog);
978                requestAnimationFrame(function() { dialog.classList.add('show'); });
979                return new Promise(function(resolve) {
980                    function closeDialog(result) {
981                        dialog.classList.remove('show');
982                        setTimeout(function() {
983                            dialog.remove();
984                            resolve(result);
985                            if (result && onOk) onOk();
986                            if (!result && onCancel) onCancel();
987                        }, 200);
988                    }
989                    dialog.querySelector('.toast-dialog-ok').addEventListener('click', function() { closeDialog(true); });
990                    dialog.querySelector('.toast-dialog-cancel').addEventListener('click', function() { closeDialog(false); });
991                    dialog.querySelector('.toast-dialog-backdrop').addEventListener('click', function() { closeDialog(false); });
992                });
993            };
994            window.toastLoaded = true;
995            resolve();
996        });
997    });
998}
999</script>
999<script defer src="/template/default/js/privacy-consent.js"></script>
999<script defer src="/template/default/js/ad-slot-lazy.js"></script>
999<div id="pwa-install-banner" class="pwa-install" hidden role="dialog" aria-labelledby="pwa-install-title" aria-live="polite"><div class="pwa-install__inner"><img class="pwa-install__icon" src="/android-chrome-192x192.png" width="48" height="48" alt="" loading="lazy" decoding="async"><div class="pwa-install__text"><strong id="pwa-install-title" class="pwa-install__title">Install Space Waves to Desktop</strong><span id="pwa-install-desc" class="pwa-install__desc">Create a desktop icon — jump straight into the game, no browser tabs.</span></div><div class="pwa-install__actions"><button type="button" id="pwa-install-btn" class="pwa-install__cta">Install to Desktop</button><button type="button" id="pwa-install-dismiss" class="pwa-install__dismiss" aria-label="Not now">&times;</button></div></div></div>
999<script>
1000window.__SPACEWAVES_PWA_I18N = {"title":"Install Space Waves to Desktop","desc":"Create a desktop icon — jump straight into the game, no browser tabs.","btn":"Install to Desktop","later":"Not now","iosTitle":"Add to Home Screen","iosDesc":"Tap Share, then \"Add to Home Screen\" for quick access.","iosBtn":"Got it","hint":"Use the install icon in your browser address bar."};
1001(function () {
1002    /* Capture BIP immediately — the idle-loaded logic would otherwise miss it */
1003    window.__SPACEWAVES_PWA_DEFERRED = window.__SPACEWAVES_PWA_DEFERRED || null;
1004    window.addEventListener('beforeinstallprompt', function (e) {
1005        e.preventDefault();
1006        window.__SPACEWAVES_PWA_DEFERRED = e;
1007    });
1008
1009    /* beforeinstallprompt + banner logic loads at idle so it stays off the critical path.
1010       pwa-register.js uses the same guard, so the script is fetched only once. */
1011    function loadPwaInstallScript() {
1012        if (window.__SPACEWAVES_PWA_SCRIPT) return;
1013        window.__SPACEWAVES_PWA_SCRIPT = true;
1014        var s = document.createElement('script');
1015        s.src = '/template/default/js/spacewaves_pwa_install.js';
1016        s.async = true;
1017        document.head.appendChild(s);
1018    }
1019    function scheduleLoad() {
1020        if ('requestIdleCallback' in window) requestIdleCallback(loadPwaInstallScript, { timeout: 3500 });
1021        else setTimeout(loadPwaInstallScript, 2000);
1022    }
1023    if (document.readyState === 'complete') scheduleLoad();
1024    else window.addEventListener('load', scheduleLoad);
1025})();
1026</script>
vendor: 63 bytes, line 1026
1026<script async src="https://www.googletagmanager.com/gtag/js?id=
1026G-521V51LPZ1
vendor: 11 bytes, line 1026
1026"></script>
1026<script>
1027  window.dataLayer = window.dataLayer || [];
1028  window.gtag = window.gtag || function(){window.dataLayer.push(arguments);};
1029  window.gtag('js', new Date());
1030
1031  window.gtag('config', 'G-521V51LPZ1');
1032</script>
1032<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"a73cb83101314a71917add27b7df6c58","r":1,"spa":2}' crossorigin="anonymous"></script>
1032
1033</body></html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.