* {
    user-select: none;
    -webkit-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none
}

body,html {
    touch-action: manipulation;
    -ms-touch-action: manipulation
}

body {
    margin: 0;
    background: #121212;
    overflow: hidden;
    font-family: "Space Grotesk",sans-serif;
    color: #fff
}

nav {
    position: fixed;
    top: 2vh;
    left: 2vw;
    z-index: 4
}

.menu {
    display: flex;
    gap: 1rem;
    align-items: center
}

.menu a {
    color: #fff;
    text-decoration: none;
    font-size: 1vw;
    opacity: .7;
    transition: opacity .3s ease
}

.menu a svg {
    width: 80px;
    height: 80px;
    stroke: #fff
}

.menu a:hover {
    opacity: 1;
    filter: drop-shadow(0 0 0.5vw #fff)
}

#grid-container,body,main {
    height: 100vh;
    width: 100vw
}

#grid-container {
    position: fixed;
    z-index: 0;
    background: 0 0
}

main {
    position: relative;
    display: flex;
    flex-direction: column;
    justify-content: center;
    z-index: 2
}

#video-container,.slashes-container {
    position: fixed;
    left: 0;
    width: 100%;
    overflow: hidden;
    pointer-events: none
}

.slashes-container {
    user-select: none;
    font-family: "Orbitron",sans-serif;
    font-size: 8vh;
    font-weight: 700;
    line-height: 1.1;
    white-space: nowrap;
    -webkit-text-stroke: 1px #fff;
    -webkit-text-fill-color: transparent;
}

.slashes-container.top {
    top: 29%;
    transform: translateY(-50%)
}

.slashes-container.bottom {
    bottom: 20%;
    transform: translateY(-50%)
}

.marquee__track {
    display: flex;
    align-items: center;
    will-change: transform
}

.marquee__slashes,.marquee__tile {
    display: inline-block;
    white-space: nowrap
}

.marquee__tile {
    flex: 0 0 auto
}

.marquee__slashes {
    -webkit-text-stroke: inherit;
    -webkit-text-fill-color: inherit;
    font: inherit
}

@media (prefers-reduced-motion:reduce) {
    .marquee__track {
        animation-play-state: paused!important
    }
}

#video-container {
    top: 0;
    height: 100%;
    z-index: -1;
    background: #1a1a1a
}

#background-video {
    position: absolute;
    width: 100%;
    height: 100%;
    object-fit: cover;
    opacity: .35
}

.text-container,.text-group {
    display: flex;
    white-space: nowrap;
    justify-content: center;
    align-items: center
}

.text-container {
    position: fixed;
    top: 50%;
    left: 0;
    width: 100vw;
    transform: translateY(-50%);
    overflow: hidden;
    pointer-events: none
}

.text-group {
    z-index: 4;
    position: relative;
    flex-direction: column;
    gap: .5rem
}

.glitch-text {
    position: relative;
    letter-spacing: .2vw;
    white-space: pre;
    text-align: center;
    font-size: clamp(4vh,8vw,8vh);
    font-weight: 900;
    color: #fff!important;
    -webkit-text-stroke: 1px #fff;
    -webkit-text-fill-color: transparent;
    text-shadow: none
}

#homeInfoString,#homeLyrics,.glitch-text,.outline-text {
    font-family: "Orbitron",sans-serif
}

.outline-text {
    color: #fff!important;
    -webkit-text-fill-color: #fff!important;
    -webkit-text-stroke: 0!important;
    text-shadow: none;
    font-size: clamp(4vh,8vw,8vh);
    filter: none;
    mix-blend-mode: normal!important
}

#homeInfoString {
    position: fixed;
    top: 6vh;
    left: 50%;
    height: 20vh;
    font-size: clamp(2vh,3vw,3vh);
    transform: translateX(-50%);
    font-weight: 400;
    color: #fff;
    opacity: .8;
    z-index: 4;
    filter: drop-shadow(0 0 1vw #fff);
    white-space: pre;
}

#homeLyrics {
    position: fixed;
    bottom: 6vh;
    left: 50%;
    height: 4vh;
    font-size: clamp(0.5vh,1vw,2vh);
    transform: translateX(-50%);
    font-weight: 400;
    color: #fff;
    opacity: .8;
    z-index: 4;
    filter: drop-shadow(0 0 1vw #ffffff80);
    text-align: center;
    white-space: nowrap;
}

