/* ============================================================
   เที่ยวนี่เหอะ — VISUAL INTERACTION LAYER
   ไฟล์นี้มีเฉพาะเอฟเฟกต์ภาพเท่านั้น
   - ไม่แตะ JS / API / onclick / state / backend
   - ไม่เปลี่ยน layout หลัก
   - ไม่ใช้ backdrop-filter / filter หนัก ๆ
   - pointer-events เดิมทุกส่วนคงเดิม
   ============================================================ */

:root{
  --tnh-live-cyan: rgba(56,189,248,.78);
  --tnh-live-cyan-soft: rgba(56,189,248,.18);
  --tnh-live-green: rgba(52,211,153,.72);
  --tnh-live-amber: rgba(251,191,36,.70);
  --tnh-live-red: rgba(248,113,113,.68);
}

/* ------------------------------------------------------------
   1) การ์ด / กล่องหลัก
   แค่ transition + GPU hint เท่านั้น
   ------------------------------------------------------------ */
:is(
  .lux-body,
  .trip-hcard,
  .trip-hcard2,
  .thc-overlay,
  .calendar-entry-card,
  .month-photo-card,
  .my-profile,
  .hist-card,
  .past-card,
  .review-card,
  .review-summary-card,
  .eq-trip-card,
  .eq-item-card,
  .eq-summary-card,
  .van-premium-card,
  .van-trip-select-card,
  .van-number-card-content,
  .prep-item-card,
  .line-profile-card,
  .modal-card,
  .form-sec,
  .seat-form-card,
  .admin-row-card,
  .admin-passenger-card,
  .admin-group-trip-card,
  .admin-trip-card,
  .admin-detail-stat,
  .admin-checkin-summary,
  .admin-pickup-premium,
  .admin-pickup-premium-item,
  .tnh-checkin-qr-box,
  .podium-slot,
  .receipt
){
  transition:
    transform .18s cubic-bezier(.2,.8,.2,1),
    box-shadow .22s ease,
    border-color .22s ease,
    opacity .18s ease;
  -webkit-tap-highlight-color: transparent;
}

/* ------------------------------------------------------------
   2) ตอนแตะ — ยุบตัว + วาบขอบ
   ไม่เปลี่ยน onclick / ไม่กิน event
   ------------------------------------------------------------ */
:is(
  .trip-hcard,
  .trip-hcard2,
  .calendar-entry-card,
  .month-photo-card,
  .hist-card,
  .past-card,
  .review-card,
  .eq-trip-card,
  .eq-item-card,
  .van-premium-card,
  .van-trip-select-card,
  .prep-item-card,
  .admin-row-card,
  .admin-passenger-card,
  .admin-group-trip-card,
  .admin-trip-card,
  .admin-pickup-premium-item,
  .podium-slot
):active{
  transform: scale(.985);
  border-color: rgba(125,211,252,.36) !important;
  box-shadow:
    0 0 0 1px rgba(56,189,248,.12),
    0 0 24px rgba(56,189,248,.14),
    0 10px 28px rgba(0,0,0,.18) !important;
  animation: tnhLiveCardFlash .42s ease-out;
}

/* กล่องที่เป็นข้อมูล ไม่ใช่ปุ่ม — แตะแล้ววาบเบากว่า */
:is(
  .admin-detail-stat,
  .admin-checkin-summary,
  .admin-pickup-premium,
  .review-summary-card,
  .eq-summary-card,
  .tnh-checkin-qr-box,
  .receipt
):active{
  transform: scale(.992);
  animation: tnhLiveSoftFlash .38s ease-out;
}

/* ------------------------------------------------------------
   3) ปุ่ม / Tab / Nav
   ------------------------------------------------------------ */
:is(
  button,
  .btn-book,
  .btn-confirm,
  .btn-home,
  .btn-login,
  .btn-logout,
  .btn-pay-ok,
  .remain-pay-btn,
  .eq-step-btn,
  .review-action-btn,
  .review-comment-send-btn,
  .van-role-btn,
  .van-number-btn,
  .admin-action-btn,
  .admin-mini-action,
  .admin-icon-btn,
  .admin-nav-btn,
  .admin-back-trip,
  .my-payment-filter-btn,
  .bnav-item,
  .qa-mini,
  .qa-mytrips-mini,
  .qa-rent-mini,
  .qa-trip-mini
){
  transition:
    transform .14s cubic-bezier(.2,.8,.2,1),
    box-shadow .20s ease,
    opacity .16s ease,
    border-color .20s ease;
  -webkit-tap-highlight-color: transparent;
}

