/* 장바구니 · 예약 · 결제 · 견적요청 (팀 t7)
   피그마(05-01 디자인 확산 누적본): 장바구니 3482:82899·82951·83106·83831 / 비회원 예약 조회 3482:84205
   예약 신청 완료 3482:84264 · 결제 완료 84322 · 결제 요청 성공 84380 · 예약 요청 접수 84433
   토스 결제 84512 · 추가 결제 84586 · 결제 실패 84662 · 추가 결제 링크 없음 84708 / 견적 요청 4029:31922
   모든 규칙은 페이지 루트 .fb-t7 로 스코프한다. */

.fb-t7 {
  --t7-green: #1d783b;
  --t7-green-l: #ecf8f0;
  --t7-green-btn: #effff4;
  --t7-line: rgba(0, 0, 0, 0.15);
  box-sizing: border-box;
  background: #f9fafb;
  color: #111;
  font-family: "Pretendard Variable", Pretendard, -apple-system, BlinkMacSystemFont, system-ui, sans-serif;
}
.fb-t7 *,
.fb-t7 *::before,
.fb-t7 *::after { box-sizing: border-box; }

/* ---------- 공통: 페이지 제목 ---------- */
.fb-t7 .t7-head { display: flex; flex-direction: column; gap: 8px; }
.fb-t7 .t7-head h1 {
  margin: 0;
  font-size: 22px;
  font-weight: 600;
  line-height: normal;
  letter-spacing: -0.66px;
  color: #111;
}
.fb-t7 .t7-head p {
  margin: 0;
  font-size: 15px;
  line-height: 1.4;
  letter-spacing: -0.45px;
  color: #888;
}
.fb-t7 .t7-head--center { align-items: center; text-align: center; }