#glitch-text,#glitch-text .glitch-base,#glitch-text span {
    -webkit-text-fill-color: transparent!important;
    color: transparent!important;
    text-shadow: none!important;
    text-rendering: geometricPrecision!important
}

#glitch-text .glitch-base {
    -webkit-text-stroke: 1px #fff!important
}

#glitch-text span.rgb-layer {
    -webkit-text-stroke: 1px currentColor!important
}

#glitch-text span.rgb-layer,#glitch-text>span:not(.glitch-base) {
    left: 50%
}

.dud {
    color: #c4c4c4
}

.social-links {
    position: fixed;
    bottom: 3vh;
    right: 2vw;
    display: flex;
    gap: 20px
}

.social-icon {
    color: #fff;
    text-decoration: none;
    opacity: .7;
    transition: opacity .3s ease;
    display: flex;
    align-items: center
}

.control-btn.muted svg .mute-line,.social-icon:hover {
    opacity: 1
}

.social-icon svg {
    width: 25px;
    height: 25px
}

.social-icon svg path {
    transition: stroke .3s ease
}

.social-icon:hover svg path {
    stroke: #fff;
    filter: drop-shadow(0 0 1vw #fff)
}

#datetime {
    position: fixed;
    top: 2vh;
    right: 2vw;
    font-size: clamp(10px,15px,20px);
    opacity: .7;
    font-family: "Space Grotesk",monospace;
    letter-spacing: .05em;
    font-variant-numeric: tabular-nums;
    text-align: right;
    line-height: 1.5;
    cursor: pointer
}

.video-controls {
    position: fixed;
    bottom: 2vh;
    left: 2vw;
    transform: none;
    display: flex;
    gap: .5rem;
    flex-direction: column;
    align-items: center;
    padding: .3rem;
    border-radius: .3rem;
    z-index: 10000;
    scale: .85;
    opacity: .5;
    transition: opacity .3s ease;
    pointer-events: all;
    transform-origin: bottom left
}

.current-track {
    color: #fff;
    font-family: "Space Grotesk",sans-serif;
    font-size: clamp(5px,15px,20px);
    opacity: .7;
    text-align: center;
    cursor: pointer;
    letter-spacing: -.02em;
    white-space: nowrap;
    overflow: hidden
}

.control-row {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: .6rem;
    width: 100%
}

.control-btn {
    background: 0 0;
    border: 0;
    color: #fff;
    cursor: pointer;
    opacity: .7;
    transition: all .3s ease;
    padding: .3rem;
    transform-origin: center
}

.control-btn:hover {
    opacity: 1;
    transform: scale(1.2);
}

.control-btn:active {
    transform: scale(.9)
}

.volume-control {
    display: flex;
    align-items: center;
    gap: .3rem
}

#volume-slider {
    width: 60px;
    height: 3px;
    -webkit-appearance: none;
    appearance: none;
    background: rgba(255,255,255,.3);
    border-radius: 2px;
    outline: 0;
    cursor: pointer;
    pointer-events: all
}

#volume-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    width: 8px;
    height: 8px;
    background: #fff;
    border-radius: 50%;
    cursor: pointer
}

#volume-slider::-moz-range-thumb {
    width: 8px;
    height: 8px;
    background: #fff;
    border-radius: 50%;
    cursor: pointer
}

.current-track:hover {
    opacity: 1
}

#volume-slider:hover {
    background: rgba(255,255,255,.5)
}

.control-btn svg .mute-line {
    opacity: 0;
    transition: opacity .3s ease
}

.progress-bar {
    width: 100%;
    height: .2vh;
    background: rgba(255,255,255,.2);
    border-radius: 1px;
    overflow: hidden;
    cursor: pointer;
    transition: height .2s ease
}

.progress-bar:hover {
    height: .4vh
}

.progress-fill {
    width: 0%;
    height: 100%;
    background: rgba(255,255,255,.7);
    transition: width .1s linear
}

.time-display {
    color: #fff;
    font-family: "Space Grotesk",sans-serif;
    font-size: clamp(5px,15px,15px);
    opacity: .7;
    text-align: center
}

