/* Site-wide additions loaded by tg-home.js: Tours mega menu and mobile product sliders. */

/* ---------- Tours mega menu ---------- */
/* Hide the original small dropdown once the mega menu is active (html.tg-mega is set by tg-home.js). */
html.tg-mega header nav div.relative:has(> button[aria-haspopup="true"]) > div{display:none !important}

.tgMega{position:fixed;z-index:45;left:0;top:0;width:min(1040px,calc(100vw - 32px));color:var(--color-ink,#0f1222);font-family:inherit;opacity:0;visibility:hidden;transform:translateY(-10px) scale(.985);transform-origin:50% 0;transition:opacity .22s ease,transform .32s cubic-bezier(.22,.8,.2,1),visibility 0s linear .32s}
.tgMega.is-open{opacity:1;visibility:visible;transform:none;transition:opacity .22s ease,transform .38s cubic-bezier(.22,.8,.2,1),visibility 0s}
.tgMegaInner{display:grid;grid-template-columns:300px 1fr;margin-top:10px;overflow:hidden;border:1px solid rgba(15,18,34,.06);border-radius:28px;background:#fff;box-shadow:0 30px 80px -20px rgba(15,18,34,.35),0 0 0 1px rgba(255,255,255,.6) inset}
.tgMega.is-open .tgMegaInner{animation:tgMegaClip .45s cubic-bezier(.22,.8,.2,1)}
@keyframes tgMegaClip{from{clip-path:inset(0 0 100% 0 round 28px)}to{clip-path:inset(0 0 0 0 round 28px)}}

.tgMegaSide{position:relative;max-height:min(520px,calc(100vh - 140px));overflow:auto;padding:18px 12px 18px 14px;background:linear-gradient(160deg,var(--color-brand-50,#f3f1ff),#fff 70%);scrollbar-width:thin}
.tgMegaEyebrow{margin:0 0 10px 10px;font-size:11px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--color-brand-700,#4c22cf)}
.tgMegaList{position:relative;margin:0;padding:0;list-style:none}
.tgMegaIndicator{position:absolute;left:0;right:0;top:0;height:0;border-radius:16px;background:#fff;box-shadow:0 8px 24px -10px rgba(15,18,34,.25);transition:transform .35s cubic-bezier(.22,.8,.2,1),height .35s cubic-bezier(.22,.8,.2,1);pointer-events:none}
.tgMegaDest{position:relative;z-index:1;display:flex;align-items:center;gap:12px;padding:8px 10px;border-radius:16px;color:inherit;text-decoration:none;opacity:0;transform:translateX(-10px)}
.tgMega.is-open .tgMegaDest{animation:tgMegaIn .45s cubic-bezier(.22,.8,.2,1) forwards;animation-delay:calc(var(--i) * 35ms + 80ms)}
@keyframes tgMegaIn{to{opacity:1;transform:none}}
.tgMegaThumb{flex:none;width:44px;height:44px;overflow:hidden;border-radius:12px;background:#e9e5ff}
.tgMegaThumb img{width:100%;height:100%;object-fit:cover;transition:transform .5s ease}
.tgMegaDest[aria-current="true"] .tgMegaThumb img,.tgMegaDest:hover .tgMegaThumb img{transform:scale(1.15)}
.tgMegaThumbAll{display:grid;place-items:center;color:#fff;background:linear-gradient(135deg,var(--color-brand-500,#6f45ff),var(--color-coral-500,#ff6a3d))}
.tgMegaThumbAll svg{width:20px;height:20px}
.tgMegaName{min-width:0;flex:1}
.tgMegaName b{display:block;overflow:hidden;font-size:14px;font-weight:700;white-space:nowrap;text-overflow:ellipsis}
.tgMegaName small{display:block;overflow:hidden;font-size:12px;color:#64748b;white-space:nowrap;text-overflow:ellipsis}
.tgMegaCount{flex:none;padding:3px 8px;border-radius:999px;font-size:11px;font-weight:700;color:var(--color-brand-700,#4c22cf);background:var(--color-brand-100,#e9e5ff);transition:background .25s ease,color .25s ease}
.tgMegaDest[aria-current="true"] .tgMegaCount{color:#fff;background:var(--color-brand-600,#5b2df0)}

.tgMegaMain{display:flex;min-width:0;flex-direction:column;padding:22px 24px 18px}
.tgMegaHead{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:14px}
.tgMegaHead p{margin:0;font-size:11px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--color-coral-600,#ee4f22)}
.tgMegaHead h3{margin:2px 0 0;font-size:22px;font-weight:800;letter-spacing:-.02em;line-height:1.2}
.tgMegaMore{flex:none;display:inline-flex;align-items:center;gap:4px;font-size:13px;font-weight:700;color:var(--color-brand-700,#4c22cf);text-decoration:none;transition:gap .2s ease}
.tgMegaMore:hover{gap:9px}
.tgMegaMore svg,.tgMegaFoot a svg{width:15px;height:15px}
.tgMegaCards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.tgMegaCard{display:flex;min-width:0;flex-direction:column;overflow:hidden;border-radius:18px;background:#fff;color:inherit;text-decoration:none;box-shadow:0 0 0 1px rgba(15,18,34,.06);opacity:0;transform:translateY(14px);animation:tgMegaCard .5s cubic-bezier(.22,.8,.2,1) forwards;animation-delay:calc(var(--i) * 70ms + 60ms);transition:box-shadow .3s ease,translate .3s cubic-bezier(.22,.8,.2,1)}
@keyframes tgMegaCard{to{opacity:1;transform:none}}
.tgMegaCard:hover{translate:0 -4px;box-shadow:0 18px 40px -16px rgba(15,18,34,.35),0 0 0 1px rgba(15,18,34,.04)}
.tgMegaImg{position:relative;aspect-ratio:4/3;overflow:hidden;background:#eef0f6}
.tgMegaImg img{width:100%;height:100%;object-fit:cover;transition:transform .7s cubic-bezier(.22,.8,.2,1)}
.tgMegaCard:hover .tgMegaImg img{transform:scale(1.08)}
.tgMegaImg span{position:absolute;left:8px;top:8px;padding:3px 8px;border-radius:999px;font-size:10px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:#0f1222;background:rgba(255,255,255,.92)}
.tgMegaBody{display:flex;flex:1;flex-direction:column;padding:10px 12px 12px}
.tgMegaBody h4{display:-webkit-box;margin:0;overflow:hidden;font-size:13.5px;font-weight:700;line-height:1.35;-webkit-line-clamp:2;-webkit-box-orient:vertical;transition:color .2s ease}
.tgMegaCard:hover h4{color:var(--color-brand-700,#4c22cf)}
.tgMegaMeta{display:flex;flex-wrap:wrap;gap:4px 10px;margin-top:6px;font-size:11.5px;color:#64748b}
.tgMegaMeta .star{color:#f59e0b}
.tgMegaPrice{display:flex;align-items:baseline;justify-content:flex-end;gap:4px;margin-top:auto;padding-top:8px;font-size:11px;color:#64748b}
.tgMegaPrice b{font-size:16px;font-weight:800;color:var(--color-ink,#0f1222)}
.tgMegaEmpty{padding:40px 0;text-align:center;font-size:14px;color:#64748b}
.tgMegaSkel{border-radius:18px;background:linear-gradient(90deg,#f1f3f8 25%,#e6e9f2 50%,#f1f3f8 75%);background-size:200% 100%;animation:tgMegaShimmer 1.2s linear infinite;aspect-ratio:3/4}
@keyframes tgMegaShimmer{to{background-position:-200% 0}}
.tgMegaFoot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin-top:16px;padding-top:14px;border-top:1px solid #eef0f6;font-size:12px;color:#64748b}
.tgMegaFoot span{display:inline-flex;align-items:center;gap:6px;margin-right:14px}
.tgMegaFoot span::before{content:"";width:6px;height:6px;border-radius:999px;background:#10b981}
.tgMegaFoot a{display:inline-flex;align-items:center;gap:6px;padding:9px 16px;border-radius:999px;font-size:13px;font-weight:700;color:#fff;text-decoration:none;background:var(--color-brand-600,#5b2df0);transition:transform .25s cubic-bezier(.34,1.56,.64,1),box-shadow .25s ease}
.tgMegaFoot a:hover{transform:translateY(-2px);box-shadow:0 10px 24px -8px var(--color-brand-600,#5b2df0)}
@media (max-width:1100px){.tgMegaInner{grid-template-columns:260px 1fr}.tgMegaCard:nth-child(3){display:none}.tgMegaCards{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* ---------- Search bar, before typing: top searches and top destinations (tg-home.js 5b) ---------- */
/* Built on the Tours menu's classes above (.tgMega …): the same reveal, staggered list, hover highlight and cards. */
.tgSrch{z-index:70}
.tgSrch .tgMegaInner{grid-template-columns:270px 1fr}
.tgSrch .tgMegaSide{max-height:var(--tgSrchRoom,520px)}
.tgSrch .tgSrchMain{max-height:var(--tgSrchRoom,520px);overflow:auto;padding-top:18px;scrollbar-width:thin}
.tgSrchTop{margin-bottom:18px}
.tgSrchTop .tgMegaEyebrow{margin-left:0}
.tgSrchTags{display:flex;flex-wrap:wrap;gap:8px}
.tgSrchTag{display:inline-flex;align-items:center;gap:6px;padding:7px 13px;border:1px solid transparent;border-radius:999px;font-size:13px;font-weight:600;color:var(--color-ink,#0f1222);text-decoration:none;background:var(--color-brand-50,#f3f1ff);opacity:0;transform:translateY(6px);transition:background .2s ease,border-color .2s ease,color .2s ease,box-shadow .25s ease,translate .25s cubic-bezier(.22,.8,.2,1)}
.tgSrch.is-open .tgSrchTag{animation:tgMegaIn .45s cubic-bezier(.22,.8,.2,1) forwards;animation-delay:calc(var(--i) * 35ms + 120ms)}
.tgSrchTag svg{width:14px;height:14px;flex:none;color:var(--color-brand-600,#5b2df0);transition:transform .25s ease}
.tgSrchTag:hover,.tgSrchTag:focus-visible{border-color:var(--color-brand-300,#b9a6ff);color:var(--color-brand-700,#4c22cf);background:#fff;translate:0 -2px;box-shadow:0 8px 20px -10px rgba(91,45,240,.45)}
.tgSrchTag:hover svg,.tgSrchTag:focus-visible svg{transform:translate(2px,-2px)}
.tgSrch .tgMegaDest:focus-visible,.tgSrch .tgMegaCard:focus-visible,.tgSrchTag:focus-visible{outline:2px solid var(--color-brand-500,#6f45ff);outline-offset:2px}
@media (max-width:767px){
  .tgSrch .tgMegaInner{grid-template-columns:1fr;max-height:var(--tgSrchRoom,520px);overflow:auto}
  .tgSrch .tgSrchMain{order:-1;max-height:none;overflow:visible;padding:16px 16px 4px}
  .tgSrch .tgMegaSide{max-height:none;overflow:visible;padding-top:10px}
  .tgSrch .tgSrchCards,.tgSrch .tgMegaFoot{display:none}
  .tgSrchTop{margin-bottom:4px}
}

/* ---------- Header search bar: the text clear of the button, suggestions wider than the bar ---------- */
/* The header bar shares its row with the menu and the account buttons, so it can be narrow: its text stops before the
   round button (with "…" if it still does not fit), and the suggestions it shows after two letters open wider than the
   bar (from its left edge, kept on screen) with titles on up to two lines instead of cut after a few letters.
   (The phone menu's bar is full width already: its suggestions keep the bar's width.) */
header form[role="search"] input{padding-right:8px;text-overflow:ellipsis}
header form[role="search"]>div.absolute{scrollbar-width:thin}
header form[role="search"]>div.absolute .truncate.font-semibold{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;white-space:normal;line-height:1.3}
@media (min-width:768px){header form[role="search"]>div.absolute{right:auto;width:max(100%,420px);max-width:calc(100vw - 32px)}}

/* ---------- Home page product rails: one card at a time on phones ---------- */
.tgRailDots{display:none}
@media (max-width:639px){
  .tgRailM .snap-x>div{width:100% !important}
  .tgRailM>div.mx-auto.mt-3.h-1{display:none}
  .tgRailDots{display:flex;justify-content:center;align-items:center;gap:6px;margin-top:4px;min-height:12px}
  .tgRailDot{width:7px;height:7px;padding:0;border:0;border-radius:999px;background:#d7dbe6;cursor:pointer;transition:width .35s cubic-bezier(.22,.8,.2,1),background .35s ease}
  .tgRailDot[aria-current="true"]{width:22px;background:var(--color-brand-600,#5b2df0)}
  /* the card that is sliding in settles with a slight scale */
  .tgRailM .snap-x>div>*{transition:transform .5s cubic-bezier(.22,.8,.2,1),opacity .5s ease}
  .tgRailM .snap-x>div:not(.is-current)>*{transform:scale(.94);opacity:.6}
}

@media (prefers-reduced-motion:reduce){
  .tgMega,.tgMega *,.tgRailM .snap-x>div>*{animation:none !important;transition:none !important}
  .tgMegaDest,.tgMegaCard,.tgSrchTag{opacity:1;transform:none}
}

/* ---------- Admin > Payment links (mounted on /admin/payments?view=links by tg-home.js) ---------- */
html.tgpl-on main > :not(#tgpl-root){display:none !important}
html.tgpl-on a[href="/admin/payments"]{background:transparent !important;color:rgba(255,255,255,.6) !important}
html.tgpl-on a.tgPayLinksNav{background:rgba(255,255,255,.1);color:#fff}
.tgpl-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:24px;align-items:start}
.tgpl-step{display:flex;gap:12px;margin-bottom:18px}
.tgpl-num{flex:none;display:grid;place-items:center;width:26px;height:26px;margin-top:26px;border-radius:999px;background:var(--color-brand-50,#f3f1ff);color:var(--color-brand-700,#4c22cf);font-size:12px;font-weight:800;transition:background .2s,color .2s}
.tgpl-step.done .tgpl-num{background:var(--color-brand-600,#5b2df0);color:#fff}
.tgpl-field{flex:1;min-width:0}
.tgpl-row2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.tgpl-combo{position:relative}
.tgpl-combo .input{padding-right:40px}
.tgpl-clear{position:absolute;right:8px;top:50%;transform:translateY(-50%);display:none;width:26px;height:26px;border:0;border-radius:999px;background:#eef0f6;cursor:pointer}
.tgpl-combo.has .tgpl-clear{display:block}
.tgpl-list{position:absolute;z-index:30;left:0;right:0;top:calc(100% + 6px);display:none;max-height:340px;overflow:auto;padding:6px;border:1px solid #eef0f6;border-radius:14px;background:#fff;box-shadow:0 24px 60px -20px rgba(15,18,34,.35)}
.tgpl-list.open{display:block}
.tgpl-opt{display:block;width:100%;padding:9px 12px;border:0;border-radius:10px;background:none;text-align:left;cursor:pointer}
.tgpl-opt:hover,.tgpl-opt[aria-selected="true"]{background:var(--color-brand-50,#f3f1ff)}
.tgpl-r1{display:flex;align-items:center;gap:8px}
.tgpl-r2{display:block;overflow:hidden;font-size:12.5px;color:#64748b;white-space:nowrap;text-overflow:ellipsis}
.tgpl-cust{display:none;margin:-6px 0 18px 38px;padding:14px 16px;border-radius:14px;background:var(--color-brand-50,#f3f1ff)}
.tgpl-cust.show{display:block;animation:tgplFade .25s ease}
@keyframes tgplFade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.tgpl-kv,.tgpl-facts{display:grid;grid-template-columns:auto 1fr;gap:4px 14px;margin:8px 0 0;font-size:13px}
.tgpl-kv dt,.tgpl-facts dt{color:#64748b}
.tgpl-kv dd,.tgpl-facts dd{margin:0;font-weight:600;overflow-wrap:anywhere}
.tgpl-facts{grid-template-columns:110px 1fr;gap:9px 14px;margin:14px 0}
.tgpl-warn{margin-top:10px;padding:10px 12px;border-radius:12px;background:#fffbeb;color:#b45309;font-size:13px;font-weight:600}
.tgpl-money{position:relative}
.tgpl-sym{position:absolute;left:14px;top:50%;transform:translateY(-50%);font-weight:700;color:#475569;pointer-events:none}
.tgpl-money .input{padding-left:58px;font-weight:700}
.tgpl-bad{border-color:#ef4444 !important;box-shadow:0 0 0 4px rgba(239,68,68,.1) !important}
.tgpl-err{margin-top:6px;font-size:12px;font-weight:600;color:#dc2626}
.tgpl-quick{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.tgpl-quick:empty{display:none}
.tgpl-success{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:14px;background:#ecfdf5}
.tgpl-tick{display:grid;place-items:center;flex:none;width:34px;height:34px;border-radius:999px;background:#10b981;color:#fff;font-weight:800}
.tgpl-linkbox{display:flex;gap:8px;margin-top:14px}
.tgpl-mono{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12px;background:#fafbff}
.tgpl-tools{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.tgpl-search{width:16rem;padding-top:.5rem;padding-bottom:.5rem}
.tgpl-filters{display:flex;flex-wrap:wrap;gap:6px}
.tgpl-filters button{padding:5px 11px;border:1px solid #e2e8f0;border-radius:999px;background:#fff;font-size:12px;font-weight:700;cursor:pointer}
.tgpl-filters button[aria-pressed="true"]{background:#0f1222;border-color:#0f1222;color:#fff}
.tgpl-tiny{font-size:11px}
.tgpl-trunc{max-width:11rem;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.tgpl-acts{display:flex;justify-content:flex-end;gap:6px}
.tgpl-danger{color:#dc2626 !important}
.tgpl-pager{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 20px;border-top:1px solid #f1f5f9;color:#64748b;font-size:13px}
.tgpl-toast{position:fixed;z-index:80;left:50%;bottom:24px;max-width:min(560px,calc(100vw - 32px));padding:12px 18px;border-radius:14px;background:#0f1222;color:#fff;font-weight:600;font-size:14px;box-shadow:0 20px 50px -12px rgba(15,18,34,.45);opacity:0;transform:translate(-50%,20px);transition:opacity .25s,transform .25s;pointer-events:none}
.tgpl-toast.show{opacity:1;transform:translate(-50%,0)}
.tgpl-toast.bad{background:#b91c1c}
@media (max-width:1100px){.tgpl-grid{grid-template-columns:1fr}}
@media (max-width:640px){.tgpl-row2{grid-template-columns:1fr}.tgpl-num{display:none}.tgpl-cust{margin-left:0}.tgpl-linkbox{flex-direction:column}.tgpl-search{width:100%}.tgpl-facts{grid-template-columns:90px 1fr}}

/* ---------- Payment links on booking pages (customer ticket page + admin booking > Money) ---------- */
.tgpl-due{margin-top:14px;padding:14px;border:1.5px solid var(--color-brand-200,#d5cdff);border-radius:14px;background:linear-gradient(135deg,var(--color-brand-50,#f3f1ff),#fff)}
.tgpl-due .tgpl-due-h{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.tgpl-due b.amt{font-size:18px;font-weight:800}
.tgpl-due p{margin:2px 0 0;font-size:12.5px;color:#64748b}
.tgpl-due a.btn-primary{margin-top:10px;width:100%}
.tgpl-extra{margin-top:12px;padding-top:10px;border-top:1px solid #f1f5f9}
.tgpl-extra-h{margin:0 0 4px;font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:#94a3b8}
.tgpl-line{display:flex;justify-content:space-between;gap:10px;padding:3px 0;font-size:13.5px}
.tgpl-line small{display:block;font-size:11.5px;color:#64748b}
.tgpl-line .v{font-weight:700;white-space:nowrap}
.tgpl-admin{margin-top:12px;padding-top:12px;border-top:1px solid #f1f5f9}
.tgpl-admin-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;padding:7px 0;border-bottom:1px dashed #eef0f6;font-size:12.5px}
.tgpl-admin-row:last-of-type{border-bottom:0}
.tgpl-admin-row .amt{font-weight:800;font-variant-numeric:tabular-nums}
.tgpl-admin-row .meta{flex-basis:100%;color:#64748b;font-size:11.5px}
.tgpl-admin-row .acts{display:flex;gap:6px;margin-left:auto}
.tgpl-admin-sum{display:flex;justify-content:space-between;margin-top:6px;font-size:13px;font-weight:700}

/* Experience page time slots: every button keeps the same height whether or not it shows "N left" */
.tgSlot{min-height:60px;display:flex;flex-direction:column;align-items:center;justify-content:center}
.tgSlotLow::before{content:"";display:inline-block;width:5px;height:5px;margin:0 3px 1px 0;border-radius:50%;background:currentColor;vertical-align:middle;animation:tgSlotPulse 1.6s ease-in-out infinite}
.tgSlotHurry{display:flex;align-items:center;gap:8px;margin-top:8px;padding:7px 11px;border-radius:12px;background:var(--color-coral-50,#fff1ee);color:var(--color-coral-600,#e8553d);font-size:12px;font-weight:600;animation:tgSlotIn .25s ease-out}
.tgSlotHurry::before{content:"";flex:none;width:6px;height:6px;border-radius:50%;background:var(--color-coral-500,#f26a50);animation:tgSlotPulse 1.6s ease-in-out infinite}
@keyframes tgSlotPulse{0%,100%{opacity:1}50%{opacity:.35}}
@keyframes tgSlotIn{from{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.tgSlotLow::before,.tgSlotHurry,.tgSlotHurry::before{animation:none}}

/* ---------- Admin > Penalties (tg-penalties.js on /admin?view=penalties) ---------- */
html.tgpn-on main > :not(#tgpn-root){display:none !important}
html.tgpn-on nav a.rounded-xl[href="/admin"]{background:transparent !important;color:rgba(255,255,255,.6) !important}
html.tgpn-on nav a.rounded-xl[href="/admin"] svg{color:inherit !important}
html.tgpn-on a.tgPenaltiesNav{background:rgba(255,255,255,.1);color:#fff}
html.tgpn-on a.tgPenaltiesNav svg{color:var(--color-coral-400,#fb7185)}
.tgPenaltiesNav .tgpn-badge{margin-left:auto;min-width:20px;padding:0 6px;border-radius:999px;background:var(--color-coral-500,#f43f5e);color:#fff;font-size:11px;font-weight:800;line-height:18px;text-align:center}
.tgpn-seg{display:inline-flex;padding:3px;border-radius:12px;background:#f1f5f9}
.tgpn-seg button{padding:6px 12px;border-radius:9px;font-size:13px;font-weight:600;color:#475569}
.tgpn-seg button[aria-pressed="true"]{background:#fff;color:#0f172a;box-shadow:0 1px 2px rgba(15,23,42,.1)}
.tgpn-ranges{display:flex;flex-wrap:wrap;gap:6px}
.tgpn-ranges button{padding:7px 12px;border:1px solid #e2e8f0;border-radius:999px;background:#fff;font-size:13px;font-weight:600;color:#475569;transition:background .15s ease,color .15s ease,border-color .15s ease}
.tgpn-ranges button:hover{border-color:#cbd5e1}
.tgpn-ranges button[aria-pressed="true"]{border-color:var(--color-brand-600,#5b2df0);background:var(--color-brand-600,#5b2df0);color:#fff}
.tgpn-custom{display:flex;align-items:center;gap:6px}
.tgpn-custom[hidden]{display:none}
.tgpn-bars{display:flex;flex-direction:column;gap:4px}
.tgpn-row{display:grid;grid-template-columns:minmax(120px,200px) 1fr 120px;align-items:center;gap:12px;width:100%;padding:6px 8px;border-radius:12px;text-align:left;transition:background .15s ease,opacity .15s ease}
.tgpn-row:hover{background:#f8fafc}
.tgpn-row.is-on{background:var(--color-brand-50,#f3f0ff)}
.tgpn-row.is-dim{opacity:.45}
.tgpn-who{min-width:0}
.tgpn-who b{display:block;overflow:hidden;font-size:13px;line-height:1.25;text-overflow:ellipsis;white-space:nowrap}
.tgpn-who small{display:block;font-size:11px;color:#94a3b8}
.tgpn-track{position:relative;height:22px;overflow:hidden;border-radius:7px;background:#f1f5f9}
.tgpn-bar{display:flex;height:100%;overflow:hidden;border-radius:7px;transition:width .5s cubic-bezier(.22,1,.36,1)}
.tgpn-bar i{display:block;min-width:3px;height:100%}
.tgpn-c-active{background:#f43f5e}
.tgpn-c-settled{background:#10b981}
.tgpn-c-waived,.tgpn-c-closed{background:#94a3b8}
.tgpn-val{font-size:13px;font-weight:700;font-variant-numeric:tabular-nums;text-align:right}
.tgpn-val.is-zero{color:#cbd5e1;font-weight:500}
.tgpn-legend{display:flex;flex-wrap:wrap;gap:14px;font-size:12px;color:#64748b}
.tgpn-legend span{display:inline-flex;align-items:center;gap:6px}
.tgpn-legend i{display:inline-block;width:10px;height:10px;border-radius:3px}
.tgpn-table td{vertical-align:top}
.tgpn-reason{min-width:200px;max-width:340px}
.tgpn-eq{font-size:12px;color:#64748b}
.tgpn-edit{display:flex;flex-direction:column;gap:6px;min-width:220px;margin-top:6px}
.tgpn-edit[hidden]{display:none}
.tgpn-ok{display:grid;place-items:center;width:28px;height:28px;flex:none;border-radius:999px;background:#ecfdf5;color:#059669;font-weight:800}
@media (max-width:640px){.tgpn-row{grid-template-columns:1fr 96px}.tgpn-who{grid-column:1/-1}}

/* ---------- Admin > product form: time slots under each price tier (tg-admin-slots.js) ---------- */
tr.tgTierSlots>td{padding:0!important;border-top:0!important;background:transparent}
tr.tgTierSlots>td:empty{display:none}
.tgts{position:sticky;left:0;box-sizing:border-box;padding:2px 12px 12px;font-size:13px}
.tgts-bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.tgts-bar svg{width:14px;height:14px;flex:none}
.tgts-toggle .tgts-count{margin-left:2px;padding:1px 7px;border-radius:999px;background:var(--color-brand-50,#f3f1ff);color:var(--color-brand-700,#4c22cf);font-size:11px;font-weight:700}
.tgts-toggle .tgts-count:empty{display:none}
.tgts-chev{transition:transform .2s ease}
.tgts-toggle[aria-expanded="true"]{border-color:var(--color-brand-300,#b6a6ff);background:var(--color-brand-50,#f3f1ff);color:var(--color-brand-700,#4c22cf)}
.tgts-toggle[aria-expanded="true"] .tgts-chev{transform:rotate(180deg)}
.tgts-hint{font-size:12px;color:#64748b}
.tgts-msg{font-size:12px;font-weight:600}
.tgts-msg.is-ok{color:#059669}
.tgts-msg.is-error{color:#dc2626}
.tgts-confirm{display:inline-flex;flex-wrap:wrap;align-items:center;gap:6px;padding:4px 6px 4px 10px;border-radius:12px;background:#fff7ed;color:#9a3412;font-weight:600}
.tgts-drop{margin-top:10px;padding:14px;border:1px solid #e9e5ff;border-radius:16px;background:#fbfaff}
.tgts-drop[hidden]{display:none}
.tgts-tools{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin-bottom:12px;color:#475569}
.tgts-tools label{display:inline-flex;align-items:center;gap:6px}
.tgts-tools .input{width:auto;padding-block:6px}
.tgts-tools svg{width:14px;height:14px}
.tgts-sum{margin-left:auto;font-size:12px;color:#64748b}
.tgts-add{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr)) auto;align-items:end;gap:10px;margin-bottom:14px;padding:12px;border:1px dashed #d5cdff;border-radius:14px;background:#fff}
.tgts-add .label{margin-bottom:4px}
.tgts-add .input{padding-block:7px}
.tgts-list{display:flex;flex-direction:column;gap:10px;max-height:460px;overflow-y:auto;padding-right:2px}
.tgts-day{flex:none;border:1px solid #eef0f4;border-radius:14px;background:#fff;overflow:hidden}
.tgts-dayhead{display:flex;justify-content:space-between;margin:0;padding:8px 12px;background:#f8fafc;font-weight:700;color:#0f1222}
.tgts-dayhead span{font-weight:500;font-size:12px;color:#64748b}
.tgts-tbl{width:100%}
.tgts-tbl th{font-size:11px}
.tgts-tbl td{padding-block:6px!important;vertical-align:middle}
.tgts-tbl .input{padding-block:5px;max-width:150px}
.tgts-tbl .tgts-f-cap{max-width:90px}
.tgts-tbl tr.is-closed td{background:#fafafa;color:#94a3b8}
.tgts-tbl tr.is-saving .input{opacity:.6}
.tgts-tbl tr.is-saved td{background:#ecfdf5;transition:background .6s ease}
.tgts-tbl svg{width:15px;height:15px}
.tgts-del.is-confirm{color:#dc2626;font-weight:700;font-size:12px}
.tgts-allday{margin-left:8px;font-size:11px;font-weight:700;color:#64748b}
.tgts-empty{margin:4px 0;color:#64748b}
.tgts-empty.is-error{color:#dc2626}
.tgts-modal{position:fixed;inset:0;z-index:80;display:grid;place-items:center;padding:16px;background:rgba(15,18,34,.45);backdrop-filter:blur(2px)}
.tgts-sheet{width:min(640px,100%);max-height:calc(100vh - 32px);display:flex;flex-direction:column;border-radius:22px;background:#fff;box-shadow:0 30px 80px -20px rgba(15,18,34,.45);overflow:hidden}
.tgts-sheet-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:18px 20px;border-bottom:1px solid #f1f5f9}
.tgts-title{margin:0;font-size:18px;font-weight:800;color:#0f1222}
.tgts-sub{margin:2px 0 0;font-size:13px;color:#64748b}
.tgts-sheet-body{padding:16px 20px;overflow-y:auto;display:flex;flex-direction:column;gap:6px}
.tgts-sheet-body .label{margin:8px 0 4px}
.tgts-row{display:flex;align-items:center;gap:8px;color:#64748b}
.tgts-row .input{width:auto}
.tgts-days{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.tgts-day-chip{padding:6px 12px;border:1px solid #e2e8f0;border-radius:999px;background:#fff;font-weight:700;font-size:13px;color:#475569}
.tgts-day-chip.is-on{border-color:var(--color-brand-600,#5b2df0);background:var(--color-brand-600,#5b2df0);color:#fff}
.tgts-every{margin-left:4px;font-size:13px;font-weight:700;color:var(--color-brand-700,#4c22cf)}
.tgts-check{display:flex;align-items:center;gap:8px;margin:10px 0 2px;font-weight:600;color:#0f1222}
.tgts-check input{width:16px;height:16px;accent-color:var(--color-brand-600,#5b2df0)}
.tgts-grid3,.tgts-grid2{display:grid;gap:10px}
.tgts-grid3{grid-template-columns:repeat(3,1fr)}
.tgts-grid2{grid-template-columns:repeat(2,1fr)}
.tgts-grid3[hidden]{display:none}
.tgts-grid3 > [hidden]{display:none}
/* Open inventory, gap "Custom times": the admin's own start times */
.tgts-custom{padding:12px;border:1px dashed #d5cdff;border-radius:14px;background:#fbfaff}
.tgts-custom .label{margin-top:0}
.tgts-ct-list{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}
.tgts-ct-row{display:inline-flex;align-items:center;gap:2px;padding:2px 2px 2px 0;border-radius:12px}
.tgts-ct-row .input{width:auto;padding-block:6px}
.tgts-ct-x{padding-inline:6px!important;color:#94a3b8}
.tgts-ct-x:hover{color:#dc2626}
.tgts-ct-x svg{width:15px;height:15px}
.tgts-est{margin:12px 0 0;padding:12px 14px;border-radius:14px;background:#f5f3ff;color:#334155}
.tgts-err{margin:6px 0 0;color:#dc2626;font-weight:600}
.tgts-err:empty{display:none}
.tgts-sheet-foot{display:flex;justify-content:flex-end;gap:8px;padding:14px 20px;border-top:1px solid #f1f5f9}
@media (max-width:760px){.tgts-add{grid-template-columns:1fr 1fr}.tgts-grid3,.tgts-grid2{grid-template-columns:1fr}.tgts-sum{margin-left:0}}
.tgts-scope{display:flex;flex-wrap:wrap;gap:8px 18px;font-weight:600;color:#0f1222}
.tgts-scope label{display:inline-flex;align-items:center;gap:6px}
.tgts-scope input{accent-color:var(--color-brand-600,#5b2df0)}
.tgts-sheet .tgts-hint{flex-basis:100%;margin:2px 0 0}
.tgts-o-pricebox,.tgts-o-seatbox{padding:12px;border:1px solid #eef0f4;border-radius:14px;background:#fbfaff}
.tgts-o-pricebox.is-off{opacity:.5}
.tgts-o-seatbox[hidden]{display:none}
.tgts-sub-check{margin:10px 0 0;font-weight:500;font-size:13px}
/* Override price / inventory, Close / reopen: which times (All times / Time ranges / Pick times) */
.tgts-seg{display:inline-flex;flex-wrap:wrap;align-self:flex-start;gap:2px;padding:3px;border:1px solid #e2e8f0;border-radius:999px;background:#f8fafc}
.tgts-seg button{padding:5px 14px;border-radius:999px;font-weight:700;font-size:13px;color:#475569}
.tgts-seg button[aria-pressed="true"]{background:#fff;color:var(--color-brand-700,#4c22cf);box-shadow:0 1px 3px rgba(15,18,34,.15)}
.tgts-tbox{margin-top:8px;padding:12px;border:1px dashed #d5cdff;border-radius:14px;background:#fbfaff}
.tgts-tbox[hidden]{display:none}
.tgts-sheet .tgts-tbox .tgts-hint{margin:8px 0 0}
.tgts-sheet .tgts-tbox[data-tbox="all"] .tgts-hint{margin:0}
.tgts-tr-list{display:flex;flex-direction:column;gap:6px;margin-bottom:10px}
.tgts-tr-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px;color:#64748b}
.tgts-tr-row .input{width:auto;padding-block:6px}
.tgts-tr-x{padding-inline:6px!important;color:#94a3b8}
.tgts-tr-x:hover{color:#dc2626}
.tgts-tr-x svg{width:15px;height:15px}
/* Time ranges with a gap: the start times they take and leave out on the chosen dates */
.tgts-tr-preview{display:flex;flex-direction:column;gap:4px;margin:8px 0 0;padding:8px 10px;border:1px solid #eef0f4;border-radius:10px;background:#fff;font-size:12px;line-height:1.45;color:#334155}
.tgts-tr-preview[hidden]{display:none}
.tgts-tr-preview b{color:#0f1222}
.tgts-tr-preview .tgts-tr-miss{color:#64748b}
.tgts-pick-tools{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;margin-bottom:10px}
.tgts-sheet .tgts-pick-tools .tgts-pick-note{flex:1 1 220px;margin:0}
.tgts-pick-tools .tgts-every{margin-left:0}
.tgts-pick-list{display:flex;flex-wrap:wrap;gap:6px;max-height:220px;overflow-y:auto}
.tgts-time-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border:1px solid #e2e8f0;border-radius:999px;background:#fff;font-weight:700;font-size:13px;color:#475569}
.tgts-time-chip small{font-size:11px;font-weight:600;color:#94a3b8}
.tgts-time-chip.is-closed{border-style:dashed}
.tgts-time-chip.is-on{border-color:var(--color-brand-600,#5b2df0);background:var(--color-brand-600,#5b2df0);color:#fff}
.tgts-time-chip.is-on small{color:rgba(255,255,255,.8)}
.tgts-check.is-off{opacity:.55}
.tgts-legacy{margin-top:8px;padding:10px 12px;border:1px dashed #e2e8f0;border-radius:14px}
.tgts-legacy[hidden]{display:none}
.tgts-legacy-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:4px 0;font-size:13px;color:#334155}
.tgts-toast{position:fixed;right:20px;bottom:20px;z-index:90;max-width:420px;padding:12px 16px;border-radius:14px;background:#0f1222;color:#fff;font-size:14px;font-weight:600;box-shadow:0 20px 40px -16px rgba(15,18,34,.5)}
.tgts-toast.is-error{background:#b91c1c}
/* Override price / inventory: "Overrides made" at the top (every override of the variant, newest first) */
.tgts-olog{flex:none;margin-bottom:6px;padding:12px;border:1px solid #e9e5ff;border-radius:16px;background:#fbfaff}
.tgts-olog-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:2px 12px;margin-bottom:8px}
.tgts-olog-title{margin:0;font-size:14px;font-weight:800;color:#0f1222}
.tgts-olog-count{display:inline-block;min-width:22px;margin-left:4px;padding:1px 7px;border-radius:999px;background:var(--color-brand-600,#5b2df0);color:#fff;font-size:11px;font-weight:800;text-align:center}
.tgts-olog-count:empty{display:none}
.tgts-olog-sub{font-size:12px;color:#64748b}
.tgts-olog-list{display:flex;flex-direction:column;gap:6px;max-height:228px;margin:0;padding:0 2px 0 0;overflow-y:auto;list-style:none}
.tgts-olog-item{display:flex;gap:10px;padding:8px 10px;border:1px solid #eef0f4;border-radius:12px;background:#fff}
.tgts-olog-item.is-ended{background:#f8fafc}
.tgts-olog-item.is-ended .tgts-olog-sel,.tgts-olog-item.is-ended .tgts-olog-what{opacity:.6}
.tgts-olog-item.is-new{border-color:#6ee7b7;background:#ecfdf5;animation:tgtsOlogNew 1.6s ease-out}
@keyframes tgtsOlogNew{from{box-shadow:0 0 0 4px rgba(16,185,129,.35)}to{box-shadow:0 0 0 0 rgba(16,185,129,0)}}
.tgts-olog-no{flex:none;min-width:32px;height:22px;padding:0 6px;display:grid;place-items:center;border-radius:999px;background:var(--color-brand-100,#e9e5ff);color:var(--color-brand-700,#4c22cf);font-size:11px;font-weight:800}
.tgts-olog-main{flex:1;min-width:0}
.tgts-olog-main p{margin:0}
.tgts-olog-sel{font-size:13px;line-height:1.45;color:#334155}
.tgts-olog-sel b{color:#0f1222}
.tgts-olog .tgts-olog-what{display:flex;flex-wrap:wrap;gap:4px;margin-top:5px}
.tgts-olog-what span{padding:1px 8px;border-radius:999px;background:#f1f5f9;color:#0f1222;font-size:11px;font-weight:700}
.tgts-olog .tgts-olog-meta{margin-top:4px;font-size:11px;color:#94a3b8}
.tgts-olog-tag{margin-left:4px;padding:0 6px;border-radius:999px;background:#e2e8f0;color:#475569;font-style:normal;font-weight:700}
.tgts-olog-empty{padding:2px;font-size:12px;color:#64748b}
.tgts-olog-empty.is-error{color:#dc2626}
.tgts-ok{margin:6px 0 0;color:#047857;font-weight:600}
.tgts-ok:empty{display:none}
/* Close all (next to Close / reopen) and its alert */
.tgts-closeall{color:#b91c1c!important;border-color:#fecaca!important}
.tgts-closeall:hover{background:#fef2f2!important;border-color:#f87171!important}
.tgts-alert{display:flex;gap:12px;padding:12px 14px;border:1px solid #fecaca;border-radius:14px;background:#fef2f2;color:#7f1d1d;font-size:13px;line-height:1.45}
.tgts-alert svg{flex:none;width:22px;height:22px;color:#dc2626}
.tgts-alert p{margin:0}
.tgts-alert .tgts-alert-title{margin-bottom:2px;font-size:14px;font-weight:800;color:#991b1b}
.tgts-ca-count b{color:#0f1222}

/* ---------- Admin > product > Reviews tab (tg-product-reviews.js; popups use the .tgts-modal look above) ---------- */
.tgpr{font-size:14px;color:#0f1222}
.tgpr-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;padding:14px 20px;border-bottom:1px solid #f1f5f9}
.tgpr-actions{display:flex;flex-wrap:wrap;gap:8px}
.tgpr-body{padding:20px}
.tgpr-sum{display:flex;flex-wrap:wrap;align-items:center;gap:8px 18px;margin-bottom:6px}
.tgpr-sum p{flex:1 1 260px;margin:0;color:#334155}
.tgpr-avg{display:flex;align-items:center;gap:10px;padding:8px 14px;border-radius:14px;background:#fffbeb}
.tgpr-avg b{font-size:26px;font-weight:800;line-height:1}
.tgpr-stars{color:#f59e0b;letter-spacing:1px;white-space:nowrap}
.tgpr-tools{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:16px 0 12px}
.tgpr-tools .tgts-seg small{margin-left:2px;font-size:11px;font-weight:600;color:#94a3b8}
.tgpr-tools .input{width:auto;padding-block:6px}
.tgpr-tools .tgpr-q{flex:1 1 200px;min-width:0}
.tgpr-list{display:flex;flex-direction:column;gap:10px;margin-top:12px}
.tgpr-item{padding:14px 16px;border:1px solid #eef0f4;border-radius:16px;background:#fff}
.tgpr-item.is-pending{border-color:#fde68a;background:#fffdf5}
.tgpr-item.is-rejected{background:#f8fafc}
.tgpr-item.is-rejected .tgpr-title,.tgpr-item.is-rejected .tgpr-text{color:#64748b}
.tgpr-line{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px}
.tgpr-chips{display:inline-flex;flex-wrap:wrap;gap:6px;margin-left:auto}
.tgpr-dim{color:#64748b;font-size:13px}
.tgpr-title{margin:8px 0 0;font-weight:700}
.tgpr-text{margin:4px 0 0;white-space:pre-line;line-height:1.5;color:#334155;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
.tgpr-text:hover{-webkit-line-clamp:unset}
.tgpr-foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;margin-top:10px}
.tgpr-foot a{color:var(--color-brand-700,#4c22cf);font-weight:600}
.tgpr-btns{display:inline-flex;flex-wrap:wrap;gap:6px;margin-left:auto}
.tgpr-del:hover,.tgpr-del.is-confirm{color:#dc2626}
.tgpr-del.is-confirm{font-weight:700}
.tgpr-more{align-self:center;margin-top:4px}
.tgpr-none{padding:28px 16px;border:1px dashed #d5cdff;border-radius:16px;background:#fbfaff;text-align:center}
.tgpr-none p{margin:0 0 4px}
.tgpr-empty{margin:8px 0;color:#64748b}
.tgpr-empty.is-error{color:#dc2626}
.tgpr-rate{display:flex;align-items:center;gap:2px}
.tgpr-rate button{padding:0 2px;border:0;background:none;font-size:30px;line-height:1;color:#cbd5e1;cursor:pointer;transition:transform .12s ease,color .12s ease}
.tgpr-rate button.is-on{color:#f59e0b}
.tgpr-rate button:hover{transform:scale(1.12)}
.tgpr-rate button:focus-visible{outline:2px solid var(--color-brand-500,#6f45ff);outline-offset:2px;border-radius:6px}
.tgpr-rate-text{margin-left:10px;font-size:13px;font-weight:600;color:#64748b}
.tgts-sheet textarea.input{resize:vertical;min-height:110px}
.tgts-sheet.tgpr-wide{width:min(960px,100%)}
.tgpr-i-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px 18px;margin-top:8px}
.tgpr-i-row .tgts-check{margin:0}
.tgpr-file{cursor:pointer}
.tgpr-i-map[hidden],.tgpr-i-preview[hidden],.tgpr-i-orderrow[hidden]{display:none}
.tgpr-i-map .input{padding-block:5px}
.tgpr-i-orderrow{display:block;margin-top:6px}
.tgpr-i-orderrow .input{width:auto}
.tgpr-tbl-wrap{max-height:260px;overflow:auto;border:1px solid #eef0f4;border-radius:12px}
.tgpr-tbl-tall{max-height:340px}
.tgpr-tbl-wrap td{vertical-align:top}
.tgpr-tbl-wrap tr.is-bad td{background:#fef2f2}
.tgpr-cell-text{min-width:240px;max-width:420px}
.tgpr-i-count{margin:0 0 8px;color:#334155}
.tgpr-bad{color:#b91c1c;font-weight:600}
@media (max-width:640px){.tgpr-head,.tgpr-body{padding-inline:14px}.tgpr-chips{margin-left:0}}

/* ---------- Product page booking box (#book, tg-book.js): option → date → time → travelers → Book now ---------- */
/* Steps: a tick on finished ones, the next one highlighted. */
#book [data-tgbk-step] > p.label{display:flex;align-items:center;gap:6px;transition:color .2s ease}
#book [data-tgbk-done]:not([data-tgbk-step="promo"]):not([data-tgbk-step="total"]) > p.label::before{content:"";flex:none;width:16px;height:16px;border-radius:999px;background:#10b981 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center/11px no-repeat}
#book [data-tgbk-next]:not([data-tgbk-step="total"]){position:relative}
#book [data-tgbk-next]:not([data-tgbk-step="total"])::before{content:"";position:absolute;left:-16px;top:-6px;bottom:-6px;width:3px;border-radius:0 3px 3px 0;background:var(--color-brand-600,#5b2df0)}
#book [data-tgbk-next] > p.label{color:var(--color-brand-700,#4c22cf)}
#book [data-tgbk-step="total"][data-tgbk-next] button.btn-lg{animation:tgbk-pulse 1.6s ease-out 2}
@keyframes tgbk-pulse{0%{box-shadow:0 0 0 0 rgba(91,45,240,.45)}100%{box-shadow:0 0 0 14px rgba(91,45,240,0)}}
/* Traveler buttons: 34px with a mouse, 38px on touch screens. */
#book button[aria-label="Increase"],#book button[aria-label="Decrease"]{width:34px;height:34px}
@media (pointer:coarse){#book button[aria-label="Increase"],#book button[aria-label="Decrease"]{width:38px;height:38px}}
.tgbk-close{display:none}

/* Desktop: the box sits beside the title and photos (the content grid is flattened into the page grid), stays in
   view while the page scrolls, scrolls inside itself, and keeps the total and Book now at its bottom. */
@media (min-width:1024px){
  main .container-x:has(> div[class*="grid-cols-[1fr_400px]"]){display:grid;grid-template-columns:minmax(0,1fr) 360px;column-gap:36px;align-items:start}
  main .container-x:has(> div[class*="grid-cols-[1fr_400px]"]) > *{grid-column:1;min-width:0}
  main .container-x > div[class*="grid-cols-[1fr_400px]"]{display:contents}
  main .container-x > div[class*="grid-cols-[1fr_400px]"] > div{grid-column:1;min-width:0;margin-top:2rem}
  main .container-x > div[class*="grid-cols-[1fr_400px]"] > aside{grid-column:2;grid-row:1 / span 30;position:sticky;top:96px;align-self:start}
  aside #book{display:flex;flex-direction:column;max-height:calc(100vh - 112px)}
  aside #book > :first-child{flex:none}
  aside #book > :nth-child(2){flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}
  aside #book [data-tgbk-step="total"]{position:sticky;bottom:-14px;z-index:2;margin:14px -16px 0;padding:10px 16px 14px;background:#fff;box-shadow:0 -14px 24px -20px rgba(15,18,34,.45)}
}
@media (min-width:1024px) and (max-width:1279px){
  main .container-x:has(> div[class*="grid-cols-[1fr_400px]"]){grid-template-columns:minmax(0,1fr) 340px;column-gap:28px}
}

/* Phones and tablets: "Check availability" opens the box as a full-height sheet with Book now pinned at the bottom. */
@media (max-width:1023px){
  html.tgbk-sheet{overflow:hidden}
  html.tgbk-sheet body::after{content:"";position:fixed;inset:0;z-index:58;background:rgba(15,18,34,.5);animation:tgbk-fade .25s ease-out}
  html.tgbk-sheet #book{position:fixed;left:0;right:0;top:48px;bottom:0;z-index:60;margin:0;display:flex;flex-direction:column;border-radius:24px 24px 0 0;box-shadow:0 -24px 60px -20px rgba(15,18,34,.45);animation:tgbk-up .32s cubic-bezier(.2,.8,.2,1)}
  html.tgbk-sheet #book > :first-child{flex:none;position:relative;padding:20px 60px 10px 16px}
  html.tgbk-sheet #book > :first-child::before{content:"";position:absolute;top:8px;left:50%;width:40px;height:4px;margin-left:-20px;border-radius:4px;background:#d6d3e0}
  html.tgbk-sheet #book > :nth-child(2){flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
  html.tgbk-sheet #book [data-tgbk-step="total"]{position:sticky;bottom:-14px;z-index:2;margin:14px -16px 0;padding:10px 16px calc(14px + env(safe-area-inset-bottom));background:#fff;box-shadow:0 -14px 24px -20px rgba(15,18,34,.45)}
  html.tgbk-sheet [data-tgbk-bar]{display:none!important}
  html.tgbk-sheet .tgbk-close{display:grid;position:fixed;top:60px;right:14px;z-index:61;width:40px;height:40px;place-items:center;border:1px solid #e2e8f0;border-radius:999px;background:#fff;color:#0f1222;box-shadow:0 6px 18px -8px rgba(15,18,34,.35)}
  .tgbk-close svg{width:18px;height:18px}
}
@keyframes tgbk-up{from{transform:translateY(56px);opacity:.4}to{transform:none;opacity:1}}
@keyframes tgbk-fade{from{opacity:0}to{opacity:1}}
@media (prefers-reduced-motion:reduce){html.tgbk-sheet #book,html.tgbk-sheet body::after{animation:none}#book [data-tgbk-next] button.btn-lg{animation:none}}

/* Compact booking box: everything a little smaller and tighter, the same steps (all screens). */
#book{border-radius:20px}
#book > :first-child{display:flex;flex-wrap:wrap;align-items:baseline;column-gap:6px;padding:12px 16px}
#book > :first-child > p:first-child{font-size:12px}
#book > :first-child > p:nth-child(2){gap:6px}
#book > :first-child .text-3xl{font-size:22px;line-height:1.2}
#book > :first-child > p:last-child{flex-basis:100%;margin-top:2px;font-size:11px}
#book > :nth-child(2){padding:14px 16px}
#book > :nth-child(2) > *{margin-block:0}
#book > :nth-child(2) > * + *{margin-top:14px}
#book p.label{margin-bottom:6px;font-size:11px}
/* options: compact cards of the same shape — the name (two lines at most until chosen), one quiet line with refund ·
   length · timed entry, and the price on the right with the "was" price stacked above it (tgStrike, patch-home.js);
   the chosen one shows its full name and description. The label counts the options (tg-book.js data-tgbk-count). */
#book [data-tgbk-step="option"] > p.label[data-tgbk-count]::after{content:attr(data-tgbk-count);margin-left:auto;font-weight:600;letter-spacing:0;text-transform:none;color:#94a3b8}
#book [data-tgbk-step="option"] .space-y-2 > *{margin-block:0}
#book [data-tgbk-step="option"] .space-y-2 > * + *{margin-top:6px}
#book [data-tgbk-step="option"] button{padding:10px 12px;border-radius:14px}
#book [data-tgbk-step="option"] button > div{gap:10px}
#book [data-tgbk-step="option"] button > div > span:first-child{width:18px;height:18px;margin-top:1px}
#book [data-tgbk-step="option"] button .min-w-0 > span:first-child{font-size:13px;line-height:1.3}
#book [data-tgbk-step="option"] button[aria-pressed="false"] .min-w-0 > span:first-child{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
#book [data-tgbk-step="option"] button .min-w-0 > span.text-xs{margin-top:3px;font-size:11.5px;line-height:1.4}
#book [data-tgbk-step="option"] button[aria-pressed="false"] .min-w-0 > span.text-xs{display:none}
#book [data-tgbk-step="option"] button .min-w-0 > span.flex-wrap{margin-top:4px;gap:2px 0;font-size:11px;font-weight:500;line-height:1.3}
#book [data-tgbk-step="option"] button .min-w-0 > span.flex-wrap > span + span::before{content:"·";margin:0 6px;color:#cbd5e1}
#book [data-tgbk-step="option"] button > div > span.text-right{display:flex;flex-direction:column;align-items:flex-end;gap:2px;padding-top:1px;font-size:14px;line-height:1.1;white-space:nowrap}
#book [data-tgbk-step="option"] button > div > span.text-right > .tgStrike{margin:0;font-size:11px;font-weight:500}
#book [data-tgbk-step="option"] button ul{margin-top:8px;padding-left:28px}
/* until an option is chosen, no empty "Total · 0 travelers" box: the options get its room */
#book:not(:has([data-tgbk-step="option"][data-tgbk-done])) [data-tgbk-step="total"] > :first-child{display:none}
#book:not(:has([data-tgbk-step="option"][data-tgbk-done])) [data-tgbk-step="total"] > * + *{margin-top:0}
/* calendar: shorter day cells */
#book [data-tgbk-step="date"] .mb-2{margin-bottom:2px}
#book [data-tgbk-step="date"] .grid-cols-7{gap:2px}
#book [data-tgbk-step="date"] .grid-cols-7 > span.py-1{padding-block:1px}
#book .cal-day{aspect-ratio:auto;height:34px;border-radius:9px;font-size:13px}
#book [data-tgbk-step="date"] p.mt-2{margin-top:4px}
/* times: four in a row */
#book [data-tgbk-step="time"] .grid-cols-3{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}
#book button.tgSlot{padding:6px 2px;border-radius:10px;font-size:13px}
/* travelers */
#book [data-tgbk-step="travelers"] .px-4{padding:7px 12px}
#book [data-tgbk-step="travelers"] .text-sm{font-size:13px}
#book [data-tgbk-step="travelers"] .rounded-2xl{border-radius:14px}
/* total and the button */
#book [data-tgbk-step="total"] > *{margin-block:0}
#book [data-tgbk-step="total"] > * + *{margin-top:8px}
#book [data-tgbk-step="total"] > :first-child{padding:9px 12px;border-radius:14px}
#book [data-tgbk-step="total"] .text-2xl{font-size:20px}
#book [data-tgbk-step="total"] .btn-lg{padding-block:11px;font-size:15px}
#book > :nth-child(2) > ul{font-size:11px}
#book > :nth-child(2) > ul > * + *{margin-top:4px}
@media (pointer:coarse){#book .cal-day{height:38px}#book button.tgSlot{padding-block:8px}}

/* ---------- Date fields: DD-MM-YYYY (tg-dates.js, Chromium browsers) ---------- */
/* The field's own text (in the browser language's order) is hidden and data-dmy is drawn over it in the same font. */
html.tg-dmy input[type="date"][data-dmy]{position:relative}
html.tg-dmy input[type="date"][data-dmy]::-webkit-datetime-edit{opacity:0}
html.tg-dmy input[type="date"][data-dmy]::before{content:attr(data-dmy);position:absolute;inset:0;display:flex;align-items:center;padding:inherit;padding-right:0;font:inherit;line-height:normal;color:inherit;white-space:nowrap;pointer-events:none}
html.tg-dmy input[type="date"][data-dmy-empty]::before{color:#94a3b8}
/* A typed date that is not a real date or is outside the field's min / max (tg-dates.js). */
html.tg-dmy input[type="date"][data-dmy-invalid]::before{color:#dc2626}
html.tg-dmy input[type="date"][data-dmy]:disabled::before{opacity:.6}
/* The part being edited (day, month or year), highlighted over its place in the date like the browser's own field. */
html.tg-dmy input[type="date"][data-dmy-seg]::after{content:attr(data-dmy-seg);position:absolute;top:50%;left:var(--tg-seg-x,0px);transform:translate(-2px,-50%);padding:1px 2px;border-radius:3px;background:#2563eb;color:#fff;font:inherit;line-height:normal;white-space:nowrap;pointer-events:none}
html.tg-dmy input[type="date"][data-dmy-seg][data-dmy-invalid]::after{background:#dc2626}

/* ---------- Product page booking calendar and time slots: prices in lighter text (patch-home.js EXP_PRICES) ---------- */
.cal-day:has(.tgCalPrice){display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;line-height:1}
.cal-day .tgCalPrice{display:block;font-size:10px;font-weight:500;line-height:1;letter-spacing:0;color:#94a3b8;white-space:nowrap}
.cal-day .tgCalPriceSm{font-size:8.5px;letter-spacing:-.02em}
.cal-day.bg-brand-600 .tgCalPrice{color:rgba(255,255,255,.8)}
.cal-day:has(.tgCalPrice) > span.absolute{top:4px;right:4px;bottom:auto;left:auto;transform:none}
#book .cal-day:has(.tgCalPrice){height:44px}
@media (pointer:coarse){#book .cal-day:has(.tgCalPrice){height:46px}}
.tgCalCur{margin-left:auto;color:#64748b}
.tgSlot .tgSlotPrice{display:block;margin-top:1px;font-size:10.5px;font-weight:500;line-height:1.2;color:#94a3b8}
.tgSlot.bg-brand-600 .tgSlotPrice{color:rgba(255,255,255,.8)}

/* ---------- Admin → booking → Reschedule: free slot / date range, and the channels to notify on ---------- */
.tgRsTabs{display:inline-flex;gap:2px;padding:3px;border-radius:999px;background:#f1f5f9}
.tgRsTab{padding:6px 14px;border-radius:999px;font-size:13px;font-weight:700;color:#475569;transition:background .15s ease,color .15s ease}
.tgRsTab[aria-selected="true"]{background:#fff;color:#0f1222;box-shadow:0 1px 3px rgba(15,18,34,.12)}
.tgRsNotify{display:flex;flex-wrap:wrap;align-items:center;gap:8px 18px;padding:10px 12px;border-radius:14px;background:#f8fafc}
.tgRsCheck{display:inline-flex;align-items:center;gap:6px;font-size:14px;font-weight:600;color:#0f1222;cursor:pointer}
.tgRsCheck input{width:16px;height:16px;accent-color:var(--color-brand-600,#5b2df0)}

/* ---------- Product page "Compare options": each row picks its variant in the booking box (tg-book.js) ---------- */
.tgCompareRow{position:relative;cursor:pointer;padding-right:132px!important;transition:background .2s ease}
.tgCompareRow:hover{background:var(--color-brand-50,#f3f1ff)}
.tgCompareRow:focus-visible{outline:2px solid var(--color-brand-500,#6f45ff);outline-offset:-2px}
.tgCompareRow::after{content:"Select";position:absolute;right:16px;top:50%;transform:translateY(-50%);padding:5px 12px;border:1px solid var(--color-brand-200,#d5cdff);border-radius:999px;font-size:12px;font-weight:700;color:var(--color-brand-700,#4c22cf);background:#fff;transition:background .2s ease,color .2s ease,border-color .2s ease}
.tgCompareRow:hover::after{background:var(--color-brand-600,#5b2df0);border-color:var(--color-brand-600,#5b2df0);color:#fff}
.tgCompareRow[aria-pressed="true"]{background:var(--color-brand-50,#f3f1ff)}
.tgCompareRow[aria-pressed="true"]::after{content:"✓ Selected";background:var(--color-brand-600,#5b2df0);border-color:var(--color-brand-600,#5b2df0);color:#fff}
@media (max-width:479px){.tgCompareRow{padding-right:16px!important;padding-bottom:48px!important}.tgCompareRow::after{top:auto;bottom:12px;transform:none}}
.tgts-started{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:999px;font-size:12px;font-weight:700;white-space:nowrap;color:#64748b;background:#f1f5f9}
/* Fixed override (tg-admin-slots.js): the button lights up while it is on; the popup's on/off switch; covered days */
.tgts-fixed.is-on{border-color:var(--color-brand-600,#5b2df0);background:var(--color-brand-50,#f3f1ff);color:var(--color-brand-700,#4c22cf)}
.tgts-fixed.is-on::before{content:"";width:8px;height:8px;margin-right:2px;border-radius:999px;background:#10b981;box-shadow:0 0 0 3px rgba(16,185,129,.2);animation:tgSlotPulse 1.6s ease-in-out infinite}
.tgts-fixed b{font-weight:800}
.tgts-sheet-sm{width:min(520px,100%)}
.tgts-switch{display:inline-flex;align-items:center;gap:10px;margin:2px 0 8px;font-weight:700;color:#0f1222;cursor:pointer;user-select:none}
.tgts-switch input{position:absolute;opacity:0;width:1px;height:1px}
.tgts-switch-track{position:relative;width:44px;height:24px;border-radius:999px;background:#cbd5e1;transition:background .2s ease}
.tgts-switch-track span{position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:999px;background:#fff;box-shadow:0 1px 3px rgba(15,18,34,.25);transition:transform .2s ease}
.tgts-switch input:checked + .tgts-switch-track{background:var(--color-brand-600,#5b2df0)}
.tgts-switch input:checked + .tgts-switch-track span{transform:translateX(20px)}
.tgts-switch input:focus-visible + .tgts-switch-track{outline:2px solid var(--color-brand-500,#6f45ff);outline-offset:2px}
.tgts-fx-fields.is-off{opacity:.45;pointer-events:none}
.tgts-daydate{display:inline-flex;align-items:center;gap:8px}
.tgts-fixedchip{padding:2px 8px;border-radius:999px;font-size:11px;font-style:normal;font-weight:800;color:var(--color-brand-700,#4c22cf);background:var(--color-brand-100,#e9e5ff)}

/* ---------- Home hero trust bar (rating / instant / free cancellation / all-in pricing) ---------- */
/* Shown only in Gen Z mode (html[data-genz="on"], set by tg-home.js). The tablet padding in patch-home.js
   only makes room for this bar, so it goes back to the default pb-24 while the bar is hidden. */
html:not([data-genz="on"]) .tgHero div.bottom-0.border-t.backdrop-blur-md{display:none}
@media (min-width:768px) and (max-width:1023px){html:not([data-genz="on"]) .tgHero{padding-bottom:6rem}}

/* ---------- Checkout mobile number: country code picker + number (patches/checkout-phone.js) ---------- */
/* The picker shows only the code ("+91"); the transparent <select> laid over it opens the list of countries. */
.tgPhone{display:flex;gap:8px}
.tgPhone>.input{min-width:0}
.tgPhone .tgPhoneCc{position:relative;display:flex;flex:none;align-items:center;gap:8px;width:auto;padding-right:12px;font-weight:600}
.tgPhoneCc::after{content:"";width:6px;height:6px;margin-top:-3px;border-right:1.5px solid;border-bottom:1.5px solid;transform:rotate(45deg);opacity:.5}
.tgPhoneCc select{position:absolute;inset:0;width:100%;height:100%;opacity:0;font-size:16px;cursor:pointer}
.tgPhoneCc:focus-within{border-color:var(--color-brand-500,#6f45ff);box-shadow:0 0 0 4px var(--color-brand-100,#e9e5ff)}
.tgPhoneHint{margin:6px 0 0;font-size:12px;color:#64748b}

/* ---------- Sign in before booking: popup (tg-login.js) ---------- */
/* Over everything, the phone booking sheet included (z-index 60). Fields and buttons use the site's .label/.input/.btn-primary. */
.tgLogin{display:none;position:fixed;inset:0;z-index:100;align-items:center;justify-content:center;padding:16px;background:rgba(15,18,34,.55);overflow-y:auto;color:var(--color-ink,#0f1222)}
html.tgLogin-open{overflow:hidden}
html.tgLogin-open .tgLogin{display:flex;animation:tgLoginFade .2s ease-out}
.tgLoginCard{position:relative;width:100%;max-width:420px;margin:auto;padding:28px 24px 24px;border-radius:24px;background:#fff;box-shadow:0 30px 80px -20px rgba(15,18,34,.45);animation:tgLoginUp .28s cubic-bezier(.2,.8,.2,1)}
@keyframes tgLoginFade{from{opacity:0}}
@keyframes tgLoginUp{from{opacity:0;transform:translateY(16px) scale(.98)}}
.tgLoginClose{position:absolute;top:12px;right:12px;width:36px;height:36px;border:0;border-radius:999px;background:transparent;font-size:24px;line-height:1;color:#64748b;cursor:pointer}
.tgLoginClose:hover{background:#f1f5f9;color:#0f1222}
.tgLoginTitle{margin:0 32px 4px 0;font-size:22px;font-weight:800;letter-spacing:-.02em}
.tgLoginSub{margin:0 0 16px;font-size:14px;color:#64748b}
.tgLoginTabs{display:grid;grid-template-columns:1fr 1fr;gap:4px;margin-bottom:18px;padding:4px;border-radius:999px;background:#f1f5f9}
.tgLoginTabs button{padding:8px 10px;border:0;border-radius:999px;background:transparent;font:inherit;font-size:14px;font-weight:700;color:#64748b;cursor:pointer}
.tgLoginTabs button[aria-selected="true"]{background:#fff;color:#0f1222;box-shadow:0 2px 8px -2px rgba(15,18,34,.2)}
.tgLoginGBtn{display:flex;min-height:44px;justify-content:center}
.tgLoginOr{display:flex;align-items:center;gap:12px;margin:14px 0;font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:#94a3b8}
.tgLoginOr::before,.tgLoginOr::after{content:"";flex:1;height:1px;background:#e2e8f0}
.tgLoginForm{display:flex;flex-direction:column;gap:14px}
.tgLoginForm [hidden]{display:none}
.tgLoginPw{position:relative}
.tgLoginPw .input{padding-right:44px}
.tgLoginEye{position:absolute;top:50%;right:8px;display:grid;place-items:center;width:32px;height:32px;border:0;border-radius:999px;background:transparent;color:#94a3b8;transform:translateY(-50%);cursor:pointer}
.tgLoginHint{margin:4px 0 0;font-size:12px;color:#64748b}
.tgLoginError{margin:0;padding:8px 12px;border-radius:12px;background:#fef2f2;font-size:14px;font-weight:500;color:#b91c1c}
.tgLoginSubmit{width:100%}
.tgLoginSubmit.is-busy{opacity:.7;cursor:progress}
/* "Forgot password?": the link under the password, and the two reset steps (email → code + new password) */
.tgLoginCard [hidden]{display:none}
.tgLoginLink{padding:0;border:0;background:none;font:inherit;font-size:13px;font-weight:700;color:var(--color-brand-700,#4c22cf);cursor:pointer}
.tgLoginLink:hover:not(:disabled){text-decoration:underline}
.tgLoginLink:disabled{color:#94a3b8;cursor:default}
.tgLoginForgotRow{margin:6px 0 0;text-align:right}
.tgLoginLinks{display:flex;flex-wrap:wrap;justify-content:center;gap:4px 10px;margin:0;color:#cbd5e1}
.tgLoginSent{margin:0;padding:10px 12px;border-radius:12px;background:#f5f3ff;font-size:13px;line-height:1.45;color:#334155}
.tgLoginCode{font-size:22px;font-weight:700;letter-spacing:.45em;text-align:center;font-variant-numeric:tabular-nums}
@media (max-width:479px){.tgLogin{align-items:flex-end;padding:0}.tgLoginCard{max-width:none;margin:auto 0 0;border-radius:24px 24px 0 0;padding-bottom:calc(24px + env(safe-area-inset-bottom))}}
@media (prefers-reduced-motion:reduce){html.tgLogin-open .tgLogin,.tgLoginCard{animation:none}}

/* ---------- Admin > Integrations > AI writing: Prompts (tg-ai-prompts.js, under the Groq card) ---------- */
#tgai-root{margin-top:24px}
.tgai{font-size:14px;color:#0f1222}
.tgai-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 16px;padding:14px 20px;border-bottom:1px solid #f1f5f9}
.tgai-sub{margin-top:2px;font-size:13px;color:#64748b}
.tgai-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.tgai-actions [hidden]{display:none}
.tgai-note{font-size:12px;font-weight:600;color:#059669}
.tgai-note:empty{display:none}
.tgai-body{padding:20px}
.tgai-skel{height:320px;border-radius:16px}
.tgai-locked{font-size:13px;color:#64748b}
.tgai-err{margin-bottom:14px;padding:10px 12px;border-radius:12px;background:#fef2f2;color:#b91c1c;font-size:13px;font-weight:500}
.tgai-groups{display:flex;flex-wrap:wrap;gap:6px}
.tgai-groups button{position:relative;display:inline-flex;align-items:center;gap:6px;padding:7px 12px;border:1px solid #e2e8f0;border-radius:999px;background:#fff;font-size:13px;font-weight:600;color:#475569;transition:background .15s ease,color .15s ease,border-color .15s ease}
.tgai-groups button:hover{border-color:#cbd5e1}
.tgai-groups button[aria-selected="true"]{border-color:var(--color-brand-600,#5b2df0);background:var(--color-brand-600,#5b2df0);color:#fff}
.tgai-dot{display:none;width:7px;height:7px;border-radius:50%;background:var(--color-brand-500,#6f45ff)}
.tgai-groups .has-custom .tgai-dot{display:inline-block}
.tgai-groups .has-unsaved .tgai-dot{display:inline-block;background:#f59e0b}
.tgai-groups [aria-selected="true"].has-custom .tgai-dot{background:#fff}
.tgai-groups [aria-selected="true"].has-unsaved .tgai-dot{background:#fcd34d}
.tgai-intro{margin:14px 0 4px;font-size:13px;line-height:1.5;color:#64748b}
.tgai-intro b{color:#334155}
.tgai-list{display:flex;flex-direction:column}
.tgai-p{padding:16px 0;border-bottom:1px solid #f1f5f9}
.tgai-p-head{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px}
.tgai-p-label{font-size:14px;font-weight:700;color:#0f1222}
.tgai-state{display:inline-flex;gap:6px}
.tgai-help{margin:4px 0 8px;font-size:12px;line-height:1.5;color:#64748b}
.tgai-ta{display:block;min-height:64px;resize:vertical;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12.5px;line-height:1.55;white-space:pre-wrap;overflow-wrap:anywhere}
.tgai-p.is-dirty .tgai-ta{border-color:#fbbf24;background:#fffdf5}
.tgai-p-foot{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;margin-top:8px;font-size:12px;color:#64748b}
.tgai-phs{display:flex;flex-wrap:wrap;gap:4px}
.tgai-phs:empty,.tgai-meta:empty{display:none}
.tgai-chip{padding:1px 7px;border-radius:999px;font-size:11px;font-weight:600}
.tgai-chip.is-on{background:#ecfdf5;color:#047857}
.tgai-chip.is-off{background:#f1f5f9;color:#94a3b8}
.tgai-chip.is-bad{background:#fef2f2;color:#b91c1c;box-shadow:inset 0 0 0 1px #fecaca}
.tgai-bad{color:#b91c1c;font-weight:600}
.tgai-p-acts{display:flex;gap:12px;margin-left:auto}
.tgai-link{font-size:12px;font-weight:600;color:var(--color-brand-700,#4c22cf)}
.tgai-link:hover{text-decoration:underline}
.tgai-link[hidden]{display:none}
.tgai-pv{margin-top:20px;padding:14px;border-radius:16px;background:#f8fafc}
.tgai-pv-bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px}
.tgai-pv-title{margin-right:auto;font-size:13px;font-weight:700;color:#334155}
.tgai-pv-task{width:auto;max-width:100%;padding-top:6px;padding-bottom:6px}
.tgai-pv-out{margin-top:12px}
.tgai-pv-out.is-stale .tgai-pv-msg{opacity:.55}
.tgai-pv-stale{margin-bottom:8px;font-size:12px;color:#b45309}
.tgai-pv-msg{margin-bottom:10px}
.tgai-pv-msg pre{max-height:360px;margin:0;padding:12px;overflow:auto;border:1px solid #e2e8f0;border-radius:12px;background:#fff;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;line-height:1.55;white-space:pre-wrap;overflow-wrap:anywhere;color:#1e293b}
.tgai-ph{margin-top:16px;font-size:13px}
.tgai-ph summary{cursor:pointer;font-weight:700;color:#334155}
.tgai-ph dl{display:grid;grid-template-columns:max-content 1fr;gap:6px 12px;margin:0}
.tgai-ph dt code{font-size:12px;font-weight:600;color:var(--color-brand-700,#4c22cf)}
.tgai-ph dd{margin:0;font-size:12px;line-height:1.5;color:#475569}
@media (max-width:640px){.tgai-head,.tgai-body{padding-left:16px;padding-right:16px}.tgai-actions{width:100%}.tgai-actions .btn-primary{margin-left:auto}.tgai-ph dl{grid-template-columns:1fr}.tgai-ph dd{margin-bottom:6px}.tgai-pv-title{width:100%}}

/* ---------- Light motion: no backdrop blur on things that move or stay on screen while scrolling ---------- */
/* A backdrop blur is repainted on every frame: on the cards of the destinations slider (they slide every 3 s) and on
   the Gen Z switch in the fixed header (every scrolled frame). Solid colours look the same and cost nothing. */
.tgDestinationAnimatedSlider .tgDestCount{-webkit-backdrop-filter:none;backdrop-filter:none;background:rgba(11,12,16,.42)}
header [class~="md:block"]>button[role="switch"][title*="Gen Z mode"]{-webkit-backdrop-filter:none;backdrop-filter:none}

/* ---------- Admin top bar: the notifications panel and the new-booking pop-up stay on the page ---------- */
/* The bar's backdrop blur made it the containing block of the pop-up (fixed, bottom right, inside the bar), so the
   pop-up was drawn from the bar upwards, off the top of the page. A solid bar puts it back at the window's corner. */
div[class~="lg:pl-64"]>header{-webkit-backdrop-filter:none;backdrop-filter:none;background:rgba(255,255,255,.96)}
div[class~="lg:pl-64"]>header [role="status"][class~="w-80"]{max-width:calc(100vw - 40px)}
/* Phones: the panel opened leftwards from the bell, past the screen's left edge; it spans the bar instead. */
@media (max-width:639px){
  div[class~="lg:pl-64"]>header div.relative:has(>button[aria-label="Notifications"]){position:static}
  div[class~="lg:pl-64"]>header div.relative:has(>button[aria-label="Notifications"])>div.absolute{left:12px;right:12px;width:auto}
}

/* ---------- Header currency picker: search + scrolling list (patches/currency-picker.js) ---------- */
.tgCurSearch{margin:0 0 8px;padding-top:7px;padding-bottom:7px}
.tgCurList{max-height:min(52vh,340px);overflow-y:auto;overscroll-behavior:contain;padding-right:2px}
.tgCurList:empty::after{content:"No currency found";grid-column:1/-1;padding:12px 8px;font-size:13px;color:#64748b}
/* Header below 1024px (patches/mobile-header.js): the currency picker stays in the bar (phones: globe + code, its
   popover kept on screen); the profile avatar + dropdown (or Sign in) is in the hamburger menu, opening inside it. */
@media (max-width:1023px){header .tgHdrUser{display:none}}
@media (max-width:639px){
  header .tgHdrCur .tgCurLang{display:none}
  header .tgHdrCur>.relative>button{padding-left:8px;padding-right:8px;gap:4px}
  header .tgHdrCur>.relative{position:static}
  header .tgHdrCur>.relative>div{left:12px;right:12px;width:auto}
}
.tgMenuUser{margin-top:8px;padding-top:12px;border-top:1px solid #f1f5f9}
.tgMenuUser>.relative>button{width:100%;padding:6px 12px 6px 6px;border-radius:14px}
.tgMenuUser>.relative>button>span:nth-child(2){display:inline;flex:1;max-width:none;text-align:left}
.tgMenuUser>.relative>.absolute{position:static;width:auto;margin-top:6px;box-shadow:none;border-color:#f1f5f9;background:#f8fafc}
.tgMenuUser>a{display:flex;width:100%;justify-content:center}

/* ---------- Checkout: the "Pay in" currency picker stays inside its card (long currency names) ---------- */
select#cur{min-width:0;max-width:min(220px,52vw);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
div:has(>select#cur){min-width:0;justify-content:flex-end}
label[for="cur"]{flex:none}

/* ---------- TicketEx logo image (web/patches/logo.js) ---------- */
.tgLogo{display:inline-flex;align-items:center;flex:none}
.tgLogo img{display:block;width:auto;height:40px;max-width:100%}
.tgLogo .tgLogo-light,.tgLogo.tgLogo-on-dark .tgLogo-dark{display:none}
.tgLogo.tgLogo-on-dark .tgLogo-light{display:block}
footer .tgLogo img{height:46px}
@media (max-width:640px){header .tgLogo img{height:34px}}

/* ---------- Account → My bookings and the booking page (tg-trips.js; web/patches/trips.js) ---------- */
.tgt-i{width:16px;height:16px;flex:none}
.tgt-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-weight:700;letter-spacing:.02em}
.tgt-small{font-size:13px;line-height:1.5}
.tgt-muted{color:#64748b}
.tgt-center{text-align:center}
.tgt-err{margin:8px 0 0;padding:8px 12px;border-radius:12px;font-size:13px;color:var(--color-red-700,#b91c1c);background:var(--color-red-50,#fef2f2)}
.tgt-err[hidden]{display:none}
.tgt-linkbtn{padding:0;border:0;background:none;font:inherit;font-size:13px;font-weight:700;color:var(--color-brand-700,#4c22cf);cursor:pointer;text-decoration:none}
.tgt-linkbtn:hover{text-decoration:underline}
.tgt-sub{margin:2px 0 0;overflow:hidden;font-size:14px;color:#64748b;text-overflow:ellipsis}
.tgt-gap{margin-top:18px !important}

/* Status badges: payment, booking and voucher side by side */
.tgt-badges{display:flex;flex-wrap:wrap;gap:6px}
.tgt-badge{display:inline-flex;align-items:center;gap:5px;padding:3px 10px 3px 8px;border-radius:999px;font-size:12px;font-weight:700;line-height:18px;white-space:nowrap}
.tgt-badge .tgt-i{width:13px;height:13px}
.tgt-badge.is-green{color:var(--color-emerald-700,#047857);background:var(--color-emerald-50,#ecfdf5)}
.tgt-badge.is-amber{color:var(--color-amber-800,#92400e);background:var(--color-amber-50,#fffbeb)}
.tgt-badge.is-blue{color:#1d4ed8;background:#eff6ff}
.tgt-badge.is-red{color:var(--color-red-700,#b91c1c);background:var(--color-red-50,#fef2f2)}
.tgt-badge.is-grey{color:#475569;background:#f1f5f9}

/* List: filters and search */
.tgt-toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px}
.tgt-tabs{display:flex;gap:4px;max-width:100%;overflow-x:auto;padding:4px;border-radius:16px;background:#f1f5f9;scrollbar-width:none}
.tgt-tabs::-webkit-scrollbar{display:none}
.tgt-tab{display:inline-flex;flex:none;align-items:center;gap:6px;padding:8px 14px;border:0;border-radius:12px;background:none;font:inherit;font-size:14px;font-weight:700;color:#64748b;cursor:pointer;transition:background .15s ease,color .15s ease}
.tgt-tab:hover{color:#0f1222}
.tgt-tab.is-on{color:#0f1222;background:#fff;box-shadow:0 1px 3px rgba(15,18,34,.1)}
.tgt-tab:focus-visible{outline:2px solid var(--color-brand-500,#6f45ff);outline-offset:1px}
.tgt-count{min-width:22px;padding:1px 7px;border-radius:999px;font-size:12px;text-align:center;color:#475569;background:#e2e8f0}
.tgt-tab.is-on .tgt-count{color:#fff;background:var(--color-brand-600,#5b2df0)}
.tgt-search{position:relative;flex:1 1 260px;max-width:360px}
.tgt-search .tgt-i{position:absolute;left:14px;top:50%;width:17px;height:17px;color:#94a3b8;transform:translateY(-50%);pointer-events:none}
.tgt-search input{width:100%;height:44px;padding:0 14px 0 40px;border:1px solid #e2e8f0;border-radius:14px;background:#fff;font:inherit;font-size:14px;color:#0f1222;transition:border-color .15s ease,box-shadow .15s ease}
.tgt-search input:focus{outline:none;border-color:var(--color-brand-400,#9175ff);box-shadow:0 0 0 3px var(--color-brand-100,#e9e5ff)}

/* List: booking cards */
.tgt-results{display:grid;gap:14px}
.tgt-bcard{display:grid;grid-template-columns:172px minmax(0,1fr) auto;gap:18px;padding:14px;border:1px solid #eef0f4;border-radius:22px;background:#fff;box-shadow:0 1px 2px rgba(15,18,34,.04),0 4px 16px rgba(15,18,34,.05);cursor:pointer;transition:box-shadow .2s ease,border-color .2s ease}
.tgt-bcard:hover{border-color:#e2e8f0;box-shadow:0 2px 4px rgba(15,18,34,.05),0 12px 32px -8px rgba(15,18,34,.14)}
.tgt-bcard-img{display:grid;place-items:center;overflow:hidden;min-height:132px;border-radius:16px;color:#cbd5e1;background:#f1f5f9}
.tgt-bcard-img img{width:100%;height:100%;object-fit:cover}
.tgt-bcard-img .tgt-i{width:36px;height:36px}
.tgt-bcard-body{display:flex;min-width:0;flex-direction:column;gap:6px;padding:2px 0}
.tgt-bcard-title{margin:4px 0 0;font-size:17px;font-weight:800;line-height:1.3;letter-spacing:-.01em}
.tgt-bcard-title a{color:#0f1222;text-decoration:none}
.tgt-bcard:hover .tgt-bcard-title a{color:var(--color-brand-700,#4c22cf)}
.tgt-bcard .tgt-sub{white-space:nowrap}
.tgt-mini{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 18px;margin:6px 0 0}
.tgt-mini div{min-width:0}
.tgt-mini dt{display:flex;align-items:center;gap:5px;font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.tgt-mini dt .tgt-i{width:12px;height:12px}
.tgt-mini dd{margin:1px 0 0;font-size:13.5px;font-weight:600;color:#1e293b;overflow-wrap:anywhere}
.tgt-bcard-side{display:flex;min-width:190px;flex-direction:column;align-items:flex-end;justify-content:space-between;gap:12px}
.tgt-total{text-align:right}
.tgt-total small{display:block;font-size:12px;color:#64748b}
.tgt-total b{font-size:19px;font-weight:800;color:#0f1222}
.tgt-actions{display:flex;flex-direction:column;align-items:stretch;gap:6px;width:100%}
.tgt-actions .btn-sm{justify-content:center;gap:6px;white-space:nowrap}
.tgt-actions .tgt-i{width:14px;height:14px}
.tgt-review-link{display:inline-flex;align-items:center;justify-content:center;gap:5px;padding:6px 10px;border-radius:999px;font-size:12px;font-weight:700;color:var(--color-amber-800,#92400e);background:var(--color-amber-50,#fffbeb);text-decoration:none}
.tgt-more{margin-top:16px;text-align:center}
.tgt-more .tgt-bcard{text-align:left}
.tgt-morebtn{min-width:220px}
.tgt-end{font-size:13px;color:#94a3b8}

/* Skeletons, empty and error states */
.tgt-bcard.is-skel{cursor:default}
.tgt-skel-img{display:block;min-height:132px;border-radius:16px}
.tgt-skel-l{display:block;height:14px;margin:4px 0;border-radius:8px}
.tgt-skel-l.w30{width:30%}.tgt-skel-l.w50{width:50%}.tgt-skel-l.w70{width:70%}.tgt-skel-l.w90{width:90%}
.tgt-skel-hero{display:block;height:220px;border-radius:18px}
.tgt-skel-block{display:block;height:180px;border-radius:14px}
.tgt-skel-lines{display:grid;gap:10px}
.tgt-skel-lines span{display:block;height:42px;border-radius:12px}
.tgt-state{display:flex;flex-direction:column;align-items:center;gap:6px;padding:48px 20px;border:1.5px dashed #e2e8f0;border-radius:24px;text-align:center;color:#64748b}
.tgt-state .btn-primary,.tgt-state .btn-outline{margin-top:12px;gap:6px}
.tgt-state-i{width:46px;height:46px;color:#cbd5e1}
.tgt-state.is-error .tgt-state-i{color:var(--color-red-400,#f87171)}
.tgt-state-t{margin:6px 0 0;font-size:18px;font-weight:800;color:#0f1222}
.tgt-state p{max-width:440px;margin:0}

/* Booking page layout: the vanilla parts (inside div.tgTrip, display:contents) and React's cards share one grid */
.tgTripPage{display:grid;grid-template-columns:minmax(0,1fr) 360px;grid-template-rows:auto auto auto auto 1fr;grid-template-areas:"back back" "head head" "main side" "extras side" "rest side";column-gap:24px;align-items:start}
.tgTrip{display:contents}
.tgt-back{grid-area:back;margin-bottom:14px}
.tgt-back a{display:inline-flex;align-items:center;gap:4px;font-size:14px;font-weight:700;color:#64748b;text-decoration:none}
.tgt-back a:hover{color:#0f1222}
.tgt-head{grid-area:head}
.tgt-main{grid-area:main;min-width:0}
.tgt-side{grid-area:side;display:flex;min-width:0;flex-direction:column;gap:20px}
.tgt-rest{grid-area:rest;display:flex;min-width:0;flex-direction:column;gap:20px}
.tgTripExtras{grid-area:extras;display:flex;min-width:0;flex-direction:column;gap:20px;margin-bottom:20px}
.tgTripExtras:empty{display:none}
.tgt-head,.tgt-main{margin-bottom:20px}
@media (max-width:1023px){
  .tgTripPage{grid-template-columns:minmax(0,1fr);grid-template-rows:none;grid-template-areas:"back" "head" "side" "main" "extras" "rest"}
  .tgt-side{margin-bottom:20px}
}

.tgt-panel{min-width:0;padding:22px;border:1px solid #eef0f4;border-radius:24px;background:#fff;box-shadow:0 1px 2px rgba(15,18,34,.04),0 4px 16px rgba(15,18,34,.05)}
.tgt-panel-h{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin-bottom:16px}
.tgt-panel-h h2{display:flex;align-items:center;gap:8px;margin:0;font-size:17px;font-weight:800;color:#0f1222}
.tgt-panel-h h2 .tgt-i{width:18px;height:18px;color:var(--color-brand-600,#5b2df0)}
.tgt-panel-h .btn-sm{gap:6px}

/* Summary */
.tgt-head{display:grid;grid-template-columns:300px minmax(0,1fr);gap:24px}
.tgt-head.is-skel{grid-template-columns:300px minmax(0,1fr)}
.tgt-head.no-hero{grid-template-columns:minmax(0,1fr) !important}
.tgt-hero{overflow:hidden;min-height:220px;border-radius:18px;background:#f1f5f9}
.tgt-hero img{width:100%;height:100%;object-fit:cover}
.tgt-head-body{display:flex;min-width:0;flex-direction:column;gap:6px}
.tgt-h1{margin:6px 0 0;font-size:clamp(22px,2.4vw,28px);font-weight:800;line-height:1.2;letter-spacing:-.02em}
.tgt-h1 a{color:#0f1222;text-decoration:none}
.tgt-h1 a:hover{color:var(--color-brand-700,#4c22cf)}
.tgt-facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px 20px;margin:12px 0 4px;padding:16px;border-radius:18px;background:#f8fafc}
.tgt-facts div{min-width:0}
.tgt-facts .is-wide{grid-column:span 2}
.tgt-facts dt{display:flex;align-items:center;gap:5px;font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:#94a3b8}
.tgt-facts dt .tgt-i{width:12px;height:12px}
.tgt-facts dd{display:flex;flex-wrap:wrap;align-items:center;gap:4px 6px;margin:3px 0 0;font-size:14.5px;font-weight:600;color:#0f1222;overflow-wrap:anywhere}
.tgt-facts dd small{flex-basis:100%;font-size:12px;font-weight:500;color:#64748b}
.tgt-amount{font-size:18px !important;font-weight:800 !important}
.tgt-copy{display:inline-grid;place-items:center;width:28px;height:28px;padding:0;border:0;border-radius:8px;background:none;color:#94a3b8;cursor:pointer}
.tgt-copy:hover{color:var(--color-brand-700,#4c22cf);background:var(--color-brand-50,#f3f1ff)}
.tgt-copy .tgt-i{width:14px;height:14px}

/* Notices */
.tgt-note{display:flex;align-items:flex-start;gap:10px;margin:8px 0 0;padding:12px 14px;border-radius:16px;font-size:14px;line-height:1.5}
.tgt-note>.tgt-i{width:18px;height:18px;margin-top:1px}
.tgt-note p{margin:0}
.tgt-note .btn-primary,.tgt-note .btn-sm,.tgt-note .tgt-linkbtn{margin-top:8px;gap:6px}
.tgt-note.is-amber{color:#78350f;background:var(--color-amber-50,#fffbeb)}
.tgt-note.is-green{color:#064e3b;background:var(--color-emerald-50,#ecfdf5)}
.tgt-note.is-red{color:#7f1d1d;background:var(--color-red-50,#fef2f2)}
.tgt-note.is-blue{color:#1e3a8a;background:#eff6ff}
.tgt-note.is-grey{color:#334155;background:#f1f5f9}

/* Progress timeline */
.tgt-steps{margin:0;padding:0;list-style:none}
.tgt-step{position:relative;display:flex;gap:12px;padding-bottom:18px}
.tgt-step:last-child{padding-bottom:0}
.tgt-step:not(:last-child)::before{content:"";position:absolute;left:13px;top:30px;bottom:2px;width:2px;border-radius:2px;background:#e2e8f0}
.tgt-step.is-done:not(:last-child)::before{background:var(--color-emerald-300,#6ee7b7)}
.tgt-step-dot{position:relative;z-index:1;display:grid;flex:none;place-items:center;width:28px;height:28px;border-radius:999px;color:#94a3b8;background:#f1f5f9}
.tgt-step-dot .tgt-i{width:16px;height:16px}
.tgt-step.is-done .tgt-step-dot{color:#fff;background:var(--color-emerald-500,#10b981)}
.tgt-step.is-current .tgt-step-dot{color:var(--color-amber-700,#b45309);background:var(--color-amber-100,#fef3c7);box-shadow:0 0 0 4px var(--color-amber-50,#fffbeb)}
.tgt-step.is-failed .tgt-step-dot{color:#fff;background:var(--color-red-500,#ef4444)}
.tgt-step.is-cancelled .tgt-step-dot{color:#fff;background:#94a3b8}
.tgt-step.is-todo .tgt-step-dot{color:#cbd5e1;background:#fff;box-shadow:inset 0 0 0 2px #e2e8f0}
.tgt-step-text{min-width:0;padding-top:3px}
.tgt-step-t{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0;font-size:14.5px;font-weight:700;color:#0f1222}
.tgt-step.is-todo .tgt-step-t{color:#94a3b8;font-weight:600}
.tgt-step-next{font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#cbd5e1}
.tgt-step time{display:block;margin-top:1px;font-size:12.5px;color:#64748b}
.tgt-step-note{margin:2px 0 0;font-size:13px;color:#64748b}

/* Voucher */
.tgt-voucher.is-ready{border-color:var(--color-brand-100,#e9e5ff);background:linear-gradient(180deg,var(--color-brand-50,#f3f1ff),#fff 180px)}
.tgt-vnum{display:flex;flex-direction:column;gap:2px;margin:0 0 4px;padding:12px 14px;border:1.5px dashed var(--color-brand-200,#d5cdff);border-radius:14px;background:#fff}
.tgt-vnum .label{margin:0}
.tgt-vnum .tgt-mono{font-size:16px;color:#0f1222;overflow-wrap:anywhere}
.tgt-vdownload{display:flex;width:100%;justify-content:center;gap:8px;margin:16px 0 8px}
.tgt-vcode{margin:10px 0 2px;font-size:15px;text-align:center;color:#0f1222}
.tgt-kv{display:grid;gap:8px;margin:14px 0 0}
.tgt-kv div{display:flex;justify-content:space-between;gap:16px;font-size:13.5px}
.tgt-kv dt{flex:none;color:#64748b}
.tgt-kv dd{margin:0;min-width:0;font-weight:600;text-align:right;color:#0f1222;overflow-wrap:anywhere}
.tgt-kv.is-2col{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 24px;margin:0 0 16px}
.tgt-kv.is-2col div{flex-direction:column;gap:2px}
.tgt-kv.is-2col dd{text-align:left}
.tgt-vdocs{margin-top:16px}
.tgt-vdoc{display:flex;align-items:center;gap:10px;margin-top:6px;padding:10px 12px;border:1px solid #e2e8f0;border-radius:14px;font-size:14px;font-weight:600;color:#0f1222;text-decoration:none;transition:border-color .15s ease,background .15s ease}
.tgt-vdoc:hover{border-color:var(--color-brand-300,#b6a6ff);background:var(--color-brand-50,#f3f1ff)}
.tgt-vdoc span{flex:1;min-width:0;overflow-wrap:anywhere}
.tgt-vdoc small{display:block;font-size:12px;font-weight:500;color:#64748b}
.tgt-vdoc .tgt-i{color:var(--color-brand-600,#5b2df0)}

/* Manage booking */
.tgt-acts{display:grid;gap:6px}
.tgt-act{display:flex;align-items:center;gap:12px;width:100%;padding:12px;border:1px solid #eef0f4;border-radius:16px;background:#fff;font:inherit;text-align:left;color:#0f1222;cursor:pointer;transition:border-color .15s ease,background .15s ease}
.tgt-act:hover{border-color:var(--color-brand-200,#d5cdff);background:var(--color-brand-50,#f3f1ff)}
.tgt-act>.tgt-i{width:18px;height:18px;color:var(--color-brand-600,#5b2df0)}
.tgt-act span{flex:1;min-width:0}
.tgt-act b{display:block;font-size:14px}
.tgt-act small{display:block;font-size:12.5px;color:#64748b}
.tgt-act .tgt-chev{color:#cbd5e1}
.tgt-act.is-danger>.tgt-i{color:var(--color-red-600,#dc2626)}
.tgt-act.is-danger:hover{border-color:var(--color-red-200,#fecaca);background:var(--color-red-50,#fef2f2)}
.tgt-manage-note{display:flex;gap:6px;margin:10px 0 0}
.tgt-support{margin-top:18px;padding-top:14px;border-top:1px solid #f1f5f9}
.tgt-help{display:grid;gap:8px}
.tgt-help a{display:inline-flex;align-items:center;gap:8px;font-size:14px;font-weight:600;color:#0f1222;text-decoration:none}
.tgt-help a:hover{color:var(--color-brand-700,#4c22cf)}
.tgt-help a .tgt-i{color:#94a3b8}
.tgt-help p{margin:2px 0 0;font-size:12.5px;color:#64748b}

/* Payment */
.tgt-lines{display:grid;gap:8px;padding:14px 16px;border-radius:16px;background:#f8fafc}
.tgt-line{display:flex;justify-content:space-between;gap:16px;font-size:14px}
.tgt-line span:first-child{min-width:0;color:#334155}
.tgt-line small{display:block;font-size:12px;color:#94a3b8}
.tgt-line span:last-child{flex:none;font-weight:600}
.tgt-line.is-sub{padding-top:8px;border-top:1px solid #e2e8f0}
.tgt-line.is-discount{color:var(--color-emerald-700,#047857)}
.tgt-line.is-discount span:first-child{color:inherit}
.tgt-line.is-total{font-size:16px;font-weight:800}
.tgt-line.is-total span:first-child{color:#0f1222}
.tgt-lines .tgt-small{margin:0}
.tgt-payment .tgt-note{margin-top:14px}
.tgt-refund{margin-top:8px;padding:14px 16px;border-radius:16px;background:#f8fafc}
.tgt-refund-h{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:16px}
.tgt-refund p{margin:4px 0 0}
.tgt-bar{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin:12px 0 4px;padding:0;list-style:none}
.tgt-bar.is-2{grid-template-columns:1fr 1fr}
.tgt-bar li{padding-top:8px;border-top:4px solid #e2e8f0;border-radius:2px;font-size:11.5px;font-weight:700;text-align:center;color:#94a3b8}
.tgt-bar li.is-on{border-color:var(--color-emerald-500,#10b981);color:#0f1222}
.tgt-bar li.is-grey{border-color:#94a3b8;color:#0f1222}

/* Attraction information */
.tgt-vgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 24px}
.tgt-vblock{min-width:0}
.tgt-vblock.is-wide{grid-column:1/-1}
.tgt-vblock h3{display:flex;align-items:center;gap:7px;margin:0 0 6px;font-size:14px;font-weight:800;color:#0f1222}
.tgt-vblock h3 .tgt-i{width:15px;height:15px;color:#94a3b8}
.tgt-vblock p{margin:0 0 6px;font-size:14px;line-height:1.55;color:#334155}
.tgt-vblock .btn-sm{gap:6px;margin-top:4px}
.tgt-list{display:grid;gap:6px;margin:0;padding:0;list-style:none}
.tgt-list li{display:flex;gap:8px;font-size:14px;line-height:1.45;color:#334155}
.tgt-list .tgt-i{width:15px;height:15px;margin-top:2px}
.tgt-list.is-yes .tgt-i{color:var(--color-emerald-600,#059669)}
.tgt-list.is-no .tgt-i{color:#94a3b8}
.tgt-list.is-info .tgt-i{color:var(--color-amber-600,#d97706)}

/* Activity */
.tgt-feed{margin:0;padding:0 0 0 14px;list-style:none;border-left:2px solid #f1f5f9}
.tgt-feed li{position:relative;padding:0 0 14px 14px}
.tgt-feed li:last-child{padding-bottom:0}
.tgt-feed li::before{content:"";position:absolute;left:-21px;top:5px;width:12px;height:12px;border:2px solid #fff;border-radius:999px;background:#cbd5e1}
.tgt-feed li.is-customer::before{background:var(--color-brand-500,#6f45ff)}
.tgt-feed li.is-staff::before{background:#3b82f6}
.tgt-feed li.is-refund::before,.tgt-feed li.is-payment::before{background:var(--color-emerald-500,#10b981)}
.tgt-feed time{font-size:12px;color:#94a3b8}
.tgt-feed p{margin:1px 0 0;font-size:14px;color:#0f1222;overflow-wrap:anywhere}

/* Popups (the .tgts-modal look) */
html.tgt-locked{overflow:hidden}
.tgt-modal{z-index:90}
.tgt-modal .tgts-sheet-body{gap:10px}
.tgt-sheet-wide{width:min(720px,100%)}
.tgt-x{display:grid;flex:none;place-items:center;width:34px;height:34px;padding:0;border:0;border-radius:10px;background:#f1f5f9;color:#475569;cursor:pointer}
.tgt-x:hover{background:#e2e8f0;color:#0f1222}
.tgt-modal .tgts-sheet-foot{flex-wrap:wrap}
.tgt-modal .tgts-sheet-foot .btn-outline,.tgt-modal .tgts-sheet-foot .btn-primary,.tgt-modal .tgts-sheet-foot .btn-danger{gap:6px}
.tgt-modal .tgts-sheet-foot button:disabled{opacity:.55;cursor:not-allowed}
.tgt-options{display:grid;gap:6px}
.tgt-option{display:flex;align-items:center;gap:10px;padding:11px 12px;border:1px solid #e2e8f0;border-radius:14px;font-size:14px;cursor:pointer;transition:border-color .15s ease,background .15s ease}
.tgt-option:has(input:checked){border-color:var(--color-brand-500,#6f45ff);background:var(--color-brand-50,#f3f1ff)}
.tgt-option input{accent-color:var(--color-brand-600,#5b2df0)}
.tgt-option small{margin-left:6px}
.tgt-pay-amt{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:14px 16px;border-radius:16px;background:#f8fafc}
.tgt-pay-amt b{font-size:22px;font-weight:800}
.tgt-refundbox{padding:16px;border-radius:16px}
.tgt-refundbox.is-green{background:var(--color-emerald-50,#ecfdf5)}
.tgt-refundbox.is-amber{background:var(--color-amber-50,#fffbeb)}
.tgt-refundbox p{margin:0}
.tgt-big{font-size:28px;font-weight:800;color:#0f1222}
.tgt-big small{font-size:15px;font-weight:600;color:#64748b}
.tgt-refundbox .tgt-kv{margin:10px 0}
.tgt-row2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.tgt-modal label .label{margin:4px 0}
.tgt-modal .tgt-small .tgt-i{display:inline;vertical-align:-3px;width:14px;height:14px}

.tgt-toast{position:fixed;left:50%;bottom:24px;z-index:95;max-width:calc(100vw - 32px);padding:12px 18px;border-radius:14px;font-size:14px;font-weight:600;color:#fff;background:#0f1222;box-shadow:0 12px 32px -8px rgba(15,18,34,.4);opacity:0;transform:translate(-50%,8px);pointer-events:none;transition:opacity .2s ease,transform .2s ease}
.tgt-toast.is-on{opacity:1;transform:translate(-50%,0)}
.tgt-toast.is-green{background:#065f46}
.tgt-toast.is-red{background:#991b1b}

@media (max-width:1023px){
  .tgt-head,.tgt-head.is-skel{grid-template-columns:240px minmax(0,1fr)}
}
@media (max-width:767px){
  .tgt-toolbar{flex-direction:column;align-items:stretch}
  .tgt-search{max-width:none;flex-basis:auto}
  .tgt-bcard{grid-template-columns:minmax(0,1fr);gap:12px;padding:12px}
  .tgt-bcard-img{min-height:0;height:150px}
  .tgt-bcard .tgt-sub{white-space:normal}
  .tgt-bcard-side{min-width:0;flex-direction:row;flex-wrap:wrap;align-items:center;padding-top:12px;border-top:1px solid #f1f5f9}
  .tgt-total{text-align:left}
  .tgt-actions{flex-direction:row;flex-wrap:wrap}
  .tgt-actions>*{flex:1 1 140px}
  .tgt-skel-img{min-height:150px}
  .tgt-head,.tgt-head.is-skel{grid-template-columns:minmax(0,1fr);gap:16px;padding:14px}
  .tgt-hero{min-height:0;height:180px}
  .tgt-skel-hero{height:180px}
  .tgt-facts{grid-template-columns:repeat(2,minmax(0,1fr));padding:14px}
  .tgt-panel{padding:18px;border-radius:20px}
  .tgt-vgrid{grid-template-columns:minmax(0,1fr)}
  .tgt-kv.is-2col{grid-template-columns:minmax(0,1fr)}
  .tgt-row2{grid-template-columns:1fr}
  .tgt-modal{padding:0;place-items:end stretch}
  .tgt-modal .tgts-sheet{width:100%;max-height:92vh;border-radius:22px 22px 0 0}
}
@media (prefers-reduced-motion:reduce){
  .tgt-bcard,.tgt-tab,.tgt-act,.tgt-option,.tgt-vdoc,.tgt-toast{transition:none}
}

/* ---------- Checkout: traveller details, one card per traveller (web/patches/travelers.js) ---------- */
.tgTravList{display:grid;gap:12px}
.tgTravCard{padding:14px;border:1px solid #eef0f5;border-radius:16px;background:#fff;transition:border-color .15s ease,background-color .15s ease}
.tgTravCard.is-bad{border-color:#fecaca;background:#fffafa}
.tgTravHead{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin-bottom:12px}
.tgTravNum{display:grid;place-items:center;width:28px;height:28px;flex:none;border-radius:999px;background:var(--color-brand-50,#f4f0ff);color:var(--color-brand-700,#4c22cf);font-size:12px;font-weight:800}
.tgTravWho{font-size:14px;font-weight:700;color:#0f1222}
.tgTravRange{margin-left:auto;padding:3px 10px;border-radius:999px;background:#f8fafc;color:#64748b;font-size:12px;font-weight:600;white-space:nowrap}
.tgTravInputs{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px 12px}
.tgTravField{min-width:0}
.tgTravField.is-wide{grid-column:span 2}
.tgTravField label{display:block;margin-bottom:4px;font-size:12px;font-weight:600;color:#475569}
.tgTravField .input{min-width:0}
.tgTravField.is-bad .input{border-color:#f87171}
.tgTravOpt{font-weight:500;color:#94a3b8}
.tgTravFile{display:block;width:100%;min-width:0;padding:6px;border:1px dashed #cbd5e1;border-radius:12px;background:#f8fafc;font-size:13px;color:#475569}
.tgTravFile::file-selector-button{margin-right:10px;padding:6px 14px;border:0;border-radius:999px;background:#fff;color:var(--color-brand-700,#4c22cf);font-weight:600;box-shadow:0 1px 2px rgba(15,18,34,.08);cursor:pointer}
.tgTravField.is-bad .tgTravFile{border-color:#f87171}
@media (max-width:420px){
  .tgTravRange{margin-left:38px}
  .tgTravInputs{grid-template-columns:repeat(2,minmax(0,1fr))}
  .tgTravField.is-wide{grid-column:1/-1}
}

/* ---------- Admin → booking: the travellers and what was collected at checkout (web/patches/travelers.js) ---------- */
.tgTravRows{display:grid;gap:6px}
.tgTravRow{display:flex;flex-wrap:wrap;align-items:center;gap:2px 8px;padding:7px 10px;border-radius:12px;background:#f8fafc;font-size:13px;line-height:1.4;color:#475569}
.tgTravRow b{font-weight:700;color:#0f1222}
.tgTravRow b~span::before{content:"\00b7";margin-right:8px;color:#cbd5e1}
.tgTravRowNum{display:grid;place-items:center;width:20px;height:20px;flex:none;border-radius:999px;background:#ede9fe;color:#4c22cf;font-size:11px;font-weight:800}

/* ---------- Admin → product → Options & pricing popups: tabs (Open / close inventory; Override: Dates & times, Fixed override) ---------- */
.tgts-tabs{display:flex;flex-wrap:wrap;gap:2px 6px;padding:6px 20px 0;border-bottom:1px solid #eef0f5}
.tgts-tabs button{display:inline-flex;align-items:center;gap:6px;margin-bottom:-1px;padding:9px 12px;border:0;border-bottom:2px solid transparent;background:none;font-size:14px;font-weight:700;color:#64748b;cursor:pointer}
.tgts-tabs button:hover{color:#0f1222}
.tgts-tabs button[aria-selected="true"]{border-bottom-color:var(--color-brand-600,#5b2df0);color:var(--color-brand-700,#4c22cf)}
.tgts-tabs svg{width:16px;height:16px;flex:none}
.tgts-pane{display:flex;flex-direction:column;flex:1 1 auto;min-height:0}
.tgts-pane[hidden],.tgts-opane[hidden]{display:none}
.tgts-pane>.tgts-sheet-body{flex:1 1 auto;min-height:0}
.tgts-opane{display:flex;flex-direction:column;gap:6px}
.tgts-fx-row{margin-top:8px;padding:12px 14px;border:1px solid #eef0f5;border-radius:14px;background:#fff}
.tgts-fx-row.is-off{background:#f8fafc}
.tgts-fx-row.is-off .tgts-fx-fields{opacity:.55}
.tgts-fx-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:6px 12px}
.tgts-fx-head .tgts-switch{margin:0}
.tgts-fx-row .tgts-fx-preview{margin:8px 0 0}
.tgts-fixed-badge{display:inline-flex;align-items:center;gap:5px;margin-left:6px;padding:1px 8px;border-radius:999px;background:var(--color-brand-100,#e9e5ff);color:var(--color-brand-700,#4c22cf);font-size:11px;font-weight:800;white-space:nowrap}
.tgts-fixed-badge::before{content:"";width:6px;height:6px;border-radius:999px;background:#10b981}
.tgts-fixed-badge[hidden]{display:none}

/* ---------- Admin → product → Open inventory: the destination's clock and operating hours (tg-admin-slots.js) ---------- */
.tgts-venue{margin:0 0 12px;padding:10px 12px;border-radius:12px;background:#f5f3ff;color:#4c1d95;font-size:12.5px;line-height:1.5}
.tgts-venue b{font-weight:700}

/* ---------- Admin → booking: Reject (and Reschedule) greyed out once the booking is confirmed (web/patches/booking-actions.js) ---------- */
button.tgRejectOff,button.tgRejectOff:disabled{color:#94a3b8;border-color:#e2e8f0;background:#f1f5f9;cursor:not-allowed;opacity:1;box-shadow:none}

/* ---------- Admin: refunds that wait for a super admin (backend services/refunds.js; web/patches/refund-approval.js) ---------- */
.tgRfWait{margin-top:4px;font-size:12px;font-weight:600;line-height:1.45;color:#b45309}
.tgRfRej{margin-top:4px;font-size:12px;line-height:1.45;color:#b91c1c}
/* The request waiting / the rejection, above the booking page's cards (tg-refund-review.js) */
.tgRfReview{margin-bottom:24px}
.tgRfReview[hidden]{display:none}
.tgrv-card{display:flex;align-items:flex-start;gap:14px;padding:16px 18px;border:1px solid;border-radius:18px}
.tgrv-card.is-wait{border-color:#fde68a;background:#fffbeb}
.tgrv-card.is-rejected{border-color:#fecaca;background:#fef2f2}
.tgrv-ic{display:grid;flex:none;width:40px;height:40px;place-items:center;border-radius:999px;color:#b45309;background:#fef3c7}
.tgrv-ic svg{width:20px;height:20px}
.tgrv-who{position:relative;display:grid;flex:none;width:40px;height:40px;place-items:center;border-radius:999px;font-size:13px;font-weight:800;color:#fff;background:linear-gradient(135deg,#6b2fe0,#e0408f)}
.tgrv-who i{position:absolute;right:-4px;bottom:-4px;display:grid;width:20px;height:20px;place-items:center;border:2px solid #fef2f2;border-radius:999px;color:#fff;background:#dc2626}
.tgrv-who i svg{width:12px;height:12px}
.tgrv-main{flex:1;min-width:0}
.tgrv-title{margin:0;font-size:15px;font-weight:800;color:#0f1222}
.tgrv-meta{margin:3px 0 0;font-size:13px;line-height:1.5;color:#475569}
.tgrv-sub{margin:6px 0 0;font-size:12.5px;line-height:1.5;color:#64748b}
.tgrv-quote{margin:8px 0 0;overflow:hidden;font-size:13.5px;font-style:italic;line-height:1.5;color:#7f1d1d;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}
.tgrv-acts{display:flex;flex:none;flex-wrap:wrap;gap:8px}
.tgrv-acts .btn-sm,.tgrv-sheet .tgts-sheet-foot button{display:inline-flex;align-items:center;gap:6px}
.tgrv-acts svg,.tgrv-sheet .tgts-sheet-foot svg{width:15px;height:15px}
@media (max-width:640px){.tgrv-card{flex-wrap:wrap}.tgrv-acts{width:100%;padding-left:54px}}
.tgrv-sheet .tgts-sheet-body{gap:6px}
.tgrv-lead{margin:0 0 4px;font-size:14px;line-height:1.5;color:#334155}
.tgrv-req,.tgrv-opt{font-weight:500;text-transform:none;letter-spacing:0;color:#94a3b8}
.tgrv-note{resize:vertical;min-height:96px}
.tgrv-file{font-size:13px}
.tgrv-picked{margin:2px 0 0;font-size:12px;color:#475569}
.tgrv-picked.is-bad,.tgrv-err{color:#b91c1c}
.tgrv-err{margin:6px 0 0;font-size:13px;font-weight:600}
.tgrv-err[hidden],.tgrv-picked[hidden]{display:none}
.tgrv-facts{display:grid;grid-template-columns:max-content 1fr;gap:4px 14px;margin:0;font-size:13.5px}
.tgrv-facts dt{color:#64748b}
.tgrv-facts dd{margin:0;color:#0f1222;font-weight:600}
.tgrv-note-full{margin:0;padding:10px 12px;border-radius:12px;font-size:14px;line-height:1.55;white-space:pre-wrap;color:#7f1d1d;background:#fef2f2}
.tgrv-shots{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:8px}
.tgrv-shot{display:block;overflow:hidden;aspect-ratio:4/3;border:1px solid #e2e8f0;border-radius:12px;background:#f8fafc}
.tgrv-shot img{width:100%;height:100%;object-fit:cover}
.tgrv-doc{display:flex;align-items:center;gap:6px;padding:10px;border:1px solid #e2e8f0;border-radius:12px;font-size:12.5px;color:#334155;word-break:break-all}
.tgrv-doc svg{width:16px;height:16px;flex:none}
.tgrv-none{margin:0;font-size:13px;color:#64748b}
.tgrv-add{margin-top:6px;padding-top:10px;border-top:1px dashed #e2e8f0}
.tgrv-hint{margin:10px 0 0;font-size:12.5px;color:#64748b}
.tgrv-toast{position:fixed;left:50%;bottom:24px;z-index:96;max-width:min(560px,calc(100vw - 32px));padding:12px 18px;border-radius:14px;font-size:14px;font-weight:600;color:#fff;background:#0f1222;box-shadow:0 18px 40px -18px rgba(15,18,34,.6);transform:translateX(-50%)}
.tgrv-toast.is-bad{background:#b91c1c}

/* ---------- Admin → Google Things to do: the Spotinga card (tg-spotinga.js) ---------- */
.tgSpotinga{margin-bottom:24px}
.tgSpotinga:empty{display:none}
.tgsp-card{padding:18px 20px}
.tgsp-head{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}
.tgsp-brand{display:flex;align-items:flex-start;gap:12px;min-width:0;flex:1 1 320px}
.tgsp-logo{display:grid;flex:none;width:40px;height:40px;place-items:center;border-radius:12px;font-size:18px;font-weight:800;color:#fff;background:linear-gradient(135deg,#0ea5e9,#2563eb)}
.tgsp-title{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0;font-size:16px;font-weight:800;color:#0f1222}
.tgsp-sub{margin:3px 0 0;font-size:13px;line-height:1.5;color:#64748b}
.tgsp-acts{display:flex;flex-wrap:wrap;gap:8px}
.tgsp-acts .btn-sm,.tgsp-sheet .tgts-sheet-foot button{display:inline-flex;align-items:center;gap:6px}
.tgsp-acts svg,.tgsp-sheet .tgts-sheet-foot svg{width:15px;height:15px}
.tgsp-chip{display:inline-flex;align-items:center;padding:2px 9px;border-radius:999px;font-size:11.5px;font-weight:700;white-space:nowrap}
.tgsp-chip.is-live{color:#047857;background:#ecfdf5}
.tgsp-chip.is-wait{color:#92400e;background:#fffbeb}
.tgsp-chip.is-bad{color:#b91c1c;background:#fef2f2}
.tgsp-chip.is-muted{color:#475569;background:#f1f5f9}
.tgsp-note{margin:12px 0 0;padding:10px 12px;border-radius:12px;font-size:13px;line-height:1.5;color:#92400e;background:#fffbeb}
.tgsp-note.is-bad{color:#b91c1c;background:#fef2f2}
.tgsp-empty{margin:12px 0 0;font-size:13.5px;line-height:1.55;color:#475569}
.tgsp-stats{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;margin-top:14px}
@media (max-width:1200px){.tgsp-stats{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:900px){.tgsp-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}
.tgsp-stat{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:10px 12px;border:1px solid #eef0f4;border-radius:14px;background:#f8fafc;font:inherit;text-align:left;cursor:pointer;transition:border-color .15s ease,background .15s ease}
.tgsp-stat:hover{border-color:#cbd5e1}
.tgsp-stat.is-on{border-color:var(--color-brand-500,#6f45ff);background:var(--color-brand-50,#f5f3ff)}
.tgsp-stat b{font-size:20px;font-weight:800;color:#0f1222}
.tgsp-stat span{font-size:12px;color:#64748b}
.tgsp-list{margin-top:14px;border-top:1px solid #f1f5f9;padding-top:10px}
.tgsp-list summary{cursor:pointer;font-size:13.5px;font-weight:700;color:#334155}
.tgsp-list summary a{margin-left:6px;font-weight:600;color:var(--color-brand-700,#4c22cf)}
.tgsp-tbl{margin-top:8px}
.tgsp-tbl td{vertical-align:top;font-size:13px}
.tgsp-tbl code,.tgsp-res code{font-size:11.5px;color:#64748b}
.tgsp-msg{max-width:420px;color:#475569}
.tgsp-act{width:1%;white-space:nowrap}
.tgsp-one{display:inline-flex;align-items:center;gap:6px}
.tgsp-one svg{width:14px;height:14px}
.tgsp-one:disabled{opacity:.45;cursor:not-allowed}
.tgsp-sheet .tgts-sheet-body{gap:4px}
.tgsp-help{margin:2px 0 6px;font-size:12px;color:#64748b}
.tgsp-check{display:flex;align-items:flex-start;gap:8px;margin-top:8px;font-size:13.5px;color:#0f1222}
.tgsp-check span{color:#64748b}
.tgsp-err,.tgsp-ok{margin:8px 0 0;font-size:13px;font-weight:600}
.tgsp-err{color:#b91c1c}
.tgsp-ok{color:#047857}
.tgsp-err[hidden],.tgsp-ok[hidden]{display:none}
.tgsp-lead{margin:0 0 6px;font-size:14px;line-height:1.5;color:#334155}
.tgsp-results{display:flex;flex-direction:column;gap:8px;max-height:46vh;overflow-y:auto}
.tgsp-res{padding:8px 10px;border:1px solid #f1f5f9;border-radius:12px;font-size:13px}
.tgsp-res .tgsp-chip{margin-right:6px}
.tgsp-res p{margin:4px 0 0;color:#475569}

/* "Are you sure?" popup over an admin popup (tg-home.js 11c, window.tgConfirm): above the React popups (z-index 70) */
.tgcf-modal{z-index:95}
.tgcf-sheet .tgts-sheet-body{gap:8px}
.tgcf-lead{margin:0;font-size:15px;font-weight:600;line-height:1.5;color:#0f1222}
.tgcf-more{margin:0;font-size:13px;line-height:1.5;color:#475569}
.tgcf-sheet .tgts-sheet-foot{flex-wrap:wrap}
/* the sidebar's "Refunds" item: how many wait for approval (tg-home.js 11b, refund approvers) */
nav a[href="/admin/refunds"][data-tg-count]::after{content:attr(data-tg-count);margin-left:auto;min-width:20px;padding:0 6px;border-radius:999px;background:var(--color-coral-500,#f43f5e);color:#fff;font-size:11px;font-weight:800;line-height:18px;text-align:center}

/* ---------- Admin → product: one currency, chosen in Basics; tier currencies greyed out (web/patches/product-currency.js) ---------- */
.tgCurCell{display:flex;flex-direction:column;align-items:flex-start;gap:2px}
select.tgCurLocked,select.tgCurLocked:disabled{-webkit-appearance:none;appearance:none;min-width:64px;padding-left:10px;padding-right:10px;background-color:#f1f5f9;background-image:none;color:#64748b;border-color:#e2e8f0;font-weight:600;text-align:center;cursor:not-allowed;opacity:1}
.tgCurWas{font-size:11px;font-weight:600;color:#b45309;white-space:nowrap}
.tgCurWarn{font-weight:600;color:#b45309}
/* Options & pricing → "Enter prices in" (web/patches/entry-currency.js): amber while prices are typed in another currency */
.tgFxBar{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;padding:12px 16px;border:1px solid #e2e8f0;border-radius:16px;background:#fff}
.tgFxBar.is-on{border-color:#fcd34d;background:#fffbeb}
.tgFxPick{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:0}
.tgFxPick .label{margin:0;white-space:nowrap}
.tgFxPick select{width:auto;min-width:min(240px,100%);max-width:100%}
.tgFxNote{flex:1 1 280px;margin:0;font-size:13px;line-height:1.45;color:#475569}
.tgFxBar.is-on .tgFxNote{color:#92400e}
.tgFxCell{display:flex;flex-direction:column;align-items:flex-start;gap:2px}
.tgFxSaved{font-size:11px;font-weight:600;color:#64748b;white-space:nowrap}
.tgts-fxnote{margin:0 0 8px;color:#92400e}
.tgts-sheet .tgts-fxnote{margin:8px 0 0}

/* ---------- Admin → product: traveller details and ticket type ranges (tg-admin-travelers.js) ---------- */
.tgTravFields,.tgTravRanges{min-height:58px}
section.tgTravFields{margin-top:20px}
.tgtr-sub{margin-top:2px;font-size:13px;font-weight:400;color:#64748b}
.tgtr-actions{display:flex;flex:none;align-items:center;gap:10px}
.tgtr-note{font-size:12px;font-weight:600;color:#059669}
.tgtr-note.is-bad{color:#b91c1c}
.tgtr-note:empty{display:none}
.tgtr-rows{display:grid;gap:8px}
.tgtr-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 24px;padding:12px 14px;border:1px solid #f1f5f9;border-radius:14px}
.tgtr-name{display:flex;flex:1;flex-direction:column;min-width:200px}
.tgtr-name b{font-size:14px;color:#0f1222}
.tgtr-name span{font-size:12px;color:#64748b}
.tgtr-toggles{display:flex;flex-wrap:wrap;gap:12px 22px}
.tgtr-switch{min-width:124px}
.tgtr-switch.is-off{opacity:.45;cursor:not-allowed}
.tgtr-switch button:disabled{cursor:not-allowed}
.tgtr-tbl input.is-bad{border-color:#f87171;background:#fef2f2}
.tgtr-err{padding:10px 12px;border-radius:12px;background:#fef2f2;color:#b91c1c;font-size:13px}
.tgtr-retry{margin-left:6px;font-weight:700;text-decoration:underline}

/* ---------- My bookings and the booking page: steady while loading (tg-trips.js) ---------- */
/* The pages keep their height while they load, so the footer never jumps up and back down during navigation. */
.tgTrips{min-height:70vh}
.tgTripPage{min-height:70vh}
.tgt-count[hidden]{display:none}
/* Another filter or search loading: the cards already shown stay, dimmed, until the new ones replace them. */
.tgt-results{transition:opacity .15s ease}
.tgt-results.is-stale{opacity:.55;pointer-events:none}
/* React's own cards (SOS, documents, review) appear with the booking, not under a placeholder that then grows. */
.tgTripPage:has(> .tgTrip:empty) .tgTripExtras,.tgTripPage:has(.tgt-head.is-skel) .tgTripExtras{visibility:hidden}
/* Booking page: the travellers and what was asked at checkout */
#travellers{margin-top:20px}
.tgt-trav{display:grid;gap:8px;margin:0;padding:0;list-style:none}
.tgt-trav li{display:flex;align-items:flex-start;gap:12px;padding:10px 12px;border-radius:14px;background:#f8fafc}
.tgt-trav-n{display:grid;place-items:center;width:26px;height:26px;flex:none;border-radius:999px;background:var(--color-brand-50,#f4f0ff);color:var(--color-brand-700,#4c22cf);font-size:12px;font-weight:800}
.tgt-trav b{display:block;font-size:14px;color:#0f1222}
.tgt-trav small{display:block;margin-top:1px;font-size:13px;color:#64748b}
@media (prefers-reduced-motion:reduce){.tgt-results{transition:none}}
