.safe-bottom { padding-bottom: env(safe-area-inset-bottom, 0); }
.line-clamp-2 { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.swipe-card { touch-action: none; user-select: none; transition: transform 0.1s ease-out; will-change: transform; }
.swipe-card.swiping { transition: none; }
.swipe-card.fly-left { animation: flyLeft 0.4s forwards; }
.swipe-card.fly-right { animation: flyRight 0.4s forwards; }
@keyframes flyLeft { to { transform: translateX(-120%) rotate(-20deg); opacity: 0; } }
@keyframes flyRight { to { transform: translateX(120%) rotate(20deg); opacity: 0; } }
@keyframes pop { 0% { transform: scale(0.8); opacity: 0; } 100% { transform: scale(1); opacity: 1; } }
.animate-pop { animation: pop 0.3s ease-out; }
#match-modal.flex { display: flex; }
.swipe-indicators span { width: 6px; height: 6px; border-radius: 9999px; background: rgba(255,255,255,0.4); }
.swipe-indicators span.active { background: #fff; width: 20px; }

/* Age range slider (search filters) */
.age-range-slider { touch-action: none; }
.age-range-input {
  position: absolute;
  left: 0;
  width: 100%;
  top: 50%;
  transform: translateY(-50%);
  margin: 0;
  height: 28px;
  background: transparent;
  pointer-events: none;
  -webkit-appearance: none;
  appearance: none;
}
.age-range-input::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  pointer-events: auto;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: #fff;
  border: 2px solid #ff4458;
  box-shadow: 0 2px 8px rgba(255, 68, 88, 0.35);
  cursor: grab;
  touch-action: none;
}
.age-range-input::-moz-range-thumb {
  pointer-events: auto;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: #fff;
  border: 2px solid #ff4458;
  box-shadow: 0 2px 8px rgba(255, 68, 88, 0.35);
  cursor: grab;
  touch-action: none;
}
.age-range-input:active::-webkit-slider-thumb { cursor: grabbing; }
.age-range-input:active::-moz-range-thumb { cursor: grabbing; }
.age-range-input::-webkit-slider-runnable-track { height: 0; background: transparent; }
.age-range-input::-moz-range-track { height: 0; background: transparent; }
.age-range-max { z-index: 4; }
.age-range-min { z-index: 3; }
.age-range-fill { pointer-events: none; z-index: 1; left: 0; right: 0; }