.visualizer {
    position: fixed;
    bottom: 1.5vh;
    left: calc(50vw - 7.5vw);
    width: 15vw;
    display: flex;
    gap: 6px;
    height: 6vh;
    align-items: center;
    z-index: 10000;
    filter: drop-shadow(0 0 4px #fff)
}

.visualizer .bar {
    width: .4vw;
    height: 3px;
    background: #fff;
    opacity: .8;
    transition: transform .05s ease;
    transform-origin: center
}

.visualizer .c1,.visualizer .c4,.visualizer .o1,.visualizer .o3,.visualizer .r1,.visualizer .r4,.visualizer .y1,.visualizer .y4 {
    height: 4px
}

.visualizer .c4,.visualizer .o4,.visualizer .r4,.visualizer .y4 {
    margin-right: 8px
}

#start-overlay.hidden,.hidden {
    display: none
}

#start-overlay,.scanlines {
    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh
}

.scanlines {
    z-index: 3;
    background: linear-gradient(to bottom,rgba(255,255,255,0) 20%,rgba(0,0,0,.3) 50%);
    background-size: 100% 8px;
    pointer-events: none;
    opacity: .3;
    animation: scanlines .12s linear infinite;
    mix-blend-mode: multiply;
    will-change: background-position
}

#start-overlay {
    position: relative;
    display: flex;
    justify-content: center;
    align-items: center;
    white-space: nowrap;
    z-index: 999999;
    backdrop-filter: blur(20px);
    transition: opacity 0.8s cubic-bezier(.4,0,.2,1),
                backdrop-filter 0.8s cubic-bezier(.4,0,.2,1),
                -webkit-backdrop-filter 0.8s cubic-bezier(.4,0,.2,1);
    will-change: opacity, backdrop-filter;
    opacity: 1;
    overflow: hidden; /* important to clip pseudo-element if needed */
}

#start-overlay::before {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(to bottom,rgba(255,255,255,0) 20%,rgba(0,0,0,.3) 50%);
    background-size: 100% 8px;
    pointer-events: none;
    opacity: .3;
    animation: scanlines .12s linear infinite;
    mix-blend-mode: multiply;
    will-change: background-position;
    z-index: -1;
}

#overlay-subtext,#overlay-text,#start-button {
    position: absolute;
    left: 50%;
    max-width: fit-content;
    transform: translateX(-50%);
    font-family: "Orbitron",sans-serif;
    z-index: 1000000
}

#start-button {
    background: 0 0;
    border: 0;
    padding: 1rem 2rem;
    font-size: clamp(3vw,4vw,4vw);
    letter-spacing: .1vw;
    cursor: pointer;
    filter: drop-shadow(0 0 12px #0f0);
    color: #fff!important;
    -webkit-text-stroke: 1px #fff;
    -webkit-text-fill-color: transparent;
    text-shadow: none
}

#overlay-subtext,#overlay-text {
    color: #ffffffc9;
    filter: drop-shadow(0 0 10px #f90);
    opacity: 1;
    text-align: center
}

#overlay-text {
    top: 20%;
    font-size: clamp(2vw,3vw,3vw)
}

#overlay-subtext {
    bottom: 20%;
    font-size: clamp(2vw,3vw,3vw)
}

.morphing {
    opacity: 0;
    transform: translateX(calc(-50% + 50vw))!important
}

.zoom-transition {
    animation: zoomTransition 1s cubic-bezier(.4,0,.2,1) forwards;
    transform-origin: center
}

.about-icon,.menu a svg {
    transition: transform .3s ease
}

.home-button:hover svg,.menu a:hover svg {
    transform: scale(1.2)
}

.about-icon {
    width: 40px;
    height: 40px;
    border-radius: 0;
    object-fit: contain;
    transform: translateY(-6px)
}

.about-link:hover .about-icon {
    transform: translateY(-8px) scale(1.2)
}

#about-karl,#license-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0,0,0,.3);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    display: flex;
    justify-content: center;
    align-items: center;
    z-index: 1000000;
    perspective: 1000px;
    transition: all .3s ease;
    opacity: 0;
    pointer-events: none
}

