{"product_id":"whzly-x-edmt-serum-2-reloaded-producer-bundle","title":"WHZLY X EDMT | SERUM 2 RELOADED: PRODUCER BUNDLE","description":"\u003cstyle\u003e\n      .serum2-global-wrapper {\n        width: 100vw;\n        position: relative;\n        left: 50%;\n        transform: translateX(-50%);\n        background: transparent;\n        margin: 0;\n        padding: 0;\n      }\n\n      \/* Centered inner content *\/\n      .serum2-inner {\n        max-width: 1300px;\n        width: 100%;\n        margin: 0 auto;\n        padding: 0px 0px;\n        box-sizing: border-box;\n      }\n\n\n@media (max-width: 480px) {\n  .serum2-inner h1 {\n    font-size: 28px !important;\n  }\n}\n\n      .serum2-inner h1,\n      .serum2-inner h2,\n      .serum2-inner h3 {\n        color: #39ff14;\n        text-shadow: 0 0 4px #39ff14;\n        position: relative;\n        animation: subtle-glitch 1s ease-in-out infinite;\n      }\n\n      .serum2-inner h2::before {\n        content: \"\u003e \";\n        color: #39ff14;\n        margin-right: 6px;\n      }\n  \n      .serum2-inner h1 {\n        text-align: center;\n        margin-bottom: -10px;\n      }\n  \n      .serum2-inner p,\n      .serum2-inner li {\n        color: #7CFF5A;\n        font-size: 16px;\n        line-height: 1.6;\n        z-index: 1;\n        position: relative;\n      }\n\n.system-header::before {\n  content: none !important;\n}\n\n@media (max-width: 480px) {\n  .system-header {\n    font-size: 18px !important;\n    line-height: 1.4;\n  }\n}\n\n.serum2-inner li:not(.expandable-trigger):not(.expandable-wrapper)::before {\n  content: \"▶\\FE0E \";\n  color: #39ff14;\n  padding-right: 6px;\n  position: relative;\n  top: 2px;\n}\n\n      .serum2-inner ul {\n        list-style-type: none;\n        padding-left: 0.6rem;\n        margin-left: 0;\n      }\n\n      @keyframes subtle-glitch {\n        0%, 60%, 100% { text-shadow: 0 0 4px #39ff14; }\n        20% { text-shadow: -1px 0 #39ff14, 1px 0 #39ff14; }\n        40% { text-shadow: 1px 0 #39ff14, -1px 0 #39ff14; }\n        80% { text-shadow: 0 0 6px #39ff14; }\n      }\n\n      .cursor {\n        display: inline-block;\n        width: 8px;\n        height: 14px;\n        background-color: #39ff14;\n        margin-left: 3px;\n        animation: blink 0.8s infinite alternate;\n      }\n\n      @keyframes blink {\n        from { opacity: 1; }\n        to { opacity: 0; }\n      }\n\n.hook-plus-image {\n  display: flex;\n  flex-wrap: nowrap;\n  justify-content: space-between;\n  align-items: center;\n  gap: 40px;\n  margin: 40px 0;\n  width: 100%;\n}\n\n.hook-text {\n  flex: 1 1 50%;\n  min-width: 300px;\n}\n\n  .split-combine-section.in-view.animation-complete .half {\n  z-index: 0;\n  pointer-events: none;\n}\n\n.split-combine-section.in-view.animation-complete .sr-only {\n  pointer-events: auto;\n  z-index: 2;\n}\n \n.split-combine-section.animation-complete .half.left,\n.split-combine-section.animation-complete .half.right {\n  display: none !important;\n}\n\n .split-combine-section .sr-only {\n  width: 100% !important;\n  height: auto;\n  max-width: 100%;\n  display: block;\n  margin: 0 auto;\n}\n\n.serum2-upsell-text {\n  opacity: 0;\n  visibility: hidden;\n  transform: translateY(20px);\n  transition:\n    opacity 0.6s ease,\n    transform 0.6s ease,\n    visibility 0s linear 0.6s;\n  color: #39ff14;\n  text-shadow: 0 0 4px #39ff14;\n  animation: subtle-glitch 1s ease-in-out infinite;\n}\n\n.serum2-upsell-section.animate-stage-2 .serum2-upsell-text {\n  opacity: 1;\n  visibility: visible;\n  transform: translateY(0);\n  transition-delay: 1.2s, 1.2s, 0s; \n}\n\n\/* Increase heading size *\/\n.hook-text h2,\n.serum2-inner h2 {\n  font-size: 24px;\n}\n\n\/* Increase bullet list font *\/\n.hook-text li,\n.serum2-inner ul li {\n  font-size: 18px;\n  line-height: 1.8;\n}\n\n\/* Optional: increase paragraph size under vault section *\/\n.serum2-inner p {\n  font-size: 17px;\n}\n.split-combine-section {\n  flex: 1 1 40%;\n  max-width: 480px;\n  position: relative;\n  overflow: hidden;\n  height: 320px;\n}\n\n.split-combine-section .half {\n  position: absolute;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  overflow: hidden;\n  transition: transform 1s ease-out;\n}\n\n.split-combine-section .half.left {\n  left: 0;\n  clip-path: polygon(0 0, 50% 0, 50% 100%, 0% 100%);\n  transform: translateX(-100%);\n}\n\n.split-combine-section .half.right {\n  left: 0;\n  clip-path: polygon(50% 0, 100% 0, 100% 100%, 50% 100%);\n  transform: translateX(100%);\n}\n\n  .split-combine-section .sr-only {\n  position: absolute;\n  width: 100%;\n  height: 100%;\n  object-fit: cover;\n  top: 0;\n  left: 0;\n  opacity: 0;\n  transition: opacity 1s ease-in-out;\n  z-index: 0; \n}\n\n  .split-combine-section.in-view .sr-only {\n  opacity: 1;\n  transition-delay: 1s; \n}\n  \n.split-combine-section.in-view .half.left,\n.split-combine-section.in-view .half.right {\n  transform: translateX(0);\n}\n  \n.split-combine-section.in-view.animation-complete .sr-only {\n  z-index: 2;\n  pointer-events: auto;\n  transition: transform 0.25s ease-in-out;\n}\n\n.split-combine-section.in-view.animation-complete .sr-only:hover {\n  transform: scale(1.04);\n}\n  \n.plus-glow div {\n  font-size: 229px;\n  font-family: 'Share Tech Mono', monospace;\n  color: #39ff14;\n  text-shadow: 0 0 24px #39ff14, 0 0 48px #39ff14;\n  opacity: 0;\n  transform: translateY(40px);\n  transition: opacity 1s ease, transform 1s ease;\n}\n\n.bundle-flex-wrapper.in-view.animation-complete .plus-glow div {\n  opacity: 1;\n  transform: translateY(0);\n}\n\n\n.split-combine-section.split-whzly {\n  aspect-ratio: 16 \/ 9;\n  height: auto;\n  max-width: 480px;\n}\n\n.split-combine-section.in-view.animation-complete .sr-only {\n  object-fit: contain !important;\n  height: auto !important;\n  position: relative !important;\n}\n\n.split-combine-section.in-view.animation-complete {\n  overflow: visible !important;\n}\n\n.split-img {\n  width: 100%;\n  height: 100%;\n  object-fit: cover;\n  transition: filter 0.8s ease;\n  filter: none;\n}\n\n@media (max-width: 768px) {\n  .hook-plus-image {\n    flex-direction: column;\n    align-items: center;\n    gap: 0px !important;\n  }\n\n  .split-combine-section {\n    max-width: 100%;\n    height: auto;\n    aspect-ratio: 16 \/ 9;\n  }\n}\n\n@media (min-width: 769px) {\n  .split-combine-section {\n    margin-top: 30px;\n  }\n}\n\n@keyframes pulse-glow-smaller {\n  0% { filter: drop-shadow(0 0 4px #39ff14); }\n  100% { filter: drop-shadow(0 0 8px #39ff14); }\n}\n\n      @media (max-width: 768px) {\n        .vault-plus-split {\n          flex-direction: column;\n          align-items: center;\n        }\n\n        .split-combine-section {\n          max-width: 100%;\n        }\n      }\n\n  .jukebox-wrapper {\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  transform-origin: top center;\n  padding: 20px;\n  transform: translateX(100px);\n  margin-top: -10px !important;\n}\n\n\/* Scale for tablet *\/\n@media (max-width: 768px) {\n  .jukebox-wrapper {\n    transform: scale(0.85);\n  }\n}\n\n\/* Scale further for mobile *\/\n@media (max-width: 480px) {\n  .jukebox-wrapper {\n    transform: scale(0.7);\n  }\n}\n\n.animated-list ul ul {\n  max-height: 0;\n  opacity: 0;\n  transform: translateY(-8px);\n  overflow: hidden;\n  transition:\n    max-height 1.2s ease-in-out,\n    opacity 1.2s ease-in-out,\n    transform 1.2s ease-in-out;\n}\n\n.animated-list.visible ul ul {\n  max-height: 1000px;\n  opacity: 1;\n  transform: translateY(0);\n}\n\n@media (max-width: 768px) {\n  \/* 1. Slightly reduce margin above \"Why This Pack Hits Different\" *\/\n  .hook-text h2 {\n    margin-top: 0px !important; \/* was 35px *\/\n    margin-bottom: 0px\n  }\n\n  .hook-text p {\n    margin-bottom: 0px !important;\n  }\n\n  \/* 2. Reduce space above \"What's Inside the Vault\" *\/\n  .vault-and-player {\n    margin-top: 5px !important; \/* was 100px *\/\n  }\n\n  \/* 3. Tighten space below \"Download Source Code\" button *\/\n  .glitch-button.scroll-button {\n    margin-bottom: 30px !important; \/* was 80px *\/\n  }\n}\n\n@media (max-width: 768px) {\n  .hook-plus-image .hook-text {\n    margin-top: -5px\n    margin-bottom: -5px !important;\n  }\n}\n\n    \u003c\/style\u003e\n\n\u003cstyle\u003e\n@media (max-width: 768px) {\n  .serum2-inner {\n    padding-left: 10px !important;\n    padding-right: 10px !important;\n    margin-left: auto !important;\n    margin-right: auto !important;\n    box-sizing: border-box;\n  }\n}\n\u003c\/style\u003e\n\n  \u003cstyle\u003e\n@media (max-width: 480px) {\n  .serum2-inner p,\n  .serum2-inner li {\n    font-size: 15px !important; \/* was 17-18px *\/\n    line-height: 1.5 !important; \/* was 1.8 *\/\n  }\n\n  .serum2-inner h2 {\n    font-size: 22px !important; \/* was 24px *\/\n    margin-top: 20px !important;\n    margin-bottom: 12px !important;\n  }\n\n  #fullscreenTip {\n    font-size: 12px !important;\n    line-height: 1.2 !important;\n  }\n}\n\n  .hook-text ul,\n  .vault-section ul {\n    margin-top: 8px !important;\n    margin-bottom: 0px !important;\n  }\n}\n\u003c\/style\u003e\n\n\u003cdiv class=\"serum2-global-wrapper\"\u003e\n\u003cdiv class=\"serum2-inner\"\u003e\n\u003c!-- Content Starts Here --\u003e\n\u003ch1\u003e\u0026gt; INIT SERUM 2 RELOADED.EXE\u003cspan class=\"cursor\"\u003e\u003c\/span\u003e\n\u003c\/h1\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cstyle\u003e\n.glitch-line {\n  width: 100%;\n  overflow: hidden;\n  white-space: nowrap;\n  font-size: 13px;\n  color: #39ff14;\n  font-family: 'Share Tech Mono', monospace;\n  margin: 10px 0;\n  position: relative;\n}\n\n.scrolling-text {\n  display: inline-block;\n  white-space: nowrap;\n  animation: scroll-text 250s linear infinite;\n  padding-left: 0; \/* Remove the initial gap *\/\n}\n\n@keyframes scroll-text {\n  0% {\n    transform: translateX(0%);\n  }\n  100% {\n    transform: translateX(-100%);\n  }\n}\n\n.vault-statement {\n  text-align: center;\n  font-family: 'Share Tech Mono', monospace;\n  font-size: 22px;\n  margin: 0px auto -35px auto;\n  max-width: 900px;\n  color: #39ff14;\n  text-shadow: 0 0 4px #39ff14;\n  animation: subtle-glitch 1s ease-in-out infinite;\n}\n\n.vault-statement p {\n  margin-bottom: -15px; \/* Reduce bottom space *\/\n  line-height: 1.5;\n}\n\n@media (min-width: 769px) {\n  .vault-statement {\n    margin-top: 10px !important;\n  }\n}\n\n@media (max-width: 768px) {\n  .vault-statement {\n    font-size: 18px !important; \/* smaller than desktop (22px) *\/\n    line-height: 1.4 !important; \/* tighter line spacing *\/\n    padding: 0 10px; \/* optional: add side padding so it doesn't hug edges *\/\n  }\n  \n  .vault-statement p {\n    font-size: 16px !important; \/* smaller paragraph inside *\/\n    line-height: 1.4 !important;\n    margin-bottom: 0px !important; \/* tighten gap between lines *\/\n  }\n}\n\n\n.desktop-vault-text {\n  display: block;\n}\n.mobile-vault-text {\n  display: none;\n}\n\n@media (max-width: 768px) {\n  .desktop-vault-text {\n    display: none;\n  }\n  .mobile-vault-text {\n    display: block;\n  }\n}\n\n\u003c\/style\u003e\n\n\n\u003cstyle\u003e\n@media (max-width: 768px) {\n  .desktop-only-text {\n    display: none !important;\n  }\n}\n\n@media (min-width: 769px) {\n  .benchmark-tagline {\n    margin-top: -15px;\n    margin-bottom: 9px !important;\n  }\n}\n\u003c\/style\u003e\n\n\u003cstyle\u003e\n@media (max-width: 768px) {\n  \/* Force the two halves to stay visible and animate normally *\/\n  .split-combine-section.split-whzly .half,\n  .split-combine-section.split-serum .half {\n    display: none !important;\n\n  }\n\n\/* Always show fallback sr-only image for sections that still use it *\/\n.split-combine-section .sr-only {\n  opacity: 1 !important;\n  position: relative !important;\n  z-index: 1 !important;\n  pointer-events: auto !important;\n  transition: none !important;\n}\n\u003c\/style\u003e\n\n\u003cstyle\u003e\n@media (max-width: 768px) {\n  .split-combine-section {\n    overflow: visible !important; \/* Let the full image show its soft edges *\/\n    height: auto !important;       \/* Allow full height based on image *\/\n    aspect-ratio: auto !important; \/* Remove the forced aspect ratio *\/\n    max-width: 100% !important;\n    transform: none !important;\n  }\n\n  .split-combine-section .sr-only {\n    width: 100% !important;\n    height: auto !important;\n    object-fit: contain !important;\n    border-radius: 0 !important;\n    margin: 20px 0 !important; \/* Add nice breathing room *\/\n    transform: none !important;\n  }\n}\n\u003c\/style\u003e\n\n\u003cstyle\u003e\n.expandable-content \u003e ul {\n  margin-top: 4px !important; \/* was larger *\/\n  padding-top: 0px !important;\n}\n\n\/* Second level bullets (nested ul inside ul) *\/\n.expandable-content ul ul {\n  margin-left: 16px !important;\n  padding-left: 16px !important;\n  border-left: none !important;\n  margin-top: 4px !important; \n  padding-top: 0px !important;\n  margin-bottom: 0px !important;\n}\n\n.expandable-content ul ul li::before {\n  content: \"•\" !important; \n  margin-right: 4px !important;\n  transform: translateX(-1px) !important;\n  position: relative;\n  top: -2px; \n}\n\n.expandable-content ul ul li {\n  font-weight: normal;\n  margin-top: 2px !important; \n  margin-bottom: 2px !important;\n  line-height: 1.5 !important; \n}\n\n.expandable-content ul li {\n  font-weight: bold;\n  margin-top: 2px !important;\n  margin-bottom: 2px !important;\n  line-height: 1.5 !important;\n}\n\u003c\/style\u003e\n\n\u003cstyle\u003e\n@media (min-width: 769px) {\n  .vault-and-player {\n    align-items: center; \/* ✨ center vault text + player vertically *\/\n  }\n\n  .jukebox-section {\n    position: relative; \/* 🔥 no sticky *\/\n    align-self: center;  \/* 🔥 align to center of text block *\/\n    margin-left: -225px; \/* ✅ keep your custom horizontal offset *\/\n    transform: translateY(0); \/* reset *\/\n    transition: none;\n    transition: transform 0.3s ease;\n  }\n}\n\n.bundle-flex-wrapper {\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: center;\n  gap: 60px;\n  max-width: 1440px; \/* Add this line *\/\n  margin: 0 auto;     \/* Center within page *\/\n}\n\u003c\/style\u003e\n\n\u003cstyle\u003e\n@media (max-width: 768px) {\n  .weapon-tagline {\n    margin-bottom: 8px !important;\n  }\n}\n\n.plus-symbol {\n  font-size: 260px; \/* Increased from 220px *\/\n  font-family: 'Share Tech Mono', monospace;\n  color: #39ff14;\n  text-shadow: 0 0 24px #39ff14, 0 0 48px #39ff14;\n  opacity: 0;\n  transform: translateY(40px);\n  transition: opacity 0.6s ease, transform 0.6s ease;\n  pointer-events: none;\n  margin-top: 80px; \/* Push it visually lower *\/\n}\n\n.plus-symbol.active {\n  opacity: 1;\n  transform: translateY(0);\n  transition-delay: 0.5s;\n  animation: pulsePlus 2.2s ease-in-out infinite 0.5s;\n}\n\n@keyframes pulsePlus {\n  0%   { transform: scale(1) translateY(0); text-shadow: 0 0 24px #39ff14, 0 0 48px #39ff14; }\n  50%  { transform: scale(1.08) translateY(0); text-shadow: 0 0 40px #39ff14, 0 0 70px #39ff14; }\n  100% { transform: scale(1) translateY(0); text-shadow: 0 0 24px #39ff14, 0 0 48px #39ff14; }\n}\n\n\/* Hide\/show based on screen size *\/\n.mobile-only-tagline {\n  display: none;\n}\n.desktop-only-tagline {\n  display: inline;\n}\n\n@media (max-width: 768px) {\n  .mobile-only-tagline {\n    display: inline;\n  }\n  .desktop-only-tagline {\n    display: none;\n  }\n}\n\u003c\/style\u003e\n\n\u003cscript\u003e\ndocument.addEventListener('DOMContentLoaded', function () {\n  const plus = document.querySelector('.plus-symbol');\n  const splitSections = document.querySelectorAll('.split-combine-section');\n  let triggered = false;\n\n  window.addEventListener('scroll', () =\u003e {\n    if (triggered || !plus) return;\n\n    for (const section of splitSections) {\n      const rect = section.getBoundingClientRect();\n      const triggerPoint = window.innerHeight * 0.75;\n\n      if (rect.top \u003c triggerPoint) {\n        plus.classList.add('active');\n        triggered = true;\n        break;\n      }\n    }\n  }, { passive: true });\n});\n\u003c\/script\u003e\n\n\u003cdiv class=\"serum2-global-wrapper\"\u003e\n\u003cdiv class=\"serum2-inner\"\u003e\n\u003cdiv class=\"glitch-line\"\u003e\n\u003cdiv class=\"scrolling-text\" aria-hidden=\"true\"\u003edecrypting.wavetable@00101     scanning.fx_chain_44.dll     compiling_macro_map.v2     patch\/init.sequencer     0101010101010101     kernel_buffer.exe     system_reload.bak     loading.custom_mod.fx     resample.sys32     reboot.presetMatrix.dll     inject_voice_fx.vbs     tracing.envelopeMap     INIT_SIGNAL_PROTOCOL     decoding.LFO.rates     linking.vocal_shaper     verify_payload.wavetable     writing.mod_routing.txt     unpacking.operator_bins     exporting\/FX.env.config     bootloader.reseed.wav     cracking.poly_limit     scan_temp.macro_patch     chmod+x.reactor.wav     syncing.db_vocoder.map     invoke.sidechain.cmd     loading.voice_engine_5.dll     scan_glitch.fxpreset     apply_patch_mod.sys     merge.reese_layer.bin     assign.envelope_curve.cfg     launch_hack_protocol.exe     xor_init.wavetable     drag_rack.sysinit     compile.core_basschain.fx     loading.reverb_echo.sys     glitchstream.vstinject     update.serum_gridmap     INIT_CMD_SIGNAL     feedback.loop.core     merge_host\/vocode.op     render.syscall.sub     analyze.osc_phasewrap     inject.reverb_tail.bin     LFO_depth.amp_mod.dll     inject_chain_fx.45     launch.bassline.core     osc_sync.locked.fx     debug_ampchain.env     seed_reactor_lfo.vst     envelope_decrypt.map     warp.init.kernel     clean.noisefloor.raw     RELOAD_SIGNAL.exe     mount.resonator.array     scan.sampler_wavebank     assign_macro.envslot     cache.bass_shred.fx     fxrack.bootdrive.alt     midi_patchrouter.56     inject.mod_table.007     emulate_humanise.seq     overdrive.subharm.dll     fadein_kernel.808.bak     render_reso.mapseq     route.LFOxEnv.bit     assign.voiceID.fxinit     rewrite_filter.zap     delay_feedback.reboot     SERUM_MACRO_MAP_OK     glitch.hammer.syscall     FX_PROCESS_SIGNAL++     temp.render_packet     audio\/bleedblock.map     driver.reboot.bounce     offset.splitLayer.vbs     decode.serum_fx.vst     macro.assign.v1.02     dl\/midfile_cluster.dat     freq.scan++.envhack     patch.sustain.limit     fxlayer.delayrack.out     ramp_env_drift.fader     osc_init_reform.bin     lowpass_filter_detect     bassboost.overload     ctrlwheel_assign_fx     EXE_COMPILE_BASSMOD     subdrop.loader.stack     EXPORTING_KITCHAIN     inject_M1_grit.wav     drift.ampsync_mode3     reformat_voicechip_v2     patch.intro_maplink     unlock.noise_gate     SFX_ROUTER_INIT     echo_slicer.binload     autorun.presetdeck.dll     rackmountFX.2024.map     validate.sub_freqID     splice.shard.layer     compile.sequencer.spread     glitchlock.kernel_macro     compiling_synthmap.v6     vocoder_keychain.wav     decoding_macro_tree     init_laser_array.fx     signal_trace_path.ogg     launch_protocol.dnb     syncing.drop_zone.fx     streamlink.dsp_chains     loading_module.core     waveform_burst.dll     consolidate_layers.vst     stabilise_waveform.sh     echo_sync.wtf     phaser.grid_launch     injector.key_override     reboot_firmware.serum     compressor_chain.v4     subharmonic_init.ex     refactor_glitch.cfg     slice_packet.init     reconnect_patch_009     uplink_buffer_shift     presets_lock.exe     shuffle_rhythm_bits     export.drop_macro.fx     init.voice_stream     noise_reactor.engage     uplink_bassmap.sys     kick_module_align.vst     signal_remap_fx     compressor_patch.fx     boot_wub_mode.wav     render_glitch_stack     mapping_reso_trig.exe     log_event_core_init     decompile.fx_layer     decrypt_module_chain     override_wave_kernel     validate_patchset.dll     simulate_crunch.vst     init_rack_wave.sys     glitch_axis.rotor     deploy_crashkit.fxp     sync_mod_matrix.xf     trigger_rise_fx.exe     alien_delay_rack.fx     distortion_patch_set     glitch_seed.inj     start_mod_link.bat     link_voicechain.fx     inject_mod_kernel     compile_rack_error     loop_glitch_burst.fx     decode_chorusbank.dll     sustain_error_patch     initiate_meltdown.fx     scramble_macro_drive     start_packet_map     converge_layers.wav     launch_buffer_trace     instability_rack.fx     mutate_carrier_shock     flux_noise_trigger     sweep_chain_looper.fx     reload_macro_event.sys     \u003c\/div\u003e\n\u003c\/div\u003e\n\u003cp class=\"weapon-tagline\" style=\"text-align: center;\"\u003e\n  \u003cspan class=\"desktop-only-tagline\"\u003eThe Ultimate Serum 2 Production Bundle. Reload your production protocol with a tactical approach to sound design.\u003c\/span\u003e\n  \u003cspan class=\"mobile-only-tagline\"\u003eThe Ultimate Serum 2 Production Bundle.\u003cbr\u003eReload your protocol with tactical sound design.\u003c\/span\u003e\n\u003c\/p\u003e\n\u003cdiv class=\"bundle-heading-wrapper\"\u003e\n  \u003ch2 style=\"text-align:center; font-size: 32px; margin-top: 30px;\"\u003e\n    📦 What's Inside the Producer Bundle?\n  \u003c\/h2\u003e\n\u003c\/div\u003e\n\u003c!-- ✅ Outer container to allow more horizontal space --\u003e\n\u003cdiv style=\"max-width: 100%; padding: 0 0px;\"\u003e\n\n\n  \u003cdiv class=\"hook-plus-image\" style=\"justify-content: center; flex-wrap: wrap;\"\u003e\n\n    \u003c!-- 💥 FLEX WRAPPER FOR PRESET + COURSE + PLUS --\u003e\n\u003cdiv style=\"width: 100%; overflow-x: auto;\"\u003e\n  \u003cdiv class=\"bundle-flex-wrapper top-bundle-section\" style=\"\n    display: flex;\n    flex-wrap: nowrap;\n    justify-content: center;\n    align-items: flex-start;\n    gap: 0px;\n  \"\u003e\n      \u003c!-- LEFT: PRESETS --\u003e\n      \u003cdiv class=\"hook-text hook-text-centered\" style=\"max-width: 550px;\"\u003e\n        \u003ch2 style=\"text-align: center; margin-bottom: 16px;\"\u003e💾 SAMPLE + PRESET PACK\u003c\/h2\u003e\n\n\u003cdiv style=\"text-align: center;\"\u003e\n\u003c!-- Desktop Version (unchanged) --\u003e\n\u003cul class=\"sample-list-desktop\"\u003e\n  \u003cli\u003e120 weaponised Serum 2 presets - native-built for Serum 2\u003c\/li\u003e\n  \u003cli\u003e500+ samples: bass, atmospheres, glitch, vocals \u0026amp; more\u003c\/li\u003e\n  \u003cli\u003eAll 8 macros used, one-note triggers, no post needed\u003c\/li\u003e\n  \u003cli\u003eFull-length Ableton project file included\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003c!-- Mobile Version (shortened) --\u003e\n\u003cul class=\"sample-list-mobile\"\u003e\n  \u003cli\u003e120 weaponised Serum 2 presets\u003c\/li\u003e\n  \u003cli\u003e500+ samples: bass, glitch, vocals \u0026amp; more\u003c\/li\u003e\n  \u003cli\u003eOne-note triggers, all 8 macros used\u003c\/li\u003e\n  \u003cli\u003eFull-length Ableton project included\u003c\/li\u003e\n\u003c\/ul\u003e\n        \u003c\/div\u003e\n\n        \u003csection class=\"split-combine-section split-serum\" style=\"max-width: 300px; margin: 20px auto 0 auto; cursor: pointer;\" onclick=\"window.open('https:\/\/edmtemplates.net\/products\/whzly-x-edmt-serum-2-reloaded-sample-preset-pack', '_blank')\"\u003e\n          \u003cdiv class=\"half left\"\u003e\n            \u003cimg class=\"split-img\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/sample_preset_pack.webp?v=1747135602\" alt=\"Serum 2 Sample\/Preset Pack Coverart\"\u003e\n          \u003c\/div\u003e\n          \u003cdiv class=\"half right\"\u003e\n            \u003cimg class=\"split-img\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/sample_preset_pack.webp?v=1747135602\" alt=\"Serum 2 Sample\/Preset Pack Coverart\"\u003e\n          \u003c\/div\u003e\n          \u003cimg class=\"sr-only\" style=\"width: 100%; height: auto; display: block;\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/sample_preset_pack.webp?v=1747135602\" alt=\"Serum 2 Sample\/Preset Pack Coverart\"\u003e\n        \u003c\/section\u003e\n      \u003c\/div\u003e\n\n\u003c!-- GLOWING GREEN + --\u003e\n\u003cdiv class=\"plus-glow\" style=\"align-self: center;\"\u003e\n  \u003cdiv class=\"plus-symbol\"\u003e+\u003c\/div\u003e\n\u003c\/div\u003e\n\n\n      \u003c!-- RIGHT: COURSE --\u003e\n      \u003cdiv class=\"hook-text hook-text-centered\" style=\"max-width: 550px;\"\u003e\n        \u003ch2 style=\"text-align: center; margin-bottom: 16px;\"\u003e🎓 WHZLY'S FULL COURSE\u003c\/h2\u003e\n\n  \u003cdiv style=\"text-align: center;\"\u003e\n    \u003c!-- Desktop Version (if needed in future) --\u003e\n    \u003cul class=\"course-list-desktop\"\u003e\n      \u003cli\u003e4hrs+ across Novice, Intermediate \u0026amp; Expert levels\u003c\/li\u003e\n      \u003cli\u003eLearn pro workflow, drop design \u0026amp; FX chaining\u003c\/li\u003e\n      \u003cli\u003eExplains every feature added in Serum 2\u003c\/li\u003e\n      \u003cli\u003eGo from zero to chaos architect\u003c\/li\u003e\n    \u003c\/ul\u003e\n\n    \u003c!-- Mobile Version (optional if you ever want to shorten lines) --\u003e\n    \u003c!--\n    \u003cul class=\"course-list-mobile\"\u003e\n      \u003cli\u003e30+ pro video lessons\u003c\/li\u003e\n      \u003cli\u003eWorkflow, drops \u0026 FX tricks\u003c\/li\u003e\n      \u003cli\u003eSerum 2 explained fully\u003c\/li\u003e\n      \u003cli\u003eZero to chaos architect\u003c\/li\u003e\n    \u003c\/ul\u003e\n    --\u003e\n  \u003c\/div\u003e\n\n        \u003csection class=\"split-combine-section split-serum\" style=\"max-width: 300px; margin: 20px auto 0 auto; cursor: pointer;\" onclick=\"window.open('https:\/\/edmtemplates.net\/products\/whzly-x-edmt-serum-2-reloaded-production-course', '_blank')\"\u003e\n          \u003cdiv class=\"half left\"\u003e\n            \u003cimg class=\"split-img\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/production_course.webp?v=1747135602\" alt=\"Serum 2 Production Course Coverart\"\u003e\n          \u003c\/div\u003e\n          \u003cdiv class=\"half right\"\u003e\n            \u003cimg class=\"split-img\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/production_course.webp?v=1747135602\" alt=\"Serum 2 Production Course Coverart\"\u003e\n          \u003c\/div\u003e\n          \u003cimg class=\"sr-only\" style=\"width: 100%; height: auto; display: block;\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/production_course.webp?v=1747135602\" alt=\"Serum 2 Production Course Coverart\"\u003e\n        \u003c\/section\u003e\n      \u003c\/div\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\n\n\u003cdiv class=\"hook-plus-image\"\u003e\n  \u003cdiv class=\"hook-text\"\u003e\n    \u003ch2 style=\"margin-top: 35px; margin-bottom: 20px;\"\u003e🧠 WHY GET THE BUNDLE?\u003c\/h2\u003e\n    \u003cp class=\"benchmark-tagline\" style=\"margin-bottom: 16px;\"\u003e\n      \u003cstrong\u003e\u003cspan class=\"desktop-only-text\"\u003eBecause real sound design is more than loading a preset.\u003c\/span\u003e\u003c\/strong\u003e\n    \u003c\/p\u003e\n\u003c!-- Desktop version (unchanged if needed elsewhere) --\u003e\n\u003cul class=\"bundle-list-desktop\"\u003e\n  \u003cli\u003eThe pack gives you weapons. The course shows you how to use them.\u003c\/li\u003e\n  \u003cli\u003eWatch WHZLY break down, mutate, and rebuild sounds from the inside out.\u003c\/li\u003e\n  \u003cli\u003eFollow his process: Patch \u0026gt; Process \u0026gt; Resample \u0026gt; Destroy.\u003c\/li\u003e\n  \u003cli\u003eEvery preset is made to be tweaked, bent, broken, and rebuilt.\u003c\/li\u003e\n  \u003cli\u003eLearn WHZLY's sound design flow - not just how, but *why* he does it.\u003c\/li\u003e\n  \u003cli\u003e\n    Get the full kit for just \u003cstrong style=\"color:#39ff14;\"\u003e$39.99\u003c\/strong\u003e - \n    \u003cspan style=\"color:#7CFF5A; text-decoration: line-through; text-shadow: 0 0 1px #39ff14;\"\u003e\n      $\u003cspan style=\"position: relative; top: -1px;\"\u003e55\u003c\/span\u003e\n    \u003c\/span\u003e\n    \u003cspan style=\"margin-left: 4px;\"\u003eif bought separately.\u003c\/span\u003e\n  \u003c\/li\u003e\n  \u003cli\u003e\u003cem\u003eMore knowledge. More sounds. Better value.\u003c\/em\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003c!-- Mobile version --\u003e\n\u003cdiv class=\"mobile-bundle-list-wrapper\"\u003e\n  \u003cul class=\"bundle-list-mobile\"\u003e\n    \u003cli\u003eGet the weapons and the knowledge how to use them.\u003c\/li\u003e\n    \u003cli\u003eJoin WHZLY to build massive sounds from scratch.\u003c\/li\u003e\n    \u003cli\u003eLearn how to: Patch \u0026gt; Process \u0026gt; Resample \u0026gt; Destroy.\u003c\/li\u003e\n    \u003cli\u003e\n      Full kit for \u003cstrong style=\"color:#39ff14;\"\u003e$39.99\u003c\/strong\u003e - \n      \u003cspan style=\"color:#7CFF5A; text-decoration: line-through; text-shadow: 0 0 1px #39ff14;\"\u003e\n        $\u003cspan style=\"position: relative; top: -1px;\"\u003e55\u003c\/span\u003e\n      \u003c\/span\u003e  separately.\n    \u003c\/li\u003e\n    \u003cli\u003eThe most complete and innovative sounds online\u003c\/li\u003e\n    \u003cli\u003e\u003cem\u003eMore knowledge. More sounds. Better value.\u003c\/em\u003e\u003c\/li\u003e\n  \u003c\/ul\u003e\n\u003c\/div\u003e\n\n\n  \u003c\/div\u003e\n\n  \u003csection class=\"split-combine-section split-whzly\"\u003e\n    \u003cdiv class=\"half left\"\u003e\n      \u003cimg class=\"split-img\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/3D_Serum2_Preset.jpg?v=1747044896\" alt=\"Serum 2 Macro Design\"\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"half right\"\u003e\n      \u003cimg class=\"split-img\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/3D_Serum2_Preset.jpg?v=1747044896\" alt=\"Serum 2 FX Processing\"\u003e\n    \u003c\/div\u003e\n    \u003cimg class=\"sr-only\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/3D_Serum2_Preset.jpg?v=1747044896\" alt=\"\"\u003e\n  \u003c\/section\u003e\n\u003c\/div\u003e\n\n  \u003cdiv class=\"vault-and-player\" style=\"display: flex; flex-wrap: wrap; justify-content: space-between; align-items: flex-start; gap: 40px; margin-top: 100px;\"\u003e\n\n    \u003c!-- Vault Section --\u003e\n    \u003cdiv class=\"vault-section\" style=\"flex: 1 1 50%; min-width: 320px;\"\u003e\n\u003cdiv style=\"margin-bottom: 20px;\"\u003e\n  \u003ch2 style=\"margin-top: 20px; margin-bottom: 12px;\"\u003e👾 Serum 2 Training Protocol\u003c\/h2\u003e\n\u003c\/div\u003e\n\u003cp class=\"benchmark-tagline\"\u003e\n  \u003cstrong\u003e\u003cspan class=\"desktop-only-text\"\u003eStructured training that takes you from Novice to Expert inside Serum 2\u003c\/span\u003e\u003c\/strong\u003e\n\u003c\/p\u003e\n\u003cdiv class=\"vault-scroll-area\"\u003e\n  \u003cul class=\"whzly-list\"\u003e\n    \n\u003c!-- NOVICE MODULE --\u003e\n\u003cli class=\"expandable-wrapper\"\u003e\n  \u003cdiv class=\"expandable-trigger\" data-target=\"#novice-sublist\"\u003e\n    \u003cspan class=\"arrow-icon\"\u003e\u003c\/span\u003e\n    \u003cstrong\u003e🟢 Novice Module: Core Foundations \u0026amp; Tools\u003c\/strong\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"expandable-content\" id=\"novice-sublist\"\u003e\n    \u003cul\u003e\n      \u003cli\u003eSerum 2 layout, oscillators, filters, envelopes \u0026amp; FX\u003c\/li\u003e\n      \u003cli\u003eHow sound generation works: wavetables, LFOs \u0026amp; ADSR\u003c\/li\u003e\n      \u003cli\u003eDesigning subs, pads, risers, plucks \u0026amp; uplifters\u003c\/li\u003e\n      \u003cli\u003eMacro routing, default volume issues \u0026amp; matrix setup\u003c\/li\u003e\n      \u003cli\u003eVelocity, pitch \u0026amp; glide - MIDI modulation in action\u003c\/li\u003e\n      \u003cli\u003e“Starter Patch” walkthrough with FX and routing flow\u003c\/li\u003e\n    \u003c\/ul\u003e\n  \u003c\/div\u003e\n\u003c\/li\u003e\n\n\u003c!-- INTERMEDIATE MODULE --\u003e\n\u003cli class=\"expandable-wrapper\"\u003e\n  \u003cdiv class=\"expandable-trigger\" data-target=\"#intermediate-sublist\"\u003e\n    \u003cspan class=\"arrow-icon\"\u003e\u003c\/span\u003e\n    \u003cstrong\u003e🟡 Intermediate Module: Atmospheres, FX \u0026amp; Workflow\u003c\/strong\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"expandable-content\" id=\"intermediate-sublist\"\u003e\n    \u003cul\u003e\n      \u003cli\u003eWorking with Spectral, Granular \u0026amp; Sample playback modes\u003c\/li\u003e\n      \u003cli\u003eDesigning cinematic pads, reese layers \u0026amp; ambience FX\u003c\/li\u003e\n      \u003cli\u003eMacro variation: tone, octave, brightness \u0026amp; movement\u003c\/li\u003e\n      \u003cli\u003eWavetable bin editing for sub control \u0026amp; harmonic detail\u003c\/li\u003e\n      \u003cli\u003eCreative FX: compression, EQ movement, stereo width\u003c\/li\u003e\n      \u003cli\u003eBus routing inside Serum - no external FX needed\u003c\/li\u003e\n    \u003c\/ul\u003e\n  \u003c\/div\u003e\n\u003c\/li\u003e\n\n\u003c!-- EXPERT MODULE --\u003e\n\u003cli class=\"expandable-wrapper\"\u003e\n  \u003cdiv class=\"expandable-trigger\" data-target=\"#expert-sublist\"\u003e\n    \u003cspan class=\"arrow-icon\"\u003e\u003c\/span\u003e\n    \u003cstrong\u003e🔴 Expert Module: Drop Design, Glitch, and FX Chaining\u003c\/strong\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"expandable-content\" id=\"expert-sublist\"\u003e\n    \u003cul\u003e\n      \u003cli\u003eAdvanced drop bass design using all 8 macro slots\u003c\/li\u003e\n      \u003cli\u003eClip \u0026amp; ARP mode for arp writing \u0026amp; melody sketching\u003c\/li\u003e\n      \u003cli\u003ePolyrhythm with LFOs modulating other LFO rates\u003c\/li\u003e\n      \u003cli\u003eMacro curves (CRV) for switches, gates \u0026amp; pattern flips\u003c\/li\u003e\n      \u003cli\u003eDual-filter routing, PZSVF morphing \u0026amp; FX layering\u003c\/li\u003e\n      \u003cli\u003eIndependent sub\/mid pitch control + tuning automation\u003c\/li\u003e\n    \u003c\/ul\u003e\n  \u003c\/div\u003e\n\u003c\/li\u003e\n\n  \u003c\/ul\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n    \u003c!-- Audio Player Section --\u003e\n\u003cdiv class=\"jukebox-section\"\u003e\n\u003cdiv class=\"preview-player-wrapper\"\u003e\n  \u003ch3 class=\"audio-preview-heading\"\u003e🎧 PREVIEW THE BUNDLE! 🎧\u003c\/h3\u003e\n  \u003cdiv class=\"sample-category-buttons\"\u003e\n    \u003cbutton class=\"sample-category-btn active\" data-category=\"intro\"\u003eINTRO\u003c\/button\u003e\n    \u003cbutton class=\"sample-category-btn\" data-category=\"bass\"\u003eBASS\u003c\/button\u003e\n    \u003cbutton class=\"sample-category-btn\" data-category=\"glitch\"\u003eGLITCH\u003c\/button\u003e\n    \u003cbutton class=\"sample-category-btn\" data-category=\"fx\"\u003eFX\u003c\/button\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n  \u003cdiv class=\"jukebox-wrapper\" aria-hidden=\"true\"\u003e\n    \u003cdiv class=\"jukebox-container\"\u003e\n      \u003cdiv class=\"jukebox-display\"\u003e\n        \u003cdiv class=\"serum-ui\"\u003e\n          \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/Serum2AudioPlayer.jpg?v=1747181839\" alt=\"Serum 2 UI\" class=\"serum-bg\"\u003e\n          \u003cdiv id=\"sampleTitle\" class=\"serum-title\"\u003eWHZLY PRESET 1\u003c\/div\u003e\n          \u003cdiv id=\"waveformContainer\" class=\"serum-waveform\"\u003e\u003c\/div\u003e\n          \u003cbutton id=\"prevSample\" class=\"jukebox-btn\"\u003e◀\u003c\/button\u003e\n          \u003cbutton id=\"nextSample\" class=\"jukebox-btn\"\u003e▶\u003c\/button\u003e\n          \u003cbutton id=\"playPause\" class=\"play-pause-btn\"\u003e\u003c\/button\u003e\n          \u003caudio id=\"hackerBeep\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/Terminal-Beep.wav?v=1747199244\" preload=\"auto\"\u003e\u003c\/audio\u003e\n          \u003caudio id=\"sirenSound\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/Siren.mp3?v=1747203920\" preload=\"auto\"\u003e\u003c\/audio\u003e\n          \u003caudio id=\"vaultSound\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/Access_Granted.mp3?v=1747202852\" preload=\"auto\"\u003e\u003c\/audio\u003e\n          \u003caudio id=\"glitchSound\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/System_Error.mp3?v=1747204949\" preload=\"auto\"\u003e\u003c\/audio\u003e\n          \u003caudio id=\"deniedSound\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/Access_Denied.mp3?v=1747205481\" preload=\"auto\"\u003e\u003c\/audio\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\n\u003c!-- Three Level Producer Training Protocol --\u003e\n\u003cdiv class=\"hook-plus-image hook-plus-image-optimized\"\u003e\n  \u003cdiv class=\"hook-text\"\u003e\n    \u003ch2 style=\"margin-top: 35px; margin-bottom: 20px;\"\u003e🎓 Three Level Producer Training Protocol\u003c\/h2\u003e\n    \u003cp class=\"benchmark-tagline\"\u003e\u003cstrong\u003e\u003cspan class=\"desktop-only-text\"\u003e4+ Hours of Real-World Sound Design Training Inside Serum 2\u003c\/span\u003e\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n  \u003cli\u003eSplit into Novice, Intermediate \u0026amp; Expert tiers for true skill progression\u003c\/li\u003e\n  \u003cli\u003eBuild patches in real time while mastering Serum 2’s layout \u0026amp; workflow\u003c\/li\u003e\n  \u003cli\u003eLearn new Serum 2 modes: Spectral, Granular, ARP, Clip \u0026amp; FX Bus routing\u003c\/li\u003e\n  \u003cli\u003eEvery module focuses on patch design, modulation, and macro strategy\u003c\/li\u003e\n  \u003cli\u003eCreate evolving sounds using advanced LFO chaining, pitch tricks \u0026amp; CRV macros\u003c\/li\u003e\n  \u003cli\u003eCovers beginner to advanced use of FX chains, filter morphs \u0026amp; wavetables\u003c\/li\u003e\n  \u003cli\u003eIncludes full walkthroughs for pads, risers, basses, intros \u0026amp; cinematic layers\u003c\/li\u003e\n  \u003cli\u003ePerfect for first-time users and seasoned sound designers alike\u003c\/li\u003e\n\u003c\/ul\u003e\n\n  \u003c\/div\u003e\n\n\n\u003cstyle\u003e\n.course-tier-visuals {\n  display: flex;\n  flex-direction: column;\n  justify-content: space-between;\n  gap: 20px;\n  max-width: 420px;\n  width: 100%;\n  margin-top: 40px;\n  padding-left: 10px;\n}\n.hook-text-centered {\n  text-align: center;\n  max-width: 480px;\n  margin: 0 auto;\n}\n@media (min-width: 769px) {\n  .course-tier-visuals {\n    flex-direction: column;\n    margin-top: 0;\n    transform: translateX(-34px);\n  }\n}\n\n.tier-block {\n  position: relative;\n  padding: 24px;\n  text-align: center;\n  font-family: 'Share Tech Mono', monospace;\n  font-size: 20px;\n  font-weight: bold;\n  color: #39ff14;\n  background: radial-gradient(circle at center, rgba(60, 255, 100, 0.1), rgba(60, 255, 100, 0));\n  border: 2px solid #39ff14;\n  border-radius: 12px;\n  box-shadow: 0 0 16px #39ff14, inset 0 0 10px rgba(60, 255, 100, 0.3);\n  text-shadow: 0 0 4px #39ff14;\n  transition: transform 0.4s ease, box-shadow 0.4s ease, background 0.4s ease;\n  overflow: hidden;\n  cursor: pointer;\n  width: 332px;\n  margin: 0 auto;\n}\n\n.tier-block::after {\n  content: '';\n  position: absolute;\n  top: -150%;\n  left: -150%;\n  width: 400%;\n  height: 400%;\n  background: repeating-linear-gradient(\n    45deg,\n    rgba(60, 255, 100, 0.08) 0px,\n    rgba(60, 255, 100, 0.08) 1px,\n    transparent 1px,\n    transparent 6px\n  );\n  animation: scanlines 14s linear infinite;\n  pointer-events: none;\n  z-index: 1;\n}\n\n@keyframes scanlines {\n  0% {\n    transform: translateX(0) translateY(0);\n  }\n  100% {\n    transform: translateX(100px) translateY(100px);\n  }\n}\n\n.tier-block:hover {\n  transform: scale(1.04);\n  box-shadow: 0 0 28px #39ff14, inset 0 0 12px #39ff14;\n  background: radial-gradient(circle at center, rgba(60, 255, 100, 0.25), rgba(60, 255, 100, 0));\n}\n\n.tier-novice {\n  border-color: #39ff14;\n  color: #39ff14;\n  text-shadow: 0 0 6px #39ff14;\n  box-shadow: 0 0 18px #39ff14, inset 0 0 10px rgba(57, 255, 20, 0.3);\n}\n\n.tier-intermediate {\n  border-color: #f7cb3b;\n  color: #f7cb3b;\n  text-shadow: 0 0 6px #f7cb3b;\n  box-shadow: 0 0 18px #f7cb3b, inset 0 0 10px rgba(247, 203, 59, 0.3);\n}\n\n.tier-expert {\n  border-color: #ff3b3b;\n  color: #ff3b3b;\n  text-shadow: 0 0 8px #ff3b3b;\n  box-shadow: 0 0 20px #ff3b3b, inset 0 0 10px rgba(255, 59, 59, 0.2);\n}\n\n@media (max-width: 768px) {\n  .course-tier-visuals {\n    max-width: 100%;\n    padding: 0 10px;\n  }\n  .tier-block {\n    font-size: 18px;\n    padding: 20px;\n  }\n}\n\n\/* Modal styling *\/\n@media (min-width: 769px) {\n  #videoModal {\n    display: none;\n    position: fixed;\n    inset: 0; \/* shorthand for top: 0; left: 0; right: 0; bottom: 0 *\/\n    z-index: 999999;\n    background: rgba(0, 0, 0, 0.92);\n    justify-content: center;\n    align-items: center;\n  }\n\n  #videoModal.active {\n    display: flex;\n  }\n\n  #videoWrapper {\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    height: auto;\n    max-height: 90vh;\n    max-width: 90vw;\n    overflow: hidden;\n    background: transparent;\n  }\n\n  #popupVideo {\n    aspect-ratio: 9 \/ 16;\n    height: 90vh;\n    width: auto;\n    max-width: 90vw;\n    border: none;\n    display: block;\n  }\n}\n\n\n@media (max-width: 768px) {\n  #videoModal {\n    display: none; \/* hidden by default *\/\n    position: fixed;\n    top: 0;\n    left: 0;\n    width: 100vw;\n    height: 100vh;\n    background: rgba(0, 0, 0, 0.92);\n    z-index: 999999;\n    justify-content: center;\n    align-items: center;\n  }\n\n  #videoModal.active {\n    display: flex;\n  }\n\n  #videoWrapper {\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    width: 100%;\n    height: 100%;\n    background: transparent;\n  }\n\n  #popupVideo {\n    aspect-ratio: 9 \/ 16;\n    height: 90vh;\n    width: auto;\n    max-width: 90vw;\n    border: none;\n    display: block;\n  }\n}\n\n\n@media (max-width: 768px) {\n  #videoWrapper {\n    background: #000 !important;\n    height: auto;\n    min-height: 100%;\n  }\n}\n\n#videoModal iframe {\n  width: auto;\n  height: 90vh;\n  aspect-ratio: 9 \/ 16;\n  max-height: 90vh;\n  max-width: 100%;\n  margin: 0 auto;\n  border: none;\n  z-index: 2;\n}\n\n#videoModal .close-btn {\n  position: absolute;\n  top: 30px;\n  right: 40px;\n  font-size: 28px;\n  color: #39ff14 !important;\n  text-shadow: 0 0 6px #39ff14;\n  cursor: pointer;\n  z-index: 10000;\n}\n\n#whzlyOverlay {\n  position: absolute;\n  inset: 0;\n  z-index: 999998;\n  background: rgba(0, 0, 0, 0.95);\n  display: none;\n  justify-content: center;\n  align-items: center;\n  text-align: center;\n  color: #00ff88;\n  font-family: monospace;\n}\n\n\n#videoModal, #videoWrapper, #popupVideo {\n  box-sizing: border-box;\n}\n\nbody.modal-open {\n  overflow: hidden;\n}\n\n.typing-container {\n  font-family: 'Share Tech Mono', monospace;\n  font-size: 20px;\n  color: #39ff14;\n  text-shadow: 0 0 6px #39ff14;\n  line-height: 1.6;\n}\n\n.typed-line {\n  display: inline-block;\n  white-space: nowrap;\n  overflow: hidden;\n  border-right: none;\n  width: 0;\n  animation: typing 2s steps(30, end) forwards;\n}\n\n.typed-line.delay {\n  animation-delay: 2s;\n}\n\n.cursor {\n  display: inline-block;\n  animation: blink 0.8s steps(1) infinite;\n  color: #39ff14;\n  margin-left: 4px;\n}\n\n@keyframes typing {\n  from { width: 0; }\n  to { width: 100%; }\n}\n\n@keyframes blink {\n  0%, 49% { opacity: 1; }\n  50%, 100% { opacity: 0; }\n}\n\u003c\/style\u003e\n\n\u003cdiv class=\"course-tier-visuals\"\u003e\n  \u003cdiv class=\"tier-block tier-novice\" onclick=\"openVideo('https:\/\/www.youtube.com\/embed\/wIxVV5gnd6o?si=K7hs3m-dxGnSxdHF')\"\u003e🟢 NOVICE MODULE\u003c\/div\u003e\n  \u003cdiv class=\"tier-block tier-intermediate\" onclick=\"openVideo('https:\/\/www.youtube.com\/embed\/R4x3Rt_Ahys?si=wX9d2Ze4AnThJLwz')\"\u003e🟡 INTERMEDIATE MODULE\u003c\/div\u003e\n  \u003cdiv class=\"tier-block tier-expert\" onclick=\"openVideo('https:\/\/www.youtube.com\/embed\/VoIClypjcro?si=inrzEkJ11zQ0wvc')\"\u003e🔴 EXPERT MODULE\u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- Modal Container --\u003e\n\u003cdiv id=\"videoModal\" onclick=\"closeVideo(event)\"\u003e\n  \u003cdiv class=\"close-btn\"\u003e✖\u003c\/div\u003e\n  \u003cdiv id=\"videoWrapper\"\u003e\n    \n\u003c!-- iPhone-only Overlay --\u003e\n\u003cdiv id=\"whzlyOverlay\" onclick=\"enableYouTubePlay()\" style=\"display: none; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: #000; z-index: 10001; align-items: center; justify-content: center; text-align: center; cursor: pointer;\"\u003e\n  \u003cdiv class=\"typing-container\"\u003e\n    \u003cspan class=\"typed-line\"\u003eINCOMING MESSAGE FROM WHZLY\u003c\/span\u003e\u003cbr\u003e\n    \u003cspan class=\"typed-line delay\"\u003eTAP TO PLAY\u003cspan class=\"cursor\"\u003e|\u003c\/span\u003e\u003c\/span\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n    \u003c!-- YouTube Iframe --\u003e\n\u003ciframe id=\"popupVideo\" allow=\"autoplay; encrypted-media\" allowfullscreen playsinline\u003e\u003c\/iframe\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cscript\u003e\nfunction openVideo(url) {\n  const modal = document.getElementById('videoModal');\n  const iframe = document.getElementById('popupVideo');\n  const overlay = document.getElementById('whzlyOverlay');\n\n  iframe.dataset.src = url + '?modestbranding=1\u0026rel=0\u0026playsinline=1';\n  iframe.src = url + '?modestbranding=1\u0026rel=0\u0026playsinline=1\u0026enablejsapi=1';\n\noverlay.style.display = 'flex';\n\nconst isIOS = \/iPad|iPhone|iPod\/.test(navigator.userAgent) \u0026\u0026 !window.MSStream;\nconst lines = overlay.querySelectorAll('.typed-line');\nif (lines.length \u003e 1) {\n  lines[1].innerHTML = isIOS\n    ? 'TAP TO PLAY\u003cspan class=\"cursor\"\u003e|\u003c\/span\u003e'\n    : 'CLICK TO PLAY\u003cspan class=\"cursor\"\u003e|\u003c\/span\u003e';\n}\n\n  modal.classList.add('active');\n  document.body.classList.add('modal-open');\n\n  \/\/ ✅ Scroll just enough to center modal in screen\n  setTimeout(() =\u003e {\n    const modalTop = modal.getBoundingClientRect().top + window.scrollY;\n    const modalHeight = modal.offsetHeight;\n    const viewportHeight = window.innerHeight;\n    const scrollToY = modalTop - (viewportHeight \/ 2) + (modalHeight \/ 2);\n    window.scrollTo({ top: scrollToY, behavior: 'smooth' });\n  }, 10);\n}\n\nfunction enableYouTubePlay() {\n  const overlay = document.getElementById('whzlyOverlay');\n  overlay.style.display = 'none';\n\n  const iframe = document.getElementById('popupVideo');\n  iframe.contentWindow.postMessage('{\"event\":\"command\",\"func\":\"playVideo\",\"args\":\"\"}', '*');\n}\n\nfunction closeVideo(e) {\n  if (e.target.id === 'videoModal' || e.target.classList.contains('close-btn')) {\n    const modal = document.getElementById('videoModal');\n    const iframe = document.getElementById('popupVideo');\n    iframe.src = '';\n    modal.classList.remove('active'); \/\/ removes flex display\n    document.body.classList.remove('modal-open');\n  }\n}\n\u003c\/script\u003e\n\n\u003c\/div\u003e\n\n\u003cstyle\u003e\n.expandable-content {\n  display: block;\n  max-height: 0;\n  overflow: hidden;\n  opacity: 0;\n  transition:\n    max-height 0.6s ease,\n    opacity 0.6s ease;\n  will-change: max-height, opacity;\n}\n\n.expandable-content ul {\n  margin-left: 15px;\n  padding-left: 20px;\n  border-left: 2px solid #39ff14;\n}\n\n.expandable-content ul li {\n  font-size: 16px;\n  opacity: 0.9;\n}\n\n.expandable-content ul li::before {\n  content: \"◦\";\n  color: #7cff5a;\n  margin-right: 8px;\n}\n\n.expandable-content.visible {\n  max-height: 1000px; \/* or whatever is tall enough for your list *\/\n  opacity: 1;\n}\n\n@media (max-width: 768px) {\n  \/* Pull the inner dropdown (ul) closer to the left *\/\n  .expandable-content ul {\n    margin-left: 8px !important; \n    padding-left: 12px !important; \n    border-left: 2px solid #39ff14;\n  }\n\n  \/* Tighten spacing inside the expandable-trigger (where the arrow + text are) *\/\n  .expandable-trigger .arrow-icon {\n    margin-right: 2px !important; \n  }\n\n  \/* Tighten space between bullet (▶) and text inside dropdown *\/\n  .expandable-content ul li::before {\n    padding-right: 0px !important;\n    margin-right: 4px !important;\n  }\n}\n\n\/* Base list styling *\/\n.whzly-list {\n  list-style: none;\n  padding-left: 0;\n}\n\n\/* Only apply ▶ arrow to list items that are NOT expandable triggers *\/\n.whzly-list li:not(.expandable-wrapper):not(.expandable-trigger)::before {\n  content: \"▶\\FE0E \";\n  color: #39ff14;\n  padding-right: 6px;\n}\n\n\/* Expandable list container *\/\n.expandable-wrapper {\n  margin-bottom: 10px;\n}\n\n\/* Expandable trigger overrides normal bullet *\/\n.expandable-trigger::before {\n  content: none; \/* Disable default list-style bullet *\/\n}\n\n\/* Flashing arrow icon *\/\n.arrow-icon {\n  display: inline-block;\n  color: #39ff14;\n  margin-right: 8px;\n  animation: arrowPulse 1.6s ease-in-out infinite;\n  transition: transform 0.3s ease;\n}\n\n\/* Chaneg Cursor *\/\n.expandable-trigger,\n.expandable-trigger .arrow-icon {\n  cursor: pointer;\n}\n\n.expandable-trigger strong {\n  color: #39ff14;\n  text-shadow: 0 0 4px #39ff14;\n  font-weight: bold;\n}\n\n@keyframes arrowPulse {\n  0%, 100% {\n    opacity: 1;\n    transform: translateX(0);\n  }\n  50% {\n    opacity: 0.5;\n    transform: translateX(2px);\n  }\n}\n\n.expandable-trigger.active .arrow-icon {\n  animation: none;\n}\n\n\/* Arrow content: ▶ \/ ▼ *\/\n.arrow-icon::before {\n  content: \"▶\";\n}\n\n.expandable-trigger.active .arrow-icon::before {\n  content: \"▼\";\n}\n\u003c\/style\u003e\n\n\u003cstyle\u003e\n.preview-player-wrapper {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  margin-bottom: 16px;\n  margin-top: -12px !important;\n  width: 100%;\n}\n\n@media (min-width: 769px) {\n  .preview-player-wrapper {\n    transform: translateX(100px);\n  }\n}\n\n.sample-category-buttons {\n  display: flex;\n  justify-content: center;\n  flex-wrap: wrap;\n  gap: 12px;\n  margin-top: 8px;\n  margin-bottom: -10px !important;\n}\n\n@media (max-width: 480px) {\n  .sample-category-buttons {\n    transform: scale(0.7);\n    transform-origin: top center;\n    margin-left: -15px !important;\n    margin-right: -15px !important;\n  }\n}\n\n.sample-category-btn {\n  background: transparent;\n  border: 2px solid #39ff14;\n  color: #39ff14;\n  font-family: 'Share Tech Mono', monospace;\n  padding: 8px 16px;\n  font-size: 16px;\n  border-radius: 4px;\n  cursor: pointer;\n  transition: all 0.3s ease;\n  text-shadow: 0 0 4px #39ff14;\n}\n\n.sample-category-btn:hover,\n.sample-category-btn.active {\n  background: #39ff14;\n  color: black;\n  box-shadow: 0 0 10px #39ff14;\n}\n\n.category-buttons {\n  display: flex;\n  justify-content: space-between;\n  gap: 10px;\n  width: 400px; \/* match the width of Serum player *\/\n  margin: 0 auto 10px auto;\n  transform: translateX(100px); \/* offset matching player *\/\n}\n\n\u003c\/style\u003e\n\n\u003cscript\u003e\n  document.addEventListener('DOMContentLoaded', () =\u003e {\n    const triggers = document.querySelectorAll('.expandable-trigger');\n    const manualToggles = new Set();\n    const autoExpanded = new Set();\n    let lastY = window.scrollY;\n\n    triggers.forEach(trigger =\u003e {\n      trigger.addEventListener('click', () =\u003e {\n        const target = document.querySelector(trigger.dataset.target);\n        const id = trigger.dataset.target;\n\n        trigger.classList.toggle('active');\n        target.classList.toggle('visible');\n        manualToggles.add(id); \/\/ disables auto control\n        autoExpanded.delete(id); \/\/ remove any auto-expanded tracking\n      });\n    });\n\n    const handleScrollExpand = () =\u003e {\n      const currentY = window.scrollY;\n      const scrollingUp = currentY \u003c lastY;\n      lastY = currentY;\n\n      triggers.forEach(trigger =\u003e {\n        const id = trigger.dataset.target;\n        const target = document.querySelector(id);\n        const rect = target.getBoundingClientRect();\n\n        const triggerPoint = window.innerHeight * (id === '#samples-sublist' ? 0.65 : 0.75);\n\n        if (manualToggles.has(id)) return;\n\n        \/\/ When scrolling down, expand when entering trigger point\n        if (!scrollingUp \u0026\u0026 rect.top \u003c triggerPoint \u0026\u0026 rect.bottom \u003e 0) {\n          trigger.classList.add('active');\n          target.classList.add('visible');\n          autoExpanded.add(id);\n        }\n\n        \/\/ When scrolling up, collapse if above the same trigger point\n        if (scrollingUp \u0026\u0026 autoExpanded.has(id) \u0026\u0026 rect.top \u003e triggerPoint) {\n          trigger.classList.remove('active');\n          target.classList.remove('visible');\n          autoExpanded.delete(id);\n        }\n      });\n    };\n\n    window.addEventListener('scroll', handleScrollExpand, { passive: true });\n    handleScrollExpand(); \/\/ run once on page load\n  });\n\u003c\/script\u003e\n\n\n\u003cstyle\u003e\n.audio-preview-heading {\n  display: block;\n  text-align: center;\n  color: #39ff14;\n  font-family: 'Share Tech Mono', monospace;\n  font-size: 24px;\n  font-weight: bold;\n  letter-spacing: 1px;\n  margin-bottom: 8px !important; \n}\n\n\/* Large screen alignment fix *\/\n@media (min-width: 769px) {\n  .audio-preview-heading {\n    margin-left: 197px;\n    margin-top: 10px;   \n    text-align: left;   \n    transform: translateX(-100px);\n  }\n}\n\n.jukebox-section {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: flex-start;\n  margin-top: 0;\n  margin-bottom: 0;\n  margin-left: -225px;\n}\n\n.vault-and-player {\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: space-between;\n  align-items: center;\n  gap: 40px;\n  margin-top: 60px;\n}\n\n.vault-text {\n  flex: 1 1 50%;\n  min-width: 300px;\n}\n\n.player-container {\n  flex: 1 1 40%;\n  min-width: 300px;\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n}\n\n\/* Mobile stacking *\/\n@media (max-width: 768px) {\n  .vault-and-player {\n    flex-direction: column;\n    width: 100%;\n    align-items: center;\n    margin: 0 auto;\n  }\n\n  .vault-text, .player-container {\n    width: 100%;\n  }\n}\n\n\n.jukebox-container {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  transform: scale(1);\n  transform-origin: top center;\n  padding: 0;\n  margin-top: 0;\n  margin-top: 0;\n}\n\n.jukebox-display {\n  position: relative;\n  width: 100%;\n  max-width: 400px;\n  aspect-ratio: 657 \/ 778;\n  margin: 0 auto;\n}\n\n.serum-ui {\n  position: relative;\n  width: 100%;\n  height: 100%;\n}\n\n.serum-bg {\n  width: 100%;\n  height: auto;\n  display: block;\n}\n\n.serum-title {\n  position: absolute;\n  top: 43px;\n  left: 50%;\n  transform: translateX(-51%);\n  font-family: 'Share Tech Mono', monospace;\n  font-size: 21px;\n  font-weight: 400;\n  color: #ffffff;\n  letter-spacing: 0.5px;\n  text-shadow: none;\n  text-transform: uppercase;\n  white-space: nowrap;\n}\n\n.serum-waveform {\n  position: absolute;\n  top: 110px;\n  left: 50%;\n  transform: translateX(-50%);\n  width: 100%;\n  height: 144px;\n  overflow: hidden;\n}\n\n.play-pause-btn {\n  position: absolute;\n  top: 184px;\n  left: 50%; \/* was 50% *\/\n  transform: translate(-50%, -50%) translateX(10px); \/* added offset *\/\n  width: 100px;\n  height: 100px;\n  background: transparent;\n  border: none;\n  z-index: 3;\n  opacity: 1;\n  padding: 0;\n  font-size: 0;\n  pointer-events: auto;\n}\n\n.play-pause-btn::before {\n  content: '';\n  display: block;\n  width: 0;\n  height: 0;\n  margin: auto;\n  border-style: solid;\n  border-width: 30px 0 30px 50px;\n  border-color: transparent transparent transparent #39ff14;\n  position: relative;\n  left: -6px;\n}\n\n.play-pause-btn.paused::before {\n  content: '';\n  display: block;\n  width: 24px;\n  height: 28px;\n  margin: 0 auto;\n  background:\n    linear-gradient(to right,\n      #39ff14 8px,\n      transparent 8px,\n      transparent 16px,\n      #39ff14 16px\n    );\n  transform: translateX(-2px); \/* slight left nudge *\/\n}\n\n.play-pause-btn::before,\n.play-pause-btn.paused::before {\n  text-shadow: 0 0 6px #39ff14;\n  filter: drop-shadow(0 0 6px #39ff14);\n  transition: filter 0.3s ease-in-out;\n}\n\n.play-pause-btn:hover::before,\n.play-pause-btn.paused:hover::before {\n  filter: drop-shadow(0 0 10px #7CFF5A) drop-shadow(0 0 16px #7CFF5A);\n}\n\n.play-pause-btn.playing::before {\n  opacity: 0.2; \n  transition: opacity 0.3s ease;\n}\n\n@media (max-width: 480px) {\n  .play-pause-btn {\n    width: 82px !important;\n    height: 82px !important;\n    position: absolute;\n    top: 47%;\n    left: 52%; \/* ✅ nudge it right *\/\n    transform: translate(-50%, -50%);\n    z-index: 10;\n  }\n\n  .play-pause-btn::before {\n    content: '';\n    position: absolute;\n    border-style: solid;\n    border-width: 41px 0 41px 68px;\n    border-color: transparent transparent transparent #39ff14;\n    background: none;\n    left: -2px;\n    top: 0;\n    transform: none;\n    opacity: 1;\n  }\n\n  .play-pause-btn.paused::before {\n    content: '';\n    position: absolute;\n    width: 54px;\n    height: 76px;\n    background: linear-gradient(to right,\n      #39ff14 18px,\n      transparent 18px,\n      transparent 36px,\n      #39ff14 36px\n    );\n    border: none;\n    left: 14px;\n    top: 3px;\n    transform: none;\n    opacity: 1;\n  }\n}\n\n@media (max-width: 375px) {\n  .play-pause-btn {\n    width: 65px !important;\n    height: 65px !important;\n  }\n\n  .play-pause-btn::before {\n    border-width: 30px 0 30px 50px;\n    left: -4px;\n  }\n\n  .play-pause-btn.paused::before {\n    width: 42px;\n    height: 60px;\n  }\n}\n\n\n@media (max-width: 480px) {\n  .play-pause-btn::before,\n  .play-pause-btn.paused::before {\n    transform: scale(0.7) translateX(-2px);\n  }\n}\n\n\/* Navigation Arrows *\/\n.jukebox-btn {\n  position: absolute;\n  top: 184px;\n  transform: translateY(-50%);\n  background: transparent;\n  border: none;\n  color: #39ff14;\n  font-size: 40px;\n  font-family: 'Share Tech Mono', monospace;\n  cursor: pointer;\n  z-index: 3;\n  transition: color 0.2s ease, text-shadow 0.2s ease;\n  text-shadow: 0 0 6px #39ff14;\n}\n\n\n.jukebox-btn:hover {\n  color: #7CFF5A;\n  text-shadow:\n    0 0 6px #7CFF5A,\n    0 0 12px #7CFF5A,\n    0 0 18px #7CFF5A;\n}\n\n#prevSample {\n  left: -34px;\n}\n\n#nextSample {\n  right: -34px;\n}\n\n@media (max-width: 480px) {\n  .jukebox-btn {\n    top: 178px; \/* move up from 184px *\/\n  }\n\n  #prevSample {\n    left: -40px;\n  }\n\n  #nextSample {\n    right: -40px;\n  }\n}\n\n\/* Mobile general scaling *\/\n@media (max-width: 480px) {\n  .jukebox-display {\n    max-width: 100%;\n    width: 90vw;\n    transform: scale(0.85); \/* actual scale down now *\/\n    transform-origin: top center;\n    margin: 0 auto;\n  }\n\n  .serum-title {\n    font-size: 18px;\n    top: 9.6%; \/* percentage relative to player *\/\n  }\n\n  .play-pause-btn {\n    font-size: 86px;\n    top: 39%;\n    transform: translate(-50%, -50%);\n  }\n\n  .serum-waveform {\n    height: 30%;\n    top: 23%;\n  }\n\n  .jukebox-btn {\n    font-size: 63px;\n    top: 38.2%;\n  }\n}\n\n\/* Tiny mobile scaling (375px and below) *\/\n@media (max-width: 375px) {\n  .jukebox-display {\n    transform: scale(0.8); \/* shrink player slightly more *\/\n  }\n\n  .serum-title {\n    font-size: 16px;\n    top: 9.5%;\n  }\n\n  .play-pause-btn {\n    font-size: 58px;\n    top: 40%;\n    transform: translate(-50%, -50%);\n  }\n\n  .serum-waveform {\n    height: 29%;\n    top: 24%;\n  }\n\n  .jukebox-btn {\n    font-size: 58px;\n    top: 40%;\n  }\n}\n\n@media (max-width: 768px) {\n  .jukebox-section {\n    margin-bottom: 30px;\n  }\n}\n\n@media (min-width: 769px) {\n  .jukebox-section {\n    flex: 1 1 40%;\n    min-width: 300px;\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    margin-left: -225px;\n  }\n}\n\n@media (max-width: 480px) {\n  .jukebox-display {\n    transform: scale(0.85);\n    transform-origin: top center;\n    width: 100%;\n    max-width: 400px;\n    margin: 0 auto;\n  }\n\n  .serum-ui {\n    transform: scale(1);\n    width: 100%;\n    height: auto;\n  }\n}\n\n@media (max-width: 768px) {\n  .jukebox-section {\n    margin-left: 0 !important;\n    width: 100%;\n    padding: 0 10px;\n    box-sizing: border-box;\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    justify-content: center;\n  }\n\n  .jukebox-wrapper {\n    width: 100%;\n    max-width: 400px;\n    margin: 0 auto;\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    transform: none !important;\n    padding: 0;\n    box-sizing: border-box;\n  }\n\n  .jukebox-container {\n    width: 100%;\n    max-width: 400px;\n    margin: 0 auto;\n    transform: none !important;\n  }\n\n  .jukebox-display {\n    width: 100%;\n    max-width: 400px;\n    margin: 0 auto;\n  }\n}\n\n\n\/* MARGIN REDUCE, COMMENTED OUT\n@media (max-width: 480px) {\n  .jukebox-section {\n    margin-bottom: -80px !important;\n  }\n}\n*\/\n\n@media (max-width: 768px) {\n  .jukebox-section {\n    margin-left: 0 !important;\n    padding-left: 15px;\n    padding-right: 15px;\n    width: 100%;\n    box-sizing: border-box;\n  }\n\n  .jukebox-container {\n    width: 100%;\n    justify-content: center;\n  }\n}\n\n@media (max-width: 768px) {\n  .audio-preview-heading {\n    margin-left: 0 !important;\n    font-size: 22px !important;\n    margin-right: 0 !important;\n    padding-left: 0 !important;\n    padding-right: 0 !important;\n    text-align: center !important;\n  }\n}\n\n\n\u003c\/style\u003e\n\n\u003cscript\u003e\nconst sampleData = {\n  intro: [\n    { title: \"Intro - Pluck Designer\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_Intro_-_Pluck_Designer.mp3?v=1747101247\" },\n    { title: \"Intro - Key Master 3\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_Intro_-_Key_Master_3.mp3?v=1747101248\" },\n    { title: \"Intro - Lead \u0026 Plucky Echo\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_Intro_-_Lead_Plucky_Echo.mp3?v=1747101244\" },\n    { title: \"Intro - Arp Bass Pluck\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_Intro_-_Arp_Bass_Pluck.mp3?v=1747101247\" },\n    { title: \"Intro - Atmos Pad\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_Intro_-_Atmos_Pad.mp3?v=1747101247\" },\n    { title: \"Intro - Paddy\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_Intro_-_Paddy.mp3?v=1747101247\" },\n    { title: \"Intro - Running Wub Bass\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_Intro_-_Running_Wub_Bass.mp3?v=1747101248\" },\n    { title: \"Intro - Layered Reese\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_Intro_-_Layered_Reese.mp3?v=1747101248\" },\n    { title: \"Intro - Perfect Sub\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_Intro_-_Perfect_Sub.mp3?v=1747101243\" },\n    { title: \"Intro - Atmo 1\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_Cinematic_-_Atmo_1.mp3?v=1747101800\" },\n    { title: \"Intro - Atmo 3\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_Cinematic_-_Atmo_3.mp3?v=1747101798\" },\n    { title: \"Intro - Atmo 5\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_Cinematic_-_Atmo_5.mp3?v=1747101799\" },\n    { title: \"Intro - Atmo 6\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_Cinematic_-_Atmo_6.mp3?v=1747101798\" },\n    { title: \"Intro - Atmo 8\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_Cinematic_-_Atmo_8.mp3?v=1747101799\" },\n    { title: \"Intro - Atmo 10\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_Cinematic_-_Atmo_10.mp3?v=1747101799\" }\n  ],\n  bass: [\n    { title: \"Retrigger Hack Bass 1\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_Note_Retrigger_-_Hack_Bass_1.mp3?v=1747102190\" },\n    { title: \"Retrigger Hack Bass 3\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_Note_Retrigger_-_Hack_Bass_3.mp3?v=1747102191\" },\n    { title: \"Retrigger Hack Bass 5\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_Note_Retrigger_-_Hack_Bass_5.mp3?v=1747102190\" },\n    { title: \"Retrigger Hack Bass 8\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_Note_Retrigger_-_Hack_Bass_8.mp3?v=1747102190\" },\n    { title: \"Retrigger Hack Bass 9\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_Note_Retrigger_-_Hack_Bass_9.mp3?v=1747102190\" },\n    { title: \"Retrigger Hack Bass 15\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_Note_Retrigger_-_Hack_Bass_15.mp3?v=1747102191\" },\n    { title: \"Retrigger Hack Bass 17\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_Note_Retrigger_-_Hack_Bass_17.mp3?v=1747102190\" },\n    { title: \"Retrigger Hack Bass 21\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_Note_Retrigger_-_Hack_Bass_21.mp3?v=1747102190\" },\n    { title: \"Retrigger Hack Bass 25\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_Note_Retrigger_-_Hack_Bass_25.mp3?v=1747102190\" },\n    { title: \"One Shot Hack Bass 2\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_One_Shot_-_Hack_Bass_02.mp3?v=1747102469\" },\n    { title: \"One Shot Hack Bass 5\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_One_Shot_-_Hack_Bass_05.mp3?v=1747102469\" },\n    { title: \"One Shot Hack Bass 6\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_One_Shot_-_Hack_Bass_06.mp3?v=1747102469\" },\n    { title: \"One Shot Hack Bass 8\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_One_Shot_-_Hack_Bass_08.mp3?v=1747102468\" },\n    { title: \"One Shot Hack Bass 9\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_One_Shot_-_Hack_Bass_09.mp3?v=1747102468\" },\n    { title: \"One Shot Hack Bass 14\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_One_Shot_-_Hack_Bass_14.mp3?v=1747102469\" },\n    { title: \"One Shot Hack Bass 23\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_One_Shot_-_Hack_Bass_23.mp3?v=1747102469\" },\n    { title: \"One Shot Hack Bass 25\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_One_Shot_-_Hack_Bass_25.mp3?v=1747102469\" },\n    { title: \"One Shot Hack Bass 26\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_One_Shot_-_Hack_Bass_26.mp3?v=1747102468\" }\n  ],\n  glitch: [\n    { title: \"One Shot Glitch Synth 4\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_One_Shot_-_Glitch_Synth_4.mp3?v=1747102658\" },\n    { title: \"One Shot Glitch Synth 7\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_One_Shot_-_Glitch_Synth_7.mp3?v=1747102658\" },\n    { title: \"One Shot Glitch Synth 12\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_One_Shot_-_Glitch_Synth_12.mp3?v=1747102659\" },\n    { title: \"One Shot Glitch Synth 14\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_One_Shot_-_Glitch_Synth_14.mp3?v=1747102658\" },\n    { title: \"One Shot Glitch Sample 3\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_Glitch_Sample_3.mp3?v=1747103169\" },\n    { title: \"One Shot Glitch Sample 6\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_Glitch_Sample_6.mp3?v=1747103169\" },\n    { title: \"One Shot Glitch Sample 9\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_Glitch_Sample_9.mp3?v=1747103168\" },\n    { title: \"One Shot Glitch Sample 15\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_Glitch_Sample_15.mp3?v=1747103169\" },\n    { title: \"One Shot Glitch Sample 31\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_Glitch_Sample_31.mp3?v=1747103169\" },\n    { title: \"One Shot Glitch Sample 38\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_Glitch_Sample_38.mp3?v=1747103169\" },\n    { title: \"One Shot Glitch Sample 51\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_Glitch_Sample_51.mp3?v=1747103169\" },\n    { title: \"One Shot Glitch Sample 52\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_Glitch_Sample_52.mp3?v=1747103169\" }\n  ],\n  fx: [\n    { title: \"One Shot Drop FX 1\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_One_Shot_-_Drop_FX_1.mp3?v=1747103245\" },\n    { title: \"One Shot Drop FX 2\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_One_Shot_-_Drop_FX_2.mp3?v=1747103245\" },\n    { title: \"One Shot Drop FX 3\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_One_Shot_-_Drop_FX_3.mp3?v=1747103246\" },\n    { title: \"One Shot Drop FX 5\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_One_Shot_-_Drop_FX_5.mp3?v=1747103245\" },\n    { title: \"One Shot Drop FX 7\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_One_Shot_-_Drop_FX_7.mp3?v=1747103245\" },\n    { title: \"One Shot Drop FX 9\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_One_Shot_-_Drop_FX_9.mp3?v=1747103245\" },\n    { title: \"Impact Maker 1\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_Impact_Maker_1.mp3?v=1747103246\" },\n    { title: \"One Shot SFX 1\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_One_Shot_SFX_1.mp3?v=1747103660\" },\n    { title: \"One Shot SFX 2\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_One_Shot_SFX_2.mp3?v=1747103660\" },\n    { title: \"One Shot SFX 3\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_One_Shot_SFX_3.mp3?v=1747103660\" },\n    { title: \"One Shot SFX 5\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_One_Shot_SFX_5.mp3?v=1747103660\" },\n    { title: \"One Shot SFX 7\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_One_Shot_SFX_7.mp3?v=1747103659\" },\n    { title: \"One Shot SFX 18\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_One_Shot_SFX_18.mp3?v=1747103660\" },\n    { title: \"One Shot SFX 20\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_One_Shot_SFX_20.mp3?v=1747103660\" },\n    { title: \"One Shot SFX 25\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_One_Shot_SFX_25.mp3?v=1747103660\" },\n    { title: \"One Shot SFX 26\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_One_Shot_SFX_26.mp3?v=1747103660\" },\n    { title: \"One Shot SFX 27\", url: \"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_-_One_Shot_SFX_27.mp3?v=1747103662\" }\n\n  ]\n};\n\nlet isAutoplaying = false;\nlet currentCategory = \"intro\";\nlet currentSampleIndex = 0;\nlet wavesurfer;\nlet preloadedWavesurfer = null;\nlet preloadedSample = null;\n\nfunction loadSample(category, index) {\n  const sample = sampleData[category][index];\n  if (!sample) return;\n\n  document.getElementById('sampleTitle').textContent = sample.title;\n\n  if (wavesurfer) {\n    wavesurfer.destroy();\n  }\n\nconst isTinyScreen = window.innerWidth \u003c= 390;\n\nwavesurfer = WaveSurfer.create({\n  container: '#waveformContainer',\n  waveColor: '#72b547',\n  progressColor: '#72b547',\n  cursorColor: '#ffff99',\n  height: isTinyScreen ? 117 : 144, \/\/ 117px for tiny, 144px otherwise\n});\n\n  wavesurfer.load(sample.url);\n\n  document.querySelectorAll('.sample-category-btn').forEach(b =\u003e {\n    b.classList.remove('active');\n  });\n  const newActiveButton = document.querySelector(`.sample-category-btn[data-category=\"${category}\"]`);\n  if (newActiveButton) {\n    newActiveButton.classList.add('active');\n  }\n\n  wavesurfer.on('ready', () =\u003e {\n    if (isAutoplaying) {\n      wavesurfer.play();\n    }\n    preloadNextSample();\n  });\n\n  wavesurfer.on('finish', () =\u003e {\n    if (isAutoplaying) {\n      playNextSample();\n    }\n  });\n}\n\nfunction usePreloadedSampleOrLoad(category, index) {\n  if (\n    preloadedSampleInfo \u0026\u0026\n    preloadedSampleInfo.category === category \u0026\u0026\n    preloadedSampleInfo.index === index \u0026\u0026\n    preloadedSampleData\n  ) {\n    if (wavesurfer) {\n      wavesurfer.destroy();\n    }\n\n    document.getElementById('sampleTitle').textContent = sampleData[category][index].title;\n\n    wavesurfer = WaveSurfer.create({\n      container: '#waveformContainer',\n      waveColor: '#72b547',\n      progressColor: '#72b547',\n      cursorColor: '#ffff99',\n      height: 144,\n    });\n\n    wavesurfer.loadBlob(preloadedSampleData);\n\n    wavesurfer.on('ready', () =\u003e {\n      if (isAutoplaying) {\n        wavesurfer.play();\n      }\n      preloadNextSample(); \/\/ Preload following sample\n    });\n\n    wavesurfer.on('finish', () =\u003e {\n      if (isAutoplaying) {\n        playNextSample();\n      }\n    });\n\n    preloadedSampleData = null;\n    preloadedSampleInfo = null;\n\n    document.querySelectorAll('.sample-category-btn').forEach(b =\u003e {\n      b.classList.remove('active');\n    });\n    const newActiveButton = document.querySelector(`.sample-category-btn[data-category=\"${category}\"]`);\n    if (newActiveButton) {\n      newActiveButton.classList.add('active');\n    }\n\n  } else {\n    loadSample(category, index);\n  }\n}\n\nfunction playNextSample() {\n  const currentCategorySamples = sampleData[currentCategory];\n\n  if (currentSampleIndex \u003c currentCategorySamples.length - 1) {\n    currentSampleIndex++;\n    usePreloadedSampleOrLoad(currentCategory, currentSampleIndex);\n  } else {\n    const categories = Object.keys(sampleData);\n    const currentCategoryIndex = categories.indexOf(currentCategory);\n\n    if (currentCategoryIndex \u003c categories.length - 1) {\n      currentCategory = categories[currentCategoryIndex + 1];\n      currentSampleIndex = 0;\n      usePreloadedSampleOrLoad(currentCategory, currentSampleIndex);\n    } else {\n      isAutoplaying = false;\n      const playPauseButton = document.getElementById('playPause');\n      if (playPauseButton) playPauseButton.classList.remove('playing');\n    }\n  }\n}\n\nfunction preloadNextSample() {\n  preloadedSampleData = null;\n  preloadedSampleInfo = null;\n\n  const currentCategorySamples = sampleData[currentCategory];\n\n  let nextCategory = currentCategory;\n  let nextIndex = currentSampleIndex + 1;\n\n  if (nextIndex \u003e= currentCategorySamples.length) {\n    const categories = Object.keys(sampleData);\n    const currentCategoryIndex = categories.indexOf(currentCategory);\n\n    if (currentCategoryIndex \u003c categories.length - 1) {\n      nextCategory = categories[currentCategoryIndex + 1];\n      nextIndex = 0;\n    } else {\n      return; \/\/ No more samples to preload\n    }\n  }\n\n  const nextSample = sampleData[nextCategory][nextIndex];\n  if (!nextSample) return;\n\n  preloadedSampleInfo = { category: nextCategory, index: nextIndex };\n\n  fetch(nextSample.url)\n    .then(response =\u003e response.blob())\n    .then(blob =\u003e {\n      preloadedSampleData = blob;\n    })\n    .catch(error =\u003e {\n      console.error('Error preloading sample:', error);\n    });\n}\n\nfunction usePreloadedSampleOrLoad(category, index) {\n  if (\n    preloadedSample \u0026\u0026\n    preloadedSample.category === category \u0026\u0026\n    preloadedSample.index === index \u0026\u0026\n    preloadedWavesurfer\n  ) {\n    if (wavesurfer) {\n      wavesurfer.destroy();\n    }\n\n    \/\/ Move preloaded instance to real container\n    preloadedWavesurfer.container = document.getElementById('waveformContainer');\n    wavesurfer = preloadedWavesurfer;\n    preloadedWavesurfer = null;\n    preloadedSample = null;\n\n    document.getElementById('sampleTitle').textContent = sampleData[category][index].title;\n\n    wavesurfer.on('finish', () =\u003e {\n      if (isAutoplaying) {\n        const currentCategorySamples = sampleData[currentCategory];\n\n        if (currentSampleIndex \u003c currentCategorySamples.length - 1) {\n          currentSampleIndex++;\n          usePreloadedSampleOrLoad(currentCategory, currentSampleIndex);\n        } else {\n          const categories = Object.keys(sampleData);\n          const currentCategoryIndex = categories.indexOf(currentCategory);\n\n          if (currentCategoryIndex \u003c categories.length - 1) {\n            currentCategory = categories[currentCategoryIndex + 1];\n            currentSampleIndex = 0;\n            usePreloadedSampleOrLoad(currentCategory, currentSampleIndex);\n          } else {\n            isAutoplaying = false;\n            const playPauseButton = document.getElementById('playPause');\n            if (playPauseButton) playPauseButton.classList.remove('playing');\n          }\n        }\n      }\n    });\n\n    \/\/ Play instantly\n    if (isAutoplaying) {\n      wavesurfer.play();\n    }\n\n    \/\/ Preload the next one now\n    preloadNextSample();\n  } else {\n    loadSample(category, index);\n  }\n}\n\n\/\/ ✅ THIS SHOULD BE OUTSIDE loadSample()\ndocument.addEventListener('DOMContentLoaded', () =\u003e {\n  loadSample(currentCategory, currentSampleIndex);\n\n  document.querySelectorAll('.sample-category-btn').forEach(button =\u003e {\n    button.addEventListener('click', () =\u003e {\n      document.querySelectorAll('.sample-category-btn').forEach(b =\u003e b.classList.remove('active'));\n      button.classList.add('active');\n\n      currentCategory = button.dataset.category;\n      currentSampleIndex = 0;\n      loadSample(currentCategory, currentSampleIndex);\n    });\n  });\n\nfunction playPrevSample() {\n  if (currentSampleIndex \u003e 0) {\n    currentSampleIndex--;\n    loadSample(currentCategory, currentSampleIndex);\n  } else {\n    const categories = Object.keys(sampleData);\n    const currentCategoryIndex = categories.indexOf(currentCategory);\n\n    if (currentCategoryIndex \u003e 0) {\n      currentCategory = categories[currentCategoryIndex - 1];\n      currentSampleIndex = sampleData[currentCategory].length - 1;\n\n      \/\/ Update active button\n      document.querySelectorAll('.sample-category-btn').forEach(b =\u003e {\n        b.classList.remove('active');\n      });\n      const newActiveButton = document.querySelector(`.sample-category-btn[data-category=\"${currentCategory}\"]`);\n      if (newActiveButton) {\n        newActiveButton.classList.add('active');\n      }\n\n      loadSample(currentCategory, currentSampleIndex);\n    }\n  }\n}\n\ndocument.getElementById('nextSample').addEventListener('click', () =\u003e {\n  playNextSample();\n});\n\ndocument.getElementById('prevSample').addEventListener('click', () =\u003e {\n  playPrevSample();\n});\n\n  const playPauseButton = document.getElementById('playPause');\n\n  playPauseButton.addEventListener('click', () =\u003e {\n    if (wavesurfer.isPlaying()) {\n      wavesurfer.pause();\n      isAutoplaying = false;\n      playPauseButton.classList.remove('playing');\n    } else {\n      wavesurfer.play();\n      isAutoplaying = true;\n      playPauseButton.classList.add('playing');\n    }\n  });\n});\n\n\u003c\/script\u003e\n\u003cscript src=\"https:\/\/unpkg.com\/wavesurfer.js\"\u003e\u003c\/script\u003e\n\n\u003cdiv class=\"vault-statement\"\u003e\n\u003cp class=\"vault-statement\"\u003e\n  \u003cstrong\u003eCrack the code behind professional-grade sound design\u003c\/strong\u003e\n\u003c\/p\u003e\n\u003c\/div\u003e\n\n  \u003c\/div\u003e\n\n\n\u003cscript\u003e\ndocument.addEventListener('DOMContentLoaded', function () {\n  const sections = document.querySelectorAll('.split-combine-section');\n  if (!sections.length) return;\n\n  let lastY = window.pageYOffset;\n  let hasCompleted = false;\n\nwindow.addEventListener('scroll', function () {\n  sections.forEach(section =\u003e {\n    const rect = section.getBoundingClientRect();\n    const triggerShow = window.innerHeight * 0.75;\n\n    if (rect.top \u003c triggerShow \u0026\u0026 !section.classList.contains('in-view')) {\n      section.classList.add('in-view');\n      setTimeout(() =\u003e {\n        section.classList.add('animation-complete');\n      }, 1000);\n    }\n  });\n}, { passive: true });\n});\n\u003c\/script\u003e\n\n\u003cp\u003e \u003c\/p\u003e\n\u003c!-- HACK OVERLAY CONTAINER --\u003e\n\u003cdiv id=\"hack-overlay-container\"\u003e\u003c\/div\u003e\n\n\u003c!-- TRIGGER BUTTON --\u003e\n\u003cdiv class=\"serum2-inner\" style=\"text-align: center;\"\u003e\n  \u003cbutton class=\"glitch-button scroll-button\" onclick=\"triggerHackEffect()\"\u003e\n    Launch Module Visualizer\n  \u003c\/button\u003e\n\u003c\/div\u003e\n\u003cstyle\u003e\n  .glitch-button.scroll-button {\n    display: block;\n    margin-top: 0px;\n    margin-right: auto;\n    margin-bottom: 80px;\n    margin-left: auto;\n    font-size: 130%;\n    padding: 16px 26px;\n    background-color: #39ff14;\n    color: black;\n    font-weight: bold;\n    font-family: 'Share Tech Mono', monospace;\n    border: none;\n    border-radius: 6px;\n    box-shadow: 0 0 12px #39ff14;\n    cursor: pointer;\n    transition: transform 0.2s ease-in-out, box-shadow 0.3s ease-in-out;\n    animation: idle-glow 2s ease-in-out infinite;\n    position: relative;\n    overflow: hidden;\n    z-index: 10;\n  }\n\n  @keyframes idle-glow {\n    0% { box-shadow: 0 0 10px #39ff14; }\n    50% { box-shadow: 0 0 22px #39ff14, 0 0 30px #39ff14; }\n    100% { box-shadow: 0 0 10px #39ff14; }\n  }\n\n  @keyframes strobeFlash {\n    0%, 20%, 40%, 60%, 80%, 100% { opacity: 0; }\n    10%, 30%, 50%, 70%, 90% { opacity: 0.4; }\n  }\n\n  @keyframes flicker {\n    0%, 100% { opacity: 1; transform: scale(1); }\n    50% { opacity: 0.6; transform: scale(1.05); }\n  }\n\n @keyframes matrixScroll {\n  from { transform: translateY(200); }\n  to   { transform: translateY(200vh); }\n}\n\n  \/* OVERLAY FULLSCREEN FIX *\/\n  #hack-overlay-container \u003e div {\n    position: fixed !important;\n    top: 0 !important;\n    left: 0 !important;\n    width: 100vw !important;\n    height: 100vh !important;\n    background: black !important;\n    z-index: 99999 !important;\n    overflow: hidden !important;\n    display: flex !important;\n    flex-direction: column !important;\n    justify-content: center !important;\n    align-items: center !important;\n    pointer-events: all !important;\n    text-align: center !important;\n  }\n\n  body.hack-active {\n    overflow: hidden !important;\n  }\n\n  html, body {\n    height: 100% !important;\n    margin: 0 !important;\n    padding: 0 !important;\n  }\n\n  .shopify-section,\n  .product__description,\n  .product__content,\n  .rte {\n    position: relative !important;\n    overflow: visible !important;\n  }\n\u003c\/style\u003e\n\n\u003cstyle\u003e\n@keyframes subtleFlicker {\n  0% { opacity: 1; transform: translateX(0); }\n  5% { opacity: 0.9; transform: translateX(-1px); }\n  10% { opacity: 1; transform: translateX(1px); }\n  15% { opacity: 0.95; transform: translateX(-1px); }\n  20% { opacity: 1; transform: translateX(1px); }\n  25%, 100% { opacity: 1; transform: translateX(0); }\n}\n\n@media (max-width: 768px) {\n  .hack-joke-text {\n    padding: 0 5px !important;\n    max-width: 98% !important;\n    text-align: center !important;\n    font-size: 18px !important;\n    line-height: 1.4;\n    animation: subtleFlicker 3s infinite alternate;\n  }\n}\n\u003c\/style\u003e\n\n\u003cstyle\u003e\n  @keyframes strobeFlash {\n    0%, 20%, 40%, 60%, 80%, 100% { opacity: 0; }\n    10%, 30%, 50%, 70%, 90% { opacity: 0.35; }\n  }\n\n\n\n  @keyframes flicker {\n    0%, 100% { opacity: 1; transform: scale(1); }\n    50% { opacity: 0.6; transform: scale(1.05); }\n  }\n\n  html, body {\n    margin: 0 !important;\n    padding: 0 !important;\n    height: 100% !important;\n  }\n\n  body.hack-active {\n    overflow: hidden !important;\n  }\n\n@keyframes flashGreen {\n  0%, 100% { opacity: 1; }\n  50% { opacity: 0.3; }\n}\n\n.flash-before-exit {\n  animation: flashGreen 0.8s ease-in-out infinite;\n}\n\n.hack-joke-text div + div {\n  margin-top: 6px;\n}\n\n\u003c\/style\u003e\n\n\u003cscript\u003e\nconst hackMessages = [\n  [\"WHZLY once moved a single macro\", \"and caused Ableton to crash.\"],\n  [\"Warning: EDMT just broke the sample pack market again.\", \"\"],\n  [\"Your favourite producer’s favourite presets...\", \"but louder.\"],\n  [\"WHZLY doesn’t automate filters...\", \"he threatens them\"],\n  [\"Serum 2 Overheated.\", \"Blame WHZLY.\"],\n  [\"We didn't throw these presets together\", \"the day Serum 2 came out\", \"like those other flogs!\"],\n  [\"WHZLY \u0026 EDMT didn’t beta test Serum 2\", \"they alpha dominated it.\"],\n  [\"These presets are clinically tested\", \"to boost serum testosterone.\"],\n  [\"Includes no recycled loops.\", \"Sorry if that’s a dealbreaker.\"],\n  [\"Made by REAL sound designers...\", \"not flogs with a MIDI keyboard and a dream.\"],\n  [\"These aren’t 'industry standard'.\", \"they’re industry disruptive.\"],\n  [\"Yo dubstep producers,\", \"this one's actually dangerous!\"],\n  [\"No fake dancing.\", \"Just real fkn sound design.\"],\n  [\"Built before Serum 2 had a manual...\", \"Still broke the rules.\"],\n  [\"WHZLY doesn’t EQ.\", \"He carves frequencies with an axe.\"],\n  [\"WHZLY didn’t design these presets…\", \"he summoned them.\"],\n  [\"I don’t save presets.\", \"They remember me. - WHZLY 2025\"],\n  [\"Beta testers quit halfway.\", \"Said it was 'too heavy.'\"],\n  [\"WHZLY’s PC crashed halfway through production.\", \"He called that a feature.\"],\n  [\"Other beta testers submitted bug reports.\", \"We turned them into wavetables ;)\"],\n  [\"WHZLY doesn’t use LFOs.\", \"He just stares at the wave until it moves.\"],\n  [\"WHZLY once sidechained silence...\", \"and it still hit harder.\"],\n  [\"These presets are why Skrillex\", \"carries a backup laptop.\"],\n  [\"Every macro was programmed...\", \"at gunpoint\"],\n  [\"WHZLY’s drop shook\", \"the desk screws loose.\", \"Twice.\"],\n  [\"Ableton 12 wasn’t ready.\", \"Neither were you.\"],\n  [\"This isn't music production.\", \"It's controlled chaos.\"],\n  [\"WHZLY doesn’t program modulation.\", \"He negotiates with it.\"],\n  [\"WHZLY once exported a preset\", \"and it corrupted the master bus.\"],\n  [\"Not compatible with weak speakers,\", \"cheap headphones, or faint-hearted producers.\"],\n  [\"You don't use these presets.\", \"They use you.\"],\n  [\"Made with no templates.\", \"Only trauma.\"],\n  [\"This pack slaps harder\", \"than your CPU can throttle.\"],\n  [\"WHZLY compresses waves\", \"by physically crushing them.\"],\n  [\"You think you’re controlling Serum 2...\", \"Serum 2's controlling you.\"],\n  [\"Every time you load a preset,\", \"a faggot wearing a beanie cries.\"],\n  [\"Warning: unauthorized duplication\", \"may summon WHZLY himself.\"],\n  [\"WHZLY doesn’t remix tracks.\", \"He rewrites physics.\"]\n];\n\n  function shuffleArray(array) {\n  const shuffled = array.slice(); \/\/ make a copy\n  for (let i = shuffled.length - 1; i \u003e 0; i--) {\n    const j = Math.floor(Math.random() * (i + 1));\n    [shuffled[i], shuffled[j]] = [shuffled[j], shuffled[i]];\n  }\n  return shuffled;\n}\n\nlet shuffledHackMessages = [];\nlet currentHackMessageIndex = 0;\n\ndocument.addEventListener('DOMContentLoaded', () =\u003e {\n  const storedShuffle = sessionStorage.getItem('hackMessageShuffle');\n  const storedIndex = sessionStorage.getItem('hackMessageIndex');\n\n  if (storedShuffle) {\n    shuffledHackMessages = JSON.parse(storedShuffle);\n    currentHackMessageIndex = parseInt(storedIndex || 0, 10);\n  } else {\n    shuffledHackMessages = shuffleArray(hackMessages);\n    currentHackMessageIndex = 0;\n    sessionStorage.setItem('hackMessageShuffle', JSON.stringify(shuffledHackMessages));\n    sessionStorage.setItem('hackMessageIndex', currentHackMessageIndex.toString());\n  }\n});\n\nfunction getNextHackMessage() {\n  if (currentHackMessageIndex \u003e= shuffledHackMessages.length) {\n    shuffledHackMessages = shuffleArray(hackMessages);\n    currentHackMessageIndex = 0;\n    sessionStorage.setItem('hackMessageShuffle', JSON.stringify(shuffledHackMessages));\n  }\n\n  const joke = shuffledHackMessages[currentHackMessageIndex];\n  currentHackMessageIndex++;\n\n  sessionStorage.setItem('hackMessageIndex', currentHackMessageIndex.toString());\n  return joke;\n}\n\n  function triggerHackEffect() {\n    \/\/ Completely bypass the Shopify DOM scope\n    const overlay = document.createElement('div');\n    overlay.setAttribute(\"id\", \"full-hack-overlay\");\n    overlay.style.position = 'fixed';\n    overlay.style.top = '0';\n    overlay.style.left = '0';\n    overlay.style.width = '100vw';\n    overlay.style.height = '100vh';\n    overlay.style.background = 'black';\n    overlay.style.zIndex = '999999'; \/\/ higher than Shopify elements\n    overlay.style.overflow = 'hidden';\n    overlay.style.display = 'flex';\n    overlay.style.flexDirection = 'column';\n    overlay.style.justifyContent = 'center';\n    overlay.style.alignItems = 'center';\n    overlay.style.textAlign = 'center';\n\n    const strobe = document.createElement('div');\n    strobe.style.position = 'absolute';\n    strobe.style.width = '100%';\n    strobe.style.height = '100%';\n    strobe.style.background = 'white';\n    strobe.style.mixBlendMode = 'difference';\n    strobe.style.opacity = '0';\n    strobe.style.animation = 'strobeFlash 4s linear forwards';\n    overlay.appendChild(strobe);\n\n\/\/ 🔥 Play Glitch Sound\nconst glitch = document.getElementById('glitchSound');\nif (glitch) {\n  glitch.currentTime = 0;\n  glitch.play().catch(e =\u003e console.warn('Glitch sound failed to play:', e));\n}\n\n    const matrix = document.createElement('div');\n    matrix.style.position = 'absolute';\n    matrix.style.top = '0';\n    matrix.style.left = '0';\n    matrix.style.width = '100%';\n    matrix.style.height = '300vh';\n    matrix.style.color = '#39ff14';\n    matrix.style.fontFamily = 'monospace';\n    matrix.style.fontSize = '48px';\n    matrix.style.lineHeight = '50px';\n    matrix.style.opacity = '0.08';\n    matrix.style.whiteSpace = 'pre';\n    matrix.style.animation = 'matrixScroll 18s linear infinite';\n\/\/ Create a super wide and tall matrix string\nconst binaryLine = '0101010111001010101110010101011010101010110101'.repeat(50);\nconst binaryText = (binaryLine + '\\n').repeat(300);\n\n\/\/ First matrix (default position)\nconst matrix1 = document.createElement('div');\nmatrix1.style.position = 'absolute';\nmatrix1.style.top = '0';\nmatrix1.style.left = '0';\nmatrix1.style.width = '100%';\nmatrix1.style.height = '300vh';\nmatrix1.style.color = '#39ff14';\nmatrix1.style.fontFamily = 'monospace';\nmatrix1.style.fontSize = '48px';\nmatrix1.style.lineHeight = '50px';\nmatrix1.style.opacity = '0.08';\nmatrix1.style.whiteSpace = 'pre';\nmatrix1.style.animation = 'matrixScroll 18s linear infinite';\nmatrix1.innerText = binaryText;\noverlay.appendChild(matrix1);\n\n\/\/ Second matrix (starts above, seamlessly continues)\nconst matrix2 = document.createElement('div');\nmatrix2.style.position = 'absolute';\nmatrix2.style.top = '-300vh';\nmatrix2.style.left = '0';\nmatrix2.style.width = '100%';\nmatrix2.style.height = '300vh';\nmatrix2.style.color = '#39ff14';\nmatrix2.style.fontFamily = 'monospace';\nmatrix2.style.fontSize = '48px';\nmatrix2.style.lineHeight = '50px';\nmatrix2.style.opacity = '0.18';\nmatrix2.style.whiteSpace = 'pre';\nmatrix2.style.animation = 'matrixScroll 18s linear infinite';\nmatrix2.innerText = binaryText;\noverlay.appendChild(matrix2);\n\n\n\n    const textWrap = document.createElement('div');\n    textWrap.style.zIndex = '5';\n    textWrap.style.display = 'flex';\n    textWrap.style.flexDirection = 'column';\n    textWrap.style.alignItems = 'center';\n    textWrap.style.justifyContent = 'center';\n\n    const title = document.createElement('div');\n    title.innerText = 'SYSTEM ERROR';\n    title.style.fontSize = '64px';\n    title.style.color = '#39ff14';\n    title.style.fontFamily = \"'Share Tech Mono', monospace\";\n    title.style.textShadow = '0 0 10px #39ff14, 0 0 20px #39ff14';\n    title.style.animation = 'flicker 0.1s steps(2, end) infinite';\n    title.style.marginBottom = '12px';\n    textWrap.appendChild(title);\n\n    const joke = document.createElement('div');\n    joke.classList.add('hack-joke-text');\n\n    \/\/ Randomize the joke instead of following order\n    const selectedJoke = getNextHackMessage();\n\n    joke.innerHTML = selectedJoke.map(line =\u003e `\u003cdiv\u003e${line}\u003c\/div\u003e`).join('');\n    joke.style.fontSize = '22px';\n    joke.style.color = '#7CFF5A';\n    joke.style.fontFamily = \"'Share Tech Mono', monospace\";\n    joke.style.textAlign = 'center';\n    textWrap.appendChild(joke);\n\n    overlay.appendChild(textWrap);\n\n\/\/ Add DO NOT CLICK button\nconst eggBtn = document.createElement('button');\neggBtn.id = 'easterEggBtn';\neggBtn.innerText = 'DO NOT CLICK';\neggBtn.style.position = 'absolute';\neggBtn.style.top = '16px';\neggBtn.style.right = '16px';\neggBtn.style.zIndex = '999999';\neggBtn.style.background = 'none';\neggBtn.style.border = 'none';\neggBtn.style.color = '#39ff14';\neggBtn.style.fontFamily = \"'Share Tech Mono', monospace\";\neggBtn.style.fontSize = '14px'; \/\/ Mid-sized font\neggBtn.style.padding = '2px 8px'; \/\/ Slightly tighter padding\neggBtn.style.cursor = 'pointer';\neggBtn.style.textShadow = '0 0 2px #39ff14'; \/\/ Balanced glow\noverlay.appendChild(eggBtn);\n\neggBtn.addEventListener('click', () =\u003e {\n  \/\/ Pause\/remove glitch background effects\n  clearTimeout(window.glitchOverlayTimeout);\n  window.skipScrollReset = true;\n  matrix1.style.display = 'none';\n  matrix2.style.display = 'none';\n  strobe.style.display = 'none';\n  textWrap.style.display = 'none';\n  eggBtn.style.display = 'none';\n\n  \/\/ Hide overlay effects\n  matrix1.style.display = 'none';\n  matrix2.style.display = 'none';\n  strobe.style.display = 'none';\n  textWrap.style.display = 'none';\n  eggBtn.style.display = 'none';\n\n  \/\/ Show terminal game modal\n  showTerminalGame(overlay);\n});\n\n    document.body.appendChild(overlay);\n    document.body.classList.add(\"hack-active\");\n\nwindow.glitchOverlayTimeout = setTimeout(() =\u003e {\n  overlay.remove();\n  document.body.classList.remove(\"hack-active\");\n}, 4000);\n  }\n\u003c\/script\u003e\n\n\u003cscript\u003e\nfunction showTerminalGame(container) {\n  const gameWrap = document.createElement('div');\n  gameWrap.style.position = 'absolute';\n  gameWrap.style.top = '50%';\n  gameWrap.style.left = '50%';\n  gameWrap.style.transform = 'translate(-50%, -50%)';\n  gameWrap.style.background = '#000';\n  gameWrap.style.border = '2px solid #39ff14';\n  gameWrap.style.padding = '20px';\n  gameWrap.style.color = '#39ff14';\n  gameWrap.style.fontFamily = \"'Share Tech Mono', monospace\";\n  gameWrap.style.width = '400px';\n  gameWrap.style.maxWidth = '90vw';\n  gameWrap.style.textAlign = 'left';\n  gameWrap.style.zIndex = '999999';\n\ngameWrap.innerHTML = `\n  \u003cdiv\u003eSERUM 2 BACKEND ACCESS TERMINAL\u003cbr\u003e=================================\u003c\/div\u003e\n  \u003cdiv style=\"margin-top:10px\"\u003eENTER PASSWORD:\u003c\/div\u003e\n  \u003cinput type=\"text\" id=\"terminalInput\" style=\"margin-top:6px; width: 100%; background: black; color: #39ff14; border: 1px solid #39ff14; font-family: 'Share Tech Mono'; padding: 4px;\" \/\u003e\n  \u003cbutton id=\"submitPassword\" style=\"margin-top:10px; background: #39ff14; color: black; border: none; padding: 6px 12px; cursor: pointer; font-family: 'Share Tech Mono';\"\u003eSUBMIT\u003c\/button\u003e\n  \u003cdiv id=\"terminalMessage\" style=\"margin-top:10px;\"\u003e\u003c\/div\u003e\n  \u003cdiv id=\"resetPasswordWrapper\" style=\"display:none; margin-top:14px;\"\u003e\n    \u003cbutton id=\"resetPasswordBtn\" style=\"background: none; border: none; color: #39ff14; text-decoration: underline; cursor: pointer; font-family: 'Share Tech Mono';\"\u003eRESET PASSWORD?\u003c\/button\u003e\n  \u003c\/div\u003e\n`;\n\n  container.appendChild(gameWrap);\n\n  const input = gameWrap.querySelector('#terminalInput');\n  const submit = gameWrap.querySelector('#submitPassword');\n  const message = gameWrap.querySelector('#terminalMessage');\n  const resetBtn = gameWrap.querySelector('#resetPasswordBtn');\n\n  submit.addEventListener('click', () =\u003e {\n    message.innerHTML = \"\u003cspan style='color:red;'\u003e✘ ACCESS DENIED\u003c\/span\u003e\";\n    document.getElementById('resetPasswordWrapper').style.display = 'block';\n\n    \/\/ 🔥 Play Denied Sound\n    const denied = document.getElementById('deniedSound');\n    if (denied) {\n      denied.currentTime = 0;\n      denied.play().catch(e =\u003e console.warn('Denied sound failed to play:', e));\n    }\n  });\n\n  \/\/ ✅ Reset password button must still work:\n  resetBtn.addEventListener('click', () =\u003e {\n    gameWrap.remove();\n    launchMemoryGame(container);\n  });\n}\n\u003c\/script\u003e\n\n\u003cscript\u003e\nfunction launchMemoryGame(container) {\n  window.memoryGameContainer = container;\n  const symbols = ['★', '✖', '▣', '⚡', '♠', '♣', '◆', '⬤', '△', '▽', '☀'];\n  let sequence = [];\n  let clickedSequence = [];\n\n  const gameWrap = document.createElement('div');\n  gameWrap.style.position = 'absolute';\n  gameWrap.style.top = '50%';\n  gameWrap.style.left = '50%';\n  gameWrap.style.transform = 'translate(-50%, -50%)';\n  gameWrap.style.background = '#000';\n  gameWrap.style.border = '2px solid #39ff14';\n  gameWrap.style.padding = '20px';\n  gameWrap.style.color = '#39ff14';\n  gameWrap.style.fontFamily = \"'Share Tech Mono', monospace\";\n  gameWrap.style.width = '400px';\n  gameWrap.style.maxWidth = '90vw';\n  gameWrap.style.textAlign = 'center';\n  gameWrap.style.zIndex = '999999';\n  container.appendChild(gameWrap);\n\ngameWrap.innerHTML = `\n  \u003cdiv\u003eSERUM 2 PASSWORD RESET\u003cbr\u003e======================\u003c\/div\u003e\n  \u003cdiv id=\"memorySequence\" style=\"font-size: 28px; margin: 20px 0; opacity:0; transition: opacity 1s;\"\u003e\u003c\/div\u003e\n  \u003cdiv id=\"memoryGrid\" style=\"display:none; flex-wrap: wrap; justify-content: center; gap: 10px; margin-top: 20px;\"\u003e\u003c\/div\u003e\n  \u003cdiv id=\"memoryMessage\" style=\"margin-top: 10px;\"\u003e\u003c\/div\u003e\n  \u003cdiv id=\"memoryButton\" style=\"margin-top: 20px;\"\u003e\u003c\/div\u003e\n`;\n\n  const sequenceDiv = gameWrap.querySelector('#memorySequence');\n  const gridDiv = gameWrap.querySelector('#memoryGrid');\n  const memoryMessage = gameWrap.querySelector('#memoryMessage');\n  const memoryButton = gameWrap.querySelector('#memoryButton');\n\n  function startNewSequence() {\n    sequence = [];\n    clickedSequence = [];\n    memoryMessage.innerHTML = '';\n    memoryButton.innerHTML = '';\n    gridDiv.innerHTML = '';\n    gridDiv.style.display = 'none';\n\nlet lastSymbol = null;\nfor (let i = 0; i \u003c 5; i++) {\n  let nextSymbol;\n  do {\n    nextSymbol = symbols[Math.floor(Math.random() * symbols.length)];\n  } while (nextSymbol === lastSymbol);\n  sequence.push(nextSymbol);\n  lastSymbol = nextSymbol;\n}\n\n    sequenceDiv.style.opacity = '0';\n    sequenceDiv.innerText = 'REMEMBER THE ORDER';\n    setTimeout(() =\u003e {\n      sequenceDiv.style.opacity = '1';\n    }, 50);\n\n    setTimeout(() =\u003e {\n      flashSequence();\n    }, 2000);\n  }\n\n  function flashSequence() {\n    let currentFlash = 0;\n    const flashInterval = setInterval(() =\u003e {\n      if (currentFlash \u003c sequence.length) {\n        sequenceDiv.innerText = sequence[currentFlash];\n        currentFlash++;\n      } else {\n        clearInterval(flashInterval);\n        startMemoryGrid();\n      }\n    }, 1600);\n  }\n\n  function startMemoryGrid() {\n    sequenceDiv.innerText = 'SELECT SYMBOLS IN ORDER';\n    gridDiv.style.display = 'flex';\n    clickedSequence = [];\n\n    const fullSet = [...sequence, ...symbols];\n    const uniqueSymbols = [...new Set(fullSet)].sort(() =\u003e 0.5 - Math.random()).slice(0, 12);\n    uniqueSymbols.sort(() =\u003e 0.5 - Math.random());\n\n    uniqueSymbols.forEach(symbol =\u003e {\n      const btn = document.createElement('button');\n      btn.innerText = symbol;\n      btn.style.background = 'black';\n      btn.style.color = '#39ff14';\n      btn.style.border = '1px solid #39ff14';\n      btn.style.padding = '10px 14px';\n      btn.style.fontSize = '24px';\n      btn.style.cursor = 'pointer';\n      btn.style.fontFamily = \"'Share Tech Mono', monospace\";\n      btn.style.transition = 'background 0.2s, transform 0.2s';\n\n      btn.addEventListener('click', () =\u003e {\n        btn.style.background = '#39ff14';\n        btn.style.color = 'black';\n        btn.style.transform = 'scale(1.2)';\n        setTimeout(() =\u003e {\n          btn.style.background = 'black';\n          btn.style.color = '#39ff14';\n          btn.style.transform = 'scale(1)';\n        }, 200);\n        handleSymbolClick(symbol);\n      });\n\n      gridDiv.appendChild(btn);\n    });\n  }\n\nfunction handleSymbolClick(symbol) {\n  const beep = document.getElementById('hackerBeep');\n  if (beep) {\n    beep.currentTime = 0;\n    beep.play();\n  }\n\n  clickedSequence.push(symbol);\n\n  if (clickedSequence.length === sequence.length) {\n    if (clickedSequence.join('') === sequence.join('')) {\n      showSystemOverride(window.memoryGameContainer);\n    } else {\nmemoryMessage.innerHTML = \"\u003cspan style='color:red;'\u003e✘ ACCESS DENIED\u003c\/span\u003e\";\n\n\/\/ 🔥 Play Denied Sound\nconst denied = document.getElementById('deniedSound');\nif (denied) {\n  denied.currentTime = 0;\n  denied.play().catch(e =\u003e console.warn('Denied sound failed to play:', e));\n}\n\nmemoryButton.innerHTML = `\n  \u003cbutton id=\"retryGame\" style=\"margin-top:14px; background: none; border: 1px solid #39ff14; color: #39ff14; padding: 8px 16px; cursor: pointer; font-family: 'Share Tech Mono'; font-size:16px;\"\u003e\n    RETRY MEMORY SEQUENCE\n  \u003c\/button\u003e\n`;\ndocument.getElementById('retryGame').addEventListener('click', () =\u003e {\n  startNewSequence();\n});\n    }\n  }\n}\n\n  startNewSequence();\n}\n\nfunction showSystemOverride(container) {\n  const overlay = document.createElement('div');\n  overlay.setAttribute(\"id\", \"override-glitch-overlay\");\n  overlay.style.position = 'fixed';\n  overlay.style.top = '0';\n  overlay.style.left = '0';\n  overlay.style.width = '100vw';\n  overlay.style.height = '100vh';\n  overlay.style.background = 'black';\n  overlay.style.zIndex = '999999';\n  overlay.style.overflow = 'hidden';\n  overlay.style.display = 'flex';\n  overlay.style.flexDirection = 'column';\n  overlay.style.justifyContent = 'center';\n  overlay.style.alignItems = 'center';\n  overlay.style.textAlign = 'center';\n  overlay.style.opacity = '0';\n  overlay.style.transition = 'opacity 0.6s ease-in-out'; \/* \u003c-- Smooth fade *\/\n\n  \/\/ Strobe\n  const strobe = document.createElement('div');\n  strobe.style.position = 'absolute';\n  strobe.style.width = '100%';\n  strobe.style.height = '100%';\n  strobe.style.background = 'white';\n  strobe.style.mixBlendMode = 'difference';\n  strobe.style.opacity = '0';\n  strobe.style.animation = 'strobeFlash 2s linear forwards';\n  overlay.appendChild(strobe);\n\n  \/\/ Matrix 1\n  const matrix1 = document.createElement('div');\n  const binaryLine = '0101010111001010101110010101011010101010110101'.repeat(50);\n  const binaryText = (binaryLine + '\\n').repeat(300);\n  matrix1.style.position = 'absolute';\n  matrix1.style.top = '0';\n  matrix1.style.left = '0';\n  matrix1.style.width = '100%';\n  matrix1.style.height = '300vh';\n  matrix1.style.color = '#39ff14';\n  matrix1.style.fontFamily = 'monospace';\n  matrix1.style.fontSize = '48px';\n  matrix1.style.lineHeight = '50px';\n  matrix1.style.opacity = '0.08';\n  matrix1.style.whiteSpace = 'pre';\n  matrix1.style.animation = 'matrixScroll 18s linear infinite';\n  matrix1.innerText = binaryText;\n  overlay.appendChild(matrix1);\n\n  \/\/ Matrix 2 (offset)\n  const matrix2 = document.createElement('div');\n  matrix2.style.position = 'absolute';\n  matrix2.style.top = '-300vh';\n  matrix2.style.left = '0';\n  matrix2.style.width = '100%';\n  matrix2.style.height = '300vh';\n  matrix2.style.color = '#39ff14';\n  matrix2.style.fontFamily = 'monospace';\n  matrix2.style.fontSize = '48px';\n  matrix2.style.lineHeight = '50px';\n  matrix2.style.opacity = '0.18';\n  matrix2.style.whiteSpace = 'pre';\n  matrix2.style.animation = 'matrixScroll 18s linear infinite';\n  matrix2.innerText = binaryText;\n  overlay.appendChild(matrix2);\n\n  \/\/ Text in the center\n  const textWrap = document.createElement('div');\n  textWrap.style.zIndex = '5';\n  textWrap.style.display = 'flex';\n  textWrap.style.flexDirection = 'column';\n  textWrap.style.alignItems = 'center';\n  textWrap.style.justifyContent = 'center';\n\n  const title = document.createElement('div');\n  title.innerText = 'SYSTEM OVERRIDE';\n  title.style.fontSize = '64px';\n  title.style.color = '#39ff14';\n  title.style.fontFamily = \"'Share Tech Mono', monospace\";\n  title.style.textShadow = '0 0 10px #39ff14, 0 0 20px #39ff14';\n  title.style.animation = 'flicker 0.1s steps(2, end) infinite';\n  textWrap.appendChild(title);\n\n  overlay.appendChild(textWrap);\n  document.body.appendChild(overlay);\n\nconst siren = document.getElementById('sirenSound');\nif (siren) {\n  siren.currentTime = 0;\n  siren.play().catch(e =\u003e console.warn('Siren sound failed to play:', e));\n}\n\n  \/\/ Smooth fade in\n  setTimeout(() =\u003e {\n    overlay.style.opacity = '1';\n  }, 50);\n\n  \/\/ After 2s, remove overlay and show success screen\n  setTimeout(() =\u003e {\n    overlay.remove();\n    showSuccessTerminal(container);\n  }, 2000);\n}\n\nfunction showSuccessTerminal(container) {\n  container.innerHTML = '';\n\n  const fadeWrap = document.createElement('div');\n  fadeWrap.style.opacity = '0';\n  fadeWrap.style.transition = 'opacity 1s ease-in-out';\n  fadeWrap.style.position = 'absolute';\n  fadeWrap.style.top = '0';\n  fadeWrap.style.left = '0';\n  fadeWrap.style.width = '100%';\n  fadeWrap.style.height = '100%';\n  fadeWrap.style.overflow = 'hidden';\n  fadeWrap.style.display = 'flex';\n  fadeWrap.style.flexDirection = 'column';\n  fadeWrap.style.justifyContent = 'center';\n  fadeWrap.style.alignItems = 'center';\n  fadeWrap.style.zIndex = '999999';\n  container.appendChild(fadeWrap);\n\n\/\/ Play vault unlock sound\nconst vault = document.getElementById('vaultSound');\nif (vault) {\n  vault.currentTime = 0;\n  vault.play().catch(e =\u003e console.warn('Vault sound failed to play:', e));\n}\n\n  \/\/ Matrix 1 background\n  const matrix1 = document.createElement('div');\n  matrix1.style.position = 'absolute';\n  matrix1.style.top = '0';\n  matrix1.style.left = '0';\n  matrix1.style.width = '100%';\n  matrix1.style.height = '300vh';\n  matrix1.style.color = '#39ff14';\n  matrix1.style.fontFamily = 'monospace';\n  matrix1.style.fontSize = '48px';\n  matrix1.style.lineHeight = '50px';\n  matrix1.style.opacity = '0.08';\n  matrix1.style.whiteSpace = 'pre';\n  matrix1.style.animation = 'matrixScroll 24s linear infinite';\n  matrix1.innerText = ('0101011010101110'.repeat(50) + '\\n').repeat(300);\n  fadeWrap.appendChild(matrix1);\n\n  \/\/ Matrix 2 background (offset)\n  const matrix2 = document.createElement('div');\n  matrix2.style.position = 'absolute';\n  matrix2.style.top = '-300vh';\n  matrix2.style.left = '0';\n  matrix2.style.width = '100%';\n  matrix2.style.height = '300vh';\n  matrix2.style.color = '#39ff14';\n  matrix2.style.fontFamily = 'monospace';\n  matrix2.style.fontSize = '48px';\n  matrix2.style.lineHeight = '50px';\n  matrix2.style.opacity = '0.15';\n  matrix2.style.whiteSpace = 'pre';\n  matrix2.style.animation = 'matrixScroll 24s linear infinite';\n  matrix2.innerText = ('1010010110110100'.repeat(50) + '\\n').repeat(300);\n  fadeWrap.appendChild(matrix2);\n\n  \/\/ Terminal Box\n  const terminalBox = document.createElement('div');\n  terminalBox.style.background = 'black';\n  terminalBox.style.border = '2px solid #39ff14';\n  terminalBox.style.padding = '20px';\n  terminalBox.style.color = '#39ff14';\n  terminalBox.style.fontFamily = \"'Share Tech Mono', monospace\";\n  terminalBox.style.width = '400px';\n  terminalBox.style.maxWidth = '90vw';\n  terminalBox.style.textAlign = 'center';\n  terminalBox.style.zIndex = '999999';\n\nterminalBox.innerHTML = `\n  \u003cdiv\u003e✔ SERUM 2 ACCESS GRANTED ✔\u003c\/div\u003e\n  \u003cdiv style=\"margin-top:16px; margin-bottom:8px;\"\u003eDISCOUNT CODE:\u003c\/div\u003e\n  \u003cdiv style=\"margin-bottom:14px;\"\u003e\u003cspan style=\"color:#000;background:#39ff14;padding:4px 8px;\"\u003eHACKER5\u003c\/span\u003e\u003c\/div\u003e\n  \u003cdiv id=\"copiedMsg\" style=\"margin-top:12px; color:#7CFF5A; font-family:'Share Tech Mono', monospace; opacity:1; transition:opacity 1.0s ease-in-out;\"\u003e✔ CODE COPIED\u003c\/div\u003e\n  \u003cbutton id=\"returnMainframe\" style=\"margin-top:14px;background:transparent;color:#39ff14;border:2px solid #39ff14;padding:12px 24px;cursor:pointer;font-family:'Share Tech Mono';font-size:18px;letter-spacing:1px;transition:all 0.5s ease;box-shadow:0 0 8px #39ff14;\"\u003e\n    RETURN TO MAINFRAME\n  \u003c\/button\u003e\n`;\n  fadeWrap.appendChild(terminalBox);\n\n  navigator.clipboard.writeText('HACKER5');\n\n  \/\/ Delay fade-in so it's AFTER the override screen fades out\n  setTimeout(() =\u003e {\n    fadeWrap.style.opacity = '1';\n  }, 100); \/\/ adjust this delay if needed\n\nsetTimeout(() =\u003e {\n  const copied = document.getElementById('copiedMsg');\n  if (copied) {\n    copied.classList.add('flash-before-exit');\n  }\n\n  \/\/ Fade out after flash\n  setTimeout(() =\u003e {\n    if (copied) {\n      copied.style.opacity = '0';\n      setTimeout(() =\u003e copied.remove(), 500);\n    }\n  }, 3000); \/\/ flash duration\n}, 3000); \/\/ wait 3s before starting flash\n\n  document.getElementById('returnMainframe').addEventListener('click', () =\u003e {\n    window.location.reload();\n  });\n}\n\n\u003c\/script\u003e\n\n\u003cscript\u003e\ndocument.addEventListener('DOMContentLoaded', () =\u003e {\n  const observer = new MutationObserver((mutations) =\u003e {\n    mutations.forEach(mutation =\u003e {\n      mutation.removedNodes.forEach(removed =\u003e {\n        if (removed.id === 'full-hack-overlay' \u0026\u0026 !window.skipScrollReset) {\n          setTimeout(() =\u003e {\n            const isMobile = window.innerWidth \u003c= 768;\n            let scrollTarget = 0;\n\n            if (isMobile) {\n              scrollTarget = window.innerHeight * 0.12; \n            }\n\n            window.scrollTo({ top: scrollTarget, behavior: 'smooth' });\n          }, 150);\n        }\n      });\n    });\n  });\n\n  observer.observe(document.body, { childList: true });\n});\n\u003c\/script\u003e\n\n\u003cstyle\u003e\n\u003cbutton id=\"returnMainframe\" style=\"\n  margin-top:14px;\n  background: transparent;\n  color: #39ff14;\n  border: 2px solid #39ff14;\n  padding: 12px 24px;\n  cursor: pointer;\n  font-family: 'Share Tech Mono', monospace;\n  font-size: 18px;\n  letter-spacing: 1px;\n  transition: all 0.3s ease;\n  box-shadow: 0 0 8px #39ff14;\n\"\u003e\n  RETURN TO MAINFRAME\n\u003c\/button\u003e\n\u003c\/style\u003e\n\n\u003c!-- PREVIEW VIDEOS --\u003e\n\u003cstyle\u003e\n\/* Initial states *\/\n.whzly-heading {\n  opacity: 0;\n  transform: translateX(-60px);\n  transition: opacity 0.6s ease-out, transform 0.6s ease-out;\n}\n.whzly-tagline {\n  opacity: 0;\n  transform: translateX(60px);\n  transition: opacity 0.6s ease-out 0.2s, transform 0.6s ease-out 0.2s;\n}\n.whzly-fade-in {\n  opacity: 0;\n  transform: translateY(40px);\n  transition: opacity 0.6s ease-out 0.4s, transform 0.6s ease-out 0.4s, box-shadow 0.6s ease-out 0.4s;\n}\n\n\/* Active states *\/\n.whzly-heading.active {\n  opacity: 1;\n  transform: translateX(0);\n}\n.whzly-tagline.active {\n  opacity: 1;\n  transform: translateX(0);\n}\n.whzly-fade-in.active {\n  opacity: 1;\n  transform: translateY(0);\n  box-shadow: 0 0 20px #39ff14;\n}\n\n.fullscreen-tip-wrapper {\n  max-width: 900px;\n  margin: 6px auto 0 auto;\n  text-align: center;\n}\n\n.mobile-fullscreen-tip {\n  color: #39ff14;\n  font-family: 'Share Tech Mono', monospace;\n  font-size: 12px !important;\n  opacity: 0.85;\n  display: none; \/* Hidden by default *\/\n  overflow: hidden;\n  white-space: nowrap; \/* Keeps it on one line while typing *\/\n}\n\n\/* Only show on mobile *\/\n@media (max-width: 768px) {\n  .mobile-fullscreen-tip {\n    display: block;\n  }\n}\n\n.desktop-only-text {\n  display: inline;\n}\n\n@media (max-width: 768px) {\n  .desktop-only-text {\n    display: none;\n  }\n}\n\n\/* Flicker keyframes *\/\n@keyframes fullscreenFlicker {\n  0%, 100% { opacity: 1; }\n  5%, 15%, 25% { opacity: 0.6; }\n  10%, 20%, 30% { opacity: 1; }\n}\n\n@media (max-width: 480px) {\n  .whzly-fade-in {\n    margin-top: 20px !important; \/* Tighter top margin on mobile *\/\n  }\n}\n\n.whzly-heading {\n  font-size: 32px; \/* Set normal font size *\/\n}\n\n@media (max-width: 430px) {\n  .serum2-inner .whzly-heading {\n    font-size: 20px !important;\n    margin-top: 20px !important; \/* Match your other settings *\/\n    margin-bottom: 12px !important;\n  }\n}\n\n.video-glow-wrapper {\n  max-width: 900px;\n  margin: 40px auto 0 auto;\n  border-radius: 12px;\n  overflow: hidden;\n  opacity: 0;\n  transform: translateY(40px);\n  transition: opacity 0.6s ease-out 0.4s, transform 0.6s ease-out 0.4s, box-shadow 0.6s ease-out 0.4s;\n}\n\n.video-glow-wrapper.active {\n  opacity: 1;\n  transform: translateY(0);\n  box-shadow: 0 0 20px #39ff14;\n}\n\n.whzly-fade-in {\n  max-width: 900px;\n  margin: 40px auto 0 auto;\n  border-radius: 12px;\n  overflow: hidden;\n  opacity: 0;\n  transform: translateY(40px);\n  transition: opacity 0.6s ease-out 0.4s, transform 0.6s ease-out 0.4s;\n}\n\n.whzly-fade-in.active {\n  opacity: 1;\n  transform: translateY(0);\n}\n\n\u003c\/style\u003e\n\n\u003cscript\u003e\ndocument.addEventListener('DOMContentLoaded', function () {\n  \/\/ --- Fullscreen Typing + Flicker ---\n  const fullscreenTip = document.getElementById('fullscreenTip');\n  const message = \"Watch in fullscreen for best experience.\";\n  let charIndex = 0;\n\n  function typeText() {\n    if (!fullscreenTip) return;\n    if (charIndex \u003c message.length) {\n      fullscreenTip.innerHTML += message.charAt(charIndex);\n      charIndex++;\n      setTimeout(typeText, 40);\n    } else {\n      startRandomFlicker();\n    }\n  }\n\n  function startRandomFlicker() {\n    if (!fullscreenTip) return;\n    fullscreenTip.style.animation = 'fullscreenFlicker 2s ease-in-out forwards';\n    setTimeout(() =\u003e {\n      fullscreenTip.style.animation = '';\n    }, 2000);\n    const nextFlicker = Math.floor(Math.random() * 7000) + 8000;\n    setTimeout(startRandomFlicker, nextFlicker);\n  }\n\n  if (fullscreenTip) {\n    setTimeout(typeText, 600);\n  }\n\n  \/\/ --- WHZLY Scroll Animations ---\n  const glowWrapper = document.querySelector('#whzlyGlowWrapper');\n  const heading = document.querySelector('.whzly-heading');\n  const tagline = document.querySelector('.whzly-tagline');\n  const videoBlocks = document.querySelectorAll('.whzly-fade-in');\n  const triggerArea = document.querySelector('.whzly-trigger-area');\n\n  let lastScrollY = window.scrollY;\n\n  const observer = new IntersectionObserver(entries =\u003e {\n  const bundleWrapper = document.querySelector('.bundle-flex-wrapper');\n    entries.forEach(entry =\u003e {\n      const scrollingUp = window.scrollY \u003c lastScrollY;\n      lastScrollY = window.scrollY;\n\nif (entry.isIntersecting) {\n  heading?.classList.add('active');\n  tagline?.classList.add('active');\n  glowWrapper?.classList.add('active');\n  bundleWrapper?.classList.add('in-view', 'animation-complete');\n  document.querySelector('.plus-symbol')?.classList.add('active');\n  videoBlocks.forEach(block =\u003e block.classList.add('active'));\n} else if (scrollingUp) {\n  heading?.classList.remove('active');\n  tagline?.classList.remove('active');\n  glowWrapper?.classList.remove('active');\n  bundleWrapper?.classList.remove('in-view', 'animation-complete');\n\n  videoBlocks.forEach(block =\u003e block.classList.remove('active'));\n}\n    });\n  }, { threshold: 0.5 });\n\n  if (triggerArea) {\n    observer.observe(triggerArea);\n  }\n});\n\u003c\/script\u003e\n\n\u003c!-- WHZLY DUAL VIDEO PREVIEW SECTION --\u003e\n\u003cdiv class=\"serum2-inner whzly-trigger-area\" style=\"text-align: center; margin: 100px 0;\"\u003e\n  \u003ch2 class=\"whzly-heading\" style=\"margin-bottom: 20px;\"\u003e🎥 PREVIEW THE PRODUCER BUNDLE\u003c\/h2\u003e\n\n  \u003cp class=\"benchmark-tagline whzly-tagline\" style=\"margin-bottom: 30px;\"\u003e\n    \u003cstrong\u003e\n      \u003cspan class=\"first-line\"\u003eThis isn’t some throwaway essentials pack - it’s a complete sound design protocol.\u003c\/span\u003e\u003cbr\u003e\n      \u003cspan class=\"second-line desktop-only-text\"\u003eWatch how the presets hit - learn how to make them hit harder.\u003c\/span\u003e\n    \u003c\/strong\u003e\n  \u003c\/p\u003e\n\n  \u003c!-- Dual Video Layout --\u003e\n  \u003cdiv style=\"display: flex; flex-wrap: wrap; justify-content: center; gap: 40px;\"\u003e\n    \n\u003c!-- Preset Demo --\u003e\n\u003cdiv class=\"whzly-fade-in\" style=\"flex: 1 1 580px; max-width: 600px; text-align: center;\"\u003e\n  \u003cdiv style=\"box-shadow: 0 0 20px #39ff14; border-radius: 12px; overflow: hidden;\"\u003e\n    \u003ciframe src=\"https:\/\/www.youtube.com\/embed\/8Ofe4bPodtE?rel=0\u0026amp;modestbranding=1\u0026amp;controls=1\" style=\"aspect-ratio: 16 \/ 9; width: 100%; border: none; display: block;\" allowfullscreen\u003e\u003c\/iframe\u003e\n  \u003c\/div\u003e\n  \u003cp style=\"margin-top: 10px; font-family: 'Share Tech Mono', monospace; font-size: 15px; color: #39ff14;\"\u003e\n    🎛️ WHZLY PRESET DEMO\n  \u003c\/p\u003e\n\u003c\/div\u003e\n\n\u003c!-- Course Demo --\u003e\n\u003cdiv class=\"whzly-fade-in\" style=\"flex: 1 1 580px; max-width: 600px; text-align: center;\"\u003e\n  \u003cdiv style=\"box-shadow: 0 0 20px #7CFF5A; border-radius: 12px; overflow: hidden;\"\u003e\n    \u003ciframe src=\"https:\/\/www.youtube.com\/embed\/TZpmLhGndYk?si=FaRaHjmt9KyINogu?rel=0\u0026amp;modestbranding=1\u0026amp;controls=1\" style=\"aspect-ratio: 16 \/ 9; width: 100%; border: none; display: block;\" allowfullscreen\u003e\u003c\/iframe\u003e\n  \u003c\/div\u003e\n  \u003cp style=\"margin-top: 10px; font-family: 'Share Tech Mono', monospace; font-size: 15px; color: #7CFF5A;\"\u003e\n    🎓 WHZLY COURSE DEMO\n  \u003c\/p\u003e\n\u003c\/div\u003e\n\n\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- S2R DEMO TRACK (Matching Format) --\u003e\n\u003cdiv class=\"whzly-fade-in\" style=\"flex: 1 1 580px; max-width: 600px; text-align: center; margin: 40px auto;\"\u003e\n  \u003cdiv style=\"box-shadow: 0 0 20px #39ff14; border-radius: 12px; overflow: hidden;\"\u003e\n    \u003ciframe src=\"https:\/\/www.youtube.com\/embed\/jKkbL6y4dwk?rel=0\u0026amp;modestbranding=1\u0026amp;showinfo=0\u0026amp;autohide=1\u0026amp;controls=1\" style=\"aspect-ratio: 16 \/ 9; width: 100%; border: none; display: block;\" allowfullscreen\u003e\n    \u003c\/iframe\u003e\n  \u003c\/div\u003e\n  \u003cp style=\"margin-top: 10px; font-family: 'Share Tech Mono', monospace; font-size: 15px; color: #ffffff;\"\u003e\n    🎹 DEMO TRACK\n  \u003c\/p\u003e\n\u003c\/div\u003e\n\n\u003c\/div\u003e\n\n\u003cstyle\u003e\n  @media (max-width: 768px) {\n    .video-glow-wrapper-static {\n      box-shadow: none !important;\n    }\n  }\n\n  @keyframes subtle-glitch {\n    0%, 60%, 100% { text-shadow: 0 0 4px #39ff14; }\n    20% { text-shadow: -1px 0 #39ff14, 1px 0 #39ff14; }\n    40% { text-shadow: 1px 0 #39ff14, -1px 0 #39ff14; }\n    80% { text-shadow: 0 0 6px #39ff14; }\n  }\n\u003c\/style\u003e\n\n\n\u003cstyle\u003e\nbody.hack-active #smile-ui-lite-launcher-frame-container {\n  display: none !important;\n}\n\n\u003c\/style\u003e\n\n\u003cstyle\u003e\n@media (max-width: 480px) {\n  \/* Starting position: push images further off-screen *\/\n  .serum2-img.left {\n    left: -60%; \/* Start way left *\/\n    transform: translateY(-50%) scale(1);\n  }\n\n  .serum2-img.right {\n    right: -60%; \/* Start way right *\/\n    transform: translateY(-50%) scale(1);\n  }\n\n  \/* When animation starts (stage 1): bring them closer but still wide apart *\/\n  .serum2-upsell-section.animate-stage-1 .serum2-img.left {\n    left: 20%;\n    transform: translateY(-50%) scale(1.2);\n    opacity: 1;\n  }\n\n  .serum2-upsell-section.animate-stage-1 .serum2-img.right {\n    right: 20%;\n    transform: translateY(-50%) scale(1.2);\n    opacity: 1;\n  }\n\n  \/* When merging (stage 2): meet in the center *\/\n  .serum2-upsell-section.animate-stage-2 .serum2-img.left {\n    left: 50%;\n    transform: translate(-50%, -50%) scale(1);\n  }\n\n  .serum2-upsell-section.animate-stage-2 .serum2-img.right {\n    right: 50%;\n    transform: translate(50%, -50%) scale(1);\n  }\n}\n\u003c\/style\u003e\n\n\u003cscript\u003e\n  document.addEventListener('DOMContentLoaded', () =\u003e {\n    const upsellSection = document.querySelector('.serum2-upsell-section');\n    const glitchText    = upsellSection.querySelector('.glitch-text');\n    let stage           = 0;\n    let lastY           = window.pageYOffset;\n    let t1, t2, t3;\n\n    function handleScroll() {\n      const currentY = window.pageYOffset;\n      const scrollingUp = currentY \u003c lastY;\n      lastY = currentY;\n\n      const rect = upsellSection.getBoundingClientRect();\n      const isMobile = window.innerWidth \u003c= 768;\n      const triggerPoint = isMobile ? window.innerHeight * 0.70 : window.innerHeight * 0.80;\n\n      if (stage === 0 \u0026\u0026 rect.top \u003c triggerPoint \u0026\u0026 rect.bottom \u003e 0) {\n        upsellSection.classList.add('animate-stage-1');\n        stage = 1;\n        t1 = setTimeout(() =\u003e {\n          if (stage === 1) {\n            upsellSection.classList.add('animate-stage-2');\n            stage = 2;\n            glitchText.textContent = 'BUNDLE COMBINATION PROCESS INITIATED';\n            t2 = setTimeout(() =\u003e { glitchText.textContent = 'SUCCESSFUL'; }, 2000);\n            t3 = setTimeout(() =\u003e { glitchText.textContent = ''; }, 3000);\n          }\n        }, 2000);\n      } else if (stage \u003e 0 \u0026\u0026 scrollingUp \u0026\u0026 rect.top \u003e= triggerPoint) {\n        clearTimeout(t1);\n        clearTimeout(t2);\n        clearTimeout(t3);\n        upsellSection.classList.remove('animate-stage-2', 'animate-stage-1');\n        glitchText.textContent = '';\n        stage = 0;\n      }\n    }\n\n    window.addEventListener('scroll', handleScroll, { passive: true });\n  });\n\u003c\/script\u003e\n\n\u003c!-- SYSTEM COMPATIBILITY SECTION --\u003e\n\u003cdiv class=\"serum2-inner\" style=\"margin-top: 80px;\"\u003e\n  \u003ch2 class=\"system-header\"\u003e\n  \u003cspan class=\"desktop-text\"\u003e🖥 SYSTEM COMPATIBILITY PROTOCOL 🖥\u003c\/span\u003e\n  \u003cspan class=\"mobile-text\"\u003e🖥 COMPATIBILITY PROTOCOL 🖥\u003c\/span\u003e\n\u003c\/h2\u003e\n  \u003cdiv class=\"requirements-list\"\u003e\n    \u003cdiv\u003eAny DAW\u003c\/div\u003e\n    \u003cdiv\u003eSerum 2\u003c\/div\u003e\n    \u003cdiv\u003eAbleton 12 (project file)\u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cstyle\u003e\n  .system-header {\n    font-family: 'Share Tech Mono', monospace;\n    font-size: 22px;\n    color: #39ff14;\n    text-shadow: 0 0 4px #39ff14;\n    margin-bottom: 16px;\n    text-transform: uppercase;\n    letter-spacing: 1px;\n    text-align: center;\n  }\n\n  .requirements-list {\n    text-align: center;\n    font-family: 'Share Tech Mono', monospace;\n    color: #7CFF5A;\n    font-size: 16px;\n    line-height: 1.8;\n  }\n\n  .requirements-list div {\n    margin: 6px 0;\n  }\n\n.system-header .mobile-text {\n  display: none;\n}\n\n@media (max-width: 768px) {\n  .hook-plus-image {\n    margin-top: 10px !important;\n    margin-bottom: 0px !important;\n  }\n\n  .glitch-button.scroll-button {\n    margin-top: 0px !important;\n  }\n}\n\n\/* This part ONLY applies at 480px and smaller *\/\n@media (max-width: 480px) {\n  .hook-plus-image-optimized {\n    margin-top: -100px !important; \/* Only apply negative margin on small phones *\/\n  }\n\n  .system-header .mobile-text {\n    display: inline;\n    font-size: 16px;\n  }\n\n  .system-header .desktop-text {\n    display: none;\n  }\n\n  .requirements-list {\n   font-size: 12px;\n  }\n\n  .vault-section,\n  .hook-plus-image-optimized .hook-text {\n    padding-left: 0px;\n    padding-right: 0px;\n    box-sizing: border-box;\n    flex-direction: column;\n    align-items: center;\n  }\n}\n\n@media (max-width: 768px) {\n  .bundle-flex-wrapper.top-bundle-section {\n    flex-direction: column;\n    align-items: center;\n    justify-content: center;\n    gap: 30px;\n    padding: 0 12px;\n    margin: 0 auto;\n    max-width: 100%;\n    box-sizing: border-box;\n  }\n\n  .bundle-flex-wrapper.top-bundle-section .hook-text {\n    width: 100%;\n    max-width: 500px;\n    text-align: center;\n  }\n\n  .bundle-flex-wrapper.top-bundle-section .split-combine-section {\n    max-width: 360px;\n    width: 100%;\n    height: auto;\n    margin: 0 auto;\n    aspect-ratio: 16\/9;\n  }\n\n  .plus-symbol {\n    font-size: 40px !important;\n    margin: 8px 0 !important;\n  }\n}@media (max-width: 768px) {\n  .serum2-inner {\n    padding: 0 10px !important;\n    margin: 0 auto !important;\n    max-width: 100% !important;\n    box-sizing: border-box;\n  }\n}\n@media (max-width: 480px) {\n  .bundle-flex-wrapper.top-bundle-section {\n    padding: 0 0px !important;\n    margin: 0 auto !important;\n    width: 100% !important;\n    min-width: 0 !important; \/* ✅ Remove overflow issue *\/\n    box-sizing: border-box !important;\n    justify-content: center !important;\n    flex-direction: column !important;\n    align-items: center !important;\n  }\n\n  .bundle-flex-wrapper.top-bundle-section .split-combine-section {\n    max-width: 280px !important;\n    width: 100% !important;\n    height: auto !important;\n    margin: 20px auto 0 auto !important;\n  }\n\n  .bundle-flex-wrapper.top-bundle-section .plus-symbol {\n    font-size: 60px !important;\n    width: 100% !important;\n    text-align: center !important;\n    margin: -20px auto !important;\n    display: block !important;\n  }\n}\n\n.bundle-heading-wrapper {\n  padding: 0 20px;\n  box-sizing: border-box;\n}\n\n@media (max-width: 480px) {\n  .bundle-heading-wrapper {\n    padding: 0 0px !important; \/* reduce side margins on small screens *\/\n  }\n\n  .bundle-heading-wrapper h2 {\n    font-size: 20px !important; \/* optional: reduce font size a bit *\/\n  }\n}\n\n@media (max-width: 480px) {\n  .top-bundle-section h2 {\n    font-size: 16px !important;\n    line-height: 1;\n    margin-bottom: 12px !important;\n    margin-top: 20px !important;\n  }\n}\n\n@media (max-width: 480px) {\n  .top-bundle-section li {\n    font-size: 15px !important;\n    line-height: 1.6;\n  }\n}\n\n.sample-list-mobile {\n  display: none;\n}\n\n@media (max-width: 768px) {\n  .sample-list-desktop {\n    display: none;\n  }\n  .sample-list-mobile {\n    display: block;\n  }\n}\n@media (max-width: 768px) {\n  .bundle-flex-wrapper.top-bundle-section .split-combine-section {\n    margin-top: -15px !important; \/* was 30px or more *\/\n  }\n\n  .bundle-flex-wrapper.top-bundle-section ul {\n    margin-bottom: 0px !important;\n  }\n}\n\n@media (max-width: 480px) {\n  .whzly-fade-in {\n    flex: 1 1 100%;\n    max-width: 100% !important;\n    padding: 0 10px; \/* optional margin breathing room *\/\n    box-sizing: border-box;\n  }\n\n  .serum2-inner .whzly-trigger-area {\n    overflow-x: hidden; \/* prevent any horizontal scroll *\/\n  }\n}\n\n@media (max-width: 768px) {\n  .bundle-list-desktop {\n    display: none !important;\n  }\n\n  .bundle-list-mobile {\n    display: block !important;\n    padding-left: 0;\n    text-align: left;\n  }\n\n  .bundle-list-mobile li {\n    font-size: 15px;\n    line-height: 1.6;\n    margin-bottom: 6px;\n  }\n}\n\n@media (min-width: 769px) {\n  .bundle-list-mobile {\n    display: none !important;\n  }\n}\n\n@media (max-width: 480px) {\n  .mobile-bundle-list-wrapper {\n    padding: 0 0px;\n    box-sizing: border-box;\n  }\n}\n@media (min-width: 769px) {\n  #videoModal {\n    display: none; \/* hidden by default *\/\n    position: fixed;\n    top: 0;\n    left: 0;\n    width: 100vw;\n    height: 100vh;\n    z-index: 999999;\n    background: rgba(0, 0, 0, 0.92);\n    justify-content: center;\n    align-items: center;\n    padding: 0;\n    margin: 0;\n  }\n\n  #videoModal.active {\n    display: flex; \/* visible when active *\/\n  }\n\n  #videoModal iframe {\n    aspect-ratio: 9 \/ 16;\n    width: 360px;\n    height: auto;\n    max-height: 90vh;\n    border: none;\n    display: block;\n  }\n}\n\nbody.modal-open {\n  overflow: hidden;\n}\n\n\n#videoModal {\n  position: fixed !important;\n  display: none;\n}\n\n#videoModal.active {\n  display: flex;\n}\n\nbody, html {\n  overflow: visible !important;\n}\n#videoModal iframe {\n  aspect-ratio: 9 \/ 16;\n  height: 90vh;\n  width: auto;\n  max-width: 100%;\n  max-height: 100%;\n  display: block;\n  border: none;\n}\n#videoModal {\n  display: none;\n  position: fixed;\n  top: 0;\n  left: 0;\n  width: 100vw;\n  height: 100vh;\n  z-index: 999999;\n  background: rgba(0, 0, 0, 0.92);\n  justify-content: center;\n  align-items: center;\n}\n#videoModal.active {\n  display: flex;\n}\n\u003c\/style\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e","brand":"⛓👽 EDM TEMPLATES","offers":[{"title":"Standaardtitel","offer_id":51924348174667,"sku":"","price":39.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/Serum_2_Reloaded_Producer_Bundle.webp?v=1747957911","url":"https:\/\/edmtemplates.net\/nl\/products\/whzly-x-edmt-serum-2-reloaded-producer-bundle","provider":"⛓👽 EDM TEMPLATES","version":"1.0","type":"link"}