

:root {
            --bg-color: #121214;
            --panel-color: #1e1e24;
            --accent-color: #00ff9d;
            --secondary-color: #ff0055;
            --text-color: #e0e0e0;
            --grid-line: #333;
        }

        body {
            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
            background-color: var(--bg-color);
            color: var(--text-color);
            margin: 0;
            display: flex;
            flex-direction: column;
            align-items: center;
            min-height: 100vh;
            transition: background 1.5s cubic-bezier(0.4, 0, 0.2, 1);
        }

        /* --- World Backgrounds --- */










        @keyframes pro-shine {
            0% {
                background-position: 0% 0%;
            }

            50% {
                background-position: 100% 100%;
            }

            100% {
                background-position: 0% 0%;
            }
        }

        body[data-world="pro"] {
            background: linear-gradient(135deg, #121214 0%, #1e1e24 25%, #16213e 50%, #1e1e24 75%, #121214 100%);
            background-size: 400% 400%;
            animation: pro-shine 20s ease infinite;
        }

        /* --- Robot Interface --- */
        #robot-container {
            margin-top: 20px;
            display: flex;
            align-items: center;
            gap: 20px;
            background: var(--panel-color);
            padding: 20px;
            border-radius: 15px;
            border: 2px solid var(--accent-color);
            max-width: 800px;
            width: 90%;
            box-shadow: 0 0 15px rgba(0, 255, 157, 0.2);
            position: relative;
        }

        .robot-avatar {
            flex-shrink: 0;
            width: 80px;
            height: 80px;
            background: #333;
            border-radius: 50%;
            position: relative;
            display: flex;
            justify-content: center;
            align-items: center;
            border: 3px solid var(--text-color);
            transform-origin: center bottom;
        }

        .robot-eyes {
            display: flex;
            gap: 10px;
        }

        .eye {
            width: 15px;
            height: 15px;
            background: var(--accent-color);
            border-radius: 50%;
            animation: blink 3s infinite;
        }

        @keyframes blink {

            0%,
            90%,
            100% {
                transform: scaleY(1);
            }

            95% {
                transform: scaleY(0.1);
            }
        }

        /* --- Robot Animations --- */
        .shake {
            animation: shake-no 0.5s ease-in-out;
        }

        .robot-avatar.shake {
            animation: shake-no 0.5s ease-in-out;
        }

        @keyframes shake-no {

            0%,
            100% {
                transform: translateX(0);
            }

            20%,
            60% {
                transform: translateX(-8px);
            }

            40%,
            80% {
                transform: translateX(8px);
            }
        }

        .robot-avatar.happy {
            animation: happy-bounce 0.6s cubic-bezier(0.34, 1.56, 0.64, 1);
        }

        .robot-avatar.happy .eye {
            height: 7px;
            border-radius: 50% / 100%;
            /* Crescent shape */
            transform: translateY(4px);
            animation: none;
            /* Stop blinking during happy animation */
        }

        .robot-avatar.nod {
            animation: nod 0.6s ease-in-out;
        }

        @keyframes nod {
            0% {
                transform: rotate(0deg);
            }

            25% {
                transform: rotate(5deg);
            }

            50% {
                transform: rotate(0deg);
            }

            75% {
                transform: rotate(-5deg);
            }

            100% {
                transform: rotate(0deg);
            }
        }

        .robot-avatar.dance {
            animation: dance-sway 1.2s ease-in-out infinite alternate;
        }

        @keyframes dance-sway {
            from {
                transform: translateX(-5px) rotate(-3deg);
            }

            to {
                transform: translateX(5px) rotate(3deg);
            }
        }

        @keyframes happy-bounce {

            0%,
            100% {
                transform: translateY(0);
            }

            50% {
                transform: translateY(-10px);
            }
        }

        #robot-text {
            font-size: 1.1rem;
            line-height: 1.5;
        }




        /* De voortgangsbalk (vult op basis van --progress variabele) */








        /* --- Hint Progress Bar --- */








        /* Key press indicator (small popup in robot area) */
        #key-indicator {
            position: absolute;
            right: 18px;
            bottom: 14px;
            background: rgba(0, 0, 0, 0.6);
            color: #fff;
            padding: 6px 10px;
            border-radius: 8px;
            font-size: 0.9rem;
            display: none;
            opacity: 0;
            transition: opacity 0.2s ease;
            pointer-events: none;
            z-index: 40;
        }

        #key-indicator.show {
            display: block;
            opacity: 1;
        }

        #key-indicator.success {
            background: rgba(0, 150, 80, 0.9);
        }

        #key-indicator.warn {
            background: rgba(180, 130, 0, 0.95);
        }

        .pulse {
            animation: pulse 1s infinite;
        }

        .button-pulse {
            animation: pulse-glow 1.5s infinite ease-in-out;
        }

        @keyframes pulse {
            0% {
                transform: scale(1);
            }

            50% {
                transform: scale(1.05);
            }

            100% {
                transform: scale(1);
            }
        }

        /* --- Drum Pad Zoom Effects --- */
        .drum-pad {
            transition: transform 0.1s ease;
            user-select: none;
            position: relative;
        }

        .drum-pad.active-zoom {
            animation: drum-zoom 0.3s ease-out;
        }

        @keyframes drum-zoom {
            0% {
                transform: scale(1);
            }

            50% {
                transform: scale(1.1);
            }

            100% {
                transform: scale(1);
            }
        }


        /* --- Controls (glued to sequencer) --- */
        #sequencer-column {
            flex: 1;
            min-width: 600px;
            display: flex;
            flex-direction: column;
            gap: 0;
        }

        #controls {
            margin: 0;
            padding: 10px 12px;
            display: flex;
            gap: 10px;
            flex-wrap: wrap;
            justify-content: flex-start;
            align-items: center;
            background: var(--panel-color);
            border-radius: 10px 10px 0 0;
        }

        #transport {
            display: flex;
            align-items: center;
            gap: 12px;
            padding: 8px 12px 2px;
            background: var(--panel-color);
            position: sticky;
            top: 0;
            z-index: 21;
        }

        button.control-btn {
            background: #333;
            color: white;
            border: 1px solid #555;
            padding: 10px 20px;
            border-radius: 5px;
            cursor: pointer;
            user-select: none;
            transition: 0.2s;
        }

        button.control-btn.active {
            background: var(--secondary-color);
            border-color: var(--secondary-color);
        }

        button.control-btn:hover {
            background: #444;
        }

        .save-status {
            color: var(--accent-color);
            font-size: 0.9rem;
            font-weight: bold;
            padding: 4px 8px;
            opacity: 0.9;
            white-space: nowrap;
        }

        button.control-btn#play-btn {
            border-color: var(--accent-color);
            color: var(--accent-color);
            font-weight: bold;
            font-size: 1.2rem;
            padding: 14px 28px;
            min-width: 160px;
        }

        button.control-btn#play-btn:hover {
            background: var(--accent-color);
            color: #000;
        }

        button.control-btn#play-btn.active {
            background: var(--secondary-color);
            border-color: var(--secondary-color);
            color: white;
            box-shadow: 0 0 10px var(--secondary-color);
        }

        .slider-group {
            display: flex;
            flex-direction: row;
            align-items: center;
            gap: 10px;
            font-size: 0.8rem;
        }

        .slider-group label {
            width: 100px;
            text-align: center;
        }

        .stepper-btn {
            display: flex;
            align-items: center;
            justify-content: center;
            background: #444;
            color: white;
            border: 1px solid #666;
            border-radius: 50%;
            width: 28px;
            height: 28px;
            flex-shrink: 0;
            font-size: 1.2rem;
            line-height: 1;
            cursor: pointer;
            padding: 0;
            user-select: none;
            /* Prevent text selection on rapid clicks */
        }

        .stepper-btn:hover {
            background: #555;
        }

        .stepper-btn:active {
            background: #333;
        }

        /* --- Custom Range Sliders --- */
        input[type=range] {
            -webkit-appearance: none;
            /* Hides the slider so that custom slider can be made */
            width: 100%;
            /* Specific width is required for Firefox. */
            background: transparent;
            /* Otherwise white in Chrome */
        }

        input[type=range]::-webkit-slider-thumb {
            -webkit-appearance: none;
            height: 16px;
            width: 16px;
            border-radius: 50%;
            background: var(--accent-color);
            cursor: pointer;
            margin-top: -6px;
            /* You need to specify a margin in Chrome, but in Firefox and IE it is automatic */
            box-shadow: 0 0 5px rgba(0, 0, 0, 0.5);
        }

        input[type=range]::-webkit-slider-runnable-track {
            width: 100%;
            height: 4px;
            cursor: pointer;
            background: #444;
            border-radius: 2px;
        }

        input[type=range]:focus {
            outline: none;
        }

        /* --- Sequencer Grid --- */
        #sequencer-wrapper {
            overflow-x: auto;
            padding-bottom: 20px;
            flex: 1;
            min-width: 0;
            background: var(--panel-color);
            border-radius: 0 0 10px 10px;
        }

        #sequencer {
            display: grid;
            grid-template-columns: 210px repeat(16, 1fr);
            /* Wider first col for controls */
            gap: 4px;
            background: var(--panel-color);
            padding: 15px;
            border-radius: 10px;
        }

        .track-controls {
            display: flex;
            align-items: center;
            gap: 10px;
            padding-right: 10px;
        }

        .track-label {
            font-weight: bold;
            text-transform: uppercase;
            font-size: 0.7rem;
            color: #888;
            width: 70px;
            user-select: none;
        }

        .vol-slider {
            width: 60px;
        }

        .mute-btn {
            background: none;
            border: 1px solid #555;
            color: #555;
            border-radius: 3px;
            cursor: pointer;
            font-size: 0.7rem;
            padding: 2px 5px;
            user-select: none;
        }

        .mute-btn.active {
            background: var(--secondary-color);
            color: white;
            border-color: var(--secondary-color);
        }

        .fx-btn {
            background: #444;
            border: 1px solid #555;
            color: #ccc;
            /* Duidelijker zichtbaar */
            border-radius: 6px;
            /* Kindvriendelijker/ronder */
            cursor: pointer;
            font-size: 0.8rem;
            /* Iets groter */
            padding: 4px 8px;
            /* Makkelijker te klikken */
            user-select: none;
            font-weight: bold;
            transition: all 0.2s;
        }

        .fx-btn.active {
            background: var(--accent-color);
            color: #000;
            /* Aan = fel */
            border-color: var(--accent-color);
            box-shadow: 0 0 8px var(--accent-color);
        }

        .step {
            aspect-ratio: 1;
            background: #4a4a52;
            /* Iets lichter donkergrijs voor betere zichtbaarheid */
            border-radius: 4px;
            cursor: pointer;
            transition: 0.1s;
            position: relative;
            overflow: hidden;
            touch-action: manipulation;
            -webkit-tap-highlight-color: transparent;
            user-select: none;
        }

        /* alternate background for steps 5-8 and 13-16 */
        .step.step-alt {
            background: #59596a;
        }

        /* subtle vertical boundary every 4 steps */
        .step.group-boundary {
            box-shadow: inset -1px 0 0 #333;
        }

        .step.active {
            background: var(--accent-color);
            box-shadow: 0 0 10px var(--accent-color);
        }

        .step.current {
            border: 2px solid white;
        }

        .step-number {
            font-size: 0.7rem;
            color: #888;
            display: flex;
            align-items: center;
            justify-content: center;
        }

        /* Different colors for instruments */
        .step[data-inst="kick"].active {
            background: #00ff9d;
            box-shadow: 0 0 10px #00ff9d;
        }

        .step[data-inst="snare"].active {
            background: #ff0055;
            box-shadow: 0 0 10px #ff0055;
        }

        .step[data-inst="hihat"].active {
            background: #ffcc00;
            box-shadow: 0 0 10px #ffcc00;
        }

        .step[data-inst="openhat"].active {
            background: #f0a000;
            box-shadow: 0 0 10px #f0a000;
        }

        .step[data-inst="rim"].active {
            background: #00ccff;
            box-shadow: 0 0 10px #00ccff;
        }

        .step[data-inst="wood"].active {
            background: #cc00ff;
            box-shadow: 0 0 10px #cc00ff;
        }

        .step[data-inst="bass"].active {
            background: #ff5500;
            box-shadow: 0 0 10px #ff5500;
        }

        /* Visual indicator for pitch inside the step (instead of slider) */
        .pitch-bar {
            position: absolute;
            bottom: 0;
            left: 0;
            width: 100%;
            background: rgba(255, 255, 255, 0.5);
            pointer-events: none;
            /* Let clicks pass through */
            transition: height 0.2s;
        }

        /* Hidden rows for progression */
        .track-row {
            display: contents;
        }

        .track-row.locked {
            display: none;
        }

        /* Highlight for tutorial */
        .track-row.highlighted .track-controls {
            border: 1px solid var(--accent-color);
            border-radius: 8px;
            animation: pulse-glow 2s infinite ease-in-out;
        }

        @keyframes pulse-glow {
            0% {
                box-shadow: 0 0 4px rgba(0, 255, 157, 0.4);
            }

            50% {
                box-shadow: 0 0 12px rgba(0, 255, 157, 0.9);
            }

            100% {
                box-shadow: 0 0 4px rgba(0, 255, 157, 0.4);
            }
        }

        /* --- Effects Panel --- */
        #effects-panel {
            display: none;
            /* Hidden initially */
            background: var(--panel-color);
            padding: 15px;
            border-radius: 10px;
            border: 1px solid #555;
            width: 300px;
            /* Vaste breedte voor zijpaneel */
            flex-shrink: 0;
            height: fit-content;
        }

        #workspace-container {
            display: flex;
            flex-wrap: wrap;
            gap: 20px;
            width: 95%;
            max-width: 1400px;
            justify-content: center;
            align-items: flex-start;
            margin-top: 8px;
            position: relative;
        }

        @media (max-width: 950px) {
            #sequencer-column {
                min-width: 100%;
            }

            #sequencer-wrapper {
                min-width: 100%;
            }

            #effects-panel {
                width: 100%;
            }
        }

        #genre-panel {
            display: none;
            flex-wrap: wrap;
            justify-content: center;
            padding: 16px 20px;
            background: rgba(30, 30, 36, 0.8);
            border-radius: 20px;
            border: 2px solid var(--accent-color);
            backdrop-filter: blur(10px);
            margin: 12px auto 4px;
            max-width: 900px;
            gap: 15px;
            box-shadow: 0 0 30px rgba(0, 255, 157, 0.15);
            animation: panelFadeIn 0.8s ease-out;
        }

        @keyframes panelFadeIn {
            from {
                opacity: 0;
                transform: translateY(20px);
            }

            to {
                opacity: 1;
                transform: translateY(0);
            }
        }

        #genre-panel button {
            background: #2a2a30;
            border: 1px solid #444;
            padding: 15px 25px;
            font-size: 1.1rem;
            font-weight: bold;
            border-radius: 12px;
            transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
            color: white;
            cursor: pointer;
            display: flex;
            align-items: center;
            gap: 10px;
        }

        #genre-panel button:hover {
            background: var(--accent-color);
            color: #000;
            transform: translateY(-5px) scale(1.05);
            box-shadow: 0 10px 25px rgba(0, 255, 157, 0.4);
            border-color: var(--accent-color);
        }

        #visualizer {
            width: 100%;
            height: 60px;
            background: #000;
            border-radius: 8px;
            margin-top: 10px;
            border: 1px solid #333;
        }

        /* --- Hint Highlight --- */


        /* Voeg een kruis toe over foute noten */










        @keyframes hint-pulse {
            0% {
                transform: scale(1);
            }

            50% {
                transform: scale(0.9);
            }

            100% {
                transform: scale(1);
            }
        }

        /* --- Progress Bar --- */


        /* --- Quiz Popup --- */









        /* --- Rating UI --- */
        #rating-container {
            margin-top: 20px;
            display: none;
            /* Hidden until "Ik heb geluisterd" is clicked */
        }

        .viz-selector {
            display: flex;
            gap: 5px;
            margin-top: 5px;
            margin-bottom: 5px;
        }

        .viz-btn {
            background: #333;
            border: 1px solid #555;
            color: #aaa;
            border-radius: 20px;
            padding: 5px 12px;
            cursor: pointer;
            font-size: 0.9rem;
            transition: all 0.2s ease;
        }

        .viz-btn:hover {
            background: #444;
            color: #fff;
            border-color: #777;
        }

        .viz-btn.active {
            background: var(--accent-color);
            color: #000;
            border-color: var(--accent-color);
            font-weight: bold;
        }



        .rating-btn:hover,

        #viz-select {
            background: #333;
            color: var(--text-color);
            border: 1px solid #555;
            padding: 5px;
            border-radius: 5px;
            margin-bottom: 5px;
        }

        /* --- TTS Highlight --- */

        .opdracht {
            color: #00ccff;
        }

        .opdracht.completed {
            text-decoration: line-through;
            text-decoration-thickness: 2px;
            color: #888 !important;
            opacity: 0.7;
        }

        .sub-task {
            display: inline-block;
            transition: opacity 0.3s, color 0.3s;
        }

        .sub-task.completed-line {
            text-decoration: line-through;
            text-decoration-thickness: 2px;
            color: #888;
            /* Dimmen */
            opacity: 0.7;
        }

        .sub-task.completed-line::after {
            content: ' ✅';
            font-style: normal;
            text-decoration: none;
            display: inline-block;
            margin-left: 5px;
        }


        /* --- Alternating Beat Shading --- */
        .step.alt-beat {
            background: #2b2b33;
            /* Iets donkerder voor contrast */
        }

        .step.alt-beat.active {
            /* Behoud de actieve kleur als hij aan staat, overschrijf background niet */
            background: var(--accent-color);
        }

        /* Specifieke instrument kleuren moeten voorrang houden op alt-beat */
        .step[data-inst="kick"].active {
            background: #00ff9d;
        }

        .step[data-inst="snare"].active {
            background: #ff0055;
        }

        .step[data-inst="hihat"].active {
            background: #ffcc00;
        }

        .step[data-inst="openhat"].active {
            background: #f0a000;
        }

        .step[data-inst="rim"].active {
            background: #00ccff;
        }

        .step[data-inst="wood"].active {
            background: #cc00ff;
        }

        .step[data-inst="bass"].active {
            background: #ff5500;
        }

        /* --- Sequencer Zoom Animation --- */
        @keyframes sequencer-pop {
            0% {
                transform: scale(0.6) translateX(-10%);
                opacity: 0;
            }

            100% {
                transform: scale(1) translateX(0);
                opacity: 1;
            }
        }

        .sequencer-anim {
            animation: sequencer-pop 0.8s cubic-bezier(0.22, 1, 0.36, 1) forwards;
        }

        @keyframes sequencer-dramatic-zoom {
            0% {
                transform: scale(1);
            }

            40% {
                transform: scale(1.5);
            }

            100% {
                transform: scale(1);
            }
        }

        .sequencer-dramatic-focus {
            transform-origin: center;
            animation: sequencer-dramatic-zoom 2.5s cubic-bezier(0.4, 0, 0.2, 1);
        }

        /* --- Full Screen Sequencer --- */
        #sequencer-wrapper.fullscreen-active {
            position: fixed !important;
            top: 0 !important;
            left: 0 !important;
            width: 100vw !important;
            height: 100vh !important;
            background: var(--bg-color) !important;
            z-index: 9999 !important;
            display: flex !important;
            align-items: center !important;
            justify-content: center !important;
            padding: 0 !important;
            margin: 0 !important;
            overflow: hidden !important;
            max-width: none !important;
            border-radius: 0 !important;
            touch-action: manipulation;
        }

        #sequencer-wrapper.fullscreen-active {
            flex-direction: column;
        }

        #sequencer-wrapper.fullscreen-active #transport {
            position: fixed;
            top: 16px;
            left: 16px;
            z-index: 10002;
            background: transparent;
            padding: 0;
        }

        #sequencer-wrapper.fullscreen-active #sequencer {
            transform-origin: center center !important;
            gap: 1px;
            padding: 4px;
        }

        /* Compact controls in fullscreen to make tiles bigger */
        #sequencer-wrapper.fullscreen-active .track-controls {
            gap: 2px;
            padding-right: 2px;
        }

        #sequencer-wrapper.fullscreen-active .track-label {
            font-size: 0.6rem;
            width: 25px;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }

        #sequencer-wrapper.fullscreen-active .vol-slider {
            width: 35px;
        }

        /* --- FX Button Attention Glow --- */
        .fx-btn.attention-glow {
            box-shadow: 0 0 30px #00ffcc, inset 0 0 10px #00ffcc;
            animation: attention-glow-pulse 1s infinite alternate;
            border: 2px solid #fff !important;
            z-index: 100;
        }

        @keyframes attention-glow-pulse {
            from {
                box-shadow: 0 0 10px #00ffcc, inset 0 0 5px #00ffcc;
                transform: scale(1);
            }
            to {
                box-shadow: 0 0 40px #00ffcc, inset 0 0 15px #00ffcc;
                transform: scale(1.15);
            }
        }

        #sequencer-wrapper.fullscreen-active .mute-btn {
            padding: 0px 3px;
            font-size: 0.6rem;
        }

        #sequencer-wrapper.fullscreen-active .step {
            border-radius: 2px;
        }


        @keyframes demo-click-animation {
            0% {
                transform: scale(1.5);
                opacity: 0;
            }

            20% {
                transform: scale(1.5);
                opacity: 1;
            }

            50% {
                transform: translate(15px, 35px) scale(0.9);
            }

            /* Move to click */
            70% {
                transform: translate(15px, 35px) scale(1.2);
            }

            100% {
                transform: translate(15px, 35px) scale(1.2);
                opacity: 0;
            }
        }

        /* --- Notifications --- */
        #notification-container {
            position: fixed;
            bottom: 30px;
            right: 30px;
            z-index: 10000;
            display: flex;
            flex-direction: column;
            gap: 10px;
            pointer-events: none;
        }

        .notification {
            background: var(--panel-color);
            color: var(--text-color);
            border-left: 4px solid var(--accent-color);
            padding: 15px 25px;
            border-radius: 4px;
            box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);
            font-weight: bold;
            transform: translateX(120%);
            transition: transform 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275);
            pointer-events: auto;
            min-width: 200px;
        }

        .notification.show {
            transform: translateX(0);
        }
    
