<!DOCTYPE html>
<html lang="en-US">
<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
	<title>BASSNECTAR &#8211; Explore the latest music, events, photos and updates from the Bassnectar project. Unlock over 25 years of bass in the Bassnectar Vaults.</title>
<meta name='robots' content='max-image-preview:large' />
    <script data-cfasync="false" id="bn-cache-auth-fix">
    (function(){
        if(window.location.search.indexOf("_bn_auth=")!==-1) return;
        var hasCookie=document.cookie.indexOf("bn_logged_in")!==-1;
        (function ck(){
            if(!document.body) return requestAnimationFrame(ck);
            var pageLoggedIn=document.body.classList.contains("logged-in");
            if(hasCookie!==pageLoggedIn){
                var u=window.location.href.replace(/[?&]_bn_auth=\d+/,"");
                var s=u.indexOf("?")!==-1?"&":"?";
                window.location.replace(u+s+"_bn_auth="+Date.now());
            }
        })();
    })();
    </script>
        <style id="bn-header-css">
    /* ========================================
       BN Header — Veeps-inspired
       ======================================== */

    /* Holo image fallback — overridden per-skin via bn_build_skin_vars */
    :root {
        --bn-holo-image: url("https://bassnectar.net/wp-content/themes/sonaar-child/assets/tiny-holo.jpg");
    }

    .bn-site-header,
    .bn-site-header *,
    .bn-slide-menu,
    .bn-slide-menu * {
        font-family: "Helvetica", Sans-serif;
        box-sizing: border-box;
    }

    .bn-site-header {
        width: 100%;
        z-index: 9999;
        position: relative;
        isolation: isolate;
        pointer-events: none; /* let clicks pass through the gradient shadow overflow */
    }

    /* Mobile: ensure header renders ABOVE the WP admin bar (z-index: 99999) */
    @media screen and (max-width: 782px) {
        .admin-bar .bn-site-header {
            z-index: 100000;
        }
    }

    /* ========================================
       Dynamic Skin Styles — generated from admin settings
       ======================================== */
    .bn-site-header.bn-style-transparent::before {
    content: '';
    position: absolute;
    inset: 0;
    background: rgba(10,10,10,0.5);
    -webkit-backdrop-filter: blur(20px) saturate(180%);
    backdrop-filter: blur(20px) saturate(180%);
    z-index: -2;
}
.bn-site-header.bn-style-transparent::after {
    content: '';
    position: absolute;
    inset: 0;
    border-bottom: 1px solid rgba(255,255,255,0.08);
    pointer-events: none;
    z-index: -1;
}
.bn-site-header.bn-style-transparent, .bn-site-header.bn-style-transparent * { color: #ffffff; }
.bn-site-header.bn-style-dark {
    background: #0a0a0a;
    border-bottom: 1px solid #ffffff;
}
.bn-site-header.bn-style-dark, .bn-site-header.bn-style-dark * { color: #ffffff; }
.bn-site-header.bn-style-liquid_glass .bn-glass-container {
    position: absolute;
    inset: 0;
    z-index: 0;
    overflow: hidden;
    pointer-events: none;
}
.bn-site-header.bn-style-liquid_glass .bn-glass-filter {
    position: absolute;
    inset: -30px -50px;
    width: calc(100% + 100px);
    height: calc(100% + 60px);
    background: rgba(82,82,82,0.55);
    -webkit-backdrop-filter: blur(3px) saturate(1.2) brightness(0.9);
    backdrop-filter: blur(3px) saturate(1.2) brightness(0.9);
    filter: url("#bn-liquid-glass-filter") saturate(1.2) brightness(1.2);
}
.bn-site-header.bn-style-liquid_glass .bn-glass-overlay {
    position: absolute;
    inset: 0;
    background: rgba(82,82,82,0.35);
    box-shadow: inset -2px 16px 50px 0px rgba(49, 49, 49, 0.45), inset 5px 15px 20px 0px rgba(3, 3, 3, 0.33);
}
.bn-site-header.bn-style-liquid_glass::before { content: none !important; display: none !important; }
.bn-site-header.bn-style-liquid_glass .bn-glass-specular {
    position: absolute;
    inset: 0;
    border-bottom: 1px solid rgba(255,255,255,0.12);
    border-top: 1px solid rgba(255,255,255,0.08);
    box-shadow: inset 0 1px 0 0 rgba(255,255,255,0.07), inset 0 -1px 0 0 rgba(255,255,255,0.03), 0 1px 3px 0 rgba(0,0,0,0.15);
    pointer-events: none;
}
.bn-site-header.bn-style-custom-gold .bn-glass-container {
    position: absolute;
    inset: 0;
    z-index: 0;
    overflow: hidden;
    pointer-events: none;
}
.bn-site-header.bn-style-custom-gold .bn-glass-filter {
    position: absolute;
    inset: -30px -50px;
    width: calc(100% + 100px);
    height: calc(100% + 60px);
    background: rgba(64,64,64,0.55);
    -webkit-backdrop-filter: blur(20px) saturate(1.2) brightness(0.9);
    backdrop-filter: blur(20px) saturate(1.2) brightness(0.9);
    filter: url("#bn-liquid-glass-filter") saturate(1.2) brightness(1.2);
}
.bn-site-header.bn-style-custom-gold .bn-glass-overlay {
    position: absolute;
    inset: 0;
    background: rgba(64,64,64,0.35);
    box-shadow: inset -2px 16px 50px 0px rgba(49, 49, 49, 0.45), inset 5px 15px 20px 0px rgba(3, 3, 3, 0.33);
}
.bn-site-header.bn-style-custom-gold::before { content: none !important; display: none !important; }
.bn-site-header.bn-style-custom-gold .bn-glass-specular {
    position: absolute;
    inset: 0;
    border-bottom: 1px solid rgba(255,255,255,0.12);
    border-top: 1px solid rgba(255,255,255,0.08);
    box-shadow: inset 0 1px 0 0 rgba(255,255,255,0.07), inset 0 -1px 0 0 rgba(255,255,255,0.03), 0 1px 3px 0 rgba(0,0,0,0.15);
    pointer-events: none;
}
body.bn-skin-dark {
    --bn-skin-type: solid;
    --bn-solid-bg: #0a0a0a;
    --bn-solid-accent: #ffffff;
    --bn-solid-text: #ffffff;
    --bn-solid-border: rgba(255,255,255,0.1);
    --bn-holo-image: url("https://bassnectar.net/wp-content/themes/sonaar-child/assets/tiny-holo.jpg");
}
body.bn-skin-transparent {
    --bn-skin-type: transparent;
    --bn-transparent-blur: 20px;
    --bn-transparent-saturate: 180%;
    --bn-transparent-overlay: rgba(10,10,10,0.5);
    --bn-transparent-bg: rgba(10,10,10,0.5);
    --bn-transparent-border: rgba(255,255,255,0.08);
    --bn-transparent-text: #ffffff;
    --bn-holo-image: url("https://bassnectar.net/wp-content/themes/sonaar-child/assets/tiny-holo.jpg");
}
body.bn-skin-liquid_glass {
    --bn-skin-type: liquid_glass;
    --bn-glass-color: rgba(82,82,82,0.55);
    --bn-glass-blur: 3px;
    --bn-glass-wobble: 250;
    --bn-glass-overlay: rgba(82,82,82,0.35);
    --bn-glass-accent1: #ffb8ea;
    --bn-glass-accent2: #a4ffef;
    --bn-glass-accent3: #a896ff;
    --bn-glass-accent1-50: rgba(255,184,234,0.5);
    --bn-glass-accent2-50: rgba(164,255,239,0.6);
    --bn-glass-accent3-50: rgba(168,150,255,0.5);
    --bn-glass-accent1-solid: rgb(255,184,234);
    --bn-glass-accent2-solid: rgb(164,255,239);
    --bn-glass-accent3-solid: rgb(168,150,255);
    --bn-glass-composed-bg: rgba(82,82,82,0.55);
    --bn-holo-image: url("https://bassnectar.net/wp-content/themes/sonaar-child/assets/tiny-holo.jpg");
}
body.bn-skin-omakase {
    --bn-skin-type: liquid_glass;
    --bn-glass-color: rgba(82,82,82,0.55);
    --bn-glass-blur: 3px;
    --bn-glass-wobble: 250;
    --bn-glass-overlay: rgba(82,82,82,0.35);
    --bn-glass-accent1: #ffb8ea;
    --bn-glass-accent2: #a4ffef;
    --bn-glass-accent3: #a896ff;
    --bn-glass-accent1-50: rgba(255,184,234,0.5);
    --bn-glass-accent2-50: rgba(164,255,239,0.6);
    --bn-glass-accent3-50: rgba(168,150,255,0.5);
    --bn-glass-accent1-solid: rgb(255,184,234);
    --bn-glass-accent2-solid: rgb(164,255,239);
    --bn-glass-accent3-solid: rgb(168,150,255);
    --bn-glass-composed-bg: rgba(82,82,82,0.55);
    --bn-holo-image: url("https://bassnectar.net/wp-content/themes/sonaar-child/assets/tiny-holo.jpg");
}
body.bn-skin-custom-vaults {
    --bn-skin-type: solid;
    --bn-solid-bg: #000000;
    --bn-solid-accent: #666666;
    --bn-solid-text: #ffffff;
    --bn-solid-border: rgba(255,255,255,0.1);
    --bn-solid-composed-bg: url('https://bassnectar.net/wp-content/uploads/ReliveRemix11BLANK-ART-scaled.jpg'), #000000;
    --bn-solid-bg-size: cover;
    --bn-solid-bg-position: center;
    --bn-holo-image: url("https://bassnectar.net/wp-content/themes/sonaar-child/assets/tiny-holo.jpg");
}
body.bn-skin-custom-gold {
    --bn-skin-type: liquid_glass;
    --bn-glass-color: rgba(64,64,64,0.55);
    --bn-glass-blur: 20px;
    --bn-glass-wobble: 250;
    --bn-glass-overlay: rgba(64,64,64,0.35);
    --bn-glass-accent1: #ffb8ea;
    --bn-glass-accent2: #a4ffef;
    --bn-glass-accent3: #a896ff;
    --bn-glass-accent1-50: rgba(255,184,234,0.5);
    --bn-glass-accent2-50: rgba(164,255,239,0.6);
    --bn-glass-accent3-50: rgba(168,150,255,0.5);
    --bn-glass-accent1-solid: rgb(255,184,234);
    --bn-glass-accent2-solid: rgb(164,255,239);
    --bn-glass-accent3-solid: rgb(168,150,255);
    --bn-glass-composed-bg: rgba(64,64,64,0.55);
    --bn-holo-image: url("https://bassnectar.net/wp-content/uploads/gold-bg.jpg");
}

    /* Video background inside header */
    .bn-header-bg-video {
        position: absolute;
        inset: 0;
        width: 100%;
        height: 100%;
        object-fit: cover;
        z-index: -3;
        pointer-events: none;
        opacity: 0.4;
    }

    /* ========================================
       Gradient shadow (transparent + liquid glass only)
       ======================================== */
    .bn-site-header > .bn-header-gradient-shadow {
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        height: 200px;
        background: linear-gradient(to bottom, rgba(0,0,0,0.55) 0%, rgba(0,0,0,0.18) 45%, transparent 100%);
        pointer-events: none;
        z-index: -3;
    }

    .bn-header-sticky {
        position: fixed !important;
        top: 0;
        left: 0;
    }

    .bn-header-inner {
        display: flex;
        align-items: center;
        justify-content: space-between;
        height: 60px;
        padding: 0 20px;
        position: relative;
        z-index: 1;
        max-width: 100%;
        pointer-events: auto; /* re-enable clicks on the actual header bar */
    }

    /* ---- LEFT: Back + Logo ---- */
    .bn-header-left {
        display: flex;
        align-items: center;
        gap: 10px;
    }

    .bn-header-back-btn {
        display: flex;
        align-items: center;
        justify-content: center;
        width: 34px;
        height: 34px;
        background: rgba(255,255,255,0.08);
        border: 1px solid rgba(255,255,255,0.1);
        border-radius: 50%;
        color: rgba(255,255,255,0.85);
        cursor: pointer;
        transition: all 0.2s;
        padding: 0;
        flex-shrink: 0;
    }
    .bn-header-back-btn:hover {
        background: rgba(255,255,255,0.15);
        color: #fff;
    }
    .bn-header-back-btn svg {
        margin-left: -1px;
    }

    .bn-hamburger {
        display: flex;
        flex-direction: column;
        justify-content: center;
        align-items: center;
        gap: 5px;
        width: 36px;
        height: 36px;
        background: none;
        border: none;
        cursor: pointer;
        padding: 6px;
        border-radius: 4px;
        transition: background 0.2s ease;
    }

    .bn-hamburger:hover {
        background: rgba(255,255,255,0.08);
    }

    .bn-hamburger-line {
        display: block;
        width: 20px;
        height: 2px;
        background: #ffffff;
        border-radius: 1px;
        transition: transform 0.3s ease, opacity 0.3s ease;
    }

    .bn-hamburger.active .bn-hamburger-line:nth-child(1) {
        transform: translateY(7px) rotate(45deg);
    }
    .bn-hamburger.active .bn-hamburger-line:nth-child(2) {
        opacity: 0;
    }
    .bn-hamburger.active .bn-hamburger-line:nth-child(3) {
        transform: translateY(-7px) rotate(-45deg);
    }

    .bn-header-logo-link {
        display: flex;
        align-items: center;
        text-decoration: none;
    }

    .bn-header-logo {
        display: block;
        object-fit: contain;
    }

    .bn-header-site-title {
        font-size: 18px;
        font-weight: 700;
        color: #ffffff;
        letter-spacing: 0.5px;
        white-space: nowrap;
    }

    /* ---- CENTER: Icon/text nav ---- */
    .bn-header-center {
        display: flex;
        align-items: center;
        flex: 1;
        justify-content: center;
    }

    .bn-header-icon-nav {
        display: flex;
        align-items: center;
        gap: 8px;
        list-style: none;
        margin: 0;
        padding: 0;
    }

    .bn-header-icon-nav li {
        list-style: none;
    }

    .bn-header-icon-nav li a {
        display: flex;
        align-items: center;
        gap: 6px;
        padding: 6px 14px;
        color: rgba(255,255,255,0.75);
        text-decoration: none;
        font-size: 13px;
        font-weight: 500;
        border-radius: 6px;
        transition: color 0.2s ease, background 0.2s ease;
        white-space: nowrap;
    }

    .bn-header-icon-nav li a:hover,
    .bn-header-icon-nav li.current-menu-item a {
        color: #ffffff;
        background: rgba(255,255,255,0.08);
    }

    .bn-header-icon-nav li a img {
        width: 18px;
        height: 18px;
        object-fit: contain;
    }

    /* ---- RIGHT: Search + Auth + Hamburger ---- */
    .bn-header-right {
        display: flex;
        align-items: center;
        gap: 12px;
    }

    .bn-header-search-toggle {
        display: flex;
        align-items: center;
        justify-content: center;
        width: 36px;
        height: 36px;
        background: none;
        border: none;
        color: rgba(255,255,255,0.75);
        cursor: pointer;
        border-radius: 4px;
        transition: color 0.2s ease, background 0.2s ease;
    }

    .bn-header-search-toggle:hover {
        color: #ffffff;
        background: rgba(255,255,255,0.08);
    }

    .bn-header-account {
        display: flex;
        align-items: center;
        justify-content: center;
        width: 36px;
        height: 36px;
        color: rgba(255,255,255,0.75);
        text-decoration: none;
        border-radius: 50%;
        transition: color 0.2s ease, background 0.2s ease;
    }

    .bn-header-account:hover {
        color: #ffffff;
        background: rgba(255,255,255,0.08);
    }

    /* Radio button in header */
    .bn-header-radio-btn {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        position: relative;
        width: 36px;
        height: 36px;
        border-radius: 50%;
        color: rgba(255,255,255,0.6);
        transition: color 0.2s, background 0.2s;
        text-decoration: none;
        pointer-events: auto;
    }
    .bn-header-radio-btn:hover {
        color: rgba(255,255,255,0.9);
        background: rgba(255,255,255,0.08);
    }
    .bn-header-radio-btn.bn-radio-active {
        color: #64b5f6;
    }
    .bn-radio-live-indicator {
        display: none;
        position: absolute;
        top: 4px;
        right: 4px;
        width: 6px;
        height: 6px;
        border-radius: 50%;
        background: #64b5f6;
        animation: bn-radio-pulse 1.5s ease-in-out infinite;
    }
    .bn-header-radio-btn.bn-radio-active .bn-radio-live-indicator {
        display: block;
    }
    @keyframes bn-radio-pulse {
        0%, 100% { opacity: 1; transform: scale(1); }
        50% { opacity: 0.4; transform: scale(0.7); }
    }

    /* CTA Button — layout only; holo effect comes from style.css */
    .bn-header-cta-btn {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        text-decoration: none;
        transition: opacity 0.25s ease;
        box-shadow: none !important;
    }

    .bn-header-cta-btn:hover {
        opacity: 0.7;
    }

    /* Text link (Sign In / Sign Out) */
    .bn-header-text-link {
        display: inline-flex;
        align-items: center;
        padding: 6px 4px;
        color: rgba(255,255,255,0.65);
        text-decoration: none;
        font-size: 12px;
        font-weight: 500;
        transition: color 0.2s ease;
        white-space: nowrap;
        letter-spacing: 0.2px;
    }

    .bn-header-text-link:hover {
        color: #ffffff;
        text-decoration: underline;
    }

    /* ========================================
       Inline Expanding Search
       ======================================== */
    .bn-inline-search {
        display: flex;
        align-items: center;
        position: relative;
    }

    .bn-inline-search-form {
        display: flex;
        align-items: center;
        width: 0;
        overflow: hidden;
        transition: width 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    }

    .bn-inline-search.active .bn-inline-search-form {
        width: 220px;
    }

    .bn-inline-search-input {
        width: 100%;
        background: rgba(255,255,255,0.08);
        border: 1px solid rgba(255,255,255,0.15);
        border-radius: 6px;
        padding: 7px 12px;
        font-size: 13px;
        color: #ffffff;
        outline: none;
        font-family: "Helvetica", Sans-serif;
        transition: border-color 0.2s ease;
    }

    .bn-inline-search-input::placeholder {
        color: rgba(255,255,255,0.35);
    }

    .bn-inline-search-input:focus {
        border-color: rgba(255,255,255,0.35);
    }

    .bn-inline-search.active .bn-header-search-toggle {
        color: #ffffff;
    }

    /* ========================================
       Slide-out Menu (ALWAYS from right, ALWAYS slide)
       ======================================== */
    .bn-menu-overlay {
        position: fixed;
        inset: 0;
        background: rgba(0,0,0,0.6);
        z-index: 100004;
        opacity: 0;
        visibility: hidden;
        pointer-events: none;
        transition: opacity 0.3s ease, visibility 0.3s ease;
    }

    .bn-menu-overlay.active {
        opacity: 1;
        visibility: visible;
        pointer-events: auto;
    }

    .bn-slide-menu {
        position: fixed;
        top: 0;
        right: 0;
        width: 340px;
        max-width: 85vw;
        height: 100vh;
        height: 100dvh;
        /* Liquid glass background for slide-out panel */
        background: rgba(15, 15, 15, 0.65);
        -webkit-backdrop-filter: blur(32px) saturate(160%);
        backdrop-filter: blur(32px) saturate(160%);
        z-index: 100005;
        transform: translateX(100%);
        transition: transform 0.35s cubic-bezier(0.4, 0, 0.2, 1);
        display: flex;
        flex-direction: column;
        overflow: hidden;
        /* Specular edge highlight on the left side */
        border-left: 1px solid rgba(255,255,255,0.08);
        box-shadow:
            inset 1px 0 0 0 rgba(255,255,255,0.05),
            -8px 0 40px rgba(0,0,0,0.4);
        /* Override any theme transitions that may cause fade/ghost */
        animation: none !important;
        opacity: 1 !important;
        visibility: visible !important;
        pointer-events: none;
    }

    .bn-slide-menu.active {
        transform: translateX(0);
        pointer-events: auto;
    }

    .bn-slide-menu-header {
        display: flex;
        align-items: center;
        justify-content: flex-end;
        padding: 16px 24px;
        border-bottom: 1px solid rgba(255,255,255,0.08);
        flex-shrink: 0;
    }

    .bn-slide-menu-title {
        font-size: 14px;
        font-weight: 600;
        color: rgba(255,255,255,0.5);
        text-transform: uppercase;
        letter-spacing: 1px;
    }

    .bn-slide-menu-close {
        display: flex;
        align-items: center;
        justify-content: center;
        width: 36px;
        height: 36px;
        background: none;
        border: none;
        color: rgba(255,255,255,0.6);
        cursor: pointer;
        border-radius: 4px;
        transition: color 0.2s ease, background 0.2s ease;
        pointer-events: none !important; /* Override bn-protected-media button[class*="menu"] rule */
    }

    .bn-slide-menu.active .bn-slide-menu-close {
        pointer-events: auto !important; /* Re-enable when menu is open */
    }

    .bn-slide-menu-close:hover {
        color: #ffffff;
        background: rgba(255,255,255,0.08);
    }

    .bn-slide-menu-body {
        flex: 1;
        overflow-y: auto;
        padding: 16px 0;
    }

    /* Search in slide menu */
    .bn-slide-menu-search {
        display: flex;
        align-items: center;
        gap: 10px;
        margin: 0 24px 16px;
        padding: 10px 14px;
        background: rgba(255,255,255,0.06);
        border-radius: 8px;
        border: 1px solid rgba(255,255,255,0.08);
    }

    .bn-slide-menu-search svg {
        flex-shrink: 0;
        color: rgba(255,255,255,0.35);
    }

    .bn-slide-menu-search input {
        flex: 1;
        background: none;
        border: none;
        outline: none;
        font-size: 14px;
        color: #ffffff;
        font-family: "Helvetica", Sans-serif;
    }

    .bn-slide-menu-search input::placeholder {
        color: rgba(255,255,255,0.3);
    }

    /* Auth buttons (top of slide menu, below search) */
    .bn-slide-menu-auth {
        padding: 0 0 8px;
        border-bottom: 0;
    }

    .bn-slide-auth-row {
        display: flex;
        gap: 10px;
        margin: 20px 24px;
    }

    /* ── Shared button base ── */
    .bn-slide-auth-btn {
        display: flex;
        align-items: center;
        justify-content: center;
        gap: 8px;
        flex: 1;
        padding: 14px 20px;
        text-decoration: none;
        font-size: 14px;
        font-weight: 700;
        border-radius: 10px;
        letter-spacing: 0.5px;
        text-transform: uppercase;
        transition: opacity 0.2s ease, filter 0.2s ease, border-color 0.2s ease;
        cursor: pointer;
    }

    /* ── SIGN IN: holo gradient fill, dark text ── */
    .bn-slide-signin-btn {
        background-image: var(--bn-holo-image, url("../../themes/sonaar-child/assets/tiny-holo.jpg"));
        background-size: 400% 400%;
        background-position: 50% 50%;
        animation: bn-holo-animate 40s ease infinite;
        color: #0d0d0d;
        border: none;
    }
    .bn-slide-signin-btn svg {
        stroke: #0d0d0d;
        opacity: 0.7;
    }
    .bn-slide-signin-btn:hover {
        filter: brightness(1.1) saturate(1.1);
        color: #0d0d0d;
    }

    /* ── JOIN: transparent bg, holo border + holo text + holo icon ── */
    .bn-slide-join-btn {
        background: transparent;
        border: 2px solid transparent;
        position: relative;
        overflow: visible;
        border-radius: 10px;
    }
    /* Holo border via pseudo-element (border-image breaks border-radius) */
    .bn-slide-join-btn::before {
        content: "";
        position: absolute;
        inset: -2px;
        border-radius: 12px;
        padding: 2px;
        background-image: var(--bn-holo-image, url("../../themes/sonaar-child/assets/tiny-holo.jpg"));
        background-size: 400% 400%;
        background-position: 50% 50%;
        animation: bn-holo-animate 40s ease infinite;
        -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
        -webkit-mask-composite: xor;
        mask-composite: exclude;
        pointer-events: none;
        z-index: 0;
    }
    /* Holo text on the span */
    .bn-slide-join-btn span {
        position: relative;
        z-index: 1;
        background-image: var(--bn-holo-image, url("../../themes/sonaar-child/assets/tiny-holo.jpg"));
        background-size: 400% 400%;
        background-position: 50% 50%;
        animation: bn-holo-animate 40s ease infinite;
        -webkit-background-clip: text;
        background-clip: text;
        -webkit-text-fill-color: transparent;
        color: transparent;
    }
    .bn-slide-join-btn svg {
        position: relative;
        z-index: 1;
        stroke: rgba(180, 160, 255, 0.9);
        filter: saturate(1.2) brightness(1.2);
        opacity: 0.9;
    }
    .bn-slide-join-btn:hover {
        filter: brightness(1.15) saturate(1.2);
    }

    /* ── SIGN OUT: full-width holo fill, dark text ── */
    .bn-slide-auth-loggedin .bn-slide-signout-btn {
        flex: 1;
        background-image: var(--bn-holo-image, url("../../themes/sonaar-child/assets/tiny-holo.jpg"));
        background-size: 400% 400%;
        background-position: 50% 50%;
        animation: bn-holo-animate 40s ease infinite;
        color: #0d0d0d;
        border: none;
    }
    .bn-slide-auth-loggedin .bn-slide-signout-btn svg {
        stroke: #0d0d0d;
        opacity: 0.7;
    }
    .bn-slide-auth-loggedin .bn-slide-signout-btn:hover {
        filter: brightness(1.1) saturate(1.1);
        color: #0d0d0d;
    }

    .bn-slide-menu-auth-link {
        display: flex;
        align-items: center;
        gap: 10px;
        padding: 10px 0;
        color: rgba(255,255,255,0.65);
        text-decoration: none;
        font-size: 14px;
        font-weight: 500;
        transition: color 0.2s ease;
    }

    .bn-push-toggle-btn {
        background: none;
        border: 1px solid rgba(255,255,255,0.1);
        border-radius: 6px;
        cursor: pointer;
        padding: 8px 14px;
        margin-top: 6px;
        font-family: inherit;
        transition: all 0.2s;
    }
    .bn-push-toggle-btn:hover {
        background: rgba(255,255,255,0.05);
        border-color: rgba(255,255,255,0.2);
    }
    .bn-push-toggle-btn.bn-push-active {
        border-color: rgba(76, 175, 80, 0.3);
        color: #81c784;
    }
    .bn-push-toggle-btn.bn-push-active .bn-push-label {
        color: #81c784;
    }
    .bn-push-toggle-btn svg {
        vertical-align: middle;
        margin-right: 6px;
    }
    .bn-push-label {
        font-size: 13px;
    }

    .bn-slide-menu-auth-link:hover {
        color: #ffffff;
    }

    /* Legacy auth-action class — kept for backward compat */
    .bn-slide-menu-auth-action { display: none; }

    /* Nav links in slide menu */
    .bn-slide-menu-nav {
        list-style: none;
        margin: 0;
        padding: 0;
        display: flex;
        flex-direction: column;
        gap: 20px;
        width: 100%;
    }

    .bn-slide-menu-nav li {
        list-style: none;
    }

    .bn-slide-menu-nav > li > a {
        display: flex;
        align-items: center;
        gap: 12px;
        padding: 9px 24px;
        color: rgba(255, 255, 255, 0.85);
        text-decoration: none;
        font-size: 25px;
        font-weight: 600;
        transition: background 0.2s ease, color 0.2s ease;
        text-transform: uppercase;
        letter-spacing: 0;
        background: rgba(255, 255, 255, 0.03);
        border: 1px solid rgba(255, 255, 255, 0.04);
        border-left: 0 !important;
        border-radius: 0 !important;
        margin-bottom: 2px;
    }

    .bn-slide-menu-nav > li > a:hover,
    .bn-slide-menu-nav > li.current-menu-item > a {
        background: rgba(255, 255, 255, 0.06);
        color: #ffffff;
        border-color: rgba(255, 255, 255, 0.08);
        border-left: 0 !important;
    }

    /* Sub-menu items */
    .bn-slide-menu-nav .sub-menu {
        list-style: none;
        margin: 0;
        padding: 0;
    }

    .bn-slide-menu-nav .sub-menu li a {
        display: block;
        padding: 4px 24px 0px 48px;
        color: rgba(255, 255, 255, 0.55);
        text-decoration: none;
        font-size: 14px;
        transition: color 0.2s ease, background 0.2s ease;
    }

    .bn-slide-menu-nav .sub-menu li a:hover {
        color: #ffffff;
        background: rgba(255,255,255,0.03);
    }

    /* Slide menu footer */
    .bn-slide-menu-footer {
        padding: 16px 24px;
        border-top: 1px solid rgba(255,255,255,0.08);
        display: flex;
        flex-direction: column;
        gap: 8px;
        flex-shrink: 0;
    }

    .bn-slide-menu-footer-link {
        display: flex;
        align-items: center;
        gap: 10px;
        padding: 10px 0;
        color: rgba(255,255,255,0.65);
        text-decoration: none;
        font-size: 14px;
        font-weight: 500;
        transition: color 0.2s ease;
    }

    .bn-slide-menu-footer-link:hover {
        color: #ffffff;
    }

    .bn-slide-menu-auth-btn {
        display: flex;
        align-items: center;
        justify-content: center;
        padding: 12px 24px;
        background: #ffffff;
        color: #0d0d0d;
        text-decoration: none;
        font-size: 14px;
        font-weight: 600;
        border-radius: 8px;
        transition: background 0.2s ease;
    }

    .bn-slide-menu-auth-btn:hover {
        background: #e0e0e0;
        color: #0d0d0d;
    }


    /* ========================================
       Nav menu icons (SVG)
       ======================================== */
    .bn-slide-menu-nav > li.bn-nav-vaults > a::before,
    .bn-slide-menu-nav > li.bn-nav-listen > a::before,
    .bn-slide-menu-nav > li.bn-nav-memories > a::before,
    .bn-slide-menu-nav > li.bn-nav-tour > a::before,
    .bn-slide-menu-nav > li.bn-nav-connect > a::before {
        content: '';
        display: inline-block;
        width: 22px;
        height: 22px;
        flex-shrink: 0;
        background-size: contain;
        background-repeat: no-repeat;
        background-position: center;
        filter: none !important;
        opacity: 0.85;
    }

    .bn-nav-vaults > a::before   { background-image: url('https://bassnectar.net/wp-content/themes/sonaar-child/assets/vaults-white.svg') !important; }
    .bn-nav-listen > a::before   { background-image: url('https://bassnectar.net/wp-content/themes/sonaar-child/assets/listen.svg') !important; }
    .bn-nav-memories > a::before { background-image: url('https://bassnectar.net/wp-content/themes/sonaar-child/assets/memories.svg') !important; }
    .bn-nav-tour > a::before     { filter: none !important; background-image: url('https://bassnectar.net/wp-content/themes/sonaar-child/assets/tour-icon.svg') !important; }
    .bn-nav-connect > a::before  { background-image: url('https://bassnectar.net/wp-content/themes/sonaar-child/assets/connect.svg') !important; }

    /* Account icon (matches nav icon style) */
    .bn-account-icon {
        display: inline-block;
        width: 22px;
        height: 22px;
        flex-shrink: 0;
        background-image: url('https://bassnectar.net/wp-content/themes/sonaar-child/assets/vaults-white.svg');
        background-size: contain;
        background-repeat: no-repeat;
        background-position: center;
        opacity: 0.85;
    }

    /* Hide menu items conditionally */
    .bn-slide-menu-nav li.bn-hide-menu-item {
        display: none !important;
    }

    /* ========================================
       Header notification icon + badge
       ======================================== */
    .bn-slide-menu-header-notif {
        display: flex;
        align-items: center;
        justify-content: center;
        text-decoration: none;
        padding: 4px;
        border-radius: 6px;
        transition: background 0.2s ease;
    }

    .bn-slide-menu-header-notif:hover {
        background: rgba(255, 255, 255, 0.1);
    }

    .bn-header-notif-wrap {
        position: relative;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        width: 28px;
        height: 28px;
    }

    .bn-header-notif-icon {
        width: 28px;
        height: 28px;
        opacity: 0.9;
    }

    .bn-notif-badge {
        position: absolute;
        top: -4px;
        right: -6px;
        min-width: 16px;
        height: 16px;
        padding: 0 4px;
        background: #ff4444;
        color: #ffffff;
        font-size: 10px;
        font-weight: 700;
        line-height: 16px;
        text-align: center;
        border-radius: 8px;
        pointer-events: none;
    }

    /* ========================================
       Sign Out CTA button (footer)
       ======================================== */
    .bn-slide-menu-signout-btn {
        display: flex;
        align-items: center;
        justify-content: center;
        gap: 8px;
        width: 100%;
        padding: 14px 24px;
        background: rgba(255, 255, 255, 0.08);
        color: rgba(255, 255, 255, 0.75);
        text-decoration: none;
        font-size: 14px;
        font-weight: 600;
        border-radius: 8px;
        border: 1px solid rgba(255, 255, 255, 0.12);
        transition: background 0.2s ease, color 0.2s ease, border-color 0.2s ease;
        letter-spacing: 0.5px;
        text-transform: uppercase;
    }

    .bn-slide-menu-signout-btn:hover {
        background: rgba(255, 255, 255, 0.15);
        color: #ffffff;
        border-color: rgba(255, 255, 255, 0.25);
    }

    .bn-slide-menu-signout-btn svg {
        opacity: 0.75;
    }

    /* ========================================
       Body scroll lock
       ======================================== */
    body.bn-menu-open {
        overflow: hidden;
    }

    /* ========================================
       Social / Streaming Icon Classes
       Use in Appearance > Menus by adding a CSS class to a menu item.
       e.g. "bn-icon-spotify", "bn-icon-instagram"
       ======================================== */
    .bn-slide-menu-nav > li > a::before,
    .bn-header-icon-nav > li > a::before {
        display: inline-block;
        width: 20px;
        height: 20px;
        flex-shrink: 0;
        background-size: contain;
        background-repeat: no-repeat;
        background-position: center;
        filter: brightness(0) invert(1);
        opacity: 0.7;
    }

    /* Social platforms */
    .bn-icon-instagram > a::before { content: ''; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2' y='2' width='20' height='20' rx='5' ry='5'/%3E%3Cpath d='M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z'/%3E%3Cline x1='17.5' y1='6.5' x2='17.51' y2='6.5'/%3E%3C/svg%3E"); filter: none; }
    .bn-icon-facebook > a::before { content: ''; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='white'%3E%3Cpath d='M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z'/%3E%3C/svg%3E"); filter: none; }
    .bn-icon-twitter > a::before, .bn-icon-x > a::before { content: ''; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='white'%3E%3Cpath d='M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z'/%3E%3C/svg%3E"); filter: none; }
    .bn-icon-youtube > a::before { content: ''; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22.54 6.42a2.78 2.78 0 0 0-1.94-2C18.88 4 12 4 12 4s-6.88 0-8.6.46a2.78 2.78 0 0 0-1.94 2A29 29 0 0 0 1 11.75a29 29 0 0 0 .46 5.33A2.78 2.78 0 0 0 3.4 19.1c1.72.46 8.6.46 8.6.46s6.88 0 8.6-.46a2.78 2.78 0 0 0 1.94-2 29 29 0 0 0 .46-5.35 29 29 0 0 0-.46-5.33z'/%3E%3Cpolygon points='9.75 15.02 15.5 11.75 9.75 8.48 9.75 15.02'/%3E%3C/svg%3E"); filter: none; }
    .bn-icon-tiktok > a::before { content: ''; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='white'%3E%3Cpath d='M19.59 6.69a4.83 4.83 0 0 1-3.77-4.25V2h-3.45v13.67a2.89 2.89 0 0 1-2.88 2.5 2.89 2.89 0 0 1 0-5.78 2.9 2.9 0 0 1 .88.14V9.01a6.14 6.14 0 0 0-1-.08 6.24 6.24 0 0 0 0 12.48 6.24 6.24 0 0 0 6.25-6.24V8.83a8.18 8.18 0 0 0 4.78 1.53V6.8a4.84 4.84 0 0 1-.81-.11z'/%3E%3C/svg%3E"); filter: none; }
    .bn-icon-threads > a::before { content: ''; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='white'%3E%3Cpath d='M12.186 24h-.007c-3.581-.024-6.334-1.205-8.184-3.509C2.35 18.44 1.5 15.586 1.472 12.01v-.017c.03-3.579.879-6.43 2.525-8.482C5.845 1.205 8.6.024 12.18 0h.014c2.746.02 5.043.725 6.826 2.098 1.677 1.29 2.858 3.13 3.509 5.467l-2.773.776c-1.034-3.716-3.474-5.6-7.253-5.6h-.008c0 0-.003 0-.003 0-2.522.017-4.474.844-5.802 2.458-1.39 1.685-2.1 4.156-2.113 7.344v.013c.014 3.187.723 5.658 2.108 7.34 1.325 1.612 3.276 2.438 5.803 2.455h.003c2.035-.013 3.68-.575 4.89-1.67 1.304-1.18 1.98-2.88 2.01-5.05.007-.497-.03-.985-.11-1.46-.498.238-1.028.43-1.59.57-.172 1.453-.7 2.626-1.574 3.46-.998.952-2.37 1.44-4.076 1.448h-.003c-1.67-.006-3.034-.504-4.056-1.48-.97-.925-1.498-2.2-1.57-3.79-.033-.733.05-1.428.245-2.073a6.768 6.768 0 0 1 3.583-3.986c1.13-.537 2.434-.81 3.876-.81.173 0 .347.003.52.01 1.74.065 3.2.54 4.338 1.413 1.02.783 1.747 1.855 2.162 3.19l-2.637.903c-.55-1.814-1.92-2.726-4.075-2.726-.07 0-.141.001-.212.004-1.715.064-3.06.723-3.637 1.782a2.63 2.63 0 0 0-.162 1.916c.187.656.682 1.168 1.394 1.444.652.253 1.454.362 2.285.31 1.168-.072 2.093-.44 2.745-1.093.347-.347.6-.773.762-1.265-1.107.066-2.133-.025-3.064-.392-1.283-.506-2.14-1.452-2.416-2.665a4.308 4.308 0 0 1 .263-2.79z'/%3E%3C/svg%3E"); filter: none; }

    /* Streaming platforms */
    .bn-icon-spotify > a::before { content: ''; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='white'%3E%3Cpath d='M12 0C5.4 0 0 5.4 0 12s5.4 12 12 12 12-5.4 12-12S18.66 0 12 0zm5.521 17.34c-.24.359-.66.48-1.021.24-2.82-1.74-6.36-2.101-10.561-1.141-.418.122-.779-.179-.899-.539-.12-.421.18-.78.54-.9 4.56-1.021 8.52-.6 11.64 1.32.42.18.479.659.301 1.02zm1.44-3.3c-.301.42-.841.6-1.262.3-3.239-1.98-8.159-2.58-11.939-1.38-.479.12-1.02-.12-1.14-.6-.12-.48.12-1.021.6-1.141C9.6 9.9 15 10.561 18.72 12.84c.361.181.54.78.241 1.2zm.12-3.36C15.24 8.4 8.82 8.16 5.16 9.301c-.6.179-1.2-.181-1.38-.721-.18-.601.18-1.2.72-1.381 4.26-1.26 11.28-1.02 15.721 1.621.539.3.719 1.02.419 1.56-.299.421-1.02.599-1.559.3z'/%3E%3C/svg%3E"); filter: none; }
    .bn-icon-soundcloud > a::before { content: ''; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='white'%3E%3Cpath d='M1.175 12.225c-.051 0-.094.046-.101.1l-.233 2.154.233 2.105c.007.058.05.098.101.098.05 0 .09-.04.099-.098l.255-2.105-.27-2.154c-.009-.06-.05-.1-.1-.1m-.899.828c-.06 0-.091.037-.104.094L0 14.479l.172 1.282c.013.06.045.094.104.094.057 0 .09-.037.1-.094l.2-1.282-.2-1.332c-.01-.06-.043-.094-.1-.094m1.8-1.025c-.065 0-.105.05-.108.11l-.2 2.341.2 2.268c.004.06.044.11.109.11.062 0 .105-.05.11-.11l.228-2.268-.228-2.341c-.005-.065-.048-.11-.11-.11m.9-.394c-.073 0-.12.058-.125.122l-.19 2.735.19 2.637c.006.07.052.122.125.122.07 0 .117-.053.123-.122l.215-2.637-.215-2.735c-.006-.07-.053-.122-.123-.122m.9-.175c-.08 0-.132.062-.137.134l-.172 2.91.172 2.785c.005.075.057.137.137.137.076 0 .13-.062.136-.137l.196-2.785-.196-2.91c-.006-.075-.06-.134-.136-.134m.9-.4c-.088 0-.146.07-.15.147l-.155 3.31.155 2.895c.004.082.062.147.15.147.084 0 .144-.065.15-.147l.176-2.895-.176-3.31c-.006-.082-.066-.147-.15-.147m.888-.462c-.096 0-.155.076-.16.158l-.14 3.772.14 2.94c.005.086.064.158.16.158.09 0 .155-.072.16-.158l.16-2.94-.16-3.772c-.005-.086-.07-.158-.16-.158m.912-.252c-.102 0-.166.082-.17.17l-.128 4.023.128 2.972c.004.092.068.17.17.17.098 0 .164-.078.17-.17l.145-2.972-.145-4.023c-.006-.092-.072-.17-.17-.17m.9-.097c-.11 0-.178.09-.18.182l-.115 4.12.115 2.99c.002.097.07.182.18.182.108 0 .175-.085.18-.182l.13-2.99-.13-4.12c-.005-.097-.072-.182-.18-.182m.912-.2c-.117 0-.188.095-.19.193l-.102 4.32.102 3.003c.002.103.073.193.19.193.114 0 .188-.09.192-.193l.114-3.003-.114-4.32c-.004-.103-.078-.193-.192-.193m.9.05c-.123 0-.197.1-.2.203l-.09 4.068.09 3.003c.003.107.077.203.2.203.12 0 .197-.096.2-.203l.103-3.003-.103-4.068c-.003-.107-.08-.203-.2-.203m2.962-.498c-.242 0-.44.193-.445.44l-.075 4.515.075 2.962c.006.244.203.437.445.437.24 0 .437-.193.442-.437l.084-2.962-.084-4.515c-.005-.25-.202-.44-.442-.44m.96.09c-.255 0-.453.2-.457.452l-.06 4.425.06 2.94c.004.25.202.452.457.452.253 0 .452-.202.455-.452l.068-2.94-.068-4.425c-.003-.255-.202-.452-.455-.452m3.378.772c-.158-.384-.464-.68-.85-.84-.236-.098-.494-.15-.762-.15h-4.598c-.244 0-.44.198-.44.44v6.01c.002.24.2.432.44.44h4.598c1.08 0 1.96-.882 1.96-1.962 0-.518-.2-1.008-.563-1.376-.085-.09-.178-.166-.278-.234a1.94 1.94 0 0 0-.508-2.328z'/%3E%3C/svg%3E"); filter: none; }
    .bn-icon-apple-music > a::before { content: ''; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='white'%3E%3Cpath d='M23.994 6.124a9.23 9.23 0 0 0-.24-2.19c-.317-1.31-1.062-2.31-2.18-3.043A5.022 5.022 0 0 0 19.7.263a10.158 10.158 0 0 0-1.564-.12C17.498.094 16.86.066 15.982.054h-8c-.876.012-1.514.04-2.152.09a10.158 10.158 0 0 0-1.564.12C3.306.576 2.47.974 1.762 1.642.958 2.398.456 3.334.212 4.424A9.56 9.56 0 0 0 .002 6.6v10.8a9.56 9.56 0 0 0 .21 2.176c.244 1.09.746 2.026 1.55 2.782.708.668 1.544 1.066 2.504 1.278.498.11 1.002.166 1.564.188.638.048 1.276.078 2.154.088h8c.876-.01 1.514-.04 2.152-.088a10.02 10.02 0 0 0 1.564-.188c.96-.212 1.796-.61 2.504-1.278.804-.756 1.306-1.692 1.55-2.782.13-.548.194-1.12.22-1.696.032-.53.046-1.06.054-1.59V8.81c-.006-.456-.014-.91-.03-1.358 0-.276-.01-.53-.024-.794zM17.42 17.3c0 .372-.14.614-.44.762-.156.078-.316.12-.488.12-.128 0-.26-.024-.392-.068l-7.79-2.826a.975.975 0 0 1-.652-.934V8.11l-.02-.19c0-.17.074-.332.2-.456a.685.685 0 0 1 .434-.178c.08-.006.162.01.236.034l7.9 2.87c.316.114.516.37.516.712v6.4h-.004z'/%3E%3C/svg%3E"); filter: none; }
    .bn-icon-bandcamp > a::before { content: ''; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='white'%3E%3Cpath d='M0 18.75l7.437-13.5H24l-7.438 13.5z'/%3E%3C/svg%3E"); filter: none; }
    .bn-icon-twitch > a::before { content: ''; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='white'%3E%3Cpath d='M11.571 4.714h1.715v5.143H11.57zm4.715 0H18v5.143h-1.714zM6 0L1.714 4.286v15.428h5.143V24l4.286-4.286h3.428L22.286 12V0zm14.571 11.143l-3.428 3.428h-3.429l-3 3v-3H6.857V1.714h13.714z'/%3E%3C/svg%3E"); filter: none; }

    /* Misc / utility */
    .bn-icon-link > a::before { content: ''; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71'/%3E%3Cpath d='M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71'/%3E%3C/svg%3E"); filter: none; }
    .bn-icon-mail > a::before { content: ''; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z'/%3E%3Cpolyline points='22,6 12,13 2,6'/%3E%3C/svg%3E"); filter: none; }

    /* ========================================
       Responsive
       ======================================== */
    @media (max-width: 768px) {
        .bn-header-center {
            display: none;
        }

        .bn-header-inner {
            padding: 0 14px;
        }

        .bn-header-cta-btn {
            display: none;
        }

        .bn-header-text-link {
            display: none;
        }

        .bn-inline-search {
            display: none;
        }

        .bn-slide-menu {
            width: 100%;
            max-width: 100vw;
        }
    }

    /* WP admin bar offset */
    .admin-bar .bn-header-sticky {
        top: 32px;
    }

    @media (max-width: 782px) {
        .admin-bar .bn-header-sticky {
            top: 46px;
        }
    }

        /* ========================================
       Hide theme's default header
       ======================================== */
    .sonaar-menu-box {
        display: none !important;
        height: 0 !important;
        min-height: 0 !important;
        overflow: hidden !important;
        visibility: hidden !important;
    }
    
    /* ========================================
       BN Submenu — Horizontal Scrolling Bar
       (Memories CPT only)
       ======================================== */
    .bn-submenu {
        width: 100%;
        z-index: 9998;
        position: relative;
        overflow: hidden;
        background: rgba(10, 10, 10, 0.65);
        -webkit-backdrop-filter: blur(16px) saturate(160%);
        backdrop-filter: blur(16px) saturate(160%);
        border-bottom: 1px solid rgba(255,255,255,0.06);
        margin-top: -1px; /* collapse gap between header border & submenu */
    }

    .bn-header-sticky + .bn-submenu {
        position: fixed !important;
        /* top set by JS via custom property to account for admin bar */
        top: var(--bn-submenu-top, 60px);
        left: 0;
        margin-top: 0;
    }

    .bn-submenu-inner {
        overflow-x: auto;
        overflow-y: hidden;
        -webkit-overflow-scrolling: touch;
        scrollbar-width: none;       /* Firefox */
        -ms-overflow-style: none;    /* IE/Edge */
        display: flex;
        justify-content: center;
    }
    .bn-submenu-inner::-webkit-scrollbar {
        display: none;               /* Chrome/Safari */
    }

    .bn-submenu-list {
        display: flex;
        align-items: center;
        justify-content: center;
        gap: 2px;
        list-style: none;
        margin: 0;
        padding: 0;
        height: 24px;
        white-space: nowrap;
    }

    .bn-submenu-list li {
        list-style: none;
        flex: 0 0 auto;
    }

    .bn-submenu-list li a {
        display: flex;
        align-items: center;
        padding: 3px 10px;
        color: rgba(255,255,255,0.55);
        text-decoration: none;
        font-family: "Helvetica", Sans-serif;
        font-size: 12px;
        font-weight: 600;
        letter-spacing: 0.08em;
        text-transform: uppercase;
        border-radius: 3px;
        transition: color 0.2s ease, background 0.2s ease;
        white-space: nowrap;
    }

    .bn-submenu-list li a:hover {
        color: rgba(255,255,255,0.9);
        background: rgba(255,255,255,0.08);
    }

    .bn-submenu-list li.current-menu-item a,
    .bn-submenu-list li.bn-submenu-active a {
        color: #ffffff;
        background: rgba(255,255,255,0.1);
    }

    /* Edge fade indicators */
    .bn-submenu-fade {
        position: absolute;
        top: 0;
        bottom: 0;
        width: 32px;
        pointer-events: none;
        z-index: 2;
        opacity: 0;
        transition: opacity 0.2s ease;
    }
    .bn-submenu-fade--left {
        left: 0;
        background: linear-gradient(to right, rgba(10,10,10,0.8), transparent);
    }
    .bn-submenu-fade--right {
        right: 0;
        background: linear-gradient(to left, rgba(10,10,10,0.8), transparent);
    }
    .bn-submenu-fade.visible {
        opacity: 1;
    }

    /* Mobile tweaks */
    @media (max-width: 768px) {
        .bn-submenu-list {
            height: 22px;
        }
        .bn-submenu-list li a {
            font-size: 11px;
            padding: 2px 8px;
        }
    }

    </style>
        <meta name="theme-color" content="#1a1a1a">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
    <meta name="apple-mobile-web-app-title" content="Bassnectar Vaults">
    <link rel="manifest" href="https://bassnectar.net/manifest.webmanifest">
    <link rel="icon" type="image/x-icon" href="https://bassnectar.net/favicon.ico">
    <link rel="icon" type="image/png" sizes="32x32" href="https://bassnectar.net/pwa-icons/icon-48x48.png">
    <link rel="icon" type="image/png" sizes="192x192" href="https://bassnectar.net/pwa-icons/icon-192x192.png">
    <link rel="apple-touch-icon" sizes="180x180" href="https://bassnectar.net/pwa-icons/apple-touch-icon.png">
    <link href='//hb.wpmucdn.com' rel='preconnect' />
<link rel="alternate" type="application/rss+xml" title="BASSNECTAR &raquo; Feed" href="https://bassnectar.net/feed/" />
<link rel="alternate" type="application/rss+xml" title="BASSNECTAR &raquo; Comments Feed" href="https://bassnectar.net/comments/feed/" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/glightbox/3.3.0/css/glightbox.min.css" /><style id='wp-img-auto-sizes-contain-inline-css' type='text/css'>
img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px}
/*# sourceURL=wp-img-auto-sizes-contain-inline-css */
</style>
<link rel='stylesheet' id='mp-theme-css' href='https://bassnectar.net/wp-content/plugins/memberpress/css/ui/theme.css?ver=1.12.14' type='text/css' media='all' />
<style id='wp-emoji-styles-inline-css' type='text/css'>

	img.wp-smiley, img.emoji {
		display: inline !important;
		border: none !important;
		box-shadow: none !important;
		height: 1em !important;
		width: 1em !important;
		margin: 0 0.07em !important;
		vertical-align: -0.1em !important;
		background: none !important;
		padding: 0 !important;
	}
/*# sourceURL=wp-emoji-styles-inline-css */
</style>
<style id='classic-theme-styles-inline-css' type='text/css'>
/*! This file is auto-generated */
.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
/*# sourceURL=/wp-includes/css/classic-themes.min.css */
</style>
<style id='global-styles-inline-css' type='text/css'>
:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,0) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}
:where(.wp-block-term-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-term-template.is-layout-grid){gap: 1.25em;}
:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}
:root :where(.wp-block-pullquote){font-size: 1.5em;line-height: 1.6;}
/*# sourceURL=global-styles-inline-css */
</style>
<link rel='stylesheet' id='iron-master-css' href='https://bassnectar.net/wp-content/themes/sonaar/dist/css/main.min.css?ver=4.28.1' type='text/css' media='all' />
<link rel='stylesheet' id='sonaar-child-style-css' href='https://bassnectar.net/wp-content/themes/sonaar-child/style.css?ver=1773633883' type='text/css' media='all' />
<style id='sonaar-child-style-inline-css' type='text/css'>
body, h1, h2, h3, h4, h5, h6, p, a, span, div, li, td, th, input, select, textarea, button, .elementor-widget-text-editor, .elementor-heading-title { font-family: Helvetica, Arial, sans-serif; }
/*# sourceURL=sonaar-child-style-inline-css */
</style>
<link rel='stylesheet' id='iron-custom-styles-css' href='https://bassnectar.net/?load=custom-style.css&#038;ver=1773637509' type='text/css' media='all' />
<style id='iron-custom-styles-inline-css' type='text/css'>
@media only screen and (max-width: 1159px){
				.boxed {
					margin-top: 0px!important;
				}}#overlay .perspective, .single-album .sr_it-single-post.featured, .single-album .sr_it-singlealbum-sidecover-wrapper, .single-album .content-box { 
	background-color: rgba(0,0,0,1);
}
.menu-toggle span, .menu-toggle.toggled span{ background-color: #ffffff; }.menu-toggle rect{
	fill:#ffffff;

}ul.header-top-menu li a{color:#ffffff;}.menu-toggle-off polygon{
	fill:#ffffff;
}#page-banner{height:350px;}span.heading-b3{
		margin-top:30px;
		margin-bottom:75px;
		background-color:rgba(0, 0, 0, 0);
	}
/*# sourceURL=iron-custom-styles-inline-css */
</style>
<link rel='stylesheet' id='bassnectar-icons-css' href='https://bassnectar.net/Public/Core/Fonts/bassnectar-icons/style.css?ver=1.0.1' type='text/css' media='all' />
<link rel='stylesheet' id='elementor-icons-css' href='https://bassnectar.net/wp-content/plugins/elementor/assets/lib/eicons/css/elementor-icons.min.css?ver=5.47.0' type='text/css' media='all' />
<link rel='stylesheet' id='elementor-frontend-css' href='https://bassnectar.net/wp-content/plugins/elementor/assets/css/frontend.min.css?ver=3.35.5' type='text/css' media='all' />
<link rel='stylesheet' id='elementor-post-4216-css' href='https://bassnectar.net/wp-content/uploads/elementor/css/post-4216.css?ver=1773532830' type='text/css' media='all' />
<link rel='stylesheet' id='font-awesome-5-all-css' href='https://bassnectar.net/wp-content/plugins/elementor/assets/lib/font-awesome/css/all.min.css?ver=3.35.5' type='text/css' media='all' />
<link rel='stylesheet' id='font-awesome-4-shim-css' href='https://bassnectar.net/wp-content/plugins/elementor/assets/lib/font-awesome/css/v4-shims.min.css?ver=3.35.5' type='text/css' media='all' />
<link rel='stylesheet' id='widget-image-css' href='https://bassnectar.net/wp-content/plugins/elementor/assets/css/widget-image.min.css?ver=3.35.5' type='text/css' media='all' />
<link rel='stylesheet' id='e-animation-fadeIn-css' href='https://bassnectar.net/wp-content/plugins/elementor/assets/lib/animations/styles/fadeIn.min.css?ver=3.35.5' type='text/css' media='all' />
<link rel='stylesheet' id='elementor-post-3050-css' href='https://bassnectar.net/wp-content/uploads/elementor/css/post-3050.css?ver=1773532955' type='text/css' media='all' />
<link rel='stylesheet' id='bn-player-css-css' href='https://bassnectar.net/wp-content/themes/sonaar-child/bn-player.css?ver=1773586002' type='text/css' media='all' />
<style id='bn-streaming-inline-css' type='text/css'>
/**
 * BN Streaming — Styles
 *
 * Covers:
 *  1. MemberPress account tab — platform selector grid
 *  2. Toast notification (global)
 *  3. Album sheet CTA button override styles
 */

/* ═══════════════════════════════════════════════════════════════════════
   1. ACCOUNT TAB — Platform Selector Grid
   ═══════════════════════════════════════════════════════════════════ */

.bn-streaming-prefs {
    max-width: 640px;
}

/* Account page keeps 5-column grid */
.bn-streaming-prefs .bn-streaming-grid {
    grid-template-columns: repeat(5, 1fr);
}

.bn-streaming-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 10px;
    margin-bottom: 16px;
}

@media (max-width: 600px) {
    .bn-streaming-grid {
        grid-template-columns: repeat(3, 1fr);
    }
}

@media (max-width: 380px) {
    .bn-streaming-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

.bn-streaming-option {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    padding: 14px 8px;
    border: 2px solid #333;
    border-radius: 10px;
    background: #1a1a1a;
    color: #ccc;
    cursor: pointer;
    transition: border-color .2s, background .2s, transform .1s;
    font-family: inherit;
    font-size: 12px;
    line-height: 1.2;
    text-align: center;
}

.bn-streaming-option:hover {
    border-color: #555;
    background: #222;
    transform: translateY(-1px);
}

.bn-streaming-option.bn-streaming-active {
    border-color: var(--platform-color, #fff);
    background: rgba(255,255,255,0.06);
    color: #fff;
}

.bn-streaming-icon {
    width: 28px;
    height: 28px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.bn-streaming-icon svg {
    width: 28px;
    height: 28px;
}

.bn-streaming-active .bn-streaming-icon {
    color: var(--platform-color, #fff);
}

.bn-streaming-label {
    font-weight: 500;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 100%;
}

.bn-streaming-check {
    position: absolute;
    top: 4px;
    right: 6px;
    font-size: 14px;
    font-weight: 700;
    color: var(--platform-color, #1DB954);
}

/* "None" radio option */
.bn-streaming-none-option {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 0;
    color: #ccc;
    cursor: pointer;
    font-size: 14px;
}

.bn-streaming-none-option input[type="radio"] {
    accent-color: #888;
}

/* ═══════════════════════════════════════════════════════════════════════
   2. TOAST NOTIFICATION (global)
   ═══════════════════════════════════════════════════════════════════ */

.bn-streaming-toast {
    position: fixed;
    bottom: 80px;  /* above the sticky player bar */
    left: 50%;
    transform: translateX(-50%) translateY(20px);
    background: #1DB954;
    color: #000;
    font-weight: 600;
    font-size: 13px;
    padding: 10px 20px;
    border-radius: 24px;
    z-index: 200000;
    pointer-events: none;
    opacity: 0;
    transition: opacity .3s, transform .3s;
    white-space: nowrap;
    box-shadow: 0 4px 20px rgba(0,0,0,.4);
}

.bn-streaming-toast--visible {
    opacity: 1;
    transform: translateX(-50%) translateY(0);
}

/* Account-page inline toast */
.bn-streaming-prefs .bn-streaming-toast {
    position: relative;
    bottom: auto;
    left: auto;
    transform: none;
    display: inline-block;
    margin-top: 10px;
    border-radius: 6px;
    pointer-events: auto;
    opacity: 1;
}

/* ═══════════════════════════════════════════════════════════════════════
   3. ALBUM SHEET — CTA Button Styles
   These enhance the existing .bn-streaming-cta rendered by
   bn-album-sheet.js and album-streaming.php
   ═══════════════════════════════════════════════════════════════════ */

.bn-streaming-cta {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    width: 100%;
    padding: 14px 20px;
    border: none;
    border-radius: 50px;
    font-size: 14px;
    font-weight: 700;
    letter-spacing: 0.5px;
    text-transform: uppercase;
    text-decoration: none;
    cursor: pointer;
    transition: filter .2s, transform .1s;
    color: #fff;
    box-shadow: 0 4px 15px rgba(0,0,0,.3);
}

.bn-streaming-cta:hover {
    filter: brightness(1.1);
    transform: translateY(-1px);
}

.bn-streaming-cta:active {
    transform: translateY(0);
}

.bn-streaming-cta svg {
    width: 20px;
    height: 20px;
    flex-shrink: 0;
}

/* Collapsible "Other platforms" toggle */
.bn-streaming-others-toggle {
    display: flex;
    align-items: center;
    gap: 6px;
    background: none;
    border: none;
    color: #888;
    font-size: 13px;
    cursor: pointer;
    padding: 8px 0;
    margin-top: 4px;
    transition: color .2s;
    font-family: inherit;
}

.bn-streaming-others-toggle:hover {
    color: #bbb;
}

.bn-streaming-others-toggle .arrow,
.bn-streaming-others-toggle .bn-toggle-arrow {
    transition: transform .2s;
    font-size: 10px;
}

.bn-streaming-others-toggle.expanded .arrow,
.bn-streaming-others-toggle.bn-expanded .bn-toggle-arrow {
    transform: rotate(180deg);
}

.bn-streaming-others-grid {
    overflow: hidden;
    max-height: 0;
    opacity: 0;
    transition: max-height .3s ease, opacity .3s ease;
}

.bn-streaming-others-grid.expanded,
.bn-streaming-others-grid.bn-expanded {
    max-height: 400px;
    opacity: 1;
}

/* ── PHP-rendered CTA (album-streaming.php) ── */
.bn-streaming-pref-cta {
    margin-bottom: 8px;
}

.bn-streaming-pref-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    width: 100%;
    padding: 14px 20px;
    border: none;
    border-radius: 50px;
    font-size: 14px;
    font-weight: 700;
    letter-spacing: 0.5px;
    text-transform: uppercase;
    text-decoration: none;
    cursor: pointer;
    transition: filter .2s, transform .1s;
    color: #fff;
    box-shadow: 0 4px 15px rgba(0,0,0,.3);
    font-family: inherit;
}

.bn-streaming-pref-btn:hover {
    filter: brightness(1.1);
    transform: translateY(-1px);
}

.bn-streaming-pref-btn:active {
    transform: translateY(0);
}

.bn-streaming-pref-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.bn-streaming-pref-icon svg {
    width: 22px;
    height: 22px;
}

.bn-streaming-pref-label {
    font-size: 14px;
}

/* PHP "Not available" notice */
.bn-streaming-pref-unavailable {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 16px;
    background: rgba(255,255,255,0.05);
    border-radius: 8px;
    color: #888;
    font-size: 13px;
    margin-bottom: 12px;
}

/* "Not available" notice */
.bn-streaming-unavailable {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 16px;
    background: rgba(255,255,255,0.05);
    border-radius: 8px;
    color: #888;
    font-size: 13px;
    margin-bottom: 12px;
}

.bn-streaming-unavailable svg {
    width: 16px;
    height: 16px;
    flex-shrink: 0;
    opacity: .5;
}

/* ═══════════════════════════════════════════════════════════════════════
   4. SPOTIFY BADGE (sticky bar indicator)
   ═══════════════════════════════════════════════════════════════════ */

.bn-spotify-badge {
    display: inline-flex;
    align-items: center;
    margin-left: 6px;
    opacity: 0.85;
    vertical-align: middle;
    line-height: 1;
}

/* Connecting animation: pulse the icon */
.bn-spotify-badge.bn-spotify-connecting svg {
    animation: bn-spotify-pulse 1.2s ease-in-out infinite;
}

@keyframes bn-spotify-pulse {
    0%, 100% { opacity: 0.3; transform: scale(1); }
    50%      { opacity: 1;   transform: scale(1.15); }
}

/* Panel Spotify badge (slide-up panel indicator — icon only, flush left) */
.bn-panel-spotify-badge {
    display: flex;
    align-items: center;
    justify-content: flex-start;
    margin-top: 6px;
    color: #1DB954;
    opacity: 0.7;
    line-height: 1;
}
.bn-panel-spotify-badge svg {
    flex-shrink: 0;
}

/*# sourceURL=bn-streaming-inline-css */
</style>
<link rel='stylesheet' id='bn-album-page-css' href='https://bassnectar.net/wp-content/themes/sonaar-child/css/bn-album-page.css?ver=1773632882' type='text/css' media='all' />
<link rel='stylesheet' id='bn-album-sheet-css' href='https://bassnectar.net/wp-content/themes/sonaar-child/css/bn-album-sheet.css?ver=1773633167' type='text/css' media='all' />
<style id='bn-album-sheet-inline-css' type='text/css'>
.bn-album-sheet { z-index: 7990 !important; }
/*# sourceURL=bn-album-sheet-inline-css */
</style>
<link rel='stylesheet' id='bn-vault-sheet-css' href='https://bassnectar.net/wp-content/themes/sonaar-child/css/bn-vault-sheet.css?ver=1773586424' type='text/css' media='all' />
<style id='bn-vault-sheet-inline-css' type='text/css'>
.bn-vault-sheet { z-index: 100001 !important; }
/*# sourceURL=bn-vault-sheet-inline-css */
</style>
<link rel='stylesheet' id='bnpm-styles-css' href='https://bassnectar.net/wp-content/plugins/bn-protected-media-v2/css/bnpm-styles.css?ver=1772828751' type='text/css' media='all' />
<link rel='stylesheet' id='bn-pwa-styles-css' href='https://bassnectar.net/wp-content/themes/sonaar-child/pwa/pwa-styles.css?ver=1.1.1' type='text/css' media='all' />
<script data-cfasync="false" type="text/javascript" id="jquery-core-js-extra">
/* <![CDATA[ */
var bn_skin_ajax = {"ajax_url":"https://bassnectar.net/wp-admin/admin-ajax.php","nonce":"29bec14909","custom_skins":["vaults","gold"],"custom_skin_bases":{"vaults":"dark","gold":"liquid_glass"},"skin":"omakase","logged_in":"0"};
//# sourceURL=jquery-core-js-extra
/* ]]> */
</script>
<script data-cfasync="false" type="text/javascript" src="https://bassnectar.net/wp-includes/js/jquery/jquery.min.js?ver=3.7.1" id="jquery-core-js"></script>
<script data-cfasync="false" type="text/javascript" src="https://bassnectar.net/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1" id="jquery-migrate-js"></script>
<script data-cfasync="false" type="text/javascript" defer src="https://bassnectar.net/wp-content/plugins/bn-protected-media-v2/bnpm-video-gallery.js?ver=1.4.1.vg25" id="bnpm-video-gallery-js"></script>
<script data-cfasync="false" type="text/javascript" src="https://bassnectar.net/wp-content/plugins/elementor/assets/lib/font-awesome/js/v4-shims.min.js?ver=3.35.5" id="font-awesome-4-shim-js"></script>
<link rel="canonical" href="https://bassnectar.net/" />
<meta name="generator" content="Elementor 3.35.5; features: additional_custom_breakpoints; settings: css_print_method-external, google_font-enabled, font_display-auto">
<style type="text/css">.recentcomments a{display:inline !important;padding:0 !important;margin:0 !important;}</style>			<style>
				.e-con.e-parent:nth-of-type(n+4):not(.e-lazyloaded):not(.e-no-lazyload),
				.e-con.e-parent:nth-of-type(n+4):not(.e-lazyloaded):not(.e-no-lazyload) * {
					background-image: none !important;
				}
				@media screen and (max-height: 1024px) {
					.e-con.e-parent:nth-of-type(n+3):not(.e-lazyloaded):not(.e-no-lazyload),
					.e-con.e-parent:nth-of-type(n+3):not(.e-lazyloaded):not(.e-no-lazyload) * {
						background-image: none !important;
					}
				}
				@media screen and (max-height: 640px) {
					.e-con.e-parent:nth-of-type(n+2):not(.e-lazyloaded):not(.e-no-lazyload),
					.e-con.e-parent:nth-of-type(n+2):not(.e-lazyloaded):not(.e-no-lazyload) * {
						background-image: none !important;
					}
				}
			</style>
						<meta name="theme-color" content="#000000">
			<link rel="icon" href="https://bassnectar.net/wp-content/uploads/2026/01/cropped-maskable_icon-32x32.png" sizes="32x32" />
<link rel="icon" href="https://bassnectar.net/wp-content/uploads/2026/01/cropped-maskable_icon-192x192.png" sizes="192x192" />
<link rel="apple-touch-icon" href="https://bassnectar.net/wp-content/uploads/2026/01/cropped-maskable_icon-180x180.png" />
<meta name="msapplication-TileImage" content="https://bassnectar.net/wp-content/uploads/2026/01/cropped-maskable_icon-270x270.png" />
<style id="bn-holo-overrides">.bn-holo-card{width: 200px;height: 200px;border-radius: 16px;background-color: #605959}.bn-holo-foil{mask-image:url('https://bassnectar.net/wp-content/uploads/bassdrop-white.svg'),url('https://bassnectar.net/wp-content/uploads/bassdrop-white.svg');-webkit-mask-image:url('https://bassnectar.net/wp-content/uploads/bassdrop-white.svg'),url('https://bassnectar.net/wp-content/uploads/bassdrop-white.svg');mask-size:20px;-webkit-mask-size:20px;mask-position:calc(50% + ((var(--x) - 50%) * -0.18)) calc(50% + ((var(--y) - 50%) * -0.18)),calc(50% + ((var(--x) - 50%) * -0.18) + 20px) calc(50% + ((var(--y) - 50%) * -0.18) + 20px);-webkit-mask-position:calc(50% + ((var(--x) - 50%) * -0.18)) calc(50% + ((var(--y) - 50%) * -0.18)),calc(50% + ((var(--x) - 50%) * -0.18) + 20px) calc(50% + ((var(--y) - 50%) * -0.18) + 20px);--factor:-0.18;background-image:repeating-linear-gradient(133deg,#544a00 0%,#00a6d8 4%,#00ff00 11%,#00ffff 18%,#ff00ff 25%,#00ffff 32%,#00ff00 39%,#00a6d8 46%,#544a00 53%,#00a6d8 60%,#00ff00 67%,#00ffff 74%,#ff00ff 81%,#00ffff 88%,#00ff00 95%,#544a00 100%),radial-gradient(ellipse farthest-corner at var(--x) var(--y),white 10%,#333 40%,#1a1a1a 55%,#666 80%);filter:brightness(1.4) contrast(0.85) saturate(2.2)}.bn-holo-glare{background-image:radial-gradient(ellipse 140% 120% at var(--x) var(--y),rgba(255,255,255,0.5) 10%,rgba(255,255,255,0.17) 40%,rgba(2,6,8,0.1) 55%,#020608 100%)}</style>    <style id="bn-header-skin-css">
    /* Dark skin CSS custom properties */
    :root {
        --bn-dark-bg: #0a0a0a;
        --bn-dark-border: rgba(255, 255, 255, 0.15);
        --bn-dark-border-subtle: rgba(255, 255, 255, 0.1);
        --bn-dark-divider: rgba(255, 255, 255, 0.12);
        --bn-dark-text: #ffffff;

        /* Transparent skin CSS custom properties */
        --bn-transparent-blur: 20px;
        --bn-transparent-saturate: 180%;
        --bn-transparent-overlay: rgba(10, 10, 10, 0.5);
        --bn-transparent-border: rgba(10, 10, 10, 0.08);
        --bn-transparent-border-accent: rgba(10, 10, 10, 0.12);
        --bn-transparent-playlist-bg: rgba(10, 10, 10, 0.94);
        --bn-transparent-text: #ffffff;

        /* Liquid Glass skin CSS custom properties */
        --bn-liquid-glass-bg: rgba(64, 64, 64, 0.55);
        --bn-liquid-glass-overlay: rgba(64, 64, 64, 0.35);
        --bn-liquid-glass-blur: 3px;
        --bn-liquid-glass-accent1: rgba(255, 184, 234, 0.5);
        --bn-liquid-glass-accent2: rgba(164, 255, 239, 0.6);
        --bn-liquid-glass-accent3: rgba(168, 150, 255, 0.5);
        --bn-liquid-glass-accent1-solid: rgb(255, 184, 234);
        --bn-liquid-glass-accent2-solid: rgb(164, 255, 239);
        --bn-liquid-glass-accent3-solid: rgb(168, 150, 255);
        --bn-liquid-glass-hover: rgba(164, 255, 239, 0.08);
        --bn-liquid-glass-active: rgba(164, 255, 239, 0.12);
        --bn-liquid-glass-tab-active: rgba(164, 255, 239, 0.1);

        /* Omakase skin CSS custom properties from admin settings */
        --bn-omakase-glass-bg: rgba(64, 64, 64, 0.01);
        --bn-omakase-blur: 40px;
        --bn-omakase-overlay-bg: rgba(64, 64, 64, 0.01);
        --bn-omakase-accent1: rgba(255, 184, 234, 0.5);
        --bn-omakase-accent2: rgba(164, 255, 239, 0.6);
        --bn-omakase-accent3: rgba(168, 150, 255, 0.5);
        --bn-omakase-accent1-solid: rgb(255, 184, 234);
        --bn-omakase-accent2-solid: rgb(164, 255, 239);
        --bn-omakase-accent3-solid: rgb(168, 150, 255);

        
        /* Custom skin: vaults (base: dark) */
        --bn-custom-vaults-bg: #000000;
        --bn-custom-vaults-border: rgba(102, 102, 102, 0.15);
        --bn-custom-vaults-border-subtle: rgba(102, 102, 102, 0.1);
        --bn-custom-vaults-text: #ffffff;
        --bn-custom-vaults-bg-image: url('https://bassnectar.net/wp-content/uploads/ReliveRemix11BLANK-ART-scaled.jpg');
        --bn-custom-vaults-bg-size: cover;

        /* Custom skin: gold (base: liquid_glass) */
        --bn-custom-gold-bg: rgba(64, 64, 64, 0.55);
        --bn-custom-gold-accent1: rgba(255, 184, 234, 0.5);
        --bn-custom-gold-accent2: rgba(164, 255, 239, 0.6);
    }
    </style>
    <link rel="icon" href="https://bassnectar.net/wp-content/uploads/2026/01/cropped-maskable_icon-32x32.png" sizes="32x32" />
<link rel="icon" href="https://bassnectar.net/wp-content/uploads/2026/01/cropped-maskable_icon-192x192.png" sizes="192x192" />
<link rel="apple-touch-icon" href="https://bassnectar.net/wp-content/uploads/2026/01/cropped-maskable_icon-180x180.png" />
<meta name="msapplication-TileImage" content="https://bassnectar.net/wp-content/uploads/2026/01/cropped-maskable_icon-270x270.png" />
</head>
<body class="home wp-singular page-template-default page page-id-3050 wp-custom-logo wp-theme-sonaar wp-child-theme-sonaar-child bn-skin-transparent lang-en-US layout-wide sr-over-content fixed_header _bassnectar elementor-default elementor-template-full-width elementor-kit-4216 elementor-page elementor-page-3050">
	<div id="overlay"><div class="perspective"></div></div>
	
				<div class="sonaar-menu-box"><div class="side-menu">
	<div class="content-menu">
				<a class="site-title" rel="home" href="https://bassnectar.net/" title="BASSNECTAR">
			<img class="logo-desktop regular" src="https://bassnectar.net/wp-content/uploads/2026/01/bassnectar-logo-white1000.png" srcset="https://bassnectar.net/wp-content/uploads/2026/01/bassnectar-logo-white1000.png 1x,https://bassnectar.net/wp-content/uploads/2026/01/bassnectar-logo-white1000.png 2x" alt="BASSNECTAR">
			<img class="logo-mobile regular" src="https://bassnectar.net/wp-content/uploads/2026/01/bassnectar-logo-white1000.png" srcset="https://bassnectar.net/wp-content/uploads/2026/01/bassnectar-logo-white1000.png 1x,https://bassnectar.net/wp-content/uploads/2026/01/bassnectar-logo-white1000.png 2x" alt="BASSNECTAR">
		</a>
		

		<!-- panel -->
		<div class="panel">
			<a class="opener" href="#"><i class="icon-reorder"></i> Menu</a>

			<!-- nav-holder -->
			<div class="nav-holder">

				<!-- nav -->
				<nav id="nav">
										
				</nav>
				<div class="clear"></div>

				<div class="panel-networks">
						<!-- social-networks -->
	<ul class="social-networks">
						  
			<li>
				<a target="_blank" href="https://facebook.com/envato">
											<i class="fa-brands fa-facebook" title="Facebook"></i>
									</a>
			</li>
								  
			<li>
				<a target="_blank" href="https://www.instagram.com">
											<i class="fa-brands fa-instagram" title="Instagram"></i>
									</a>
			</li>
								  
			<li>
				<a target="_blank" href="https://www.soundcloud.com/bassnectar">
											<i class="fa-brands fa-soundcloud" title="Soundcloud"></i>
									</a>
			</li>
			
	</ul>
					<div class="clear"></div>
				</div>

			</div>
		</div>
	</div>
</div>				<header class="opacityzero">						<div class="menu-toggle ">
								<span class="svgfill"></span>
								<span class="svgfill"></span>
								<span class="svgfill"></span>
						</div>						<a href="https://bassnectar.net/" class="site-logo" title="BASSNECTAR">							<img id="menu-trigger" class="logo desktop regular" src="https://bassnectar.net/wp-content/uploads/2026/01/bassnectar-logo-white1000.png" srcset="https://bassnectar.net/wp-content/uploads/2026/01/bassnectar-logo-white1000.png 1x,https://bassnectar.net/wp-content/uploads/2026/01/bassnectar-logo-white1000.png 2x" alt="BASSNECTAR">								<img id="menu-trigger-mobile" class="logo mobile regular" src="https://bassnectar.net/wp-content/uploads/2026/01/bassnectar-logo-white1000.png" alt="BASSNECTAR">						</a>
				</header>
					</div>
		<div id="pusher-wrap" class="pusher-type-push-menu">
			<div id="pusher" class="menu-type-push-menu">
			<div class="pjax-container">
		<div id="wrapper" class="wrapper"> 		<div data-elementor-type="wp-post" data-elementor-id="3050" class="elementor elementor-3050" data-elementor-post-type="page">
				<div class="elementor-element elementor-element-3fe6e3a animated-slow e-con-full e-flex elementor-invisible e-con e-parent" data-id="3fe6e3a" data-element_type="container" data-e-type="container" data-settings="{&quot;background_background&quot;:&quot;classic&quot;,&quot;animation&quot;:&quot;fadeIn&quot;}">
		<div class="elementor-element elementor-element-d03dccb e-con-full e-flex e-con e-child" data-id="d03dccb" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-67d319c elementor-widget elementor-widget-image" data-id="67d319c" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
																<a href="https://bassnectar.net/vaults/videos/tko-music-videos/">
							<img fetchpriority="high" decoding="async" width="1024" height="388" src="https://bassnectar.net/wp-content/uploads/2026/01/bassnectar-logo-white.svg" class="attachment-large size-large wp-image-4492" alt="" />								</a>
															</div>
				</div>
				</div>
				</div>
				</div>
			</div>


		<!-- footer -->
	<footer id="footer">
		<div class="container">
		
				</div>
	</footer>
	<!--- end if elementor footer location -->
	 </div>
		</div>
		</div>
</div>

    <!-- Liquid Glass SVG Filter — wobble displacement effect -->
        <svg class="bn-liquid-glass-svg" aria-hidden="true" style="position:absolute;width:0;height:0;pointer-events:none;">
        <defs>
            <filter id="bn-liquid-glass" filterUnits="userSpaceOnUse" x="-50%" y="-50%" width="200%" height="200%">
                <feTurbulence type="fractalNoise" baseFrequency="0.13" numOctaves="1" seed="60" result="noise"/>
                <feGaussianBlur in="noise" stdDeviation="9" result="blurNoise"/>
                <feDisplacementMap in="SourceGraphic" in2="blurNoise" scale="250" xChannelSelector="R" yChannelSelector="G"/>
            </filter>
        </defs>
    </svg>

    <header class="bn-site-header bn-style-transparent bn-header-sticky" style="--bn-header-bg: #0d0d0d;">
                <!-- Glass layers for wobble displacement (real DOM elements required) -->
        <div class="bn-glass-container">
            <div class="bn-glass-filter"></div>
            <div class="bn-glass-overlay"></div>
            <div class="bn-glass-specular"></div>
        </div>

                <div class="bn-header-gradient-shadow"></div>
                <div class="bn-header-inner">

            <!-- LEFT: Back button + Logo -->
            <div class="bn-header-left">
                                <a href="https://bassnectar.net/" class="bn-header-logo-link">
                                            <img src="https://bassnectar.net/wp-content/uploads/2026/01/bassnectar-logo-white.svg" alt="BASSNECTAR" class="bn-header-logo" style="height: 40px;">
                                    </a>
            </div>

            <!-- CENTER: Optional icon/text links bar -->
            <div class="bn-header-center">
                            </div>

            <!-- RIGHT: Inline search + Auth + Hamburger -->
            <div class="bn-header-right">
                                <div class="bn-inline-search">
                    <button class="bn-header-search-toggle" aria-label="Search">
                        <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                            <circle cx="11" cy="11" r="8"></circle>
                            <line x1="21" y1="21" x2="16.65" y2="16.65"></line>
                        </svg>
                    </button>
                    <form role="search" method="get" action="https://bassnectar.net/" class="bn-inline-search-form">
                        <input type="search" name="s" class="bn-inline-search-input" placeholder="Search..." autocomplete="off" value="">
                    </form>
                </div>
                
                                <a href="/listen/playlists/bass-head-radio/" class="bn-header-radio-btn" id="bn-header-radio-btn" aria-label="Bass Head Radio">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none"><path d="M5.7 15C4.03 13.26 3 10.76 3 8a1 1 0 0 1 2 0c0 2.22.82 4.25 2.17 5.78a1 1 0 0 1-1.47 1.22Z" fill="currentColor" opacity=".5"/><path d="M8.83 12.83A5.96 5.96 0 0 1 7 8a1 1 0 1 1 2 0c0 1.4.52 2.68 1.37 3.66a1 1 0 0 1-1.54 1.17Z" fill="currentColor" opacity=".7"/><path d="M18.3 15a1 1 0 0 1-1.47-1.22A7.96 7.96 0 0 0 19 8a1 1 0 1 1 2 0c0 2.76-1.03 5.26-2.7 7Z" fill="currentColor" opacity=".5"/><path d="M15.17 12.83a1 1 0 0 1-1.54-1.17A5.96 5.96 0 0 0 15 8a1 1 0 1 1 2 0c0 1.76-.68 3.36-1.83 4.83Z" fill="currentColor" opacity=".7"/><circle cx="12" cy="8" r="2" fill="currentColor"/><path d="M12 12a1 1 0 0 1 1 1v7a1 1 0 1 1-2 0v-7a1 1 0 0 1 1-1Z" fill="currentColor"/></svg>
                    <span class="bn-radio-live-indicator" id="bn-radio-live-indicator"></span>
                </a>
                <a href="/vaults/" class="bn-header-cta-btn" aria-label="Vaults"></a>

                <button class="bn-hamburger" aria-label="Open menu" aria-expanded="false">
                    <span class="bn-hamburger-line"></span>
                    <span class="bn-hamburger-line"></span>
                    <span class="bn-hamburger-line"></span>
                </button>
            </div>
        </div>
    </header>

    
    <!-- Slide-out menu panel (from right) -->
    <div class="bn-menu-overlay" aria-hidden="true"></div>
    <nav class="bn-slide-menu" aria-hidden="true">
        <div class="bn-slide-menu-header">
            <button class="bn-slide-menu-close" aria-label="Close menu">
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                    <line x1="18" y1="6" x2="6" y2="18"></line>
                    <line x1="6" y1="6" x2="18" y2="18"></line>
                </svg>
            </button>
        </div>

        <div class="bn-slide-menu-body">
                        <form role="search" method="get" action="https://bassnectar.net/" class="bn-slide-menu-search">
                <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                    <circle cx="11" cy="11" r="8"></circle>
                    <line x1="21" y1="21" x2="16.65" y2="16.65"></line>
                </svg>
                <input type="search" name="s" placeholder="Search..." autocomplete="off">
            </form>
            
            <!-- Auth buttons (below search, top of menu) -->
            <div class="bn-slide-menu-auth">
                                    <div class="bn-slide-auth-row">
                        <a href="https://bassnectar.net/access/?redirect_to=https%3A%2F%2Fbassnectar.net%2F" class="bn-slide-auth-btn bn-slide-signin-btn">
                            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                                <path d="M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4"></path>
                                <polyline points="10 17 15 12 10 7"></polyline>
                                <line x1="15" y1="12" x2="3" y2="12"></line>
                            </svg>
                            <span>SIGN IN</span>
                        </a>
                        <a href="/signup/" class="bn-slide-auth-btn bn-slide-join-btn">
                            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                                <path d="M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z"></path>
                            </svg>
                            <span>JOIN</span>
                        </a>
                    </div>
                            </div>

            <ul id="menu-global-menu" class="bn-slide-menu-nav"><li id="menu-item-24668" class="nav-enhance nav-account menu-item menu-item-type-post_type menu-item-object-page menu-item-24668 bn-nav-account" data-id="menu-item-24668"><a href="https://bassnectar.net/account/">Account</a></li>
<li id="menu-item-17167" class="nav-enhance nav-vaults menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-17167 bn-nav-vaults" data-id="menu-item-17167"><a href="https://bassnectar.net/vaults/">Vaults</a>
<ul class="sub-menu">
	<li id="menu-item-21932" class="vaults-join menu-item menu-item-type-post_type menu-item-object-page menu-item-21932" data-id="menu-item-21932"><a href="https://bassnectar.net/signup/">Join</a></li>
	<li id="menu-item-23288" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-23288" data-id="menu-item-23288"><a href="#">Latest</a></li>
	<li id="menu-item-23289" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-23289" data-id="menu-item-23289"><a href="#">Upcoming</a></li>
</ul>
</li>
<li id="menu-item-7109" class="nav-enhance menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-7109 bn-nav-listen" data-id="menu-item-7109"><a href="/listen/">Listen</a>
<ul class="sub-menu">
	<li id="menu-item-7012" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-7012" data-id="menu-item-7012"><a href="https://bassnectar.net/listen/discography/">Discography</a></li>
	<li id="menu-item-17191" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-17191" data-id="menu-item-17191"><a href="https://bassnectar.net/listen/singles-eps/">Singles &amp; Eps</a></li>
	<li id="menu-item-17190" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-17190" data-id="menu-item-17190"><a href="https://bassnectar.net/listen/conversations/">Conversations</a></li>
	<li id="menu-item-17188" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-17188" data-id="menu-item-17188"><a href="https://bassnectar.net/listen/throwbacks/">Throwbacks</a></li>
	<li id="menu-item-17189" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-17189" data-id="menu-item-17189"><a href="https://bassnectar.net/listen/unreleased/">Unreleased</a></li>
</ul>
</li>
<li id="menu-item-21822" class="nav-enhance menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-21822 bn-nav-memories" data-id="menu-item-21822"><a href="https://bassnectar.net/memories/">Memories</a>
<ul class="sub-menu">
	<li id="menu-item-21826" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-21826" data-id="menu-item-21826"><a href="https://bassnectar.net/memories/live/">live</a></li>
	<li id="menu-item-21825" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-21825" data-id="menu-item-21825"><a href="https://bassnectar.net/memories/family-photos/">family-photos</a></li>
	<li id="menu-item-21827" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-21827" data-id="menu-item-21827"><a href="https://bassnectar.net/memories/art/">art</a></li>
	<li id="menu-item-21823" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-21823" data-id="menu-item-21823"><a href="https://bassnectar.net/memories/culture/">culture</a></li>
	<li id="menu-item-21824" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-21824" data-id="menu-item-21824"><a href="https://bassnectar.net/memories/reminiscence/">reminiscence</a></li>
</ul>
</li>
<li id="menu-item-21927" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-21927 bn-nav-tour nav-enhance" data-id="menu-item-21927"><a href="/shows/">Shows</a></li>
<li id="menu-item-21928" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-21928 bn-nav-connect nav-enhance" data-id="menu-item-21928"><a href="https://bassnectar.net/contact-example-2/">Connect</a>
<ul class="sub-menu">
	<li id="menu-item-21931" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-21931" data-id="menu-item-21931"><a href="/management">Management</a></li>
	<li id="menu-item-21930" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-21930" data-id="menu-item-21930"><a href="/press">Press</a></li>
	<li id="menu-item-21929" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-21929" data-id="menu-item-21929"><a href="/support">Customer Support</a></li>
</ul>
</li>
</ul>        </div>

        <div class="bn-slide-menu-footer"></div>
    </nav>

        <script data-cfasync="false">
    document.addEventListener('DOMContentLoaded', function() {
        'use strict';

        // Guard: prevent duplicate execution (Barba.js PJAX re-injects footer scripts)
        if (window._bnHeaderInitDone) return;
        window._bnHeaderInitDone = true;

        // Fix "#" menu links: a third-party script overwrites real hrefs to "#".
        // We store originals, then use a MutationObserver to restore them.
        (function() {
            var menuNav = document.querySelector('.bn-slide-menu-nav');
            if (!menuNav) return;

            // Capture original hrefs from server HTML before any script changes them
            var originals = {};
            menuNav.querySelectorAll('a').forEach(function(a) {
                var href = a.getAttribute('href');
                var li = a.closest('li');
                if (li && href && href !== '#') {
                    originals[li.id] = href;
                }
            });

            function fixLinks() {
                menuNav.querySelectorAll('a[href="#"]').forEach(function(a) {
                    var li = a.closest('li');
                    if (li && originals[li.id]) {
                        a.setAttribute('href', originals[li.id]);
                    }
                });
            }

            // Fix now
            fixLinks();

            // Watch for future changes and re-fix
            var observer = new MutationObserver(fixLinks);
            observer.observe(menuNav, { subtree: true, attributes: true, attributeFilter: ['href'] });

            // Also fix after short delays in case scripts run late
            setTimeout(fixLinks, 100);
            setTimeout(fixLinks, 500);
            setTimeout(fixLinks, 2000);
        })();

        var header       = document.querySelector('.bn-site-header');
        var hamburger    = document.querySelector('.bn-hamburger');
        var slideMenu    = document.querySelector('.bn-slide-menu');
        var overlay      = document.querySelector('.bn-menu-overlay');
        var closeBtn     = document.querySelector('.bn-slide-menu-close');
        var searchWrap   = document.querySelector('.bn-inline-search');
        var searchBtn    = document.querySelector('.bn-header-search-toggle');
        var searchInput  = document.querySelector('.bn-inline-search-input');

        // --- Sticky header: push body content down ---
        // (When submenu is present, the submenu block handles padding instead)
        if (header && header.classList.contains('bn-header-sticky') && !document.querySelector('.bn-submenu')) {
            var adminBar = document.getElementById('wpadminbar');
            var adminBarH = adminBar ? adminBar.offsetHeight : 0;
            document.body.style.paddingTop = (header.offsetHeight + adminBarH) + 'px';
            window.addEventListener('resize', function() {
                adminBarH = adminBar ? adminBar.offsetHeight : 0;
                document.body.style.paddingTop = (header.offsetHeight + adminBarH) + 'px';
            });
        }

        // --- Slide menu (always slide from right, no fade) ---
        function openMenu() {
            if (!slideMenu || !overlay) return;
            slideMenu.classList.add('active');
            slideMenu.setAttribute('aria-hidden', 'false');
            overlay.classList.add('active');
            overlay.setAttribute('aria-hidden', 'false');
            if (hamburger) {
                hamburger.classList.add('active');
                hamburger.setAttribute('aria-expanded', 'true');
            }
            document.body.classList.add('bn-menu-open');
        }

        function closeMenu() {
            if (!slideMenu || !overlay) return;
            slideMenu.classList.remove('active');
            slideMenu.setAttribute('aria-hidden', 'true');
            overlay.classList.remove('active');
            overlay.setAttribute('aria-hidden', 'true');
            if (hamburger) {
                hamburger.classList.remove('active');
                hamburger.setAttribute('aria-expanded', 'false');
            }
            document.body.classList.remove('bn-menu-open');
        }

        if (hamburger) hamburger.addEventListener('click', function() {
            var isOpen = slideMenu && slideMenu.classList.contains('active');
            isOpen ? closeMenu() : openMenu();
        });

        if (closeBtn) closeBtn.addEventListener('click', closeMenu);
        if (overlay)  overlay.addEventListener('click', closeMenu);

        // --- Auto-close menu when a nav link is clicked ---
        if (slideMenu) {
            slideMenu.querySelectorAll('.bn-slide-menu-nav a, .bn-slide-menu-auth a').forEach(function(link) {
                link.addEventListener('click', function() {
                    closeMenu();
                });
            });
        }

        // --- Inline expanding search ---
        if (searchBtn && searchWrap) {
            searchBtn.addEventListener('click', function(e) {
                e.preventDefault();
                var isOpen = searchWrap.classList.contains('active');
                if (isOpen) {
                    searchWrap.classList.remove('active');
                } else {
                    searchWrap.classList.add('active');
                    if (searchInput) setTimeout(function() { searchInput.focus(); }, 150);
                }
            });

            // Close search when clicking outside
            document.addEventListener('click', function(e) {
                if (searchWrap.classList.contains('active') && !searchWrap.contains(e.target)) {
                    searchWrap.classList.remove('active');
                }
            });
        }

        // Escape key closes everything
        document.addEventListener('keydown', function(e) {
            if (e.key === 'Escape') {
                if (searchWrap) searchWrap.classList.remove('active');
                closeMenu();
            }
        });

        // --- Submenu: scroll fade indicators ---
        (function() {
            var submenu = document.querySelector('.bn-submenu');
            if (!submenu) return;

            var scroller = submenu.querySelector('.bn-submenu-inner');
            var fadeL = submenu.querySelector('.bn-submenu-fade--left');
            var fadeR = submenu.querySelector('.bn-submenu-fade--right');

            function updateFades() {
                if (!scroller || !fadeL || !fadeR) return;
                var sl = scroller.scrollLeft;
                var maxScroll = scroller.scrollWidth - scroller.clientWidth;
                fadeL.classList.toggle('visible', sl > 8);
                fadeR.classList.toggle('visible', sl < maxScroll - 8);
            }

            if (scroller) {
                scroller.addEventListener('scroll', updateFades, { passive: true });
                window.addEventListener('resize', updateFades);
                // Initial check
                updateFades();
                setTimeout(updateFades, 200);
            }

            // --- Position submenu below header & update body padding ---
            if (header && header.classList.contains('bn-header-sticky')) {
                var adminBar = document.getElementById('wpadminbar');
                function updateSubmenuPosition() {
                    var adminBarH = adminBar ? adminBar.offsetHeight : 0;
                    var headerH = header.offsetHeight;
                    var submenuH = submenu ? submenu.offsetHeight : 0;
                    // Set submenu top to clear both admin bar and header
                    submenu.style.setProperty('--bn-submenu-top', (headerH + adminBarH) + 'px');
                    // Body padding accounts for all three bars
                    document.body.style.paddingTop = (headerH + submenuH + adminBarH) + 'px';
                }
                updateSubmenuPosition();
                window.addEventListener('resize', updateSubmenuPosition);
            }
        })();
    });
    </script>
        <!-- SVG Filters for Liquid Glass / Omakase -->
    <svg width="0" height="0" style="position:absolute; pointer-events:none;" aria-hidden="true">
        <defs>
            <filter id="bn-liquid-glass-filter" filterUnits="userSpaceOnUse" x="-50%" y="-50%" width="200%" height="200%">
                <feTurbulence type="fractalNoise" baseFrequency="0.13" numOctaves="1" seed="60" result="noise"/>
                <feGaussianBlur in="noise" stdDeviation="9" result="blurNoise"/>
                <feDisplacementMap in="SourceGraphic" in2="blurNoise" scale="250" xChannelSelector="R" yChannelSelector="G"/>
            </filter>
        </defs>
    </svg>
    <script data-cfasync="false" src="https://cdnjs.cloudflare.com/ajax/libs/glightbox/3.3.0/js/glightbox.min.js"></script><script data-cfasync="false" type="speculationrules">
{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/sonaar-child/*","/wp-content/themes/sonaar/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}
</script>

			<script data-cfasync="false" type="text/javascript">
				var _paq = _paq || [];
								_paq.push(['trackPageView']);
								(function () {
					var u = "https://analytics1.wpmudev.com/";
					_paq.push(['setTrackerUrl', u + 'track/']);
					_paq.push(['setSiteId', '4607']);
					var d   = document, g = d.createElement('script'), s = d.getElementsByTagName('script')[0];
					g.type  = 'text/javascript';
					g.async = true;
					g.defer = true;
					g.src   = 'https://analytics.wpmucdn.com/matomo.js';
					s.parentNode.insertBefore(g, s);
				})();
			</script>
			    <footer class="bn-global-footer">
        <div class="bn-footer-inner">
            <!-- Brand Column -->
            <div class="bn-footer-brand">
                <a href="https://bassnectar.net/" class="bn-footer-brand-link">
                    <span class="bn-footer-logo-bn bn-holo-icon" aria-label="Bassnectar">&#xe906;</span>
                    <span class="bn-footer-logo-vaults bn-holo-icon" aria-label="Vaults">&#xe903;</span>
                </a>
            </div>

            <!-- Nav Columns — driven by WP menus with fallback -->
            <nav class="bn-footer-nav">
                                <div class="bn-footer-col">
                    <button type="button" class="bn-footer-col-toggle" aria-expanded="false">
                        <h4>Listen</h4>
                        <span class="bn-footer-chevron"></span>
                    </button>
                    <div class="bn-footer-col-links">
                                                    <ul><li id="menu-item-23389" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-23389 bn-nav-listen nav-enhance" data-id="menu-item-23389"><a href="https://bassnectar.net/listen/">Music</a></li>
<li id="menu-item-23390" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-23390" data-id="menu-item-23390"><a href="https://bassnectar.net/listen/mixes/">Mixes</a></li>
<li id="menu-item-23391" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-23391" data-id="menu-item-23391"><a href="https://bassnectar.net/listen/live/">Live Sets</a></li>
<li id="menu-item-23392" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-23392" data-id="menu-item-23392"><a href="https://bassnectar.net/listen/collabs/">Collabs</a></li>
</ul>                                            </div>
                </div>
                                <div class="bn-footer-col">
                    <button type="button" class="bn-footer-col-toggle" aria-expanded="false">
                        <h4>Explore</h4>
                        <span class="bn-footer-chevron"></span>
                    </button>
                    <div class="bn-footer-col-links">
                                                    <ul><li id="menu-item-23393" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-23393 bn-nav-vaults nav-enhance" data-id="menu-item-23393"><a href="https://bassnectar.net/vaults/">Vaults</a></li>
<li id="menu-item-23394" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-23394" data-id="menu-item-23394"><a href="https://bassnectar.net/interact/">Interact</a></li>
<li id="menu-item-23395" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-23395 bn-nav-memories nav-enhance" data-id="menu-item-23395"><a href="https://bassnectar.net/memories/">Memories</a></li>
<li id="menu-item-23396" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-23396" data-id="menu-item-23396"><a href="https://bassnectar.net/relive/">Relive</a></li>
</ul>                                            </div>
                </div>
                                <div class="bn-footer-col">
                    <button type="button" class="bn-footer-col-toggle" aria-expanded="false">
                        <h4>Community</h4>
                        <span class="bn-footer-chevron"></span>
                    </button>
                    <div class="bn-footer-col-links">
                                                    <ul><li id="menu-item-23397" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-23397 bn-nav-connect nav-enhance" data-id="menu-item-23397"><a href="https://bassnectar.net/connect/">Connect</a></li>
<li id="menu-item-23398" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-23398 bn-nav-tour nav-enhance" data-id="menu-item-23398"><a href="https://bassnectar.net/tour/">Tour</a></li>
<li id="menu-item-23399" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-23399" data-id="menu-item-23399"><a href="https://bassnectar.net/extras/">Extras</a></li>
<li id="menu-item-23400" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-23400" data-id="menu-item-23400"><a href="https://bassnectar.net/merch/">Merch</a></li>
</ul>                                            </div>
                </div>
                                <div class="bn-footer-col">
                    <button type="button" class="bn-footer-col-toggle" aria-expanded="false">
                        <h4>Account</h4>
                        <span class="bn-footer-chevron"></span>
                    </button>
                    <div class="bn-footer-col-links">
                                                    <ul><li id="menu-item-23401" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-23401 bn-nav-account nav-enhance" data-id="menu-item-23401"><a href="https://bassnectar.net/account/">Profile</a></li>
<li id="menu-item-23402" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-23402" data-id="menu-item-23402"><a href="https://bassnectar.net/support/">Support</a></li>
<li id="menu-item-23403" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-23403 bn-nav-account nav-enhance" data-id="menu-item-23403"><a href="https://bassnectar.net/account/?action=subscriptions">Membership</a></li>
<li id="menu-item-23404" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-23404 bn-nav-account nav-enhance" data-id="menu-item-23404"><a href="https://bassnectar.net/account/?action=gift-cards">Gift Cards</a></li>
</ul>                                            </div>
                </div>
                            </nav>
        </div>

        <!-- PWA Install CTA Bar (Veeps-style) -->
                <div class="bn-footer-pwa-cta" id="bn-footer-pwa-cta">
            <div class="bn-footer-pwa-cta-inner">
                <div class="bn-footer-pwa-cta-left">
                    <span class="bn-footer-pwa-cta-icon bn-holo-icon">&#xe903;</span>
                    <div class="bn-footer-pwa-cta-text">
                        <strong>Install Bassnectar Vaults</strong>
                        <span>Get the app experience</span>
                    </div>
                </div>
                <button type="button" class="bn-footer-pwa-cta-btn" id="bn-footer-pwa-btn">Install</button>
                <button type="button" class="bn-footer-pwa-cta-close" id="bn-footer-pwa-cta-close" aria-label="Dismiss">&times;</button>
            </div>
        </div>
        
        <div class="bn-footer-bottom">
            <span>&copy; 2026 Bassnectar. All rights reserved.</span>
        </div>
    </footer>

    <script data-cfasync="false">
    (function() {
        if (window._bnFooterInitDone) return;
        window._bnFooterInitDone = true;

        document.addEventListener('click', function(e) {
            var toggle = e.target.closest('.bn-footer-col-toggle');
            if (!toggle) return;
            var col = toggle.closest('.bn-footer-col');
            if (!col) return;
            var expanded = toggle.getAttribute('aria-expanded') === 'true';
            document.querySelectorAll('.bn-footer-col.is-open').forEach(function(openCol) {
                if (openCol !== col) {
                    openCol.classList.remove('is-open');
                    var t = openCol.querySelector('.bn-footer-col-toggle');
                    if (t) t.setAttribute('aria-expanded', 'false');
                }
            });
            toggle.setAttribute('aria-expanded', String(!expanded));
            col.classList.toggle('is-open');
        });

        document.addEventListener('click', function(e) {
            if (e.target.closest('#bn-footer-pwa-btn')) {
                if (typeof window.BNPwa !== 'undefined' && window.BNPwa.promptInstall) {
                    window.BNPwa.promptInstall();
                }
                return;
            }
            if (e.target.closest('#bn-footer-pwa-cta-close')) {
                var cta = document.getElementById('bn-footer-pwa-cta');
                if (cta) cta.style.display = 'none';
                document.cookie = 'bn_pwa_cta_dismissed=1;path=/;max-age=' + (7 * 86400);
                return;
            }
        });

        if (window.matchMedia('(display-mode: standalone)').matches || navigator.standalone) {
            var cta = document.getElementById('bn-footer-pwa-cta');
            if (cta) cta.style.display = 'none';
        }
    })();
    </script>
    			<script data-cfasync="false">
				const lazyloadRunObserver = () => {
					const lazyloadBackgrounds = document.querySelectorAll( `.e-con.e-parent:not(.e-lazyloaded)` );
					const lazyloadBackgroundObserver = new IntersectionObserver( ( entries ) => {
						entries.forEach( ( entry ) => {
							if ( entry.isIntersecting ) {
								let lazyloadBackground = entry.target;
								if( lazyloadBackground ) {
									lazyloadBackground.classList.add( 'e-lazyloaded' );
								}
								lazyloadBackgroundObserver.unobserve( entry.target );
							}
						});
					}, { rootMargin: '200px 0px 200px 0px' } );
					lazyloadBackgrounds.forEach( ( lazyloadBackground ) => {
						lazyloadBackgroundObserver.observe( lazyloadBackground );
					} );
				};
				const events = [
					'DOMContentLoaded',
					'elementor/lazyload/observe',
				];
				events.forEach( ( event ) => {
					document.addEventListener( event, lazyloadRunObserver );
				} );
			</script>
			<style>
.playerNowPlaying .album-art-link {
  display: block;
  cursor: pointer;
  text-decoration: none;
  transition: opacity 0.2s ease;
  position: relative;
  z-index: 300;
}
.playerNowPlaying .album-art-link:hover {
  opacity: 0.8;
}

/* Extended Player Blurred Background */
.srp_extendedPlayer_container {
  background-color: #000000 !important;
}

.srp_extendedPlayer_scrolling_box {
  --album-bg-image: none;
  overflow: hidden;
  position: relative;
}

/* Blurred album art background */
.srp_extendedPlayer_scrolling_box::before {
  content: '';
  position: absolute;
  top: -10%;
  left: -10%;
  right: -10%;
  bottom: -10%;
  background-image: var(--album-bg-image);
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  filter: blur(20px) brightness(.9);
  transform: scale(1.1);
  z-index: 0;
  pointer-events: none;
  transition: background-image 0.3s ease;
}

/* Dark overlay for readability */
.srp_extendedPlayer_scrolling_box::after {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: rgba(0, 0, 0, 0.5);
  z-index: 1;
  pointer-events: none;
}

.srp_extendedPlayer {
  position: relative;
  z-index: 2;
  background-color: transparent !important;
}

/* Prevent body scroll when extended player or tracklist is open */
body.srp-modal-open {
  overflow: hidden !important;
  position: fixed !important;
  width: 100% !important;
  height: 100% !important;
}
</style>
<div v-cloak id="sonaar-player" :class="[{enable: !minimize , 'show-list': showList, sr_hide: classes.emptyPlayer, 'srp_mobile': isSmallDevice,'srp_has_spectrum': classes.spectrum, srp_ext_opened: extendedPlayerOpened && isSmallDevice, 'audio-playing': isPlaying, 'srp_no_artwork': !hasArtwork, 'srp_sticky_has_ext': list.tracks.length >= 1 && outputTrackDescription }, classType, templateType, floatPos ]" style="display:none;" :data-ui-items="sr_countUIitems">
<audio id="sonaar-audio"></audio>
  <transition name="sonaar-player-slidefade" v-on:after-enter="playlistAfterEnter">
    <div class="playlist" v-if="showList">
      <div class="scroll">
        <div class="container">
          <div class="boxed">
            <div class="sricon-close close"  @click="setshowList" v-if="isSmallDevice"></div>
            <div class="title"  v-if="(playListTitle.length >= 1)">{{playListTitle}}</div>
            <button class="play" @click="play">{{ playLabelButton }}</button>
            <div class="trackscroll">
              <ul class="tracklist">
                <li v-for="(track, index) in list.tracks" :key="track.id" @click="clickTrackList(index)" :class="index == currentTrack ? 'active' : '' ">
                  <div class="srp_track_control">
                    <span class="sricon-play"></span>
                    <span class="track-status">{{ index + 1 }}</span>
                  </div>
                  <span class="track-title"><span class="content" @mouseover="scroll">{{ track.track_title }}</span></span>
                  <span class="track-artist"  v-if="classes.author"><span class="content" v-if="track.track_artist">{{ track.track_artist }}</span></span>
                  <span class="track-album"><span class="content">{{ track.album_title }}</span></span>
                  <span class="track-lenght" v-if="track.length"><span class="content">{{ track.length }}</span></span>
                  <span class="track-store" v-if="(track.song_store_list.length || (typeof track.album_store_list != 'undefined' && track.album_store_list.length) )">
                    <a v-for="(store, storeIndex) in track.song_store_list" :href="store['link-option'] == 'popup' ? '#!': store['store-link']" :target="store['store-target'] || store['link-option'] == 'popup' ? '_self': '_blank'" :download="ifDownloadAttribute(store)" @click="ctaClick(store, $(event.target))"><i class="track-store-item" :class="store['store-icon']"></i></a>
                    <a v-for="(store, storeIndex) in track.album_store_list"
                      :href="store['link-option'] == 'popup' || (store['has-variation'] == true && classes.wc_variation_lb) ? '#!': store['store-link']"
                      v-bind:class="[
                          store['make-offer-bt'] ? 'srp-make-offer-bt' : 
                          (classes.wc_ajax_add_to_cart && store['has-variation'] == false) ? 'add_to_cart_button ajax_add_to_cart' : ''
                      ]"
                      :target="store['store-target'] || store['link-option'] == 'popup' ? '_self': '_blank'"
                      :download="ifDownloadAttribute(store)"
                      :data-product_id="(store['product-id'] !== undefined) ? store['product-id'] : false"
                      @click="ctaClick(store, $(event.target))">
                      <i class="track-store-item" :class="store['store-icon']"></i>
                    </a>
                  </span>
                </li>
              </ul>
            </div>
          </div>
        </div>
      </div>
    </div>

  </transition>

  <div role="button" tabindex="0" aria-label="Close Playlist" class="sricon-close btn_playlist" v-if="showList" @click="setshowList"></div>
  <div :class="[(list.tracks.length >= 2)?'player':'player no-list', showControlsHover, isDraggable]">
    <div class="close btn-player"  :class="{
        'sricon-down-arrow': !minimize || minimize === undefined,
        'enable': !minimize,
        'storePanel': list.tracks.length >= 1 && albumStoreList.length >= 1
    }" @click="closePlayer" v-if="list.tracks.length >= 1 && !showList">
    <svg class="audioBar" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" x="0px" y="0px" viewBox="0 0 17 17" enable-background="new 0 0 17 17" xml:space="preserve">
        <rect x="0" width="2" height="16" transform="translate(0)">
          <animate attributeName="height" attributeType="XML" dur="1s" values="2;16;2" repeatCount="indefinite" />
        </rect>
        <rect x="5" width="2" height="16" transform="translate(0)">
          <animate attributeName="height" attributeType="XML" dur="1s" values="2;16;2" repeatCount="indefinite" begin="0.3s" />
        </rect>
        <rect x="10" width="2" height="16" transform="translate(0)">
          <animate attributeName="height" attributeType="XML" dur="1s" values="2;16;2" repeatCount="indefinite" begin="0.5s" />
        </rect>
        <rect x="15" width="2" height="16" transform="translate(0)">
          <animate attributeName="height" attributeType="XML" dur="1s" values="2;16;2" repeatCount="indefinite" begin="0.3s" />
        </rect>
      </svg>
    </div>
    <div class="mobilePanel">
      <div class="mobileProgress" v-if="stickyProgressBar">
        <div class="skip" @touchmove="scrollingProgressBar"></div>
        <div class="mobileProgressing"></div>
        <div class="progressDot"></div>
      </div>
    </div>
    <div class="player-row" @click="clickPlayer($event)">
      <div :class="(hasArtwork)?'playerNowPlaying ':'playerNowPlaying no-image '" v-if="list.tracks.length >= 1">
        <a v-if="hasArtwork && currentAlbumUrl" :href="currentAlbumUrl" class="album-art-link">
          <div class="album-art" :class="{'loading-enable': !classes.waveEnable, 'loading': loading < 100 }">
            <i class="fas fa-circle-notch fa-spin fa-2x fa-fw loading-icon"></i>
            <img class="hover" alt="artwork-hover" :src="list.tracks[currentTrack].poster" />
            <img alt="Player Audio Artwork" :src="list.tracks[currentTrack].poster" />
          </div>
        </a>
        <div v-else-if="hasArtwork" class="album-art" :class="{'loading-enable': !classes.waveEnable, 'loading': loading < 100 }">
          <i class="fas fa-circle-notch fa-spin fa-2x fa-fw loading-icon"></i>
          <img class="hover" alt="artwork-hover" :src="list.tracks[currentTrack].poster" />
          <img alt="Player Audio Artwork" :src="list.tracks[currentTrack].poster" />
        </div>
        <div class="metadata">
          <div class="metadata-inner">
            <div class="track-name" @mouseover="scroll">{{list.tracks[currentTrack].track_title}}{{list.tracks[currentTrack].track_artist && typeof sonaar_music.option.show_artist_name != 'undefined' ? ' ' + sonaar_music.option.artist_separator + ' ' + list.tracks[currentTrack].track_artist:''}}</div>
            <div class="track-album" @mouseover="scroll" v-if="classes.show_album_title && list.tracks[currentTrack].album_title">{{list.tracks[currentTrack].album_title}}</div>
            <div class="track-artist" @mouseover="scroll" v-html="'by ' + list.tracks[currentTrack].album_artist" v-if="!classes.author && list.tracks[currentTrack].album_artist"></div>
          </div>
        </div>
      </div>
      <div class="playerNowPlaying" v-else></div>
      <control :player="this"></control>
      <waveform :player="this" v-if="! isSmallDevice"></waveform>



      <sonaar-extend-button :player="this" v-if="! isSmallDevice"></sonaar-extend-button>
      <store :player="this"></store>
      <div role="button" aria-label="Volume Control" class="volume control--item">
          <div class="sricon-volume" :title="sonaar_music.option.tooltip_volume_btn" :class="mute ? 'active' : '' " @mouseenter="sr_updateSlider" @click="sr_muteTrigger">
            <div class="slider-container">
              <div class="slide"></div>
          </div>
          </div>
        </div>
      </div>
  </div>
  <div class="srp_extendedPlayer_container" :class="[{srp_opened: extendedPlayerOpened}]"  v-if="isSmallDevice">  
    <div class="srp_extendedPlayer_scrolling_box">
      <div class="srp_extendedPlayer" :class="[{srp_opened_cta: extendedPlayerOverlayOpened}]" @click="extendedPlayerClickOutside">
        <div class="srp_ext_primary">
          <div class="srp_ext_header" v-if="list.tracks.length >= 1">
            <i class="sricon-down-arrow srp_collapse_btn" @click="closeExtendedPlayer"></i>
            <div class="srp_playlist_title" @click="closeExtendedPlayer">{{ list.tracks[currentTrack].album_title }}</div>
            <i class="sricon-3-dots-v srp_ellipsis_btn" @click="openExtendedPlayerOverlay" v-if="list.tracks[currentTrack].song_store_list.length || IRON.sonaar.player.albumStoreList.length"></i>
            <div v-if="!list.tracks[currentTrack].song_store_list.length && !IRON.sonaar.player.albumStoreList.length"></div>
          </div>
          <div class="srp_ext_artwork" v-if="list.tracks.length >= 1 && hasArtwork">
            <img alt="Player Audio Artwork" :src="list.tracks[currentTrack].poster" />
          </div>  
          <div class="srp_ext_content">
            <div class="srp_ext_track" v-if="list.tracks.length >= 1">
              <div class="srp_ext_track_info">
                <div class="srp_track_title">{{list.tracks[currentTrack].track_title}}</div>
                <div class="srp_artist">{{list.tracks[currentTrack].track_artist }}</div>
              </div>
              <cta :player="this" :storeid="'srp-fav-bt'" :label=false></cta>
            </div>
            <waveform :player="this"></waveform>
            <div class="srp_ext_control" v-if="list.tracks.length >= 1">
              <div class="srp_control_left">
                <div role="button" tabindex="0" aria-label="Shuffle Track" :title="sonaar_music.option.tooltip_shuffle_btn" class="shuffle control--item sricon-shuffle" :class="shuffle ? 'active' : '' " @click="sr_shuffleToggle" v-if="list.tracks.length > 1 && classes.show_shuffle_bt"></div>
              </div>
              <div class="control" :class="[{srp_ctrl_advanced: classes.show_skip_bt}]">
                <div role="button" tabindex="0" aria-label="Rewind 15 seconds" :title="sonaar_music.option.tooltip_rwd_btn" class="sr_skipBackward sricon-15s" @click="sr_audioSkipTo(-1 * classes.skipBackward)" v-if="classes.show_skip_bt"></div>
                <div role="button" tabindex="0" aria-label="Previous Track" :title="sonaar_music.option.tooltip_prev_btn" class="previous control--item sricon-back" @click="previous" v-if="list.tracks.length > 1 && classes.show_nextprevious_bt"></div>
                <div role="button" tabindex="0" aria-label="Play / Pause" :title="sonaar_music.option.tooltip_play_btn" class="play control--item sricon-play" @click="play"></div>
                <div role="button" tabindex="0" aria-label="Next Track" :title="sonaar_music.option.tooltip_next_btn" class="next control--item sricon-forward" @click="next" v-if="list.tracks.length > 1 && classes.show_nextprevious_bt"></div>
                <div role="button" tabindex="0" aria-label="Forward 30 seconds" :title="sonaar_music.option.tooltip_fwrd_btn" class="sr_skipForward sricon-30s" @click="sr_audioSkipTo(classes.skipForward)" v-if="classes.show_skip_bt"></div>
              </div>
              <div class="srp_control_right">
                <div role="button" tabindex="0" aria-label="Speed Rates" :title="sonaar_music.option.tooltip_speed_btn" class="sr_speedRate" :class="classes.speedRate != 1 ? 'active' : '' " @click="sr_setSpeedRate" v-if="classes.show_speed_bt"><div>{{classes.speedRate}}X</div></div>
                <div role="button" tabindex="0" aria-label="Repeat" :title="sonaar_music.option.tooltip_repeat_btn" class="srp_repeat sricon-repeat control--item" @click="IRON.repeatButtonToggle" :data-repeat-status="repeatStatus" v-if="repeatButton && !classes.notrackskip"></div>
              </div>
            </div>
            <div class="srp_ext_featured_cta" v-if="list.tracks.length >= 1">
              <div class="srp_ext_featured_cta_left">
                <div role="button" tabindex="0" aria-label="View Tracklist" :title="sonaar_music.option.tooltip_tracklist_btn" class="list control--item sricon-list" @click="setshowList" v-if="list.tracks.length > 1 && classes.show_tracklist_bt"></div>
              </div>
              <div class="srp_ext_featured_cta_center" @click="closeExtendedPlayer"></div>
              <div class="srp_ext_featured_cta_right">
                  <cta class="srp_ext_cta_share" :player="this" :storeid="'sr_store_force_share_bt'" :label=false></cta>
                  <cta class="srp_ext_cta_addtocart" :player="this" :storeid="'fas fa-cart-plus'" :label=true></cta>
                  <cta class="srp_ext_cta_buynow" :player="this" :storeid="'fas fa-shopping-cart'" :label=true></cta>
              </div>
            </div>
          </div>
        </div>
        <div class="srp_ext_secondary" v-if="list.tracks.length >= 1 && outputTrackDescription" @click="extendedScrolldown">
          <div v-html="outputTrackDescription" class="srp_ext_section"></div>
        </div>
        
      </div>
    </div>

    <div class="srp_ext_overlay_panel_outside" v-if="list.tracks.length >= 1 && extendedPlayerOverlayOpened" @click="closeExtendedPlayerOverlay"></div>
    <div class="srp_ext_overlay_panel" :class="[{srp_opened: extendedPlayerOverlayOpened}]" v-if="list.tracks.length >= 1">
      <div class="sricon-close close"  @click="closeExtendedPlayerOverlay"></div>
        <div class="srp_ext_cta">
          <div class="srp_ext_track_info_wrapper">
            <div class="srp_ext_artwork" v-if="list.tracks.length >= 1 && hasArtwork">
              <img alt="Player Audio Artwork" :src="list.tracks[currentTrack].poster" />
            </div>
            <div class="srp_ext_track_info">
              <div class="srp_track_title">{{list.tracks[currentTrack].track_title}}</div>
              <div class="srp_artist">{{list.tracks[currentTrack].track_artist }}</div>
            </div>
          </div>
         
          <cta :player="this" :storeid="'fas fa-cart-plus'" :label=true></cta>
          <cta :player="this" :storeid="'fas fa-shopping-cart'" :label=true></cta>
          <cta :player="this" :storeid="'sr_store_force_dl_bt'" :label=true></cta>
          <cta :player="this" :storeid="'sr_store_force_share_bt'" :label=true></cta>
          <cta :player="this" :storeid="'srp-fav-bt'" :label=true></cta>
          <cta :player="this" :storeid="'sr_store_force_pl_bt'" :label=true></cta>
          <span v-for="(cta) in list.tracks[currentTrack].song_store_list">
            <a :href="cta['store-link']" target="_blank" @click="ctaClick(cta, $(event.target))">
              <i :class="cta['store-icon']"></i>
              {{ cta['store-name'] }}
            </a>
          </span>
      </div>
    </div>
  </div>
</div><script data-cfasync="false" type="text/javascript" id="bassnectar-custom-scripts-js-extra">
/* <![CDATA[ */
var bn_gallery = {"ajax_url":"https://bassnectar.net/wp-admin/admin-ajax.php","nonce":"486e945e88"};
//# sourceURL=bassnectar-custom-scripts-js-extra
/* ]]> */
</script>
<script data-cfasync="false" type="text/javascript" src="https://bassnectar.net/wp-content/themes/sonaar-child/scripts.js?ver=1773544082.11" id="bassnectar-custom-scripts-js"></script>
<script data-cfasync="false" type="text/javascript" src="https://bassnectar.net/wp-content/plugins/elementor/assets/js/webpack.runtime.min.js?ver=3.35.5" id="elementor-webpack-runtime-js"></script>
<script data-cfasync="false" type="text/javascript" src="https://bassnectar.net/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=3.35.5" id="elementor-frontend-modules-js"></script>
<script data-cfasync="false" type="text/javascript" src="https://bassnectar.net/wp-includes/js/jquery/ui/core.min.js?ver=1.13.3" id="jquery-ui-core-js"></script>
<script data-cfasync="false" type="text/javascript" id="elementor-frontend-js-before">
/* <![CDATA[ */
var elementorFrontendConfig = {"environmentMode":{"edit":false,"wpPreview":false,"isScriptDebug":false},"i18n":{"shareOnFacebook":"Share on Facebook","shareOnTwitter":"Share on Twitter","pinIt":"Pin it","download":"Download","downloadImage":"Download image","fullscreen":"Fullscreen","zoom":"Zoom","share":"Share","playVideo":"Play Video","previous":"Previous","next":"Next","close":"Close","a11yCarouselPrevSlideMessage":"Previous slide","a11yCarouselNextSlideMessage":"Next slide","a11yCarouselFirstSlideMessage":"This is the first slide","a11yCarouselLastSlideMessage":"This is the last slide","a11yCarouselPaginationBulletMessage":"Go to slide"},"is_rtl":false,"breakpoints":{"xs":0,"sm":480,"md":768,"lg":1025,"xl":1440,"xxl":1600},"responsive":{"breakpoints":{"mobile":{"label":"Mobile Portrait","value":767,"default_value":767,"direction":"max","is_enabled":true},"mobile_extra":{"label":"Mobile Landscape","value":880,"default_value":880,"direction":"max","is_enabled":false},"tablet":{"label":"Tablet Portrait","value":1024,"default_value":1024,"direction":"max","is_enabled":true},"tablet_extra":{"label":"Tablet Landscape","value":1200,"default_value":1200,"direction":"max","is_enabled":false},"laptop":{"label":"Laptop","value":1366,"default_value":1366,"direction":"max","is_enabled":false},"widescreen":{"label":"Widescreen","value":2400,"default_value":2400,"direction":"min","is_enabled":false}},"hasCustomBreakpoints":false},"version":"3.35.5","is_static":false,"experimentalFeatures":{"additional_custom_breakpoints":true,"container":true,"theme_builder_v2":true,"nested-elements":true,"home_screen":true,"global_classes_should_enforce_capabilities":true,"e_variables":true,"cloud-library":true,"e_opt_in_v4_page":true,"e_components":true,"e_interactions":true,"e_editor_one":true,"import-export-customization":true,"e_pro_variables":true},"urls":{"assets":"https:\/\/bassnectar.net\/wp-content\/plugins\/elementor\/assets\/","ajaxurl":"https:\/\/bassnectar.net\/wp-admin\/admin-ajax.php","uploadUrl":"https:\/\/bassnectar.net\/wp-content\/uploads"},"nonces":{"floatingButtonsClickTracking":"618ff9dae4"},"swiperClass":"swiper","settings":{"page":[],"editorPreferences":[]},"kit":{"stretched_section_container":"body","body_background_background":"classic","viewport_mobile":767,"viewport_tablet":1024,"active_breakpoints":["viewport_mobile","viewport_tablet"],"global_image_lightbox":"yes","lightbox_enable_counter":"yes","lightbox_enable_fullscreen":"yes","lightbox_enable_zoom":"yes","lightbox_enable_share":"yes","lightbox_title_src":"title","lightbox_description_src":"description"},"post":{"id":3050,"title":"BASSNECTAR%20%E2%80%93%20Explore%20the%20latest%20music%2C%20events%2C%20photos%20and%20updates%20from%20the%20Bassnectar%20project.%20Unlock%20over%2025%20years%20of%20bass%20in%20the%20Bassnectar%20Vaults.","excerpt":"","featuredImage":false}};
//# sourceURL=elementor-frontend-js-before
/* ]]> */
</script>
<script data-cfasync="false" type="text/javascript" defer src="https://bassnectar.net/wp-content/plugins/elementor/assets/js/frontend.min.js?ver=3.35.5" id="elementor-frontend-js"></script>
<script data-cfasync="false" type="text/javascript" src="https://bassnectar.net/wp-content/themes/sonaar-child/bn-navigator.js?ver=1773216984" id="bn-navigator-js"></script>
<script data-cfasync="false" type="text/javascript" id="bn-player-js-extra">
/* <![CDATA[ */
var bnPlayerConfig = {"ajaxUrl":"https://bassnectar.net/wp-admin/admin-ajax.php","restUrl":"https://bassnectar.net/wp-json/bnpm/v1/","nonce":"e311717a38","loggedIn":"","userId":"0"};
//# sourceURL=bn-player-js-extra
/* ]]> */
</script>
<script data-cfasync="false" type="text/javascript" src="https://bassnectar.net/wp-content/themes/sonaar-child/bn-player.js?ver=1773559641" id="bn-player-js"></script>
<script data-cfasync="false" type="text/javascript" id="bn-streaming-core-js-extra">
/* <![CDATA[ */
var bnStreamingConfig = {"preference":"none","connections":[],"loggedIn":"","ajaxUrl":"https://bassnectar.net/wp-admin/admin-ajax.php","nonce":"70d895c7c4","spotifyClientId":"f3c5bb69240d44e7bafa1a72cccf75b7","spotifyConnected":"","redirectUri":"https://bassnectar.net/streaming-callback/","spotifyScopes":"streaming user-read-email user-read-private user-modify-playback-state user-read-playback-state"};
//# sourceURL=bn-streaming-core-js-extra
/* ]]> */
</script>
<script data-cfasync="false" type="text/javascript" src="https://bassnectar.net/wp-content/plugins/bn-streaming/assets/js/bn-streaming-core.js?ver=1.4.14" id="bn-streaming-core-js"></script>
<script data-cfasync="false" type="text/javascript" id="bn-album-sheet-js-before">
/* <![CDATA[ */
window.__bnSheetVer=1773607847;
//# sourceURL=bn-album-sheet-js-before
/* ]]> */
</script>
<script data-cfasync="false" type="text/javascript" src="https://bassnectar.net/wp-content/themes/sonaar-child/bn-album-sheet.js?ver=1773633855" id="bn-album-sheet-js"></script>
<script data-cfasync="false" type="text/javascript" id="bn-vault-sheet-js-extra">
/* <![CDATA[ */
var wpApiSettings = {"nonce":"e311717a38","root":"https://bassnectar.net/wp-json/"};
//# sourceURL=bn-vault-sheet-js-extra
/* ]]> */
</script>
<script data-cfasync="false" type="text/javascript" src="https://bassnectar.net/wp-content/themes/sonaar-child/bn-vault-sheet.js?ver=1773463537" id="bn-vault-sheet-js"></script>
<script data-cfasync="false" type="text/javascript" defer src="https://bassnectar.net/wp-content/themes/sonaar-child/pwa/pwa-init.js?ver=1773532790" id="bn-pwa-init-js"></script>
<script data-cfasync="false" type="text/javascript" src="https://bassnectar.net/wp-content/plugins/elementor-pro/assets/js/webpack-pro.runtime.min.js?ver=3.35.1" id="elementor-pro-webpack-runtime-js"></script>
<script data-cfasync="false" type="text/javascript" src="https://bassnectar.net/wp-includes/js/dist/hooks.min.js?ver=dd5603f07f9220ed27f1" id="wp-hooks-js"></script>
<script data-cfasync="false" type="text/javascript" src="https://bassnectar.net/wp-includes/js/dist/i18n.min.js?ver=c26c3dc7bed366793375" id="wp-i18n-js"></script>
<script data-cfasync="false" type="text/javascript" id="wp-i18n-js-after">
/* <![CDATA[ */
wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } );
//# sourceURL=wp-i18n-js-after
/* ]]> */
</script>
<script data-cfasync="false" type="text/javascript" id="elementor-pro-frontend-js-before">
/* <![CDATA[ */
var ElementorProFrontendConfig = {"ajaxurl":"https:\/\/bassnectar.net\/wp-admin\/admin-ajax.php","nonce":"7c76e9c386","urls":{"assets":"https:\/\/bassnectar.net\/wp-content\/plugins\/elementor-pro\/assets\/","rest":"https:\/\/bassnectar.net\/wp-json\/"},"settings":{"lazy_load_background_images":true},"popup":{"hasPopUps":false},"shareButtonsNetworks":{"facebook":{"title":"Facebook","has_counter":true},"twitter":{"title":"Twitter"},"linkedin":{"title":"LinkedIn","has_counter":true},"pinterest":{"title":"Pinterest","has_counter":true},"reddit":{"title":"Reddit","has_counter":true},"vk":{"title":"VK","has_counter":true},"odnoklassniki":{"title":"OK","has_counter":true},"tumblr":{"title":"Tumblr"},"digg":{"title":"Digg"},"skype":{"title":"Skype"},"stumbleupon":{"title":"StumbleUpon","has_counter":true},"mix":{"title":"Mix"},"telegram":{"title":"Telegram"},"pocket":{"title":"Pocket","has_counter":true},"xing":{"title":"XING","has_counter":true},"whatsapp":{"title":"WhatsApp"},"email":{"title":"Email"},"print":{"title":"Print"},"x-twitter":{"title":"X"},"threads":{"title":"Threads"}},"facebook_sdk":{"lang":"en_US","app_id":""},"lottie":{"defaultAnimationUrl":"https:\/\/bassnectar.net\/wp-content\/plugins\/elementor-pro\/modules\/lottie\/assets\/animations\/default.json"}};
//# sourceURL=elementor-pro-frontend-js-before
/* ]]> */
</script>
<script data-cfasync="false" type="text/javascript" defer src="https://bassnectar.net/wp-content/plugins/elementor-pro/assets/js/frontend.min.js?ver=3.35.1" id="elementor-pro-frontend-js"></script>
<script data-cfasync="false" type="text/javascript" src="https://bassnectar.net/wp-content/plugins/elementor-pro/assets/js/elements-handlers.min.js?ver=3.35.1" id="pro-elements-handlers-js"></script>
    <script data-cfasync="false">
    (function(){
        function bnIsLoggedIn() {
            return document.cookie.split(";").some(function(c) {
                return c.trim().indexOf("bn_logged_in=") === 0;
            });
        }

        function bnBuildAuthNav() {
            var nav = document.querySelector('.side-menu .nav-holder');
            if (!nav) return;
            var existing = nav.querySelector('.bn-menu-auth-row');
            if (existing) existing.remove();

            var loggedIn = bnIsLoggedIn();
            var authRow = document.createElement('div');
            authRow.className = 'bn-menu-auth-row';

            if (loggedIn) {
                authRow.innerHTML =
                    '<a href="/account/" class="bn-menu-auth-btn bn-menu-signin-btn" data-barba-prevent>' +
                        '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/></svg>' +
                        '<span>ACCOUNT</span>' +
                    '</a>' +
                    '<a href="#" class="bn-menu-auth-btn bn-menu-signout-btn" id="bn-signout-link">' +
                        '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"/><polyline points="16 17 21 12 16 7"/><line x1="21" y1="12" x2="9" y2="12"/></svg>' +
                        '<span>SIGN OUT</span>' +
                    '</a>';
            } else {
                authRow.innerHTML =
                    '<a href="/access/" class="bn-menu-auth-btn bn-menu-signin-btn" data-barba-prevent>' +
                        '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4"/><polyline points="10 17 15 12 10 7"/><line x1="15" y1="12" x2="3" y2="12"/></svg>' +
                        '<span>SIGN IN</span>' +
                    '</a>' +
                    '<a href="/signup/" class="bn-menu-auth-btn bn-menu-join-btn" data-barba-prevent>' +
                        '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z"/></svg>' +
                        '<span>JOIN</span>' +
                    '</a>';
            }

            var firstSection = nav.querySelector('.menu');
            if (firstSection) {
                nav.insertBefore(authRow, firstSection);
            } else {
                nav.insertBefore(authRow, nav.firstChild);
            }

            var signoutBtn = document.getElementById('bn-signout-link');
            if (signoutBtn) {
                signoutBtn.addEventListener('click', function(e) {
                    e.preventDefault();
                    e.stopImmediatePropagation();
                    // Clear JS auth cookie immediately before navigating
                    document.cookie = 'bn_logged_in=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/';
                    window.location.href = 'https://bassnectar.net/?bn_logout=1&amp;_wpnonce=15a64ce6be';
                }, true);
            }
        }

        // Build on load
        bnBuildAuthNav();

        // Expose globally so it can be called after Barba transitions
        window.bnBuildAuthNav = bnBuildAuthNav;
        window.bnLogoutUrl = 'https://bassnectar.net/?bn_logout=1&amp;_wpnonce=15a64ce6be';
    })();
    </script>
    
        <style>#bn-popup-23351 .bn-popup-heading {
font-size: 20px;
letter-spacing:0;
}</style>
    
    <!-- BN Pop-up: Welcome to Bassnectar Vaults -->
    <div class="bn-popup-overlay bn-popup-has-login" id="bn-popup-23351" style="display:none;align-items:center;justify-content:center;"
         data-trigger="page_load"
         data-delay="3"
         data-scroll="50"
         data-dismiss='{&quot;type&quot;:&quot;permanent&quot;,&quot;days&quot;:30,&quot;key&quot;:&quot;bn_popup_23351&quot;}'
         data-popup-id="23351">
        <div class="bn-popup-backdrop" style="background:rgba(0,0,0,0.65);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);"></div>
        <div class="bn-popup-modal" style="background:#0a0000;border-radius:16px;">
            <button type="button" class="bn-popup-close" aria-label="Close">&times;</button>

                        <!-- TWO-COLUMN LAYOUT -->
            <div class="bn-popup-columns">
                <div class="bn-popup-col-content">
                                        <div class="bn-popup-image">
                        <img src="https://bassnectar.net/wp-content/uploads/vaults-with-icon.svg" alt="">
                    </div>
                    
                                        <h2 class="bn-popup-heading">The Bassnectar Vaults are open!</h2>
                    
                                        <div class="bn-popup-text"><strong>Level up.</strong> The Other Side is now the Bassnectar Vaults. We've merged TOS &amp; bassnectar.net into one unified experience with a new look, more content, &amp; expanded features to explore it all.

<em>Existing TOS subscribers (Freestyle | Unlocked | Gold): Your account is ready to go. Use the <em><strong>magic link</strong></em> option to authorize your account and start exploring.</em></div>
                    
                    
                                        <div class="bn-popup-ctas">
                        <a href="https://bassnectar.net/vaults" class="bn-popup-cta bn-popup-cta-primary">Explore The Vaults</a>
                                                <a href="https://bassnectar.net/support" class="bn-popup-cta bn-popup-cta-secondary">Need Help?</a>
                                            </div>
                                    </div>

                <div class="bn-popup-col-login">
                        <div class="bnp-login-form-wrap">
        <p class="bnp-login-subtitle">Sign in or create an account to continue.</p>

        <!-- Social Login Buttons -->
        <div class="bnp-login-social">
                            <button type="button" class="bnp-login-btn bnp-login-btn-discord" onclick="window.open('https://discord.com/oauth2/authorize?client_id=1473576170220945488&#038;redirect_uri=https%3A%2F%2Fbassnectar.net%2F%3Fbn_discord_callback%3D1&#038;response_type=code&#038;scope=identify%20email%20guilds.join&#038;state=5c207d1816&#038;prompt=consent','_blank','width=500,height=700');return false;">
                    <svg width="20" height="20" viewBox="0 0 48 48" fill="currentColor" xmlns="http://www.w3.org/2000/svg"><path d="M40.23 8.57a39.3 39.3 0 00-9.7-3.01.15.15 0 00-.16.07 27.37 27.37 0 00-1.2 2.48 36.27 36.27 0 00-10.34 0A25.1 25.1 0 0017.6 5.63a.15.15 0 00-.16-.07 39.2 39.2 0 00-9.7 3.01.14.14 0 00-.06.05C3.55 14.9 2.06 21 2.82 27.01a.16.16 0 00.06.11 39.5 39.5 0 0011.89 6.01.15.15 0 00.17-.06 28.24 28.24 0 002.43-3.96.15.15 0 00-.08-.21 26.03 26.03 0 01-3.72-1.77.15.15 0 01-.01-.26c.25-.19.5-.38.74-.58a.15.15 0 01.15-.02c7.81 3.57 16.26 3.57 23.98 0a.15.15 0 01.16.02c.24.2.49.4.74.58a.15.15 0 01-.01.26c-1.19.69-2.42 1.28-3.72 1.77a.15.15 0 00-.08.21 31.7 31.7 0 002.43 3.96.15.15 0 00.16.06 39.39 39.39 0 0011.91-6.01.15.15 0 00.06-.11c.9-9.38-1.52-17.53-6.42-24.75a.12.12 0 00-.06-.05zM16.96 23.46c-2.14 0-3.9-1.97-3.9-4.38s1.73-4.38 3.9-4.38 3.94 1.97 3.9 4.38c0 2.41-1.73 4.38-3.9 4.38zm14.41 0c-2.14 0-3.9-1.97-3.9-4.38s1.73-4.38 3.9-4.38 3.94 1.97 3.9 4.38c0 2.41-1.73 4.38-3.9 4.38z"/></svg>
                    Continue with Discord
                </button>
                                </div>

        <!-- Email Login Form (hidden by default) -->
        <div class="bnp-login-email-form" id="bnp-email-login" style="">
            <div class="bnp-login-divider"><span>Sign in with email</span></div>

            <!-- Tab toggle: Password / Magic Link -->
            <div class="bnp-login-tabs">
                <button type="button" class="bnp-login-tab active" data-tab="password" data-prefix="bnp">Password</button>
                <button type="button" class="bnp-login-tab" data-tab="magic" data-prefix="bnp">Magic Link</button>
            </div>

            <!-- Form panels (stacked grid so container keeps the taller panel's height) -->
            <div class="bnp-login-panels">
                <!-- Password form -->
                <form class="bnp-login-form bnp-login-panel active" id="bnp-password-form" data-ajax="true">
                    <input type="text" name="log" placeholder="Email or username" required autocomplete="username" class="bnp-login-input">
                    <input type="password" name="pwd" placeholder="Password" required autocomplete="current-password" class="bnp-login-input">
                    <input type="hidden" name="redirect_to" value="https://bassnectar.net/">
                    <div class="bnp-login-form-error" id="bnp-password-error" style="display:none;"></div>
                    <button type="submit" class="bnp-login-btn bnp-login-btn-accent">Sign In</button>
                    <button type="button" class="bnp-login-forgot" onclick="var tabs=document.querySelectorAll('.bnp-login-tab');if(tabs.length>1){tabs[1].click();}return false;">Forgot password? Use a magic link</button>
                </form>

                <!-- Magic Link form -->
                <form class="bnp-login-form bnp-login-panel" id="bnp-magic-form" data-ajax="true">
                    <p class="bnp-magic-desc">We'll send a login link to your email — no password needed.</p>
                    <input type="email" name="email" placeholder="Your email address" required autocomplete="email" class="bnp-login-input">
                    <button type="submit" class="bnp-login-btn bnp-login-btn-accent">Send Login Link</button>
                    <div class="bnp-magic-status" id="bnp-magic-status"></div>
                </form>
            </div>
        </div>

        <!-- Signup prompt -->
        <div class="bnp-login-signup-prompt">
                            <p>Don't have an account? <button type="button" class="bnp-login-link-btn" onclick="window.open('https://bassnectar.net/vaults/freestyle/','_blank');return false;">Sign up free</button> or <button type="button" class="bnp-login-link-btn" onclick="window.open('https://bassnectar.net/vaults/unlocked/','_blank');return false;">Subscribe to Unlocked</button></p>
                    </div>
    </div>

    <script data-cfasync="false">
    (function() {
        var prefix = 'bnp';
        var isPopup = true;

        // Email toggle — use button, no navigation possible
        var toggle = document.getElementById(prefix + '-email-toggle');
        var emailSection = document.getElementById(prefix + '-email-login');
        if (toggle && emailSection) {
            toggle.addEventListener('click', function(e) {
                e.preventDefault();
                e.stopPropagation();
                emailSection.style.display = emailSection.style.display === 'none' ? 'block' : 'none';
            });
        }

        // Tab switching
        var tabs = document.querySelectorAll('.' + prefix + '-login-tab');
        tabs.forEach(function(tab) {
            tab.addEventListener('click', function(e) {
                e.preventDefault();
                e.stopPropagation();
                var p = this.getAttribute('data-prefix');
                this.parentElement.querySelectorAll('.' + p + '-login-tab').forEach(function(t) { t.classList.remove('active'); });
                this.classList.add('active');
                var target = this.getAttribute('data-tab');
                var pwdPanel = document.getElementById(p + '-password-form');
                var magicPanel = document.getElementById(p + '-magic-form');
                if (target === 'password') {
                    pwdPanel.classList.add('active');
                    magicPanel.classList.remove('active');
                } else {
                    magicPanel.classList.add('active');
                    pwdPanel.classList.remove('active');
                }
            });
        });

        // Password login via AJAX
        var pwdForm = document.getElementById(prefix + '-password-form');
        if (pwdForm) {
            pwdForm.addEventListener('submit', function(e) {
                e.preventDefault();
                e.stopPropagation();
                var log = this.querySelector('input[name="log"]').value;
                var pwd = this.querySelector('input[name="pwd"]').value;
                var redirectTo = this.querySelector('input[name="redirect_to"]').value;
                var btn = this.querySelector('button[type="submit"]');
                var errorEl = document.getElementById(prefix + '-password-error');

                errorEl.style.display = 'none';
                btn.disabled = true;
                btn.textContent = 'Signing in...';

                var formData = new FormData();
                formData.append('action', 'bn_password_login');
                formData.append('log', log);
                formData.append('pwd', pwd);
                formData.append('nonce', '9167888a35');
                formData.append('redirect_to', redirectTo);

                fetch('https://bassnectar.net/wp-admin/admin-ajax.php', {
                    method: 'POST',
                    body: formData,
                    credentials: 'same-origin',
                }).then(function(r) { return r.json(); }).then(function(data) {
                    if (data.success && data.data.redirect) {
                        var _rUrl = data.data.redirect.replace(/[?&]_bn_auth=\d+/, "");
                        var _rSep = _rUrl.indexOf("?") !== -1 ? "&" : "?";
                        window.location.href = _rUrl + _rSep + "_bn_auth=" + Date.now();
                    } else {
                        errorEl.textContent = data.data.message || 'Invalid email or password.';
                        errorEl.style.display = 'block';
                        btn.disabled = false;
                        btn.textContent = 'Sign In';
                    }
                }).catch(function() {
                    errorEl.textContent = 'Something went wrong. Please try again.';
                    errorEl.style.display = 'block';
                    btn.disabled = false;
                    btn.textContent = 'Sign In';
                });
            });
        }

        // Magic link AJAX
        var magicForm = document.getElementById(prefix + '-magic-form');
        if (magicForm) {
            magicForm.addEventListener('submit', function(e) {
                e.preventDefault();
                e.stopPropagation();
                var email = this.querySelector('input[name="email"]').value;
                var status = document.getElementById(prefix + '-magic-status');
                var btn = this.querySelector('button[type="submit"]');

                btn.disabled = true;
                btn.textContent = 'Sending...';

                var formData = new FormData();
                formData.append('action', 'bn_send_magic_link');
                formData.append('email', email);
                formData.append('nonce', '1c341c1f1c');

                fetch('https://bassnectar.net/wp-admin/admin-ajax.php', {
                    method: 'POST',
                    body: formData,
                    credentials: 'same-origin',
                }).then(function(r) { return r.json(); }).then(function(data) {
                    status.textContent = data.data.message;
                    status.style.display = 'block';
                    btn.disabled = false;
                    btn.textContent = 'Send Login Link';
                }).catch(function() {
                    status.textContent = 'Something went wrong. Please try again.';
                    status.style.display = 'block';
                    btn.disabled = false;
                    btn.textContent = 'Send Login Link';
                });
            });
        }
    })();
    </script>
                    </div>
            </div>

                    </div>
    </div>

    <script data-cfasync="false">
    (function() {
        'use strict';
        var overlay = document.getElementById('bn-popup-23351');
        if (!overlay) return;

        var trigger   = overlay.dataset.trigger;
        var delay     = parseInt(overlay.dataset.delay, 10) || 3;
        var scrollPct = parseInt(overlay.dataset.scroll, 10) || 50;
        var dismiss   = JSON.parse(overlay.dataset.dismiss || '{}');
        var shown     = false;

        function isDismissed() {
            if (dismiss.type === 'none') return false;
            if (dismiss.type === 'session') {
                return sessionStorage.getItem(dismiss.key) === '1';
            }
            var cookies = document.cookie.split(';');
            for (var i = 0; i < cookies.length; i++) {
                if (cookies[i].trim().indexOf(dismiss.key + '=') === 0) return true;
            }
            return false;
        }

        function markDismissed() {
            if (dismiss.type === 'session') {
                sessionStorage.setItem(dismiss.key, '1');
            } else if (dismiss.type === 'permanent') {
                document.cookie = dismiss.key + '=1; max-age=' + (365*24*60*60) + '; path=/;';
            } else if (dismiss.type === 'days') {
                document.cookie = dismiss.key + '=1; max-age=' + (dismiss.days*24*60*60) + '; path=/;';
            }
        }

        function showPopup() {
            if (shown || isDismissed()) return;
            shown = true;
            overlay.style.display = 'flex';
            document.body.classList.add('bn-popup-open');
            requestAnimationFrame(function() {
                overlay.classList.add('bn-popup-visible');
            });
        }

        function hidePopup() {
            overlay.classList.remove('bn-popup-visible');
            document.body.classList.remove('bn-popup-open');
            markDismissed();
            setTimeout(function() { overlay.style.display = 'none'; }, 300);
        }

        overlay.querySelector('.bn-popup-close').addEventListener('click', hidePopup);
        overlay.querySelector('.bn-popup-backdrop').addEventListener('click', hidePopup);
        document.addEventListener('keydown', function(e) {
            if (e.key === 'Escape' && shown) hidePopup();
        });

                if (isDismissed()) return;

        if (trigger === 'page_load') {
            setTimeout(showPopup, 500);
        } else if (trigger === 'delay') {
            setTimeout(showPopup, delay * 1000);
        } else if (trigger === 'scroll') {
            var scrollHandler = function() {
                var scrolled = (window.scrollY / (document.documentElement.scrollHeight - window.innerHeight)) * 100;
                if (scrolled >= scrollPct) {
                    showPopup();
                    window.removeEventListener('scroll', scrollHandler);
                }
            };
            window.addEventListener('scroll', scrollHandler, { passive: true });
        } else if (trigger === 'exit_intent') {
            document.addEventListener('mouseout', function(e) {
                if (e.clientY <= 0) showPopup();
            });
        }
            })();
    </script>
        <script data-cfasync="false">
    document.addEventListener('DOMContentLoaded', function() {
        document.querySelectorAll('iframe[src*="vimeo"]').forEach(function(iframe) {
            var src = iframe.src;
            if (!src) return;
            var changed = false;
            if (/[?&]autoplay=1/.test(src)) {
                src = src.replace(/([?&])autoplay=1(&?)/, '$1$2');
                changed = true;
            }
            if (/[?&]muted=1/.test(src)) {
                src = src.replace(/([?&])muted=1(&?)/, '$1$2');
                changed = true;
            }
            if (changed) {
                // Clean up URL artifacts
                src = src.replace(/\?&/, '?').replace(/&&+/g, '&').replace(/[?&]$/, '');
                iframe.src = src;
            }
        });
    });
    </script>
        <script data-cfasync="false">
    // Detect modal mode and add class
    (function() {
        var urlParams = new URLSearchParams(window.location.search);
        if (urlParams.get('bnpm_modal') === '1' || window.self !== window.top) {
            document.body.classList.add('bnpm-modal-mode');

            // Replace product name with "ALL ACCESS" in pricing table
            document.addEventListener('DOMContentLoaded', function() {
                // Replace product name with "ALL ACCESS" everywhere
                var nameEls = document.querySelectorAll('.bn-checkout-title, .page-title h1, .mepr-signup-pricing-table th, .mepr-product-name, .mepr-page-title, .mp_header h3');
                nameEls.forEach(function(el) {
                    var text = el.textContent.trim().toLowerCase();
                    if (text === 'unlocked' || text.indexOf('unlock') !== -1) {
                        el.textContent = 'ALL ACCESS';
                    }
                });
                // Hide <hr> and coupon toggle
                document.querySelectorAll('hr').forEach(function(hr) { hr.style.display = 'none'; });
                document.querySelectorAll('.have-coupon, .have-coupon-link, .mepr-has-coupon-link, .mepr_coupon_link, .mepr-coupon-toggle').forEach(function(el) { el.style.display = 'none'; });
            });
        }
    })();
    
    jQuery(document).ready(function($) {
        // ============================================
        // ACCOUNT PAGE ENHANCEMENTS
        // Uses CSS Grid + order for layout (no DOM manipulation)
        // Uses AJAX preloading for instant tab switching
        // ============================================
        var $accountNav = $('#mepr-account-nav');
        
        if ($accountNav.length) {
            // Helper to apply per-tab enhancements
            function applyAccountEnhancements() {
                var $wm = $('#mepr-account-welcome-message');
                if ($wm.length) {
                    var fn = $('input[name="user_first_name"]').val();
                    var dn = fn || '';
                    if (dn) $wm.text('Hey there, ' + dn);
                }
                // Add logout button if not already present
                var $cw = $('.entry .mp_wrapper').eq(1);
                if ($cw.length && !$cw.find('.bnpm-logout-btn').length && bnpmLogoutUrl) {
                    $cw.append('<a href="' + bnpmLogoutUrl + '" class="bnpm-logout-btn">Log Out</a>');
                }
            }
            
            // Get logout URL before hiding it
            var $logoutLi = $accountNav.find('li:last-child');
            var $logoutA = $logoutLi.find('a');
            var bnpmLogoutUrl = ($logoutA.length && $logoutA.text().trim().toLowerCase() === 'logout') ? $logoutA.attr('href') : null;
            
            // Apply enhancements on current page
            applyAccountEnhancements();
            
            // --- AJAX Tab Preloading ---
            var tabCache = {};
            var currentAction = new URLSearchParams(window.location.search).get('action') || 'home';
            var basePath = window.location.pathname;
            
            // Cache current content
            var $contentArea = $('.entry .mp_wrapper').eq(1);
            if ($contentArea.length) {
                tabCache[currentAction] = $contentArea.html();
            }
            
            // Preload other tabs
            ['home', 'subscriptions', 'payments', 'courses'].forEach(function(action) {
                if (action === currentAction) return;
                fetch(basePath + '?action=' + action, {credentials: 'same-origin'})
                    .then(function(r) { return r.text(); })
                    .then(function(html) {
                        var doc = new DOMParser().parseFromString(html, 'text/html');
                        var wrappers = doc.querySelectorAll('.entry .mp_wrapper');
                        var content = wrappers.length > 1 ? wrappers[1] : wrappers[0];
                        if (content) tabCache[action] = content.innerHTML;
                    })
                    .catch(function() {});
            });
            
            // Intercept tab clicks
            $accountNav.find('li a').on('click', function(e) {
                var url = new URL($(this).attr('href'), window.location.origin);
                var action = url.searchParams.get('action') || 'home';
                if (action === 'logout') return; // let logout navigate normally
                if (!tabCache[action]) return; // not cached yet, let normal nav happen
                
                e.preventDefault();
                
                // Update active tab
                $accountNav.find('li').removeClass('mepr-active-nav-tab');
                $(this).closest('li').addClass('mepr-active-nav-tab');
                
                // Swap content
                $contentArea.html(tabCache[action]);
                
                // Re-apply enhancements
                applyAccountEnhancements();
                
                // Update URL
                window.history.pushState({action: action}, '', basePath + '?action=' + action);
            });
            
            // Handle back/forward
            window.addEventListener('popstate', function(e) {
                var action = e.state ? e.state.action : (new URLSearchParams(window.location.search).get('action') || 'home');
                if (tabCache[action] && $contentArea.length) {
                    $accountNav.find('li').removeClass('mepr-active-nav-tab');
                    $accountNav.find('li a').each(function() {
                        var u = new URL($(this).attr('href'), window.location.origin);
                        if ((u.searchParams.get('action') || 'home') === action) {
                            $(this).closest('li').addClass('mepr-active-nav-tab');
                        }
                    });
                    $contentArea.html(tabCache[action]);
                    applyAccountEnhancements();
                }
            });
        }
        
        // Handle option selection for Elementor-based layouts
        var currentProduct = null;
        
        // Single purchase option click
        $(".bnpm-option-single, [data-bnpm-option='single']").css("cursor", "pointer").on("click", function(e) {
            e.preventDefault();
            e.stopPropagation();
            
            // Remove selected from all options
            $(".bnpm-option-single, .bnpm-option-all-access").removeClass("bnpm-selected");
            
            // Add selected to this one
            $(this).addClass("bnpm-selected");
            
            // Update data if available
            if (window.bnpmAccessData) {
                currentProduct = window.bnpmAccessData.singleProduct;
            }
            
            // Also update modal options if they exist
            $(".bnpm-product-option").removeClass("selected");
            $(".bnpm-product-option[data-product='" + currentProduct + "']").addClass("selected")
                .find("input").prop("checked", true);
            
            console.log("BNPM: Selected single option");
        });
        
        // All access option click
        $(".bnpm-option-all-access, [data-bnpm-option='all-access']").css("cursor", "pointer").on("click", function(e) {
            e.preventDefault();
            e.stopPropagation();
            
            // Remove selected from all options
            $(".bnpm-option-single, .bnpm-option-all-access").removeClass("bnpm-selected");
            
            // Add selected to this one
            $(this).addClass("bnpm-selected");
            
            // Update data if available
            if (window.bnpmAccessData) {
                currentProduct = window.bnpmAccessData.allAccessProduct;
            }
            
            // Also update modal options if they exist
            $(".bnpm-product-option").removeClass("selected");
            $(".bnpm-product-option[data-product='" + currentProduct + "']").addClass("selected")
                .find("input").prop("checked", true);
            
            console.log("BNPM: Selected all-access option");
        });
        
        // Unlock button click - opens modal with selected product
        $(".bnpm-unlock-btn").on("click", function(e) {
            e.preventDefault();
            
            // Determine which product based on selection
            var selectedSingle = $(".bnpm-option-single.bnpm-selected").length > 0;
            var productType = selectedSingle ? "single" : "all-access";
            
            // If modal function exists, open it
            if (typeof bnpmOpenModal === "function") {
                bnpmOpenModal(productType);
            } else if (window.bnpmAccessData) {
                // Fallback - redirect to MemberPress registration
                var productId = selectedSingle ? window.bnpmAccessData.singleProduct : window.bnpmAccessData.allAccessProduct;
                if (productId) {
                    window.location.href = window.bnpmAccessData.registerUrl + "?membership=" + productId;
                }
            }
        });
        
        console.log("BNPM: Selection script loaded. Found " + $(".bnpm-option-single").length + " single options and " + $(".bnpm-option-all-access").length + " all-access options.");
    });
    </script>
        <script data-cfasync="false">
    if (typeof jQuery !== 'undefined') {
        jQuery.ajaxPrefilter(function(options) {
            if (options.url && options.url.indexOf('load=playlist.json') !== -1 && options.url.indexOf('_cb=') === -1) {
                options.url += (options.url.indexOf('?') !== -1 ? '&' : '?') + '_cb=' + Date.now();
            }
        });
    }
    </script>
    <div class="bnpm-um-overlay" id="bn-auth-overlay"></div><div class="bnpm-um-modal bn-auth-modal" id="bn-auth-modal"
          data-freestyle-url="https://bassnectar.net/vaults/freestyle/"
          data-unlocked-url="https://bassnectar.net/vaults/unlocked/"
          data-ajax-url="https://bassnectar.net/wp-admin/admin-ajax.php"
          data-login-nonce="9167888a35"
          data-magic-nonce="1c341c1f1c"
          data-discord-url="https://discord.com/oauth2/authorize?client_id=1473576170220945488&#038;redirect_uri=https%3A%2F%2Fbassnectar.net%2F%3Fbn_discord_callback%3D1&#038;response_type=code&#038;scope=identify%20email%20guilds.join&#038;state=5c207d1816&#038;prompt=consent"
          data-forgot-url="https://bassnectar.net/wp-login.php?action=lostpassword"><button class="bnpm-um-close" id="bn-auth-close">&times;</button><div class="bnpm-um-screen bnpm-um-screen-active" data-screen="main"><div class="bnpm-um-icon"><svg viewBox="0 0 306.17 309.99" width="50" height="50" fill="currentColor"><path d="M215.71,202.53h-14.55v-48.86c0-4.19-.56-8.24-1.6-12.11-5.35-19.87-23.51-34.53-45.04-34.53h-2.9c-21.54,0-39.71,14.68-45.04,34.56-1.04,3.86-1.6,7.91-1.6,12.08v48.86h-14.55c-4.19,0-7.6,3.41-7.6,7.6v92.27c0,4.19,3.41,7.6,7.6,7.6h125.27c4.19,0,7.6-3.41,7.6-7.6v-92.27c0-4.19-3.41-7.6-7.6-7.6ZM168.16,286.13h-29.93l5.02-31.53c-1.45-1.15-2.7-2.56-3.67-4.14-1.53-2.48-2.33-5.34-2.33-8.25,0-8.72,7.1-15.82,15.82-15.82s15.82,7.1,15.82,15.82c0,2.91-.8,5.77-2.33,8.25-.92,1.5-2.1,2.85-3.45,3.97l5.04,31.71ZM181.86,170.16v32.37h-57.57v-3.01s0-29.35,0-29.35v-16.51c0-7.24,2.86-14.09,8.04-19.29,2.34-2.34,5.03-4.2,7.93-5.55,3.53-1.63,7.39-2.5,11.36-2.5h2.9c3.97,0,7.83.86,11.35,2.49,2.91,1.34,5.59,3.21,7.94,5.55,5.19,5.19,8.05,12.04,8.05,19.29v16.5Z"/></svg></div><h3 class="bnpm-um-title">SIGN IN TO CONTINUE</h3><p class="bnpm-um-subtitle">Sign in or create a free account to access this feature.</p><button type="button" class="bnpm-um-discord-btn" id="bn-auth-discord-btn"><svg width="20" height="20" viewBox="0 0 48 48" fill="currentColor"><path d="M40.23 8.57a39.3 39.3 0 00-9.7-3.01.15.15 0 00-.16.07 27.37 27.37 0 00-1.2 2.48 36.27 36.27 0 00-10.34 0A25.1 25.1 0 0017.6 5.63a.15.15 0 00-.16-.07 39.2 39.2 0 00-9.7 3.01.14.14 0 00-.06.05C3.55 14.9 2.06 21 2.82 27.01a.16.16 0 00.06.11 39.5 39.5 0 0011.89 6.01.15.15 0 00.17-.06 28.24 28.24 0 002.43-3.96.15.15 0 00-.08-.21 26.03 26.03 0 01-3.72-1.77.15.15 0 01-.01-.26c.25-.19.5-.38.74-.58a.15.15 0 01.15-.02c7.81 3.57 16.26 3.57 23.98 0a.15.15 0 01.16.02c.24.2.49.4.74.58a.15.15 0 01-.01.26c-1.19.69-2.42 1.28-3.72 1.77a.15.15 0 00-.08.21 31.7 31.7 0 002.43 3.96.15.15 0 00.16.06 39.39 39.39 0 0011.91-6.01.15.15 0 00.06-.11c.9-9.38-1.52-17.53-6.42-24.75a.12.12 0 00-.06-.05zM16.96 23.46c-2.14 0-3.9-1.97-3.9-4.38s1.73-4.38 3.9-4.38 3.94 1.97 3.9 4.38c0 2.41-1.73 4.38-3.9 4.38zm14.41 0c-2.14 0-3.9-1.97-3.9-4.38s1.73-4.38 3.9-4.38 3.94 1.97 3.9 4.38c0 2.41-1.73 4.38-3.9 4.38z"/></svg> Continue with Discord</button><div class="bnpm-um-divider"><span>or sign in with email</span></div><div class="bn-auth-tabs"><button type="button" class="bn-auth-tab active" data-tab="password">Password</button><button type="button" class="bn-auth-tab" data-tab="magic">Magic Link</button></div><div class="bn-auth-tab-content" id="bn-auth-tab-password"><input type="text" class="bnpm-um-input" id="bn-auth-user" placeholder="Email or username" autocomplete="username"><input type="password" class="bnpm-um-input" id="bn-auth-pass" placeholder="Password" autocomplete="current-password"><p class="bnpm-um-login-error" id="bn-auth-error"></p><button type="button" class="bnpm-um-submit" id="bn-auth-login-btn">Sign In</button><div class="bnpm-um-login-loading" id="bn-auth-login-loading" style="display:none;"><div class="bnpm-um-spinner"></div><p>Signing in...</p></div><p class="bn-auth-forgot"><a href="#" id="bn-auth-forgot-link">Forgot password? Use a magic link</a></p></div><div class="bn-auth-tab-content" id="bn-auth-tab-magic" style="display:none;"><p class="bn-auth-magic-desc">We'll send a login link to your email — no password needed.</p><input type="email" class="bnpm-um-input" id="bn-auth-magic-email" placeholder="Your email address" autocomplete="email"><button type="button" class="bnpm-um-submit" id="bn-auth-magic-btn">Send Login Link</button><div class="bn-auth-magic-status" id="bn-auth-magic-status" style="display:none;"></div></div><div class="bnpm-um-divider bn-auth-signup-divider"><span>or create an account</span></div><div class="bnpm-um-options"><label class="bnpm-um-option" data-product="freestyle"><input type="radio" name="bn_auth_product" value="freestyle"><span class="bnpm-um-option-radio"></span><span class="bnpm-um-option-name">Freestyle Access</span><span class="bnpm-um-option-price">FREE</span></label><label class="bnpm-um-option" data-product="unlocked"><input type="radio" name="bn_auth_product" value="unlocked"><span class="bnpm-um-option-radio"></span><div class="bnpm-um-option-details"><span class="bnpm-um-option-name">Unlocked | All Access</span><span class="bnpm-um-option-desc">Unlock unlimited all-access to all Bassnectar Vault content.</span></div><span class="bnpm-um-option-price">$9.99</span></label></div><button class="bnpm-um-submit bn-auth-signup-submit" id="bn-auth-signup-btn">Sign Up</button></div><div class="bnpm-um-screen" data-screen="checkout"><button class="bnpm-um-back bn-auth-back">&larr; Back</button><div class="bnpm-um-loading" id="bn-auth-checkout-loading"><div class="bnpm-um-spinner"></div><p>Loading...</p></div><iframe class="bnpm-um-iframe" id="bn-auth-iframe" frameborder="0" allow="payment"></iframe></div><div class="bnpm-um-screen" data-screen="success"><div class="bnpm-um-success-icon"><svg viewBox="0 0 24 24" width="48" height="48" fill="none" stroke="#a4ffef" stroke-width="2"><circle cx="12" cy="12" r="10"></circle><polyline points="8,12 11,15 16,9" stroke-linecap="round" stroke-linejoin="round"></polyline></svg></div><h3 class="bnpm-um-title">You're In!</h3><p class="bnpm-um-subtitle">Your access has been granted. Enjoy!</p></div></div><script data-cfasync="false">
(function(){
    "use strict";
    var authModal = document.getElementById("bn-auth-modal");
    var authOverlay = document.getElementById("bn-auth-overlay");
    if (!authModal || !authOverlay) return;
    document.body.appendChild(authOverlay);
    document.body.appendChild(authModal);

    var cfg = { freestyleUrl: authModal.dataset.freestyleUrl, unlockedUrl: authModal.dataset.unlockedUrl, ajaxUrl: authModal.dataset.ajaxUrl, loginNonce: authModal.dataset.loginNonce, magicNonce: authModal.dataset.magicNonce, discordUrl: authModal.dataset.discordUrl, forgotUrl: authModal.dataset.forgotUrl };
    var authScreens = authModal.querySelectorAll(".bnpm-um-screen");
    var authOptions = authModal.querySelectorAll(".bnpm-um-option");
    var selectedPlan = null;
    var authIframe = document.getElementById("bn-auth-iframe");
    var checkoutLoading = document.getElementById("bn-auth-checkout-loading");
    var pollInterval = null;

    function showAuthScreen(n) { authScreens.forEach(function(s) { s.classList.remove("bnpm-um-screen-active"); }); var t = authModal.querySelector('[data-screen="' + n + '"]'); if (t) t.classList.add("bnpm-um-screen-active"); authModal.scrollTop = 0; }
    function openAuthModal() { authOverlay.classList.add("active"); authModal.classList.add("active"); document.body.style.overflow = "hidden"; document.body.classList.add("bnpm-modal-open"); }
    function closeAuthModal() { authOverlay.classList.remove("active"); authModal.classList.remove("active"); document.body.style.overflow = ""; document.body.classList.remove("bnpm-modal-open"); if (authIframe) authIframe.src = ""; if (pollInterval) { clearInterval(pollInterval); pollInterval = null; } }
    function softRefresh() { var _u = window.location.href.replace(/[?&]_bn_auth=\d+/, ""); var _s = _u.indexOf("?") !== -1 ? "&" : "?"; window.location.href = _u + _s + "_bn_auth=" + Date.now(); }
    function startLoginPoll() { if (pollInterval) return; var ct = 0; pollInterval = setInterval(function() { if (++ct > 150) { clearInterval(pollInterval); pollInterval = null; return; } fetch(cfg.ajaxUrl, { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: "action=bn_check_logged_in", credentials: "same-origin" }).then(function(r) { return r.json(); }).then(function(d) { if (d.success && d.data.logged_in) { clearInterval(pollInterval); pollInterval = null; showAuthScreen("success"); setTimeout(function() { closeAuthModal(); softRefresh(); }, 1500); } }).catch(function() {}); }, 2000); }

    // Tab switching
    var authTabs = authModal.querySelectorAll(".bn-auth-tab");
    authTabs.forEach(function(tab) {
        tab.addEventListener("click", function() {
            authTabs.forEach(function(t) { t.classList.remove("active"); });
            this.classList.add("active");
            var target = this.dataset.tab;
            document.getElementById("bn-auth-tab-password").style.display = target === "password" ? "block" : "none";
            document.getElementById("bn-auth-tab-magic").style.display = target === "magic" ? "block" : "none";
        });
    });

    authOptions.forEach(function(opt) { opt.addEventListener("click", function() { authOptions.forEach(function(o) { o.classList.remove("selected"); }); this.classList.add("selected"); this.querySelector("input").checked = true; selectedPlan = this.dataset.product; }); });
    document.addEventListener("click", function(e) { var ab = e.target.closest(".bn-auth-required"); if (!ab) return; e.preventDefault(); e.stopPropagation(); showAuthScreen("main"); openAuthModal(); });

    // Sign In link in nav goes directly to /access/ (no modal intercept)

    var signupBtn = document.getElementById("bn-auth-signup-btn");
    if (signupBtn) { signupBtn.addEventListener("click", function() { if (!selectedPlan) { var opts = authModal.querySelector(".bnpm-um-options"); if (opts) { opts.classList.add("bn-auth-options-highlight"); setTimeout(function() { opts.classList.remove("bn-auth-options-highlight"); }, 1500); } return; } var url = selectedPlan === "unlocked" ? cfg.unlockedUrl : cfg.freestyleUrl; url += (url.indexOf("?") !== -1 ? "&" : "?") + "bnpm_modal=1"; showAuthScreen("checkout"); checkoutLoading.style.display = "flex"; authIframe.style.display = "none"; authIframe.src = url; authIframe.onload = function() { checkoutLoading.style.display = "none"; authIframe.style.display = "block"; authIframe.onload = null; startLoginPoll(); }; }); }

    var discordBtn = document.getElementById("bn-auth-discord-btn");
    if (discordBtn) { discordBtn.addEventListener("click", function() { window.open(cfg.discordUrl, "_blank", "width=500,height=700"); startLoginPoll(); }); }

    var forgotLink = document.getElementById("bn-auth-forgot-link");
    if (forgotLink) { forgotLink.addEventListener("click", function(e) { e.preventDefault(); var tabs = authModal.querySelectorAll(".bn-auth-tab"); if (tabs.length > 1) tabs[1].click(); }); }

    var loginBtn = document.getElementById("bn-auth-login-btn");
    var loginLoading = document.getElementById("bn-auth-login-loading");
    var loginError = document.getElementById("bn-auth-error");
    if (loginBtn) {
        loginBtn.addEventListener("click", function() {
            var user = document.getElementById("bn-auth-user").value.trim();
            var pass = document.getElementById("bn-auth-pass").value;
            if (!user || !pass) { loginError.textContent = "Please enter email and password"; loginError.style.display = "block"; return; }
            loginLoading.style.display = "flex"; loginBtn.style.display = "none"; loginError.style.display = "none";
            fetch(cfg.ajaxUrl, { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: "action=bn_password_login&log=" + encodeURIComponent(user) + "&pwd=" + encodeURIComponent(pass) + "&nonce=" + cfg.loginNonce + "&redirect_to=" + encodeURIComponent(window.location.href), credentials: "same-origin" })
            .then(function(r) { return r.json(); }).then(function(data) { if (data.success) { showAuthScreen("success"); setTimeout(function() { closeAuthModal(); softRefresh(); }, 1500); } else { loginLoading.style.display = "none"; loginBtn.style.display = "block"; loginError.textContent = data.data && data.data.message ? data.data.message : "Invalid email or password"; loginError.style.display = "block"; } })
            .catch(function() { loginLoading.style.display = "none"; loginBtn.style.display = "block"; loginError.textContent = "Connection error. Please try again."; loginError.style.display = "block"; });
        });
        document.getElementById("bn-auth-pass").addEventListener("keypress", function(e) { if (e.key === "Enter") loginBtn.click(); });
        document.getElementById("bn-auth-user").addEventListener("keypress", function(e) { if (e.key === "Enter") document.getElementById("bn-auth-pass").focus(); });
    }

    // Magic Link
    var magicBtn = document.getElementById("bn-auth-magic-btn");
    var magicStatus = document.getElementById("bn-auth-magic-status");
    if (magicBtn) {
        magicBtn.addEventListener("click", function() {
            var email = document.getElementById("bn-auth-magic-email").value.trim();
            if (!email) { magicStatus.textContent = "Please enter your email address"; magicStatus.style.display = "block"; magicStatus.className = "bn-auth-magic-status error"; return; }
            magicBtn.disabled = true; magicBtn.textContent = "Sending..."; magicStatus.style.display = "none";
            fetch(cfg.ajaxUrl, { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: "action=bn_send_magic_link&email=" + encodeURIComponent(email) + "&nonce=" + cfg.magicNonce, credentials: "same-origin" })
            .then(function(r) { return r.json(); }).then(function(data) { magicStatus.textContent = data.data && data.data.message ? data.data.message : "If an account exists with that email, a login link has been sent."; magicStatus.style.display = "block"; magicStatus.className = "bn-auth-magic-status success"; magicBtn.disabled = false; magicBtn.textContent = "Send Login Link"; })
            .catch(function() { magicStatus.textContent = "Something went wrong. Please try again."; magicStatus.style.display = "block"; magicStatus.className = "bn-auth-magic-status error"; magicBtn.disabled = false; magicBtn.textContent = "Send Login Link"; });
        });
        document.getElementById("bn-auth-magic-email").addEventListener("keypress", function(e) { if (e.key === "Enter") magicBtn.click(); });
    }

    authModal.querySelectorAll(".bn-auth-back").forEach(function(btn) { btn.addEventListener("click", function() { if (authIframe) authIframe.src = ""; showAuthScreen("main"); }); });
    document.getElementById("bn-auth-close").addEventListener("click", closeAuthModal);
    authOverlay.addEventListener("click", closeAuthModal);
    authModal.addEventListener("click", function(e) { e.stopPropagation(); });
    document.addEventListener("keydown", function(e) { if (e.key === "Escape" && authModal.classList.contains("active")) closeAuthModal(); });
})();
</script>    <script data-cfasync="false">
    (function() {
        document.addEventListener("click", function(e) {
            var link = e.target.closest(".bn-family-lightbox-link");
            if (!link) return;
            e.preventDefault();
            e.stopPropagation();
            var src = link.getAttribute("data-src");
            if (!src) return;
            var overlay = document.createElement("div");
            overlay.style.cssText = "position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,0.92);z-index:99999;display:flex;align-items:center;justify-content:center;cursor:zoom-out;";
            var img = document.createElement("img");
            img.src = src;
            img.style.cssText = "max-width:95vw;max-height:95vh;object-fit:contain;border-radius:4px;opacity:0;transition:opacity 0.2s ease;";
            img.onload = function() { img.style.opacity = "1"; };
            overlay.appendChild(img);
            overlay.addEventListener("click", function() { overlay.remove(); });
            document.addEventListener("keydown", function handler(ev) {
                if (ev.key === "Escape") { overlay.remove(); document.removeEventListener("keydown", handler); }
            });
            document.body.appendChild(overlay);
        });
    })();
    </script>

    <!-- Barba hook: re-inject CTA buttons after PJAX transition -->
    <script data-cfasync="false">
    (function() {
        if (typeof Barba === "undefined" || !Barba.Dispatcher) return;

        Barba.Dispatcher.on("transitionCompleted", function() {
            // Remove stale CTA payload from previous page
            var oldPayload = document.getElementById("bn-event-cta-payload");
            if (oldPayload) oldPayload.remove();

            // Remove stale auth modal/overlay from previous page
            var oldModal = document.getElementById("bn-auth-modal");
            var oldOverlay = document.getElementById("bn-auth-overlay");
            if (oldModal) oldModal.remove();
            if (oldOverlay) oldOverlay.remove();

            // Fetch the new page's HTML to extract its CTA payload
            // (since wp_footer PHP doesn't re-execute after Barba transitions)
            var target = document.querySelector(".event-reminder");
            if (!target) return; // Not a show/event page, nothing to inject

            fetch(window.location.href, { credentials: "same-origin" })
                .then(function(r) { return r.text(); })
                .then(function(html) {
                    try {
                        var doc = new DOMParser().parseFromString(html, "text/html");
                        var freshPayload = doc.getElementById("bn-event-cta-payload");
                        var freshTarget = document.querySelector(".event-reminder");
                        if (freshPayload && freshTarget) {
                            // Clear any existing content in target
                            var existing = freshTarget.querySelector("#bn-event-cta-payload, .bn-event-actions");
                            if (existing) existing.remove();

                            var imported = document.importNode(freshPayload, true);
                            freshTarget.appendChild(imported);
                            imported.style.display = "";

                            // Bind tooltip
                            var infoBtn = imported.querySelector(".bn-event-info-btn");
                            var infoTip = imported.querySelector(".bn-event-info-tooltip");
                            if (infoBtn && infoTip && !infoBtn.dataset.bound) {
                                infoBtn.dataset.bound = "1";
                                infoBtn.addEventListener("click", function(e) {
                                    e.stopPropagation();
                                    infoTip.style.display = infoTip.style.display === "none" ? "block" : "none";
                                });
                            }

                            // Also inject auth modal if present (logged-out users)
                            if (!document.getElementById("bn-auth-modal")) {
                                var freshModal = doc.getElementById("bn-auth-modal");
                                var freshOverlay = doc.getElementById("bn-auth-overlay");
                                if (freshModal) document.body.appendChild(document.importNode(freshModal, true));
                                if (freshOverlay) document.body.appendChild(document.importNode(freshOverlay, true));
                            }
                        }
                    } catch(e) {
                        console.warn("[BN CTA] Barba CTA inject error:", e);
                    }
                })
                .catch(function() {});

            // Also re-init show page actions if available
            if (typeof window.bnInitShowPage === "function") {
                setTimeout(window.bnInitShowPage, 200);
            }
        });
    })();
    </script>
        <script data-cfasync="false" type="text/javascript">
    jQuery(document).ready(function($) {
        setTimeout(function() {
            var pageUrl = "https:\/\/bassnectar.net\/";
            $('.iron-audioplayer').each(function() {
                var $player = $(this);
                // Only set if not already set by the widget PHP
                if (!$player.attr('data-album-page-url') || $player.attr('data-album-page-url') === '') {
                    $player.attr('data-album-page-url', pageUrl);
                }
            });
        }, 1500);
    });
    </script>
    </body>
</html>