h2.page-header {
  margin: 10px 0 25px 0;
  padding-bottom: 15px;
}
.user-baseinfo {
  margin-bottom: 25px;
}
.user-baseinfo table tr td {
  color: #999;
}
@media (min-width: 992px) {
  .user-center .avatar-text,
  .user-center .avatar-img {
    height: 150px;
    width: 150px;
    border-radius: 150px;
    line-height: 150px;
    font-size: 70px;
  }
  .user-center .avatar-img {
    font-size: 0;
  }
  .user-center .avatar-img img {
    height: 150px;
    width: 150px;
    border-radius: 150px;
  }
}
.sidebar-toggle {
  display: none;
}
@media (max-width: 991px) {
  .sidenav {
    position: fixed;
    top: 50px;
    z-index: 1029;
    height: calc(100vh - 50px);
    padding: 20px 0 20px 0;
    min-width: 250px;
    overflow-y: auto;
    overflow-x: hidden;
    width: 250px;
    left: -250px;
    -webkit-transition: all 0.3s ease;
    -moz-transition: all 0.3s ease;
    -o-transition: all 0.3s ease;
    transition: all 0.3s ease;
  }
  .sidebar-toggle {
    display: block;
    position: fixed;
    right: 20px;
    bottom: 70px;
    border-radius: 50%;
    background: #eee;
    font-size: 22px;
    padding: 10px;
    line-height: 30px;
    height: 50px;
    width: 50px;
    text-align: center;
    z-index: 999999;
  }
}
body.sidebar-open .sidenav {
  left: 0;
  width: 250px;
  box-shadow: 0 6px 27px rgba(0, 0, 0, 0.075);
}
body.sidebar-open .sidebar-toggle i:before {
  content: "\f00d";
}

