/* Keyboard instructions */
body #app tv-embrace pint-compare-kbd {
  min-block-size: var(--tv-embrace-gap-1);
  display: block;
  margin: var(--tv-embrace-gap-1) 0;
  text-align: center;
}
body #app tv-embrace :where(h2, .h2) + pint-compare-kbd {
  margin-block-start: calc( -1 * var(--tv-embrace-gap-1) );
}
body #app tv-embrace pint-compare-kbd kbd {
  display: none;
}
body #app tv-embrace pint-content-width:has(input[type="range"]:focus-visible) pint-compare-kbd kbd {
  display: block;
}

/* Grid */
body #app tv-embrace .compare-grid {
  margin-inline: auto;
  max-inline-size: calc( 56.25rem + var(--tv-embrace-gap-3) );
}

/* Comparison Component */
body #app tv-embrace pint-compare {
  aspect-ratio: 450 / 225;
  container-type: inline-size; /* Allows children to reference this width */
  display: block;
  margin-block-end: 1.25rem;
  margin-inline: auto;
  max-width: 450px;
  overflow: hidden;
  position: relative;
  width: 100%;
}

/* Base image (After) */
body #app tv-embrace pint-compare > img {
  block-size: 100%;
  display: block;
  inline-size: 100%;
  object-fit: cover;
  position: relative;
}

/* The "Curtain" (Before Layer) */
body #app tv-embrace pint-compare-before {
  block-size: 100%;
  inline-size: 50%; /* Controlled by JS */
  left: 0;
  overflow: hidden;
  position: absolute;
  top: 0;
  z-index: 1;
}
/* The "Before" image inside the curtain */
body #app tv-embrace pint-compare-before img {
  block-size: 100%;
  /* KEY: This image must be the width of the ENTIRE container, not the layer */
  inline-size: 100cqw;
  left: 0;
  max-inline-size: none;
  object-fit: cover;
  position: absolute;
  top: 0;
}

/* Slider - Functional */
body #app tv-embrace pint-compare input[type="range"] {
  cursor: ew-resize;
  inset: 0;
  margin: 0;
  opacity: 0;
  position: absolute;
  z-index: 3;
}
/* Slider - Presentational */
body #app tv-embrace pint-compare-slider {
  bottom: 0;
  background: var(--tv-embrace-white);
  left: 50%; /* Controlled by JS */
  pointer-events: none;
  position: absolute;
  top: 0;
  transform: translateX(-50%);
  width: .1875rem;
  z-index: 2;
}
body #app tv-embrace pint-compare input[type="range"]:focus-visible + pint-compare-slider {
  background: var(--tv-embrace-black);
}
body #app tv-embrace pint-compare-slider::after {
  block-size: 44px;
  border: .1875rem solid var(--tv-embrace-white);
  border-radius: 50%;
  box-shadow: 0 0 10px transparent;
  content: '';
  inline-size: 44px;
  left: 50%;
  position: absolute;
  top: 50%;
  transform: translate(-50%, -50%);
  transition: box-shadow .3s;
}
body #app tv-embrace pint-compare input[type="range"]:focus-visible + pint-compare-slider::after {
  border-color: var(--tv-embrace-black);
  box-shadow: 0 0 10px var(--tv-embrace-black);
}
body #app tv-embrace pint-compare-slider::before {
  block-size: 0;
  border: 6px solid transparent;
  border-right-color: white;
  content: '';
  inline-size: 0;
  left: 50%;
  position: absolute;
  top: 50%;
  transform: translate(-20px, -5px);
}
body #app tv-embrace pint-compare input[type="range"]:focus-visible + pint-compare-slider::before {
  border-right-color: var(--tv-embrace-black);
}
body #app tv-embrace pint-compare-slider span {
  display: block;
  left: 0;
  position: absolute;
  top: 50%;
}
body #app tv-embrace pint-compare-slider span::before {
  block-size: 0;
  border: 6px solid transparent;
  border-left-color: white;
  content: '';
  inline-size: 0;
  left: 0;
  position: absolute;
  top: 50%;
  transform: translate(11px, -5px);
}
body #app tv-embrace pint-compare input[type="range"]:focus-visible + pint-compare-slider span::before {
  border-left-color: var(--tv-embrace-black);
}