{"product_id":"whzly-x-edmt-serum-2-reloaded-sample-preset-pack","title":"WHZLY X EDMT | SERUM 2 RELOADED: SAMPLE\/PRESET PACK","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.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.06);\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-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: 20px 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: 40px 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.glitch-button.scroll-button {\n  margin-top: 4px !important; \/* Bring button closer *\/\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\u003c\/style\u003e\n\n\u003cstyle\u003e\n@media (max-width: 768px) {\n  .weapon-tagline {\n    margin-bottom: 8px !important;\n  }\n}\n\u003c\/style\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;\"\u003eThis isn't some rushed Serum 2 Essentials pack - it’s a weapon for producers who don’t play by the rules.\u003c\/p\u003e\n\n\u003c!-- S2R DEMO TRACK --\u003e\n\u003cdiv class=\"serum2-inner\" style=\"text-align: center; margin: 5px 0;\"\u003e\n  \u003cdiv class=\"video-glow-wrapper-static\" style=\"max-width: 800px; margin: 0 auto; border-radius: 12px; overflow: hidden; box-shadow: 0 0 20px #39ff14;\"\u003e\n    \u003cdiv class=\"whzly-video-inner\"\u003e\n      \u003ciframe src=\"https:\/\/www.youtube.com\/embed\/jKkbL6y4dwk?si=XLuQQb2F9p2WW2bE?rel=0\u0026amp;modestbranding=1\u0026amp;showinfo=0\u0026amp;autohide=1\u0026amp;controls=1\" style=\"width: 100%; height: 50vw; max-height: 450px; border: none;\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen\u003e\n      \u003c\/iframe\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\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\u003c\/style\u003e\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 This Pack Hits Different\u003c\/h2\u003e\n\u003cp class=\"benchmark-tagline\"\u003e\u003cstrong\u003e\u003cspan class=\"desktop-only-text\"\u003eThis isn't just a preset pack - it's the new benchmark for Serum 2\u003c\/span\u003e\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n  \u003cli\u003eBuilt for Serum 2 - 100% native and future-focused\u003c\/li\u003e\n  \u003cli\u003eOne-note triggered presets - hold a key to unleash mayhem\u003c\/li\u003e\n  \u003cli\u003eAll 8 macros programmed - create B-sections \u0026amp; variations instantly\u003c\/li\u003e\n  \u003cli\u003eIncludes Ableton project, FX chains, and over 500 samples\u003c\/li\u003e\n  \u003cli\u003eSample + Preset hybrid - designed to work \u003cem\u003etogether\u003c\/em\u003e\n\u003c\/li\u003e\n  \u003cli\u003eHand-built by pro sound designer - WHZLY\u003c\/li\u003e\n  \u003cli\u003eOptimized for modern bass music producers\u003c\/li\u003e\n\u003c\/ul\u003e\n  \u003c\/div\u003e\n\n\u003csection class=\"split-combine-section split-serum\"\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=\"Serum2 Preset\"\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=\"Serum2 Preset\"\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\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👾 What's Inside the Vault\u003c\/h2\u003e\n      \u003c\/div\u003e\n\u003cp class=\"benchmark-tagline\"\u003e\u003cstrong\u003e\u003cspan class=\"desktop-only-text\"\u003e620+ professionally engineered Serum 2 presets and samples\u003c\/span\u003e\u003c\/strong\u003e\u003c\/p\u003e\n      \u003cdiv class=\"vault-scroll-area\"\u003e\n        \u003cul class=\"whzly-list\"\u003e\n          \u003cli class=\"expandable-wrapper\"\u003e\n            \u003cdiv class=\"expandable-trigger\" data-target=\"#presets-sublist\"\u003e\n              \u003cspan class=\"arrow-icon\"\u003e\u003c\/span\u003e\n              \u003cstrong\u003e120 Brand New Serum 2 Presets\u003c\/strong\u003e\n            \u003c\/div\u003e\n            \u003cdiv class=\"expandable-content\" id=\"presets-sublist\"\u003e\n      \u003cul\u003e\n        \u003cli\u003e75 Massive Bass Presets\n          \u003cul\u003e\n            \u003cli\u003e33 One Note Retriggers\u003c\/li\u003e\n            \u003cli\u003e27 One Shots\u003c\/li\u003e\n            \u003cli\u003e15 Glitch\u003c\/li\u003e\n          \u003c\/ul\u003e\n        \u003c\/li\u003e\n        \u003cli\u003e15 Intro Presets\n          \u003cul\u003e\n            \u003cli\u003ePlucks\u003c\/li\u003e\n            \u003cli\u003eLeads\u003c\/li\u003e\n            \u003cli\u003eKeys\u003c\/li\u003e\n            \u003cli\u003eBasses\u003c\/li\u003e\n            \u003cli\u003ePads\u003c\/li\u003e\n            \u003cli\u003eFull Melodies\u003c\/li\u003e\n          \u003c\/ul\u003e\n        \u003c\/li\u003e\n        \u003cli\u003e11 Drop FX Presets\n          \u003cul\u003e\n            \u003cli\u003eHype Sounds\u003c\/li\u003e\n            \u003cli\u003eBass Shots\u003c\/li\u003e\n            \u003cli\u003eVox Layers\u003c\/li\u003e\n          \u003c\/ul\u003e\n        \u003c\/li\u003e\n        \u003cli\u003e10 Cinematic Presets\n          \u003cul\u003e\n            \u003cli\u003eMassive Atmospheres\u003c\/li\u003e\n          \u003c\/ul\u003e\n            \u003c\/li\u003e\n        \u003cli\u003e9 Bonus Hacker Presets\n          \u003cul\u003e\n            \u003cli\u003e2 Impact Makers\u003c\/li\u003e\n            \u003cli\u003e1 Bass Starter Preset\u003c\/li\u003e\n            \u003cli\u003e1 \"Perfect Sub\" Preset\u003c\/li\u003e\n            \u003cli\u003e5 Serum2FX Presets\u003c\/li\u003e\n          \u003c\/ul\u003e\n            \u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n          \u003c\/li\u003e\n\n          \u003cli class=\"expandable-wrapper\"\u003e\n            \u003cdiv class=\"expandable-trigger\" data-target=\"#samples-sublist\"\u003e\n              \u003cspan class=\"arrow-icon\"\u003e\u003c\/span\u003e\n              \u003cstrong\u003e500+ Professionally Engineered Samples\u003c\/strong\u003e\n            \u003c\/div\u003e\n\u003cdiv class=\"expandable-content\" id=\"samples-sublist\"\u003e\n  \u003cul\u003e\n    \u003cli\u003eBass\n      \u003cul\u003e\n        \u003cli\u003e73 Bass Loops\u003c\/li\u003e\n        \u003cli\u003e101 Bass One Shots\u003c\/li\u003e\n        \u003cli\u003e12 Hacker Subs\u003c\/li\u003e\n      \u003c\/ul\u003e\n    \u003c\/li\u003e\n    \u003cli\u003eMelodic\n      \u003cul\u003e\n        \u003cli\u003e19 Heavy Cinematic Atmo Loops\u003c\/li\u003e\n        \u003cli\u003e10 Melodic Intro Loops\u003c\/li\u003e\n        \u003cli\u003e6 Tonal Pad Atmos\u003c\/li\u003e\n      \u003c\/ul\u003e\n    \u003c\/li\u003e\n    \u003cli\u003eDrums\n      \u003cul\u003e\n        \u003cli\u003e20 Drum Top Loops\u003c\/li\u003e\n        \u003cli\u003e18 Drum One Shots\u003c\/li\u003e\n        \u003cli\u003e21 Drum Fills\u003c\/li\u003e\n      \u003c\/ul\u003e\n    \u003c\/li\u003e\n    \u003cli\u003eFX\n      \u003cul\u003e\n        \u003cli\u003e11 Drop FX Loops\u003c\/li\u003e\n        \u003cli\u003e27 Special FX\u003c\/li\u003e\n      \u003c\/ul\u003e\n    \u003c\/li\u003e\n    \u003cli\u003eGlitch\n      \u003cul\u003e\n        \u003cli\u003e52 Glitch Hits\u003c\/li\u003e\n        \u003cli\u003e70 Glitchy Texture \u0026amp; Atmo Loops\u003c\/li\u003e\n      \u003c\/ul\u003e\n    \u003c\/li\u003e\n    \u003cli\u003eVocals\n      \u003cul\u003e\n        \u003cli\u003e61 Vocal Phrases\u003c\/li\u003e\n      \u003c\/ul\u003e\n    \u003c\/li\u003e\n  \u003c\/ul\u003e\n\u003c\/div\u003e\n\n          \u003c\/li\u003e\n\n           \u003cli\u003eFull Ableton project - reverse engineer WHZLY's drops\u003c\/li\u003e\n          \u003cli\u003eCustom FX Presets \u0026amp; Advanced Ableton Racks\u003c\/li\u003e\n          \u003cli\u003eSerum 2 Hacker Course (only in the Bundle)\u003c\/li\u003e\n        \u003c\/ul\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003c!-- Audio Player Section --\u003e\n\u003cdiv class=\"jukebox-section\" aria-hidden=\"true\"\u003e\n\u003cdiv class=\"preview-player-wrapper\"\u003e\n  \u003ch3 class=\"audio-preview-heading\"\u003e🎧 PREVIEW THE PACK! 🎧\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\"\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\u003cdiv class=\"hook-plus-image hook-plus-image-optimized\"\u003e\n  \u003cdiv class=\"hook-text\"\u003e\n   \u003ch2 style=\"margin-top: 35px; margin-bottom: 15px;\"\u003e🎹 Built For Modern Bass Producers\u003c\/h2\u003e\n    \u003cul\u003e\n      \u003cli\u003eDesigned to work with Serum 2's clip previews\u003c\/li\u003e\n      \u003cli\u003eOne-note triggered presets\u003c\/li\u003e\n      \u003cli\u003eAll patches tuned to the same octave\u003c\/li\u003e\n      \u003cli\u003eMacros engineered with purpose\u003c\/li\u003e\n      \u003cli\u003eCutting-edge sounds built for the future of bass music\u003c\/li\u003e\n      \u003cli\u003eNo post-processing needed\u003c\/li\u003e\n      \u003cli\u003eInstant download \u0026amp; 100% royalty-free\u003c\/li\u003e\n    \u003c\/ul\u003e\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\/WHZLY_studio.jpg?v=1746830700\" alt=\"WHZLY Studio\"\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\/WHZLY_studio.jpg?v=1746830700\" alt=\"WHZLY Studio\"\u003e\n    \u003c\/div\u003e\n    \u003cimg class=\"sr-only\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/WHZLY_studio.jpg?v=1746830700\" alt=\"WHZLY Studio\"\u003e\n  \u003c\/section\u003e\n\u003c\/div\u003e\n\n\n  \u003c\/div\u003e\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=\"desktop-vault-text\"\u003e\n    \u003cstrong\u003eThis is sound design with intent. With danger. With purpose.\u003cbr\u003eForget generic preset packs, this is a full system override\u003c\/strong\u003e\n  \u003c\/p\u003e\n  \u003cp class=\"mobile-vault-text\"\u003e\n    \u003cstrong\u003eForget generic preset packs\u003cbr\u003eThis is a full system override\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    \/\/ Optional reset if needed when scrolling to top\n    if (window.pageYOffset === 0) {\n      section.classList.remove('in-view', 'animation-complete');\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\" aria-hidden=\"true\"\u003e\u003c\/div\u003e\n\n\u003c!-- TRIGGER BUTTON --\u003e\n\u003cdiv style=\"text-align:center;\"\u003e\n  \u003cbutton class=\"glitch-button scroll-button\" onclick=\"triggerHackEffect()\"\u003eDownload Source Code\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!-- WHZLY PRESETS PREVIEW --\u003e\n\u003cdiv class=\"serum2-inner whzly-trigger-area\" style=\"text-align: center; margin: 80px 0;\"\u003e\n  \u003ch2 class=\"whzly-heading\" style=\"margin-top: 35px; margin-bottom: 20px;\"\u003e👾 WHZLY Preset Demo\u003c\/h2\u003e\n\n  \u003cp class=\"benchmark-tagline whzly-tagline\"\u003e\n    \u003cstrong\u003e\n      \u003cspan class=\"first-line\"\u003eCheck out the raw power of the presets - no post-processing needed.\u003c\/span\u003e\u003cbr\u003e\n      \u003cspan class=\"second-line desktop-only-text\"\u003eWe didn't rush this out after Serum 2's launch - we took the time to craft something worth using.\u003c\/span\u003e\n    \u003c\/strong\u003e\n  \u003c\/p\u003e\n\n  \u003c!-- Glow wrapper --\u003e\n\u003cdiv class=\"video-glow-wrapper\" id=\"whzlyGlowWrapper\"\u003e\n  \u003cdiv class=\"whzly-video-inner\"\u003e\n    \u003ciframe src=\"https:\/\/www.youtube.com\/embed\/8Ofe4bPodtE?rel=0\u0026amp;modestbranding=1\u0026amp;showinfo=0\u0026amp;autohide=1\u0026amp;controls=1\" style=\"width: 100%; height: 50vw; max-height: 500px; border: none;\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen\u003e\n    \u003c\/iframe\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n  \u003c!-- Fullscreen Tip --\u003e\n  \u003cdiv class=\"fullscreen-tip-wrapper\"\u003e\n    \u003cp class=\"mobile-fullscreen-tip\" id=\"fullscreenTip\"\u003e\u003c\/p\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\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); \/\/ Typing speed\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 ---\nconst glowWrapper = document.querySelector('#whzlyGlowWrapper');\nconst heading = document.querySelector('.whzly-heading');\nconst tagline = document.querySelector('.whzly-tagline');\nconst triggerArea = document.querySelector('.whzly-trigger-area');\n\nlet lastScrollY = window.scrollY;\n\nconst observer = new IntersectionObserver(entries =\u003e {\n  entries.forEach(entry =\u003e {\n    const scrollingUp = window.scrollY \u003c lastScrollY;\n    lastScrollY = window.scrollY;\n\n    if (entry.isIntersecting) {\n      heading.classList.add('active');\n      tagline.classList.add('active');\n      glowWrapper.classList.add('active');\n    } else if (scrollingUp) {\n      heading.classList.remove('active');\n      tagline.classList.remove('active');\n      glowWrapper.classList.remove('active');\n    }\n  });\n}, { threshold: 0.5 });\n\nif (triggerArea) {\n  observer.observe(triggerArea);\n}\n\n});\n\u003c\/script\u003e\n\n\n\n\n\u003c!-- UPSALE ANIMATION SECTION --\u003e\n\u003cdiv class=\"serum2-upsell-section\"\u003e\n\u003cdiv class=\"serum2-upsell-container\"\u003e\n\u003cimg alt=\"Serum 2 Reloaded: Sample-Preset Pack\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/sample_preset_pack.webp?v=1747135602\" class=\"serum2-img left\"\u003e \u003cimg alt=\"Serum 2 Reloaded: Production Course\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/production_course.webp?v=1747135602\" class=\"serum2-img right\"\u003e \u003cimg alt=\"Serum 2 Reloaded: Producer Bundle\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/producer_bundle.webp?v=1747135601\" class=\"serum2-img merged\"\u003e\n\u003cdiv class=\"glitch-explosion glitch-r\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"glitch-explosion glitch-g\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"glitch-explosion glitch-b\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"glitch-text\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"glitch-particles\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"serum2-upsell-text\"\u003e\n\u003cp\u003e\u003cstrong\u003eGo full rogue with the PRODUCER BUNDLE\u003c\/strong\u003e\u003c\/p\u003e\n\u003ca class=\"glitch-button\" href=\"https:\/\/edmtemplates.net\/collections\/bundles\/products\/whzly-x-edmt-serum-2-reloaded-producer-bundle\"\u003eGet The Full Bundle\u003c\/a\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cstyle\u003e\n  .serum2-upsell-section {\n    padding: 60px 20px;\n    background: transparent;\n    text-align: center;\n    font-family: 'Share Tech Mono', monospace;\n    color: #7CFF5A;\n    position: relative;\n    overflow: hidden;\n  }\n\n  .serum2-upsell-container {\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    position: relative;\n    height: 300px;\n  }\n\n  .serum2-img {\n    max-height: 220px;\n    width: auto;\n    position: absolute;\n    top: 50%;\n    transform: translateY(-50%) scale(1);\n    transition: all 2s ease-in-out;\n    opacity: 0;\n    z-index: 1;\n  }\n\n  .serum2-img.left {\n    left: 10%;\n  }\n\n  .serum2-img.right {\n    right: 10%;\n  }\n\n  .serum2-img.merged {\n    left: 50%;\n    transform: translate(-50%, -50%) scale(1.2);\n    z-index: 2;\n  }\n\n  .serum2-upsell-section.animate-stage-1 .serum2-img.left,\n  .serum2-upsell-section.animate-stage-1 .serum2-img.right {\n    opacity: 1;\n    transform: translateY(-50%) scale(1.3);\n  }\n\n  .serum2-upsell-section.animate-stage-2 .serum2-img.left {\n    left: 35%;\n    transform: translateY(-50%) scale(1);\n  }\n\n  .serum2-upsell-section.animate-stage-2 .serum2-img.right {\n    right: 35%;\n    transform: translateY(-50%) scale(1);\n  }\n\n  .serum2-upsell-section.animate-stage-2 .serum2-img.merged {\n    opacity: 1;\n    animation: pulse-glow 1.4s infinite alternate, img-glitch-insane 0.7s steps(2, end) 2;\n    filter: drop-shadow(0 0 16px #39ff14);\n  }\n\n  @keyframes img-glitch-insane {\n    0% {\n      filter: drop-shadow(0 0 16px #39ff14) drop-shadow(-2px 0 #ff005a) drop-shadow(2px 0 #00fff7);\n    }\n\n    20% {\n      filter: drop-shadow(0 0 24px #fff600) drop-shadow(-4px 0 #ff005a) drop-shadow(4px 0 #00fff7);\n    }\n\n    40% {\n      filter: drop-shadow(0 0 8px #39ff14) drop-shadow(2px 0 #ff005a) drop-shadow(-2px 0 #00fff7);\n    }\n\n    60% {\n      filter: drop-shadow(0 0 32px #fff600) drop-shadow(-3px 0 #ff005a) drop-shadow(3px 0 #00fff7);\n    }\n\n    80% {\n      filter: drop-shadow(0 0 16px #39ff14) drop-shadow(0px 0 #ff005a) drop-shadow(0px 0 #00fff7);\n    }\n\n    100% {\n      filter: drop-shadow(0 0 16px #39ff14) drop-shadow(-2px 0 #ff005a) drop-shadow(2px 0 #00fff7);\n    }\n  }\n\n  .glitch-explosion,\n  .glitch-explosion.glitch-r,\n  .glitch-explosion.glitch-g,\n  .glitch-explosion.glitch-b {\n    position: absolute;\n    top: 50%;\n    left: 50%;\n    width: 300px;\n    height: 300px;\n    border-radius: 50%;\n    pointer-events: none;\n    opacity: 0.3;\n    z-index: 3;\n    background: radial-gradient(circle, #39ff14, transparent 70%);\n    transform: translate(-50%, -50%) scale(0);\n    mix-blend-mode: screen;\n  }\n\n  .glitch-explosion.glitch-r {\n    background: radial-gradient(circle, #ff005a, transparent 70%);\n    z-index: 4;\n  }\n\n  .glitch-explosion.glitch-g {\n    background: radial-gradient(circle, #00fff7, transparent 70%);\n    z-index: 5;\n  }\n\n  .glitch-explosion.glitch-b {\n    background: radial-gradient(circle, #fff600, transparent 70%);\n    z-index: 6;\n  }\n\n  .serum2-upsell-section.animate-stage-2 .glitch-explosion {\n    animation: glitch-burst-insane 0.8s cubic-bezier(.68, -0.55, .27, 1.55) forwards;\n  }\n\n  .serum2-upsell-section.animate-stage-2 .glitch-explosion.glitch-r {\n    animation: glitch-burst-insane-r 0.7s cubic-bezier(.68, -0.55, .27, 1.55) forwards;\n  }\n\n  .serum2-upsell-section.animate-stage-2 .glitch-explosion.glitch-g {\n    animation: glitch-burst-insane-g 0.9s cubic-bezier(.68, -0.55, .27, 1.55) forwards;\n  }\n\n  .serum2-upsell-section.animate-stage-2 .glitch-explosion.glitch-b {\n    animation: glitch-burst-insane-b 0.6s cubic-bezier(.68, -0.55, .27, 1.55) forwards;\n  }\n\n  @keyframes glitch-burst-insane {\n    0% {\n      transform: translate(-50%, -50%) scale(0) rotate(0deg);\n      opacity: 0.3;\n    }\n\n    20% {\n      transform: translate(-50%, -50%) scale(1.2) rotate(10deg);\n      opacity: 1;\n    }\n\n    40% {\n      transform: translate(-50%, -50%) scale(1.4) rotate(-8deg);\n      opacity: 0.8;\n    }\n\n    60% {\n      transform: translate(-50%, -50%) scale(1.1) rotate(12deg);\n      opacity: 1;\n    }\n\n    80% {\n      transform: translate(-50%, -50%) scale(1.3) rotate(-6deg);\n      opacity: 0.7;\n    }\n\n    100% {\n      transform: translate(-50%, -50%) scale(0) rotate(0deg);\n      opacity: 0;\n    }\n  }\n\n  @keyframes glitch-burst-insane-r {\n    0% {\n      transform: translate(-50%, -50%) scale(0) rotate(0deg);\n      opacity: 0.3;\n    }\n\n    30% {\n      transform: translate(-48%, -52%) scale(1.3) rotate(20deg);\n      opacity: 1;\n    }\n\n    60% {\n      transform: translate(-52%, -48%) scale(1.5) rotate(-15deg);\n      opacity: 0.7;\n    }\n\n    100% {\n      transform: translate(-50%, -50%) scale(0) rotate(0deg);\n      opacity: 0;\n    }\n  }\n\n  @keyframes glitch-burst-insane-g {\n    0% {\n      transform: translate(-50%, -50%) scale(0) rotate(0deg);\n      opacity: 0.3;\n    }\n\n    25% {\n      transform: translate(-53%, -47%) scale(1.4) rotate(-18deg);\n      opacity: 1;\n    }\n\n    55% {\n      transform: translate(-47%, -53%) scale(1.2) rotate(15deg);\n      opacity: 0.8;\n    }\n\n    100% {\n      transform: translate(-50%, -50%) scale(0) rotate(0deg);\n      opacity: 0;\n    }\n  }\n\n  @keyframes glitch-burst-insane-b {\n    0% {\n      transform: translate(-50%, -50%) scale(0) rotate(0deg);\n      opacity: 0.3;\n    }\n\n    35% {\n      transform: translate(-51%, -49%) scale(1.5) rotate(25deg);\n      opacity: 1;\n    }\n\n    70% {\n      transform: translate(-49%, -51%) scale(1.1) rotate(-20deg);\n      opacity: 0.6;\n    }\n\n    100% {\n      transform: translate(-50%, -50%) scale(0) rotate(0deg);\n      opacity: 0;\n    }\n  }\n\n  .serum2-upsell-section.animate-stage-2 .glitch-explosion {\n    animation: glitch-burst 0.8s ease-out forwards;\n  }\n\n  .glitch-text {\n    position: absolute;\n    top: -40px;\n    left: 50%;\n    transform: \ntranslateX(-50%);\n    font-size: 22px;\n    color: #39ff14;\n    font-family: 'Share Tech Mono', monospace;\n    opacity: 0;\n    z-index: 10;\n    \/* Simplified green glow only *\/\n    text-shadow:\n      0 0 6px #39ff14,\n      0 0 12px #39ff14,\n      0 0 18px #39ff14;\n    pointer-events: none;\n  }\n@media (max-width: 480px) {\n  .serum2-upsell-container {\n    height: 450px;\n    margin-bottom: -60px;\n  }\n\n  .glitch-text {\n    top: -20px; \/* Adjust this value to move the text higher *\/\n  }\n}\n@media (max-width: 480px) {\n  .serum2-upsell-text {\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    justify-content: center;\n    text-align: center;\n    width: 100%;\n    max-width: 380px;\n    margin: 0 auto;\n    padding: 0 10px;\n    box-sizing: border-box;\n    margin-top: -10px !important;\n  }\n\n  .serum2-upsell-text p {\n    font-size: 15px;\n    line-height: 1.6;\n  }\n\n  .serum2-upsell-section .glitch-button {\n    width: 100%;\n    max-width: 240px;\n    text-align: center;\n  }\n}\n\n  .serum2-upsell-section.animate-stage-2 .glitch-text {\n    animation: text-glitch-insane 1.2s steps(1, end) 0s 1, show-text 0s 0.8s forwards, fade-text 0.5s ease-in 2.8s forwards;\n  }\n\n  @keyframes text-glitch-insane {\n    0% {\n      opacity: 1;\n      transform: translateX(-50%) scale(1) skewX(0deg);\n      filter: drop-shadow(0 0 6px #39ff14);\n    }\n\n    10% {\n      opacity: 1;\n      transform: translateX(-52%) scale(1.05) skewX(5deg);\n      filter: drop-shadow(0 0 10px #39ff14);\n    }\n\n    20% {\n      opacity: 1;\n      transform: translateX(-48%) scale(0.95) skewX(-5deg);\n      filter: drop-shadow(0 0 8px #39ff14);\n    }\n\n    30% {\n      opacity: 1;\n      transform: translateX(-50%) scale(1.1) skewX(7deg);\n      filter: drop-shadow(0 0 12px #39ff14);\n    }\n\n    40% {\n      opacity: 1;\n      transform: translateX(-53%) scale(1) skewX(-7deg);\n      filter: drop-shadow(0 0 10px #39ff14);\n    }\n\n    50% {\n      opacity: 1;\n      transform: translateX(-47%) scale(1.05) skewX(4deg);\n      filter: drop-shadow(0 0 8px #39ff14);\n    }\n\n    60% {\n      opacity: 1;\n      transform: translateX(-50%) scale(1) skewX(0deg);\n      filter: drop-shadow(0 0 6px #39ff14);\n    }\n\n    100% {\n      opacity: 1;\n    }\n  }\n\n  .serum2-upsell-section.animate-stage-2 .glitch-text {\n    animation: text-glitch 0.08s steps(1, end) 0s 10, show-text 0s 0.8s forwards, fade-text 0.5s ease-in 2.8s forwards;\n  }\n\n  .glitch-particles {\n    position: absolute;\n    top: 50%;\n    left: 50%;\n    width: 100%;\n    height: 100%;\n    pointer-events: none;\n    z-index: 4;\n    background: url('https:\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/particles-glitch.gif?v=1744679999') center center \/ cover no-repeat;\n    opacity: 0;\n  }\n\n  .serum2-upsell-section.animate-stage-2 .glitch-particles {\n    animation: show-particles 0.8s ease-in forwards;\n  }\n\n  @keyframes show-particles {\n    from {\n      opacity: 0;\n    }\n\n    to {\n      opacity: 0.35;\n    }\n  }\n\n  @keyframes pulse-glow {\n    from {\n      filter: drop-shadow(0 0 8px #39ff14);\n    }\n\n    to {\n      filter: drop-shadow(0 0 16px #39ff14);\n    }\n  }\n\n  @keyframes glitch-burst {\n    0% {\n      transform: translate(-50%, -50%) scale(0);\n      opacity: 0.3;\n    }\n\n    50% {\n      transform: translate(-50%, -50%) scale(1.2);\n      opacity: 1;\n    }\n\n    100% {\n      transform: translate(-50%, -50%) scale(0);\n      opacity: 0;\n    }\n  }\n\n  @keyframes glitchLeft {\n    0% {\n      transform: translateY(-50%) scale(1) translateX(0);\n    }\n\n    50% {\n      transform: translateY(-50%) scale(1) translateX(-5px);\n    }\n\n    100% {\n      transform: translateY(-50%) scale(1) translateX(0);\n    }\n  }\n\n  @keyframes glitchRight {\n    0% {\n      transform: translateY(-50%) scale(1) translateX(0);\n    }\n\n    50% {\n      transform: translateY(-50%) scale(1) translateX(5px);\n    }\n\n    100% {\n      transform: translateY(-50%) scale(1) translateX(0);\n    }\n  }\n\n  @keyframes text-glitch {\n    0%,\n    100% {\n      opacity: 1;\n      transform: translateX(-50%) scale(1);\n    }\n\n    50% {\n      opacity: 0.6;\n      transform: translateX(-49%) scale(1.05);\n    }\n  }\n\n  @keyframes show-text {\n    to {\n      opacity: 1;\n    }\n  }\n\n  @keyframes fade-text {\n    to {\n      opacity: 0;\n    }\n  }\n\n  .serum2-upsell-text {\n    margin-top: 30px;\n    font-size: 16px;\n  }\n\n  .serum2-upsell-text p {\n    margin-bottom: 20px;\n    color: #7CFF5A;\n  }\n\n.serum2-upsell-section .glitch-button {\n  display: inline-block;\n  background-color: #39ff14;\n  color: black !important;\n  padding: 12px 24px;\n  font-size: 16px;\n  border: none;\n  border-radius: 5px;\n  font-weight: bold;\n  font-family: 'Share Tech Mono', monospace;\n  box-shadow: 0 0 10px #39ff14;\n  text-decoration: none;\n  transition: transform 0.2s ease-in-out, box-shadow 0.2s ease-in-out;\n}\n\n.serum2-upsell-section .glitch-button:hover {\n  background: black;\n  color: #39ff14 !important;\n  box-shadow: 0 0 18px #39ff14;\n  transform: scale(1.04);\n}\n\n.serum2-upsell-section .glitch-button {\n  text-decoration: none !important;\n}\n\n\n  @media (max-width: 480px) {\n\n    .serum2-upsell-section.animate-stage-2 .serum2-img.left,\n    .serum2-upsell-section.animate-stage-2 .serum2-img.right {\n      animation: fadeOutDelayed 1s ease forwards;\n      animation-delay: 1.5s;\n      \/* start fading after glitch wiggle *\/\n    }\n\n    \/* Reduce green glow size on merged image *\/\n    .serum2-upsell-section.animate-stage-2 .serum2-img.merged {\n      filter: drop-shadow(0 0 8px #39ff14);\n      animation: pulse-glow-smaller 1.4s infinite alternate, img-glitch-insane 0.7s steps(2, end) 2;\n    }\n\n    \/* Optionally extend margins to prevent clipping *\/\n    .serum2-upsell-section {\n      margin-left: -30px;\n      margin-right: -30px;\n      padding: 30px 0px !important;\n    }\n  }\n\n  \/* Fade out animation *\/\n  @keyframes fadeOutDelayed {\n    to {\n      opacity: 0;\n      pointer-events: none;\n    }\n  }\n\n  \/* Smaller pulse glow animation *\/\n  @keyframes pulse-glow-smaller {\n    from {\n      filter: drop-shadow(0 0 4px #39ff14);\n    }\n\n    to {\n      filter: drop-shadow(0 0 8px #39ff14);\n    }\n  }\n\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@media (max-width: 480px) {\n  .whzly-fade-in {\n    max-width: 100% !important;\n    padding: 0 10px;\n    box-sizing: border-box;\n    overflow-x: hidden;\n  }\n\n  .whzly-fade-in iframe {\n    width: 100% !important;\n    max-width: 100% !important;\n    box-sizing: border-box;\n  }\n\n  .serum2-inner,\n  .serum2-inner .whzly-trigger-area,\n  .video-glow-wrapper {\n    overflow-x: hidden !important;\n    max-width: 100vw !important;\n  }\n}\n\u003c\/style\u003e","brand":"⛓👽 EDM TEMPLATES","offers":[{"title":"Standardtitel","offer_id":51635343032651,"sku":"","price":29.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/2426\/0385\/files\/Serum2Reloaded.webp?v=1747137130","url":"https:\/\/edmtemplates.net\/sv\/products\/whzly-x-edmt-serum-2-reloaded-sample-preset-pack","provider":"⛓👽 EDM TEMPLATES","version":"1.0","type":"link"}