#about-karl.visible,#license-overlay.visible {
    background: rgba(0,0,0,.8);
    opacity: 1;
    pointer-events: all
}

.license-card {
    max-width: 80vw
}

.license-card:hover {
    box-shadow: 0 25px 45px rgba(0,0,0,.25),0 10px 25px rgba(0,0,0,.15)
}

.license-card::before {
    background: linear-gradient(125deg,rgba(255,255,255,0)0,rgba(255,255,255,.1) 10%,rgba(255,255,255,.3) 20%,rgba(255,255,255,.5) 30%,rgba(255,255,255,.3) 40%,rgba(255,255,255,.1) 50%,rgba(255,255,255,0) 60%),linear-gradient(90deg,rgba(255,0,0,.1),rgba(0,255,0,.1),rgba(0,0,255,.1)),repeating-linear-gradient(45deg,rgba(255,255,255,.1)0,rgba(255,255,255,.1) 1px,transparent 1px,transparent 2px)
}

.license-card::after {
    background: linear-gradient(45deg,rgba(255,0,0,.5),rgba(255,165,0,.5),rgba(255,255,0,.5),rgba(0,255,0,.5),rgba(0,0,255,.5),rgba(238,130,238,.5));
    background: linear-gradient(45deg,transparent 0,rgba(255,255,255,.2) 45%,rgba(255,255,255,.4) 50%,rgba(255,255,255,.2) 55%,transparent 100%);
    transform: translateX(-100%) rotate(45deg)
}

.license-card[style*=rotateY] {
    background: linear-gradient(135deg,rgba(220,220,220,.2),rgba(200,210,255,.15))
}

.license-card[style*=rotateY]::before {
    opacity: calc(.5 + (var(--rotate-y, 0)/90)*.5)
}

.label {
    font-weight: 500
}

.country-text span {
    font-weight: 500;
    letter-spacing: .5px
}

.eu-section {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    margin-bottom: 20px
}

.eu-flag {
    width: 40px;
    height: 25px;
    position: relative;
    border-radius: 4px;
    overflow: hidden;
    margin: 15px 0 0 15px;
    backdrop-filter: blur(5px);
    -webkit-backdrop-filter: blur(5px)
}

.eu-flag::after,.eu-flag::before {
    content: "";
    position: absolute;
    background: #fecc00
}

.eu-flag::before {
    width: 100%;
    height: 5px;
    top: 50%;
    transform: translateY(-50%)
}

.eu-flag::after {
    height: 100%;
    width: 5px;
    left: 31%;
    transform: translateX(-50%)
}

.country-text {
    display: flex;
    flex-direction: column;
    margin-top: 0px;
    margin-left: 10px
}

.sub-text {
    font-size: 10px;
    text-transform: uppercase
}

.license-content {
    display: flex;
    flex-direction: row;
    justify-content: space-between;
    gap: 20px
}

.license-info {
    flex: 1;
    margin-left: 15px;
    margin-top: -20px
}

.info-group {
    position: relative;
    z-index: 2;
    padding: 15px;
    margin-top: 0
}

.label,.value {
    letter-spacing: .5px
}

.label {
    font-size: 8px;
    margin: 0;
    text-transform: uppercase
}

.value {
    font-size: 13px;
    margin: 0 0 10px;
    font-family: "OCR A Extended",monospace;
    font-weight: 700
}

.license-photo img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    filter: grayscale(100%) contrast(1.1);
    transform: scale(.8);
    border-radius: 12px;
    position: relative;
    z-index: 2;
    background: 0 0!important;
    mix-blend-mode: normal
}

.license-photo::after {
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: linear-gradient(135deg,rgba(255,255,255,.1)0,transparent 100%)
}

.signature {
    font-family: "Dancing Script",cursive;
    font-size: 16px;
    color: #000
}

.card-number {
    font-family: "OCR A Extended",monospace;
    font-size: 12px;
    color: #000
}

.license-card::after {
    top: 20px;
    right: 20px;
    width: 60px;
    height: 60px;
    background: linear-gradient(45deg,transparent 0,rgba(255,255,255,.1) 45%,rgba(255,255,255,.5) 50%,rgba(255,255,255,.1) 55%,transparent 100%);
    border-radius: 50%;
    opacity: .8;
    filter: hue-rotate(0deg);
    transition: all .3s ease
}

