  * { box-sizing: border-box; }
  body { margin: 0; background: #000000; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; -webkit-font-smoothing: antialiased; overscroll-behavior: none; }
  html { overscroll-behavior: none; }
  #root { min-height: 100vh; min-height: 100dvh; }
  @keyframes towerRise { from { transform: translateY(115%); } to { transform: translateY(0); } }
  @media (prefers-reduced-motion: reduce) { .tower-rise { animation: none !important; transform: none !important; } }
  /* Draggable pairing/grouping chips — no text selection or iOS long-press callout while a chip is held */
  .dnd-chip { -webkit-user-select: none; user-select: none; -webkit-touch-callout: none; }
  /* Grip dots: the universal "this moves" affordance, prepended to every draggable chip */
  .dnd-chip::before { content: "⠿"; font-size: 9px; line-height: 1; opacity: 0.4; flex-shrink: 0; }
  /* One-time coach hint: a mini chip (and finger) slides from the left slot into the right slot on loop */
  @keyframes dndDemoSlide {
    0%, 14% { transform: translateX(0) scale(1); opacity: 0.65; }
    24% { transform: translateX(0) scale(1.2); opacity: 1; }
    64%, 78% { transform: translateX(54px) scale(1.2); opacity: 1; }
    88%, 100% { transform: translateX(54px) scale(1); opacity: 0.65; }
  }
  .dnd-demo-slide { animation: dndDemoSlide 2.8s ease-in-out infinite; }
  @media (prefers-reduced-motion: reduce) { .dnd-demo-slide { animation: none; transform: translateX(54px); } }

/* Trip Board bottom sheet */
@keyframes sheetUp { from { transform: translateY(48px); opacity: 0; } to { transform: translateY(0); opacity: 1; } }
@media (prefers-reduced-motion: reduce) { [style*="sheetUp"] { animation: none !important; } }
