    body {
      -webkit-tap-highlight-color: transparent;
      background-color: #f4f4f7;
      font-family: 'BIZ UDPGothic', 'Inter', -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif;
      letter-spacing: -0.01em;
      font-size: 17px;
    }

    .dark body {
      background-color: #0b0b0c;
    }

    /* iOSで100%高さを担保（ノッチ・セーフエリアをフル活用） */
    .app-container {
      height: 100vh;
      height: 100dvh;
      padding-top: env(safe-area-inset-top, 0px);
      padding-bottom: env(safe-area-inset-bottom, 0px);
    }

    /* スムーズな遷移のためのイージング定義 */
    .sheet-transition {
      transition: transform 0.4s cubic-bezier(0.16, 1, 0.3, 1);
    }

    /* プレミアムなガラス効果 */
    .glass-effect {
      background: rgba(255, 255, 255, 0.75);
      backdrop-filter: blur(20px);
      -webkit-backdrop-filter: blur(20px);
    }
    .dark .glass-effect {
      background: rgba(20, 20, 22, 0.75);
      backdrop-filter: blur(20px);
      -webkit-backdrop-filter: blur(20px);
    }

    /* Tシャツ/パンツのスワイプアウト時の3D物理トーション */
    .card-swipe-next {
      animation: swipeNext 0.4s cubic-bezier(0.25, 1, 0.5, 1) forwards;
    }
    .card-swipe-prev {
      animation: swipePrev 0.4s cubic-bezier(0.25, 1, 0.5, 1) forwards;
    }
    .card-enter {
      animation: cardEnter 0.45s cubic-bezier(0.175, 0.885, 0.32, 1.15) forwards;
    }

    @keyframes swipeNext {
      0% { transform: translateX(0) rotate(0deg) scale(1); opacity: 1; }
      100% { transform: translateX(120%) rotate(12deg) scale(0.9); opacity: 0; }
    }
    @keyframes swipePrev {
      0% { transform: translateX(0) rotate(0deg) scale(1); opacity: 1; }
      100% { transform: translateX(-120%) rotate(-12deg) scale(0.9); opacity: 0; }
    }
    @keyframes cardEnter {
      0% { transform: scale(0.85); opacity: 0; }
      100% { transform: scale(1); opacity: 1; }
    }

    /* おみくじシャッフルのプレミアムな振動・弾性エフェクト */
    @keyframes slotRolling {
      0%, 100% { transform: translateY(0) scale(1); }
      25% { transform: translateY(-8px) scaleY(1.05) scaleX(0.95); }
      50% { transform: translateY(4px) scaleY(0.95) scaleX(1.02); }
      75% { transform: translateY(-4px) scaleY(1.02) scaleX(0.98); }
    }
    .animate-slot-roll {
      animation: slotRolling 0.18s ease-in-out infinite;
    }

    /* スクロールバー非表示 */
    .no-scrollbar::-webkit-scrollbar {
      display: none;
    }
    .no-scrollbar {
      -ms-overflow-style: none;
      scrollbar-width: none;
    }