.license-card::before {
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: linear-gradient(125deg,transparent 0,rgba(255,255,255,.05) 25%,rgba(255,255,255,.1) 45%,rgba(255,255,255,.2) 50%,rgba(255,255,255,.1) 55%,rgba(255,255,255,.05) 75%,transparent 100%),repeating-linear-gradient(45deg,rgba(255,255,255,.05)0,rgba(255,255,255,.05) 1px,transparent 1px,transparent 2px);
    background: linear-gradient(to right,rgba(255,255,255,.1),rgba(255,255,255,.05));
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    z-index: -1
}

.license-card {
    background: linear-gradient(135deg,#f8f9fa 0,#e9ecef 100%)
}

.license-card[style*="rotateY("] {
    background: linear-gradient(135deg,#f8f9fa 0,#e9ecef 45%,#f1f3f5 50%,#e9ecef 55%,#f8f9fa 100%)
}

.license-card[style*="rotateY("]::before {
    background: linear-gradient(125deg,transparent 0,rgba(255,255,255,.1) 25%,rgba(255,255,255,.2) 45%,rgba(255,255,255,.3) 50%,rgba(255,255,255,.2) 55%,rgba(255,255,255,.1) 75%,transparent 100%),repeating-linear-gradient(45deg,rgba(255,255,255,.1)0,rgba(255,255,255,.1) 1px,transparent 1px,transparent 2px);
    filter: hue-rotate(calc(var(--rotate-y, 0)*1deg))
}

.license-card[style*="rotateY("]::after {
    filter: hue-rotate(calc(var(--rotate-y, 0)*2deg));
    opacity: calc(.8 + (var(--rotate-y, 0)/90)*.2)
}

.license-card .microtext {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-image: repeating-linear-gradient(0deg,rgba(0,0,0,.1)0,rgba(0,0,0,.1) 1px,transparent 1px,transparent 2px);
    z-index: 1;
    opacity: .3
}

.license-card:hover::before {
    background: repeating-linear-gradient(45deg,rgba(0,255,0,.05)0,rgba(0,255,0,.05) 2px,transparent 2px,transparent 4px),repeating-linear-gradient(-45deg,rgba(255,0,0,.05)0,rgba(255,0,0,.05) 2px,transparent 2px,transparent 4px);
    transition: background .3s ease;
    opacity: .9;
    filter: hue-rotate(15deg)
}

.close-license {
    display: none!important
}

.toggle-visibility {
    background: 0 0;
    border: 0;
    padding: 0;
    cursor: pointer;
    opacity: .7;
    transition: opacity .3s ease;
    transform: translateY(4px)
}

.toggle-visibility svg {
    stroke: #fff!important
}

.toggle-visibility:hover {
    opacity: 1
}

.age-value {
    font-size: 13px!important;
    letter-spacing: 0!important;
    word-spacing: 1px!important;
    color: #000!important
}

.license-card {
    background: linear-gradient(135deg,rgba(220,220,220,.15)0,rgba(200,210,255,.1) 100%)
}

.license-card::after {
    background: repeating-linear-gradient(-45deg,transparent 0,transparent 48%,rgba(200,220,255,.2) 49%,rgba(200,220,255,.2) 51%,transparent 52%,transparent 100%);
    background-size: 200% 200%;
    mix-blend-mode: overlay;
    pointer-events: none
}

.license-card .holo-layer {
    position: absolute;
    inset: 0;
    background: radial-gradient(circle at 50% 50%,transparent 0,rgba(200,220,255,.1) 45%,rgba(255,255,255,.2) 50%,rgba(200,220,255,.1) 55%,transparent 100%);
    mix-blend-mode: overlay;
    pointer-events: none;
    opacity: .5;
    animation: pulseHolo 3s ease-in-out infinite
}

.license-photo::after,.license-photo::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 2;
    mix-blend-mode: overlay;
    pointer-events: none
}

.license-photo::before {
    background: linear-gradient(125deg,transparent 0,rgba(200,220,255,.1) 25%,rgba(220,230,255,.2) 45%,rgba(255,255,255,.3) 50%,rgba(220,230,255,.2) 55%,rgba(200,220,255,.1) 75%,transparent 100%);
    opacity: .7;
    animation: photoHologram 8s linear infinite
}

.license-photo::after {
    background: repeating-linear-gradient(-45deg,transparent 0,transparent 48%,rgba(200,220,255,.2) 49%,rgba(200,220,255,.2) 51%,transparent 52%,transparent 100%);
    background-size: 200% 200%;
    opacity: .5;
    animation: photoLines 4s linear infinite
}

.home-button {
    background: 0 0;
    border: 0;
    padding: 0;
    z-index: 4;
    cursor: pointer;
    transform: translateY(-11px)
}

.home-button svg {
    width: 24px;
    height: 24px;
    stroke: #fff;
    transition: transform .3s ease
}

.about-link {
    margin-left: 0
}

.eu-flag {
    box-shadow: 0 0 10px rgba(103,140,255,.3)
}

.license-card {
    width: 428px;
    height: 270px;
    background: rgba(255,255,255,.1);
    position: relative;
    overflow: hidden;
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    border-radius: 24px;
    padding: 15px;
    transform-style: preserve-3d;
    transition: transform .8s cubic-bezier(.23,1,.32,1);
    will-change: transform;
    box-shadow: 0 15px 35px rgba(0,0,0,.2);
    border: 1px solid rgba(255,255,255,.2);
    animation: cardGlow 3s ease-in-out infinite
}

.eu-section,.holo-layer,.info-group,.license-card::after,.license-card::before,.license-card[style*=rotateY]::after,.license-card[style*=rotateY]::before,.license-content,.license-header,.license-info,.license-photo::after,.license-photo::before,.microtext {
    background: 0 0!important;
    backdrop-filter: none!important;
    -webkit-backdrop-filter: none!important
}

.country-text .sub-text,.country-text span,.label,.value {
    color: #fff!important;
    text-shadow: 0 1px 2px rgba(0,0,0,.2)
}

.license-photo {
    background: #fff!important
}

.eu-flag {
    background: rgba(0,106,167,.9)!important
}

.license-photo {
    width: 150px;
    height: 190px;
    overflow: hidden;
    position: relative;
    box-shadow: 0 2px 10px rgba(0,0,0,.1);
    margin-right: 15px;
    background: rgba(255,255,255,.02)!important;
    border-radius: 12px;
    margin-top: -55px;
    margin-left: -20px;
    transform-style: preserve-3d;
    transform: translateZ(1px);
    will-change: transform;
    backdrop-filter: blur(8px);
    margin-top: -25px;
    -webkit-backdrop-filter: blur(8px)
}

.license-card {
    background: linear-gradient(135deg,rgba(255,255,255,.2),rgba(255,255,255,.1))!important
}

.license-card::before {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(125deg,transparent 0,rgba(255,255,255,.3) 10%,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8) 30%,rgba(255,255,255,.6) 40%,rgba(255,255,255,.3) 50%,transparent 60%),linear-gradient(90deg,rgba(255,0,0,.2),rgba(0,255,0,.2),rgba(0,0,255,.2)),repeating-linear-gradient(45deg,rgba(255,255,255,.2)0,rgba(255,255,255,.2) 1px,transparent 1px,transparent 2px);
    mix-blend-mode: overlay;
    pointer-events: none;
    opacity: 1;
    transform: translateX(var(--light-position-x, 0)) translateY(var(--light-position-y, 0));
    transition: transform .1s ease;
    animation: holoShimmer 3s linear infinite
}

