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>Contact Us | Space Waves</title><meta name="description" content="Contact spacewaves2.net for general support, feedback, game suggestions, or copyright concerns. We respond to every message."><link rel="canonical" href="https://spacewaves2.net/contact/"><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="Contact Us | Space Waves"><meta property="og:description" content="Contact spacewaves2.net for general support, feedback, game suggestions, or copyright concerns. We respond to every message."><meta property="og:url" content="https://spacewaves2.net/contact/"><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="Contact Us | Space Waves" /><meta name="twitter:url" content="https://spacewaves2.net/contact/" /><meta name="twitter:image" content="https://spacewaves2.net/favicon-32x32.png" /><meta name="twitter:description" content="Contact spacewaves2.net for general support, feedback, game suggestions, or copyright concerns. We respond to every message."><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="/contact/" class="hover:underline">Contact</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">Contact Us</h1><p class="text-lg text-gray-200 leading-relaxed">We are a small, independent team running spacewaves2.net. Whether you have a question, found a problem, or want to suggest a game, you can reach us by email. We read every message.</p><p class="mt-4 text-gray-300 leading-relaxed"><strong class="text-white">Email:</strong><a href="/cdn-cgi/l/email-protection#e9818c858586a99a99888a8c9e889f8c9adbc7878c9d" class="text-yellow-400 hover:text-yellow-300 ml-1"><span class="__cf_email__" data-cfemail="244c4148484b6457544547415345524157160a4a4150">[email protected]</span></a></p><p class="mt-2 text-gray-400 text-sm">We aim to reply within a few business days. If your message is about a specific page or game, please include the URL so we can look it up faster.</p><h2 class="heading-font text-2xl mt-6 text-white">General Inquiries and Support</h2><p class="mt-3 text-gray-300 leading-relaxed">For feedback, bug reports, game issues, or questions about the site, email us at <a href="/cdn-cgi/l/email-protection#a1c9c4cdcdcee1d2d1c0c2c4d6c0d7c4d2938fcfc4d5" class="text-yellow-400 hover:text-yellow-300"><span class="__cf_email__" data-cfemail="c3aba6afafac83b0b3a2a0a6b4a2b5a6b0f1edada6b7">[email protected]</span></a>. Whether you have run into a technical issue, want guidance on finding a specific type of game, or have a suggestion that could make the site better, we want to hear from you. Include the page URL when you can so we can respond faster.</p><h2 class="heading-font text-2xl mt-6 text-white">Game Suggestions</h2><p class="mt-3 text-gray-300 leading-relaxed">We are always looking for browser games that fit our wave, geometry, and arcade directories. If you know a title that runs reliably in the browser, plays well on desktop and mobile, and fits the style of games we cover, send us the name and URL. We review every suggestion, and if the game meets our standards we will add it with an original guide.</p><h2 class="heading-font text-2xl mt-6 text-white">Copyright Infringement</h2><p class="mt-3 text-gray-300 leading-relaxed">If you believe content on spacewaves2.net infringes on your copyright, contact us at <a href="/cdn-cgi/l/email-protection#0169646d6d6e4172716062647660776472332f6f6475" class="text-yellow-400 hover:text-yellow-300"><span class="__cf_email__" data-cfemail="ec8489808083ac9f9c8d8f899b8d9a899fdec2828998">[email protected]</span></a>. We take intellectual property rights seriously and will address your concern promptly. Please provide detailed information about the alleged infringement, including the specific URL, so we can investigate and resolve the issue. For formal DMCA notices, follow the full procedure outlined on our <a href="/copyright/" class="text-yellow-400 hover:text-yellow-300">Copyright & DMCA</a> page.</p><h2 class="heading-font text-2xl mt-6 text-white">Disclaimer</h2><p class="mt-3 text-gray-300 leading-relaxed">All trademarks, logos, and brand names mentioned on spacewaves2.net are the property of their respective owners. spacewaves2.net is not affiliated with, endorsed by, or sponsored by any trademark owner, including but not limited to do.Games, RobTop Games, or any related entities. References to game names and brands on this site are for informational and identification purposes only.</p><h2 class="heading-font text-2xl mt-6 text-white">Contact Information</h2><ul class="mt-3 space-y-2 text-gray-300 leading-relaxed"><li><strong class="text-white">General Support:</strong><a href="/cdn-cgi/l/email-protection#6109040d0d0e2112110002041600170412534f0f0415" class="text-yellow-400 hover:text-yellow-300"><span class="__cf_email__" data-cfemail="bed6dbd2d2d1fecdcedfdddbc9dfc8dbcd8c90d0dbca">[email protected]</span></a></li><li><strong class="text-white">Game Suggestions:</strong><a href="/cdn-cgi/l/email-protection#c1a9a4adadae81b2b1a0a2a4b6a0b7a4b2f3efafa4b5" class="text-yellow-400 hover:text-yellow-300"><span class="__cf_email__" data-cfemail="8de5e8e1e1e2cdfefdeceee8faecfbe8febfa3e3e8f9">[email protected]</span></a></li><li><strong class="text-white">Copyright & DMCA:</strong><a href="/cdn-cgi/l/email-protection#1078757c7c7f5063607173756771667563223e7e7564" class="text-yellow-400 hover:text-yellow-300"><span class="__cf_email__" data-cfemail="533b363f3f3c1320233230362432253620617d3d3627">[email protected]</span></a></li></ul><p class="mt-4 text-gray-300 leading-relaxed">
902We value your feedback and reports. Thank you for being part of the Space Waves community.</p><p class="mt-10 text-sm text-gray-400"><a href="/privacy-policy/" class="hover:underline">Privacy Policy</a> · <a href="/terms-of-service/" class="hover:underline">Terms of Service</a> · <a href="/copyright/" class="hover:underline">Copyright & DMCA</a></p></article></main><footer class="site-footer" role="contentinfo"><div class="site-footer__row"><p class="site-footer__copy">© <span id="year"></span> <a href="https://spacewaves2.net/contact/">Space Waves Game</a> 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>
vendor: 108 bytes, line 902
902<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
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">×</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.