:root {
            --primary: #FFCD00;
            --primary-hover: #FFE033;
            --primary-dim: #E6B800;
            --primary-glow: rgba(255, 205, 0, 0.35);
            --primary-glow-strong: rgba(255, 205, 0, 0.55);
            --primary-soft: rgba(255, 205, 0, 0.12);
            --primary-soft-border: rgba(255, 205, 0, 0.25);
            
            --bg-deep: #08080C;
            --bg-base: #0E0E14;
            --bg-card: rgba(20, 20, 28, 0.72);
            --bg-card-hover: rgba(28, 28, 38, 0.85);
            --bg-card-solid: #14141C;
            --bg-elevated: #1A1A24;
            --bg-input: #12121A;
            
            --text: #F5F5F7;
            --text-secondary: #C4C4CE;
            --text-muted: #8E8E9B;
            --text-dim: #60606E;

            /* Aliassen. Verderop in deze stylesheet useerden tien regels twee
               variabelen die hier nooit gedefinieerd waren: --text-primary
               (.forum-topic-title, .forum-thread-title) en --text-tertiary
               (.forum-topic-excerpt, .forum-topic-meta, .forum-card-count,
               .forum-reply-label, .forum-empty, .edited-tag).
               Een onbekende variabele zonder terugval erft de omgevingskleur, dus
               die regels rendeerden zo goed als wit in plaats van gedempt.
               tertiary bewust tussen muted en dim, maar net helder genoeg voor
               kleine tekst: 4.9:1 op een kaart, dus AA. */
            --text-primary: var(--text);
            --text-tertiary: #828295;
            
            --border-subtle: rgba(255, 255, 255, 0.08);
            --border-hover: rgba(255, 255, 255, 0.18);
            --border-focus: var(--primary);
            
            --radius-xs: 8px;
            --radius-sm: 12px;
            --radius-md: 18px;
            --radius-lg: 24px;
            --radius-xl: 32px;
            --radius-full: 9999px;
            
            --shadow-subtle: 0 4px 20px rgba(0, 0, 0, 0.25);
            --shadow-card: 0 12px 40px rgba(0, 0, 0, 0.45);
            --shadow-player: 0 20px 60px rgba(0, 0, 0, 0.65), 0 0 40px rgba(255, 205, 0, 0.08);
            --shadow-glow: 0 0 30px var(--primary-glow);
            
            --font-display: 'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, sans-serif;
            --font-body: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
            
            --nav-height: 72px;
            --sticky-player-height: 84px;
            --transition-smooth: all 0.3s cubic-bezier(0.16, 1, 0.3, 1);
        }

        *, *::before, *::after {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
            -webkit-tap-highlight-color: transparent;
        }

        html {
            scroll-behavior: smooth;
            font-size: 16px;
            scrollbar-width: thin;
            scrollbar-color: rgba(255, 205, 0, 0.4) var(--bg-deep);
            overflow-x: hidden;
            max-width: 100vw;
            width: 100%;

            /* Deze site is donker-only. Zonder deze regel tekent Android/Chrome
               witte selectielijsten, witte scrollbalken en een witte
               toetsenbord-afleiding op onze donkere formulieren. */
            color-scheme: dark;

            /* Verankerde links (#connect, ##...) vielen tot nu toe onder de
               vaste navigatie van 72px. */
            scroll-padding-top: calc(var(--nav-height) + 12px);

            /* Voorkomt dat iOS de tekst opblaast als het scherm draait. */
            -webkit-text-size-adjust: 100%;
            text-size-adjust: 100%;
        }

        /* === CUSTOM SCROLLBAR (YouRadio Theme) === */
        ::-webkit-scrollbar {
            width: 10px;
            height: 10px;
        }

        ::-webkit-scrollbar-track {
            background: var(--bg-deep);
            border-left: 1px solid var(--border-subtle);
        }

        ::-webkit-scrollbar-thumb {
            background: rgba(255, 255, 255, 0.16);
            border-radius: var(--radius-full);
            border: 2px solid var(--bg-deep);
            transition: background 0.25s ease, box-shadow 0.25s ease;
        }

        ::-webkit-scrollbar-thumb:hover {
            background: var(--primary);
            box-shadow: 0 0 12px var(--primary-glow);
        }

        ::-webkit-scrollbar-thumb:active {
            background: var(--primary-hover);
        }

        ::-webkit-scrollbar-corner {
            background: var(--bg-deep);
        }

        body {
            font-family: var(--font-body);
            background-color: var(--bg-deep);
            color: var(--text);
            /* 100vh is op een telefoon de hoogte INCLUSIEF de adresbalk, dus een
               pagina was tot een kwart scherm langer dan zichtbaar en de spelerbalk
               viel deels weg. svh = de kleinste zichtbare hoogte (met uitgeklapte
               balk): nooit te lang, en hij springt niet mee bij het scrollen.
               De 100vh-regel ervoor blijft als terugval voor oudere browsers. */
            min-height: 100vh;
            min-height: 100svh;
            overflow-x: hidden;
            max-width: 100vw;
            width: 100%;
            position: relative;
            line-height: 1.6;
            -webkit-font-smoothing: antialiased;
            -moz-osx-font-smoothing: grayscale;
            background-image: 
                radial-gradient(1000px 600px at 85% -10%, rgba(255, 205, 0, 0.07), transparent 70%),
                radial-gradient(800px 500px at 10% 30%, rgba(130, 80, 255, 0.05), transparent 60%),
                radial-gradient(1000px 700px at 50% 100%, rgba(255, 205, 0, 0.04), transparent 70%);
            background-attachment: fixed;
            padding-bottom: calc(var(--sticky-player-height) + env(safe-area-inset-bottom, 0px) + 1rem);
        }

        /* === TOEGANKELIJKHEID: verborgen tekst en sprong naar de inhoud ===
           sr-only: tekst die er voor het oog niet is maar die een schermlezer
           wél voorleest (bijv. de melding van een nieuw nummer). */
        .sr-only {
            position: absolute;
            width: 1px;
            height: 1px;
            padding: 0;
            margin: -1px;
            overflow: hidden;
            clip: rect(0 0 0 0);
            clip-path: inset(50%);
            white-space: nowrap;
            border: 0;
        }

        /* Wie met Tab door de site loopt, staat nu eerst voor de knop "Naar de
           inhoud" in plaats van achter zeven menuknoppen. Verborgen tot je met
           Tab begint, dus voor muisbezoekers verandert er niets. */
        .skip-link {
            position: fixed;
            top: 0.6rem;
            left: 0.6rem;
            z-index: 200;
            transform: translateY(-180%);
            background: var(--primary);
            color: #0A0A0F;
            font-weight: 700;
            padding: 0.6rem 1.1rem;
            border-radius: var(--radius-full);
            box-shadow: 0 8px 24px rgba(0, 0, 0, 0.45);
            transition: transform 0.2s ease;
        }

        .skip-link:focus {
            transform: translateY(0);
        }

        /* Bij een paginawissel gaat de aandacht naar de nieuwe pagina. Een pagina
           is geen knop, dus daar hoort geen dikke ring omheen te staan. */
        main:focus,
        main > section[tabindex="-1"]:focus {
            outline: none;
        }

        main {
            width: 100%;
            max-width: 100vw;
            overflow-x: hidden;
        }

        ::selection {
            background: var(--primary);
            color: #08080C;
        }

        :focus-visible {
            outline: 2px solid var(--primary);
            outline-offset: 3px;
        }

        a {
            color: inherit;
            text-decoration: none;
        }

        button {
            cursor: pointer;
            font-family: inherit;
            border: none;
            background: transparent;
        }

        img {
            max-width: 100%;
            height: auto;
            display: block;
        }

        /* SVG Icons */
        .icon {
            display: inline-block;
            width: 1.25rem;
            height: 1.25rem;
            fill: currentColor;
            flex-shrink: 0;
            vertical-align: middle;
        }

        /* Typography Helper Classes */
        .text-gradient {
            background: linear-gradient(135deg, #FFF6D0 0%, var(--primary) 50%, #FFA800 100%);
            -webkit-background-clip: text;
            -webkit-text-fill-color: transparent;
        }

        .badge-live {
            display: inline-flex;
            align-items: center;
            gap: 0.5rem;
            padding: 0.35rem 0.85rem;
            border-radius: var(--radius-full);
            background: rgba(34, 197, 94, 0.12);
            border: 1px solid rgba(34, 197, 94, 0.3);
            color: #4ade80;
            font-size: 0.75rem;
            font-weight: 700;
            letter-spacing: 0.08em;
            text-transform: uppercase;
        }

        .pulse-dot {
            width: 8px;
            height: 8px;
            border-radius: 50%;
            background: #4ade80;
            box-shadow: 0 0 10px #4ade80;
            animation: livePulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
        }

        @keyframes livePulse {
            0%, 100% { opacity: 1; transform: scale(1); }
            50% { opacity: 0.4; transform: scale(1.35); }
        }

        /* Ambient Glow Blobs */
        .ambient-bg {
            position: fixed;
            top: 0;
            left: 0;
            right: 0;
            bottom: 0;
            pointer-events: none;
            z-index: 0;
            overflow: hidden;
        }

        .glow-blob {
            position: absolute;
            border-radius: 50%;
            filter: blur(120px);
            opacity: 0.15;
            will-change: transform;
            animation: blobFloat 20s infinite alternate ease-in-out;
        }

        .glow-blob-1 {
            width: 500px;
            height: 500px;
            background: #FFCD00;
            top: -100px;
            right: -100px;
            animation-duration: 18s;
        }

        .glow-blob-2 {
            width: 450px;
            height: 450px;
            background: #795290;
            top: 40%;
            left: -150px;
            animation-duration: 24s;
            animation-delay: -5s;
        }

        /* Vervaagde albumhoes als achtergrond (alleen desktop) */
        .cover-backdrop {
            display: none;
        }

        @media (min-width: 961px) and (hover: hover) {
            .cover-backdrop {
                display: block;
                position: absolute;
                inset: 0;
                overflow: hidden;
                /* Zet de herkenbare hoes in een zacht 'podium' rechts rond de player;
                   links (hero-tekst) blijft bijna ganzdonker, met alleen een fluistering */
                -webkit-mask-image:
                    linear-gradient(to right, rgba(0, 0, 0, 0.14), rgba(0, 0, 0, 0) 55%),
                    radial-gradient(68% 95% at 80% 42%, #000 18%, rgba(0, 0, 0, 0.6) 50%, transparent 82%);
                mask-image:
                    linear-gradient(to right, rgba(0, 0, 0, 0.14), rgba(0, 0, 0, 0) 55%),
                    radial-gradient(68% 95% at 80% 42%, #000 18%, rgba(0, 0, 0, 0.6) 50%, transparent 82%);
            }

            .cb-layer {
                position: absolute;
                inset: -100px;
                background-position: center;
                background-size: cover;
                background-repeat: no-repeat;
                /* Weinig blur: de hoes blijft herkenbaar als beeld */
                filter: blur(16px) saturate(2.1) brightness(1.45);
                transform: scale(1.18);
                opacity: 0;
                transition: opacity 1.6s ease;
                will-change: opacity;
            }

            .cb-layer.is-visible {
                opacity: 0.58;
            }

            /* Zeer licht scrim: alleen de felste pieken dempen, kleur blijft overeind */
            .cover-backdrop::after {
                content: '';
                position: absolute;
                inset: 0;
                background:
                    radial-gradient(120% 90% at 50% 0%, rgba(8, 8, 12, 0.12), rgba(8, 8, 12, 0.4) 72%),
                    linear-gradient(rgba(8, 8, 12, 0.2), rgba(8, 8, 12, 0.36));
                pointer-events: none;
            }
        }

        @media (prefers-reduced-motion: reduce) {
            .cb-layer {
                transition: none;
            }
        }

        @keyframes blobFloat {
            0% { transform: translate(0, 0) scale(1); }
            100% { transform: translate(-40px, 60px) scale(1.1); }
        }

        /* === NAVIGATION === */
        .site-nav {
            position: fixed;
            top: 0;
            left: 0;
            right: 0;
            height: var(--nav-height);
            z-index: 100;
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 1.25rem;
            padding: 0 clamp(1rem, 3.5vw, 3rem);
            background: rgba(10, 10, 15, 0.75);
            backdrop-filter: blur(20px);
            -webkit-backdrop-filter: blur(20px);
            border-bottom: 1px solid var(--border-subtle);
            transition: var(--transition-smooth);
            box-sizing: border-box;
            width: 100%;
        }

        .site-nav.scrolled {
            background: rgba(8, 8, 12, 0.92);
            border-bottom-color: rgba(255, 255, 255, 0.1);
            box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5);
        }

        .nav-brand {
            display: flex;
            align-items: center;
            gap: 0.85rem;
            font-family: var(--font-display);
            font-weight: 800;
            font-size: 1.35rem;
            letter-spacing: -0.02em;
            color: var(--text);
            flex-shrink: 0;
            min-width: max-content;
            z-index: 102;
        }

        .nav-logo-img {
            width: 42px;
            height: 42px;
            border-radius: 50%;
            box-shadow: 0 0 15px rgba(255, 205, 0, 0.25);
            transition: transform 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
        }

        .nav-brand:hover .nav-logo-img {
            transform: rotate(-8deg) scale(1.08);
        }

        .brand-dot {
            color: var(--primary);
        }

        /* Nav Marquee / Live Ticker */
        .nav-ticker-container {
            display: flex;
            align-items: center;
            gap: 0.75rem;
            background: rgba(255, 255, 255, 0.04);
            border: 1px solid var(--border-subtle);
            border-radius: var(--radius-full);
            padding: 0.35rem 1rem;
            flex: 0 1 380px;
            min-width: 0;
            max-width: 440px;
            overflow: hidden;
            transition: var(--transition-smooth);
        }

        @media (min-width: 1440px) {
            .nav-ticker-container {
                flex: 0 1 450px;
                max-width: 500px;
            }
        }

        .nav-ticker-container:hover {
            border-color: var(--primary-soft-border);
            background: rgba(255, 205, 0, 0.05);
        }

        .nav-ticker-label {
            font-size: 0.7rem;
            font-weight: 800;
            color: #4ade80;
            display: flex;
            align-items: center;
            gap: 0.35rem;
            white-space: nowrap;
            text-transform: uppercase;
            letter-spacing: 0.05em;
            flex-shrink: 0;
        }

        .nav-ticker-content {
            font-size: 0.8rem;
            color: var(--text-secondary);
            white-space: nowrap;
            overflow: hidden;
            display: flex;
            align-items: center;
            gap: 0.5rem;
            min-width: 0;
            flex: 1;
        }

        .nav-ticker-track-wrap {
            min-width: 0;
            flex: 1;
            overflow: hidden;
            white-space: nowrap;
            position: relative;
            display: block;
        }

        .nav-ticker-track {
            color: var(--text);
            font-weight: 600;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
            display: inline-block;
            vertical-align: middle;
        }

        .nav-ticker-show {
            flex-shrink: 0;
            white-space: nowrap;
        }

        .nav-ticker-sep {
            color: var(--text-dim);
            flex-shrink: 0;
        }

        /* Nav Menu Links */
        .nav-menu {
            display: flex;
            align-items: center;
            gap: clamp(1rem, 1.6vw, 1.75rem);
            list-style: none;
            flex-shrink: 0;
        }

        .nav-item a {
            font-size: 0.925rem;
            font-weight: 500;
            color: var(--text-secondary);
            position: relative;
            padding: 0.35rem 0;
            transition: color 0.2s;
        }

        .nav-item a::after {
            content: '';
            position: absolute;
            left: 0;
            bottom: -2px;
            width: 0;
            height: 2px;
            background: var(--primary);
            border-radius: 2px;
            transition: width 0.3s cubic-bezier(0.16, 1, 0.3, 1);
        }

        .nav-item a:hover {
            color: var(--primary);
        }

        .nav-item a:hover::after {
            width: 100%;
        }

        /* Hamburger Button */
        .mobile-toggle {
            display: none;
            /* 44px: onder die hoogte wordt het menuknopje op een telefoon een
               precisiewerkje, zeker naast de hogere navigatie-icoontjes. */
            height: 44px;
            padding: 0 1rem 0 0.85rem;
            gap: 0.45rem;
            border-radius: 999px;
            background: rgba(255, 205, 0, 0.13);
            border: 1.5px solid rgba(255, 205, 0, 0.65);
            color: var(--primary);
            align-items: center;
            justify-content: center;
            font-size: 0.9rem;
            font-weight: 700;
            letter-spacing: 0.02em;
            box-shadow: 0 0 18px rgba(255, 205, 0, 0.18);
            transition: var(--transition-smooth);
            z-index: 102;
        }

        .mobile-toggle .icon {
            width: 22px;
            height: 22px;
        }

        .mobile-toggle:hover,
        .mobile-toggle[aria-expanded="true"] {
            background: var(--primary);
            border-color: var(--primary);
            color: #08080C;
        }

        /* === HERO SECTION === */
        .hero {
            position: relative;
            z-index: 1;
            min-height: calc(100vh - var(--nav-height));
            min-height: calc(100svh - var(--nav-height));
            display: flex;
            align-items: center;
            padding: calc(var(--nav-height) + clamp(1rem, 2vh, 1.75rem)) clamp(1.5rem, 4vw, 4rem) clamp(1rem, 2.5vh, 2rem);
            max-width: 1560px;
            margin: 0 auto;
            width: 100%;
            box-sizing: border-box;
        }

        .hero-grid {
            display: grid;
            grid-template-columns: minmax(0, 1.15fr) minmax(360px, 480px);
            gap: clamp(2.5rem, 4vw, 5rem);
            align-items: center;
            width: 100%;
        }

        @media (min-width: 1440px) {
            .hero {
                max-width: 1800px;
                padding-left: clamp(2.5rem, 5vw, 5.5rem);
                padding-right: clamp(2.5rem, 5vw, 5.5rem);
                padding-top: calc(var(--nav-height) + clamp(1rem, 2vh, 2rem));
                padding-bottom: clamp(1rem, 2.5vh, 2.25rem);
            }

            .hero-grid {
                grid-template-columns: minmax(0, 1.2fr) minmax(380px, 500px);
                gap: clamp(3rem, 5vw, 6rem);
            }

            .hero-logo-img {
                width: 110px;
                height: 110px;
            }

            .hero-title {
                font-size: clamp(3.2rem, 4.6vw, 4.6rem);
                line-height: 1.05;
            }

            .hero-desc {
                font-size: 1.18rem;
                max-width: 640px;
                line-height: 1.65;
            }

            .btn {
                padding: 0.9rem 2rem;
                font-size: 1rem;
            }

            .btn-icon-only {
                width: 50px;
                height: 50px;
            }

            .player-card-wrapper {
                max-width: min(500px, calc((100vh - var(--nav-height) - 130px) * 0.68));
                max-width: min(500px, calc((100svh - var(--nav-height) - 130px) * 0.68));
            }

            .player-card {
                padding: clamp(1.25rem, 2vh, 1.75rem);
                border-radius: 26px;
            }

            .track-title {
                font-size: 1.45rem;
            }

            .track-artist {
                font-size: 1.05rem;
            }

            .hero-stats {
                gap: 2.25rem;
                padding-top: 1.5rem;
                margin-top: 0.75rem;
            }

            .stat-val {
                font-size: 1.5rem;
            }

            .stat-label {
                font-size: 0.78rem;
            }
        }

        @media (min-width: 1680px) {
            .hero {
                max-width: 1920px;
                padding-left: clamp(3rem, 6vw, 6.5rem);
                padding-right: clamp(3rem, 6vw, 6.5rem);
            }

            .hero-grid {
                grid-template-columns: minmax(0, 1.25fr) minmax(400px, 520px);
                gap: clamp(3.5rem, 6vw, 6.5rem);
            }

            .player-card-wrapper {
                max-width: min(520px, calc((100vh - var(--nav-height) - 130px) * 0.70));
                max-width: min(520px, calc((100svh - var(--nav-height) - 130px) * 0.70));
            }
        }

        /* Compact Desktop Viewports (e.g. 1366x768, 1080p scaled, or smaller browser heights) */
        @media (max-height: 840px) and (min-width: 961px) {
            .hero {
                padding-top: calc(var(--nav-height) + 0.75rem);
                padding-bottom: 0.85rem;
            }

            .hero-info {
                gap: 1rem;
            }

            .hero-logo-img {
                width: 84px;
                height: 84px;
            }

            .hero-title {
                font-size: clamp(2.4rem, 3.8vw, 3.4rem);
            }

            .hero-desc {
                font-size: 0.98rem;
                line-height: 1.5;
            }

            .hero-stats {
                gap: 1.5rem;
                padding-top: 0.85rem;
                margin-top: 0.25rem;
            }

            .stat-val {
                font-size: 1.25rem;
            }

            .art-stage {
                max-height: calc(100vh - var(--nav-height) - 310px);
                max-height: calc(100svh - var(--nav-height) - 310px);
            }

            .master-play-btn {
                width: 58px;
                height: 58px;
            }

            .master-play-btn .icon {
                width: 1.5rem;
                height: 1.5rem;
            }
        }

        /* Hero Text */
        .hero-info {
            display: flex;
            flex-direction: column;
            gap: 1.5rem;
            align-items: flex-start;
            text-align: left;
        }

        /* Hero Brand Header */
        .hero-brand-header {
            display: flex;
            align-items: center;
            justify-content: flex-start;
            margin-bottom: 0.25rem;
            width: 100%;
        }

        .hero-logo-box {
            display: flex;
            align-items: center;
            justify-content: flex-start;
            flex-shrink: 0;
        }

        .hero-logo-img {
            width: clamp(96px, 12vw, 120px);
            height: clamp(96px, 12vw, 120px);
            border-radius: 50%;
            object-fit: cover;
            box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5), 0 0 35px rgba(255, 205, 0, 0.22);
            border: 2px solid var(--primary-soft-border);
            transition: transform 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275), box-shadow 0.4s ease, border-color 0.4s ease;
        }

        .hero-logo-img:hover {
            transform: scale(1.06) rotate(-3deg);
            box-shadow: 0 14px 40px rgba(0, 0, 0, 0.6), 0 0 50px rgba(255, 205, 0, 0.4);
            border-color: var(--primary);
        }

        .badge-pill {
            display: inline-flex;
            align-items: center;
            gap: 0.4rem;
            padding: 0.35rem 0.85rem;
            border-radius: var(--radius-full);
            background: rgba(255, 205, 0, 0.08);
            border: 1px solid var(--primary-soft-border);
            color: var(--primary);
            font-size: 0.75rem;
            font-weight: 700;
            letter-spacing: 0.06em;
            text-transform: uppercase;
        }

        .hero-title {
            font-family: var(--font-display);
            font-size: clamp(2.6rem, 5.5vw, 4.25rem);
            font-weight: 800;
            line-height: 1.08;
            letter-spacing: -0.035em;
        }

        .hero-desc {
            font-size: clamp(1rem, 1.3vw, 1.15rem);
            color: var(--text-secondary);
            line-height: 1.7;
            max-width: 540px;
        }

        .hero-actions {
            display: flex;
            align-items: center;
            gap: 1rem;
            flex-wrap: wrap;
            margin-top: 0.5rem;
        }

        /* Buttons */
        .btn {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            gap: 0.65rem;
            padding: 0.9rem 1.85rem;
            border-radius: var(--radius-full);
            font-family: var(--font-display);
            font-weight: 700;
            font-size: 0.95rem;
            transition: var(--transition-smooth);
            cursor: pointer;
            border: 1px solid transparent;
            text-decoration: none;
            white-space: nowrap;
        }

        .btn-primary {
            background: linear-gradient(135deg, #FFE042 0%, var(--primary) 60%, #E6B800 100%);
            color: #0A0A0F;
            box-shadow: 0 4px 20px var(--primary-glow);
        }

        .btn-primary:hover {
            transform: translateY(-3px) scale(1.02);
            box-shadow: 0 8px 30px var(--primary-glow-strong);
        }

        .btn-primary:active {
            transform: translateY(-1px);
        }

        .btn-primary.is-playing {
            background: linear-gradient(135deg, #FF6B6B 0%, #E53E3E 100%);
            color: #FFFFFF;
            box-shadow: 0 4px 20px rgba(229, 62, 62, 0.35);
        }

        .btn-primary.is-playing:hover {
            box-shadow: 0 8px 30px rgba(229, 62, 62, 0.5);
        }

        .btn-secondary {
            background: rgba(255, 255, 255, 0.05);
            border-color: var(--border-subtle);
            color: var(--text);
            backdrop-filter: blur(10px);
        }

        .btn-secondary:hover {
            background: rgba(255, 255, 255, 0.1);
            border-color: var(--border-hover);
            color: var(--primary);
            transform: translateY(-2px);
        }

        .btn-icon-only {
            width: 48px;
            height: 48px;
            padding: 0;
            border-radius: 50%;
        }

        /* Hero Highlights Stats */
        .hero-stats {
            display: flex;
            align-items: center;
            gap: 2rem;
            padding-top: 1.5rem;
            border-top: 1px solid var(--border-subtle);
            margin-top: 0.5rem;
        }

        .stat-item {
            display: flex;
            flex-direction: column;
            gap: 0.15rem;
        }

        .stat-val {
            font-family: var(--font-display);
            font-size: 1.35rem;
            font-weight: 800;
            color: var(--text);
            display: flex;
            align-items: center;
            gap: 0.4rem;
        }

        .stat-val .dot {
            width: 8px;
            height: 8px;
            border-radius: 50%;
            background: #4ade80;
        }

        .stat-label {
            font-size: 0.75rem;
            color: var(--text-muted);
            font-weight: 500;
            text-transform: uppercase;
            letter-spacing: 0.05em;
        }

        /* === MASTER PLAYER CARD === */
        .player-card-wrapper {
            position: relative;
            width: 100%;
            max-width: min(480px, calc((100vh - var(--nav-height) - 130px) * 0.66));
            max-width: min(480px, calc((100svh - var(--nav-height) - 130px) * 0.66));
            margin-left: auto;
        }

        @media (min-width: 1440px) {
            .player-card-wrapper {
                max-width: min(500px, calc((100vh - var(--nav-height) - 130px) * 0.68));
                max-width: min(500px, calc((100svh - var(--nav-height) - 130px) * 0.68));
            }
        }

        @media (min-width: 1680px) {
            .player-card-wrapper {
                max-width: min(520px, calc((100vh - var(--nav-height) - 130px) * 0.70));
                max-width: min(520px, calc((100svh - var(--nav-height) - 130px) * 0.70));
            }
        }

        /* Behind Card Ambient Light */
        .player-ambient-glow {
            position: absolute;
            inset: -20px;
            border-radius: 40px;
            background: radial-gradient(circle at 50% 50%, var(--primary-glow), transparent 70%);
            filter: blur(35px);
            opacity: 0.6;
            z-index: 0;
            transition: opacity 0.6s ease;
            pointer-events: none;
            max-width: 100%;
        }

        .player-card {
            position: relative;
            z-index: 1;
            background: var(--bg-card);
            backdrop-filter: blur(28px);
            -webkit-backdrop-filter: blur(28px);
            border: 1px solid var(--border-subtle);
            border-radius: var(--radius-xl);
            padding: clamp(1.2rem, 1.8vh, 1.6rem);
            box-shadow: var(--shadow-player);
            transition: var(--transition-smooth);
            overflow: hidden;
            width: 100%;
            box-sizing: border-box;
        }

        .player-card:hover {
            border-color: rgba(255, 255, 255, 0.15);
            box-shadow: 0 24px 70px rgba(0, 0, 0, 0.75), 0 0 50px rgba(255, 205, 0, 0.12);
        }

        /* Player Top Bar */
        .player-top-status {
            display: flex;
            align-items: center;
            justify-content: space-between;
            margin-bottom: clamp(0.5rem, 1vh, 0.9rem);
        }

        .show-badge {
            display: flex;
            align-items: center;
            gap: 0.5rem;
            font-size: 0.78rem;
            font-weight: 600;
            color: var(--primary);
            background: rgba(255, 205, 0, 0.08);
            border: 1px solid var(--primary-soft-border);
            padding: 0.25rem 0.75rem;
            border-radius: var(--radius-full);
            max-width: 320px;
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
        }

        .audio-quality-tag {
            font-size: 0.7rem;
            color: var(--text-dim);
            font-weight: 600;
            letter-spacing: 0.05em;
            background: rgba(255, 255, 255, 0.04);
            padding: 0.25rem 0.6rem;
            border-radius: var(--radius-xs);
            border: 1px solid var(--border-subtle);
        }

        /* Album Artwork Box */
        .art-stage {
            position: relative;
            width: 100%;
            max-height: calc(100vh - var(--nav-height) - 330px);
            max-height: calc(100svh - var(--nav-height) - 330px);
            aspect-ratio: 1 / 1;
            border-radius: var(--radius-lg);
            overflow: hidden;
            margin: 0 auto clamp(0.65rem, 1.2vh, 1rem);
            background: linear-gradient(145deg, #181822 0%, #101017 100%);
            box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.08), 0 12px 30px rgba(0, 0, 0, 0.4);
        }

        .art-image {
            width: 100%;
            height: 100%;
            object-fit: cover;
            aspect-ratio: 1 / 1;
            display: block;
            transition: transform 0.6s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.4s ease;
        }

        .player-card:hover .art-image {
            transform: scale(1.03);
        }

        .art-placeholder {
            position: absolute;
            inset: 0;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            gap: 1rem;
            color: var(--text-dim);
        }

        .art-placeholder svg {
            width: 4rem;
            height: 4rem;
            opacity: 0.4;
        }

        .art-placeholder span {
            font-size: 0.85rem;
            font-weight: 500;
        }

        /* Soundwave Equalizer Over Artwork */
        .art-eq-overlay {
            position: absolute;
            bottom: 1rem;
            right: 1rem;
            display: flex;
            align-items: flex-end;
            gap: 3px;
            height: 24px;
            padding: 0.35rem 0.5rem;
            background: rgba(10, 10, 15, 0.7);
            backdrop-filter: blur(8px);
            border-radius: var(--radius-xs);
            border: 1px solid rgba(255, 255, 255, 0.1);
        }

        .eq-bar {
            width: 3px;
            background: var(--primary);
            border-radius: 2px;
            height: 4px;
            transition: height 0.2s ease;
        }

        .is-live-playing .eq-bar:nth-child(1) { animation: eqAnimation 0.8s ease-in-out infinite alternate; animation-delay: 0.0s; }
        .is-live-playing .eq-bar:nth-child(2) { animation: eqAnimation 0.9s ease-in-out infinite alternate; animation-delay: 0.15s; }
        .is-live-playing .eq-bar:nth-child(3) { animation: eqAnimation 0.7s ease-in-out infinite alternate; animation-delay: 0.3s; }
        .is-live-playing .eq-bar:nth-child(4) { animation: eqAnimation 1.0s ease-in-out infinite alternate; animation-delay: 0.45s; }
        .is-live-playing .eq-bar:nth-child(5) { animation: eqAnimation 0.85s ease-in-out infinite alternate; animation-delay: 0.6s; }

        @keyframes eqAnimation {
            0% { height: 4px; }
            100% { height: 18px; }
        }

        /* Track Info */
        .player-track-info {
            text-align: left;
            margin-bottom: 1.25rem;
            min-height: 3.8rem;
            display: flex;
            flex-direction: column;
            justify-content: center;
            gap: 0.25rem;
            width: 100%;
            min-width: 0;
            overflow: hidden;
        }

        /* Track Title & Artist Marquee Containers */
        .marquee-wrap {
            width: 100%;
            max-width: 100%;
            overflow: hidden;
            white-space: nowrap;
            position: relative;
            min-width: 0;
            display: block;
            text-align: left;
        }

        .marquee-wrap.has-overflow {
            mask-image: linear-gradient(90deg, #000 0, #000 calc(100% - 20px), transparent 100%);
            -webkit-mask-image: linear-gradient(90deg, #000 0, #000 calc(100% - 20px), transparent 100%);
        }

        .marquee-wrap.has-overflow > * {
            max-width: none !important;
            overflow: visible !important;
            text-overflow: clip !important;
            will-change: transform;
        }

        .track-title {
            font-family: var(--font-display);
            font-size: 1.3rem;
            font-weight: 700;
            color: var(--text);
            letter-spacing: -0.01em;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
            display: inline-block;
            max-width: 100%;
            vertical-align: middle;
            transition: opacity 0.3s ease;
        }

        .track-artist {
            font-size: 0.95rem;
            color: var(--text-secondary);
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
            display: inline-block;
            max-width: 100%;
            font-weight: 500;
            vertical-align: middle;
            transition: opacity 0.3s ease;
        }

        .docked-title {
            font-size: 0.92rem;
            font-weight: 700;
            color: var(--text);
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
            display: inline-block;
            max-width: 100%;
            vertical-align: middle;
        }

        .docked-artist {
            font-size: 0.8rem;
            color: var(--text-secondary);
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
            display: inline-block;
            max-width: 100%;
            vertical-align: middle;
        }

        @media (prefers-reduced-motion: reduce) {
            .marquee-wrap.has-overflow > * {
                transform: none !important;
                max-width: 100% !important;
                overflow: hidden !important;
                text-overflow: ellipsis !important;
            }
        }

        /* Progress Bar */
        .player-progress-area {
            margin-bottom: clamp(0.75rem, 1.4vh, 1.25rem);
        }

        .progress-track {
            position: relative;
            width: 100%;
            height: 6px;
            background: rgba(255, 255, 255, 0.08);
            border-radius: var(--radius-full);
            overflow: hidden;
            cursor: default;
        }

        .progress-fill {
            height: 100%;
            width: 0%;
            background: linear-gradient(90deg, #FFE042 0%, var(--primary) 70%, #FFA800 100%);
            border-radius: var(--radius-full);
            will-change: width;
        }

        .progress-timestamps {
            display: flex;
            justify-content: space-between;
            font-size: 0.75rem;
            color: var(--text-muted);
            margin-top: 0.45rem;
            font-variant-numeric: tabular-nums;
        }

        /* Controls: Main Play & Volume */
        .player-controls-row {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 1.5rem;
        }

        /* Volume Control */
        .volume-group {
            display: flex;
            align-items: center;
            gap: 0.75rem;
            width: 140px;
        }

        .volume-btn {
            color: var(--text-secondary);
            padding: 0.35rem;
            border-radius: 50%;
            transition: color 0.2s;
            display: flex;
            align-items: center;
            justify-content: center;
        }

        .volume-btn:hover {
            color: var(--primary);
        }

        .volume-slider {
            -webkit-appearance: none;
            appearance: none;
            width: 100%;
            /* Het zichtbare lijntje is nog steeds 4px hoog, maar het element zelf
               is nu 22px: eerder was het aanklikvlak even hoog als dat lijntje,
               dus op een telefoon moest je een strook van 4 millimeter raken.
               Het spoor tekenen we vanaf nu zelf (zie runnable-track hieronder). */
            height: 22px;
            background: transparent;
            border-radius: var(--radius-full);
            outline: none;
            cursor: pointer;
        }

        /* Het spoor vult de hele hoogte van het element (22px), zodat de lijn van
           4px altijd netjes in het midden ligt; bij een hoog element en een dun
           spoor zou WebKit dat spoor anders bovenin leggen. */
        .volume-slider::-webkit-slider-runnable-track {
            height: 22px;
            background: linear-gradient(rgba(255, 255, 255, 0.12), rgba(255, 255, 255, 0.12)) no-repeat center / 100% 4px;
            border-radius: var(--radius-full);
            transition: background 0.2s;
        }

        .volume-slider::-moz-range-track {
            height: 4px;
            background: rgba(255, 255, 255, 0.12);
            border-radius: var(--radius-full);
            transition: background 0.2s;
        }

        .volume-slider:hover::-webkit-slider-runnable-track {
            background: linear-gradient(rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0.2)) no-repeat center / 100% 4px;
        }

        .volume-slider:hover::-moz-range-track {
            background: rgba(255, 255, 255, 0.2);
        }

        .volume-slider::-webkit-slider-thumb {
            -webkit-appearance: none;
            appearance: none;
            width: 18px;
            height: 18px;
            /* Knop in het hoge spoor centreren: (22px spoor - 18px knop) / 2 */
            margin-top: 2px;
            border-radius: 50%;
            background: var(--primary);
            cursor: pointer;
            box-shadow: 0 0 8px var(--primary-glow);
            transition: transform 0.2s cubic-bezier(0.16, 1, 0.3, 1);
        }

        .volume-slider::-webkit-slider-thumb:hover {
            transform: scale(1.2);
        }

        .volume-slider::-moz-range-thumb {
            width: 18px;
            height: 18px;
            border-radius: 50%;
            background: var(--primary);
            cursor: pointer;
            border: none;
        }

        /* Big Hero Play Button */
        .master-play-btn {
            width: 68px;
            height: 68px;
            border-radius: 50%;
            background: linear-gradient(135deg, #FFE042 0%, var(--primary) 70%, #E6B800 100%);
            color: #0A0A0F;
            display: flex;
            align-items: center;
            justify-content: center;
            box-shadow: 0 8px 24px var(--primary-glow);
            transition: var(--transition-smooth);
            cursor: pointer;
            border: none;
            position: relative;
        }

        .master-play-btn::before {
            content: '';
            position: absolute;
            inset: -4px;
            border-radius: 50%;
            background: var(--primary);
            opacity: 0;
            z-index: -1;
            transition: opacity 0.3s, transform 0.3s;
        }

        .master-play-btn:hover {
            transform: scale(1.08);
            box-shadow: 0 12px 32px var(--primary-glow-strong);
        }

        .master-play-btn:hover::before {
            opacity: 0.2;
            transform: scale(1.15);
        }

        .master-play-btn:active {
            transform: scale(0.96);
        }

        .master-play-btn .icon {
            width: 1.75rem;
            height: 1.75rem;
        }

        /* Secondary Player Actions (Share / Info) */
        .player-actions-right {
            display: flex;
            align-items: center;
            justify-content: flex-end;
            width: 130px;
            gap: 0.5rem;
        }

        .action-icon-btn {
            width: 36px;
            height: 36px;
            border-radius: 50%;
            background: rgba(255, 255, 255, 0.05);
            border: 1px solid var(--border-subtle);
            color: var(--text-secondary);
            display: flex;
            align-items: center;
            justify-content: center;
            transition: var(--transition-smooth);
        }

        .action-icon-btn:hover {
            background: rgba(255, 205, 0, 0.12);
            border-color: var(--primary-soft-border);
            color: var(--primary);
            transform: translateY(-2px);
        }

        /* Up Next (Volgende Track) Banner */
        .up-next-card {
            margin-top: clamp(0.75rem, 1.2vh, 1.15rem);
            padding-top: clamp(0.6rem, 1vh, 0.95rem);
            border-top: 1px solid var(--border-subtle);
            display: flex;
            align-items: center;
            gap: 1rem;
            transition: var(--transition-smooth);
        }

        .up-next-card:hover {
            background: rgba(255, 255, 255, 0.02);
            border-radius: var(--radius-sm);
        }

        .up-next-art {
            width: 44px;
            height: 44px;
            border-radius: var(--radius-xs);
            overflow: hidden;
            background: var(--bg-elevated);
            flex-shrink: 0;
            display: flex;
            align-items: center;
            justify-content: center;
            color: var(--text-dim);
        }

        .up-next-art img {
            width: 100%;
            height: 100%;
            object-fit: cover;
        }

        .up-next-details {
            flex: 1;
            min-width: 0;
        }

        .up-next-label {
            font-size: 0.68rem;
            font-weight: 700;
            color: var(--primary);
            text-transform: uppercase;
            letter-spacing: 0.08em;
            margin-bottom: 0.15rem;
        }

        .up-next-title {
            font-size: 0.88rem;
            font-weight: 600;
            color: var(--text);
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }

        .up-next-artist {
            font-size: 0.78rem;
            color: var(--text-muted);
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }

        /* === GLOBAL SECTION STYLES === */
        .section {
            position: relative;
            z-index: 1;
            max-width: 1360px;
            margin: 0 auto;
            padding: 5.5rem clamp(1rem, 4vw, 3rem);
        }

        .section-header {
            display: flex;
            flex-direction: column;
            gap: 0.5rem;
            margin-bottom: 3rem;
        }

        .section-header.text-center {
            text-align: center;
            align-items: center;
        }

        .section-kicker {
            font-size: 0.78rem;
            font-weight: 800;
            text-transform: uppercase;
            letter-spacing: 0.1em;
            color: var(--primary);
            display: inline-flex;
            align-items: center;
            gap: 0.4rem;
        }

        .section-title {
            font-family: var(--font-display);
            font-size: clamp(1.85rem, 3.5vw, 2.75rem);
            font-weight: 800;
            letter-spacing: -0.025em;
            color: var(--text);
        }

        .section-subtitle {
            font-size: 1.05rem;
            color: var(--text-secondary);
            max-width: 650px;
            line-height: 1.6;
        }

        /* === SHOWS & PROGRAMMING SECTION === */
        .shows-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
            gap: 1.5rem;
            margin-bottom: 3.5rem;
        }

        .show-card {
            background: var(--bg-card);
            backdrop-filter: blur(20px);
            border: 1px solid var(--border-subtle);
            border-radius: var(--radius-lg);
            padding: 1.75rem;
            display: flex;
            flex-direction: column;
            gap: 1rem;
            transition: var(--transition-smooth);
            position: relative;
            overflow: hidden;
        }

        .show-card::before {
            content: '';
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 3px;
            background: linear-gradient(90deg, var(--primary), transparent);
            opacity: 0;
            transition: opacity 0.3s;
        }

        .show-card:hover {
            transform: translateY(-4px);
            border-color: var(--primary-soft-border);
            box-shadow: 0 16px 36px rgba(0, 0, 0, 0.45);
        }

        .show-card:hover::before {
            opacity: 1;
        }

        .show-card.is-active-day {
            border-color: var(--primary);
            background: rgba(255, 205, 0, 0.04);
        }

        .show-card.is-active-day::before {
            opacity: 1;
        }

        .show-day-badge {
            align-self: flex-start;
            font-size: 0.72rem;
            font-weight: 800;
            text-transform: uppercase;
            letter-spacing: 0.08em;
            color: var(--primary);
            background: rgba(255, 205, 0, 0.1);
            padding: 0.25rem 0.65rem;
            border-radius: var(--radius-xs);
        }

        .show-name {
            font-family: var(--font-display);
            font-size: 1.25rem;
            font-weight: 700;
            color: var(--text);
        }

        .show-time {
            display: flex;
            align-items: center;
            gap: 0.4rem;
            font-size: 0.85rem;
            font-weight: 600;
            color: var(--text-secondary);
        }

        .show-desc {
            font-size: 0.9rem;
            color: var(--text-muted);
            line-height: 1.55;
            margin-top: auto;
        }

        /* Earth Works Amsterdam Feature Banner */
        .vital-banner {
            background: linear-gradient(135deg, rgba(255, 205, 0, 0.08) 0%, rgba(20, 20, 30, 0.8) 100%);
            border: 1px solid var(--primary-soft-border);
            border-radius: var(--radius-xl);
            padding: clamp(2rem, 4vw, 3rem);
            margin-bottom: 4rem;
            display: grid;
            grid-template-columns: auto 1fr;
            gap: 2rem;
            align-items: center;
            box-shadow: var(--shadow-card);
            position: relative;
            overflow: hidden;
        }

        .vital-banner-icon {
            width: 72px;
            height: 72px;
            border-radius: 50%;
            background: rgba(255, 205, 0, 0.15);
            display: flex;
            align-items: center;
            justify-content: center;
            color: var(--primary);
            flex-shrink: 0;
            box-shadow: 0 0 30px var(--primary-glow);
        }

        .vital-banner-icon .icon {
            width: 2.25rem;
            height: 2.25rem;
        }

        .vital-banner-content h3 {
            font-family: var(--font-display);
            font-size: clamp(1.2rem, 2.5vw, 1.6rem);
            font-weight: 800;
            color: var(--text);
            margin-bottom: 0.5rem;
        }

        .vital-banner-content p {
            color: var(--text-secondary);
            font-size: 0.975rem;
            line-height: 1.65;
            max-width: 800px;
        }

        /* Schedule Timeline / Tabs */
        .schedule-box {
            background: var(--bg-card);
            border: 1px solid var(--border-subtle);
            border-radius: var(--radius-xl);
            padding: clamp(1.5rem, 3vw, 2.5rem);
            box-shadow: var(--shadow-card);
        }

        .schedule-tabs-nav {
            display: flex;
            align-items: center;
            gap: 0.5rem;
            overflow-x: auto;
            padding-bottom: 1rem;
            margin-bottom: 1.5rem;
            border-bottom: 1px solid var(--border-subtle);
            scrollbar-width: thin;
        }

        .schedule-tab-btn {
            padding: 0.65rem 1.25rem;
            border-radius: var(--radius-full);
            font-size: 0.85rem;
            font-weight: 600;
            color: var(--text-secondary);
            background: rgba(255, 255, 255, 0.03);
            border: 1px solid transparent;
            white-space: nowrap;
            transition: var(--transition-smooth);
        }

        .schedule-tab-btn:hover {
            color: var(--text);
            background: rgba(255, 255, 255, 0.08);
        }

        .schedule-tab-btn.active {
            background: var(--primary);
            color: #0A0A0F;
            font-weight: 700;
            box-shadow: 0 4px 16px var(--primary-glow);
        }

        .schedule-list {
            display: flex;
            flex-direction: column;
            gap: 0.75rem;
        }

        .schedule-row {
            display: grid;
            grid-template-columns: 140px 1fr auto;
            align-items: center;
            gap: 1.5rem;
            padding: 1.15rem 1.5rem;
            background: rgba(255, 255, 255, 0.02);
            border: 1px solid var(--border-subtle);
            border-radius: var(--radius-md);
            transition: var(--transition-smooth);
        }

        .schedule-row:hover {
            background: rgba(255, 255, 255, 0.05);
            border-color: rgba(255, 255, 255, 0.15);
            transform: translateX(4px);
        }

        .schedule-row.is-now {
            background: rgba(255, 205, 0, 0.08);
            border-color: var(--primary);
            border-left: 4px solid var(--primary);
        }

        .schedule-row-time {
            font-size: 0.88rem;
            font-weight: 600;
            color: var(--text-secondary);
            font-variant-numeric: tabular-nums;
        }

        .schedule-row.is-now .schedule-row-time {
            color: var(--primary);
            font-weight: 700;
        }

        .schedule-row-title {
            display: flex;
            align-items: center;
            gap: 0.75rem;
            font-weight: 700;
            font-size: 1.05rem;
            color: var(--text);
        }

        .schedule-row-playlist {
            font-size: 0.85rem;
            color: var(--text-muted);
            text-align: right;
            max-width: 250px;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }

        .badge-now-pill {
            display: inline-block;
            padding: 0.2rem 0.55rem;
            border-radius: var(--radius-xs);
            background: var(--primary);
            color: #0A0A0F;
            font-size: 0.7rem;
            font-weight: 800;
            letter-spacing: 0.05em;
        }

        .badge-continuation-pill {
            display: inline-block;
            padding: 0.15rem 0.5rem;
            border-radius: var(--radius-xs);
            background: rgba(255, 255, 255, 0.08);
            border: 1px solid var(--border-subtle);
            color: var(--text-secondary);
            font-size: 0.68rem;
            font-weight: 700;
            letter-spacing: 0.04em;
            text-transform: uppercase;
        }

        /* === NET AFGESPEELD (RECENT TRACKS) === */
        .history-grid {
            display: grid;
            grid-template-columns: repeat(auto-fill, minmax(360px, 1fr));
            gap: 1rem;
        }

        .history-card {
            background: var(--bg-card);
            border: 1px solid var(--border-subtle);
            border-radius: var(--radius-md);
            padding: 0.95rem 1.15rem;
            display: flex;
            align-items: center;
            gap: 1rem;
            transition: var(--transition-smooth);
            position: relative;
        }

        .history-card:hover {
            border-color: var(--primary-soft-border);
            background: var(--bg-card-hover);
            transform: translateY(-2px);
        }

        .history-thumb {
            width: 52px;
            height: 52px;
            border-radius: var(--radius-sm);
            overflow: hidden;
            background: var(--bg-elevated);
            flex-shrink: 0;
            display: flex;
            align-items: center;
            justify-content: center;
            color: var(--text-dim);
        }

        .history-thumb img {
            width: 100%;
            height: 100%;
            object-fit: cover;
        }

        .history-info {
            flex: 1;
            min-width: 0;
        }

        .history-song-title {
            font-size: 0.95rem;
            font-weight: 600;
            color: var(--text);
            white-space: normal;
            word-break: break-word;
            overflow-wrap: anywhere;
            line-height: 1.35;
            display: -webkit-box;
            -webkit-line-clamp: 2;
            -webkit-box-orient: vertical;
            overflow: hidden;
        }

        .history-song-artist {
            font-size: 0.82rem;
            color: var(--text-secondary);
            white-space: normal;
            word-break: break-word;
            overflow-wrap: anywhere;
            line-height: 1.35;
            display: -webkit-box;
            -webkit-line-clamp: 2;
            -webkit-box-orient: vertical;
            overflow: hidden;
        }

        .history-meta {
            display: flex;
            flex-direction: column;
            align-items: flex-end;
            gap: 0.35rem;
            flex-shrink: 0;
        }

        .history-time {
            font-size: 0.72rem;
            color: var(--text-muted);
            white-space: nowrap;
        }

        .history-actions {
            display: flex;
            align-items: center;
            gap: 0.4rem;
        }

        .history-spotify-btn {
            width: 28px;
            height: 28px;
            border-radius: 50%;
            background: rgba(29, 185, 84, 0.12);
            border: 1px solid rgba(29, 185, 84, 0.35);
            color: #1DB954;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            text-decoration: none;
            transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
            flex-shrink: 0;
        }

        .history-spotify-btn .icon {
            width: 15px;
            height: 15px;
            fill: currentColor;
            transition: transform 0.25s ease;
        }

        .history-spotify-btn:hover {
            background: #1DB954;
            border-color: #1DB954;
            color: #FFFFFF;
            transform: scale(1.12);
            box-shadow: 0 0 14px rgba(29, 185, 84, 0.55);
        }

        /* Apple Music knop (roze/rood, matching Apple Music branding) */
        .history-apple-btn {
            width: 28px;
            height: 28px;
            border-radius: 50%;
            background: rgba(250, 36, 60, 0.12);
            border: 1px solid rgba(250, 36, 60, 0.35);
            color: #FA5C78;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            text-decoration: none;
            transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
            flex-shrink: 0;
        }

        .history-apple-btn .icon {
            width: 15px;
            height: 15px;
            fill: currentColor;
            transition: transform 0.25s ease;
        }

        .history-apple-btn:hover {
            background: #FA233B;
            border-color: #FA233B;
            color: #FFFFFF;
            transform: scale(1.12);
            box-shadow: 0 0 14px rgba(250, 35, 59, 0.55);
        }

        .history-copy-btn {
            width: 28px;
            height: 28px;
            border-radius: 50%;
            background: rgba(255, 255, 255, 0.06);
            border: 1px solid var(--border-subtle);
            color: var(--text-muted);
            display: inline-flex;
            align-items: center;
            justify-content: center;
            cursor: pointer;
            transition: all 0.25s ease;
            flex-shrink: 0;
        }

        .history-copy-btn:hover {
            background: var(--primary);
            border-color: var(--primary);
            color: #0A0A0F;
            transform: scale(1.1);
        }

        /* === TERUGLUISTEREN (PODCASTS) === */
        .podcast-wrapper {
            display: flex;
            flex-direction: column;
            gap: 2rem;
        }

        /* Dedicated Podcast Player */
        .podcast-hero-player {
            background: linear-gradient(145deg, rgba(28, 28, 40, 0.85) 0%, rgba(18, 18, 26, 0.95) 100%);
            border: 1px solid var(--border-subtle);
            border-radius: var(--radius-xl);
            padding: clamp(1.5rem, 3.5vw, 2.25rem);
            box-shadow: var(--shadow-card);
            display: flex;
            flex-direction: column;
            gap: 1.5rem;
        }

        .podcast-player-top {
            display: flex;
            align-items: center;
            gap: 1.25rem;
        }

        .podcast-cover-art {
            width: 68px;
            height: 68px;
            border-radius: var(--radius-md);
            overflow: hidden;
            background: var(--bg-elevated);
            flex-shrink: 0;
            display: flex;
            align-items: center;
            justify-content: center;
            color: var(--text-dim);
            box-shadow: 0 4px 16px rgba(0, 0, 0, 0.3);
        }

        .podcast-cover-art img {
            width: 100%;
            height: 100%;
            object-fit: cover;
        }

        .podcast-now-info {
            flex: 1;
            min-width: 0;
        }

        .podcast-playing-kicker {
            font-size: 0.72rem;
            font-weight: 700;
            text-transform: uppercase;
            letter-spacing: 0.08em;
            color: var(--primary);
            margin-bottom: 0.25rem;
        }

        .podcast-playing-title {
            font-family: var(--font-display);
            font-size: 1.2rem;
            font-weight: 700;
            color: var(--text);
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }

        .podcast-playing-artist {
            font-size: 0.85rem;
            color: var(--text-secondary);
        }

        /* Podcast Scrubber & Times */
        .podcast-timeline {
            display: flex;
            flex-direction: column;
            gap: 0.5rem;
        }

        .podcast-scrubber {
            position: relative;
            width: 100%;
            height: 8px;
            background: rgba(255, 255, 255, 0.1);
            border-radius: var(--radius-full);
            cursor: pointer;
            transition: height 0.2s;
        }

        .podcast-scrubber:hover {
            height: 10px;
        }

        .podcast-scrubber-fill {
            height: 100%;
            width: 0%;
            background: var(--primary);
            border-radius: var(--radius-full);
            transition: width 0.1s linear;
        }

        .podcast-time-row {
            display: flex;
            justify-content: space-between;
            font-size: 0.8rem;
            color: var(--text-muted);
            font-variant-numeric: tabular-nums;
        }

        /* Podcast Control Buttons */
        .podcast-controls-row {
            display: flex;
            align-items: center;
            justify-content: space-between;
            flex-wrap: wrap;
            gap: 1rem;
        }

        .podcast-buttons-left {
            display: flex;
            align-items: center;
            gap: 0.75rem;
        }

        .podcast-ctrl-btn {
            width: 42px;
            height: 42px;
            border-radius: 50%;
            background: rgba(255, 255, 255, 0.06);
            border: 1px solid var(--border-subtle);
            color: var(--text);
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 0.8rem;
            font-weight: 700;
            transition: var(--transition-smooth);
        }

        .podcast-ctrl-btn:hover {
            background: rgba(255, 255, 255, 0.12);
            color: var(--primary);
            border-color: var(--primary-soft-border);
        }

        .podcast-master-play {
            width: 52px;
            height: 52px;
            border-radius: 50%;
            background: var(--primary);
            color: #0A0A0F;
            display: flex;
            align-items: center;
            justify-content: center;
            box-shadow: 0 4px 18px var(--primary-glow);
            transition: var(--transition-smooth);
        }

        .podcast-master-play:hover {
            transform: scale(1.06);
            background: var(--primary-hover);
        }

        .podcast-buttons-right {
            display: flex;
            align-items: center;
            gap: 0.75rem;
        }

        .speed-selector {
            background: rgba(255, 255, 255, 0.06);
            border: 1px solid var(--border-subtle);
            color: var(--text-secondary);
            font-size: 0.8rem;
            font-weight: 700;
            padding: 0.45rem 0.85rem;
            border-radius: var(--radius-full);
            cursor: pointer;
            transition: var(--transition-smooth);
        }

        .speed-selector:hover {
            color: var(--primary);
            border-color: var(--primary-soft-border);
        }

        /* Podcast Filter & Search Toolbar */
        .podcast-toolbar {
            background: var(--bg-card);
            border: 1px solid var(--border-subtle);
            border-radius: var(--radius-lg);
            padding: 1.25rem 1.5rem;
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 1rem;
            flex-wrap: wrap;
        }

        .podcast-search-box {
            position: relative;
            flex: 1;
            min-width: 240px;
        }

        .podcast-search-input {
            width: 100%;
            padding: 0.7rem 1rem 0.7rem 2.6rem;
            background: var(--bg-input);
            border: 1px solid var(--border-subtle);
            border-radius: var(--radius-md);
            color: var(--text);
            font-size: 0.9rem;
            outline: none;
            transition: border-color 0.2s;
        }

        .podcast-search-input:focus {
            border-color: var(--primary);
        }

        .podcast-search-icon {
            position: absolute;
            left: 0.9rem;
            top: 50%;
            transform: translateY(-50%);
            color: var(--text-dim);
            pointer-events: none;
        }

        .podcast-filter-group {
            display: flex;
            gap: 0.75rem;
            align-items: center;
            flex-wrap: wrap;
        }

        .podcast-filter-select {
            padding: 0.7rem 1.25rem;
            background: var(--bg-input);
            border: 1px solid var(--border-subtle);
            border-radius: var(--radius-md);
            color: var(--text);
            font-size: 0.88rem;
            font-family: inherit;
            outline: none;
            cursor: pointer;
        }

        .podcast-filter-select:focus {
            border-color: var(--primary);
        }

        /* Episodes List */
        .episodes-list {
            display: flex;
            flex-direction: column;
            gap: 0.75rem;
        }

        .episode-card {
            background: var(--bg-card);
            border: 1px solid var(--border-subtle);
            border-radius: var(--radius-md);
            padding: 1.15rem 1.5rem;
            display: flex;
            align-items: center;
            gap: 1.25rem;
            transition: var(--transition-smooth);
        }

        .episode-card:hover {
            border-color: var(--primary-soft-border);
            background: var(--bg-card-hover);
            transform: translateX(4px);
        }

        .episode-card.is-active-episode {
            border-color: var(--primary);
            background: rgba(255, 205, 0, 0.05);
            border-left: 4px solid var(--primary);
        }

        .episode-art {
            width: 52px;
            height: 52px;
            border-radius: var(--radius-sm);
            overflow: hidden;
            background: var(--bg-elevated);
            flex-shrink: 0;
            display: flex;
            align-items: center;
            justify-content: center;
            color: var(--text-dim);
        }

        .episode-art img {
            width: 100%;
            height: 100%;
            object-fit: cover;
        }

        .episode-info {
            flex: 1;
            min-width: 0;
        }

        .episode-title {
            font-weight: 700;
            font-size: 1rem;
            color: var(--text);
            margin-bottom: 0.2rem;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }

        .episode-meta {
            font-size: 0.8rem;
            color: var(--text-muted);
            display: flex;
            align-items: center;
            gap: 0.6rem;
        }

        .episode-actions {
            display: flex;
            align-items: center;
            gap: 0.65rem;
        }

        .episode-action-btn {
            width: 40px;
            height: 40px;
            border-radius: 50%;
            background: rgba(255, 255, 255, 0.05);
            border: 1px solid var(--border-subtle);
            color: var(--text);
            display: flex;
            align-items: center;
            justify-content: center;
            transition: var(--transition-smooth);
            text-decoration: none;
        }

        .episode-action-btn:hover {
            background: var(--primary);
            border-color: var(--primary);
            color: #0A0A0F;
            transform: scale(1.05);
        }

        .episode-action-btn.is-playing {
            background: var(--primary);
            border-color: var(--primary);
            color: #0A0A0F;
        }

        /* Pagination */
        .podcast-pagination {
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 1.5rem;
            margin-top: 1.5rem;
        }

        .pagination-btn {
            padding: 0.65rem 1.5rem;
            border-radius: var(--radius-full);
            background: rgba(255, 255, 255, 0.06);
            border: 1px solid var(--border-subtle);
            color: var(--text);
            font-weight: 600;
            font-size: 0.85rem;
            transition: var(--transition-smooth);
        }

        .pagination-btn:hover:not(:disabled) {
            background: var(--primary);
            color: #0A0A0F;
            border-color: var(--primary);
        }

        .pagination-btn:disabled {
            opacity: 0.35;
            cursor: not-allowed;
        }

        .pagination-info {
            font-size: 0.85rem;
            color: var(--text-muted);
        }

        /* === ABOUT / ETHOS SECTION === */
        .ethos-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
            gap: 1.5rem;
            margin-bottom: 3.5rem;
        }

        .ethos-card {
            background: var(--bg-card);
            border: 1px solid var(--border-subtle);
            border-radius: var(--radius-lg);
            padding: 2rem;
            display: flex;
            flex-direction: column;
            gap: 1rem;
            transition: var(--transition-smooth);
        }

        .ethos-card:hover {
            transform: translateY(-4px);
            border-color: var(--primary-soft-border);
            box-shadow: var(--shadow-card);
        }

        .ethos-icon {
            width: 52px;
            height: 52px;
            border-radius: var(--radius-md);
            background: rgba(255, 205, 0, 0.1);
            color: var(--primary);
            display: flex;
            align-items: center;
            justify-content: center;
        }

        .ethos-card h3 {
            font-family: var(--font-display);
            font-size: 1.2rem;
            font-weight: 700;
            color: var(--text);
        }

        .ethos-card p {
            font-size: 0.925rem;
            color: var(--text-secondary);
            line-height: 1.6;
        }

        /* Stream URLs & Devices Card */
        .connect-box {
            background: linear-gradient(135deg, rgba(255, 205, 0, 0.05) 0%, rgba(20, 20, 30, 0.6) 100%);
            border: 1px solid var(--border-subtle);
            border-radius: var(--radius-xl);
            padding: clamp(1.75rem, 4vw, 3rem);
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 2.5rem;
            align-items: center;
            width: 100%;
            max-width: 100%;
            box-sizing: border-box;
            min-width: 0;
            overflow: hidden;
        }

        .connect-info {
            min-width: 0;
            width: 100%;
            box-sizing: border-box;
        }

        .connect-info h3 {
            font-family: var(--font-display);
            font-size: 1.5rem;
            font-weight: 800;
            margin-bottom: 0.75rem;
        }

        .connect-info p {
            color: var(--text-secondary);
            font-size: 0.95rem;
            line-height: 1.6;
        }

        .connect-actions {
            display: flex;
            flex-direction: column;
            gap: 0.85rem;
            width: 100%;
            min-width: 0;
            box-sizing: border-box;
        }

        .stream-url-field {
            display: flex;
            align-items: center;
            justify-content: space-between;
            background: var(--bg-deep);
            border: 1px solid var(--border-subtle);
            border-radius: var(--radius-md);
            padding: 0.6rem 0.75rem 0.6rem 1rem;
            gap: 0.75rem;
            width: 100%;
            max-width: 100%;
            box-sizing: border-box;
            min-width: 0;
        }

        .stream-url-text {
            flex: 1;
            font-family: monospace;
            font-size: 0.85rem;
            color: var(--text-secondary);
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
            min-width: 0;
        }

        .copy-stream-btn {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            gap: 0.4rem;
            padding: 0.55rem 1.15rem;
            border-radius: var(--radius-sm);
            background: rgba(255, 255, 255, 0.08);
            border: 1px solid var(--border-subtle);
            color: var(--text);
            font-size: 0.8rem;
            font-weight: 700;
            white-space: nowrap;
            flex-shrink: 0;
            cursor: pointer;
            transition: var(--transition-smooth);
        }

        .copy-stream-btn:hover {
            background: var(--primary);
            border-color: var(--primary);
            color: #0A0A0F;
        }

        .copy-stream-btn.is-copied {
            background: #22c55e !important;
            border-color: #22c55e !important;
            color: #0A0A0F !important;
        }

        .connect-download-buttons {
            display: flex;
            gap: 0.75rem;
            flex-wrap: wrap;
            width: 100%;
            min-width: 0;
            box-sizing: border-box;
        }

        .connect-download-btn {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            gap: 0.5rem;
            padding: 0.65rem 1.15rem !important;
            font-size: 0.825rem !important;
            font-weight: 600 !important;
            border-radius: var(--radius-md) !important;
            white-space: normal !important;
            min-height: auto !important;
            line-height: 1.35 !important;
            box-sizing: border-box;
        }

        /* Audials Play app — iOS & Android store badges */
        .audials-block {
            margin-top: 0.5rem;
            padding-top: 1rem;
            border-top: 1px dashed var(--border-subtle);
            display: flex;
            flex-direction: column;
            gap: 0.7rem;
            width: 100%;
        }

        .audials-label {
            display: flex;
            align-items: center;
            gap: 0.5rem;
            font-size: 0.85rem;
            color: var(--text-secondary);
        }

        .audials-label .icon {
            color: var(--primary);
            width: 1.05rem;
            height: 1.05rem;
        }

        .audials-label strong {
            color: var(--text);
            font-weight: 700;
        }

        .audials-store-buttons {
            display: flex;
            gap: 0.75rem;
            flex-wrap: wrap;
            width: 100%;
        }

        .store-badge {
            display: inline-flex;
            align-items: center;
            gap: 0.65rem;
            padding: 0.55rem 1.05rem;
            border-radius: var(--radius-sm);
            background: #000000;
            border: 1px solid rgba(255, 255, 255, 0.22);
            color: #FFFFFF;
            text-decoration: none;
            transition: var(--transition-smooth);
            min-width: 150px;
        }

        .store-badge:hover {
            border-color: var(--primary);
            transform: translateY(-2px);
            box-shadow: 0 8px 22px rgba(0, 0, 0, 0.4);
        }

        .store-badge-icon {
            width: 1.6rem;
            height: 1.6rem;
            fill: #FFFFFF;
            flex-shrink: 0;
        }

        .store-badge-text {
            display: flex;
            flex-direction: column;
            line-height: 1.15;
        }

        .store-badge-small {
            font-size: 0.62rem;
            font-weight: 500;
            letter-spacing: 0.02em;
            opacity: 0.85;
        }

        .store-badge-big {
            font-family: var(--font-display);
            font-size: 1.02rem;
            font-weight: 700;
            letter-spacing: -0.01em;
        }

        @media (max-width: 960px) {
            .audials-store-buttons {
                flex-direction: column;
            }
            .store-badge {
                width: 100%;
                justify-content: flex-start;
            }
        }

        /* === CONTACT SECTION === */
        .contact-container {
            max-width: 720px;
            margin: 0 auto;
        }

        .contact-form-card {
            background: var(--bg-card);
            backdrop-filter: blur(28px);
            border: 1px solid var(--border-subtle);
            border-radius: var(--radius-xl);
            padding: clamp(2rem, 5vw, 3.25rem);
            box-shadow: var(--shadow-card);
        }

        .form-row {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 1.25rem;
            margin-bottom: 1.25rem;
        }

        .form-group {
            display: flex;
            flex-direction: column;
            gap: 0.45rem;
            margin-bottom: 1.25rem;
        }

        .form-label {
            font-size: 0.8rem;
            font-weight: 700;
            text-transform: uppercase;
            letter-spacing: 0.06em;
            color: var(--text-secondary);
        }

        .form-label .req {
            color: var(--primary);
        }

        .form-input,
        .form-textarea {
            width: 100%;
            padding: 0.9rem 1.15rem;
            background: var(--bg-input);
            border: 1px solid var(--border-subtle);
            border-radius: var(--radius-sm);
            color: var(--text);
            font-family: inherit;
            font-size: 0.95rem;
            outline: none;
            transition: border-color 0.2s, box-shadow 0.2s;
        }

        .form-input:focus,
        .form-textarea:focus {
            border-color: var(--primary);
            box-shadow: 0 0 0 3px rgba(255, 205, 0, 0.15);
        }

        .form-textarea {
            resize: vertical;
            min-height: 140px;
        }

        /* Spam Protection Honeypot */
        .honeypot-field {
            position: absolute;
            left: -9999px;
            width: 1px;
            height: 1px;
            overflow: hidden;
            opacity: 0;
        }

        .submit-btn {
            width: 100%;
            padding: 1rem 2rem;
            border-radius: var(--radius-md);
            background: linear-gradient(135deg, #FFE042 0%, var(--primary) 60%, #E6B800 100%);
            color: #0A0A0F;
            font-family: var(--font-display);
            font-weight: 700;
            font-size: 1rem;
            box-shadow: 0 4px 18px var(--primary-glow);
            transition: var(--transition-smooth);
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 0.5rem;
        }

        .submit-btn:hover:not(:disabled) {
            transform: translateY(-2px);
            box-shadow: 0 8px 24px var(--primary-glow-strong);
        }

        .submit-btn:disabled {
            opacity: 0.5;
            cursor: not-allowed;
            box-shadow: none;
        }

        .form-status-alert {
            display: none;
            margin-top: 1.25rem;
            padding: 1rem 1.25rem;
            border-radius: var(--radius-sm);
            font-size: 0.9rem;
            line-height: 1.5;
            animation: fadeIn 0.3s ease;
        }

        .form-status-alert.success {
            display: block;
            background: rgba(34, 197, 94, 0.12);
            border: 1px solid rgba(34, 197, 94, 0.3);
            color: #4ade80;
        }

        .form-status-alert.error {
            display: block;
            background: rgba(239, 68, 68, 0.12);
            border: 1px solid rgba(239, 68, 68, 0.3);
            color: #f87171;
        }

        /* Social Media Links */
        .socials-bar {
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 1.25rem;
            margin-top: 3.5rem;
        }

        .social-pill {
            display: inline-flex;
            align-items: center;
            gap: 0.85rem;
            padding: 0.65rem 1.4rem;
            border-radius: var(--radius-full);
            background: rgba(255, 255, 255, 0.04);
            border: 1px solid var(--border-subtle);
            color: var(--text);
            text-decoration: none;
            backdrop-filter: blur(12px);
            transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
        }

        .social-icon-wrapper {
            width: 32px;
            height: 32px;
            display: flex;
            align-items: center;
            justify-content: center;
            flex-shrink: 0;
            transition: transform 0.25s ease;
        }

        .social-pill:hover .social-icon-wrapper {
            transform: scale(1.1);
        }

        .ig-wrapper {
            background: linear-gradient(45deg, #f09433 0%, #e6683c 25%, #dc2743 50%, #cc2366 75%, #bc1888 100%);
            border-radius: 9px;
            box-shadow: 0 4px 14px rgba(220, 39, 67, 0.35);
        }

        .fb-wrapper {
            background: #1877F2;
            border-radius: 50%;
            box-shadow: 0 4px 14px rgba(24, 119, 242, 0.35);
        }

        .social-content {
            display: inline-flex;
            align-items: center;
            gap: 0.45rem;
            font-size: 0.95rem;
        }

        .social-name {
            font-weight: 700;
            color: #FFFFFF;
        }

        .social-handle {
            font-size: 0.82rem;
            color: var(--text-muted);
            font-weight: 500;
        }

        .social-pill:hover {
            transform: translateY(-2px);
        }

        .social-pill-ig:hover {
            border-color: rgba(225, 48, 108, 0.55);
            background: rgba(225, 48, 108, 0.08);
            box-shadow: 0 8px 24px rgba(225, 48, 108, 0.22);
        }

        .social-pill-fb:hover {
            border-color: rgba(24, 119, 242, 0.55);
            background: rgba(24, 119, 242, 0.08);
            box-shadow: 0 8px 24px rgba(24, 119, 242, 0.22);
        }

        /* === FOOTER === */

        /* ============ PAGE ROUTER: losse pagina's, speler speelt door ============ */
        main > section[data-page]:not(.page-active):not(.page-leaving) { display: none; }

        /* Uitgaande pagina: kort uitfaden naar linksboven terwijl de nieuwe eronder instapt */
        main > section.page-leaving {
            position: absolute; top: 0; left: 0; width: 100%;
            pointer-events: none;
            animation: section-out 0.32s ease forwards;
        }

        /* Inkomende pagina: zachte fade, kinder-blokken stijgen gestagderd na */
        main > section.page-active {
            animation: section-in 0.5s cubic-bezier(0.16, 1, 0.3, 1) 0.12s backwards;
        }
        main > section.page-active > * {
            animation: part-rise 0.55s cubic-bezier(0.16, 1, 0.3, 1) backwards;
        }
        main > section.page-active > *:nth-child(2) { animation-delay: 0.09s; }
        main > section.page-active > *:nth-child(3) { animation-delay: 0.18s; }
        main > section.page-active > *:nth-child(4) { animation-delay: 0.27s; }

        @keyframes section-in    { from { opacity: 0; } to { opacity: 1; } }
        @keyframes section-out   { from { opacity: 1; transform: none; } to { opacity: 0; transform: translateY(-20px) scale(0.985); } }
        @keyframes part-rise     { from { opacity: 0; transform: translateY(22px); } to { opacity: 1; transform: none; } }

        @media (prefers-reduced-motion: reduce) {
            main > section.page-leaving { display: none; }
            main > section.page-active,
            main > section.page-active > * { animation: none; }
        }
        .nav-item a.is-active { color: var(--primary); }
        .nav-item a.is-active::after { width: 100%; }

                .site-footer {
                    border-top: 1px solid var(--border-subtle);
            padding: 4rem clamp(1rem, 4vw, 3rem) 7rem;
            background: var(--bg-deep);
            color: var(--text-muted);
            text-align: center;
        }

        .footer-content {
            max-width: 800px;
            margin: 0 auto;
            display: flex;
            flex-direction: column;
            align-items: center;
            gap: 1.25rem;
        }

        .footer-logo {
            width: 52px;
            height: 52px;
            border-radius: 50%;
            opacity: 0.85;
            transition: opacity 0.2s;
        }

        .footer-logo:hover {
            opacity: 1;
        }

        .footer-text {
            font-size: 0.85rem;
            line-height: 1.7;
        }

        .footer-text a {
            color: var(--primary);
            text-decoration: underline;
            text-underline-offset: 3px;
        }

        /* === DOCKED STICKY BOTTOM PLAYER === */
        .docked-player {
            position: fixed;
            bottom: 0;
            left: 0;
            right: 0;
            height: var(--sticky-player-height);
            z-index: 90;
            background: rgba(12, 12, 18, 0.92);
            backdrop-filter: blur(24px);
            -webkit-backdrop-filter: blur(24px);
            border-top: 1px solid var(--border-subtle);
            display: flex;
            align-items: center;
            justify-content: space-between;
            padding: 0 clamp(1rem, 4vw, 3rem);
            transform: translateY(100%);
            transition: transform 0.4s cubic-bezier(0.16, 1, 0.3, 1);
            box-shadow: 0 -8px 30px rgba(0, 0, 0, 0.5);
        }

        .docked-player.is-visible {
            transform: translateY(0);
        }

        .docked-progress-line {
            position: absolute;
            top: 0;
            left: 0;
            right: 0;
            height: 3px;
            background: rgba(255, 255, 255, 0.08);
        }

        .docked-progress-fill {
            height: 100%;
            width: 0%;
            background: var(--primary);
            will-change: width;
        }

        .docked-left {
            display: flex;
            align-items: center;
            gap: 1rem;
            min-width: 0;
            flex: 1;
            cursor: pointer;
        }

        .docked-art {
            width: 52px;
            height: 52px;
            border-radius: var(--radius-sm);
            overflow: hidden;
            background: var(--bg-elevated);
            flex-shrink: 0;
            display: flex;
            align-items: center;
            justify-content: center;
            color: var(--text-dim);
        }

        .docked-art img {
            width: 100%;
            height: 100%;
            object-fit: cover;
        }

        .docked-meta {
            min-width: 0;
            flex: 1;
            overflow: hidden;
            display: flex;
            flex-direction: column;
            justify-content: center;
            gap: 0.15rem;
        }

        .docked-center {
            display: flex;
            align-items: center;
            gap: 1.5rem;
            justify-content: center;
        }

        .docked-play-btn {
            width: 48px;
            height: 48px;
            border-radius: 50%;
            background: var(--primary);
            color: #0A0A0F;
            display: flex;
            align-items: center;
            justify-content: center;
            box-shadow: 0 4px 15px var(--primary-glow);
            transition: var(--transition-smooth);
        }

        .docked-play-btn:hover {
            transform: scale(1.08);
            background: var(--primary-hover);
        }

        .docked-right {
            display: flex;
            align-items: center;
            justify-content: flex-end;
            gap: 1.25rem;
            flex: 1;
        }

        .docked-volume {
            display: flex;
            align-items: center;
            gap: 0.5rem;
            width: 120px;
        }

        /* === RESPONSIVE BREAKPOINTS === */

        .mobile-mute-btn {
            display: none;
        }

        /* Nav Backdrop for Mobile Sheet */
        .nav-backdrop {
            display: none;
            position: fixed;
            inset: 0;
            background: rgba(0, 0, 0, 0.65);
            backdrop-filter: blur(6px);
            -webkit-backdrop-filter: blur(6px);
            z-index: 95;
            opacity: 0;
            transition: opacity 0.3s ease;
        }

        .nav-backdrop.is-open {
            display: block;
            opacity: 1;
        }

        /* Prevent auto-zoom on iOS inputs */
        @media (max-width: 768px) {
            input, select, textarea {
                font-size: 16px !important;
            }
        }

        /* Touch device fix: always show copy button in history */
        @media (hover: none), (max-width: 820px) {
            .history-copy-btn {
                opacity: 0.9 !important;
                background: rgba(255, 255, 255, 0.1) !important;
                width: 36px;
                height: 36px;
            }

            /* De drie knopjes naast een nummer in terugluisteren/geschiedenis
               waren 28px (op smal 32px). Een duim is ongeveer 9 mm breed; vanaf
               44px raak je ze betrouwbaar. Ze worden hier zichtbaar 36px en
               krijgen hieronder een onzichtbaar aanklikvlak van 44px. */
            .history-spotify-btn,
            .history-apple-btn,
            .history-copy-btn {
                width: 36px;
                height: 36px;
            }

            .history-spotify-btn .icon,
            .history-apple-btn .icon {
                width: 17px;
                height: 17px;
            }

            /* Afstand in het rijtje iets verder open: een knop van 36px met een
               vlak van 44px steekt 4px uit; met 0,6rem (9,6px) ertussen raken de
               vlakken van twee buurknoppen elkaar net niet. */
            .history-actions {
                gap: 0.6rem;
            }
        }

        /* === AANRAAKSCHERM: grotere tikvlakken en terugkoppeling bij het indrukken ===
           Twee dingen die op een telefoon opvallen maar met een muis nooit:
           1. een klein rond knopje voelt als een naald;
           2. een zweeftoestand ("hover") blijft na een tik branden tot je ergens
              anders tikt, dus een knop blijft geel alsof je er nog op staat.
           Vlakken van 44x44 via een onzichtbaar extra laagje net over de knop: de
           lay-out en het zichtbare ontwerp blijven exact zoals ze zijn, alleen de
           rand waar de knop reageert wordt ruimer. */
        @media (hover: none), (pointer: coarse) {
            .action-icon-btn,
            .episode-action-btn,
            .history-spotify-btn,
            .history-apple-btn,
            .history-copy-btn {
                position: relative;
            }

            .action-icon-btn::before,
            .episode-action-btn::before,
            .history-spotify-btn::before,
            .history-apple-btn::before,
            .history-copy-btn::before {
                content: "";
                position: absolute;
                top: 50%;
                left: 50%;
                width: 44px;
                height: 44px;
                transform: translate(-50%, -50%);
            }

            /* Vooruit/achteruit spoelen bij een uitzending: het lijntje is 8px,
               te dun om met een duim te pakken. Het element wordt 28px hoog en
               tekent zijn lijn zelf, gecentreerd (content-box). */
            .podcast-scrubber {
                padding: 10px 0;
                background-clip: content-box;
                box-sizing: content-box;
            }

            /* Terugkoppeling op het moment van indrukken, niet pas na loslaten. */
            .action-icon-btn:active,
            .episode-action-btn:active,
            .history-spotify-btn:active,
            .history-apple-btn:active,
            .history-copy-btn:active,
            .bb-btn:active,
            .schedule-tab-btn:active,
            .mobile-toggle:active,
            .docked-play-btn:active {
                transform: scale(0.94);
            }

            /* Beweging en zweem van de zweeftoestand uit: op een telefoon zeggen
               ze niets, en ze branden na een tik onhandig door tot je ergens
               anders tikt. De kleur houden we, die leest als "net aangetikt". */
            .action-icon-btn:hover,
            .episode-action-btn:hover,
            .history-spotify-btn:hover,
            .history-apple-btn:hover,
            .history-copy-btn:hover,
            .docked-play-btn:hover,
            .master-play-btn:hover {
                transform: none;
            }

            .action-icon-btn:hover,
            .episode-action-btn:hover,
            .history-spotify-btn:hover,
            .history-apple-btn:hover,
            .history-copy-btn:hover {
                box-shadow: none;
            }

            .volume-slider::-webkit-slider-thumb:hover,
            .volume-slider::-moz-range-thumb:hover {
                transform: none;
            }
        }

        /* Lower & Compact Desktop / Laptop Screens (< 1280px) */
        @media (max-width: 1280px) {
            .site-nav {
                padding: 0 clamp(1rem, 2.5vw, 2rem);
                gap: 1rem;
            }

            .nav-ticker-container {
                display: none;
            }

            .nav-menu {
                gap: 1.15rem;
            }

            .nav-item a {
                font-size: 0.88rem;
            }
        }

        /* Tablets & Medium Screens */
        @media (max-width: 1024px) {
            .hero-grid {
                grid-template-columns: 1fr;
                gap: 2.75rem;
            }

            .hero-info {
                text-align: center;
                align-items: center;
            }

            .hero-brand-header {
                justify-content: center;
                margin-bottom: 0.5rem;
            }

            .hero-logo-box {
                justify-content: center;
            }

            .hero-desc {
                margin: 0 auto;
            }

            .hero-actions {
                justify-content: center;
            }

            .hero-stats {
                justify-content: center;
                gap: 1.5rem;
                flex-wrap: wrap;
            }

            .player-card-wrapper {
                max-width: 460px;
                margin: 0 auto;
                width: 100%;
            }

            .connect-box {
                grid-template-columns: 1fr;
                gap: 1.5rem;
            }
        }

        /* Mobile Screens & Tablets (< 960px) */
        @media (max-width: 960px) {
            :root {
                --nav-height: 64px;

                /* De vaste spelerbalk krimpt hieronder naar 72px, maar de
                   ondermarge van de pagina hield rekening met de desktophoogte van
                   84px + de veilige zone: ~24px dode ruimte onderaan elke pagina
                   op telefoon en tablet. Eén variabele, dus beide kanten dezelfde waarde. */
                --sticky-player-height: 72px;
            }

            body {
                padding-bottom: calc(var(--sticky-player-height) + env(safe-area-inset-bottom, 0px) + 0.75rem);
            }

            .site-nav {
                padding: 0 1rem;
            }

            .nav-brand {
                font-size: 1.2rem;
                gap: 0.65rem;
            }

            .nav-logo-img {
                width: 36px;
                height: 36px;
            }

            .nav-ticker-container {
                display: none;
            }

            .mobile-toggle {
                display: flex;
            }

            .nav-menu {
                position: fixed;
                top: var(--nav-height);
                left: 0;
                right: 0;
                background: rgba(12, 12, 18, 0.98);
                backdrop-filter: blur(28px);
                -webkit-backdrop-filter: blur(28px);
                flex-direction: column;
                align-items: stretch;
                padding: 1.25rem 1.5rem 2rem;
                border-bottom: 1px solid var(--border-subtle);
                border-radius: 0 0 var(--radius-xl) var(--radius-xl);
                box-shadow: 0 20px 40px rgba(0, 0, 0, 0.7);
                gap: 0.4rem;
                transform: translateY(-120%);
                opacity: 0;
                /* Dicht is dit menu alleen ondoorzichtig en niet aanklikbaar, maar
                   de zeven menuknoppen staan er nog: met Tab loop je door een menu
                   dat je niet ziet. visibility: hidden haalt ze uit de
                   toetsenbordvolgorde. De zichtbaarheid schakelt pas ná het
                   uitschuiven om, zodat het menu niet al halverwege de animatie
                   wegvalt. */
                visibility: hidden;
                pointer-events: none;
                transition: transform 0.35s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.3s ease, visibility 0s linear 0.35s;
                z-index: 99;
                max-height: calc(100vh - var(--nav-height));
                max-height: calc(100svh - var(--nav-height));
                overflow-y: auto;
            }

            .nav-menu.is-open {
                transform: translateY(0);
                opacity: 1;
                visibility: visible;
                pointer-events: auto;
                transition: transform 0.35s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.3s ease, visibility 0s;
            }

            .nav-item a {
                display: block;
                padding: 0.85rem 0.5rem;
                font-size: 1.05rem;
                border-bottom: 1px solid rgba(255, 255, 255, 0.05);
            }

            .section {
                padding: 3.5rem clamp(1rem, 4vw, 1.5rem);
                max-width: 100%;
                box-sizing: border-box;
                overflow: hidden;
            }

            .player-card-wrapper {
                max-width: 100%;
                width: 100%;
                box-sizing: border-box;
            }

            .player-ambient-glow {
                inset: 0;
                filter: blur(20px);
                max-width: 100%;
            }

            .shows-grid {
                grid-template-columns: 1fr;
                gap: 1rem;
            }

            .vital-banner {
                grid-template-columns: 1fr;
                gap: 1.25rem;
                text-align: center;
                padding: 1.5rem 1.25rem;
            }

            .vital-banner-icon {
                margin: 0 auto;
            }

            .history-grid {
                grid-template-columns: 1fr;
                gap: 0.75rem;
                width: 100%;
                min-width: 0;
            }

            .ethos-grid {
                grid-template-columns: 1fr;
                gap: 1rem;
            }

            .ethos-card {
                padding: 1.5rem 1.25rem;
            }

            .section-header {
                margin-bottom: 2rem;
            }

            .section-title {
                font-size: clamp(1.6rem, 5vw, 2.1rem);
            }

            .form-row {
                grid-template-columns: 1fr;
            }

            .schedule-row {
                grid-template-columns: 1fr;
                gap: 0.4rem;
                padding: 0.85rem 1rem;
            }

            .schedule-row-time {
                display: flex;
                align-items: center;
                justify-content: space-between;
                width: 100%;
            }

            .schedule-row-playlist {
                text-align: left;
                white-space: normal;
                word-break: break-word;
                overflow-wrap: anywhere;
                max-width: 100%;
            }

            /* Volume in de vaste balk: hier werd de hele rechterkant weggehaald,
               waardoor je op pagina's zonder spelerskaart (terugluisteren, gids,
               chat, forum) op telefoon en tablet helemaal geen volumeregeling meer
               had, alleen pauzeren. Knop en schuif blijven daarom staan. Alleen het
               pijltje "naar de speler" valt weg: dat rolt naar een kaart die op die
               pagina's niet in beeld is, en een tik op het plaatje links doet al
               precies hetzelfde. */
            .docked-right {
                display: flex;
                flex: 0 0 auto;
                gap: 0.5rem;
            }

            .docked-right .action-icon-btn {
                display: none;
            }

            .docked-volume {
                width: clamp(104px, 24vw, 132px);
            }

            .docked-player {
                transform: translateY(0) !important;
                visibility: visible !important;
                opacity: 1 !important;
                height: calc(var(--sticky-player-height) + env(safe-area-inset-bottom, 0px));
                padding: 0.5rem 1rem max(0.5rem, env(safe-area-inset-bottom));
                gap: 0.75rem;
                max-width: 100vw;
                width: 100%;
                box-sizing: border-box;
                overflow: hidden;
            }

            .docked-left {
                min-width: 0;
                flex: 1;
                overflow: hidden;
            }

            .docked-meta {
                min-width: 0;
                flex: 1;
                overflow: hidden;
            }

            .docked-art {
                width: 44px;
                height: 44px;
            }

            .docked-title {
                font-size: 0.85rem;
            }

            .docked-artist {
                font-size: 0.75rem;
            }

            .docked-play-btn {
                width: 44px;
                height: 44px;
            }

            /* Connect Box / Sonos */
            .connect-box {
                grid-template-columns: 1fr;
                gap: 1.5rem;
                padding: 1.75rem 1.25rem;
                width: 100%;
                box-sizing: border-box;
            }

            .connect-info {
                text-align: center;
            }

            .connect-actions {
                width: 100%;
            }

            .stream-url-field {
                flex-direction: column;
                align-items: stretch;
                padding: 0.85rem;
                gap: 0.65rem;
                width: 100%;
                box-sizing: border-box;
            }

            .stream-url-text {
                word-break: break-all;
                overflow-wrap: anywhere;
                white-space: normal;
                text-align: center;
                font-size: 0.82rem;
                line-height: 1.45;
                width: 100%;
                max-width: 100%;
                box-sizing: border-box;
            }

            .copy-stream-btn {
                width: 100%;
                justify-content: center;
                padding: 0.65rem;
                background: var(--primary);
                color: #0A0A0F;
                border: none;
                font-weight: 700;
            }

            .connect-download-buttons {
                display: flex;
                flex-direction: column;
                width: 100%;
                gap: 0.5rem;
            }

            .connect-download-btn {
                width: 100% !important;
                justify-content: center !important;
                padding: 0.75rem 1rem !important;
                min-height: 44px !important;
                text-align: center !important;
                white-space: normal !important;
                box-sizing: border-box !important;
            }
        }

        /* Phones & Compact Screens (< 600px) */
        @media (max-width: 600px) {
            .hero {
                padding-top: calc(var(--nav-height) + 1.25rem);
                padding-bottom: 2.5rem;
                padding-left: 1rem;
                padding-right: 1rem;
                width: 100%;
                max-width: 100%;
                box-sizing: border-box;
                overflow: hidden;
            }

            .section {
                padding: 3rem 1rem;
                width: 100%;
                max-width: 100%;
                box-sizing: border-box;
                overflow: hidden;
            }

            .hero-grid {
                display: flex;
                flex-direction: column;
                gap: 2rem;
                width: 100%;
                max-width: 100%;
            }

            .hero-brand-header {
                justify-content: center;
                align-items: center;
                width: 100%;
                margin-bottom: 0.5rem;
            }

            .hero-logo-box {
                justify-content: center;
            }

            .hero-title {
                font-size: clamp(2rem, 7.5vw, 2.5rem);
                letter-spacing: -0.025em;
                word-break: break-word;
            }

            .hero-desc {
                font-size: 0.95rem;
                line-height: 1.55;
                word-break: break-word;
            }

            .hero-stats {
                gap: 1.25rem;
                padding-top: 1rem;
                width: 100%;
                justify-content: space-around;
            }

            .stat-val {
                font-size: 1.15rem;
            }

            .hero-actions {
                flex-direction: column;
                width: 100%;
                gap: 0.75rem;
            }

            .btn:not(.btn-icon-only) {
                width: 100%;
                min-height: 48px;
            }

            .btn-icon-only {
                width: 48px;
                height: 48px;
                flex-shrink: 0;
            }

            /* Player Card on Mobile */
            .player-card-wrapper {
                max-width: 100%;
                width: 100%;
                box-sizing: border-box;
            }

            .player-ambient-glow {
                inset: 0;
                filter: blur(20px);
                max-width: 100%;
            }

            .player-card {
                padding: 1.2rem;
                border-radius: var(--radius-lg);
                width: 100%;
                box-sizing: border-box;
            }

            .player-track-info {
                min-height: auto;
                margin-bottom: 1rem;
            }

            .track-title {
                font-size: 1.15rem;
            }

            .track-artist {
                font-size: 0.88rem;
            }

            .player-controls-row {
                justify-content: space-around;
            }

            /* Volumeregeling terug op de telefoon. Hier werd de groep dempen +
               schuif vervangen door alleen een dempknop, dus je kon het volume zelf
               niet meer zetten, alleen helemaal stil. De schuif staat weer op 96px
               (desktop 140px) en de dempknop in die groep doet hetzelfde als de
               aparte mobiele dempknop, dus die blijft verborgen: twee dempknoppen
               naast elkaar is één te veel. */
            .volume-group {
                width: 96px;
                gap: 0.5rem;
            }

            .mobile-mute-btn {
                display: none;
            }

            /* In de vaste balk is op een telefoon te weinig breedte voor dempknop,
               schuif én de titel van het nummer. Daar blijft de schuif over: die
               kan naar 0 voor stil, en op de startschil staat de dempknop van de
               kaart zelf. */
            .docked-volume {
                width: clamp(64px, 18vw, 110px);
            }

            .docked-volume .volume-btn {
                display: none;
            }

            .master-play-btn {
                width: 62px;
                height: 62px;
            }

            .player-actions-right {
                width: auto;
            }

            /* Shows & Guides */
            .shows-grid {
                grid-template-columns: 1fr;
                gap: 0.85rem;
                width: 100%;
            }

            .show-card {
                padding: 1.25rem;
                width: 100%;
                box-sizing: border-box;
            }

            .vital-banner {
                grid-template-columns: 1fr;
                text-align: center;
                gap: 1.25rem;
                padding: 1.5rem 1.25rem;
                width: 100%;
                box-sizing: border-box;
            }

            .vital-banner-icon {
                margin: 0 auto;
                width: 56px;
                height: 56px;
            }

            .schedule-box {
                padding: 1.25rem 0.85rem;
                width: 100%;
                box-sizing: border-box;
                overflow: hidden;
            }

            /* Swipeable Schedule Tabs */
            .schedule-tabs-nav {
                display: flex;
                gap: 0.4rem;
                overflow-x: auto;
                -webkit-overflow-scrolling: touch;
                scrollbar-width: none;
                padding-bottom: 0.75rem;
                margin-bottom: 1rem;
                max-width: 100%;
            }

            .schedule-tabs-nav::-webkit-scrollbar {
                display: none;
            }

            .schedule-tab-btn {
                padding: 0.5rem 0.95rem;
                font-size: 0.78rem;
                flex-shrink: 0;
            }

            /* Net Afgespeeld History Cards */
            .history-grid {
                grid-template-columns: 1fr;
                gap: 0.65rem;
                width: 100%;
                min-width: 0;
            }

            .history-card {
                padding: 0.75rem 0.85rem;
                gap: 0.75rem;
                width: 100%;
                min-width: 0;
                box-sizing: border-box;
                overflow: hidden;
            }

            .history-thumb {
                width: 44px;
                height: 44px;
                flex-shrink: 0;
            }

            .history-info {
                flex: 1;
                min-width: 0;
                overflow: hidden;
                display: flex;
                flex-direction: column;
                gap: 0.15rem;
            }

            .history-song-title {
                font-size: 0.88rem;
                white-space: normal;
                word-break: break-word;
                overflow-wrap: anywhere;
                line-height: 1.32;
                display: -webkit-box;
                -webkit-line-clamp: 2;
                -webkit-box-orient: vertical;
                overflow: hidden;
            }

            .history-song-artist {
                font-size: 0.78rem;
                white-space: normal;
                word-break: break-word;
                overflow-wrap: anywhere;
                line-height: 1.32;
                display: -webkit-box;
                -webkit-line-clamp: 2;
                -webkit-box-orient: vertical;
                overflow: hidden;
            }

            .history-meta {
                flex-shrink: 0;
                align-items: flex-end;
            }

            /* Ethos / About Cards */
            .ethos-grid {
                grid-template-columns: 1fr;
                gap: 0.85rem;
                width: 100%;
            }

            .ethos-card {
                padding: 1.25rem 1rem;
                width: 100%;
                box-sizing: border-box;
            }

            /* Podcasts & On Demand */
            .podcast-hero-player {
                padding: 1.25rem 1rem;
                width: 100%;
                box-sizing: border-box;
            }

            .podcast-cover-art {
                width: 56px;
                height: 56px;
            }

            .podcast-playing-title {
                font-size: 1.05rem;
            }

            .podcast-scrubber {
                height: 8px;
                padding: 8px 0;
                background-clip: content-box;
            }

            .podcast-controls-row {
                justify-content: center;
                gap: 0.75rem;
            }

            .podcast-master-play {
                width: 48px;
                height: 48px;
            }

            .podcast-toolbar {
                flex-direction: column;
                align-items: stretch;
                padding: 1rem;
                gap: 0.75rem;
                width: 100%;
                box-sizing: border-box;
            }

            .podcast-search-box {
                width: 100%;
                min-width: 0;
            }

            .podcast-filter-group {
                flex-direction: column;
                width: 100%;
                gap: 0.5rem;
            }

            .podcast-filter-select {
                width: 100%;
                min-width: 0;
                box-sizing: border-box;
            }

            .episode-card {
                padding: 0.85rem 1rem;
                gap: 0.75rem;
                width: 100%;
                box-sizing: border-box;
            }

            .episode-art {
                width: 44px;
                height: 44px;
            }

            .episode-title {
                font-size: 0.92rem;
            }

            .episode-meta {
                font-size: 0.75rem;
                flex-wrap: wrap;
            }

            .episode-action-btn {
                width: 38px;
                height: 38px;
            }

            /* Connect Box / Sonos */
            .connect-box {
                padding: 1.5rem 1rem;
                gap: 1.25rem;
                width: 100%;
                max-width: 100%;
                box-sizing: border-box;
                border-radius: var(--radius-lg);
            }

            .connect-info h3 {
                font-size: 1.25rem;
            }

            .connect-info p {
                font-size: 0.88rem;
                line-height: 1.55;
            }

            .stream-url-field {
                flex-direction: column;
                align-items: stretch;
                padding: 0.85rem;
                gap: 0.65rem;
                width: 100%;
                box-sizing: border-box;
                border-radius: var(--radius-sm);
            }

            .stream-url-text {
                word-break: break-all;
                overflow-wrap: anywhere;
                white-space: normal;
                text-align: center;
                font-size: 0.78rem;
                line-height: 1.45;
                padding: 0.2rem 0;
                width: 100%;
                max-width: 100%;
                box-sizing: border-box;
            }

            .copy-stream-btn {
                width: 100%;
                justify-content: center;
                text-align: center;
                padding: 0.7rem;
                background: var(--primary);
                color: #0A0A0F;
                border: none;
                font-size: 0.85rem;
                font-weight: 700;
                border-radius: var(--radius-sm);
            }

            .connect-download-buttons {
                display: flex;
                flex-direction: column;
                width: 100%;
                gap: 0.5rem;
            }

            .connect-download-btn {
                width: 100% !important;
                justify-content: center !important;
                padding: 0.75rem 0.85rem !important;
                min-height: 44px !important;
                font-size: 0.82rem !important;
                text-align: center !important;
                white-space: normal !important;
                box-sizing: border-box !important;
            }

            /* Contact Form */
            .contact-form-card {
                padding: 1.5rem 1rem;
                width: 100%;
                box-sizing: border-box;
            }

            .socials-bar {
                flex-direction: column;
                width: 100%;
                gap: 0.75rem;
            }

            .social-pill {
                width: 100%;
                justify-content: center;
                padding: 0.85rem 1rem;
                box-sizing: border-box;
            }
        }

        /* Subtle Fade In Animation */
        @keyframes fadeIn {
            from { opacity: 0; transform: translateY(8px); }
            to { opacity: 1; transform: translateY(0); }
        }

        .animate-fade-in {
            animation: fadeIn 0.4s cubic-bezier(0.16, 1, 0.3, 1) forwards;
        }

        /* ==================== LIVE CHAT ==================== */
        .chat-card {
            max-width: 860px;
            margin: 0 auto;
            background: var(--bg-card);
            backdrop-filter: blur(28px);
            -webkit-backdrop-filter: blur(28px);
            border: 1px solid var(--border-subtle);
            border-radius: var(--radius-lg);
            box-shadow: var(--shadow-card);
            padding: 1.5rem 1.5rem 1.25rem;
            display: flex;
            flex-direction: column;
            gap: 1rem;
        }

        .chat-card-header {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 1rem;
            flex-wrap: wrap;
        }

        .chat-card-status {
            display: flex;
            align-items: center;
            gap: 0.6rem;
            font-family: var(--font-display);
            font-weight: 700;
            font-size: 0.95rem;
            color: var(--text-secondary);
        }

        .chat-card-count {
            font-size: 0.8rem;
            color: var(--text-muted);
        }

        /* Beheer (moderatie) */
        [hidden] { display: none !important; } /* hidden-attr wint altijd van eigen display-regels */









        /* De chat-log zelf. Deze regels hingen vast aan ".chat-admin-on .chat-log"
           — een afstammelijke selector, dus ze golden alleen als die class op een
           voorouder stond. Die class wordt nergens in de site gezet (in index.html,
           script.js en moderatie.php komt hij niet voor), dus de log had in de
           praktijk nooit een eigen hoogte of scrollgebied: op desktop groeide hij
           oneindig mee en op mobiel (max-600: height 320px) liepen berichten over
           de rand van de kaart heen omdat overflow ontbrak. */
        .chat-log {
            height: 380px;
            overflow-y: auto;
            display: flex;
            flex-direction: column;
            gap: 0.85rem;
            padding: 0.35rem 0.5rem 0.35rem 0.15rem;
            scrollbar-width: thin;
            /* Scrollen binnen de log "ketting niet door" naar de pagina eronder,
               zodat je op mobiel niet per ongeluk de hele pagina meeschuift. */
            overscroll-behavior: contain;
        }

        /* Reservering voor de moderatie-uitvoering: iets meer hoogte omdat er per
           bericht knoppen en tags bij komen. */
        .chat-admin-on
        .chat-log {
            height: 380px;
        }

        .chat-empty {
            color: var(--text-muted);
            text-align: center;
            padding: 2.5rem 1rem;
            font-size: 0.95rem;
        }

        .chat-msg {
            display: flex;
            align-items: flex-start;
            gap: 0.75rem;
            /* Flex-item in een kolom (.chat-log / .forum-posts). Zonder deze
               regel duwt te brede content het hele bericht breder dan de kaart,
               waardoor op mobiel de rechterkant wordt afgeknipt. */
            min-width: 0;
        }

        .chat-avatar {
            width: 38px;
            height: 38px;
            border-radius: var(--radius-full);
            flex-shrink: 0;
            display: flex;
            align-items: center;
            justify-content: center;
            font-family: var(--font-display);
            font-weight: 800;
            font-size: 0.95rem;
            color: #08080C;
        }

        .chat-msg-body {
            background: var(--bg-elevated);
            border: 1px solid var(--border-subtle);
            border-radius: var(--radius-sm);
            padding: 0.55rem 0.85rem;
            max-width: min(560px, 86%);
            /* mag kleiner worden dan zijn inhoud: zie .chat-msg hierboven */
            min-width: 0;
        }

        .chat-msg-meta {
            display: flex;
            align-items: baseline;
            gap: 0.5rem;
            margin-bottom: 0.15rem;
            /* Naam + tijd + "aangepast door beheer" past niet naast elkaar op
               een smal scherm: laten omslaan in plaats van afknippen. */
            flex-wrap: wrap;
            min-width: 0;
        }

        .chat-msg-name {
            font-family: var(--font-display);
            font-weight: 700;
            font-size: 0.85rem;
            min-width: 0;
            overflow-wrap: anywhere;
        }

        .chat-msg-time {
            font-size: 0.72rem;
            color: var(--text-dim);
        }

        .chat-msg-text {
            font-size: 0.92rem;
            color: var(--text-secondary);
            line-height: 1.5;
            overflow-wrap: anywhere;
        }

        .chat-input-row {
            display: grid;
            grid-template-columns: 160px 1fr auto;
            grid-template-areas: "name text send";
            gap: 0.6rem;
            align-items: stretch;
        }

        .chat-name-input,
        .chat-text-input {
            background: var(--bg-input);
            border: 1px solid var(--border-subtle);
            border-radius: var(--radius-sm);
            color: var(--text);
            font-family: var(--font-body);
            font-size: 0.92rem;
            padding: 0.8rem 1rem;
            transition: var(--transition-smooth);
        }

        .chat-name-input {
            grid-area: name;
            min-width: 0;
        }

        .chat-text-input {
            grid-area: text;
            min-width: 0;
        }

        .chat-name-input:focus,
        .chat-text-input:focus {
            outline: none;
            border-color: var(--border-focus);
            box-shadow: 0 0 0 3px var(--primary-soft);
        }

        .chat-send-btn {
            grid-area: send;
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 0.45rem;
            padding: 0.8rem 1.25rem;
            border-radius: var(--radius-sm);
            background: linear-gradient(135deg, #FFE042 0%, var(--primary) 60%, #E6B800 100%);
            color: #0A0A0F;
            font-family: var(--font-display);
            font-weight: 700;
            font-size: 0.92rem;
            box-shadow: 0 4px 18px var(--primary-glow);
            transition: var(--transition-smooth);
            white-space: nowrap;
        }

        .chat-send-btn:hover:not(:disabled) {
            transform: translateY(-2px);
            box-shadow: 0 8px 24px var(--primary-glow-strong);
        }

        .chat-send-btn:disabled {
            opacity: 0.5;
            cursor: not-allowed;
            box-shadow: none;
        }

        .chat-send-btn .icon {
            width: 1.1rem;
            height: 1.1rem;
        }

        .chat-hint {
            font-size: 0.78rem;
            color: var(--text-dim);
            text-align: center;
        }

        /* Chat mobiel */
        @media (max-width: 600px) {
            .chat-card {
                padding: 1rem 0.85rem 0.85rem;
            }

            .chat-log {
                height: 320px;
            }

            .chat-input-row {
                grid-template-columns: 1fr auto;
                grid-template-areas:
                    "name send"
                    "text text";
            }
        }

        /* ================= FORUM ================= */
        .forum-card {
            max-width: 860px;
            margin: 0 auto;
            background: var(--bg-card);
            backdrop-filter: blur(28px);
            -webkit-backdrop-filter: blur(28px);
            border: 1px solid var(--border-subtle);
            border-radius: var(--radius-lg);
            box-shadow: var(--shadow-card);
            padding: 1.5rem 1.5rem 1.25rem;
        }

        .forum-card-header {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 1rem;
            margin-bottom: 1rem;
            padding-bottom: 0.9rem;
            border-bottom: 1px solid var(--border-subtle);
        }

        .forum-card-status {
            display: flex;
            align-items: center;
            gap: 0.55rem;
            font-size: 0.92rem;
            color: var(--text-secondary);
            min-width: 0;
        }

        .forum-card-status span:last-child {
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
        }

        .forum-card-count {
            font-size: 0.82rem;
            color: var(--text-tertiary);
            white-space: nowrap;
        }







        /* Toolbar + nieuw-onderwerp knop */
        .forum-toolbar {
            display: flex;
            justify-content: flex-end;
            margin-bottom: 1rem;
        }

        .forum-new-btn {
            display: inline-flex;
            align-items: center;
            gap: 0.5rem;
            background: var(--primary);
            color: #111;
            border: none;
            border-radius: var(--radius-full);
            padding: 0.6rem 1.2rem;
            font-size: 0.9rem;
            font-weight: 700;
            cursor: pointer;
            transition: background 0.2s, transform 0.15s;
        }

        .forum-new-btn:hover { background: var(--primary-hover); transform: translateY(-1px); }
        .forum-new-btn .icon { width: 16px; height: 16px; }

        /* Nieuw-onderwerp formulier */
        .forum-new-form {
            background: var(--bg-elevated);
            border: 1px solid var(--border-subtle);
            border-radius: var(--radius-md);
            padding: 1.1rem 1.1rem 0.9rem;
            margin-bottom: 1.2rem;
        }

        .forum-new-actions {
            display: flex;
            justify-content: flex-end;
            gap: 0.6rem;
            margin-top: 0.4rem;
        }

        /* Onderwerpenlijst */
        .forum-list {
            display: flex;
            flex-direction: column;
            gap: 0.65rem;
        }

        .forum-empty {
            text-align: center;
            color: var(--text-tertiary);
            padding: 2rem 0;
            font-size: 0.92rem;
        }

        .forum-topic-row {
            display: flex;
            align-items: center;
            gap: 0.9rem;
            width: 100%;
            text-align: left;
            font: inherit;
            color: inherit;
            background: var(--bg-card-hover);
            border: 1px solid var(--border-subtle);
            border-radius: var(--radius-md);
            padding: 0.9rem 1rem;
            cursor: pointer;
            position: relative;
            transition: border-color 0.2s, background 0.2s, transform 0.15s;
        }

        .forum-topic-row:hover {
            border-color: var(--primary-soft-border);
            background: var(--bg-elevated);
            transform: translateY(-1px);
        }

        .forum-avatar {
            flex: 0 0 auto;
            width: 44px;
            height: 44px;
            border-radius: var(--radius-sm);
            display: flex;
            align-items: center;
            justify-content: center;
            font-weight: 800;
            font-size: 1.1rem;
            color: #0B0B10;
        }

        .forum-topic-body { min-width: 0; flex: 1 1 auto; }

        .forum-topic-title {
            font-weight: 700;
            font-size: 1rem;
            color: var(--text-primary);
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
        }

        .forum-topic-excerpt {
            font-size: 0.85rem;
            color: var(--text-tertiary);
            margin-top: 0.2rem;
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
        }

        .forum-topic-meta {
            display: flex;
            align-items: center;
            flex-wrap: wrap;
            gap: 0.45rem;
            font-size: 0.78rem;
            color: var(--text-tertiary);
            margin-top: 0.45rem;
        }

        .forum-topic-side {
            flex: 0 0 auto;
            display: flex;
            flex-direction: column;
            align-items: center;
            gap: 0.15rem;
        }

        .forum-reply-badge {
            min-width: 34px;
            text-align: center;
            background: var(--primary-soft);
            color: var(--primary);
            border: 1px solid var(--primary-soft-border);
            border-radius: var(--radius-full);
            font-weight: 800;
            font-size: 0.85rem;
            padding: 0.25rem 0.55rem;
        }

        .forum-reply-label {
            font-size: 0.68rem;
            color: var(--text-tertiary);
        }




        /* Thread-weergave */
        .forum-thread-toolbar {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 0.8rem;
            margin-bottom: 0.8rem;
            flex-wrap: wrap;
        }

        .forum-back-btn {
            background: transparent;
            border: none;
            color: var(--primary);
            font-size: 0.9rem;
            font-weight: 600;
            cursor: pointer;
            padding: 0.3rem 0;
        }

        .forum-back-btn:hover { color: var(--primary-hover); text-decoration: underline; }

        .forum-thread-title {
            font-size: 1.35rem;
            font-weight: 800;
            color: var(--text-primary);
            margin-bottom: 1rem;
            line-height: 1.3;
            overflow-wrap: anywhere;
        }

        .forum-posts {
            display: flex;
            flex-direction: column;
            gap: 0.8rem;
            margin-bottom: 1.2rem;
            min-width: 0;
        }

        .forum-post {
            background: var(--bg-card-hover);
            border: 1px solid var(--border-subtle);
            border-radius: var(--radius-md);
            padding: 0.9rem 1rem;
            min-width: 0;
        }

        /* Forum-bericht is zelf al een kaart — de chat-bubbel erin platmaken
           zodat er geen dubbele rand (doos-in-doos) ontstaat. */
        .forum-post .chat-msg-body {
            background: none;
            border: none;
            padding: 0;
            max-width: none;
            flex: 1 1 auto;
            min-width: 0;
        }

        .forum-reply-form { margin-top: 0.3rem; }

        .edited-tag {
            font-size: 0.7rem;
            color: var(--text-tertiary);
            border: 1px dashed var(--primary-soft-border);
            border-radius: var(--radius-full);
            padding: 0.05rem 0.5rem;
            white-space: nowrap;
        }

        /* --- BBCode toolbar + menu --- */
        .bb-toolbar {
            display: flex;
            align-items: center;
            flex-wrap: wrap;
            gap: 0.35rem;
            margin: 0 0 0.5rem;
        }

        .bb-btn {
            min-width: 30px;
            height: 30px;
            padding: 0 0.5rem;
            background: var(--bg-elevated);
            color: var(--text-secondary);
            border: 1px solid var(--border-subtle);
            border-radius: var(--radius-xs);
            font-size: 0.8rem;
            cursor: pointer;
            transition: border-color 0.15s, color 0.15s, background 0.15s;
        }

        @media (hover: hover) {
            .bb-btn:hover {
                border-color: var(--primary-soft-border);
                color: var(--primary);
                background: var(--primary-soft);
            }
        }

        .bb-select {
            background: var(--bg-input);
            color: var(--text-secondary);
            border: 1px solid var(--border-subtle);
            border-radius: var(--radius-xs);
            padding: 0.35rem 0.5rem;
            font-size: 0.8rem;
            cursor: pointer;
        }

        .bb-select:focus { outline: none; border-color: var(--border-focus); }

        /* Touch: dezelfde knoppen 30 → 40px. Deze regels staan bewust ná de
           basisregels hierboven — het zijn dezelfde klassen, dus de laatste
           regel wint. Bewust geen 44px: ze staan met 5,6px ertussen in een rij
           die wrapt, en 44 maakt de balk onnodig bol. */
        @media (hover: none), (pointer: coarse) {
            .bb-btn,
            .bb-select {
                min-width: 40px;
                min-height: 40px;
            }

            .bb-btn {
                height: 40px;
            }
        }

        .forum-reply-row {
            display: grid;
            grid-template-columns: minmax(110px, 160px) 1fr auto;
            grid-template-areas: "name text send";
            gap: 0.6rem;
            align-items: stretch;
        }

        /* Naamveld/knop erven grid-area-namen uit de chat — geef ze hier expliciet
           een bestaand area, anders overlappen naam en knop elkaar. */
        .forum-reply-row .chat-name-input { grid-area: name; }
        .forum-reply-row .chat-send-btn { grid-area: send; }

        .forum-reply-text { grid-area: text; resize: vertical; min-height: 76px; }

        /* --- BBCode elementen in berichten --- */
        .forum-bb-text {
            line-height: 1.65;
            /* lange tokens (URL's, hashtags) mogen uitwijken naar de volgende regel */
            overflow-wrap: anywhere;
        }

        .forum-bb-link {
            color: var(--primary);
            text-decoration: underline;
            word-break: break-all;
        }

        .forum-bb-link:hover { color: var(--primary-hover); }

        .forum-bb-img {
            max-width: 100%;
            max-height: 420px;
            border-radius: var(--radius-sm);
            border: 1px solid var(--border-subtle);
            margin: 0.4rem 0;
            display: block;
        }

        .forum-bb-quote {
            margin: 0.5rem 0;
            padding: 0.55rem 0.9rem;
            border-left: 3px solid var(--primary-dim);
            background: var(--primary-soft);
            border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
            color: var(--text-secondary);
        }

        .forum-bb-quote cite {
            display: block;
            font-style: normal;
            font-weight: 700;
            color: var(--primary);
            font-size: 0.8rem;
            margin-bottom: 0.25rem;
        }

        .forum-bb-code {
            margin: 0.5rem 0;
            padding: 0.6rem 0.8rem;
            background: var(--bg-input);
            border: 1px solid var(--border-subtle);
            border-radius: var(--radius-sm);
            font-family: ui-monospace, "Cascadia Mono", Consolas, monospace;
            font-size: 0.82rem;
            white-space: pre-wrap;
            word-break: break-word;
            overflow-x: auto;
            /* nooit breder dan de bubbel; lange regels schuiven zelf op */
            max-width: 100%;
        }

        .forum-bb-list {
            margin: 0.4rem 0 0.4rem 1.2rem;
            padding: 0;
            list-style: disc;
        }

        .forum-bb-list li { margin: 0.15rem 0; }

        @media (max-width: 600px) {
            .forum-reply-row {
                grid-template-columns: 1fr auto;
                grid-template-areas:
                    "name send"
                    "text text";
            }
        }

        /* Forum mobiel */
        @media (max-width: 600px) {
            .forum-card { padding: 1rem 0.85rem 0.85rem; }
            .forum-topic-excerpt { display: none; }
            .forum-avatar { width: 38px; height: 38px; font-size: 1rem; }
            .forum-topic-row { gap: 0.7rem; padding: 0.75rem 0.8rem; }
            .forum-topic-side { gap: 0.1rem; }
            .forum-thread-title { font-size: 1.15rem; }
        }