.license-card::after {
    content: "";
    position: absolute;
    inset: -2px;
    background: linear-gradient(45deg,rgba(255,0,0,.7),rgba(255,165,0,.7),rgba(255,255,0,.7),rgba(0,255,0,.7),rgba(0,0,255,.7),rgba(238,130,238,.7));
    z-index: -1;
    animation: rainbow 3s linear infinite;
    filter: blur(8px)
}

.cooperation-section {
    position: absolute;
    top: 2rem;
    left: 50%;
    transform: translateX(-50%);
    z-index: 1000002;
    display: flex;
    align-items: center;
    gap: .5rem;
    white-space: nowrap;
    width: auto;
    background: rgba(0,0,0,.2);
    padding: .5rem 1rem;
    border-radius: 20px;
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px)
}

.cooperation-text {
    color: #fff;
    font-size: .8rem;
    font-family: "Space Grotesk",sans-serif;
    text-transform: uppercase;
    letter-spacing: .05em
}

.karl-link {
    display: flex;
    align-items: center;
    text-decoration: none;
    transition: transform .3s ease
}

.karl-link:hover {
    transform: scale(1.1)
}

.karl-image {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    object-fit: cover
}

#license-overlay.visible .cooperation-section:hover,.cooperation-section:hover {
    opacity: 1
}