:is(
  button,
  .btn-book,
  .btn-confirm,
  .btn-home,
  .btn-login,
  .btn-logout,
  .btn-pay-ok,
  .remain-pay-btn,
  .eq-step-btn,
  .review-action-btn,
  .review-comment-send-btn,
  .van-role-btn,
  .van-number-btn,
  .admin-action-btn,
  .admin-mini-action,
  .admin-icon-btn,
  .admin-nav-btn,
  .admin-back-trip,
  .my-payment-filter-btn,
  .bnav-item,
  .qa-mini,
  .qa-mytrips-mini,
  .qa-rent-mini,
  .qa-trip-mini
):active{
  transform: scale(.955);
  box-shadow:
    0 0 0 1px rgba(56,189,248,.12),
    0 0 18px rgba(56,189,248,.17) !important;
  animation: tnhLiveButtonFlash .30s ease-out;
}

/* ------------------------------------------------------------
   4) เบาะ — แตะให้รู้สึกตอบสนองขึ้น
   ไม่แตะ class สถานะ / สี / lock logic
   ------------------------------------------------------------ */
:is(.seat,.mini-seat,.onsite-slot,.h-seat):active{
  transform: scale(.93);
  box-shadow:
    0 0 0 2px rgba(255,255,255,.09),
    0 0 22px rgba(250,204,21,.22) !important;
  transition: transform .10s ease, box-shadow .15s ease;
}

/* ------------------------------------------------------------
   5) สถานะสำคัญ — มีชีวิตแบบเบามาก
   ------------------------------------------------------------ */
.admin-checkin-badge,
.paid-full-badge,
.chip-green{
  animation: tnhLiveGreenBreath 3.2s ease-in-out infinite;
}

:is(.admin-pickup-premium-item.no-pickup,.chip-yellow):active{
  box-shadow: 0 0 22px rgba(251,191,36,.18) !important;
}

:is(.chip,.admin-status):active{
  transform: scale(.96);
}

/* ------------------------------------------------------------
   6) Hover เฉพาะเครื่องที่มีเมาส์จริง
   มือถือจะไม่ค้าง hover
   ------------------------------------------------------------ */
@media (hover:hover) and (pointer:fine){
  :is(
    .trip-hcard,
    .trip-hcard2,
    .calendar-entry-card,
    .month-photo-card,
    .hist-card,
    .past-card,
    .review-card,
    .eq-trip-card,
    .eq-item-card,
    .van-premium-card,
    .van-trip-select-card,
    .prep-item-card,
    .admin-row-card,
    .admin-passenger-card,
    .admin-group-trip-card,
    .admin-trip-card,
    .admin-pickup-premium-item
  ):hover{
    transform: translateY(-2px);
    border-color: rgba(125,211,252,.24) !important;
    box-shadow:
      0 0 0 1px rgba(56,189,248,.06),
      0 16px 34px rgba(0,0,0,.20),
      0 0 24px rgba(56,189,248,.07) !important;
  }
}

/* ------------------------------------------------------------
   7) Keyframes — ใช้เฉพาะ transform / box-shadow / opacity
   ------------------------------------------------------------ */
@keyframes tnhLiveCardFlash{
  0%{
    box-shadow:
      0 0 0 0 rgba(56,189,248,0),
      0 0 0 rgba(56,189,248,0);
  }
  38%{
    box-shadow:
      0 0 0 2px rgba(125,211,252,.16),
      0 0 30px rgba(56,189,248,.24);
  }
  100%{
    box-shadow:
      0 0 0 1px rgba(56,189,248,.08),
      0 0 12px rgba(56,189,248,.05);
  }
}

@keyframes tnhLiveSoftFlash{
  0%,100%{ box-shadow: inherit; }
  45%{
    box-shadow:
      0 0 0 1px rgba(125,211,252,.12),
      0 0 24px rgba(56,189,248,.12);
  }
}

@keyframes tnhLiveButtonFlash{
  0%{ opacity:1; }
  45%{ opacity:.78; }
  100%{ opacity:1; }
}

@keyframes tnhLiveGreenBreath{
  0%,100%{
    box-shadow: 0 0 0 rgba(52,211,153,0);
  }
  50%{
    box-shadow: 0 0 16px rgba(52,211,153,.10);
  }
}

/* ------------------------------------------------------------
   8) Accessibility / Battery
   ถ้าเครื่องตั้ง Reduce Motion จะปิด animation อัตโนมัติ
   ------------------------------------------------------------ */
@media (prefers-reduced-motion: reduce){
  *{
    animation-duration:.001ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.001ms !important;
    scroll-behavior:auto !important;
  }
}
