/**
 * SliderControl - Unified Slider Component Styles
 *
 * Consolidates slider styles from:
 * - .slider-container, .slider-label-pill (signature sliders)
 * - .value-slider (range input styling)
 * - .accordion-slider (compact accordion sliders)
 * - .manual-points-slider (instructor eval sliders)
 */

/* ============================================================
   CSS CUSTOM PROPERTIES
   ============================================================ */
.slider-control {
    --sc-height: 6px;
    --sc-thumb-size: 14px;
    --sc-accent: #60a5fa;
    --sc-accent-hover: #3b82f6;
    --sc-track-bg: var(--border-color, #d1d5db);
    --sc-track-hover: var(--text-secondary, #9ca3af);
    --sc-bubble-bg: #60a5fa;
    --sc-bubble-text: white;
    --sc-input-bg: var(--bg-primary, #fff);
    --sc-input-border: var(--border-color, #d1d5db);
    --sc-input-text: var(--text-primary, #1f2937);
    --sc-suffix-text: var(--text-secondary, #6b7280);
}

/* Dark theme adjustments */
[data-theme="dark"] .slider-control {
    --sc-track-bg: rgba(0, 0, 0, 0.3);
    --sc-track-hover: rgba(0, 0, 0, 0.4);
    --sc-input-bg: rgba(0, 0, 0, 0.3);
    --sc-input-border: rgba(255, 255, 255, 0.1);
}

/* ============================================================
   BASE CONTAINER
   ============================================================ */
.slider-control {
    position: relative;
    width: 100%;
}

.slider-control__wrapper {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* Input position variants */
.slider-control--input-above .slider-control__wrapper,
.slider-control--input-below .slider-control__wrapper {
    flex-direction: column;
    align-items: stretch;
}

.slider-control--input-above .slider-control__input-wrapper {
    order: -1;
}

/* ============================================================
   NUMBER INPUT
   ============================================================ */
.slider-control__input-wrapper {
    display: flex;
    align-items: center;
    gap: 4px;
    flex-shrink: 0;
}

.slider-control__input {
    width: 50px;
    padding: 4px 6px;
    font-size: 0.85rem;
    font-weight: 600;
    text-align: center;
    background: var(--sc-input-bg);
    border: 1px solid var(--sc-input-border);
    border-radius: 6px;
    color: var(--sc-input-text);
    -moz-appearance: textfield;
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

/* Hide spin buttons */
.slider-control__input::-webkit-outer-spin-button,
.slider-control__input::-webkit-inner-spin-button {
    -webkit-appearance: none;
    margin: 0;
}

.slider-control__input:focus {
    outline: none;
    border-color: var(--sc-accent);
    box-shadow: 0 0 0 3px rgba(96, 165, 250, 0.15);
}

.slider-control__suffix {
    font-size: 0.75rem;
    color: var(--sc-suffix-text);
    white-space: nowrap;
}

/* ============================================================
   TRACK CONTAINER
   ============================================================ */
.slider-control__track-container {
    position: relative;
    flex: 1;
    min-width: 100px;
    height: 58px;
    padding-top: 8px;
}

/* ============================================================
   RANGE SLIDER
   ============================================================ */
.slider-control__range {
    width: 100%;
    height: var(--sc-height);
    -webkit-appearance: none;
    appearance: none;
    background: var(--sc-track-bg);
    border-radius: calc(var(--sc-height) / 2);
    outline: none;
    cursor: pointer;
    transition: background 0.2s ease;
}

.slider-control__range:hover {
    background: var(--sc-track-hover);
}

/* Webkit (Chrome, Safari, Edge) thumb */
.slider-control__range::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: var(--sc-thumb-size);
    height: var(--sc-thumb-size);
    background: var(--sc-accent);
    border-radius: 50%;
    cursor: pointer;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
    transition: all 0.2s ease;
}

.slider-control__range::-webkit-slider-thumb:hover {
    background: var(--sc-accent-hover);
    transform: scale(1.15);
}

.slider-control__range::-webkit-slider-thumb:active {
    transform: scale(1.2);
}

/* Firefox thumb */
.slider-control__range::-moz-range-thumb {
    width: var(--sc-thumb-size);
    height: var(--sc-thumb-size);
    background: var(--sc-accent);
    border: none;
    border-radius: 50%;
    cursor: pointer;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
    transition: all 0.2s ease;
}

.slider-control__range::-moz-range-thumb:hover {
    background: var(--sc-accent-hover);
    transform: scale(1.15);
}

.slider-control__range::-moz-range-track {
    background: var(--sc-track-bg);
    border-radius: calc(var(--sc-height) / 2);
    height: var(--sc-height);
}

/* ============================================================
   VALUE BUBBLE
   ============================================================ */
.slider-control__bubble {
    position: absolute;
    top: 34px;
    background: var(--sc-bubble-bg);
    color: var(--sc-bubble-text);
    font-size: 0.75rem;
    font-weight: 600;
    padding: 2px 8px;
    border-radius: 12px;
    transform: translateX(-50%);
    pointer-events: none;
    white-space: nowrap;
    min-width: 30px;
    text-align: center;
    opacity: 0;
    transition: opacity 0.2s ease, left 0.1s ease;
    z-index: 10;
}

.slider-control__bubble.visible {
    opacity: 1;
}

/* Bubble above variant */
.slider-control--bubble-above .slider-control__bubble {
    top: auto;
    bottom: calc(100% + 8px);
}

/* ============================================================
   TICK MARKS (hidden by default)
   ============================================================ */
.slider-control__ticks {
    display: none;
    position: absolute;
    top: 6px;
    left: 0;
    right: 0;
    height: var(--sc-height);
    pointer-events: none;
}

.slider-control__tick {
    position: absolute;
    width: 2px;
    height: 10px;
    background: rgba(0, 0, 0, 0.15);
    border-radius: 1px;
    transform: translateX(-50%);
    top: -2px;
}

[data-theme="dark"] .slider-control__tick {
    background: rgba(255, 255, 255, 0.2);
}

/* ============================================================
   INLINE EXPAND MODE (for accordion headers)
   Replaces floating popover with in-place expansion
   ============================================================ */
.slider-control--popover {
    display: inline-flex;
    width: auto;
    align-items: center;
}

/* Container for inline expansion */
.slider-control__inline-expand {
    display: flex;
    align-items: center;
    gap: 0;
    background: var(--bg-tertiary, #f3f4f6);
    border: 1px solid var(--border-color, #d1d5db);
    border-radius: 6px;
    overflow: hidden;
    transition: all 0.25s ease;
}

.slider-control__inline-expand:hover {
    border-color: var(--sc-accent);
}

/* Track section - hidden by default, expands on activation */
.slider-control__expand-track {
    width: 0;
    overflow: hidden;
    opacity: 0;
    transition: width 0.25s ease, opacity 0.2s ease, padding 0.25s ease, overflow 0s 0.25s;
    display: flex;
    align-items: center;
    padding: 0;
}

.slider-control__expand-track .slider-control__range {
    width: 120px;
    height: 4px;
    margin: 0;
    flex-shrink: 0;
}

/* Value section - always visible */
.slider-control__expand-value {
    display: flex;
    align-items: center;
    gap: 2px;
    padding: 4px 8px;
    cursor: pointer;
    transition: background 0.2s ease;
}

.slider-control__expand-value:hover {
    background: rgba(0, 0, 0, 0.05);
}

.slider-control__inline-expand .slider-control__input {
    width: 36px;
    padding: 2px 4px;
    font-size: 0.85rem;
    font-weight: 700;
    text-align: center;
    background: transparent;
    border: none;
    color: var(--sc-accent);
    cursor: pointer;
    -moz-appearance: textfield;
}

.slider-control__inline-expand .slider-control__input::-webkit-outer-spin-button,
.slider-control__inline-expand .slider-control__input::-webkit-inner-spin-button {
    -webkit-appearance: none;
    margin: 0;
}

.slider-control__inline-expand .slider-control__input:focus {
    outline: none;
    background: rgba(96, 165, 250, 0.1);
    border-radius: 4px;
    cursor: text;
}

.slider-control__inline-expand .slider-control__suffix {
    font-size: 0.75rem;
    color: var(--sc-suffix-text);
    white-space: nowrap;
}

/* ============================================================
   EXPANDED STATE
   ============================================================ */
.slider-control__inline-expand.expanded {
    background: var(--bg-secondary, #e5e7eb);
    border-color: var(--sc-accent);
    box-shadow: 0 0 0 2px rgba(96, 165, 250, 0.15);
}

.slider-control__inline-expand.expanded .slider-control__expand-track {
    width: 120px;
    opacity: 1;
    padding: 0 12px 0 10px;
    overflow: visible;
    transition: width 0.25s ease, opacity 0.2s ease, padding 0.25s ease, overflow 0s 0s;
}

.slider-control__inline-expand.expanded .slider-control__expand-value {
    background: transparent;
}

.slider-control__inline-expand.expanded .slider-control__input {
    cursor: text;
    background: rgba(96, 165, 250, 0.1);
    border-radius: 4px;
}

/* Slider track styling within expand */
.slider-control__expand-track .slider-control__range {
    --sc-height: 4px;
    --sc-thumb-size: 16px;
}

.slider-control__expand-track .slider-control__range::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 16px;
    height: 16px;
    background: var(--sc-accent);
    border-radius: 50%;
    cursor: pointer;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.25);
    transition: all 0.15s ease;
    border: 2px solid white;
}

.slider-control__expand-track .slider-control__range::-webkit-slider-thumb:hover {
    background: var(--sc-accent-hover);
    transform: scale(1.1);
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3);
}

.slider-control__expand-track .slider-control__range::-webkit-slider-thumb:active {
    transform: scale(1.15);
}

.slider-control__expand-track .slider-control__range::-moz-range-thumb {
    width: 16px;
    height: 16px;
    background: var(--sc-accent);
    border: 2px solid white;
    border-radius: 50%;
    cursor: pointer;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.25);
    transition: all 0.15s ease;
}

.slider-control__expand-track .slider-control__range::-moz-range-thumb:hover {
    background: var(--sc-accent-hover);
    transform: scale(1.1);
}

/* Dark theme */
[data-theme="dark"] .slider-control__inline-expand {
    background: rgba(255, 255, 255, 0.03);
    border-color: rgba(255, 255, 255, 0.08);
}

[data-theme="dark"] .slider-control__inline-expand.expanded {
    background: rgba(255, 255, 255, 0.06);
}

[data-theme="dark"] .slider-control__expand-value:hover {
    background: rgba(255, 255, 255, 0.08);
}

/* ============================================================
   SIZE VARIANTS
   ============================================================ */

/* Compact size (for tighter layouts) */
.slider-control--compact {
    --sc-height: 4px;
    --sc-thumb-size: 14px;
}

.slider-control--compact .slider-control__input {
    width: 40px;
    padding: 2px 4px;
    font-size: 0.75rem;
}

.slider-control--compact .slider-control__track-container {
    height: 30px;
}

.slider-control--compact .slider-control__bubble {
    font-size: 0.65rem;
    padding: 1px 6px;
    top: 18px;
}

/* Large size (for emphasis) */
.slider-control--large {
    --sc-height: 8px;
    --sc-thumb-size: 22px;
}

.slider-control--large .slider-control__input {
    width: 60px;
    padding: 6px 8px;
    font-size: 1rem;
}

.slider-control--large .slider-control__track-container {
    height: 50px;
}

/* ============================================================
   DISABLED STATE
   ============================================================ */
.slider-control--disabled {
    opacity: 0.5;
    pointer-events: none;
}

.slider-control--disabled .slider-control__range,
.slider-control--disabled .slider-control__input,
.slider-control--disabled .slider-control__trigger {
    cursor: not-allowed;
}

/* ============================================================
   FOCUS STATES FOR ACCESSIBILITY
   ============================================================ */
.slider-control__range:focus {
    outline: none;
}

.slider-control__range:focus-visible {
    outline: 2px solid var(--sc-accent);
    outline-offset: 2px;
}

/* ============================================================
   ANIMATION FOR INLINE EXPAND
   ============================================================ */
@keyframes slider-expand-glow {
    0% { box-shadow: 0 0 0 2px rgba(96, 165, 250, 0.15); }
    50% { box-shadow: 0 0 0 4px rgba(96, 165, 250, 0.1); }
    100% { box-shadow: 0 0 0 2px rgba(96, 165, 250, 0.15); }
}

.slider-control__inline-expand.expanded {
    animation: slider-expand-glow 0.3s ease;
}

/* ============================================================
   MOBILE TOUCH IMPROVEMENTS
   ============================================================ */
@media (pointer: coarse) {
    .slider-control {
        --sc-thumb-size: 24px;
    }

    .slider-control__inline-expand {
        min-height: 36px;
    }

    .slider-control__expand-value {
        padding: 6px 10px;
    }

    .slider-control__inline-expand .slider-control__input {
        font-size: 0.9rem;
        width: 42px;
    }

    .slider-control__expand-track .slider-control__range {
        --sc-thumb-size: 18px;
    }

    .slider-control__inline-expand.expanded .slider-control__expand-track {
        width: 140px;
    }
}

/* ============================================================
   PRINT STYLES
   ============================================================ */
@media print {
    .slider-control__expand-track {
        display: none !important;
    }

    .slider-control__inline-expand {
        background: transparent;
        border: 1px solid #000;
    }

    .slider-control__inline-expand .slider-control__input {
        color: #000;
    }
}