@media screen and (max-width:768px) {
    .cooperation-section {
        font-size: .7rem;
        padding: .4rem .8rem
    }
}

@media screen and (max-width:480px) {
    .cooperation-section {
        top: 2rem
    }
}

#about-karl.hidden {
    display: none
}

#about-karl .license-card {
    width: 428px;
    height: 270px;
    background: rgba(255,255,255,.1);
    position: relative;
    overflow: hidden;
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    border-radius: 24px;
    padding: 15px;
    transform-style: preserve-3d;
    transition: transform .8s cubic-bezier(.23,1,.32,1);
    will-change: transform;
    box-shadow: 0 15px 35px rgba(0,0,0,.2);
    border: 1px solid rgba(255,255,255,.2);
    animation: cardGlow 3s ease-in-out infinite
}

#about-karl .license-photo img {
    transform: scale(1.05) translateX(0) translateY(-15px)
}

.cooperation-section {
    opacity: 0;
    pointer-events: none;
    transition: opacity .5s ease
}

#license-overlay.visible .cooperation-section {
    opacity: .7;
    pointer-events: all
}

#license-overlay.visible.side-by-side {
    justify-content: flex-end;
    padding-right: 10%
}

#about-karl.visible.side-by-side {
    justify-content: flex-start;
    padding-left: 10%
}

/* ------------------------------
   UI elements: hidden by default,
   blur+fade in simultaneously with #start-overlay
   ------------------------------ */

/* Default: hidden + blurred */
.scanlines {
  opacity: 0;
  filter: blur(1.6vh);
  transition: opacity 2s cubic-bezier(.4,0,.2,1),
              filter 2s cubic-bezier(.4,0,.2,1);
  pointer-events: none;
  will-change: opacity, filter;
}

.home-button,
.about-link,
.about-icon,
.current-track,
.control-row,
.volume-control,
.progress-bar,
.time-display,
.outline-text,
.glitch-text,
#youtube-icon,
#instagram-icon,
#facebook-icon,
#datetime {
  opacity: 0;
  filter: blur(1.6vh);
  transition: opacity 4s cubic-bezier(.4,0,.2,1),
              filter 4s cubic-bezier(.4,0,.2,1);
  pointer-events: none;
  will-change: opacity, filter;
}

.visualizer {
  opacity: 0;
  filter: blur(1.6vh) drop-shadow(0 0 4px #fff);
  transition: opacity 4s cubic-bezier(.4,0,.2,1),
              filter 4s cubic-bezier(.4,0,.2,1);
  pointer-events: none;
  will-change: opacity, filter;
}

#top-slashes,
#bottom-slashes {
  opacity: 0;
  filter: blur(1.6vh) drop-shadow(0 0 20px #fff);
  transition: opacity 2s cubic-bezier(.4,0,.2,1),
              filter 2s cubic-bezier(.4,0,.2,1);
  pointer-events: none;
  will-change: opacity, filter;
}

/* Revealed state: remove blur and fade in */
.home-button.ui-visible,
.about-link.ui-visible,
.about-icon.ui-visible,
.current-track.ui-visible,
.control-row.ui-visible,
.volume-control.ui-visible,
.progress-bar.ui-visible,
.time-display.ui-visible,
.outline-text.ui-visible,
.glitch-text.ui-visible,
#youtube-icon.ui-visible,
#instagram-icon.ui-visible,
#facebook-icon.ui-visible,
#datetime.ui-visible {
  opacity: 1;
  filter: none;
  pointer-events: auto;
}

.scanlines.ui-visible {
  opacity: .3; /* maintain scanlines opacity */
  filter: none;
  pointer-events: auto;
}

