@keyframes throb {
    0%, 100% { transform: scale(1); }
    50% { transform: scale(1.1); }
}

@keyframes spin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

/* Control styles */
.controls {
    width: 100%;
}

.control-row {
    display: grid;
    grid-template-columns: 200px 1fr 200px 1fr;
    gap: 12px;
    align-items: center;
    margin-bottom: 8px;
}

.control-row:has(> :nth-child(3):last-child) {
    grid-template-columns: 200px 1fr;
}

.control-label {
    justify-self: start;
}

.control-input {
    justify-self: stretch;
}

.region-info {
    margin-left: auto;
    color: #607d8b;
    font-size: 0.95rem;
}

/* Play button states */
.play-button-disabled {
    opacity: 0.5;
}

.play-button-enabled {
    opacity: 1;
}

.play-button-disabled:disabled {
    opacity: 0.5;
}

.play-button-enabled:not(:disabled) {
    opacity: 1;
}