/* ---------- 공통: 버튼 ---------- */
.fb-t7 .t7-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  height: 52px;
  padding: 6px 8px;
  border: 1px solid transparent;
  border-radius: 4px;
  font-family: inherit;
  font-size: 15px;
  font-weight: 500;
  letter-spacing: -0.45px;
  line-height: normal;
  text-decoration: none;
  cursor: pointer;
  transition: background-color .15s, border-color .15s;
  white-space: nowrap;
}
.fb-t7 .t7-btn--primary { background: var(--t7-green); border-color: var(--t7-green); color: #fff; }
.fb-t7 .t7-btn--primary:hover { background: #17652f; border-color: #17652f; color: #fff; }
.fb-t7 .t7-btn--outline { background: #fff; border-color: var(--t7-line); color: #000; font-weight: 400; }
.fb-t7 .t7-btn--outline:hover { border-color: rgba(0, 0, 0, 0.35); color: #000; }

/* ---------- 공통: 입력 ---------- */
.fb-t7 .t7-label {
  display: inline-flex;
  gap: 2px;
  margin: 0;
  font-size: 16px;
  font-weight: 400;
  line-height: normal;
  letter-spacing: -0.48px;
  color: #333;
}
.fb-t7 .t7-req { color: #f00; font-weight: 500; }
.fb-t7 .t7-input {
  display: block;
  width: 100%;
  height: 48px;
  padding: 0 16px;
  border: 1px solid var(--t7-line);
  border-radius: 4px;
  background: #fff;
  font-family: inherit;
  font-size: 16px;
  letter-spacing: -0.48px;
  color: #111;
  outline: none;
  box-shadow: none;
}
.fb-t7 .t7-input::placeholder { color: #999; }
.fb-t7 .t7-input:focus { border-color: var(--t7-green); }

/* ---------- 공통: 중앙 카드 (완료·결과·실패 화면) ---------- */
.fb-t7.t7-center {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 820px;
  padding: 80px 16px;
}
.fb-t7 .t7-card {
  width: 600px;
  max-width: 100%;
  padding: 39px; /* 1px 테두리 포함 → 피그마 p40 (stroke 미포함) 내부폭 */
  background: #fff;
  border: 1px solid var(--t7-line);
}
.fb-t7 .t7-card--sm { width: 418px; }
.fb-t7 .t7-card-inner { display: flex; flex-direction: column; gap: 32px; align-items: stretch; }
.fb-t7 .t7-card-inner.t7-ref-group { gap: 20px; } /* 예약번호 + 진행 단계 묶음 (3482:84477) */
.fb-t7 .t7-result-top { display: flex; flex-direction: column; align-items: center; gap: 16px; text-align: center; }
.fb-t7 .t7-result-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 64px;
  height: 64px;
  border-radius: 32px;
  background: rgba(11, 71, 58, 0.05);
  color: #0b473a;
}
.fb-t7 .t7-result-icon.is-muted { background: #f3f4f6; color: #6b7280; }
.fb-t7 .t7-result-icon svg { width: 24px; height: 24px; display: block; }
.fb-t7 .t7-actions { display: flex; gap: 10px; }
.fb-t7 .t7-actions > * { flex: 1 1 0; min-width: 0; }
/* 피그마 2버튼 행(84264·84322·84433 246/264, 84662 155/173): 왼쪽(주 버튼)이 반폭보다 9px 좁다 */
.fb-t7 .t7-actions:not(.t7-actions--wrap) > :first-child:nth-last-child(2) { flex: 0 0 calc(50% - 14px); }
.fb-t7 .t7-actions--wrap { flex-wrap: wrap; }

/* 예약번호 박스 */
.fb-t7 .t7-ref-box {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  padding: 16px;
  border-radius: 4px;
  background: #f8f8f8;
  text-align: center;
}
.fb-t7 .t7-ref-label { font-size: 16px; letter-spacing: -0.48px; color: #333; line-height: normal; }
.fb-t7 .t7-ref-code {
  padding: 0;
  border: 0;
  background: none;
  font-family: inherit;
  font-size: 22px;
  font-weight: 600;
  line-height: 1.4;
  letter-spacing: -0.66px;
  color: var(--t7-green);
  cursor: pointer;
  -webkit-appearance: none;
  appearance: none;
}
.fb-t7 .t7-ref-hint { margin: 0; font-size: 12px; line-height: 1.4; letter-spacing: -0.36px; color: #6b7280; }
.fb-t7 .t7-paid-note {
  margin: 0;
  text-align: center;
  font-size: 16px;
  font-weight: 500;
  line-height: normal;
  letter-spacing: -0.48px;
  color: #333;
}

/* 예약 요청 진행 단계 */
.fb-t7 .t7-steps {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 5px;
  margin: 0;
  padding: 0 30px 0 43px;
  list-style: none;
}
.fb-t7 .t7-steps::before {
  content: "";
  position: absolute;
  left: 32.5px;
  top: 13.5px; /* 피그마 진행바 svg: 선 y4~94, 프레임 내 9.5px 내림 */
  bottom: 11.5px;
  border-left: 1px solid #ddd;
}
.fb-t7 .t7-steps li {
  position: relative;
  display: flex;
  gap: 6px;
  align-items: center;
  font-size: 14px;
  line-height: 1.8;
  letter-spacing: -0.42px;
  color: #000;
}
.fb-t7 .t7-steps li::before {
  content: "";
  position: absolute;
  left: -13px;
  top: 50%;
  width: 6px;
  height: 6px;
  margin-top: -3px;
  border-radius: 50%;
  background: #ddd;
}
.fb-t7 .t7-steps li.is-done::before { background: var(--t7-green); }
.fb-t7 .t7-steps .t7-step-state { flex: 0 0 40px; font-weight: 500; color: #ddd; }
.fb-t7 .t7-steps .is-done .t7-step-state { color: var(--t7-green); }
.fb-t7 .t7-steps .is-doing .t7-step-state { color: rgba(0, 0, 0, 0.5); }

/* 결과 요약 표 (결제 완료·결제 화면) */
.fb-t7 .t7-summary {
  width: 600px;
  max-width: 100%;
  padding: 24px;
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: 8px;
}
.fb-t7 .t7-summary--flat { width: auto; padding: 0; border: 0; border-radius: 0; background: none; }
.fb-t7 .t7-sum-row {
  display: flex;
  gap: 12px;
  align-items: center;
  padding: 12px 8px;
  border-bottom: 1px solid rgba(0, 0, 0, 0.1);
  font-size: 14px;
  letter-spacing: -0.42px;
}
.fb-t7 .t7-sum-row:last-child { border-bottom: 0; }
.fb-t7 .t7-sum-row > span:first-child { flex: 1 1 0; min-width: 0; line-height: 22px; color: rgba(0, 0, 0, 0.5); } /* 피그마 lh1.6 → 텍스트 박스 22px (행 47px) */
.fb-t7 .t7-sum-row > span:last-child {
  flex: 1 1 0;
  min-width: 0;
  text-align: right;
  font-weight: 500;
  line-height: 1.2;
  color: #000;
  overflow-wrap: anywhere;
}
.fb-t7 .t7-sum-row > span.t7-sum-total { font-size: 16px; font-weight: 600; letter-spacing: -0.48px; color: var(--t7-green); }

/* ======================================================
   결제하기 · 추가 결제 (pay.php / pay_request.php)
   ====================================================== */
.fb-t7.t7-pay {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 20px;
  padding: 100px 16px 100px;
  min-height: 820px;
}
.fb-t7.t7-pay .t7-head { margin-bottom: 0; }
.fb-t7 .t7-pay-methods-card { width: 600px; max-width: 100%; padding: 39px; background: #fff; border: 1px solid var(--t7-line); }
.fb-t7 .t7-pay-methods-card .t7-pay-inner { display: flex; flex-direction: column; gap: 20px; }
.fb-t7 .t7-pay-title { margin: 0; font-size: 18px; font-weight: 600; letter-spacing: -0.54px; line-height: normal; color: #000; }
.fb-t7 .pay-methods { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin: 0; }
.fb-t7 .pay-method-btn {
  height: 48px;
  padding: 0 16px;
  border: 1px solid var(--t7-line);
  border-radius: 4px;
  background: #fff;
  font-family: inherit;
  font-size: 16px;
  font-weight: 400;
  letter-spacing: -0.48px;
  color: #555;
  cursor: pointer;
  transition: border-color .15s, background-color .15s;
}
.fb-t7 .pay-method-btn.selected { border-color: var(--t7-green); background: var(--t7-green-btn); color: var(--t7-green); }
.fb-t7 .pay-submit-btn {
  width: 100%;
  height: 52px;
  margin: 0;
  border: 0;
  border-radius: 4px;
  background: var(--t7-green);
  color: #fff;
  font-family: inherit;
  font-size: 15px;
  font-weight: 500;
  letter-spacing: -0.45px;
  cursor: pointer;
}
.fb-t7 .pay-submit-btn:hover { background: #17652f; }
.fb-t7 .pay-submit-btn:disabled { background: #a7c9b2; cursor: not-allowed; }
.fb-t7 .pay-test-note { margin: 0; text-align: center; font-size: 14px; line-height: 1.3; letter-spacing: -0.42px; color: #888; }

/* 결과 카드 헤더(제목+설명) */
.fb-t7 .t7-msg { display: flex; flex-direction: column; gap: 8px; align-items: center; text-align: center; }
.fb-t7 .t7-msg h1,
.fb-t7 .t7-msg h2 { margin: 0; font-size: 22px; font-weight: 600; line-height: normal; letter-spacing: -0.66px; color: #111; }
.fb-t7 .t7-msg p { margin: 0; font-size: 15px; line-height: 1.4; letter-spacing: -0.45px; color: #888; word-break: keep-all; }
.fb-t7 .t7-msg .t7-msg-code { color: #aaa; }

/* ======================================================
   비회원 예약 조회 (booking_lookup.php)
   ====================================================== */
.fb-t7 .t7-lookup-form { display: flex; flex-direction: column; gap: 32px; margin: 0; }
.fb-t7 .t7-field { display: flex; flex-direction: column; gap: 10px; position: relative; margin: 0; }
.fb-t7 .t7-input.error { border-color: #f00 !important; }
.fb-t7 .error-msg {
  display: none;
  margin: -4px 0 0;
  font-size: 12px;
  font-weight: 400;
  line-height: 1.4;
  letter-spacing: -0.36px;
  color: #f00;
}
.fb-t7 .t7-alert {
  padding: 14px 16px;
  border: 1px solid #fecaca;
  border-radius: 4px;
  background: #fef2f2;
  color: #991b1b;
  text-align: left;
}
.fb-t7 .t7-alert strong { display: block; margin-bottom: 4px; font-size: 14px; font-weight: 600; }
.fb-t7 .t7-alert span { display: block; font-size: 13px; line-height: 1.6; }
.fb-t7 .t7-sublinks { display: flex; justify-content: center; align-items: center; gap: 16px; }
.fb-t7 .t7-sublinks a {
  font-size: 14px;
  line-height: 1.3;
  letter-spacing: -0.42px;
  color: #888;
  text-decoration: none;
}
.fb-t7 .t7-sublinks a:first-child { font-weight: 600; }
.fb-t7 .t7-sublinks a:hover { color: #333; }
.fb-t7 .t7-sublinks i { display: block; width: 1px; height: 12px; background: rgba(0, 0, 0, 0.15); }

/* ======================================================
   장바구니 (cart.php)
   ====================================================== */
.fb-t7.t7-cart { padding: 80px 10px 120px; }
/* 빈 장바구니처럼 본문이 짧을 때 client-body-content(min-height:60vh) 남는 영역이 흰 띠로 보이지 않게 회색 배경을 이어 준다 (피그마 3482:82899: 회색 영역이 푸터에 바로 붙음) */
.client-body-content:has(> .fb-t7.t7-cart) { background: #f9fafb; }
.fb-t7 .cart-container { width: 1440px; max-width: 100%; margin: 0 auto; }
.fb-t7 .cart-title-section { margin: 0 0 30px; }
.fb-t7 .cart-grid { display: flex; gap: 40px; align-items: flex-start; }
.fb-t7 .cart-grid > .cart-list-panel { flex: 1 1 0; min-width: 0; }
.fb-t7 .cart-grid > .cart-checkout-card { flex: 0 0 440px; width: 440px; }
.fb-t7 .error-box {
  margin: 0 0 20px;
  padding: 12px 16px;
  border: 1px solid #fecaca;
  border-radius: 4px;
  background: #fef2f2;
  color: #dc2626;
  font-size: 14px;
  font-weight: 500;
}

/* 좌측: 상품 목록 */
/* 피그마 auto layout 은 stroke 를 레이아웃에 포함하지 않으므로 1px 테두리만큼 padding 을 줄여 내부 좌표를 맞춘다 */
.fb-t7 .cart-list-panel { padding: 19px; background: #fff; border: 1px solid var(--t7-line); }
.fb-t7 .cart-table-wrapper { overflow-x: auto; }
.fb-t7 .cart-table { width: 100%; border-collapse: collapse; text-align: left; table-layout: auto; }
.fb-t7 .cart-table th {
  height: 52px;
  padding: 15px 0;
  background: #f9fafb;
  border-bottom: 1px solid #ddd;
  font-size: 16px;
  font-weight: 500;
  line-height: 20.8px;
  letter-spacing: -0.48px;
  color: rgba(0, 0, 0, 0.7);
  text-align: left;
  vertical-align: middle;
}
.fb-t7 .cart-table td { padding: 20px 0; border-bottom: 1px solid #eee; vertical-align: top; }
.fb-t7 .cart-table tbody tr:first-child td { padding-top: 28px; }
.fb-t7 .cart-table tbody tr:last-child td { border-bottom: 0; }
.fb-t7 .cart-table .t7-col-check { width: 38px; padding-left: 20px; text-align: left; }
.fb-t7 .cart-table .t7-col-info { padding-left: 40px; padding-right: 10px; }
.fb-t7 .cart-table th.t7-col-info { position: relative; }
.fb-t7 .cart-table th.t7-col-info::before {
  content: "";
  position: absolute;
  left: 20px;
  top: 50%;
  height: 21px;
  margin-top: -10.5px;
  border-left: 1px solid #ddd;
}
.fb-t7 .cart-table .t7-col-price { width: 210px; padding-left: 10px; padding-right: 0; }
.fb-t7 .cart-table .t7-col-del { width: 90px; padding-left: 10px; padding-right: 40px; text-align: left; }
.fb-t7 .cart-table td.t7-col-check { vertical-align: top; }

.fb-t7 .cart-item-info { display: flex; gap: 20px; align-items: flex-start; }
.fb-t7 .cart-item-img { flex: 0 0 80px; width: 80px; height: 80px; border-radius: 2px; object-fit: cover; background: #f3f4f6; }
.fb-t7 .cart-item-details { display: flex; flex-direction: column; align-items: flex-start; gap: 6px; min-width: 0; }
.fb-t7 .cart-item-kind {
  display: inline-flex;
  align-items: center;
  padding: 5px 6px;
  border-radius: 4px;
  background: var(--t7-green-l);
  font-size: 11px;
  font-weight: 600;
  line-height: 1.3;
  letter-spacing: -0.33px;
  color: var(--t7-green);
}
.fb-t7 .cart-item-name {
  font-size: 16px;
  font-weight: 500;
  line-height: 1.35;
  letter-spacing: -0.48px;
  color: #000;
  text-decoration: none;
}
.fb-t7 .cart-item-name:hover { color: var(--t7-green); }
.fb-t7 .cart-item-meta { display: flex; flex-direction: column; gap: 2px; font-size: 14px; line-height: 1.35; letter-spacing: -0.42px; color: #666; }
.fb-t7 .cart-meta-line { display: flex; gap: 6px; }
.fb-t7 .cart-meta-line > span:first-child { flex: 0 0 auto; color: #888; }
.fb-t7 .cart-meta-line > span:last-child { font-weight: 500; color: #666; min-width: 0; }
.fb-t7 .btn-change-option {
  margin-top: 14px; /* 메타 목록 gap 2px + 14px = 피그마 16px */
  padding: 7px 14px; /* 1px 테두리 포함 높이 32px */
  border: 1px solid var(--t7-line);
  border-radius: 4px;
  background: #fff;
  font-family: inherit;
  font-size: 13px;
  font-weight: 500;
  line-height: 16px;
  letter-spacing: -0.39px;
  color: rgba(0, 0, 0, 0.6);
  cursor: pointer;
}
.fb-t7 .btn-change-option:hover { border-color: rgba(0, 0, 0, 0.35); color: #000; }
.fb-t7 .cart-price-col { display: block; font-size: 20px; font-weight: 600; line-height: 1.35; letter-spacing: -0.6px; color: #000; white-space: nowrap; }
.fb-t7 .btn-cart-delete {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  padding: 3px;
  border: 0;
  background: none;
  color: #777;
  cursor: pointer;
}
.fb-t7 .btn-cart-delete:hover { color: #ef4444; }
.fb-t7 .btn-cart-delete svg { width: 18px; height: 18px; display: block; }

/* 체크박스 (검정 18px) */
.fb-t7 .cart-check-input {
  position: absolute;
  left: 0;
  top: 50%;
  transform: translateY(-50%);
  width: 18px;
  height: 18px;
  margin: 0;
  opacity: 0;
  cursor: pointer;
  z-index: 2;
}
.fb-t7 .cart-check-box {
  position: relative;
  display: inline-block;
  flex-shrink: 0;
  width: 18px;
  height: 18px;
  border: 1px solid #ccc;
  border-radius: 2px;
  background: #fff;
  pointer-events: none;
}
.fb-t7 .cart-check-input:checked + .cart-check-box { background: #000; border-color: #000; }
.fb-t7 .cart-check-input:checked + .cart-check-box::after {
  content: "";
  position: absolute;
  left: 5px;
  top: 2px;
  width: 4px;
  height: 8px;
  border: solid #fff;
  border-width: 0 2px 2px 0;
  transform: rotate(45deg);
}
.fb-t7 .cart-check-input:focus-visible + .cart-check-box { outline: 2px solid rgba(29, 120, 59, 0.5); outline-offset: 2px; }
.fb-t7 .cart-check-accent {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  margin: 0;
  cursor: pointer;
}
.fb-t7 .cart-table th .cart-check-accent { vertical-align: middle; }

/* 빈 장바구니 */
.fb-t7 .cart-grid.is-empty > .cart-list-panel { flex: 1 1 auto; }
.fb-t7 .cart-empty-state {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  padding: 40px 31px;
  text-align: center;
}
.fb-t7 .cart-empty-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 64px;
  height: 64px;
  border-radius: 32px;
  background: rgba(11, 71, 58, 0.05);
  color: #0b473a;
}
.fb-t7 .cart-empty-icon svg { width: 24px; height: 24px; display: block; }
.fb-t7 .cart-empty-state p { margin: 0; font-size: 14px; line-height: 1.6; letter-spacing: -0.42px; color: #888; }
.fb-t7 .cart-empty-state .t7-btn { width: 202.667px; margin-top: 14px; padding: 6px 8px; gap: 4.706px; font-weight: 600; }
.fb-t7 .cart-empty-state .t7-btn svg { width: 24px; height: 24px; }

/* 우측: 결제 요약 및 예약자 정보 */
.fb-t7 .cart-checkout-card {
  position: sticky;
  top: 140px;
  padding: 39px; /* 1px 테두리 포함 → 피그마 p40 내부 좌표 */
  background: #fff;
  border: 1px solid var(--t7-line);
}
.fb-t7 .cart-checkout-card .card-header { margin: 0 0 26px; padding: 0; background: none; border: 0; }
.fb-t7 .cart-checkout-card .card-header h2 {
  margin: 0;
  font-size: 22px;
  font-weight: 600;
  line-height: 1.6;
  letter-spacing: -0.66px;
  color: #111;
}
.fb-t7 .cart-checkout-card .card-body { padding: 0; }
.fb-t7 .summary-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin: 0;
  font-size: 12px;
  line-height: 1.4;
  letter-spacing: -0.36px;
  color: #777;
}
.fb-t7 .summary-row strong { font-weight: 500; color: #000; }
.fb-t7 #referral-discount-row { margin-top: 10px; color: #ef4444; font-weight: 500; }
.fb-t7 #referral-discount-row strong { color: #ef4444; }
.fb-t7 .summary-row.total {
  margin: 9px 0 40px; /* 피그마 구분선(0px, stroke 1px 위로) 다음 gap10 */
  padding: 10px 0 0;
  border-top: 1px solid #ddd;
  font-size: 16px;
  font-weight: 500;
  line-height: 1.35;
  letter-spacing: -0.48px;
  color: #000;
}
.fb-t7 #selected-total-price { font-size: 20px; font-weight: 600; letter-spacing: -0.6px; color: var(--t7-green); }

.fb-t7 .cart-checkout-card .form-group { display: flex; flex-direction: column; gap: 10px; margin: 0 0 26px; }
.fb-t7 .cart-checkout-card .form-group > label {
  display: inline-flex;
  gap: 2px;
  margin: 0;
  font-size: 16px;
  font-weight: 400;
  line-height: normal;
  letter-spacing: -0.48px;
  color: #333;
}
.fb-t7 .cart-checkout-card .form-group input:not([type="checkbox"]):not([type="hidden"]),
.fb-t7 .cart-checkout-card .form-group textarea,
.fb-t7 .cart-checkout-card .form-group select,
.fb-t7 .cart-checkout-card .cart-form-select {
  width: 100%;
  height: 48px;
  margin: 0;
  padding: 0 16px;
  border: 1px solid var(--t7-line);
  border-radius: 4px;
  background-color: #fff;
  font-family: inherit;
  font-size: 16px;
  letter-spacing: -0.48px;
  color: #111;
  outline: none;
  box-shadow: none;
}
.fb-t7 .cart-checkout-card .form-group textarea {
  height: 92px;
  padding: 13px 16px;
  line-height: 1.4;
  resize: vertical;
}
.fb-t7 .cart-checkout-card .form-group select,
.fb-t7 .cart-checkout-card .cart-form-select {
  padding-right: 40px;
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23666' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 14px center;
  background-size: 16px 16px;
}
.fb-t7 .cart-checkout-card .form-group input::placeholder,
.fb-t7 .cart-checkout-card .form-group textarea::placeholder { color: #999; }
.fb-t7 .cart-checkout-card .form-group input:focus,
.fb-t7 .cart-checkout-card .form-group textarea:focus,
.fb-t7 .cart-checkout-card .form-group select:focus { border-color: var(--t7-green); }
.fb-t7 .cart-checkout-card .form-group .t7-req,
.fb-t7 .cart-checkout-card .form-group label .req { color: #f00; font-weight: 500; }

/* 쿠폰 */
.fb-t7 .t7-coupon-row { display: flex; gap: 10px; }
.fb-t7 .t7-coupon-row input { flex: 1 1 auto; min-width: 0; }
.fb-t7 #btn-apply-referral {
  flex: 0 0 80px;
  width: 80px;
  height: 48px;
  padding: 6px 8px;
  border: 0;
  border-radius: 4px;
  background: #000;
  color: #fff;
  font-family: inherit;
  font-size: 15px;
  font-weight: 500;
  letter-spacing: -0.45px;
  cursor: pointer;
}
.fb-t7 #referral-status-msg { margin-top: 0; font-size: 13px; }

/* 다음 / 예약 신청하기 */
.fb-t7 .btn-submit-order {
  width: 100%;
  height: 52px;
  margin-top: 14px;
  padding: 6px 8px;
  border: 0;
  border-radius: 4px;
  background: var(--t7-green);
  color: #fff;
  font-family: inherit;
  font-size: 15px;
  font-weight: 600;
  letter-spacing: -0.45px;
  cursor: pointer;
  transition: background-color .15s;
}
.fb-t7 .btn-submit-order:hover { background: #17652f; }

/* 예약자 정보 요약 (장바구니 예약자 요약 3482:83831) */
.fb-t7 .cart-contact-summary {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin: 0 0 26px;
  padding: 14px 16px 18px;
  border: 1px solid #ddd;
  border-radius: 0;
  background: #f9fafb;
}
.fb-t7 .cart-contact-summary-head { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.fb-t7 .cart-contact-summary-head > span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 14px;
  font-weight: 500;
  line-height: 17px; /* 피그마 normal(14px) = 17px */
  letter-spacing: -0.42px;
  color: #555;
}
.fb-t7 .cart-contact-summary-head > span small { margin: 0; font-size: 14px; font-weight: 400; letter-spacing: -0.42px; color: #999; }
.fb-t7 .cart-contact-summary-head button {
  padding: 5px 11px; /* 1px 테두리 포함 45x26 */
  border: 1px solid var(--t7-line);
  border-radius: 0;
  background: #fff;
  font-family: inherit;
  font-size: 12px;
  font-weight: 500;
  line-height: 14px;
  letter-spacing: -0.36px;
  color: rgba(0, 0, 0, 0.6);
  cursor: pointer;
}
.fb-t7 .cart-contact-summary-main {
  margin: 0;
  font-size: 16px;
  font-weight: 600;
  line-height: 20.8px;
  letter-spacing: -0.48px;
  color: #333;
  overflow-wrap: anywhere;
}
.fb-t7 .cart-contact-summary-sub { margin: 0; font-size: 14px; line-height: 17px; letter-spacing: -0.42px; color: #555; overflow-wrap: anywhere; }

/* 여행자 정보 (3482:83106) */
.fb-t7 .cart-traveler-block {
  display: flex;
  flex-direction: column;
  gap: 28px;
  margin: 0 0 26px;
  padding: 20px 16px;
  border: 1px solid #ddd;
  background: #fff;
}
.fb-t7 .cart-traveler-head { display: flex; flex-direction: column; gap: 8px; margin: 0; }
.fb-t7 .cart-traveler-head-row { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.fb-t7 .cart-traveler-head h3 { margin: 0; font-size: 16px; font-weight: 600; line-height: 20.8px; letter-spacing: -0.48px; color: #333; }
.fb-t7 .cart-traveler-head p { margin: 0; font-size: 14px; line-height: 1.5; letter-spacing: -0.42px; color: #666; word-break: keep-all; }
.fb-t7 .cart-traveler-same {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  font-weight: 400;
  letter-spacing: -0.36px;
  color: #999;
  white-space: nowrap;
  cursor: pointer;
  user-select: none;
}
.fb-t7 .cart-traveler-same .cart-check-input { width: 12px; height: 12px; }
.fb-t7 .cart-traveler-same .cart-check-box { width: 12px; height: 12px; border-color: #ddd; }
.fb-t7 .cart-traveler-same .cart-check-input:checked + .cart-check-box { background: var(--t7-green); border-color: var(--t7-green); }
.fb-t7 .cart-traveler-same .cart-check-input:checked + .cart-check-box::after { left: 3px; top: 0; width: 3px; height: 7px; border-width: 0 1.5px 1.5px 0; }
.fb-t7 .cart-traveler-same .cart-check-input:checked ~ .t7-same-text { color: #333; }
/* 상품별 질문의 '확인합니다' 체크(14px) */
.fb-t7 .cart-bq-product .cart-traveler-same { font-size: 14px; color: #333; }
.fb-t7 .cart-bq-product .cart-traveler-same .cart-check-input,
.fb-t7 .cart-bq-product .cart-traveler-same .cart-check-box { width: 18px; height: 18px; }
.fb-t7 .cart-bq-product .cart-traveler-same .cart-check-input:checked + .cart-check-box::after { left: 5px; top: 2px; width: 4px; height: 8px; border-width: 0 2px 2px 0; }

.fb-t7 #cart-traveler-list { display: flex; flex-direction: column; gap: 28px; }
.fb-t7 .cart-traveler-card { position: relative; margin: 0; padding: 0; border: 0; }
.fb-t7 .cart-traveler-card + .cart-traveler-card { padding-top: 28px; border-top: 1px solid #eee; }
.fb-t7 .cart-traveler-grid { display: flex; flex-direction: column; gap: 20px; }
.fb-t7 .cart-traveler-grid .form-group { margin: 0; }
.fb-t7 .cart-traveler-remove {
  position: absolute;
  top: 18px;
  right: 0;
  width: 28px;
  height: 28px;
  border: 0;
  background: transparent;
  color: #999;
  font-size: 18px;
  line-height: 1;
  cursor: pointer;
}
.fb-t7 .cart-gender-toggle { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.fb-t7 .cart-gender-toggle button {
  height: 48px;
  padding: 0 16px;
  border: 1px solid var(--t7-line);
  border-radius: 4px;
  background: #fff;
  font-family: inherit;
  font-size: 16px;
  font-weight: 400;
  letter-spacing: -0.48px;
  color: #555;
  cursor: pointer;
}
.fb-t7 .cart-gender-toggle button.is-on { border-color: var(--t7-green); background: var(--t7-green-btn); color: var(--t7-green); }
.fb-t7 .cart-traveler-add {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  width: 100%;
  height: 48px;
  margin: 0;
  padding: 0 16px;
  border: 1px solid var(--t7-green);
  border-radius: 0;
  background: #fff;
  font-family: inherit;
  font-size: 16px;
  font-weight: 500;
  letter-spacing: -0.48px;
  color: var(--t7-green);
  cursor: pointer;
}
.fb-t7 .cart-traveler-add svg { width: 16px; height: 16px; }

/* 예약 시 필요한 정보 */
.fb-t7 .cart-traveler-block.cart-bq-block { padding: 20px 0; }
.fb-t7 .cart-bq-head { display: flex; flex-direction: column; gap: 8px; padding: 0 16px; }
.fb-t7 .cart-bq-head h3 { margin: 0; font-size: 16px; font-weight: 600; line-height: 20.8px; letter-spacing: -0.48px; color: #333; }
.fb-t7 .cart-bq-head p { margin: 0; font-size: 14px; line-height: 1.5; letter-spacing: -0.42px; color: #666; }
.fb-t7 .cart-bq-product { display: flex; flex-direction: column; gap: 20px; margin: 0; padding: 0; border: 0; background: none; }
.fb-t7 .cart-bq-product + .cart-bq-product { margin-top: 8px; }
.fb-t7 .cart-bq-product-name {
  margin: 0 0 8px;
  padding: 15px 16px; /* 피그마 띠 높이 60px(테두리 포함) */
  border-top: 1px solid #ddd;
  border-bottom: 1px solid #ddd;
  background: #f9fbfb;
  font-size: 20px;
  font-weight: 600;
  line-height: 1.4;
  letter-spacing: -0.6px;
  color: #000;
  text-align: center;
}
.fb-t7 .cart-bq-product .form-group { margin: 0; padding: 0 16px; }

/* 2단계 버튼 */
.fb-t7 .cart-step-actions { display: flex; gap: 10px; margin-top: 40px; }
.fb-t7 .cart-step-prev {
  flex: 0 0 120px;
  height: 52px;
  padding: 6px 8px;
  border: 1px solid var(--t7-line);
  border-radius: 4px;
  background: #fff;
  font-family: inherit;
  font-size: 15px;
  font-weight: 400;
  letter-spacing: -0.45px;
  color: #000;
  cursor: pointer;
}
.fb-t7 .cart-step-actions .btn-submit-order { flex: 1 1 auto; margin-top: 0; }

/* 상품별 질문 모달 */
.fb-t7-modal .oc-modal-card { border-radius: 4px; }

@media (max-width: 1200px) {
  .fb-t7 .cart-grid > .cart-checkout-card { flex-basis: 400px; width: 400px; }
}
@media (max-width: 992px) {
  .fb-t7 .cart-grid { flex-direction: column; align-items: stretch; }
  .fb-t7 .cart-grid > .cart-checkout-card { flex: 1 1 auto; width: 100%; position: static; }
}
@media (max-width: 640px) {
  .fb-t7.t7-cart { padding: 40px 16px 80px; }
  .fb-t7.t7-center { min-height: 0; padding: 48px 16px 80px; }
  .fb-t7.t7-pay { min-height: 0; padding: 48px 16px 80px; }
  .fb-t7 .t7-card,
  .fb-t7 .t7-pay-methods-card,
  .fb-t7 .cart-checkout-card { padding: 24px 20px; }
  .fb-t7 .t7-summary { padding: 12px 16px; }
  .fb-t7 .cart-list-panel { padding: 12px; }
  .fb-t7 .cart-table .t7-col-check { padding-left: 8px; width: 26px; }
  .fb-t7 .cart-table .t7-col-info { padding-left: 16px; }
  .fb-t7 .cart-table th.t7-col-info::before { left: 8px; }
  .fb-t7 .cart-table .t7-col-price { width: auto; }
  .fb-t7 .cart-table .t7-col-del { width: 48px; padding-right: 8px; }
  .fb-t7 .cart-item-info { flex-direction: column; gap: 12px; }
  .fb-t7 .cart-price-col { font-size: 16px; }
  .fb-t7 .t7-steps { padding-right: 0; }
  .fb-t7 .t7-actions { flex-direction: column; }
  .fb-t7 .t7-actions > *,
  .fb-t7 .t7-actions:not(.t7-actions--wrap) > :first-child:nth-last-child(2) { flex: 0 0 auto; }
}

/* ======================================================
   견적 요청 (quote_request.php · 4029:31922)
   ====================================================== */
.fb-t7.t7-quote { max-width: 1096px; margin: 0 auto; padding: 75px 10px 130px; background: #fff; }
.fb-t7 .t7-quote-head { display: flex; flex-direction: column; align-items: center; gap: 12px; margin: 0 0 60px; text-align: center; }
.fb-t7 .t7-quote-head h1 { margin: 0; font-size: 26px; font-weight: 600; line-height: normal; letter-spacing: -0.78px; color: #000; }
.fb-t7 .t7-quote-head p { margin: 0; font-size: 16px; line-height: 1.35; letter-spacing: -0.48px; color: rgba(0, 0, 0, 0.6); word-break: keep-all; }
.fb-t7.t7-quote .qr-card { padding: 24px; margin: 0 0 20px; background: #fff; border: 1px solid #e5e7eb; border-radius: 8px; }
.fb-t7.t7-quote #quote-request-form { display: flex; flex-direction: column; gap: 20px; }
.fb-t7.t7-quote .qr-row { display: flex; gap: 40px; flex-wrap: nowrap; }
.fb-t7.t7-quote .qr-row:has(> .qr-field:nth-child(3)) { gap: 20px; }
.fb-t7.t7-quote .qr-row > .qr-field { flex: 1 1 0; min-width: 0; }
.fb-t7.t7-quote .qr-field { display: flex; flex-direction: column; gap: 10px; margin: 0; }
.fb-t7.t7-quote .qr-label { display: inline-flex; gap: 2px; margin: 0; font-size: 16px; font-weight: 400; line-height: normal; letter-spacing: -0.48px; color: #333; }
.fb-t7.t7-quote .qr-label .req { color: #f00; font-weight: 500; }
.fb-t7.t7-quote .qr-input,
.fb-t7.t7-quote .qr-select,
.fb-t7.t7-quote .qr-textarea {
  height: 48px;
  padding: 0 16px;
  border: 1px solid var(--t7-line);
  border-radius: 4px !important;
  background-color: #fff;
  font-family: inherit;
  font-size: 16px;
  letter-spacing: -0.48px;
  color: #111;
  outline: none;
}
.fb-t7.t7-quote .qr-select { padding-right: 48px; }
.fb-t7.t7-quote .qr-textarea { height: 136px; min-height: 136px; padding: 13px 16px; line-height: 1.4; }
.fb-t7.t7-quote .qr-input::placeholder,
.fb-t7.t7-quote .qr-textarea::placeholder { color: #999; }
.fb-t7.t7-quote .qr-input:focus,
.fb-t7.t7-quote .qr-select:focus,
.fb-t7.t7-quote .qr-textarea:focus { border-color: var(--t7-green); }
.fb-t7.t7-quote .qr-input.error,
.fb-t7.t7-quote .qr-textarea.error,
.fb-t7.t7-quote .qr-select.error { border-color: var(--t7-line) !important; } /* 피그마 오류 상태(4029:31922): 테두리는 기본, 아래 문구만 빨강 */
.fb-t7.t7-quote .qr-input.error:focus,
.fb-t7.t7-quote .qr-textarea.error:focus { border-color: var(--t7-green) !important; }
.fb-t7.t7-quote .qr-select-wrap > .qr-select-chevron { right: 14px; color: #000; }
.fb-t7.t7-quote .error-msg { margin: -4px 0 0; font-size: 12px; font-weight: 400; line-height: 17px; letter-spacing: -0.36px; color: #f00; }
.fb-t7.t7-quote .qr-submit {
  height: 52px;
  margin: 0;
  border-radius: 4px !important;
  background: var(--t7-green);
  font-family: inherit;
  font-size: 15px;
  font-weight: 600; /* 피그마 I4029:32144 Pretendard SemiBold */
  letter-spacing: -0.45px;
}
.fb-t7.t7-quote .qr-submit:hover { background: #17652f; }

/* 여행 기간 */
.fb-t7.t7-quote .qr-cal-block { margin: 0; }
.fb-t7.t7-quote .qr-cal-block > .qr-label + .qr-cal-hint { margin: -6px 0 0; font-size: 12px; line-height: 1.4; letter-spacing: -0.36px; color: #6b7280; }
.fb-t7.t7-quote .qr-cal-summary {
  margin: 0;
  padding: 15px 16px; /* 1px 테두리 포함 높이 82px */
  gap: 12px;
  flex-wrap: nowrap;
  background: #f9fafb;
  border: 1px solid var(--t7-line);
  border-radius: 4px;
}
.fb-t7.t7-quote .qr-cal-summary-text { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.fb-t7.t7-quote .qr-cal-summary-text > span { font-size: 12px; line-height: 1.4; letter-spacing: -0.36px; color: #666; }
.fb-t7.t7-quote .qr-cal-summary strong { font-size: 16px; font-weight: 600; line-height: 1.4; letter-spacing: -0.48px; color: var(--t7-green); }
.fb-t7.t7-quote .qr-cal-clear {
  flex: 0 0 120px;
  height: 50px;
  padding: 8px;
  border: 1px solid var(--t7-line);
  border-radius: 4px !important;
  background: #fff;
  font-family: inherit;
  font-size: 15px;
  font-weight: 400;
  letter-spacing: -0.45px;
  color: #000;
}
.fb-t7.t7-quote .ft-rami-calendar {
  padding: 30px 61px 20px;
  border: 1px solid rgba(0, 0, 0, 0.1);
  border-radius: 8px;
}
.fb-t7.t7-quote .ft-rami-calendar-grid { grid-template-columns: repeat(2, 328px); justify-content: center; gap: 60px; }
.fb-t7.t7-quote .ft-rami-calendar-month h2 {
  margin: 0 0 15px;
  font-size: 16px;
  font-weight: 600;
  line-height: normal;
  letter-spacing: -0.48px;
  color: #000;
  text-align: center;
}
.fb-t7.t7-quote .ft-rami-days { grid-template-columns: repeat(7, 40px); column-gap: 4px; row-gap: 0; padding: 0 12px; justify-content: center; }
.fb-t7.t7-quote .ft-rami-days span,
.fb-t7.t7-quote .ft-rami-days button {
  width: 40px;
  min-height: 40px;
  height: 40px;
  padding: 0;
  font-family: inherit;
  font-size: 16px;
  font-weight: 400;
  letter-spacing: 0.5px;
  color: #000;
}
.fb-t7.t7-quote .ft-rami-days .is-head { min-height: 40px; font-size: 12px; letter-spacing: 0.4px; color: #000; }
.fb-t7.t7-quote .ft-rami-days .is-head:nth-child(1) { color: #e1191c; }
.fb-t7.t7-quote .ft-rami-days .is-head:nth-child(7) { color: #0071fe; }
.fb-t7.t7-quote .ft-rami-days .is-disabled { color: rgba(0, 0, 0, 0.3); text-decoration: line-through; }
.fb-t7.t7-quote .ft-rami-days button { border-radius: 50% !important; }
/* 주말 날짜 색 (피그마 4029:31922: 일 #e1191c / 토 #0071fe, 지난 날짜·선택 상태는 제외) — 요일 머리 7칸 + 빈칸 + 날짜 순서라 7열 기준 */
.fb-t7.t7-quote .ft-rami-days > .is-available:nth-child(7n+1):not(.is-selected):not(.is-in-range) { color: #e1191c; }
.fb-t7.t7-quote .ft-rami-days > .is-available:nth-child(7n):not(.is-selected):not(.is-in-range) { color: #0071fe; }
.fb-t7.t7-quote .ft-rami-days .is-available:hover { background: #f3f4f6; }
.fb-t7.t7-quote .ft-rami-days .is-available.is-in-range { background: var(--t7-green-l); color: var(--t7-green); }
.fb-t7.t7-quote .ft-rami-days .is-available.is-range-start,
.fb-t7.t7-quote .ft-rami-days .is-available.is-range-end,
.fb-t7.t7-quote .ft-rami-days .is-available.is-selected { background: var(--t7-green); color: #fff; }
.fb-t7.t7-quote .ft-rami-calendar-nav { top: 187px; width: 24px; height: 24px; color: #000; }
.fb-t7.t7-quote .ft-rami-calendar-nav:disabled { color: #999; }
.fb-t7.t7-quote .ft-rami-calendar-nav--prev { left: 30px; }
.fb-t7.t7-quote .ft-rami-calendar-nav--next { right: 30px; }
.fb-t7.t7-quote .qr-cal-legend { display: flex; justify-content: flex-end; gap: 11.39px; margin: 0 -31px; } /* 피그마 주석 32094: 달력 내부폭(964) 오른쪽 끝 */
.fb-t7.t7-quote .qr-cal-legend span { display: inline-flex; align-items: center; gap: 4.27px; font-size: 12.814px; line-height: 15px; letter-spacing: -0.26px; color: rgba(0, 0, 0, 0.7); }
.fb-t7.t7-quote .qr-cal-legend span::before { content: ""; width: 10px; height: 10px; border-radius: 50%; background: var(--t7-green); }
.fb-t7.t7-quote .qr-cal-legend .is-off::before { background: rgba(0, 0, 0, 0.3); }

/* 접수 후 보기 화면 · 링크 버튼 */
.fb-t7.t7-quote .qr-link-btn { height: 48px; padding: 0 20px; border: 1px solid var(--t7-line); border-radius: 4px; font-size: 15px; font-weight: 400; color: #000; }
.fb-t7.t7-quote .qr-link-btn:hover { border-color: var(--t7-green); color: var(--t7-green); }
.fb-t7.t7-quote .qr-alert { border-radius: 4px; }
.fb-t7.t7-quote .qr-alert-success { background: var(--t7-green-l); border-color: #b7dfc3; color: #145a2b; }
.fb-t7.t7-quote .qr-card-title { font-size: 18px; font-weight: 600; color: #111; border-bottom-color: #ddd; }
.fb-t7.t7-quote .qr-badge { border-radius: 4px; font-weight: 600; }
.fb-t7.t7-quote .qr-badge-cat { background: var(--t7-green-l); color: var(--t7-green); }
.fb-t7.t7-quote .qr-view-title { font-weight: 600; letter-spacing: -0.6px; }
.fb-t7.t7-quote .qr-answer-box { background: #f9fafb; border-left-color: var(--t7-green); }
.fb-t7.t7-quote .qr-dl-link { border-radius: 4px; background: var(--t7-green); }
.fb-t7.t7-quote .qr-dl-link:hover { background: #17652f; }
.fb-t7.t7-quote .qr-waiting { border-radius: 4px; }

@media (max-width: 900px) {
  .fb-t7.t7-quote .ft-rami-calendar-grid { grid-template-columns: 328px; gap: 28px; }
}
@media (max-width: 720px) {
  .fb-t7.t7-quote { padding: 40px 16px 80px; }
  .fb-t7 .t7-quote-head { margin-bottom: 32px; }
  .fb-t7.t7-quote .qr-card { padding: 16px; }
  .fb-t7.t7-quote .qr-row,
  .fb-t7.t7-quote .qr-row:has(> .qr-field:nth-child(3)) { flex-wrap: wrap; gap: 20px; }
  .fb-t7.t7-quote .qr-row > .qr-field { flex: 1 1 100%; }
  .fb-t7.t7-quote .ft-rami-calendar { padding: 44px 8px 14px; }
  .fb-t7.t7-quote .ft-rami-calendar-grid { grid-template-columns: 1fr; }
  .fb-t7.t7-quote .ft-rami-days { grid-template-columns: repeat(7, minmax(0, 40px)); padding: 0; column-gap: 2px; }
  .fb-t7.t7-quote .ft-rami-days span,
  .fb-t7.t7-quote .ft-rami-days button { width: auto; }
  .fb-t7.t7-quote .ft-rami-calendar-nav { top: 14px; }
  .fb-t7.t7-quote .ft-rami-calendar-nav--prev { left: 8px; }
  .fb-t7.t7-quote .ft-rami-calendar-nav--next { right: 8px; }
  .fb-t7.t7-quote .qr-cal-summary { flex-wrap: wrap; }
}

/* 줄바꿈 위치 고정(피그마) — 모바일에서는 자연 줄바꿈 */
.fb-t7 .t7-br-pc { display: inline; }
@media (max-width: 768px) { .fb-t7 .t7-br-pc { display: none; } }