#top-slashes.ui-visible,
#bottom-slashes.ui-visible {
  opacity: 1;
  /* include blur(0px) so filter function list matches the hidden state and can interpolate */
  filter: blur(0px) drop-shadow(0 0 20px #fff);
  pointer-events: auto;
}

.visualizer.ui-visible {
  opacity: 1;
  filter: drop-shadow(0 0 4px #fff);
  pointer-events: auto;
}

/* Keep scanlines animation running while hidden so it appears seamless */
.scanlines {
  animation-play-state: running;
}

/* Ensure visualizer bars still render correctly once visible */
.visualizer.ui-visible { visibility: visible; }

/* Hover shadow overrides — placed after the .ui-visible rules so they win the cascade.
   Require .ui-visible where appropriate to avoid applying while elements are still hidden. */

.ui-visible #mute-btn:hover,
.ui-visible #next-video:hover,
.ui-visible #prev-video:hover,
.ui-visible .mute-btn:hover,
.ui-visible .current-track:hover,
.ui-visible .control-btn:hover {
  filter: drop-shadow(0 0 1vw #fff);
}

.ui-visible .mute-btn:hover {
  filter: drop-shadow(0 0 2vw #fff);
}

/* Slider thumbs: require the slider to be visible (has .ui-visible on the slider container) */
#volume-slider.ui-visible::-webkit-slider-thumb:hover {
  filter: drop-shadow(0 0 1vw #fff);
}
#volume-slider.ui-visible::-moz-range-thumb:hover {
  filter: drop-shadow(0 0 1vw #fff);
}

@media (prefers-reduced-motion:reduce) {
    * {
        animation-duration: .001ms!important;
        animation-iteration-count: 1!important;
        transition-duration: .001ms!important;
        scroll-behavior: auto!important
    }
}

/* idle on/off popup */
.idle-popup {
  position: fixed;
  left: 50%;
  bottom: 4vh;
  transform: translateX(-50%) translateY(8px);
  z-index: 100000;
  background: rgba(0,0,0,0.5);
  color: #fff;
  padding: 0.55rem 0.9rem;
  border-radius: 999px;
  font: 600 0.9rem/1 'Space Grotesk', system-ui, sans-serif;
  letter-spacing: 0.4px;
  opacity: 0;
  pointer-events: none;
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  transition: opacity var(--idle-popup-fade, 300ms) ease, transform var(--idle-popup-fade, 300ms) ease;
}
.idle-popup.visible {
  opacity: 1;
  transform: translateX(-50%) translateY(0);
}
/* idle-managed transitions (preserve filters) */
.idle-managed {
  opacity: 1;
  filter: var(--idle-normal-filter, none);
  transition: opacity var(--idle-duration, 800ms) ease, filter var(--idle-duration, 800ms) ease;
  will-change: opacity, filter;
}
.idle-managed.idle-active {
  opacity: 0;
  filter: var(--idle-hidden-filter, blur(8px));
  pointer-events: none;
}

/* HIGHER-SPECIFICITY idle rules for top/bottom slashes
   Only take effect after the element has been revealed (has .ui-visible).
   This prevents idle-managed from making slashes visible before the reveal delay. */
#top-slashes.ui-visible.idle-managed,
#bottom-slashes.ui-visible.idle-managed {
  /* use preserved "normal" filter when not idle (only after reveal) */
  opacity: 1 !important;
  filter: var(--idle-normal-filter, none) !important;
  transition: opacity var(--idle-duration, 800ms) ease, filter var(--idle-duration, 800ms) ease;
  pointer-events: auto;
  will-change: opacity, filter;
}

/* idle state: blur/fade out using the per-element --idle-hidden-filter
   only affects slashes that have been revealed already */
#top-slashes.ui-visible.idle-managed.idle-active,
#bottom-slashes.ui-visible.idle-managed.idle-active {
  opacity: 0 !important;
  filter: var(--idle-hidden-filter, blur(8px)) !important;
  pointer-events: none;
}

/* Ensure marquee track is paused while slashes are idle (only when revealed) */
#top-slashes.ui-visible.idle-managed.idle-active .marquee__track,
#bottom-slashes.ui-visible.idle-managed.idle-active .marquee__track {
  animation-play-state: paused !important;
}