/* ──────────────────────────────────────────────
   rhx-slider — Range slider with fill bar and tooltip
   ────────────────────────────────────────────── */

.rhx-slider {
    display: flex;
    flex-direction: column;
    gap: var(--rhx-space-sm);
    width: 100%;
}

/* ── Label ── */

.rhx-slider__label {
    font-size: var(--rhx-font-size-sm);
    font-weight: var(--rhx-font-weight-medium);
    color: var(--rhx-color-text);
}

/* ── Track ── */

.rhx-slider__track {
    position: relative;
    height: 0.375rem;
    background: var(--rhx-color-neutral-200);
    border-radius: var(--rhx-radius-full);
    display: flex;
    align-items: center;
}

/* ── Fill bar ── */

.rhx-slider__fill {
    position: absolute;
    top: 0;
    left: 0;
    height: 100%;
    background: var(--rhx-color-brand-500);
    border-radius: var(--rhx-radius-full);
    pointer-events: none;
    transition: width 0.05s ease-out;
}

/* ── Native range input ── */

.rhx-slider__native {
    position: absolute;
    top: 50%;
    left: 0;
    width: 100%;
    height: 100%;
    margin: 0;
    padding: 0;
    transform: translateY(-50%);
    opacity: 0;
    cursor: pointer;
    -webkit-appearance: none;
    appearance: none;
    z-index: 2;
}

/* Thumb styling (shown via custom track) */
.rhx-slider__native::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 1.25rem;
    height: 1.25rem;
    border-radius: 50%;
    background: var(--rhx-color-brand-500);
    border: 2px solid var(--rhx-color-surface);
    box-shadow: var(--rhx-shadow-sm);
    cursor: pointer;
}

.rhx-slider__native::-moz-range-thumb {
    width: 1.25rem;
    height: 1.25rem;
    border-radius: 50%;
    background: var(--rhx-color-brand-500);
    border: 2px solid var(--rhx-color-surface);
    box-shadow: var(--rhx-shadow-sm);
    cursor: pointer;
}

/* Make the native input visible for the thumb */
.rhx-slider__native {
    opacity: 1;
    background: transparent;
    pointer-events: auto;
}

.rhx-slider__native::-webkit-slider-runnable-track {
    background: transparent;
    height: 0.375rem;
}

.rhx-slider__native::-moz-range-track {
    background: transparent;
    height: 0.375rem;
}

/* ── Focus ring ── */

.rhx-slider__native:focus-visible::-webkit-slider-thumb {
    outline: 2px solid var(--rhx-color-brand-500);
    outline-offset: 2px;
}

.rhx-slider__native:focus-visible::-moz-range-thumb {
    outline: 2px solid var(--rhx-color-brand-500);
    outline-offset: 2px;
}

/* ── Tooltip ── */

.rhx-slider__tooltip {
    position: absolute;
    top: -2rem;
    left: 50%;
    transform: translateX(-50%);
    background: var(--rhx-color-text);
    color: var(--rhx-color-surface);
    padding: var(--rhx-space-xs) var(--rhx-space-sm);
    border-radius: var(--rhx-radius-sm);
    font-size: var(--rhx-font-size-xs);
    white-space: nowrap;
    pointer-events: none;
    opacity: 0;
    transition: opacity 0.15s ease;
}

[data-rhx-tooltip="bottom"] .rhx-slider__tooltip {
    top: auto;
    bottom: -2rem;
}

.rhx-slider__native:hover ~ .rhx-slider__tooltip,
.rhx-slider__native:focus ~ .rhx-slider__tooltip,
.rhx-slider__native:active ~ .rhx-slider__tooltip {
    opacity: 1;
}

/* ── Hint ── */

.rhx-slider__hint {
    font-size: var(--rhx-font-size-xs);
    color: var(--rhx-color-text-muted);
}

/* ── Error ── */

.rhx-slider__error {
    font-size: var(--rhx-font-size-xs);
    color: var(--rhx-color-danger-500);
}

.rhx-slider--error .rhx-slider__fill,
.rhx-slider[data-rhx-invalid] .rhx-slider__fill {
    background: var(--rhx-color-danger-500);
}

.rhx-slider--error .rhx-slider__native::-webkit-slider-thumb,
.rhx-slider[data-rhx-invalid] .rhx-slider__native::-webkit-slider-thumb {
    background: var(--rhx-color-danger-500);
}

.rhx-slider--error .rhx-slider__native::-moz-range-thumb,
.rhx-slider[data-rhx-invalid] .rhx-slider__native::-moz-range-thumb {
    background: var(--rhx-color-danger-500);
}

/* ── Disabled ── */

.rhx-slider--disabled {
    opacity: 0.5;
    pointer-events: none;
}

/* ── Size variants ── */

.rhx-slider--small .rhx-slider__track {
    height: 0.25rem;
}

.rhx-slider--small .rhx-slider__native::-webkit-slider-thumb {
    width: 1rem;
    height: 1rem;
}

.rhx-slider--small .rhx-slider__native::-moz-range-thumb {
    width: 1rem;
    height: 1rem;
}

.rhx-slider--large .rhx-slider__track {
    height: 0.5rem;
}

.rhx-slider--large .rhx-slider__native::-webkit-slider-thumb {
    width: 1.5rem;
    height: 1.5rem;
}

.rhx-slider--large .rhx-slider__native::-moz-range-thumb {
    width: 1.5rem;
    height: 1.5rem;
}

/* ── Reduced motion ── */

@media (prefers-reduced-motion: reduce) {
    .rhx-slider__fill,
    .rhx-slider__tooltip {
        transition: none;
    }
}