.home-link {
    position: fixed;
    top: 16px;
    left: 16px;
    z-index: 100;
    color: var(--accent-color);
    text-decoration: none;
    font-weight: bold;
    background: rgba(30, 30, 36, 0.85);
    padding: 8px 14px;
    border-radius: 8px;
    border: 1px solid #444;
}
.home-link:hover { background: #333; }

#page-header {
    margin-top: 20px;
    text-align: center;
    width: 90%;
    max-width: 800px;
}
#page-header h1 {
    color: var(--accent-color);
    margin: 0 0 8px;
    font-size: 2rem;
}
#page-header p { color: #aaa; margin: 0; }

#start-overlay {
    position: fixed;
    inset: 0;
    background: rgba(18, 18, 20, 0.95);
    z-index: 5000;
    display: flex;
    justify-content: center;
    align-items: center;
    backdrop-filter: blur(5px);
}
#start-box {
    background: var(--panel-color);
    padding: 40px;
    border-radius: 15px;
    border: 2px solid var(--accent-color);
    text-align: center;
    max-width: 520px;
    width: 90%;
    box-shadow: 0 0 25px rgba(0, 255, 157, 0.2);
}
#start-box h2 { color: var(--accent-color); margin-top: 0; }
.start-btn {
    background: var(--accent-color);
    color: #000;
    border: none;
    padding: 16px 32px;
    border-radius: 8px;
    cursor: pointer;
    font-weight: bold;
    font-size: 1.2rem;
    margin-top: 20px;
}
.start-btn:hover { background: #fff; }

#effects-panel { display: block; }
#genre-panel { display: flex; }
#tempo-control, #swing-control, #bars-control { display: flex; }

.effect-unit {
    margin-bottom: 18px;
    padding-bottom: 12px;
    border-bottom: 1px solid #333;
}
.effect-unit:last-child { border-bottom: none; }
.effect-viz {
    height: 40px;
    margin-bottom: 8px;
    background: #111;
    border-radius: 6px;
    border: 1px solid #333;
}
#effects-panel h3 {
    color: var(--accent-color);
    margin-top: 0;
}

.piano-key {
    width: 60px;
    height: 240px;
    background: white;
    border: 1px solid #ccc;
    border-radius: 0 0 5px 5px;
    margin: 0 2px;
    cursor: pointer;
    position: relative;
    z-index: 1;
    transition: background-color 0.1s ease;
    display: flex;
    align-items: flex-end;
    justify-content: center;
    padding-bottom: 20px;
    font-weight: bold;
    font-size: 1.4rem;
    color: #555;
    user-select: none;
}
.piano-key:hover { background: #c8fce6; }
.piano-key:active, .piano-key.active {
    background: var(--accent-color);
    transform: scale(0.98);
}
.piano-key.black {
    width: 40px;
    height: 150px;
    background: #222;
    position: absolute;
    z-index: 2;
    border-radius: 0 0 4px 4px;
    top: 0;
    font-size: 0.8rem;
    color: #888;
    padding-bottom: 10px;
}
.piano-key.black:hover { background: #444; }
.piano-key.black:active, .piano-key.black.active {
    background: var(--accent-color);
    color: #000;
}
