.timber-loader { display: inline-flex; align-items: center; gap: 16px; color: var(--wd-primary-color, #9ec2c3); }
.timber-loader__ring, .timber-configurator__actions .is-loading::before {
    content: ''; display: block; flex: 0 0 auto; width: 24px; height: 24px;
    border: 3px solid currentColor; border-right-color: transparent; border-radius: 50%;
    animation: timber-loading-spin .8s linear infinite;
}
.timber-loader__bars { display: grid; gap: 8px; width: 140px; }
.timber-loader__bars::before, .timber-loader__bars::after {
    content: ''; display: block; height: 10px; border-radius: 4px;
    background: currentColor; opacity: .2; animation: timber-loading-pulse 1.4s ease-in-out infinite;
}
.timber-loader__bars::after { width: 65%; animation-delay: .2s; }
.timber-loader__label,
.timber-configurator[data-cart-state=sending] .timber-configurator__cart-status {
    position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
    overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
}
.timber-configurator__price > .timber-loader { min-height: 46px; }
.timber-configurator__actions .is-loading { display: flex; align-items: center; justify-content: center; gap: 10px; }
.timber-configurator__actions .is-loading::before { width: 16px; height: 16px; border-width: 2px; }
.timber-configurator__actions .is-loading:disabled { opacity: 1; cursor: progress; }
@keyframes timber-loading-spin { to { transform: rotate(360deg); } }
@keyframes timber-loading-pulse { 50% { opacity: .45; } }
@media (prefers-reduced-motion: reduce) {
    .timber-loader__ring,
    .timber-configurator__actions .is-loading::before { animation-duration: 2s; }
    .timber-loader__bars::before, .timber-loader__bars::after { animation-duration: 2.8s; }
}