/* Playful Tours front template */
.pt-site {
  padding-top: 72px;
  background: #f5f8fb;
  color: #142033;
  font-family: "Microsoft YaHei", Arial, sans-serif;
}
.pt-site .content {
  padding: 0;
  /* 为右侧固定联络条留白，避免盖住「立刻预约 / 了解更多」与详情栏下单按钮 */
  padding-right: 72px;
  overflow: visible;
  min-height: calc(100vh - 370px);
}
@media (max-width: 480px) {
  .pt-site .content {
    padding-right: 56px;
  }
}
.pt-header {
  position: fixed;
  top: 0;
  right: 0;
  left: 0;
  z-index: 1030;
  height: 72px;
  background: rgba(255,255,255,.96);
  border-bottom: 1px solid rgba(20,32,51,.12);
  box-shadow: 0 3px 18px rgba(15,38,61,.08);
}
.pt-header-inner {
  max-width: 1280px;
  height: 72px;
  margin: 0 auto;
  padding: 0 26px;
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.pt-logo {
  display: flex;
  align-items: center;
  gap: 8px;
  color: #111;
  text-decoration: none !important;
  flex-shrink: 0;
  margin-right: 24px;
}
.pt-logo-mark {
  width: 42px;
  height: 32px;
  border-radius: 50%;
  display: inline-block;
  background:
    radial-gradient(circle at 78% 70%, #f4c84a 0 12%, transparent 13%),
    conic-gradient(from 205deg, #6247aa, #22a7f0, #48c774, #f3c13a, #e46d5f, #6247aa);
  -webkit-mask: radial-gradient(circle at 65% 55%, transparent 0 40%, #000 41%);
  mask: radial-gradient(circle at 65% 55%, transparent 0 40%, #000 41%);
}
.pt-logo-img {
  width: auto;
  max-width: 130px;
  height: 42px;
  object-fit: contain;
}
.pt-logo-text {
  display: flex;
  flex-direction: column;
  line-height: 1;
}
.pt-logo-text strong {
  font-size: 17px;
  font-weight: 800;
}
.pt-logo-text small {
  margin-top: 2px;
  font-size: 8px;
  letter-spacing: .7px;
  color: #546477;
}
.pt-nav {
  display: flex !important;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  padding: 0;
  flex: 1;
  flex-wrap: wrap;
}
.pt-nav-link {
  color: #333;
  font-size: 14px;
  white-space: nowrap;
  text-decoration: none !important;
  padding: 10px 18px;
  border-radius: 10px;
  transition: background 0.15s ease, color 0.15s ease;
}
.pt-nav-link:hover {
  color: #6f9bbd;
  background: rgba(111, 155, 189, 0.1);
}
.pt-nav-link--active {
  font-weight: 700;
  color: #111 !important;
  background: transparent;
}
.pt-lang-switch {
  position: relative;
  display: inline-flex;
  align-items: center;
  cursor: default;
  padding: 10px 18px;
  margin-right: 4px;
}
.pt-lang-menu {
  position: absolute;
  top: 100%;
  left: 50%;
  transform: translateX(-50%);
  min-width: 132px;
  padding: 8px;
  margin-top: 14px;
  border-radius: 12px;
  background: #fff;
  box-shadow: 0 12px 28px rgba(20,49,78,.16);
  opacity: 0;
  visibility: hidden;
  transition: all .18s ease;
}
.pt-lang-menu:before {
  content: "";
  position: absolute;
  top: -14px;
  left: 0;
  right: 0;
  height: 14px;
}
.pt-lang-switch:hover .pt-lang-menu {
  opacity: 1;
  visibility: visible;
}
.pt-lang-menu a {
  display: block;
  padding: 9px 12px;
  border-radius: 8px;
  color: #2a3545;
  font-size: 13px;
  text-decoration: none;
}
.pt-lang-menu a:hover {
  background: #f1f7fb;
  color: #6f9bbd;
}
.pt-menu-toggle {
  display: none;
  width: 42px;
  height: 34px;
  border: 0;
  background: transparent;
  padding: 0;
}
.pt-menu-toggle span {
  display: block;
  height: 2px;
  margin: 7px 5px;
  background: #1a2a3d;
}
.pt-floating-contact {
  position: fixed;
  right: 18px;
  top: 65%;
  transform: translateY(-50%);
  z-index: 1029;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 14px;
}
.pt-float-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 5px;
  color: #253244;
  font-size: 13px;
  text-decoration: none !important;
}
.pt-float-icon {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #fff;
  font-size: 13px;
  box-shadow: 0 5px 14px rgba(0,0,0,.22);
  border: 4px solid rgba(255,255,255,.85);
  overflow: hidden;
}
.pt-float-icon img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.pt-float-icon.line,
.pt-float-icon.whatsapp,
.pt-float-icon.contact-1,
.pt-float-icon.contact-4 {
  background: #51c83e;
}
.pt-float-icon.wechat,
.pt-float-icon.contact-2 {
  background: #67d96b;
}
.pt-float-icon.messenger,
.pt-float-icon.contact-3 {
  background: linear-gradient(135deg, #8348ff, #00a6ff);
}
.pt-footer {
  clear: both;
  background: linear-gradient(120deg, #17465c 0%, #2c7a8c 55%, #2f8795 100%);
  color: rgba(255,255,255,.82);
  padding-top: 34px;
}
.pt-footer-inner {
  max-width: 1020px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1.45fr .55fr .55fr;
  gap: 70px;
  padding: 0 24px 34px;
}
.pt-footer h4 {
  margin: 0 0 18px;
  color: #f0d36c;
  font-size: 15px;
  font-weight: 700;
  text-transform: uppercase;
}
.pt-footer p {
  margin: 7px 0;
  font-size: 13px;
}
.pt-footer-links {
  padding-top: 28px;
  display: flex;
  flex-direction: column;
  gap: 13px;
}
.pt-footer-links a,
.pt-copyright a {
  color: rgba(255,255,255,.86);
  text-decoration: none;
}
.pt-footer-links a:hover,
.pt-copyright a:hover {
  color: #fff;
}
.pt-copyright {
  margin: 0;
  padding: 16px 20px 18px;
  border-top: 1px solid rgba(255,255,255,.18);
  text-align: center;
  font-size: 12px;
  color: rgba(255,255,255,.68);
}
.pt-hero {
  background: #edf6fb;
}
.pt-hero-bg {
  min-height: 630px;
  position: relative;
  overflow: hidden;
  background:
    radial-gradient(circle at 22% 24%, rgba(255,255,255,.85), transparent 28%),
    linear-gradient(90deg, rgba(229,246,250,.95), rgba(205,225,236,.72)),
    url("../img/success.svg");
  background-size: auto, auto, 220px 220px;
}
.pt-hero-bg:before,
.pt-hero-bg:after {
  content: "";
  position: absolute;
  bottom: -60px;
  width: 360px;
  height: 360px;
  background: radial-gradient(circle, rgba(42,108,95,.32), transparent 65%);
}
.pt-hero-bg:before { left: -90px; }
.pt-hero-bg:after { right: -90px; }
.pt-hero-content {
  position: relative;
  z-index: 2;
  padding-top: 66px;
  text-align: center;
}
.pt-hero-kicker {
  font-size: 18px;
  letter-spacing: 9px;
  color: #4d6780;
}
.pt-hero h1 {
  margin: 16px 0 18px;
  font-size: 62px;
  line-height: 1.12;
  font-weight: 900;
  color: #112947;
}
.pt-hero h1 span {
  font-size: 68px;
}
.pt-hero h1 em {
  color: #cf9146;
  font-family: Georgia, serif;
  font-size: 38px;
}
.pt-hero-subtitle {
  font-size: 18px;
  font-weight: 700;
  letter-spacing: 5px;
}
.pt-hero-btn {
  margin-top: 24px;
  display: inline-block;
  padding: 12px 30px;
  border-radius: 999px;
  background: #7fa7c7;
  color: #fff;
  text-decoration: none !important;
  box-shadow: 0 8px 20px rgba(82,132,170,.24);
}
.pt-hero-figures {
  position: absolute;
  right: 18%;
  bottom: 0;
  left: 18%;
  z-index: 1;
  height: 360px;
}
.figure {
  position: absolute;
  bottom: 0;
  width: 170px;
  height: 310px;
  border-radius: 90px 90px 0 0;
  background: linear-gradient(#fff, #e7eef2);
  box-shadow: 0 -20px 80px rgba(255,255,255,.75), inset 0 0 0 1px rgba(20,32,51,.05);
}
.figure:before {
  content: "";
  position: absolute;
  top: -42px;
  left: 50%;
  width: 84px;
  height: 84px;
  margin-left: -42px;
  border-radius: 50%;
  background: linear-gradient(#f7d5c4, #e9b7a5);
}
.figure-a { left: 12%; transform: rotate(-8deg) scale(.92); }
.figure-b { left: 42%; transform: scale(1.08); }
.figure-c { right: 10%; transform: rotate(7deg) scale(.95); }
.pt-home-section {
  background: #fff;
  padding: 78px 20px 90px;
  text-align: center;
}
.pt-home-section h2 {
  margin: 0 0 36px;
  color: #555;
  font-size: 28px;
  font-weight: 700;
}
.pt-guide-cards {
  max-width: 980px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 22px;
}
.pt-guide-card {
  padding: 26px;
  border-radius: 18px;
  background: #fff;
  box-shadow: 0 12px 32px rgba(36,74,102,.1);
  text-align: left;
}
.pt-guide-card strong,
.pt-guide-card span {
  display: block;
}
.pt-guide-card strong {
  font-size: 18px;
  color: #142033;
}
.pt-guide-card span {
  margin-top: 8px;
  color: #7b8794;
}
/* -------- 首页：热门导游 / 主题行程推荐 -------- */
.pt-home-featured {
  max-width: 1120px;
  margin: 0 auto;
  padding: 52px 18px 68px;
  background: #fff;
}
.pt-home-featured-trips {
  background: #f7fbfd;
  border-top: 1px solid #e8eef3;
}
.pt-home-featured-toolbar {
  position: relative;
  text-align: center;
  margin-bottom: 28px;
  min-height: 44px;
}
.pt-home-featured-h2 {
  margin: 0;
  font-size: 26px;
  font-weight: 700;
  color: #3a4750;
  letter-spacing: 1px;
}
.pt-home-featured-more {
  position: absolute;
  left: 0;
  top: 50%;
  transform: translateY(-50%);
  display: inline-block;
  padding: 8px 14px;
  border-radius: 999px;
  border: 1px solid #c5d6e4;
  background: #fff;
  color: #3d6f9a !important;
  font-size: 13px;
  font-weight: 600;
  text-decoration: none !important;
  box-shadow: 0 2px 8px rgba(36, 74, 102, 0.06);
}
.pt-home-featured-more:hover {
  border-color: #7fa7c7;
  color: #255a82 !important;
}
.pt-home-featured-more--muted {
  cursor: default;
  opacity: 0.75;
  box-shadow: none;
}
.pt-hot-guide-cards {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 22px;
  align-items: stretch;
}
.pt-hot-guide-card {
  background: #fff;
  border-radius: 16px;
  padding: 20px 18px 22px;
  box-shadow: 0 12px 36px rgba(36, 74, 102, 0.1);
  text-align: center;
  border: 1px solid rgba(20, 32, 51, 0.04);
}
.pt-hot-guide-photoWrap {
  position: relative;
  width: 168px;
  height: 168px;
  margin: 0 auto 14px;
}
.pt-hot-guide-photo {
  width: 168px;
  height: 168px;
  border-radius: 50%;
  object-fit: cover;
  display: block;
  background: linear-gradient(#f0f4f8, #e2e9ef);
}
.pt-hot-guide-photo--placeholder {
  border: 2px dashed #d0dae3;
}
.pt-hot-guide-badge {
  position: absolute;
  top: 4px;
  right: 4px;
  padding: 3px 8px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 700;
  color: #fff;
  background: linear-gradient(135deg, #e8c36a 0%, #c45a41 55%, #9a3826 100%);
  box-shadow: 0 2px 10px rgba(180, 80, 50, 0.35);
  white-space: nowrap;
  max-width: 96px;
  overflow: hidden;
  text-overflow: ellipsis;
}
.pt-hot-guide-name {
  display: inline-block;
  margin: 0 auto 12px;
  padding: 6px 16px;
  border-radius: 8px;
  background: rgba(127, 167, 199, 0.22);
  color: #1e4a63;
  font-weight: 800;
  font-size: 16px;
}
.pt-hot-guide-langs {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  justify-content: center;
  margin-bottom: 10px;
}
.pt-hot-guide-lang {
  padding: 2px 10px;
  border-radius: 6px;
  border: 1px solid #c8d9e8;
  font-size: 12px;
  color: #546e7a;
  font-weight: 600;
}
.pt-hot-guide-area,
.pt-hot-guide-price,
.pt-hot-guide-reviews {
  margin: 6px 0;
  font-size: 13px;
  color: #5f6f7e;
  line-height: 1.55;
}
.pt-hot-guide-price {
  font-weight: 700;
  color: #37474f;
}
.pt-hot-guide-reviews {
  font-size: 12px;
  color: #7b8794;
}
.pt-hot-guide-book {
  margin-top: 14px;
  display: inline-block;
  padding: 10px 28px;
  border-radius: 999px;
  background: #7fa7c7;
  color: #fff !important;
  font-weight: 700;
  font-size: 14px;
  text-decoration: none !important;
  box-shadow: 0 8px 20px rgba(82, 132, 170, 0.28);
}
.pt-hot-guide-book:hover {
  background: #6b96bb;
}
.pt-hot-guide-book--disabled {
  opacity: 0.45;
  cursor: default;
  box-shadow: none;
}
.pt-themed-trip-cards {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 18px;
  align-items: stretch;
}
.pt-themed-trip-shell {
  min-width: 0;
}
.pt-themed-trip-card {
  display: block;
  height: 100%;
  background: #fff;
  border-radius: 14px;
  overflow: hidden;
  box-shadow: 0 10px 28px rgba(36, 74, 102, 0.1);
  text-decoration: none !important;
  color: inherit;
  border: 1px solid rgba(20, 32, 51, 0.05);
  transition: transform 0.15s ease, box-shadow 0.15s ease;
}
a.pt-themed-trip-card:hover {
  transform: translateY(-3px);
  box-shadow: 0 14px 36px rgba(36, 74, 102, 0.16);
}
.pt-themed-trip-img {
  height: 132px;
  background: linear-gradient(120deg, #dfe9f3, #cfdce8);
  background-size: cover;
  background-position: center;
}
.pt-themed-trip-title {
  display: block;
  margin: 14px 14px 8px;
  font-size: 14px;
  line-height: 1.45;
  color: #1a2936;
}
.pt-themed-trip-desc {
  margin: 0 14px 12px;
  font-size: 13px;
  color: #6f7d8c;
  line-height: 1.55;
}
.pt-themed-trip-price {
  margin: 0 14px 16px;
  font-size: 14px;
  font-weight: 800;
  color: #d32f2f;
}
@media (max-width: 1024px) {
  .pt-themed-trip-cards {
    grid-template-columns: repeat(2, 1fr);
  }
  .pt-home-featured-more {
    position: static;
    transform: none;
    display: inline-flex;
    margin-bottom: 12px;
  }
  .pt-home-featured-toolbar {
    display: flex;
    flex-direction: column;
    align-items: center;
  }
}
@media (max-width: 760px) {
  .pt-hot-guide-cards {
    grid-template-columns: 1fr;
    max-width: 360px;
    margin: 0 auto;
  }
  .pt-themed-trip-cards {
    grid-template-columns: 1fr;
  }
}
.pt-link-section {
  background: #f7fbfd;
  padding: 58px 20px 72px;
}
.pt-link-grid {
  max-width: 980px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 18px;
}
.pt-link-grid > div,
.pt-link-grid > a.pt-link-cell {
  min-height: 120px;
  padding: 24px;
  border-radius: 16px;
  background: #fff;
  box-shadow: 0 10px 26px rgba(36,74,102,.08);
  display: block;
  text-decoration: none;
  color: inherit;
  transition: transform 0.15s ease, box-shadow 0.15s ease;
}
.pt-link-grid > a.pt-link-cell:hover {
  transform: translateY(-2px);
  box-shadow: 0 14px 32px rgba(36,74,102,.11);
}
.pt-link-grid strong,
.pt-link-grid span {
  display: block;
}
.pt-link-grid strong {
  font-size: 17px;
  color: #15263a;
}
.pt-link-grid span {
  margin-top: 10px;
  color: #6f7d8c;
  line-height: 1.7;
}
.pt-auth-page {
  --pt-auth-accent: #4f8fc4;
  --pt-auth-accent-deep: #3d7eae;
  --pt-auth-accent-ring: rgba(79, 143, 196, 0.22);
  --pt-auth-accent-shadow: rgba(79, 143, 196, 0.32);
  min-height: calc(100vh - 72px);
  padding: 28px 20px 72px;
  background:
    radial-gradient(circle at 12% 0%, rgba(23, 70, 92, 0.07), transparent 42%),
    radial-gradient(circle at 92% 22%, rgba(44, 122, 140, 0.09), transparent 40%),
    linear-gradient(180deg, #eef4f7 0%, #f5f8fb 50%, #eef2f6 100%);
}
.pt-auth-page--guide {
  --pt-auth-accent: #23a55d;
  --pt-auth-accent-deep: #198049;
  --pt-auth-accent-ring: rgba(35, 165, 93, 0.22);
  --pt-auth-accent-shadow: rgba(35, 165, 93, 0.34);
}
.pt-auth-title {
  text-align: center;
  margin: 8px 0 28px;
}
.pt-auth-title h1 {
  margin: 0;
  font-size: clamp(22px, 2.6vw, 30px);
  font-weight: 800;
  letter-spacing: -0.02em;
  color: #101828;
}
.pt-auth-title-sub {
  margin: 10px 0 0;
  color: #64748b;
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}
.pt-auth-shell {
  max-width: 1080px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 28px;
  align-items: stretch;
}
.pt-auth-card {
  min-height: 560px;
  border-radius: 20px;
  background: #fff;
  border: 1px solid rgba(23, 70, 92, 0.08);
  box-shadow: 0 24px 56px rgba(23, 70, 92, 0.1);
  padding: 22px 24px 28px;
}
.pt-auth-tabs {
  display: grid;
  grid-template-columns: 1fr 1fr;
  padding: 6px;
  border-radius: 999px;
  background: rgba(23, 70, 92, 0.06);
  margin-bottom: 22px;
}
.pt-auth-tabs a {
  height: 44px;
  line-height: 44px;
  border-radius: 999px;
  text-align: center;
  color: #334155;
  font-weight: 700;
  font-size: 14px;
  text-decoration: none !important;
  transition: background 0.2s ease, color 0.2s ease, box-shadow 0.2s ease;
}
.pt-auth-tabs a.active {
  background: linear-gradient(
    135deg,
    var(--pt-auth-accent) 0%,
    var(--pt-auth-accent-deep) 100%
  );
  color: #fff;
  box-shadow: 0 10px 22px var(--pt-auth-accent-shadow);
}
.pt-auth-form h2 {
  margin: 0 0 8px;
  font-size: 20px;
  font-weight: 800;
  color: #0f172a;
}
.pt-auth-desc {
  margin: 0 0 18px;
  color: #64748b;
  font-size: 13px;
  line-height: 1.55;
}
.pt-auth-binding-hint {
  margin: -10px 0 16px;
  padding: 10px 12px;
  border-radius: 10px;
  background: rgba(100, 116, 139, 0.06);
  border: 1px solid rgba(100, 116, 139, 0.12);
  color: #64748b;
  font-size: 12px;
  line-height: 1.55;
}
.pt-auth-divider {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 18px 0 12px;
  color: #94a3b8;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.06em;
}
.pt-auth-divider::before,
.pt-auth-divider::after {
  content: "";
  flex: 1;
  height: 1px;
  background: #e2e8f0;
}
.pt-form-row {
  margin-bottom: 14px;
}
.pt-form-row label {
  display: block;
  margin-bottom: 7px;
  font-size: 13px;
  color: #1f2937;
}
.pt-input {
  height: 42px;
  border: 1px solid #e2e8f0;
  border-radius: 12px;
  background: #fff;
  box-shadow: none;
  box-sizing: border-box;
  line-height: 1.5;
}
/* 导游注册等与 Bootstrap `.form-control` 同用时避免高度被压在 33px */
.pt-auth-form select.form-control.pt-input {
  height: auto;
  min-height: 44px;
  line-height: 1.5;
  padding-top: 10px;
  padding-bottom: 10px;
  padding-right: 32px;
}
.pt-input:focus {
  border-color: var(--pt-auth-accent);
  box-shadow: 0 0 0 3px var(--pt-auth-accent-ring);
}
.pt-auth-options {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin: 2px 0 14px;
  font-size: 13px;
}
.pt-auth-options a {
  color: var(--pt-auth-accent-deep);
}
.pt-primary-btn {
  width: 100%;
  height: 46px;
  border: 0;
  border-radius: 12px;
  background: linear-gradient(
    135deg,
    var(--pt-auth-accent) 0%,
    var(--pt-auth-accent-deep) 100%
  );
  color: #fff;
  font-weight: 800;
  box-shadow: 0 10px 22px var(--pt-auth-accent-shadow);
  transition: filter 0.15s ease;
}
.pt-primary-btn:hover {
  filter: brightness(1.06);
}
.pt-social-btn {
  width: 100%;
  height: 42px;
  margin-top: 12px;
  border: 1px solid #e2e8f0;
  border-radius: 13px;
  background: #fff;
  color: #1f2937;
  font-weight: 700;
}
a.pt-social-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  text-decoration: none;
  box-sizing: border-box;
}
.pt-social-btn span {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin-right: 12px;
  min-width: 30px;
  color: #4285f4;
  font-weight: 900;
}
.pt-social-btn.line span {
  color: #35bf4f;
}
.pt-register-box {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin: 16px 0 4px;
  padding: 13px 14px;
  border-radius: 14px;
  background: #f8fafc;
  border: 1px solid rgba(23, 70, 92, 0.06);
}
.pt-register-box strong {
  display: block;
  font-size: 13px;
}
.pt-register-box p {
  margin: 5px 0 0;
  color: #778393;
  font-size: 11px;
  line-height: 1.45;
}
.pt-register-box a,
.pt-login-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  white-space: nowrap;
  border-radius: 10px;
  text-decoration: none !important;
}
.pt-register-box a {
  padding: 10px 16px;
  background: linear-gradient(
    135deg,
    var(--pt-auth-accent) 0%,
    var(--pt-auth-accent-deep) 100%
  );
  color: #fff;
  font-weight: 700;
  box-shadow: 0 8px 18px var(--pt-auth-accent-shadow);
}
.pt-login-link {
  width: 100%;
  margin-top: 12px;
  height: 40px;
  border: 1px solid #e2e8f0;
  color: var(--pt-auth-accent-deep);
}
.pt-auth-info {
  min-height: 560px;
  border-radius: 20px;
  padding: 32px 30px 36px;
  background: linear-gradient(
    145deg,
    rgba(23, 70, 92, 0.97) 0%,
    rgba(44, 122, 140, 0.96) 52%,
    rgba(47, 135, 149, 0.98) 100%
  );
  color: rgba(255, 255, 255, 0.88);
  border: 1px solid rgba(255, 255, 255, 0.08);
  box-shadow: 0 24px 56px rgba(15, 42, 54, 0.35);
}
.pt-mini-brand {
  display: flex;
  gap: 14px;
  align-items: center;
  margin-bottom: 28px;
  padding: 16px 18px;
  border-radius: 18px;
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid rgba(255, 255, 255, 0.14);
  backdrop-filter: blur(6px);
}
.pt-mini-brand strong {
  font-size: 13px;
  line-height: 1.05;
  color: #fff;
}
.pt-mini-brand span {
  flex: 1;
  font-size: 12px;
  color: rgba(255, 255, 255, 0.78);
  line-height: 1.6;
  padding-left: 14px;
  border-left: 1px solid rgba(255, 255, 255, 0.22);
}
.pt-auth-info-heading {
  margin: 0 0 14px;
  font-size: clamp(26px, 3vw, 34px);
  line-height: 1.18;
  font-weight: 900;
  color: #fff;
}
.pt-auth-info-heading br {
  display: block;
}
.pt-auth-info-lead {
  margin: 0 0 26px;
  color: rgba(255, 255, 255, 0.82);
  line-height: 1.65;
  font-size: 14px;
  white-space: pre-line;
}
.pt-feature-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
}
.pt-auth-info .pt-feature-grid div {
  min-height: 82px;
  padding: 16px 14px;
  border-radius: 14px;
  background: rgba(255, 255, 255, 0.07);
  border: 1px solid rgba(255, 255, 255, 0.12);
}
.pt-feature-grid strong,
.pt-feature-grid span {
  display: block;
}
.pt-auth-info .pt-feature-grid strong {
  font-size: 14px;
  color: #f0d36c;
}
.pt-auth-info .pt-feature-grid span {
  margin-top: 8px;
  color: rgba(255, 255, 255, 0.78);
  font-size: 12px;
  line-height: 1.5;
}
.pt-captcha .form-control {
  height: 42px;
  border-radius: 12px 0 0 12px;
}
@media (max-width: 991px) {
  .pt-site {
    padding-top: 62px;
  }
  .pt-header,
  .pt-header-inner {
    height: 62px;
  }
  .pt-menu-toggle {
    display: block;
  }
  .pt-nav {
    display: none !important;
    position: absolute;
    top: 62px;
    left: 0;
    right: 0;
    background: #fff;
    padding: 12px 24px;
    box-shadow: 0 10px 30px rgba(0,0,0,.08);
  }
  .pt-nav.in,
  .pt-nav.collapsing {
    display: block !important;
  }
  .pt-nav-link {
    display: block;
    padding: 12px 0;
  }
  .pt-auth-shell,
  .pt-footer-inner,
  .pt-guide-cards,
  .pt-link-grid {
    grid-template-columns: 1fr;
  }
  .pt-auth-info {
    min-height: auto;
  }
  .pt-floating-contact {
    right: 8px;
    gap: 9px;
  }
  .pt-float-item em {
    display: none;
  }
}

.pt-float-qr {
  cursor: pointer;
}

.pt-qr-modal {
  position: fixed;
  inset: 0;
  z-index: 10060;
  visibility: hidden;
  opacity: 0;
  transition: opacity 0.2s ease, visibility 0.2s ease;
  pointer-events: none;
}

.pt-qr-modal.is-open {
  visibility: visible;
  opacity: 1;
  pointer-events: auto;
}

.pt-qr-modal-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(18, 28, 42, 0.55);
}

.pt-qr-modal-dialog {
  position: relative;
  max-width: 360px;
  margin: 10vh auto 0;
  background: #fff;
  border-radius: 14px;
  box-shadow: 0 18px 48px rgba(0, 0, 0, 0.28);
  padding: 22px 22px 18px;
  text-align: center;
}

.pt-qr-modal-close {
  position: absolute;
  top: 10px;
  right: 12px;
  border: 0;
  background: transparent;
  font-size: 26px;
  line-height: 1;
  color: #9aa4b2;
  cursor: pointer;
}

.pt-qr-modal-close:hover {
  color: #253244;
}

.pt-qr-modal-title {
  margin: 6px 28px 14px;
  font-size: 18px;
  font-weight: 700;
  color: #142033;
}

.pt-qr-modal-body {
  padding: 8px 12px 4px;
}

.pt-qr-modal-body img {
  width: 220px;
  height: 220px;
  max-width: 100%;
  object-fit: contain;
}

.pt-qr-modal-hint {
  margin: 10px 8px 6px;
  font-size: 12px;
  color: #6b7788;
  line-height: 1.45;
}

.pt-qr-modal-footer {
  margin: 4px 8px 0;
  font-size: 14px;
  color: #253244;
  font-weight: 600;
}

@media (max-width: 480px) {
  .pt-qr-modal-dialog {
    margin: 12vw 16px 0;
    padding: 18px 14px 14px;
  }
}

/* Guide introduction & portal (.gi-) */
.gi-page {
  max-width: 1180px;
  margin: 0 auto;
  padding: 0 16px 48px;
}
.gi-page--listing {
  padding-top: 12px;
}
/* Playful Tours 导游列表（对齐 sn.playfultours.com/guide_introduction） */
.gi-page--pf {
  padding-top: 6px;
  --pf-blue: #a9c5de;
  --pf-blue-hover: #96b7d6;
  --pf-blue-soft: #dce8f4;
  --pf-border: #d8e2eb;
  --pf-text: #3d4e5c;
}
.gi-subnav {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px 16px;
  margin-bottom: 16px;
}
.gi-back {
  font-size: 13px;
  color: #5a6d7e;
  text-decoration: none !important;
}
.gi-back:hover {
  color: #2c7a8c;
}
.gi-page--pf .gi-breadcrumb {
  margin: 0;
}
.gi-page--pf .gi-bc-sep {
  margin: 0 8px;
  color: #b9c5ce;
}
.gi-page--pf .gi-breadcrumb a {
  color: #5a6d7e;
}
.gi-page--pf .gi-bc-current {
  color: #334155;
  font-weight: 600;
}
.gi-page--pf .gi-list-head {
  margin-bottom: 18px;
  text-align: center;
}
.gi-page--pf .gi-list-head h1 {
  margin: 0 0 6px;
  font-size: clamp(26px, 3.2vw, 34px);
  font-weight: 800;
  color: #1e293b;
}
.gi-kicker--blue {
  margin: 0;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: #6b9bd1 !important;
}
.gi-filters--pf {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 14px 18px;
  padding: 16px 18px;
  margin-bottom: 22px;
  background: #fff;
  border: 1px solid var(--pf-border);
  border-radius: 12px;
  box-shadow: 0 2px 14px rgba(80, 120, 160, 0.06);
}
.gi-filter-pill {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
.gi-filter-pill--grow {
  flex: 1 1 200px;
}
.gi-filter-pill--search {
  flex: 2 1 300px;
}
.gi-filters--pf .gi-filter-label {
  font-size: 13px;
  font-weight: 700;
  color: #4a5c6a;
  white-space: nowrap;
}
.gi-select,
.gi-input {
  height: 34px;
  border: 1px solid var(--pf-border);
  border-radius: 8px;
  padding: 4px 10px;
  font-size: 13px;
  color: #334155;
  background: #fafcfd;
}
.gi-select:focus,
.gi-input:focus {
  outline: none;
  border-color: var(--pf-blue);
  box-shadow: 0 0 0 2px rgba(169, 197, 222, 0.35);
}
.gi-filter-pill--grow .gi-select {
  flex: 1;
  min-width: 140px;
}
.gi-filter-pill--search .gi-input {
  flex: 1 1 140px;
  min-width: 120px;
}
.gi-btn-seek {
  height: 34px;
  padding: 0 20px;
  border: none;
  border-radius: 8px;
  background: var(--pf-blue);
  color: #fff;
  font-weight: 700;
  font-size: 13px;
  cursor: pointer;
  white-space: nowrap;
}
.gi-btn-seek:hover {
  background: var(--pf-blue-hover);
}
.gi-guide-list {
  display: flex;
  flex-direction: column;
  gap: 20px;
}
.gi-card--pf {
  position: relative;
  background: #fff;
  border: 1px solid var(--pf-border);
  border-radius: 14px;
  padding: 16px 18px 18px;
  box-shadow: 0 4px 18px rgba(80, 120, 160, 0.07);
}
.gi-badge--pf {
  position: absolute;
  top: 14px;
  right: 16px;
  z-index: 2;
  padding: 5px 11px;
  font-size: 11px;
  font-weight: 800;
  border-radius: 999px;
  background: linear-gradient(135deg, #ff8fb8 0%, #c080ff 100%);
  color: #fff;
  box-shadow: 0 4px 12px rgba(200, 120, 180, 0.35);
}
.gi-pf-row-head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px 14px;
  margin-bottom: 12px;
  padding-right: 108px;
}
.gi-name-strip {
  display: inline-block;
  background: var(--pf-blue-soft);
  border: 1px solid #c5d9ea;
  border-radius: 6px;
  padding: 6px 16px;
}
.gi-name-strip a {
  font-size: 18px;
  font-weight: 800;
  color: #2c4a5e;
  text-decoration: none !important;
}
.gi-name-strip a:hover {
  color: #1e3a52;
}
.gi-tag-strip {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  align-items: center;
}
.gi-tile {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  min-height: 30px;
  padding: 4px 10px;
  font-size: 12px;
  font-weight: 700;
  border: 1px solid var(--pf-border);
  border-radius: 4px;
  background: #f4f8fb;
  color: #3d5a73;
}
.gi-tile--svc {
  font-weight: 700;
}
.gi-tile--bike .fa {
  font-size: 13px;
  color: #2c7a8c;
}
.gi-pf-main {
  display: flex;
  gap: 22px;
  align-items: flex-start;
}
.gi-pf-info {
  flex: 1;
  min-width: 0;
}
.gi-pf-lines .gi-line {
  margin: 0 0 5px;
  font-size: 13px;
  line-height: 1.55;
  color: var(--pf-text);
}
.gi-line-k {
  font-weight: 700;
  color: #4a5f72;
  margin-right: 4px;
}
.gi-line-k::after {
  content: "\FF1A";
}
.gi-city {
  color: #4a8fd4;
  font-weight: 700;
}
.gi-price-strong {
  color: #2c5e82;
  font-weight: 800;
}
.gi-line--stars .gi-line-v {
  display: inline-flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 2px 4px;
}
.gi-stars {
  color: #f0b429;
  letter-spacing: 1px;
  font-size: 14px;
  margin-right: 4px;
}
.gi-rate-num {
  font-weight: 800;
  color: #1e293b;
}
.gi-pipe {
  margin: 0 6px;
  color: #cbd5e1;
  font-weight: 400;
}
.gi-slogan-pf {
  margin: 12px 0 8px;
  font-size: 14px;
  color: #7a8794;
  font-weight: 600;
  line-height: 1.55;
}
.gi-bio-pf {
  margin: 0 0 14px;
  font-size: 13px;
  line-height: 1.7;
  color: #5c6b78;
}
.gi-pf-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}
.gi-btn-book-pf {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 8px 24px;
  border-radius: 8px;
  background: var(--pf-blue);
  color: #fff !important;
  font-weight: 700;
  font-size: 14px;
  text-decoration: none !important;
  border: 1px solid transparent;
}
.gi-btn-book-pf:hover {
  background: var(--pf-blue-hover);
  color: #fff !important;
}
.gi-btn-more-pf {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 8px 24px;
  border-radius: 8px;
  background: #eef2f6;
  color: #4a5f72 !important;
  font-weight: 700;
  font-size: 14px;
  border: 1px solid #dde5ee;
  text-decoration: none !important;
}
.gi-btn-more-pf:hover {
  background: #e4eaf2;
  color: #334155 !important;
}
.gi-pf-photo {
  flex-shrink: 0;
}
.gi-pf-photo-link {
  display: block;
  width: 148px;
  height: 148px;
  border-radius: 50%;
  overflow: hidden;
  border: 3px solid var(--pf-blue-soft);
  box-shadow: 0 6px 18px rgba(40, 80, 120, 0.12);
}
.gi-pf-photo-link img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.gi-pager {
  margin-top: 36px;
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
}
.gi-pager .pagination {
  margin: 0;
}
.gi-pager .pagination > li > a,
.gi-pager .pagination > li > span {
  border-radius: 8px;
  margin: 0 3px;
  color: #334155;
}
.gi-pager .pagination > .active > span {
  background: #2c7a8c;
  border-color: #2c7a8c;
  color: #fff;
}
.gi-pager--pf .pagination > .active > span {
  background: var(--pf-blue);
  border-color: #96b7d6;
  color: #fff;
}
@media (max-width: 767px) {
  .gi-pf-main {
    flex-direction: column-reverse;
  }
  .gi-pf-photo {
    align-self: center;
  }
  .gi-pf-row-head {
    padding-right: 96px;
  }
  .gi-card--pf {
    padding-top: 14px;
  }
}
.gi-head h1 {
  margin-bottom: 8px;
}
.gi-sub {
  color: #6b7788;
  margin: 0 0 20px;
  font-size: 14px;
}
.gi-filters {
  display: flex;
  flex-wrap: wrap;
  gap: 12px 16px;
  align-items: flex-end;
  margin-bottom: 24px;
  padding: 16px;
  background: #fff;
  border-radius: 10px;
  box-shadow: 0 2px 12px rgba(18, 28, 42, 0.06);
}
.gi-filter-row {
  display: flex;
  flex-direction: column;
  gap: 6px;
  min-width: 140px;
}
.gi-filter-row label {
  font-size: 13px;
  color: #425066;
  margin: 0;
}
.gi-grow {
  flex: 1 1 200px;
  min-width: 180px;
}
.gi-search-btn {
  height: 34px;
}
.gi-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 20px;
}
.gi-card {
  background: #fff;
  border-radius: 12px;
  overflow: hidden;
  box-shadow: 0 4px 18px rgba(18, 28, 42, 0.08);
  position: relative;
}
.gi-badge {
  position: absolute;
  top: 12px;
  right: 12px;
  background: linear-gradient(135deg, #ff6b9d, #c471ed);
  color: #fff;
  font-size: 11px;
  padding: 4px 10px;
  border-radius: 20px;
  z-index: 1;
}
.gi-card-media {
  height: 200px;
  background: #e8eef5 center/cover no-repeat;
}
.gi-card-body {
  padding: 14px 16px 18px;
}
.gi-name {
  font-size: 18px;
  font-weight: 700;
  margin: 0 0 8px;
}
.gi-meta,
.gi-price {
  font-size: 13px;
  margin: 4px 0;
  color: #425066;
}
.gi-price {
  color: #0d6efd;
  font-weight: 600;
}
.gi-actions {
  margin-top: 12px;
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}
.gi-empty {
  text-align: center;
  padding: 48px 16px;
  color: #9aa4b2;
}
.gi-detail {
  display: grid;
  grid-template-columns: 1fr 340px;
  gap: 28px;
  align-items: start;
  max-width: 1180px;
  margin: 0 auto;
  padding: 0 16px 48px;
}
@media (max-width: 991px) {
  .gi-detail {
    grid-template-columns: 1fr;
  }
}
.gi-profile-card {
  display: flex;
  flex-wrap: wrap;
  gap: 22px;
  background: #fff;
  border-radius: 12px;
  padding: 22px;
  box-shadow: 0 4px 18px rgba(18, 28, 42, 0.06);
  position: relative;
  margin-bottom: 20px;
}
.gi-profile-photo {
  flex: 0 0 auto;
  position: relative;
  text-align: center;
}
.gi-profile-photo img {
  width: 160px;
  height: 160px;
  border-radius: 50%;
  object-fit: cover;
  border: 4px solid #f0f4f8;
}
.gi-profile-info {
  flex: 1 1 240px;
}
.gi-profile-info h1 {
  margin: 0 0 12px;
  font-size: 26px;
}
.gi-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 12px;
}
.gi-tag {
  display: inline-block;
  padding: 4px 10px;
  font-size: 12px;
  border-radius: 6px;
  background: #e8f1ff;
  color: #0d6efd;
}
.gi-tag-muted {
  background: #f0f4f8;
  color: #425066;
}
.gi-stats {
  list-style: none;
  padding: 0;
  margin: 0;
}
.gi-stats li {
  padding: 8px 0;
  border-bottom: 1px solid #eef2f6;
  font-size: 14px;
}
.gi-tabs {
  display: flex;
  gap: 8px;
  margin: 20px 0 12px;
  border-bottom: 2px solid #eef2f6;
}
.gi-tabs span {
  padding: 8px 14px;
  cursor: pointer;
  color: #6b7788;
}
.gi-tabs span.active {
  color: #0d6efd;
  font-weight: 600;
  border-bottom: 2px solid #0d6efd;
  margin-bottom: -2px;
}
.gi-tab-panel {
  font-size: 14px;
  line-height: 1.65;
  color: #253244;
  min-height: 60px;
}
.gi-tab-panel.hide {
  display: none;
}
.gi-rich {
  white-space: pre-wrap;
  word-break: break-word;
}
.gi-section-title {
  font-size: 17px;
  margin: 28px 0 14px;
}
.gi-gallery {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
}
@media (max-width: 600px) {
  .gi-gallery {
    grid-template-columns: repeat(2, 1fr);
  }
}
.gi-gallery img {
  width: 100%;
  aspect-ratio: 1;
  object-fit: cover;
  border-radius: 8px;
}
.gi-review {
  display: flex;
  gap: 12px;
  padding: 14px 0;
  border-bottom: 1px solid #eef2f6;
}
.gi-review-avatar {
  flex-shrink: 0;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  object-fit: cover;
  background: #e8eef5;
}
.gi-review-head {
  font-size: 14px;
  font-weight: 600;
}
.gi-stars {
  margin-left: 8px;
  color: #f0ad4e;
}
.gi-review-date {
  margin-left: 10px;
  font-size: 12px;
  color: #9aa4b2;
  font-weight: 400;
}
.gi-review p {
  font-size: 14px;
  margin: 6px 0 0;
  color: #425066;
}
.gi-booking {
  background: #fff;
  border-radius: 12px;
  padding: 20px;
  box-shadow: 0 4px 18px rgba(18, 28, 42, 0.08);
  position: sticky;
  top: 88px;
}
.gi-book-hint {
  font-size: 12px;
  color: #6b7788;
  margin-bottom: 14px;
}
.gi-booking .form-group {
  margin-bottom: 12px;
}
.gi-seg {
  display: flex;
  flex-wrap: wrap;
  gap: 12px 16px;
}
.gi-seg label {
  font-weight: 400;
  margin: 0;
}
.gi-login-tip {
  margin-top: 10px;
  font-size: 13px;
}
.gi-portal {
  max-width: 720px;
  margin: 24px auto;
  padding: 0 16px;
}
.gi-portal--dash {
  max-width: 920px;
  margin: 28px auto 48px;
}
.gi-portal--dash .gi-portal-welcome {
  margin: 0;
}
.gi-dash-shell {
  margin-top: 8px;
}
.gi-dash-cards {
  display: grid;
  gap: 14px;
}
@media (min-width: 768px) {
  .gi-dash-cards {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}
.gi-dash-card {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 18px 18px;
  border-radius: 14px;
  border: 1px solid #e2e8f0;
  background: #fff;
  text-decoration: none !important;
  color: #1e293b !important;
  box-shadow: 0 4px 18px rgba(15, 23, 42, 0.06);
  transition: transform 0.15s ease, box-shadow 0.15s ease, border-color 0.15s ease;
}
.gi-dash-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 10px 28px rgba(15, 23, 42, 0.1);
  border-color: #cbd5e1;
}
.gi-dash-card--primary {
  border-color: #99f6e4;
  background: linear-gradient(145deg, #ecfdf5 0%, #fff 55%);
}
.gi-dash-card--accent {
  border-color: #fde68a;
  background: linear-gradient(145deg, #fffbeb 0%, #fff 55%);
}
.gi-dash-card-icon {
  flex: 0 0 auto;
  width: 48px;
  height: 48px;
  border-radius: 12px;
  background: #f1f5f9;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 22px;
  color: #0f766e;
}
.gi-dash-card--primary .gi-dash-card-icon {
  background: #ccfbf1;
  color: #0f766e;
}
.gi-dash-card--accent .gi-dash-card-icon {
  background: #fef3c7;
  color: #b45309;
}
.gi-dash-card-body {
  flex: 1 1 auto;
  min-width: 0;
}
.gi-dash-card-body strong {
  display: block;
  font-size: 15px;
  margin-bottom: 4px;
}
.gi-dash-card-body small {
  display: block;
  font-size: 12px;
  color: #64748b;
  line-height: 1.4;
}
.gi-dash-card-arrow {
  flex: 0 0 auto;
  font-size: 22px;
  color: #94a3b8;
  font-weight: 300;
}
.gi-portal-welcome {
  font-size: 18px;
  color: #425066;
}
.gi-portal-actions {
  margin-top: 16px;
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}

/* --- Guide portal: profile edit --- */
.gi-portal--profile {
  max-width: 880px;
  margin: 28px auto 56px;
  padding: 0 18px;
}
.gi-portal-head {
  margin-bottom: 22px;
}
.gi-portal-kicker {
  margin: 0 0 6px;
  font-size: 12px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: #94a3b8;
  font-weight: 600;
}
.gi-portal-title {
  margin: 0 0 8px;
  font-size: 28px;
  font-weight: 700;
  color: #0f172a;
  letter-spacing: -0.02em;
}
.gi-portal-lead {
  margin: 0;
  font-size: 15px;
  line-height: 1.55;
  color: #64748b;
  max-width: 52em;
}
.gi-portal-alert {
  border: none;
  border-radius: 12px;
  padding: 14px 18px;
  margin-bottom: 20px;
  font-size: 14px;
  line-height: 1.55;
  box-shadow: 0 2px 12px rgba(15, 23, 42, 0.06);
}
.gi-portal-alert--combined .gi-portal-alert-p {
  margin: 0 0 10px;
}
.gi-portal-alert--combined .gi-portal-alert-p:last-of-type {
  margin-bottom: 0;
}
.gi-portal-alert-hr {
  margin: 12px 0;
  border: 0;
  border-top: 1px solid rgba(15, 23, 42, 0.1);
}
.gi-portal-alert-sub {
  margin: 0;
  font-size: 13px;
  line-height: 1.5;
  color: #64748b;
}
.gi-profile-sheet {
  background: #fff;
  border-radius: 16px;
  padding: 28px 26px 32px;
  box-shadow: 0 8px 32px rgba(15, 23, 42, 0.07);
  border: 1px solid rgba(226, 232, 240, 0.9);
}
.gi-profile-form .gi-form-section {
  margin-bottom: 28px;
  padding-bottom: 24px;
  border-bottom: 1px solid #eef2f7;
}
.gi-profile-form .gi-form-section:last-of-type {
  border-bottom: none;
  margin-bottom: 0;
  padding-bottom: 0;
}
.gi-form-section-title {
  margin: 0 0 18px;
  font-size: 15px;
  font-weight: 700;
  color: #1e293b;
}
.gi-form-grid {
  display: grid;
  gap: 16px 18px;
}
.gi-form-grid--2 {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.gi-form-grid--3 {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
@media (max-width: 767px) {
  .gi-form-grid--2,
  .gi-form-grid--3 {
    grid-template-columns: 1fr;
  }
}
.gi-form-field {
  margin-bottom: 4px;
}
.gi-form-label {
  display: block;
  margin-bottom: 7px;
  font-size: 13px;
  font-weight: 600;
  color: #475569;
}
.gi-req {
  color: #e11d48;
  font-weight: 700;
}
.gi-profile-form .gi-input,
.gi-profile-form .gi-textarea {
  border-radius: 10px;
  border: 1px solid #dbe4ee;
  padding: 10px 14px;
  font-size: 14px;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
/* Bootstrap `.form-control` 固定 height:33px，与上方 padding 叠加会裁切中文与 select 占位文案 */
.gi-profile-form .form-control.gi-input {
  height: auto;
  min-height: 48px;
  line-height: 1.5;
  box-sizing: border-box;
}
.gi-profile-form select.form-control.gi-input {
  padding-top: 10px;
  padding-bottom: 10px;
  padding-right: 36px;
}
.gi-profile-form input[type="date"].form-control.gi-input {
  padding-right: 14px;
  min-height: 48px;
}
.gi-profile-form .gi-input:focus,
.gi-profile-form .gi-textarea:focus {
  border-color: #7dd3c0;
  box-shadow: 0 0 0 3px rgba(125, 211, 192, 0.25);
  outline: none;
}
.gi-profile-form .gi-textarea {
  resize: vertical;
  min-height: 96px;
}
.gi-form-hint {
  margin: 8px 0 0;
  font-size: 12px;
  color: #94a3b8;
  line-height: 1.45;
}
.gi-lang-pills {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}
.gi-lang-pill {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin: 0;
  padding: 10px 16px;
  border-radius: 999px;
  border: 1px solid #e2e8f0;
  background: #f8fafc;
  cursor: pointer;
  font-weight: 500;
  font-size: 14px;
  color: #334155;
  transition: background 0.15s ease, border-color 0.15s ease;
}
.gi-lang-pill:hover {
  border-color: #cbd5e1;
  background: #fff;
}
.gi-lang-pill input {
  margin: 0;
  flex-shrink: 0;
}
.gi-lang-pill input:checked + span {
  font-weight: 600;
  color: #0f766e;
}
.gi-lang-pill input:checked {
  accent-color: #0f766e;
}
.gi-form-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  align-items: center;
  margin-top: 28px;
  padding-top: 8px;
}
.gi-btn-submit {
  min-width: 160px;
  border-radius: 10px;
  font-weight: 600;
  padding-left: 28px;
  padding-right: 28px;
  border: none;
  background: linear-gradient(135deg, #14b8a6 0%, #0d9488 100%);
  box-shadow: 0 4px 14px rgba(13, 148, 136, 0.35);
}
.gi-btn-submit:hover,
.gi-btn-submit:focus {
  background: linear-gradient(135deg, #0d9488 0%, #0f766e 100%);
  color: #fff;
}
.gi-btn-outline {
  border-radius: 10px;
  border: 1px solid #cbd5e1 !important;
  background: #fff !important;
  color: #475569 !important;
}
.gi-btn-outline:hover {
  background: #f8fafc !important;
  border-color: #94a3b8 !important;
}

/* --- Guide portal: profile wizard --- */
.gi-portal--profile .gi-portal-svc-sheet {
  margin-top: 16px;
}

.gi-portal--profile .gi-portal-svc-table-wrap {
  overflow-x: auto;
  margin-bottom: 10px;
}

.gi-portal--profile .gi-portal-svc-table {
  margin-bottom: 0;
  font-size: 14px;
}

.gi-portal--profile .gi-portal-svc-del {
  font-size: 20px;
  line-height: 1;
  padding: 0;
}

.gi-profile-sheet--wizard {
  padding-top: 22px;
}
.gi-wizard-steps {
  display: flex;
  flex-wrap: nowrap;
  gap: 8px;
  overflow-x: auto;
  padding-bottom: 8px;
  margin: -4px 0 18px;
  border-bottom: 1px solid #eef2f7;
  -webkit-overflow-scrolling: touch;
}
.gi-wizard-step-hit {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  border: 1px solid #e2e8f0;
  background: #f8fafc;
  border-radius: 999px;
  padding: 8px 14px;
  font-size: 13px;
  font-weight: 600;
  color: #64748b;
  cursor: pointer;
  transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}
.gi-wizard-step-hit:hover {
  border-color: #cbd5e1;
  background: #fff;
}
.gi-wizard-step-hit.is-active {
  border-color: #5eead4;
  background: #ecfdf5;
  color: #0f766e;
}
.gi-wizard-step-hit.is-done {
  border-color: #bae6fd;
  background: #f0f9ff;
  color: #0369a1;
}
.gi-wiz-num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  font-size: 12px;
  background: #e2e8f0;
  color: #475569;
}
.gi-wizard-step-hit.is-active .gi-wiz-num {
  background: #14b8a6;
  color: #fff;
}
.gi-wizard-step-hit.is-done .gi-wiz-num {
  background: #38bdf8;
  color: #fff;
}
.gi-wizard-panel {
  display: none;
  animation: giFadeIn 0.22s ease;
}
.gi-wizard-panel.is-active {
  display: block;
}
@keyframes giFadeIn {
  from {
    opacity: 0;
    transform: translateY(4px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
.gi-wizard-hint {
  margin-top: -8px;
  margin-bottom: 18px;
}
.gi-wizard-error {
  margin-bottom: 14px;
}
.gi-wizard-busy {
  margin-bottom: 12px;
  padding: 10px 14px;
  border-radius: 10px;
  background: #f0f9ff;
  color: #0369a1;
  font-size: 14px;
  font-weight: 600;
}
.gi-upload-grid {
  display: grid;
  gap: 22px;
}
@media (min-width: 768px) {
  .gi-upload-grid {
    grid-template-columns: 260px 1fr;
    align-items: start;
  }
}
.gi-upload-card {
  padding: 16px;
  border-radius: 12px;
  border: 1px dashed #cbd5e1;
  background: #fafbfc;
}
.gi-upload-card--wide {
  grid-column: span 1;
}
.gi-avatar-upload {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 12px;
}
.gi-avatar-preview-wrap {
  width: 128px;
  height: 128px;
  border-radius: 50%;
  overflow: hidden;
  background: #fff;
  border: 3px solid #e2e8f0;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
}
.gi-avatar-preview {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.gi-avatar-placeholder {
  font-size: 12px;
  color: #94a3b8;
  padding: 10px;
  line-height: 1.35;
}
.gi-upload-btn {
  position: relative;
  overflow: hidden;
  cursor: pointer;
}
.gi-upload-btn input[type="file"] {
  position: absolute;
  opacity: 0;
  width: 100%;
  height: 100%;
  left: 0;
  top: 0;
  cursor: pointer;
}
.gi-gallery-thumbs {
  list-style: none;
  margin: 16px 0 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}
.gi-gallery-thumb {
  position: relative;
  width: 88px;
  height: 88px;
  border-radius: 10px;
  overflow: hidden;
  border: 1px solid #e2e8f0;
  background: #fff;
}
.gi-gallery-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.gi-gallery-remove {
  position: absolute;
  top: 4px;
  right: 4px;
  width: 24px;
  height: 24px;
  border: none;
  border-radius: 50%;
  background: rgba(15, 23, 42, 0.65);
  color: #fff;
  font-size: 16px;
  line-height: 1;
  cursor: pointer;
  padding: 0;
}
.gi-gallery-remove:hover {
  background: rgba(220, 38, 38, 0.85);
}
.gi-upload-advanced {
  margin-top: 14px;
  font-size: 13px;
  color: #64748b;
}
.gi-upload-advanced summary {
  cursor: pointer;
  font-weight: 600;
  outline: none;
}
.gi-wizard-nav {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: center;
  gap: 14px;
  margin-top: 28px;
  padding-top: 18px;
  border-top: 1px solid #eef2f7;
}
.gi-wizard-nav-main {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-left: auto;
}
.gi-wizard-summary {
  margin: 0;
  padding: 16px;
  border-radius: 12px;
  background: #f8fafc;
  border: 1px solid #eef2f7;
  display: grid;
  grid-template-columns: minmax(120px, 28%) 1fr;
  gap: 8px 14px;
  font-size: 14px;
}
.gi-wizard-summary dt {
  margin: 0;
  font-weight: 600;
  color: #64748b;
}
.gi-wizard-summary dd {
  margin: 0;
  color: #1e293b;
  word-break: break-word;
}
@media (max-width: 575px) {
  .gi-wizard-summary {
    grid-template-columns: 1fr;
  }
}

/* --- Guide detail: Playful Tours layout (.gi-detail-pf) --- */
.gi-detail.gi-detail-pf {
  display: block;
  max-width: 1200px;
  margin: 0 auto;
  padding: 16px 16px 56px;
}

.gi-dt-crumb-row {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: center;
  gap: 10px 16px;
  margin-bottom: 14px;
}

.gi-dt-back {
  font-size: 13px;
  color: #5a6d7e;
  text-decoration: none !important;
}

.gi-dt-back:hover {
  color: #2c7a8c;
}

.gi-dt-crumb {
  font-size: 13px;
  color: #5a6d7e;
}

.gi-dt-crumb a {
  color: #5a6d7e;
  text-decoration: none;
}

.gi-dt-crumb a:hover {
  text-decoration: underline;
  color: #334155;
}

.gi-dt-crumb-sep {
  margin: 0 6px;
  color: #b9c5ce;
}

.gi-dt-crumb-current {
  color: #1e293b;
  font-weight: 600;
}

.gi-detail-pf .gi-dt-k::after {
  content: '\FF1A';
}

.gi-name-strip--dt span {
  color: #1a6fa8;
}

.gi-dt-search {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px 14px;
  margin-bottom: 22px;
  padding: 14px 18px;
  background: #f7fafc;
  border: 1px solid #e4ecf4;
  border-radius: 10px;
}

.gi-dt-search-label {
  font-size: 14px;
  color: #425066;
  font-weight: 500;
}

.gi-dt-select,
.gi-dt-input {
  height: 38px;
  padding: 0 12px;
  border: 1px solid #d2dde8;
  border-radius: 6px;
  font-size: 14px;
  background: #fff;
}

.gi-dt-input {
  min-width: 180px;
  flex: 1 1 160px;
}

.gi-dt-seek {
  height: 38px;
  padding: 0 22px;
  border: none;
  border-radius: 6px;
  background: #9bc9e8;
  color: #fff;
  font-size: 14px;
  cursor: pointer;
}

.gi-dt-seek:hover {
  background: #86b8dc;
}

.gi-dt-columns {
  display: grid;
  grid-template-columns: 1fr minmax(280px, 360px);
  gap: 28px;
  align-items: start;
}

@media (max-width: 991px) {
  .gi-dt-columns {
    grid-template-columns: 1fr;
  }
}

.gi-dt-profile-card {
  display: flex;
  flex-wrap: wrap;
  gap: 20px 24px;
  background: #fff;
  border-radius: 12px;
  padding: 22px 22px 18px;
  box-shadow: 0 4px 18px rgba(18, 28, 42, 0.06);
  border: 1px solid #eef2f6;
  position: relative;
  margin-bottom: 18px;
}

.gi-badge--dt {
  position: static;
  display: inline-block;
  margin-bottom: 8px;
}

.gi-dt-photo-wrap {
  flex: 0 0 auto;
}

.gi-dt-avatar {
  width: 168px;
  height: 168px;
  border-radius: 50%;
  object-fit: cover;
  border: 4px solid #e8f2fa;
  display: block;
}

.gi-dt-info {
  flex: 1 1 240px;
  min-width: 0;
}

.gi-dt-name-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px 14px;
  margin-bottom: 10px;
}

.gi-name-strip--dt {
  display: inline-block;
  padding: 6px 16px;
  background: #cfe8f8;
  border-radius: 6px;
  font-size: 18px;
  font-weight: 700;
}

.gi-name-strip--dt a {
  color: #1a6fa8;
  text-decoration: none;
}

.gi-name-strip--dt a:hover {
  text-decoration: underline;
}

.gi-tag-strip--dt {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
}

/* 语言能力：与白底黑框方格一致（中文 / EN / 越文） */
.gi-lang-box {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  box-sizing: border-box;
  background: #fff;
  border: 1px solid #1a1a1a;
  flex-shrink: 0;
}

.gi-lang-box__txt {
  font-size: 14px;
  font-weight: 700;
  line-height: 1.05;
  text-align: center;
  letter-spacing: 0.02em;
  color: #3c2f24;
  font-family: "PingFang SC", "Microsoft YaHei", system-ui, sans-serif;
}

.gi-rate-stars {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  vertical-align: middle;
}

.gi-rate-star-wrap {
  display: inline-flex;
  line-height: 0;
  color: #cfd8e6;
}

.gi-rate-star-wrap .gi-star-svg {
  flex-shrink: 0;
}

.gi-rate-star-wrap.is-on {
  color: #fbbf24;
  filter: drop-shadow(0 0 0.75px rgba(245, 158, 11, 0.45));
}

.gi-rate-stars--inline {
  gap: 2px;
}

.gi-rate-stars--summary {
  gap: 4px;
  margin-right: 2px;
}

.gi-rate-stars--review .gi-rate-star-wrap .gi-star-svg {
  vertical-align: -2px;
}

.gi-dt-v--stars-wrap {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 10px;
}

.gi-tile--lang {
  font-size: 12px;
  padding: 4px 10px;
  border-radius: 6px;
  background: #eef6fc;
  color: #2563a8;
}

.gi-tile--svc {
  font-size: 12px;
  padding: 4px 10px;
  border-radius: 6px;
  background: #e8f4ff;
  color: #0d6efd;
}

.gi-tile--bike i {
  margin-right: 4px;
}

.gi-dt-stats {
  list-style: none;
  padding: 0;
  margin: 0;
}

.gi-dt-stats li {
  padding: 8px 0;
  border-bottom: 1px solid #eef2f6;
  font-size: 14px;
  display: flex;
  flex-wrap: wrap;
  gap: 6px 12px;
}

.gi-dt-k {
  color: #6b7788;
  min-width: 88px;
}

.gi-dt-v {
  color: #253244;
}

.gi-dt-city {
  color: #7c3aed;
  font-weight: 600;
}

.gi-dt-price {
  color: #c02626;
}

.gi-detail-pf .gi-dt-v--stars-wrap .gi-dt-gold,
.gi-dt-v--stars .gi-dt-gold {
  color: #e6a23c;
  letter-spacing: 1px;
}

.gi-dt-pipe {
  margin: 0 6px;
  color: #c5cdd8;
}

.gi-dt-rate-num {
  font-weight: 600;
}

.gi-slogan-dt {
  margin: 12px 0 0;
  font-size: 15px;
  color: #1a6fa8;
  font-weight: 600;
}

.gi-tabs-pf {
  margin-top: 6px;
}

.gi-section-h-pf {
  font-size: 17px;
  font-weight: 600;
  color: #6eb3d8;
  margin: 28px 0 14px;
}

.gi-dt-reviews-section {
  margin-top: 36px;
  padding-top: 8px;
}

.gi-reviews-heading-pf {
  margin: 0 0 16px;
  font-size: 20px;
  font-weight: 700;
  color: #4589cf;
}

/* 导游详情 — 精选照片（三列网格，与 Playful 精选区块对齐） */
.gi-gallery--detail-featured {
  margin-top: 6px;
  gap: 12px;
}

@media (min-width: 721px) {
  .gi-gallery--detail-featured {
    grid-template-columns: repeat(3, 1fr);
  }
}

.gi-gallery-featured-link {
  display: block;
  border-radius: 10px;
  overflow: hidden;
  box-shadow: 0 2px 12px rgba(37, 50, 68, 0.1);
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.gi-gallery-featured-link:hover {
  transform: translateY(-3px);
  box-shadow: 0 12px 28px rgba(37, 50, 68, 0.16);
}

.gi-gallery--detail-featured img {
  width: 100%;
  aspect-ratio: 1;
  object-fit: cover;
  vertical-align: middle;
}

.gi-reviews-summary-pf {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px 16px;
  margin-bottom: 20px;
}

.gi-rs-big {
  font-size: 42px;
  font-weight: 800;
  color: #253244;
  line-height: 1;
}

.gi-rs-stars {
  color: #fbbf24;
  font-size: 18px;
  letter-spacing: 2px;
}

.gi-rs-tail {
  font-size: 14px;
  color: #6b7788;
}

.gi-reviews-pf {
  border-top: 1px solid #eef2f6;
}

.gi-review-pf {
  display: flex;
  gap: 16px;
  padding: 20px 0;
  margin: 0;
  border-bottom: 1px solid #eef2f6;
}

.gi-review-pf:last-child {
  border-bottom: none;
}

.gi-review-pf-avatar {
  width: 56px;
  height: 56px;
  border-radius: 50%;
  object-fit: cover;
  flex-shrink: 0;
  background: #e8eef5;
  border: 1px solid rgba(226, 232, 239, 0.9);
}

.gi-review-pf-body {
  flex: 1 1 200px;
  min-width: 0;
}

.gi-review-pf-name-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px 12px;
  font-size: 15px;
}

.gi-review-pf-name {
  font-weight: 700;
  color: #253244;
}

.gi-review-pf-date {
  font-size: 13px;
  color: #8b97a8;
  font-weight: 400;
  margin: 6px 0 10px;
}

.gi-review-pf-text {
  margin: 0;
  font-size: 15px;
  line-height: 1.75;
  color: #2f3947;
}

.gi-dt-reviews-section .gi-empty {
  padding: 20px 0;
  margin: 0;
  font-size: 14px;
  color: #7b8796;
}

.gi-booking-pf {
  background: #fff;
  border-radius: 12px;
  padding: 20px 18px 22px;
  box-shadow: 0 4px 18px rgba(18, 28, 42, 0.08);
  border: 1px solid #eef2f6;
  position: sticky;
  top: 88px;
}

.gi-booking-title {
  margin: 0 0 8px;
  font-size: 17px;
  font-weight: 600;
  color: #6eb3d8;
}

.gi-book-hint-pf {
  font-size: 12px;
  color: #6b7788;
  margin: 0 0 14px;
  line-height: 1.5;
}

.gi-book-hint-pf--lead {
  font-size: 13px;
  line-height: 1.65;
  margin-bottom: 8px;
}

.gi-book-hint-pf--note {
  font-size: 12px;
  color: #8896a4;
  margin-top: 0;
  margin-bottom: 14px;
}

.gi-book-label--inline {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 6px 12px;
}

.gi-duration-current {
  font-weight: 700;
  color: #2c7a8c;
}

.gi-duration-btns {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 8px;
}

.gi-duration-btn {
  position: relative;
  margin: 0;
  padding: 10px 22px;
  border-radius: 8px;
  border: 1px solid #d8e2eb;
  background: #eef2f6;
  font-size: 14px;
  font-weight: 700;
  cursor: pointer;
  color: #425066;
}

.gi-duration-btn:has(input:checked) {
  background: #5cb85c;
  border-color: #4cae4c;
  color: #fff;
}

.gi-duration-btn input {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}

.gi-book-subhint {
  font-size: 12px;
  font-weight: 600;
  color: #7a8794;
}

.gi-datetime-summary {
  min-height: 38px;
  padding: 8px 12px;
  border: 1px dashed #d2dde8;
  border-radius: 8px;
  background: #fafcfe;
  font-size: 14px;
  color: #253244;
}

.gi-cal-widget {
  border: 1px solid #e4ecf4;
  border-radius: 10px;
  padding: 10px 12px 14px;
  margin-bottom: 16px;
  background: #fafcfe;
}

.gi-cal-widget--pf {
  margin-bottom: 18px;
}

.gi-cal-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 10px;
}

.gi-cal-label {
  font-weight: 600;
  font-size: 15px;
  color: #253244;
}

.gi-cal-nav {
  width: 34px;
  height: 34px;
  border: 1px solid #d2dde8;
  border-radius: 8px;
  background: #fff;
  cursor: pointer;
  font-size: 18px;
  line-height: 1;
  color: #425066;
}

.gi-cal-weekdays {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 4px;
  margin-bottom: 6px;
  font-size: 11px;
  color: #9aa4b2;
  text-align: center;
}

.gi-cal-days {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 4px;
}

.gi-cal-cell.gi-cal-pad {
  min-height: 34px;
}

.gi-cal-day {
  min-height: 34px;
  border: 1px solid transparent;
  border-radius: 8px;
  background: #fff;
  font-size: 13px;
  cursor: pointer;
  color: #253244;
}

.gi-cal-day:hover:not(:disabled) {
  border-color: #9bc9e8;
  background: #eef6fc;
}

.gi-cal-day.gi-cal-past {
  color: #c5cdd8;
  cursor: not-allowed;
  background: #f5f7fa;
}

.gi-cal-day.gi-cal-selected {
  background: #7eb5d6;
  color: #fff;
  font-weight: 600;
  border-color: #7eb5d6;
}

.gi-book-block {
  margin-bottom: 14px;
}

.gi-book-label {
  display: block;
  font-size: 13px;
  font-weight: 600;
  color: #425066;
  margin-bottom: 8px;
}

.gi-svc-pill {
  display: inline-block;
  padding: 8px 18px;
  border-radius: 8px;
  background: #5cb85c;
  color: #fff;
  font-size: 14px;
  font-weight: 600;
}

.gi-svc-pill--block {
  display: block;
  width: 100%;
  box-sizing: border-box;
  text-align: center;
  padding: 12px 16px;
  border-radius: 10px;
  font-size: 15px;
}

.gi-svc-choice {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}

.gi-svc-chip {
  flex: 1 1 calc(50% - 6px);
  margin: 0;
  padding: 12px 10px;
  border-radius: 10px;
  border: 1px solid #d8e2eb;
  background: #eef2f6;
  font-size: 14px;
  font-weight: 700;
  color: #425066;
  cursor: pointer;
  transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}

.gi-svc-chip.is-on {
  background: #5cb85c;
  border-color: #4cae4c;
  color: #fff;
}

.gi-svc-chip:hover {
  border-color: #9bc9e8;
}

.gi-svc-chip.is-on:hover {
  border-color: #449d44;
}

.gi-period-chips {
  display: flex;
  flex-wrap: nowrap;
  gap: 8px;
}

.gi-period-chip {
  flex: 1;
  margin: 0;
  padding: 10px 8px;
  border-radius: 10px;
  border: 1px solid #d8e2eb;
  background: #eef2f6;
  font-size: 14px;
  font-weight: 700;
  color: #425066;
  cursor: pointer;
  transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}

.gi-period-chip.is-on {
  background: #5cb85c;
  border-color: #4cae4c;
  color: #fff;
}

.gi-period-chip:hover {
  border-color: #9bc9e8;
}

.gi-period-chip.is-on:hover {
  border-color: #449d44;
}

.gi-period-muted .gi-period-chip {
  opacity: 0.45;
  pointer-events: none;
}

.gi-long-booking-block {
  margin-bottom: 12px;
}

.gi-long-booking-label {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  font-size: 14px;
  font-weight: 600;
  color: #425066;
  cursor: pointer;
  margin: 0;
}

.gi-long-booking-label input {
  margin-top: 3px;
}

.gi-booking-pf .gi-cal-head {
  padding: 8px 10px;
  margin: -4px -4px 10px;
  border-radius: 8px;
  background: #dbeefa;
}

.gi-booking-pf .gi-cal-day.gi-cal-selected {
  background: #5cb85c;
  border-color: #4cae4c;
  color: #fff;
}

.gi-booking-pf .gi-cal-day.gi-cal-selected:hover {
  background: #4cae4c;
}

.gi-period-btns {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.gi-period-btn {
  position: relative;
  margin: 0;
  padding: 8px 16px;
  border-radius: 8px;
  border: 1px solid #d8e2eb;
  background: #f3f5f7;
  font-size: 13px;
  cursor: pointer;
  color: #425066;
}

.gi-period-btn:has(input:checked) {
  background: #e3eef8;
  border-color: #7eb5d6;
  color: #1a6fa8;
  font-weight: 600;
}

.gi-period-btn input {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}

.gi-book-select,
.gi-book-textarea {
  width: 100%;
  border: 1px solid #d2dde8;
  border-radius: 8px;
  padding: 8px 12px;
  font-size: 14px;
}

.gi-book-textarea {
  resize: vertical;
  min-height: 72px;
}

.gi-cloth-btns {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.gi-cloth-btn {
  position: relative;
  margin: 0;
  padding: 8px 16px;
  border-radius: 8px;
  border: 1px solid #d8e2eb;
  background: #f3f5f7;
  font-size: 13px;
  cursor: pointer;
}

.gi-cloth-btn:has(input:checked) {
  background: #d4edda;
  border-color: #5cb85c;
  color: #2d6a32;
  font-weight: 600;
}

.gi-cloth-btn input {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}

.gi-submit-book-pf,
.gi-submit-inquiry-pf,
.gi-submit-login {
  display: block;
  width: 100%;
  text-align: center;
  padding: 14px 16px;
  margin-top: 10px;
  border-radius: 10px;
  font-size: 15px;
  font-weight: 600;
  border: none;
  cursor: pointer;
  text-decoration: none;
  box-sizing: border-box;
}

.gi-submit-book-pf,
.gi-submit-login {
  background: #5bc0de;
  color: #fff !important;
  box-shadow: 0 3px 12px rgba(91, 192, 222, 0.35);
}

.gi-submit-book-pf:hover,
.gi-submit-login:hover {
  background: #46b8da;
  color: #fff !important;
}

.gi-submit-inquiry-pf {
  background: #5cb85c;
  color: #fff;
  box-shadow: 0 3px 12px rgba(92, 184, 92, 0.35);
}

.gi-submit-inquiry-pf:hover {
  background: #4cae4c;
}

/* --- Guide checkout / booking page (.gi-checkout-pf) --- */
.gi-checkout.gi-checkout-pf {
  max-width: 1180px;
  margin: 0 auto;
  padding: 16px 16px 48px;
  box-sizing: border-box;
}

.gi-checkout-columns {
  display: grid;
  grid-template-columns: minmax(240px, 320px) 1fr;
  gap: 28px;
  align-items: flex-start;
  margin-top: 18px;
}

@media (max-width: 900px) {
  .gi-checkout-columns {
    grid-template-columns: 1fr;
  }
}

.gi-checkout-aside {
  padding: 16px;
  border: 1px solid #e2eaf2;
  border-radius: 12px;
  background: #fafcfd;
  text-align: center;
}

.gi-checkout-portrait {
  margin-bottom: 12px;
}

.gi-checkout-avatar {
  width: 160px;
  height: 160px;
  border-radius: 50%;
  object-fit: cover;
  border: 4px solid #fff;
  box-shadow: 0 6px 18px rgba(23, 43, 77, 0.12);
}

.gi-checkout-name-badge {
  display: inline-block;
  padding: 8px 28px;
  border-radius: 10px;
  background: #d9eaf5;
  color: #1a6fa8;
  font-weight: 700;
  margin-bottom: 10px;
}

.gi-checkout-rating-line {
  font-size: 14px;
  color: #5c6b7a;
  margin-bottom: 12px;
}

.gi-checkout-stars {
  color: #f0ad4e;
  margin-right: 4px;
}

.gi-checkout-rate-num {
  font-weight: 700;
  color: #333;
}

.gi-checkout-pipe {
  margin: 0 6px;
  color: #bcc8d4;
}

.gi-checkout-meta {
  margin: 4px 0;
  font-size: 14px;
  color: #425066;
}

.gi-checkout-city {
  font-weight: 600;
}

.gi-checkout-price-box {
  margin-top: 18px;
  padding-top: 14px;
  border-top: 1px dashed #d8e2eb;
  text-align: left;
}

.gi-checkout-price-title {
  margin: 0 0 4px;
  font-size: 15px;
  color: #1a6fa8;
}

.gi-checkout-price-sub {
  margin: 0 0 8px;
  font-size: 13px;
  color: #5fa8d4;
}

.gi-checkout-price-main {
  margin: 0;
  font-size: 15px;
  color: #333;
  line-height: 1.5;
}

.gi-checkout-aside-fee-label {
  margin-left: 6px;
  margin-right: 4px;
  font-weight: 600;
  color: #1a6fa8;
}

.gi-checkout-price-main strong {
  color: #c0392b;
  font-size: 17px;
}

.gi-checkout-price-tax {
  margin: 8px 0 0;
  font-size: 12px;
  color: #c0392b;
}

.gi-checkout-main {
  padding: 4px 0;
}

.gi-checkout-section {
  margin-bottom: 26px;
}

.gi-checkout-h {
  margin: 0 0 12px;
  font-size: 16px;
  color: #1a6fa8;
}

.gi-checkout-line {
  margin: 0 0 6px;
  font-size: 14px;
}

.gi-checkout-datetime {
  margin: 0;
  font-size: 16px;
  font-weight: 700;
  color: #222;
}

.gi-counter-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 14px;
  flex-wrap: wrap;
}

.gi-counter-label {
  flex: 1;
  min-width: 200px;
  font-size: 14px;
  color: #425066;
}

.gi-counter-price {
  display: block;
  font-size: 13px;
  color: #888;
  margin-top: 4px;
}

.gi-counter {
  display: flex;
  align-items: center;
  gap: 0;
  border: 1px solid #b8d4ea;
  border-radius: 8px;
  overflow: hidden;
  background: #fff;
}

.gi-counter-btn {
  width: 40px;
  height: 40px;
  border: none;
  background: #5bc0de;
  color: #fff;
  font-size: 20px;
  line-height: 1;
  cursor: pointer;
}

.gi-counter-btn:hover {
  background: #46b8da;
}

.gi-counter-input {
  width: 52px;
  height: 40px;
  border: none;
  text-align: center;
  font-size: 16px;
  font-weight: 600;
}

.gi-checkout-tip {
  padding: 12px 14px;
  border-radius: 8px;
  background: #e8f4fc;
  font-size: 13px;
  color: #2c6b94;
}

.gi-checkout-input,
.gi-checkout-textarea {
  width: 100%;
  box-sizing: border-box;
  margin-bottom: 10px;
  padding: 10px 12px;
  border: 1px solid #d2dde8;
  border-radius: 8px;
  font-size: 14px;
}

.gi-meeting-place-wrap {
  position: relative;
  margin-bottom: 10px;
}

.gi-meeting-place-wrap .gi-checkout-input {
  margin-bottom: 0;
}

.gi-place-dropdown {
  position: absolute;
  left: 0;
  right: 0;
  top: 100%;
  z-index: 50;
  max-height: 260px;
  overflow: auto;
  margin: 4px 0 0;
  padding: 4px 0;
  list-style: none;
  background: #fff;
  border: 1px solid #d2dde8;
  border-radius: 8px;
  box-shadow: 0 8px 24px rgba(15, 35, 52, 0.12);
}

.gi-place-dropdown li {
  margin: 0;
  padding: 10px 12px;
  font-size: 13px;
  line-height: 1.35;
  color: #334;
  cursor: pointer;
}

.gi-place-dropdown li:hover,
.gi-place-dropdown li:focus {
  background: #f0f6fc;
}

.gi-map-wrap {
  position: relative;
  margin-top: 10px;
  border-radius: 10px;
  overflow: hidden;
  border: 1px solid #dfe8ef;
}

.gi-map-hint {
  margin: 0;
  padding: 8px 12px;
  font-size: 12px;
  color: #6c7a89;
  background: #f7fafc;
  border-bottom: 1px solid #eef3f7;
}

.gi-map-frame {
  width: 100%;
  height: 320px;
  border: 0;
  display: block;
}

/* Google Places 自动完成下拉层，需高于 #gi-map-canvas */
.pac-container {
  z-index: 10050 !important;
}

.gi-checkout-check {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  margin-top: 12px;
  font-size: 13px;
  color: #555;
  cursor: pointer;
}

.gi-checkout-check input {
  margin-top: 3px;
}

.gi-transport-opt {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 12px 14px;
  margin-bottom: 10px;
  border: 1px solid #dfe8ef;
  border-radius: 10px;
  cursor: pointer;
  background: #fafcfd;
}

.gi-transport-opt:has(input:checked) {
  border-color: #7eb5d6;
  background: #eef7fc;
}

.gi-transport-body {
  display: block;
  flex: 1;
}

.gi-transport-body i {
  margin-right: 8px;
  color: #425066;
}

.gi-transport-body strong {
  display: block;
  margin-bottom: 4px;
  color: #222;
}

.gi-transport-body small {
  display: block;
  font-size: 13px;
  color: #5c6b7a;
}

.gi-transport-note {
  display: block;
  margin-top: 6px;
  font-size: 12px;
  color: #888;
}

.gi-checkout-totals {
  padding: 16px;
  border-radius: 12px;
  background: #e8f4fc;
}

.gi-total-rows > div {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 10px;
  font-size: 14px;
  color: #425066;
}

.gi-total-rows > div strong {
  font-size: 15px;
  color: #1a5080;
}

.gi-total-grand {
  margin-top: 8px !important;
  padding-top: 12px;
  border-top: 1px solid #cfe5f5;
  font-weight: 700;
}

.gi-total-grand strong {
  font-size: 18px !important;
}

.gi-checkout-submit {
  display: block;
  width: 100%;
  margin-top: 8px;
  padding: 16px;
  border: none;
  border-radius: 12px;
  background: #5bc0de;
  color: #fff;
  font-size: 16px;
  font-weight: 700;
  cursor: pointer;
  box-shadow: 0 4px 14px rgba(91, 192, 222, 0.35);
}

.gi-checkout-submit:hover {
  background: #46b8da;
}

.pt-cart-shell {
  padding: 8px 0 48px;
}
.pt-cart-inner {
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 16px;
}
.pt-cart-heading {
  font-size: 22px;
  font-weight: 700;
  margin: 0 0 20px;
  padding-bottom: 10px;
  border-bottom: 2px solid #cfdce8;
  color: #1f3f5f;
}
.pt-cart-panel {
  margin-bottom: 20px;
  padding: 18px 20px 22px;
  border: 1px solid #dfe5ea;
  border-radius: 4px;
  background: #fff;
  box-shadow: 0 1px 2px rgba(31, 63, 95, 0.06);
}
.pt-cart-panel--empty {
  padding: 28px 20px;
}
.pt-cart-panel-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 14px;
  padding-bottom: 10px;
  border-bottom: 1px solid #ecf1f5;
}
.pt-cart-panel-title {
  margin: 0;
  font-size: 18px;
  font-weight: 700;
  color: #174a73;
}
.pt-cart-panel-muted {
  margin: 0;
  padding: 8px 4px;
}
.pt-cart-select-all {
  cursor: pointer;
  font-weight: 500;
  font-size: 13px;
  margin: 0;
  color: #3a7ca5;
}
.pt-cart-select-all input {
  margin-right: 6px;
  vertical-align: middle;
}
.pt-cart-checkout-split {
  margin-top: 8px;
  align-items: stretch;
}
.pt-cart-table-wrap {
  margin-top: 4px;
}
.pt-cart-table {
  margin-bottom: 0;
  font-size: 13px;
  border-color: #e4eaef !important;
}
.pt-cart-table > thead > tr > th {
  vertical-align: middle !important;
  padding: 10px 8px !important;
  border-color: #e4eaef !important;
  background: linear-gradient(180deg, #fafcfd 0%, #f3f8fb 100%) !important;
  font-weight: 600 !important;
  color: #2f4f6f !important;
}
.pt-cart-table > tbody > tr > td {
  vertical-align: middle !important;
  padding: 10px 8px !important;
  border-color: #eaeef2 !important;
}
.pt-cart-empty-cell {
  padding: 20px !important;
}
.pt-col-act {
  width: 42px;
  max-width: 42px;
  padding-left: 4px !important;
  padding-right: 4px !important;
  text-align: center !important;
  vertical-align: middle !important;
}
.pt-cart-icon-x {
  display: inline-block;
  padding: 0;
  margin: 0;
  border: none;
  background: none;
  color: #c62828;
  font-size: 22px;
  line-height: 1;
  cursor: pointer;
}
.pt-cart-thumb {
  width: 44px;
  height: 44px;
  object-fit: cover;
  border-radius: 4px;
  margin-right: 10px;
}
.pt-cart-guide-cell {
  display: flex;
  align-items: center;
}
.pt-cart-money {
  white-space: nowrap;
  font-weight: 600;
  color: #174a73;
}
.pt-cart-flash {
  margin-bottom: 14px;
}
.pt-cart-pay-panel .pt-cart-subhead,
.pt-cart-summary-panel .pt-cart-subhead {
  margin: 0 0 16px;
  font-size: 16px;
  font-weight: 700;
  color: #174a73;
}
.pt-cart-subhead--contact {
  margin-top: 24px !important;
  padding-top: 8px;
  border-top: 1px solid #edf2f6;
}
.pt-cart-pay-panel .form-group {
  margin-bottom: 14px;
}
.pt-cart-pay-panel .control-label {
  display: block;
  margin-bottom: 6px;
  font-weight: 600;
  color: #39566e;
  font-size: 13px;
}
.pt-cart-select {
  height: 40px !important;
  border-radius: 4px !important;
  border-color: #cbd5de !important;
  font-size: 14px;
}
.pt-cart-summary-panel {
  position: sticky;
  top: 88px;
}
.pt-cart-sum-line {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 12px;
  margin-bottom: 12px;
  font-size: 15px;
  color: #39566e;
}
.pt-cart-sum-line strong {
  white-space: nowrap;
  font-weight: 700;
  color: #174a73;
}
.pt-cart-sum-line--grand {
  margin-top: 8px;
  padding-top: 14px;
  border-top: 1px solid #e1e8ee;
  font-size: 17px;
  font-weight: 700;
}
.pt-cart-sum-line--grand strong {
  font-size: 18px;
}
.pt-cart-sum-note {
  font-size: 12px;
  color: #7a8a9a;
  line-height: 1.45;
  margin: 14px 0;
}
.pt-cart-agree {
  margin-bottom: 16px;
}
.pt-cart-agree-label {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  cursor: pointer;
  font-size: 13px;
  font-weight: normal;
  color: #39566e;
  line-height: 1.55;
}
.pt-cart-agree-copy {
  flex: 1;
}
.pt-cart-agree-label input[type="checkbox"] {
  margin-top: 4px;
  flex-shrink: 0;
}
.pt-cart-policy-link {
  color: #2b7bbd !important;
  text-decoration: underline;
  font-weight: 500;
}
.pt-cart-policy-link:hover {
  color: #1a5080 !important;
}
.pt-cart-btn-pay {
  padding: 14px 16px !important;
  border-radius: 4px !important;
  font-size: 17px !important;
  font-weight: 700 !important;
  border: none !important;
  background: linear-gradient(180deg, #54b363 0%, #41a354 100%) !important;
  box-shadow: 0 2px 8px rgba(56, 142, 74, 0.35) !important;
  color: #fff !important;
}
.pt-cart-btn-pay:hover,
.pt-cart-btn-pay:focus {
  background: linear-gradient(180deg, #4aa858 0%, #38914a 100%) !important;
  color: #fff !important;
}

/* ---------- SPA 预约平台（独立版式，非导游页） ---------- */
.spa-page--listing {
  max-width: 1280px;
  margin: 0 auto;
  padding: 20px 20px 56px;
  color: #2c3d4d;
}
.spa-hero {
  text-align: center;
  margin-bottom: 28px;
  padding: 8px 12px 4px;
}
.spa-hero--visual {
  padding: 28px 16px 24px;
  border-radius: 14px;
  color: #fff;
}
.spa-hero--visual .spa-hero-title {
  color: #fff;
  text-shadow: 0 1px 8px rgba(0, 0, 0, 0.45);
}
.spa-hero--visual .spa-kicker {
  color: rgba(255, 255, 255, 0.95);
  text-shadow: 0 1px 6px rgba(0, 0, 0, 0.4);
}
.spa-hero--visual .spa-hero-icon {
  background: rgba(255, 255, 255, 0.25);
  color: #fff;
}
.spa-hero-title {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  flex-wrap: wrap;
  margin: 0 0 12px;
  font-size: clamp(22px, 3vw, 30px);
  font-weight: 800;
  color: #1565c0;
  letter-spacing: 0.02em;
}
.spa-hero-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: linear-gradient(145deg, #e3f2fd 0%, #bbdefb 100%);
  color: #0d47a1;
  font-size: 20px;
}
.spa-page--listing .spa-kicker {
  margin: 0 auto;
  max-width: 720px;
  font-size: 15px;
  line-height: 1.65;
  color: #546e7a;
}
.spa-layout {
  display: grid;
  grid-template-columns: minmax(260px, 300px) 1fr;
  gap: 28px;
  align-items: start;
}
.spa-sidebar {
  position: sticky;
  top: 72px;
}
.spa-filter-card {
  background: #fff;
  border: 1px solid #e1ecf4;
  border-radius: 14px;
  padding: 18px 18px 20px;
  box-shadow: 0 8px 28px rgba(21, 101, 192, 0.08);
}
.spa-filter-card-title {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 0 0 18px;
  font-size: 17px;
  font-weight: 700;
  color: #1565c0;
}
.spa-filter-card-title .fa {
  opacity: 0.85;
}
.spa-field-block {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin-bottom: 14px;
}
.spa-field-label {
  font-size: 13px;
  font-weight: 600;
  color: #455a64;
}
.spa-select--full,
.spa-input--full {
  width: 100%;
}
.spa-price-row {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 14px;
}
.spa-price-row .spa-input {
  flex: 1;
  min-width: 0;
}
.spa-price-sep {
  color: #90a4ae;
  flex-shrink: 0;
}
.spa-select,
.spa-input {
  border: 1px solid #cfd8dc;
  border-radius: 8px;
  padding: 10px 12px;
  font-size: 14px;
  background: #fff;
  min-height: 42px;
}
.spa-filter-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 8px;
}
.spa-btn-primary {
  flex: 1;
  min-width: 120px;
  border: none;
  border-radius: 10px;
  padding: 12px 16px;
  font-size: 15px;
  font-weight: 700;
  cursor: pointer;
  background: linear-gradient(180deg, #1e88e5 0%, #1565c0 100%);
  color: #fff;
  box-shadow: 0 2px 10px rgba(21, 101, 192, 0.35);
}
.spa-btn-primary:hover {
  filter: brightness(1.05);
}
.spa-btn-outline {
  flex: 1;
  min-width: 120px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 12px 16px;
  border-radius: 10px;
  border: 1px solid #90caf9;
  background: #fff;
  color: #1565c0;
  font-weight: 700;
  font-size: 15px;
  text-decoration: none !important;
}
.spa-btn-outline:hover {
  background: #e3f2fd;
}
.spa-main {
  min-width: 0;
}
.spa-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 12px 20px;
  margin-bottom: 20px;
  padding: 4px 2px;
}
.spa-found {
  margin: 0;
  font-size: 15px;
  font-weight: 600;
  color: #37474f;
}
.spa-sort-line {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0;
}
.spa-sort-label {
  font-size: 14px;
  font-weight: 600;
  color: #546e7a;
}
.spa-sort-line .spa-select {
  min-width: 180px;
}
.spa-card-list {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 22px;
}
.spa-card--link {
  display: flex;
  flex-direction: column;
  text-decoration: none !important;
  color: inherit !important;
  border: 1px solid #e1ecf4;
  border-radius: 14px;
  overflow: hidden;
  background: #fff;
  box-shadow: 0 6px 24px rgba(25, 55, 80, 0.07);
  transition: box-shadow 0.2s ease, transform 0.2s ease;
}
.spa-card--link:hover {
  box-shadow: 0 12px 32px rgba(21, 101, 192, 0.14);
  transform: translateY(-2px);
}
.spa-card-photo {
  aspect-ratio: 16 / 10;
  background: #eceff1;
  overflow: hidden;
}
.spa-card-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.spa-card-body {
  padding: 16px 16px 18px;
  display: flex;
  flex-direction: column;
  gap: 6px;
  flex: 1;
}
.spa-card-title {
  margin: 0;
  font-size: 17px;
  font-weight: 800;
  color: #1a2b3c;
  line-height: 1.35;
}
.spa-card-loc {
  margin: 0;
  font-size: 13px;
  color: #607d8b;
}
.spa-card-stars {
  margin: 4px 0 0;
  font-size: 14px;
  color: #455a64;
}
.spa-star-ic {
  margin-right: 4px;
}
.spa-review-paren {
  color: #78909c;
  margin-left: 2px;
}
.spa-rate-num {
  font-weight: 700;
}
.spa-card-price {
  margin: 8px 0 10px;
  font-size: 14px;
  font-weight: 700;
  color: #1565c0;
}
.spa-page--listing .spa-btn-book {
  margin-top: auto;
  display: block;
  text-align: center;
  padding: 12px 16px;
  border-radius: 10px;
  background: linear-gradient(180deg, #1e88e5 0%, #1565c0 100%);
  color: #fff !important;
  font-weight: 700;
  font-size: 15px;
  box-shadow: 0 2px 8px rgba(21, 101, 192, 0.3);
}
.spa-empty {
  text-align: center;
  padding: 48px 16px;
  color: #90a4ae;
  font-size: 16px;
}
.spa-pager {
  margin-top: 32px;
  text-align: center;
}
@media (max-width: 1100px) {
  .spa-card-list {
    grid-template-columns: repeat(2, 1fr);
  }
}
@media (max-width: 860px) {
  .spa-layout {
    grid-template-columns: 1fr;
  }
  .spa-sidebar {
    position: static;
  }
  .spa-card-list {
    grid-template-columns: 1fr;
  }
}

/* ---------- SPA 详情页 ---------- */
.spa-page:not(.spa-page--listing) {
  max-width: 1140px;
  margin: 0 auto;
  padding: 20px 16px 56px;
  color: #263238;
}
.spa-subnav {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px 20px;
  margin-bottom: 20px;
  font-size: 14px;
}
.spa-back {
  color: #1565c0;
  font-weight: 600;
}
.spa-breadcrumb {
  color: #5a6d7e;
}
.spa-bc-sep {
  margin: 0 6px;
  color: #9aaab8;
}
.spa-bc-current {
  color: #263238;
  font-weight: 600;
}
.spa-page--detail .spa-pipe {
  margin: 0 6px;
  color: #9aaab8;
}

.spa-detail-card {
  background: #fff;
  border: 1px solid #e8edf2;
  border-radius: 16px;
  box-shadow: 0 8px 28px rgba(21, 101, 192, 0.07);
  padding: 22px;
  margin-bottom: 24px;
}
.spa-detail-card-grid {
  display: grid;
  grid-template-columns: minmax(280px, 1fr) minmax(320px, 1.15fr);
  gap: 28px;
  align-items: start;
}
.spa-detail-media {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  min-width: 0;
}
.spa-detail-photo-frame {
  border-radius: 14px;
  overflow: hidden;
  background: #eceff1;
  aspect-ratio: 4 / 3;
}
.spa-detail-main-photo {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.spa-detail-photo-ph {
  border-radius: 14px;
  background: linear-gradient(145deg, #eceff1, #e3f2fd);
  aspect-ratio: 4 / 3;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 10px;
  color: #78909c;
  font-weight: 600;
}
.spa-detail-photo-ph .fa {
  font-size: 40px;
  opacity: 0.6;
}
.spa-detail-title {
  margin: 0 0 16px;
  font-size: clamp(22px, 2.5vw, 30px);
  font-weight: 800;
  color: #1565c0;
  line-height: 1.25;
}
.spa-detail-meta {
  list-style: none;
  margin: 0 0 16px;
  padding: 0;
  font-size: 15px;
}
.spa-detail-meta li {
  margin-bottom: 10px;
  line-height: 1.5;
}
.spa-dk {
  font-weight: 700;
  margin-right: 8px;
  color: #455a64;
}
.spa-dv {
  color: #263238;
}
.spa-address-link {
  color: #1565c0;
  text-decoration: underline;
  word-break: break-word;
}
.spa-detail-price-line {
  font-weight: 800;
  color: #1565c0;
  font-size: 16px;
}
.spa-detail-rating-row .spa-star-gold {
  color: #ffc107;
  margin-right: 4px;
}
.spa-review-paren {
  color: #78909c;
}
.spa-detail-intro-inline {
  margin-top: 8px;
  padding: 14px 16px;
  background: #f4f6f8;
  border-radius: 12px;
  border: 1px solid #eceff1;
}
.spa-detail-intro-inline .spa-intro-text {
  white-space: pre-line;
  line-height: 1.65;
  margin: 0;
  font-size: 15px;
  color: #455a64;
}

.spa-detail-thumbs {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 14px;
}
.spa-gallery-thumb {
  padding: 0;
  border: 2px solid #e0e0e0;
  border-radius: 10px;
  overflow: hidden;
  width: 88px;
  height: 88px;
  flex-shrink: 0;
  cursor: pointer;
  background: #eceff1;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.spa-gallery-thumb:hover,
.spa-gallery-thumb:focus {
  border-color: #42a5f5;
  box-shadow: 0 4px 12px rgba(21, 101, 192, 0.2);
  outline: none;
}
.spa-gallery-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.spa-book-card {
  background: #fff;
  border: 1px solid #e8edf2;
  border-radius: 16px;
  box-shadow: 0 8px 28px rgba(21, 101, 192, 0.07);
  padding: 26px 22px 30px;
}
.spa-form-sect {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 18px;
  font-weight: 800;
  margin: 26px 0 16px;
  color: #1a1a1a;
  border: none;
  padding: 0;
}
.spa-book-card > .spa-form-sect:first-child {
  margin-top: 0;
}
.spa-form-sect-bar {
  width: 4px;
  height: 22px;
  border-radius: 2px;
  background: #1565c0;
  flex-shrink: 0;
}
.spa-form-grid--2 {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 16px;
}
.spa-form-grid--3 {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
}
@media (max-width: 768px) {
  .spa-form-grid--2,
  .spa-form-grid--3 {
    grid-template-columns: 1fr;
  }
}
.spa-field {
  display: flex;
  flex-direction: column;
  gap: 6px;
  font-size: 14px;
  font-weight: 600;
  color: #455a64;
}
.spa-field--block {
  margin-top: 18px;
}
.spa-field--block-plain {
  display: block;
  margin: 0;
}
.spa-field input,
.spa-field textarea,
.spa-field select,
.spa-select-time {
  font-weight: 500;
  border: 1px solid #cfd8dc;
  border-radius: 8px;
  padding: 11px 12px;
  font-size: 14px;
  background: #fff;
}
.spa-select-time {
  width: 100%;
  min-height: 44px;
}
.spa-callout {
  border-radius: 10px;
  padding: 12px 14px;
  margin-bottom: 16px;
  font-size: 14px;
  line-height: 1.55;
}
.spa-callout p {
  margin: 0;
}
.spa-callout--info {
  background: #e3f2fd;
  color: #0d47a1;
  border: 1px solid #bbdefb;
}
.spa-callout--warn {
  background: #fff8e1;
  color: #e65100;
  border: 1px solid #ffe082;
}

.spa-svc-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
  gap: 12px;
}
.spa-svc-card {
  display: block;
  margin: 0;
  cursor: pointer;
  position: relative;
}
.spa-svc-card input {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}
.spa-svc-card-inner {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 14px 16px;
  border: 1px solid #cfd8dc;
  border-radius: 12px;
  background: #fafbfc;
  transition: border-color 0.15s, background 0.15s, box-shadow 0.15s;
}
.spa-svc-card:hover .spa-svc-card-inner {
  border-color: #90caf9;
}
.spa-svc-card input:checked + .spa-svc-card-inner {
  border-color: #1565c0;
  background: #e3f2fd;
  box-shadow: 0 2px 10px rgba(21, 101, 192, 0.15);
}
.spa-svc-card-title {
  font-weight: 800;
  color: #1a1a1a;
}
.spa-book-card > .spa-form-service-hint {
  margin: -6px 0 16px;
  font-size: 14px;
  line-height: 1.55;
  color: #607d8b;
}
.spa-svc-card-meta {
  font-size: 14px;
  color: #607d8b;
  font-weight: 600;
}
.spa-svc-empty {
  margin: 0;
  font-size: 14px;
  color: #78909c;
}

.spa-time-book {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 24px;
  margin-bottom: 12px;
}
@media (max-width: 860px) {
  .spa-detail-card-grid {
    grid-template-columns: 1fr;
  }
  .spa-time-book {
    grid-template-columns: 1fr;
  }
}
.spa-time-sub {
  margin: 0 0 10px;
  font-size: 14px;
  font-weight: 700;
  color: #455a64;
}
.spa-cal {
  border: 1px solid #e1ecf4;
  border-radius: 12px;
  padding: 10px;
  background: #fafbfc;
  max-width: 320px;
}
.spa-cal-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 8px;
}
.spa-cal-nav {
  border: none;
  background: #fff;
  width: 32px;
  height: 32px;
  border-radius: 8px;
  cursor: pointer;
  color: #1565c0;
  font-size: 18px;
  line-height: 1;
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06);
}
.spa-cal-title {
  font-weight: 800;
  font-size: 15px;
  color: #263238;
}
.spa-cal-weekdays {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  text-align: center;
  font-size: 11px;
  font-weight: 700;
  color: #78909c;
  margin-bottom: 4px;
}
.spa-cal-grid {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 4px;
}
.spa-cal-day {
  border: none;
  background: #fff;
  border-radius: 8px;
  height: 32px;
  font-size: 13px;
  cursor: pointer;
  color: #263238;
}
.spa-cal-day--muted {
  background: transparent;
  cursor: default;
}
.spa-cal-day--disabled {
  opacity: 0.35;
  cursor: not-allowed;
}
.spa-cal-day--pick {
  background: #1565c0;
  color: #fff;
  font-weight: 700;
}
.spa-book-summary {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px 28px;
  padding: 12px 16px;
  background: #e3f2fd;
  border: 1px solid #bbdefb;
  border-radius: 10px;
  margin-bottom: 18px;
  font-size: 14px;
  color: #0d47a1;
}
.spa-book-summary-gap {
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
.spa-sum-slot {
  display: inline-block;
  padding: 4px 12px;
  border-radius: 8px;
  border: 1px solid #1565c0;
  background: #fff;
  font-weight: 700;
  color: #1565c0;
}

.spa-detail-submit {
  display: block;
  width: 100%;
  margin-top: 8px;
  border: none;
  border-radius: 12px;
  padding: 16px 20px;
  font-size: 17px;
  font-weight: 800;
  cursor: pointer;
  background: linear-gradient(180deg, #1e88e5 0%, #1565c0 100%);
  color: #fff;
  text-align: center;
  box-shadow: 0 4px 14px rgba(21, 101, 192, 0.35);
  transition: filter 0.15s;
}
.spa-detail-submit:hover {
  filter: brightness(1.05);
}
a.spa-detail-submit--link {
  text-decoration: none !important;
}
.spa-login-aux {
  margin: 12px 0 0;
  text-align: center;
  font-size: 14px;
  color: #607d8b;
}
.spa-login-aux a {
  color: #1565c0;
  font-weight: 700;
}

/* ---------- 旅游行程 /trips（列表对标 playfultours 截图） ---------- */
.trips-list-shell {
  background: linear-gradient(180deg, #faf9f7 0%, #eef1f5 55%, #faf9f7 100%);
  padding: 28px 0 56px;
  margin: 0;
}
.trips-page {
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 24px 8px;
  color: #243041;
}
.trips-page--list {
  background: transparent;
}
.trips-page--list .trips-hero--split {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(24px, 4vw, 48px);
  align-items: center;
  margin: 0 0 40px;
  padding: 0;
  background: transparent;
  border-radius: 0;
  box-shadow: none;
  overflow: visible;
}
.trips-hero-visual {
  border-radius: 16px;
  overflow: hidden;
  background: #e8eef4;
  box-shadow: 0 8px 28px rgba(0, 0, 0, 0.1);
}
.trips-hero-img {
  display: block;
  width: 100%;
  height: auto;
  vertical-align: middle;
  object-fit: cover;
}
.trips-hero-copy {
  padding: 8px 0 8px 4px;
}
.trips-page--list .trips-hero-title {
  margin: 0 0 14px;
  font-size: clamp(22px, 2.6vw, 30px);
  font-weight: 700;
  letter-spacing: 0.01em;
  line-height: 1.35;
  color: #111;
  text-shadow: none;
}
.trips-hero-accent {
  display: block;
  width: 52px;
  height: 4px;
  margin: 0 0 18px;
  border-radius: 2px;
  background: #e53935;
}
.trips-page--list .trips-hero-kicker {
  margin: 0;
  font-size: 15px;
  line-height: 1.75;
  color: #666;
  text-shadow: none;
  max-width: none;
}
@media (max-width: 991px) {
  .trips-page--list .trips-hero--split {
    grid-template-columns: 1fr;
  }
  .trips-hero-visual {
    order: -1;
  }
}
.trips-filter-row {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: 12px 16px;
  margin: 0 0 32px;
}
.trips-filter-label {
  margin: 0;
  font-size: 15px;
  font-weight: 500;
  color: #333;
}
.trips-region-select {
  min-width: 220px;
  padding: 10px 36px 10px 14px;
  font-size: 15px;
  color: #333;
  background-color: #fff;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23555' d='M6 8L1 3h10z'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 12px center;
  border: 1px solid #cfd8dc;
  border-radius: 6px;
  appearance: none;
  cursor: pointer;
}
.trips-region-select:focus {
  outline: none;
  border-color: #90a4ae;
  box-shadow: 0 0 0 2px rgba(144, 164, 174, 0.25);
}
/* —— 行程页：宣传区 vs 商品区 严格区分 —— */
.trips-zone {
  margin: 0 0 28px;
}
.trips-zone-head {
  margin: 0 0 16px;
}
.trips-zone-head-top {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px 14px;
  margin-bottom: 8px;
}
.trips-zone-title {
  margin: 0;
  font-size: clamp(1.2rem, 2vw, 1.45rem);
  font-weight: 800;
  letter-spacing: 0.02em;
  color: #263238;
}
.trips-zone-tag {
  display: inline-block;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  padding: 5px 11px;
  border-radius: 6px;
  line-height: 1;
}
.trips-zone-tag--promo {
  background: rgba(141, 110, 99, 0.2);
  color: #5d4037;
  border: 1px dashed rgba(93, 64, 55, 0.45);
}
.trips-zone-tag--catalog {
  background: rgba(21, 101, 192, 0.12);
  color: #0d47a1;
  border: 1px solid rgba(21, 101, 192, 0.28);
}
.trips-zone-note {
  margin: 0;
  font-size: 0.9rem;
  line-height: 1.65;
  color: #6d4c41;
  max-width: 52em;
  padding: 12px 14px;
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.65);
  border-left: 4px solid #a1887f;
}
.trips-zone-head--catalog .trips-zone-title {
  color: #0d1b2a;
}
.trips-zone--promo .trips-zone-body {
  padding: 20px 20px 24px;
  border-radius: 14px;
  background: linear-gradient(165deg, #efebe9 0%, #f5f1ec 40%, #efe7e0 100%);
  border: 1px dashed rgba(109, 76, 65, 0.35);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.6);
}
.trips-zone--catalog .trips-zone-body {
  padding: 22px 22px 28px;
  border-radius: 14px;
  background: #fff;
  border: 1px solid rgba(13, 27, 42, 0.12);
  box-shadow: 0 4px 24px rgba(13, 27, 42, 0.06);
}
.trips-zone--promo .trips-spotlights {
  margin: 0;
}
.trips-zone--catalog .trips-filter-row {
  margin: 0 0 24px;
  justify-content: flex-start;
}
.trips-spot-cover {
  position: relative;
  aspect-ratio: 16 / 10;
  overflow: hidden;
  background: #eceff1;
}
.trips-spot-ribbon {
  position: absolute;
  top: 10px;
  left: 10px;
  z-index: 2;
  font-size: 0.68rem;
  font-weight: 800;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  padding: 5px 10px;
  border-radius: 4px;
  background: rgba(93, 64, 55, 0.9);
  color: #fff;
  pointer-events: none;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
}
.trips-spot-hit {
  display: flex;
  flex-direction: column;
  height: 100%;
  border-radius: 12px;
  overflow: hidden;
  background: rgba(255, 255, 255, 0.88);
  border: 1px dashed rgba(109, 76, 65, 0.28);
  box-shadow: none;
  text-decoration: none !important;
  color: inherit !important;
  transition: box-shadow 0.2s, border-color 0.2s, background 0.2s;
}
a.trips-spot-hit:hover {
  box-shadow: 0 8px 28px rgba(93, 64, 55, 0.12);
  border-color: rgba(109, 76, 65, 0.45);
  background: #fff;
}
.trips-editorial-visual {
  position: relative;
  border-radius: 14px;
  overflow: hidden;
  background: #e3e8ed;
  box-shadow: 0 14px 42px rgba(36, 48, 65, 0.14);
}
.trips-bookable-pill {
  position: absolute;
  top: 12px;
  right: 12px;
  z-index: 2;
  font-size: 0.74rem;
  font-weight: 800;
  letter-spacing: 0.06em;
  padding: 6px 12px;
  border-radius: 999px;
  background: #1565c0;
  color: #fff;
  pointer-events: none;
  box-shadow: 0 2px 10px rgba(13, 71, 161, 0.35);
}
.trips-spotlights-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 28px 36px;
  align-items: stretch;
}
@media (max-width: 900px) {
  .trips-spotlights-grid {
    grid-template-columns: 1fr;
  }
}
.trips-spot-card {
  margin: 0;
}
.trips-spot-cover img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.trips-spot-body {
  padding: 16px 16px 18px;
  flex: 1;
}
.trips-spot-title {
  font-size: 1.05rem;
  font-weight: 700;
  margin: 0 0 8px;
  line-height: 1.35;
}
.trips-spot-desc {
  margin: 0;
  font-size: 0.92rem;
  line-height: 1.55;
  color: #546e7a;
}
/* 行程列表：杂志式左右交错，弱化「商品货架」感 */
.trips-editorial-list {
  display: flex;
  flex-direction: column;
  gap: 0;
  margin-top: 12px;
}
.trips-editorial {
  display: grid;
  grid-template-columns: minmax(260px, 1.08fr) minmax(300px, 1fr);
  gap: clamp(28px, 4.5vw, 52px);
  align-items: center;
  padding: clamp(32px, 4.5vw, 48px) 0;
  border-bottom: 1px solid rgba(36, 48, 65, 0.1);
  text-decoration: none !important;
  color: inherit !important;
  transition: background 0.22s ease;
}
.trips-editorial:last-child {
  border-bottom: none;
}
.trips-editorial:hover {
  background: rgba(255, 255, 255, 0.5);
}
.trips-editorial:nth-child(even) {
  grid-template-columns: minmax(300px, 1fr) minmax(260px, 1.08fr);
}
.trips-editorial:nth-child(even) .trips-editorial-visual {
  order: 2;
}
.trips-editorial:nth-child(even) .trips-editorial-text {
  order: 1;
}
.trips-editorial-visual img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  vertical-align: middle;
}
.trips-editorial-text {
  padding: 8px 6px 8px 4px;
  min-width: 0;
}
.trips-editorial-title {
  margin: 0 0 12px;
  font-size: clamp(1.28rem, 2.15vw, 1.68rem);
  font-weight: 700;
  line-height: 1.32;
  color: #1a2332;
  letter-spacing: 0.015em;
}
.trips-editorial-lead {
  margin: 0 0 18px;
  font-size: 1.02rem;
  line-height: 1.68;
  color: #5a6a7a;
  max-width: 40em;
}
.trips-editorial-price {
  margin: 0 0 16px;
  font-size: 0.88rem;
  line-height: 1.55;
  color: #6b7c8c;
}
.trips-editorial-price-label {
  display: block;
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: #90a4ae;
  margin-bottom: 5px;
}
.trips-editorial-price-num {
  font-weight: 600;
  color: #455a64;
}
.trips-editorial-cta {
  display: inline-block;
  font-size: 0.96rem;
  font-weight: 600;
  color: #1565c0;
  letter-spacing: 0.02em;
  border-bottom: 2px solid rgba(21, 101, 192, 0.35);
  padding-bottom: 2px;
  transition: color 0.2s, border-color 0.2s;
}
.trips-editorial:hover .trips-editorial-cta {
  color: #0d47a1;
  border-bottom-color: #0d47a1;
}
@media (max-width: 767px) {
  .trips-editorial {
    grid-template-columns: 1fr;
    gap: 20px;
    padding: 28px 0;
  }
  .trips-editorial:nth-child(even) .trips-editorial-visual,
  .trips-editorial:nth-child(even) .trips-editorial-text {
    order: unset;
  }
  .trips-editorial-visual {
    order: -1;
  }
}
.trips-empty {
  text-align: center;
  padding: 48px 16px;
  font-size: 16px;
  color: #78909c;
}
.trips-pager {
  margin-top: 36px;
}
.trips-pager .pagination {
  justify-content: center;
}

/* Detail */
.trips-page--detail {
  padding-top: 12px;
}
.trips-detail-stage {
  display: grid;
  grid-template-columns: 1fr;
  gap: 24px;
  align-items: start;
  margin-bottom: 40px;
}
@media (min-width: 992px) {
  .trips-detail-stage {
    grid-template-columns: minmax(0, 1fr) minmax(320px, 420px);
    gap: 32px;
  }
}
.trips-detail-gallery {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.trips-detail-main-frame {
  border-radius: 16px;
  overflow: hidden;
  background: #e8eef4;
  box-shadow: 0 12px 36px rgba(20, 32, 51, 0.12);
}
.trips-detail-main-img {
  width: 100%;
  height: auto;
  display: block;
  vertical-align: middle;
}
.trips-detail-thumbs {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.trips-thumb {
  padding: 0;
  margin: 0;
  border: 2px solid transparent;
  border-radius: 10px;
  overflow: hidden;
  cursor: pointer;
  background: #fff;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
  transition: border-color 0.15s, box-shadow 0.15s;
}
.trips-thumb:hover {
  border-color: rgba(232, 93, 76, 0.7);
  box-shadow: 0 4px 14px rgba(232, 93, 76, 0.2);
}
.trips-thumb img {
  display: block;
  width: 120px;
  height: 90px;
  object-fit: cover;
}
.trips-detail-panel {
  position: static;
}
@media (min-width: 992px) {
  .trips-detail-panel {
    position: sticky;
    top: 88px;
  }
}
.trips-detail-title {
  margin: 0 0 10px;
  font-size: clamp(22px, 2.4vw, 28px);
  font-weight: 800;
  line-height: 1.3;
  color: #142033;
}
.trips-detail-subtitle {
  margin: 0 0 18px;
  font-size: 15px;
  line-height: 1.6;
  color: #546e7a;
}
.trips-detail-pricebox {
  padding: 16px 18px;
  margin-bottom: 20px;
  border-radius: 14px;
  background: linear-gradient(180deg, #fff8f5 0%, #fff 100%);
  border: 1px solid rgba(232, 93, 76, 0.22);
}
.trips-price-vnd {
  margin: 0 0 6px;
  font-size: 17px;
  font-weight: 800;
  color: #c62828;
  line-height: 1.45;
}
.trips-price-nt {
  margin: 0 0 8px;
  font-size: 14px;
  color: #37474f;
  font-weight: 600;
}
.trips-price-note {
  margin: 0;
  font-size: 12px;
  color: #78909c;
  line-height: 1.5;
}
.trips-buy-form {
  display: flex;
  flex-direction: column;
  gap: 14px;
  margin-bottom: 20px;
}
.trips-field {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.trips-field span {
  font-size: 13px;
  font-weight: 700;
  color: #455a64;
}
.trips-field input[type="date"],
.trips-select {
  width: 100%;
  max-width: 100%;
  padding: 11px 12px;
  border: 1px solid rgba(20, 32, 51, 0.18);
  border-radius: 10px;
  font-size: 15px;
  background: #fff;
  color: #142033;
}
.trips-btn-buy {
  display: block;
  width: 100%;
  margin-top: 4px;
  padding: 15px 20px;
  border: none;
  border-radius: 12px;
  font-size: 17px;
  font-weight: 800;
  cursor: pointer;
  text-align: center;
  color: #fff !important;
  background: linear-gradient(180deg, #ff7043 0%, #e64a19 100%);
  box-shadow: 0 6px 20px rgba(230, 74, 25, 0.35);
  transition: filter 0.15s, transform 0.15s;
}
.trips-btn-buy:hover {
  filter: brightness(1.06);
}
.trips-btn-buy--link {
  text-decoration: none !important;
}
.trips-legal {
  font-size: 12px;
  line-height: 1.55;
  color: #546e7a;
  margin-bottom: 14px;
}
.trips-legal--muted {
  opacity: 0.95;
}
.trips-legal--pay {
  padding-top: 12px;
  border-top: 1px dashed rgba(20, 32, 51, 0.12);
}
.trips-legal p {
  margin: 0 0 8px;
}
.trips-legal p:last-child {
  margin-bottom: 0;
}
.trips-rich {
  max-width: 900px;
  margin: 0 auto;
  padding: 8px 0 48px;
  font-size: 15px;
  line-height: 1.75;
  color: #37474f;
}
.trips-rich h2,
.trips-rich h3 {
  margin: 1.25em 0 0.6em;
  color: #142033;
  font-weight: 800;
  line-height: 1.35;
}
.trips-rich h2:first-child,
.trips-rich h3:first-child {
  margin-top: 0;
}
.trips-rich p {
  margin: 0 0 0.85em;
}
.trips-rich ul,
.trips-rich ol {
  margin: 0 0 1em 1.1em;
  padding: 0;
}
.trips-rich img {
  max-width: 100%;
  height: auto;
  border-radius: 12px;
}
.trips-rich table {
  width: 100%;
  border-collapse: collapse;
  margin: 1em 0;
  font-size: 14px;
}
.trips-rich th,
.trips-rich td {
  border: 1px solid #e0e7ee;
  padding: 8px 10px;
}

/* ---------- 行程详情下单页（对标 playfultours） ---------- */
.trips-detail-page {
  background: #f0f3f7;
  padding-bottom: 48px;
}
.trips-detail-hero-area {
  background: #fff;
  padding: 24px 0 32px;
  margin-bottom: 0;
  border-bottom: 1px solid #e8ecf0;
}
.trips-detail-stage--hero {
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 24px;
  display: grid;
  grid-template-columns: 1fr;
  gap: 28px;
  align-items: start;
}
@media (min-width: 992px) {
  .trips-detail-stage--hero {
    grid-template-columns: minmax(0, 1fr) minmax(340px, 420px);
    gap: 36px;
  }
}
.trips-detail-gallery--full .trips-gal-main {
  position: relative;
}
.trips-detail-gallery--full .trips-detail-main-frame {
  border-radius: 12px;
  overflow: hidden;
  background: #eceff1;
  aspect-ratio: 1;
}
.trips-detail-gallery--full .trips-detail-main-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.trips-gal-nav {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 40px;
  height: 40px;
  border: none;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.92);
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.12);
  font-size: 22px;
  line-height: 1;
  cursor: pointer;
  color: #333;
  z-index: 2;
}
.trips-gal-nav--prev { left: 12px; }
.trips-gal-nav--next { right: 12px; }
.trips-detail-gallery--full .trips-thumb img {
  width: 72px;
  height: 72px;
  border-radius: 8px;
}
.trips-thumb.is-active {
  border-color: #2196f3;
}
.trips-detail-panel--hero .trips-detail-title {
  font-size: clamp(20px, 2vw, 26px);
  font-weight: 700;
  color: #111;
}
.trips-detail-pricebox--hero {
  background: #f5f6f8;
  border: none;
  border-radius: 8px;
  padding: 14px 16px;
}
.trips-d-price-line {
  margin: 0 0 8px;
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 6px 10px;
  font-size: 15px;
}
.trips-d-vnd {
  font-size: 22px;
  font-weight: 800;
  color: #111;
}
.trips-d-ntsep {
  color: #999;
  font-weight: 400;
}
.trips-d-nt {
  font-size: 16px;
  font-weight: 700;
  color: #d32f2f;
}
.trips-d-per {
  width: 100%;
  font-size: 14px;
  font-weight: 600;
  color: #c62828;
}
.trips-price-note--box {
  margin: 0;
  font-size: 13px;
  color: #666;
  line-height: 1.5;
}
.trips-pax-hint {
  font-weight: 400;
  color: #888;
  font-style: normal;
}
.trips-pax-grid {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 8px;
}
@media (min-width: 480px) {
  .trips-pax-grid {
    grid-template-columns: repeat(5, 1fr);
  }
}
.trips-pax-chip {
  padding: 10px 6px;
  border: 2px solid #cfd8dc;
  border-radius: 8px;
  background: #fff;
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
  color: #333;
}
.trips-pax-chip.is-on {
  border-color: #2196f3;
  color: #1565c0;
  box-shadow: 0 0 0 1px rgba(33, 150, 243, 0.25);
}
.trips-btn-buy--outline {
  background: #fff !important;
  color: #1976d2 !important;
  border: 2px solid #42a5f5 !important;
  font-weight: 700 !important;
  box-shadow: none !important;
}
.trips-btn-buy--outline:hover {
  background: #e3f2fd !important;
  filter: none !important;
}
.trips-panel-accordions {
  margin-top: 8px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.trips-acc-bar {
  border-radius: 8px;
  overflow: hidden;
  border: 1px solid #e0e0e0;
  background: #fafafa;
}
.trips-acc-trigger {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 12px 16px;
  border: none;
  background: transparent;
  font-size: 14px;
  font-weight: 600;
  color: #333;
  cursor: pointer;
  text-align: left;
}
.trips-acc-ico {
  font-style: normal;
  font-weight: 700;
  color: #666;
}
.trips-acc-body {
  background: #fff;
  border-top: 1px solid #eee;
}
.trips-acc-inner {
  padding: 14px 16px;
  font-size: 13px;
  line-height: 1.65;
  color: #555;
}

.trips-sec {
  padding: 36px 20px;
}
.trips-sec--intro {
  background: #f5fafd;
}
.trips-sec--highlights,
.trips-sec--why {
  background: #f4f7f9;
}
.trips-sec--fees,
.trips-sec--itinerary,
.trips-sec--faq,
.trips-sec--related {
  background: #fff;
}
.trips-sec-inner {
  max-width: 1000px;
  margin: 0 auto;
}
.trips-sec-head {
  border-bottom: 1px solid #e0e0e0;
  padding-bottom: 10px;
  margin-bottom: 20px;
}
.trips-sec-head--inline {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 12px 20px;
}
.trips-sec-title {
  margin: 0;
  font-size: 20px;
  font-weight: 700;
  color: #4a90e2;
  border-left: 4px solid #546e7a;
  padding-left: 14px;
}
.trips-sec-title--bare {
  border: none;
  padding-left: 0;
  margin-bottom: 16px;
}
.trips-sec-hint {
  font-size: 14px;
  color: #90a4ae;
}
.trips-intro-body {
  font-size: 15px;
  line-height: 1.8;
  color: #333;
}

.trips-hi-carousel {
  position: relative;
  padding-right: 28px;
}
.trips-hi-slide {
  display: none;
}
.trips-hi-slide.is-on {
  display: block;
}
.trips-hi-card {
  display: grid;
  grid-template-columns: 1fr;
  gap: 20px;
  background: #fff;
  border: 1px solid #e8e8e8;
  border-radius: 14px;
  padding: 22px;
  box-shadow: 0 4px 18px rgba(0, 0, 0, 0.05);
}
@media (min-width: 768px) {
  .trips-hi-card {
    grid-template-columns: 1fr 1fr;
    align-items: center;
  }
}
.trips-hi-sub {
  margin: 0 0 10px;
  font-size: 18px;
  font-weight: 700;
  color: #111;
}
.trips-hi-desc {
  font-size: 14px;
  line-height: 1.7;
  color: #555;
}
.trips-hi-fig {
  margin: 0;
  border-radius: 12px;
  overflow: hidden;
  position: relative;
}
.trips-hi-fig img {
  width: 100%;
  aspect-ratio: 1;
  object-fit: cover;
  display: block;
}
.trips-hi-fig figcaption {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  padding: 8px 10px;
  background: rgba(0, 0, 0, 0.45);
  color: #fff;
  font-size: 13px;
}
.trips-hi-dots {
  position: absolute;
  right: 4px;
  top: 50%;
  transform: translateY(-50%);
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.trips-hi-dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  border: none;
  padding: 0;
  background: #bdbdbd;
  cursor: pointer;
}
.trips-hi-dot.is-on {
  background: #43a047;
}

.trips-fees-list {
  margin-bottom: 24px;
}
.trips-fees-block {
  margin-bottom: 16px;
  font-size: 14px;
  color: #333;
  line-height: 1.7;
}
.trips-fees-block strong {
  display: block;
  margin-bottom: 6px;
}
.trips-fees-ul {
  margin: 0;
  padding-left: 1.1em;
}
.trips-fees-cards {
  display: grid;
  grid-template-columns: 1fr;
  gap: 18px;
}
@media (min-width: 768px) {
  .trips-fees-cards {
    grid-template-columns: 1fr 1fr;
  }
}
.trips-fee-card {
  background: #fff;
  border-radius: 12px;
  padding: 18px;
  box-shadow: 0 3px 14px rgba(0, 0, 0, 0.07);
}
.trips-fee-card h3 {
  margin: 0 0 12px;
  font-size: 20px;
  font-weight: 400;
  color: #9e9e9e;
  padding-bottom: 10px;
  border-bottom: 1px solid #e0e0e0;
}
.trips-fee-card-list {
  list-style: none;
  margin: 0;
  padding: 0;
  font-size: 14px;
  color: #424242;
}
.trips-fee-card-list li {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  margin-bottom: 8px;
}
.trips-ok { color: #2e7d32; }
.trips-no { color: #c62828; }

.trips-why-lead p {
  margin: 0 0 12px;
  font-size: 15px;
  line-height: 1.75;
  color: #555;
}
.trips-why-note {
  font-size: 13px;
  color: #78909c;
}
.trips-why-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 20px;
  margin-top: 24px;
}
@media (min-width: 992px) {
  .trips-why-grid {
    grid-template-columns: repeat(3, 1fr);
  }
}
.trips-why-card {
  background: #f5f1ea;
  border-radius: 10px;
  padding: 20px;
}
.trips-why-card h3 {
  margin: 0 0 10px;
  font-size: 16px;
  font-weight: 700;
  color: #a67c52;
}
.trips-why-card-body {
  font-size: 14px;
  line-height: 1.65;
  color: #555;
}
.trips-why-card-img img {
  width: 100%;
  border-radius: 8px;
  margin-bottom: 12px;
  object-fit: cover;
  max-height: 160px;
}

.trips-it-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.trips-it-acc {
  border-radius: 10px;
  overflow: hidden;
  border: 1px solid #e0ddd6;
  background: #faf8f5;
}
.trips-it-head {
  width: 100%;
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 12px 16px;
  border: none;
  background: transparent;
  font-size: 15px;
  font-weight: 600;
  cursor: pointer;
  text-align: left;
}
.trips-it-body {
  background: #fff;
  border-top: 1px solid #e8e8e8;
}
.trips-it-inner {
  padding: 14px 16px;
  font-size: 14px;
  line-height: 1.7;
  color: #444;
}

.trips-faq-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 14px;
}
@media (min-width: 768px) {
  .trips-faq-grid {
    grid-template-columns: 1fr 1fr;
  }
}
.trips-faq-item {
  border-radius: 10px;
  overflow: hidden;
  border: 1px solid #e0ddd6;
  background: #faf8f5;
}
.trips-faq-q {
  width: 100%;
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 12px 14px;
  border: none;
  background: transparent;
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
  text-align: left;
}
.trips-faq-a {
  background: #fff;
  border-top: 1px solid #e8e8e8;
}
.trips-faq-inner {
  padding: 14px;
  font-size: 14px;
  line-height: 1.65;
  color: #444;
}

.trips-related-row {
  display: flex;
  gap: 12px;
  overflow-x: auto;
  padding-bottom: 8px;
}
.trips-related-card {
  flex: 0 0 140px;
}
.trips-related-img {
  display: block;
  border-radius: 12px;
  overflow: hidden;
  aspect-ratio: 3/4;
  background: #eee;
}
.trips-related-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* ----- Visa / airport fast track (Playful Tours style) ----- */
.visa-page {
  padding-bottom: 56px;
  background: #fff;
}
.visa-hero {
  position: relative;
  min-height: 260px;
  margin: 0;
  border-radius: 0;
  background: #1a2744 center/cover no-repeat;
  background-color: #1a2744;
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
}
.visa-hero--plain {
  background-color: transparent;
  background-image: linear-gradient(165deg, #e8f2ff 0%, #ffffff 42%, #f3f7fc 100%);
}
.visa-hero--plain .visa-hero-overlay {
  display: none;
}
.visa-hero--plain .visa-hero-inner {
  text-align: center;
  max-width: 920px;
  padding: 48px 20px 52px;
}
.visa-hero--plain .visa-hero-title {
  color: #1e2d40;
}
.visa-hero--plain .visa-hero-sub {
  color: #5a6578;
}
.visa-hero-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(10, 18, 40, 0.25) 0%, rgba(10, 18, 40, 0.78) 100%);
}
.visa-hero-inner {
  position: relative;
  z-index: 1;
  padding: 40px 20px 44px;
  max-width: 1120px;
  margin: 0 auto;
  text-align: center;
}
.visa-hero-title {
  margin: 0 0 12px;
  font-size: clamp(24px, 4.2vw, 34px);
  font-weight: 800;
  color: #fff;
  line-height: 1.28;
  letter-spacing: 0.02em;
}
.visa-hero-sub {
  margin: 0;
  font-size: 17px;
  color: rgba(255, 255, 255, 0.93);
}
.visa-inner {
  max-width: 1140px;
  margin: 0 auto;
  padding: 0 18px;
}
.visa-section {
  margin-top: 0;
}
.visa-section-title {
  text-align: center;
  font-size: clamp(22px, 3vw, 28px);
  font-weight: 700;
  margin: 0 0 28px;
  color: #2c3a52;
}
.visa-section--why .visa-section-title,
.visa-section--adv .visa-section-title,
.visa-section--flow .visa-section-title,
.visa-section--services .visa-section-title {
  margin-bottom: 12px;
}
.visa-section-lede {
  max-width: 880px;
  margin: 0 auto 4px;
  text-align: left;
}
.visa-section--why .visa-section-lede,
.visa-section--adv .visa-section-lede {
  margin-bottom: 0;
}
@media (min-width: 768px) {
  .visa-section-lede {
    text-align: center;
  }
}
.visa-section-lede-p {
  margin: 0 0 14px;
  font-size: 16px;
  line-height: 1.75;
  color: #526077;
}
.visa-section-lede-p:last-child {
  margin-bottom: 0;
}
.visa-section--services > .visa-inner > .visa-section-lede {
  margin-bottom: 28px;
}
.visa-section-title--on-dark {
  color: #2c3a52;
}
.visa-section--why {
  margin: 0;
  padding: 44px 0 48px;
  background: #eef3f9;
  border-radius: 0;
}
.visa-section--why .visa-inner {
  padding: 0 18px;
}
.visa-card-grid {
  display: grid;
  gap: 18px;
}
@media (min-width: 768px) {
  .visa-card-grid--why {
    grid-template-columns: repeat(3, 1fr);
    gap: 22px;
  }
  .visa-card-grid--adv {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 20px;
  }
}
@media (max-width: 991px) {
  .visa-card-grid--adv {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (max-width: 575px) {
  .visa-card-grid--adv {
    grid-template-columns: 1fr;
  }
}
.visa-card--why {
  background: #fff;
  border: none;
  border-radius: 10px;
  padding: 26px 20px;
  color: #24324a;
  text-align: center;
  box-shadow: 0 6px 24px rgba(36, 50, 74, 0.07);
}
.visa-card--why .visa-card-body {
  color: #5a6578;
  font-size: 14px;
  line-height: 1.65;
  margin: 0;
}
.visa-card-icon {
  width: 54px;
  height: 54px;
  margin: 0 auto 14px;
  border-radius: 50%;
  background: #eaf2ff;
  color: #4482ff;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 22px;
}
.visa-card-icon--dark {
  background: #eaf2ff;
  color: #4482ff;
}
.visa-card-title {
  margin: 0 0 10px;
  font-size: 17px;
  font-weight: 700;
}
.visa-card--adv .visa-card-title {
  color: #1e2d40;
}
.visa-card--adv {
  background: #fff;
  border-radius: 10px;
  padding: 24px 18px;
  text-align: center;
  box-shadow: 0 6px 22px rgba(36, 50, 74, 0.07);
  border: 1px solid rgba(0, 0, 0, 0.04);
}
.visa-card--adv .visa-card-body {
  margin: 0;
  font-size: 14px;
  line-height: 1.65;
  color: #5a6578;
}
.visa-section--adv {
  margin: 0;
  padding: 44px 0 48px;
  background: #fff;
  border-radius: 0;
}
.visa-section--flow {
  margin: 0;
  padding: 44px 0 48px;
  background: #f5f8fb;
}
.visa-flow {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 14px;
}
@media (min-width: 900px) {
  .visa-flow {
    grid-template-columns: repeat(4, 1fr);
    gap: 16px;
  }
}
.visa-flow-step {
  display: flex;
  gap: 14px;
  background: #fff;
  border-radius: 10px;
  padding: 20px 16px;
  box-shadow: 0 4px 18px rgba(36, 50, 74, 0.06);
  margin: 0;
}
.visa-flow-num {
  flex: 0 0 42px;
  height: 42px;
  border-radius: 50%;
  background: #4482ff;
  color: #fff;
  font-weight: 700;
  font-size: 16px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.visa-flow-title {
  margin: 0 0 6px;
  font-size: 16px;
  font-weight: 700;
  color: #1e2d40;
}
.visa-flow-text {
  margin: 0;
  font-size: 13px;
  line-height: 1.55;
  color: #5a6578;
}
.visa-section--services {
  margin: 0;
  padding: 44px 0 56px;
  background: #fff;
}
.visa-section--services .visa-inner {
  padding-top: 0;
}
.visa-service-grid {
  display: grid;
  gap: 24px;
}
@media (min-width: 992px) {
  .visa-service-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 26px;
  }
  /* 最后一行仅一张卡片时居中（如 4 张：3+1） */
  .visa-service-card:last-child:nth-child(3n + 1) {
    grid-column: 2 / span 1;
  }
}
@media (max-width: 991px) {
  .visa-service-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (max-width: 575px) {
  .visa-service-grid {
    grid-template-columns: 1fr;
  }
}
.visa-service-card {
  background: #fff;
  border-radius: 10px;
  overflow: hidden;
  box-shadow: 0 8px 28px rgba(36, 50, 74, 0.09);
  display: flex;
  flex-direction: column;
  border: 1px solid rgba(0, 0, 0, 0.045);
}
.visa-service-photo {
  aspect-ratio: 16 / 10;
  background: #dde3ea;
  overflow: hidden;
}
.visa-service-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.visa-service-photo--fallback {
  background-size: cover;
  background-position: center;
}
.visa-service-card:nth-child(1) .visa-service-photo--fallback {
  background-image: url("https://images.unsplash.com/photo-1557750255-c76072a7aad1?auto=format&fit=crop&w=900&q=75");
}
.visa-service-card:nth-child(2) .visa-service-photo--fallback {
  background-image: url("https://images.unsplash.com/photo-1596422848923-485cfa602652?auto=format&fit=crop&w=900&q=75");
}
.visa-service-card:nth-child(3) .visa-service-photo--fallback {
  background-image: url("https://images.unsplash.com/photo-1583417319070-4f69ddb903f8?auto=format&fit=crop&w=900&q=75");
}
.visa-service-card:nth-child(4) .visa-service-photo--fallback {
  background-image: url("https://images.unsplash.com/photo-1559827260-dc66d52bef19?auto=format&fit=crop&w=900&q=75");
}
.visa-service-card:nth-child(n + 5) .visa-service-photo--fallback {
  background-image: linear-gradient(135deg, #cfd9e6 0%, #e8eef5 100%);
}
.visa-service-body {
  padding: 18px 18px 20px;
  flex: 1;
  display: flex;
  flex-direction: column;
}
.visa-service-title {
  margin: 0 0 14px;
  font-size: 18px;
  font-weight: 800;
  color: #1e2d40;
}
.visa-price-list {
  list-style: none;
  margin: 0 0 18px;
  padding: 0;
  font-size: 14px;
  line-height: 1.55;
  color: #333;
  flex: 1;
}
.visa-price-list li {
  margin-bottom: 10px;
}
.visa-price-label {
  display: block;
  font-weight: 600;
  color: #24324a;
  margin-bottom: 3px;
}
.visa-price-text {
  color: #e53935;
  font-weight: 600;
}
.visa-btn-apply {
  display: block;
  width: 100%;
  box-sizing: border-box;
  margin-top: auto;
  padding: 11px 16px;
  border-radius: 8px;
  background: #fef9e7;
  color: #333;
  font-weight: 700;
  font-size: 15px;
  text-align: center;
  text-decoration: none;
  border: 1px solid rgba(120, 100, 60, 0.35);
  transition: background 0.15s ease, border-color 0.15s ease;
}
.visa-btn-apply:hover {
  background: #fcf3cf;
  border-color: rgba(100, 85, 45, 0.45);
  color: #222;
  text-decoration: none;
}

/* gobooking / visa application wizard (reference UI) */
.gb-page {
  max-width: 960px;
  margin: 0 auto 52px;
  padding: 20px 16px 40px;
}
.gb-hero {
  margin-bottom: 22px;
  text-align: center;
}
.gb-title {
  font-size: clamp(22px, 3vw, 28px);
  font-weight: 800;
  margin: 0 0 10px;
  color: #333;
}
.gb-sub {
  margin: 0;
  color: #666;
  font-size: 16px;
}
.gb-info-panel {
  margin-bottom: 18px;
  padding: 18px 20px;
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-radius: 12px;
  text-align: left;
}
.gb-info-panel.card {
  box-shadow: none;
}
.gb-info-h {
  font-size: 18px;
  margin: 0 0 10px;
  color: #1e293b;
  font-weight: 700;
}
.gb-info-lead {
  margin: 0 0 12px;
  color: #475569;
  line-height: 1.6;
  font-size: 14px;
}
.gb-info-ul {
  margin: 0;
  padding-left: 1.25rem;
  color: #334155;
  font-size: 14px;
  line-height: 1.55;
}
.gb-info-ul li {
  margin-bottom: 6px;
}
.gb-login-bar {
  margin-bottom: 18px;
}
.gb-layout {
  display: flex;
  flex-direction: column;
  gap: 18px;
}
.gb-steps-banner {
  background: #4482ff;
  border-radius: 12px;
  padding: 22px 14px 26px;
  box-shadow: 0 8px 28px rgba(68, 130, 255, 0.28);
}
.gb-banner-steps {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 0;
}
.gb-banner-step {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  padding: 12px 8px;
  position: relative;
}
.gb-banner-step:not(:last-child)::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: -6px;
  transform: translateX(-50%);
  width: 2px;
  height: 12px;
  background: rgba(255, 255, 255, 0.35);
}
.gb-banner-num {
  width: 38px;
  height: 38px;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
  font-size: 16px;
  background: #fff;
  color: #888;
  border: 2px solid rgba(255, 255, 255, 0.85);
  box-sizing: border-box;
}
.gb-banner-step--active .gb-banner-num {
  background: #444;
  color: #fff;
  border-color: #444;
}
.gb-banner-step--done .gb-banner-num {
  background: rgba(255, 255, 255, 0.95);
  color: #4482ff;
  border-color: rgba(255, 255, 255, 0.95);
}
.gb-banner-text {
  font-size: 13px;
  font-weight: 600;
  color: rgba(255, 255, 255, 0.92);
  text-align: center;
  line-height: 1.35;
}
.gb-banner-step--active .gb-banner-text {
  color: #fff;
}
@media (min-width: 768px) {
  .gb-banner-steps {
    flex-direction: row;
    justify-content: space-between;
    align-items: flex-start;
    gap: 8px;
  }
  .gb-banner-step {
    flex: 1;
    padding: 8px 6px;
  }
  .gb-banner-step:not(:last-child)::after {
    display: none;
  }
}
.gb-main.card {
  border-radius: 12px;
  border: 1px solid #dee2e6;
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.06);
  background: #fff;
}
.gb-main.card .gb-form-inner {
  padding: 22px 22px 24px;
}
@media (max-width: 575px) {
  .gb-main.card .gb-form-inner {
    padding: 16px 14px 18px;
  }
}
.gb-form-title {
  font-size: 18px;
  font-weight: 700;
  margin: 0 0 18px;
  padding-bottom: 14px;
  border-bottom: 1px solid #e9ecef;
  color: #333;
}
.gb-page .form-control {
  border-radius: 8px;
  border-color: #dee2e6;
}
.gb-page .form-control:focus {
  border-color: #4482ff;
  box-shadow: 0 0 0 3px rgba(68, 130, 255, 0.18);
}
.gb-process-block {
  margin-top: 8px;
}
.gb-block-label {
  font-weight: 600;
  color: #333;
}
.gb-proc-cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 14px;
  margin-top: 10px;
}
.gb-proc-card {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 6px;
  padding: 16px 14px;
  margin: 0;
  border-radius: 10px;
  border: 2px solid #dee2e6;
  background: #fff;
  cursor: pointer;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.gb-proc-card--active {
  border-color: #4482ff;
  box-shadow: 0 4px 16px rgba(68, 130, 255, 0.18);
}
.gb-proc-input {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}
.gb-proc-title {
  font-weight: 700;
  font-size: 15px;
  color: #333;
}
.gb-proc-desc {
  font-size: 13px;
  color: #666;
}
.gb-proc-price {
  font-size: 14px;
  font-weight: 700;
  color: #4482ff;
  margin-top: 4px;
}
.gb-addon-section {
  margin-top: 22px;
  padding-top: 18px;
  border-top: 1px solid #eee;
}
.gb-addon-title {
  font-size: 15px;
  font-weight: 700;
  margin: 0 0 10px;
}
.gb-transfer-box {
  margin-top: 12px;
}
.gb-req {
  color: #e53935;
}
.gb-steps {
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  padding: 0;
  margin: 0 0 20px;
  counter-reset: none;
}
.gb-steps .gb-step {
  flex: 1 1 120px;
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 12px;
  background: #eef1f6;
  border-radius: 10px;
  font-size: 13px;
  color: #5a6578;
}
.gb-steps .gb-step--active {
  background: #4482ff;
  color: #fff;
}
.gb-steps .gb-step--done {
  background: #d4e4f7;
  color: #24324a;
}
.gb-step-num {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: rgba(0, 0, 0, 0.08);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
  font-size: 14px;
}
.gb-step--active .gb-step-num {
  background: rgba(255, 255, 255, 0.25);
}
.gb-panel-title {
  font-size: 18px;
  font-weight: 700;
  margin: 0 0 16px;
  padding-bottom: 12px;
  border-bottom: 1px solid #e9ecef;
  color: #333;
}
.gb-subhead {
  font-size: 15px;
  font-weight: 700;
  margin: 20px 0 12px;
}
.gb-hidden {
  display: none !important;
}
.gb-radio-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.gb-radio {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 0;
  font-weight: 400;
}
.gb-estimate {
  margin-top: 18px;
  padding: 14px 16px;
  background: #f8f9fa;
  border-radius: 10px;
  border: 1px solid #e9ecef;
  font-size: 15px;
}
.gb-applicant-fieldset {
  border: 1px solid #dee2e6;
  border-radius: 10px;
  padding: 14px 16px;
  margin-bottom: 16px;
}
.gb-applicant-fieldset legend {
  width: auto;
  padding: 0 8px;
  font-size: 14px;
  font-weight: 700;
  border: 0;
}
.gb-summary {
  background: #f8f9fa;
  border-radius: 10px;
  padding: 16px;
  max-height: 320px;
  overflow: auto;
  font-size: 13px;
  white-space: pre-wrap;
  border: 1px solid #e9ecef;
}
.gb-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 26px;
  padding-top: 18px;
  border-top: 1px solid #e9ecef;
}
.gb-actions .btn.gb-btn-next,
.gb-actions .btn.gb-btn-submit {
  background: #4482ff;
  border-color: #4482ff;
  color: #fff;
  font-weight: 600;
  padding-left: 22px;
  padding-right: 22px;
  border-radius: 8px;
}
.gb-actions .btn.gb-btn-next:hover,
.gb-actions .btn.gb-btn-submit:hover {
  background: #366fdd;
  border-color: #366fdd;
  color: #fff;
}
.gb-actions .btn.gb-btn-prev {
  border-radius: 8px;
}

/* 导游工作台订单未读角标 */
.pt-nav-link--with-badge {
  position: relative;
}
.pt-nav-order-badge {
  display: none;
  min-width: 18px;
  padding: 0 5px;
  margin-left: 4px;
  font-size: 11px;
  line-height: 16px;
  color: #fff;
  text-align: center;
  background: #e74c3c;
  border-radius: 10px;
  vertical-align: middle;
  font-weight: 600;
}
.pt-nav-order-badge.is-on {
  display: inline-block;
}
.gi-dash-card--orders {
  position: relative;
}
.gi-dash-order-badge {
  display: none;
  position: absolute;
  top: 14px;
  right: 16px;
  min-width: 20px;
  height: 20px;
  padding: 0 6px;
  font-size: 12px;
  line-height: 20px;
  color: #fff;
  text-align: center;
  background: #e74c3c;
  border-radius: 10px;
  font-weight: 700;
  z-index: 1;
}
.gi-dash-order-badge.is-on {
  display: block;
}
/* ========== 前台页脚政策页（七大固定 URL）========== */

.pt-footpage {
  padding: 48px 16px 80px;
  max-width: 920px;
  margin: 0 auto;
}

.pt-footpage-inner {
  padding: 28px 8px;
}

.pt-footpage-title {
  margin: 0 0 12px;
  text-align: center;
  font-size: 2rem;
  font-weight: 700;
  color: #4db8d9;
  letter-spacing: 0.02em;
}

.pt-footpage-sub {
  margin: 0 0 36px;
  text-align: center;
  font-size: 1.05rem;
  line-height: 1.65;
  color: #617188;
}

.pt-footpage-body {
  font-size: 0.975rem;
  line-height: 1.85;
  color: #3a4655;
}

.pt-footpage-body h2 {
  margin: 36px 0 14px;
  font-size: 1.2rem;
  font-weight: 700;
  color: #29404d;
}

.pt-footpage-body h3 {
  margin: 28px 0 10px;
  font-size: 1.06rem;
  font-weight: 700;
  color: #35607a;
}

.pt-footpage-body h4 {
  margin: 20px 0 8px;
  font-size: 1rem;
  font-weight: 600;
  color: #3d5f78;
}

.pt-footpage-body p {
  margin: 0 0 14px;
}

.pt-footpage-body ul,
.pt-footpage-body ol {
  margin: 8px 0 18px 1.2em;
  padding: 0;
}

.pt-footpage-body li {
  margin-bottom: 8px;
}

.pt-footpage-body a {
  color: #2b8aaf;
}

.pt-footpage-body a:hover {
  text-decoration: underline;
}

/*# sourceMappingURL=user.css.map */
