@layer slider {
  .slider-stage {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-items: stretch;
    width: 100%;
    gap: 16px;
  }

  .slider-example {
    min-width: 0;
    min-height: 132px;
    padding: 20px;
    border: 1px solid var(--border);
    border-radius: var(--radius);
    background: var(--background);
    display: grid;
    align-content: center;
    gap: 24px;
  }

  .slider-example-featured {
    grid-column: 1 / -1;
    min-height: 148px;
  }

  .slider-example-heading {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 16px;
  }

  .slider-example-heading h2 {
    color: var(--foreground);
    font-size: 13px;
    font-weight: 600;
    line-height: 1.25;
  }

  .slider-example-heading span,
  .slider-example-heading output {
    color: var(--muted-foreground);
    font-size: 12px;
    line-height: 1.25;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
  }

  .slider-fieldset {
    min-width: 0;
    margin: 0;
    padding: 0;
    border: 0;
  }

  .slider-control {
    --slider-start: 0%;
    --slider-end: 50%;
    position: relative;
    width: min(100%, 320px);
    height: 12px;
    margin-inline: auto;
    touch-action: none;
    user-select: none;
  }

  .slider-track {
    position: absolute;
    top: 50%;
    left: 0;
    width: 100%;
    height: 4px;
    overflow: hidden;
    border-radius: 9999px;
    background: linear-gradient(
      to right,
      var(--muted) 0 var(--slider-start),
      var(--primary) var(--slider-start) var(--slider-end),
      var(--muted) var(--slider-end) 100%
    );
    transform: translateY(-50%);
    pointer-events: none;
  }

  .slider-input {
    position: absolute;
    z-index: 2;
    top: 50%;
    left: 0;
    width: 100%;
    height: 24px;
    margin: 0;
    padding: 0;
    border: 0;
    border-radius: 0;
    background: transparent;
    color: var(--foreground);
    transform: translateY(-50%);
    appearance: none;
    -webkit-appearance: none;
    outline: none;
    pointer-events: none;
  }

  .slider-input-middle { z-index: 3; }
  .slider-input-high { z-index: 4; }

  .slider-input::-webkit-slider-runnable-track {
    width: 100%;
    height: 4px;
    border: 0;
    background: transparent;
  }

  .slider-input::-webkit-slider-thumb {
    width: 12px;
    height: 12px;
    margin-top: -4px;
    border: 1px solid var(--ring);
    border-radius: 50%;
    background: #fff;
    box-shadow: none;
    appearance: none;
    -webkit-appearance: none;
    cursor: grab;
    pointer-events: auto;
    transition: box-shadow 150ms ease, border-color 150ms ease;
  }

  .slider-input::-moz-range-track {
    width: 100%;
    height: 4px;
    border: 0;
    border-radius: 9999px;
    background: transparent;
  }

  .slider-input::-moz-range-progress { background: transparent; }

  .slider-input::-moz-range-thumb {
    width: 10px;
    height: 10px;
    border: 1px solid var(--ring);
    border-radius: 50%;
    background: #fff;
    box-shadow: none;
    cursor: grab;
    pointer-events: auto;
    transition: box-shadow 150ms ease, border-color 150ms ease;
  }

  .slider-input:hover::-webkit-slider-thumb,
  .slider-input:active::-webkit-slider-thumb {
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--ring) 50%, transparent);
  }

  .slider-input:focus-visible::-webkit-slider-thumb {
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--ring) 50%, transparent);
  }

  .slider-input:hover::-moz-range-thumb,
  .slider-input:active::-moz-range-thumb,
  .slider-input:focus-visible::-moz-range-thumb {
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--ring) 50%, transparent);
  }

  .slider-input:active::-webkit-slider-thumb { cursor: grabbing; }
  .slider-input:active::-moz-range-thumb { cursor: grabbing; }

  .slider-value-75 { --slider-end: 75%; }
  .slider-value-50 { --slider-end: 50%; }
  .slider-range-25-50 { --slider-start: 25%; --slider-end: 50%; }
  .slider-range-10-70 { --slider-start: 10%; --slider-end: 70%; }
  .slider-range-30-70 { --slider-start: 30%; --slider-end: 70%; }

  .slider-control-disabled {
    opacity: 0.5;
  }

  .slider-input:disabled::-webkit-slider-thumb {
    cursor: not-allowed;
  }

  .slider-input:disabled::-moz-range-thumb {
    cursor: not-allowed;
  }

  .slider-example-vertical {
    grid-row: span 2;
    min-height: 280px;
  }

  .slider-vertical-group {
    min-height: 160px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 24px;
  }

  .slider-control-vertical {
    width: 12px;
    height: 160px;
    margin: 0;
  }

  .slider-control-vertical .slider-track {
    top: 0;
    left: 50%;
    width: 4px;
    height: 100%;
    background: linear-gradient(
      to top,
      var(--primary) 0 var(--slider-end),
      var(--muted) var(--slider-end) 100%
    );
    transform: translateX(-50%);
  }

  .slider-control-vertical .slider-input {
    top: 0;
    left: 50%;
    width: 12px;
    height: 160px;
    transform: translateX(-50%);
    writing-mode: vertical-lr;
    direction: rtl;
  }

  .slider-control-vertical .slider-input::-webkit-slider-runnable-track {
    width: 4px;
    height: 100%;
  }

  .slider-control-vertical .slider-input::-webkit-slider-thumb {
    margin-top: 0;
    margin-left: -4px;
  }

  .slider-control-vertical .slider-input::-moz-range-track {
    width: 4px;
    height: 100%;
  }

  .slider-vertical-50 { --slider-end: 50%; }
  .slider-vertical-25 { --slider-end: 25%; }

  .slider-rtl-75 {
    --slider-start: 25%;
    --slider-end: 100%;
  }

  @media (max-width: 720px) {
    .slider-stage { grid-template-columns: minmax(0, 1fr); }
    .slider-example-featured { grid-column: auto; }
    .slider-example-vertical { grid-row: auto; }
  }

  @media (max-width: 420px) {
    .slider-example { padding: 18px 16px; }
  }
}
