/* ============================================================
 * 테마 15 (테스트) - 피그마 시안 기반 (mo / node 275:1867 ★Main)
 * - invitation_test.css 뒤에 로드되어 테마15 관련 규칙을 오버라이드한다
 * - 운영 전환 시 이 파일을 invitation_15.css 로 복사하여 사용
 * - 커버는 순수 일러스트(사용자 사진 없음, Status::$theme[15]['photo']=false)
 *
 * 디자인 토큰
 *  배경      : #F4E7DC (베이지/크림, 피그마 시안4 --color-linen)
 *  본문      : #92623C (브라운 - 이름/타이틀과 동일)
 *  이름/타이틀: #92623C (Noto Serif KR Bold)
 *  포인트    : #B8835A (버튼/구분선/뱃지)
 *  포인트진함: #8C6238
 *  폰트      : Noto Serif KR(이름/뱃지), Eulyoo1945(본문 - 공용 테마 폰트 유지)
 * ============================================================ */

@import url("https://fonts.googleapis.com/css2?family=Noto+Serif+KR:wght@500;700&display=swap");

/* 영문/장식 텍스트 전용 (라틴 문자에만 적용 - Belgiano는 한글 글리프가 없어
 * 신랑/신부 이름에 라틴 문자가 섞여 있어도 한글은 자동으로 Noto Serif KR로 폴백된다) */
@font-face {
  font-family: "Belgiano Serif";
  src: url("/assets/fonts/Belgiano/Belgiano Serif 2.ttf") format("truetype");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

#themeNameBox.theme15 {
  --t15-bg: #f4e7dc;
  --t15-ink: #92623c;
  --t15-name: #92623c;
  --t15-point: #b8835a;
  --t15-point-deep: #8c6238;
  /* 본문(하단) 전용 토큰 - 피그마 시안4(fileKey MOAgdu3H4rAIYq3tAw9MGS / root 275:513) 실측 색상.
   * 커버는 --t15-point(#b8835a) 계열을 쓰지만, 본문은 다른 두 브라운을 사용한다:
   *  - --t15-brown : 크림 배경 섹션의 타이틀/버튼/보더/본문 텍스트 (초대글·캘린더·갤러리·오시는길·계좌)
   *  - --t15-taupe : RSVP·방명록 섹션 배경(어두운 그레이시브라운) + 그 위의 보조 텍스트 */
  --t15-brown: #92623c;
  --t15-taupe: #9e937e;
  --t15-cream-text: #f4e7dc;
}

/* ============================================================
 * 1. 메인 커버
 * ============================================================ */
#themeNameBox.theme15 .theme-15-wrap {
  display: flex;
  justify-content: center;
  container-type: inline-size;
  width: 100%;
  aspect-ratio: 360 / 786;
  min-height: 0;
  position: relative;
  overflow: hidden;
  background: var(--t15-bg);
}
#themeNameBox.theme15 .theme-15-wrap .theme-frame-cons-box {
  position: relative;
  z-index: 1;
  width: 100%;
  max-width: 469.39px;
  aspect-ratio: 360 / 786;
  min-height: 0;
  padding: 0;
  overflow: hidden;
  text-align: center;
  background: var(--t15-bg);
}

/* 일러스트 레이어 공통: 절대배치 + contain 배경 (Figma export PNG) */
#themeNameBox.theme15 .theme15-illust {
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
}
#themeNameBox.theme15 .theme15-illust span {
  position: absolute;
  display: block;
  background-repeat: no-repeat;
  background-size: contain;
}
/* 소나무(상단 좌우 모서리) - node 275:2426 */
#themeNameBox.theme15 .theme15-pine {
  top: 0;
  left: -1.94%;
  width: 102.78%;
  height: 47.07%;
  background-image: url("/assets/tool/img/invitation/theme_2026/theme15_pine.svg");
  background-position: top center;
  z-index: 1;
}
/* 산 실루엣 좌/우 - node 275:1902 / 275:1892 */
#themeNameBox.theme15 .theme15-mountain-l {
  top: 44.91%;
  left: -11.94%;
  width: 48.05%;
  height: 18.01%;
  background-position: left bottom;
  z-index: 2;
}
#themeNameBox.theme15 .theme15-mountain-l {
  background-image: url("/assets/tool/img/invitation/theme_2026/theme15_mountain_left.svg");
}
#themeNameBox.theme15 .theme15-mountain-r {
  top: 47.2%;
  left: 83.17%;
  width: 36%;
  height: 14.73%;
  background-position: right bottom;
  background-image: url("/assets/tool/img/invitation/theme_2026/theme15_mountain_right.svg");
  z-index: 2;
}
/* 반짝이는 하트/스파클 배경 - node 275:1874 */
#themeNameBox.theme15 .theme15-hearts {
  top: 23.03%;
  left: -5%;
  width: 112.11%;
  height: 43.78%;
  background-image: url("/assets/tool/img/invitation/theme_2026/theme15_hearts.svg");
  background-position: center;
  z-index: 3;
}
/* 한복 신랑신부 일러스트 - node 275:1914 */
#themeNameBox.theme15 .theme15-couple {
  top: 29.39%;
  left: 20.56%;
  width: 66.23%;
  height: 37.55%;
  background-image: url("/assets/tool/img/invitation/theme_2026/theme15_couple.png");
  background-position: bottom center;
  z-index: 4;
}

/* "천생연분" 세로 뱃지 (피그마 node 275:2474) - 이미지 아님, 보더 알약 2겹 */
#themeNameBox.theme15 .theme15-badge {
  position: absolute;
  z-index: 5;
  top: 11.07%;
  left: 50%;
  transform: translateX(-50%);
  width: clamp(28px, 11.111cqw, 46px);
  height: clamp(70px, 28.056cqw, 116px);
  padding: clamp(2px, 0.833cqw, 4px);
  box-sizing: border-box;
  border: 0.5px solid var(--t15-point);
  border-radius: 30px;
  background: transparent;
}
#themeNameBox.theme15 .theme15-badge-inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  border: 0.5px solid var(--t15-point);
  border-radius: 30px;
  background: #ffffff;
}
#themeNameBox.theme15 .theme15-badge-inner span {
  display: block;
  color: var(--t15-point);
  font-family: "Noto Serif KR", "JejuMyeongjo", serif;
  font-size: clamp(9px, 3.333cqw, 14px);
  font-weight: 500;
  line-height: 1.7;
}

/* 이름 / 날짜 / 예식장명 오버레이 - main_14 패턴과 동일하게 data-name 동적 바인딩 사용 */
#themeNameBox.theme15 .theme-photo-overlay {
  position: absolute;
  z-index: 6;
  left: 0;
  top: 70.1%;
  width: 100%;
  margin: 0;
  color: var(--t15-name);
}
#themeNameBox.theme15 .theme-photo-overlay::before {
  display: none;
}
#themeNameBox.theme15 .theme-name-stack {
  position: static;
  display: flex !important;
  flex-direction: column;
  align-items: center;
  gap: 0;
  width: 100%;
  padding: 0 12px;
  box-sizing: border-box;
  color: var(--t15-name);
  font-family: "Belgiano Serif", "Noto Serif KR", "JejuMyeongjo", serif;
  font-size: clamp(15px, 6.667cqw, 24px);
  font-weight: 700;
  line-height: clamp(20px, 8.889cqw, 32px);
  letter-spacing: -1px;
  text-align: center;
  white-space: normal;
  word-break: keep-all;
  overflow-wrap: break-word;
}
#themeNameBox.theme15 .theme-name-stack > span {
  display: block;
  white-space: normal;
}
#themeNameBox.theme15 .theme-name-join {
  margin: 0;
}
#themeNameBox.theme15 .main-date-txt,
#themeNameBox.theme15 .weddding-hall-name {
  position: static;
  display: block;
  width: 100%;
  margin: 0;
  color: var(--t15-name);
  font-family: "Noto Serif KR", "JejuMyeongjo", serif;
  font-weight: 700;
  text-align: center;
}
#themeNameBox.theme15 .main-date-txt {
  margin-top: clamp(11px, 5.556cqw, 20px);
  font-size: clamp(9px, 4.444cqw, 16px);
  line-height: clamp(13px, 6.111cqw, 22px);
}
#themeNameBox.theme15 .main-date-txt .weddding_date {
  margin: 0;
}
#themeNameBox.theme15 .weddding-hall-name {
  margin-top: clamp(4px, 2.222cqw, 8px);
  font-size: clamp(8px, 4.167cqw, 15px);
  line-height: 1.6;
}


/* ============================================================
 * 2. 본문(하단 섹션) - 피그마 시안4 기반 전면 재퍼블리싱
 *    fileKey MOAgdu3H4rAIYq3tAw9MGS / root 275:513 (360x6732)
 *    - 마크업은 전 테마 공유이므로 #themeNameBox.theme15 스코프 CSS만으로 재구성한다.
 *    - 뼈대(레이아웃)는 테마14(invitation_14_test.css)와 동일한 셀렉터 구조/기법을 사용하고,
 *      색·폰트·배경·장식·간격 값만 시안4 실측값으로 교체했다.
 *
 *    시안4 실측 토큰
 *     크림 배경   : #F4E7DC (--t15-bg)  - 초대글/캘린더/갤러리/오시는길/계좌
 *     브라운      : #92623C (--t15-brown) - 크림 섹션의 타이틀/본문/버튼/보더/원
 *     타우프 배경 : #9E937E (--t15-taupe) - RSVP/방명록 배경 + 그 위 흰 텍스트
 *     크림 텍스트 : #F4E7DC (--t15-cream-text) - 타우프 배경 위 이름/날짜
 *     캘린더 일·토: #BF4340 / 당월 #4D4C4C / 타월 #B3B3B3 / 헤더 #111
 *     폰트        : Noto Serif KR (타이틀·본문·버튼·장식 모두), tracking -0.5px
 * ============================================================ */

/* ===== 기본: 라이트 크림 배경 (기존 다크 테마 무력화) =====
 * 커버·본문 모두 기준(global.css --color-linen) #f4e7dc 로 통일 (--t15-bg). */
#themeNameBox.theme15 {
  background: #f4e7dc;
  color: var(--t15-ink);
  font-family: "Noto Serif KR", "JejuMyeongjo", serif;
}
/* 기존 다크 규칙(.preview-inner-wrap 등) 무력화 → 부모(크림) 노출 */
#themeNameBox.theme15 .preview-wrap,
#themeNameBox.theme15 .preview-inner-wrap,
#themeNameBox.theme15 .preview-wrap .preview-inner-wrap {
  background-color: transparent !important;
  background-image: none;
}
/* base CSS의 섹션별 inner-wrap 좌우 패딩(0/20/30px 제각각)을 theme15에서 0으로 통일.
 * → 콘텐츠 인셋을 섹션 래퍼 32px 로 일원화하고, 타이틀 리본 ::before 의 -32px 풀블리드가
 *   모든 섹션에서 카드 좌우 끝까지 정확히 닿게 한다. (세로 패딩은 건드리지 않음) */
#themeNameBox.theme15 .preview-inner-wrap {
  padding-left: 0;
  padding-right: 0;
}

/* ===== 크림 배경 섹션 공통 여백 (상단 100px) ===== */
#themeNameBox.theme15 .preview-wrap.preview-invitation-wrap,
#themeNameBox.theme15 .preview-calendar-wrap,
#themeNameBox.theme15 .preview-gallery-wrap,
#themeNameBox.theme15 .preview-weddinginfo-wrap,
#themeNameBox.theme15 .preview-bank-wrap {
  min-height: 0;
  padding: 100px 32px 0;
  background-color: transparent;
  background-image: none;
  color: var(--t15-ink);
}
#themeNameBox.theme15 .preview-calendar-wrap {
  padding: 100px 32px;
}
/* 초대글은 invi-wrap 이 자체 패딩 보유 → 섹션 패딩 0 */
#themeNameBox.theme15 .preview-wrap.preview-invitation-wrap {
  padding: 0;
}

/* ===== 섹션 타이틀 공통: 리본 매듭 장식 구분선 + 브라운 타이틀 =====
 * 기준 에셋 invitation-vector-01.svg(360x29, #9E937E 라인)을 theme15_title_ribbon.svg 로 복사해 사용.
 * 전 크림 섹션 타이틀에 공통으로 ::before 로 배치.
 * RSVP(타우프)는 아래에서 끄고, 방명록(타우프)은 흰 라인 리본(_cream)으로 교체한다. */
#themeNameBox.theme15 .preview-title {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 50px;
  margin: 0 0 50px;
  padding-bottom: 0 !important;
  text-align: center;
}
#themeNameBox.theme15 .preview-title::before {
  content: "";
  display: block;
  /* 좌우 끝까지 풀블리드: 섹션 래퍼(캘린더/갤러리/오시는길/계좌/방명록은 section-wrap,
   * 초대글은 invi-wrap)가 모두 overflow:hidden 이라, 넉넉히 빼면 카드 끝에서 정확히 잘려
   * 선이 좌우 끝까지 채워진다. (코드로 못 잡는 잔여 인셋까지 확실히 커버) */
  width: calc(100% + 64px);
  margin-left: -32px;
  margin-right: -32px;
  aspect-ratio: 360 / 29;
  background: url("/assets/tool/img/invitation/theme_2026/theme15_title_ribbon.svg") center / contain no-repeat;
  pointer-events: none;
}
#themeNameBox.theme15 .preview-title .font-tit,
#themeNameBox.theme15 .preview-title h2 {
  margin: 0;
  color: var(--t15-brown);
  font-family: "Noto Serif KR", "JejuMyeongjo", serif;
  font-size: 20px;
  font-weight: 700;
  line-height: 1.5;
  letter-spacing: -0.5px;
}

/* ============================================================
 * 2-1. 초대글 (con_invite_call / node 275:1410)
 *  - 타이틀(20px 700 브라운) → 본문(13px 600 브라운) → 사진(풀폭) → 연락하기(솔리드 브라운)
 *  - 사진은 마크업상 타이틀 바로 뒤에 있으나 flex order 로 본문 아래 풀폭 가로 사진으로 재배치
 *    (테마14와 동일 기법)
 * ============================================================ */
#themeNameBox.theme15 .preview-invi-wrap {
  position: relative;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  padding: 100px 32px 30px;
}
#themeNameBox.theme15 .preview-invi-wrap > .preview-invitation-title { order: 1; }
#themeNameBox.theme15 .preview-invi-wrap > .preview-message-wrap { order: 2; }
#themeNameBox.theme15 .preview-invi-wrap > .preview-message-photo-wrap { order: 3; }

#themeNameBox.theme15 .preview-invitation-title h2 {
  font-size: 20px;
  line-height: 1.5;
}
/* 본문: 타이틀 아래 30px, 중앙 정렬 (Noto Serif KR 13px 600) */
#themeNameBox.theme15 .preview-invi-wrap .preview-message-wrap,
#themeNameBox.theme15 .preview-invi-wrap .preview-message-wrap p {
  color: var(--t15-brown);
  font-family: "Noto Serif KR", "JejuMyeongjo", serif;
  font-size: 15px;
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: -0.5px;
  text-align: center;
}
#themeNameBox.theme15 .preview-invi-wrap .preview-message-wrap {
  background: transparent;
}
/* 초대글 사진: 본문 아래 풀폭 가로 박스 (360x214) */
#themeNameBox.theme15 .preview-invi-wrap > .preview-message-photo-wrap {
  width: calc(100% + 64px);
  max-width: none;
  margin: 40px -32px 0;
}
#themeNameBox.theme15 .preview-message-photo {
  width: 100% !important;
  aspect-ratio: 360 / 214;
  height: auto !important;
  border: 0;
  border-radius: 0;
  overflow: hidden;
  background: #d9d9d9;
}
#themeNameBox.theme15 .preview-message-photo .cropper-preview,
#themeNameBox.theme15 .preview-message-photo > img,
#themeNameBox.theme15 .preview-message-photo .card-img-top {
  width: 100%;
  height: 100%;
  max-height: none;
  aspect-ratio: auto;
  object-fit: cover;
  object-position: center;
  border-radius: 0;
  display: block;
}

/* ============================================================
 * 2-2. 혼주(가족) + 연락하기 버튼
 * ============================================================ */
#themeNameBox.theme15 .preview-invitation-cellphome {
  margin: 0;
  padding: 0 16px 25px;
  background: transparent;
  border: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
}
#themeNameBox.theme15 .preview-invitation-cellphome,
#themeNameBox.theme15 .preview-invitation-cellphome p,
#themeNameBox.theme15 .preview-invitation-cellphome span {
  color: var(--t15-brown);
  font-family: "Noto Serif KR", "JejuMyeongjo", serif;
  letter-spacing: -0.5px;
}
/* 한 줄(신랑/신부): 좌(부모, 우측정렬) / 우(관계+이름, 좌측정렬) 반반 구조 (테마14 방식)
 * → 두 줄의 경계가 고정되어 "아들/딸"과 이름 시작 위치가 세로로 정렬됨 */
#themeNameBox.theme15 .preview-invitation-cellphome .groom,
#themeNameBox.theme15 .preview-invitation-cellphome .bride {
  display: flex !important;
  flex-wrap: nowrap;
  justify-content: center;
  align-items: baseline;
  column-gap: 14px;
  width: 100%;
  max-width: 340px;
  margin: 0 auto;
  padding-bottom: 0;
}
#themeNameBox.theme15 .preview-invitation-cellphome .groom > p,
#themeNameBox.theme15 .preview-invitation-cellphome .bride > p {
  margin: 0;
  display: inline-flex !important;
  flex-wrap: nowrap;
  align-items: baseline;
  gap: 6px;
}
/* 부모 묶음: 행의 좌측 절반에서 우측 정렬(중앙 경계선에 붙음) */
#themeNameBox.theme15 .preview-invitation-cellphome .groom > p:not(.rel_box),
#themeNameBox.theme15 .preview-invitation-cellphome .bride > p:not(.rel_box) {
  flex: 1 1 0;
  min-width: 0;
  justify-content: flex-end;
}
/* 관계+이름 묶음: 행의 우측 절반에서 좌측 정렬 */
#themeNameBox.theme15 .preview-invitation-cellphome .groom > p.rel_box,
#themeNameBox.theme15 .preview-invitation-cellphome .bride > p.rel_box {
  flex: 0.8 1 0;
  min-width: 0;
  justify-content: flex-start !important;
  gap: 6px;
}
/* 이름의 전역/JS 인라인 마진 무력화 */
#themeNameBox.theme15 .preview-invitation-cellphome .rel_box .font-tit,
#themeNameBox.theme15 .preview-invitation-cellphome [data-name="groom_name"],
#themeNameBox.theme15 .preview-invitation-cellphome [data-name="bride_name"] {
  margin-left: 0 !important;
  margin-right: 0 !important;
}
/* 관계(아들/딸): 고정폭 우측정렬 → 이름 시작 x 일치, 부모색 14px */
#themeNameBox.theme15 .preview-invitation-cellphome .rel_text {
  display: inline-block !important;
  min-width: 28px;
  width: auto !important;
  flex-shrink: 0;
  text-align: right;
  margin: 0 4px 0 0 !important;
  padding: 0 !important;
  color: #a98a68 !important;
  font-size: 14px !important;
  font-weight: 400;
}
/* 부모 이름: #a98a68 14px */
#themeNameBox.theme15 .preview-invitation-cellphome .parentName {
  color: #a98a68 !important;
  font-size: 14px !important;
  font-weight: 400;
}
/* 신랑/신부 이름: 브라운 18px 700 */
#themeNameBox.theme15 .preview-invitation-cellphome [data-name="groom_name"],
#themeNameBox.theme15 .preview-invitation-cellphome [data-name="bride_name"],
#themeNameBox.theme15 .preview-invitation-cellphome .rel_box .font-tit {
  display: inline-block !important;
  color: var(--t15-brown) !important;
  font-size: 18px !important;
  font-weight: 700;
  text-align: left;
}
/* 부모 사이 점(·): 부모색 도트 */
#themeNameBox.theme15 .preview-invitation-cellphome .cellphone-dot {
  display: inline-block !important;
}
#themeNameBox.theme15 .preview-invitation-cellphome .cellphone-dot::before {
  width: 2px !important;
  height: 2px !important;
  background-color: #a98a68 !important;
  border-radius: 50% !important;
  margin: 0 6px !important;
  display: inline-block !important;
  vertical-align: middle !important;
  content: "" !important;
}
#themeNameBox.theme15 .preview-invitation-cellphome .cellphone-dot:has(+ [data-name*="goin_type"] + .parentName:empty),
#themeNameBox.theme15 .preview-invitation-cellphome .cellphone-dot:has(+ .parentName:empty) {
  display: none !important;
}
#themeNameBox.theme15 .preview-invitation-cellphome .groom > p:not(.rel_box) > span:not(.cellphone-dot),
#themeNameBox.theme15 .preview-invitation-cellphome .bride > p:not(.rel_box) > span:not(.cellphone-dot) {
  display: block !important;
  white-space: nowrap;
}
/* 故(고인) 마커 go.svg: 검정 이미지를 폰트색(#a98a68)으로 "정확히" 재색.
 * filter 근사 대신, 원본 img는 숨기고 go.svg 를 mask 로 써서 배경색을 입힌다 → 폰트와 동일 컬러. */
#themeNameBox.theme15 .preview-invitation-cellphome [data-name*="goin_type"] {
  position: relative;
  display: inline-block !important;
  width: 20px;
  height: 1em;
  vertical-align: middle;
}
#themeNameBox.theme15 .preview-invitation-cellphome [data-name*="goin_type"]:empty {
  display: none !important;
}
#themeNameBox.theme15 .preview-invitation-cellphome [data-name*="goin_type"] img {
  display: none !important;
}
#themeNameBox.theme15 .preview-invitation-cellphome [data-name*="goin_type"]:has(img)::after {
  content: "";
  position: absolute;
  left: 0;
  top: 50%;
  transform: translateY(-50%);
  width: 18px;
  height: 18px;
  background-color: #a98a68;
  -webkit-mask: url("/assets/tool/img/invitation/common/go.svg") no-repeat center / contain;
  mask: url("/assets/tool/img/invitation/common/go.svg") no-repeat center / contain;
}
/* 연락하기 버튼: 솔리드 브라운 채움 + 흰 텍스트 (Figma 275:1865, 180x45, radius4) */
#themeNameBox.theme15 .btn-contactme {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 180px !important;
  min-height: 45px !important;
  padding: 0 24px;
  border: 0.5px solid var(--t15-brown) !important;
  border-radius: 4px !important;
  background: var(--t15-brown) !important;
  color: #ffffff !important;
  font-family: "Noto Serif KR", "JejuMyeongjo", serif;
  font-size: 15px;
  font-weight: 700;
  letter-spacing: -0.5px;
  line-height: 1;
  text-decoration: none;
}
#themeNameBox.theme15 .btn-contactme span {
  color: #ffffff !important;
  font-family: "Noto Serif KR", "JejuMyeongjo", serif;
  font-size: 15px;
  font-weight: 700;
}
#themeNameBox.theme15 .btn-contactme .call-icon {
  display: none;
}
/* 연락하기 버튼 영역: 이름과 50px / 다음 섹션과 100px (Figma) */
#themeNameBox.theme15 .preview-invitation-link {
  margin: 23px 0 0;
  text-align: center;
  position: relative;
}
/* 연락하기 버튼 뒤 한지 물결 배경(theme15_invite_bg_vector.svg, 360x92) — 전체폭 밴드.
 * 섹션 래퍼(invi-wrap)의 overflow:hidden 이 카드 좌우 끝에서 잘라주므로 넉넉히 빼서 풀블리드. */
#themeNameBox.theme15 .preview-invitation-link::before {
  content: "";
  position: absolute;
  z-index: 0;
  /* 버튼을 밴드 위쪽에 정렬: 밴드 상단 = 버튼 상단 (Figma: 버튼 아래로 물결이 퍼지는 구조) */
  top: 0;
  left: -60px;
  right: -60px;
  height: 92px;
  background: url("/assets/tool/img/invitation/theme_2026/theme15_invite_bg_vector.svg") repeat-x center / auto 100%;
  pointer-events: none;
}
/* 버튼은 배경 위로 */
#themeNameBox.theme15 .preview-invitation-link .btn-contactme {
  position: relative;
  z-index: 1;
}

/* ============================================================
 * 2-3. 캘린더 (con_date 275:1396 + con_calender 275:1289)
 * ============================================================ */
#themeNameBox.theme15 .calendar-subtitle {
  display: none;
}
/* 날짜 제목 2줄: 모두 브라운 18px 600 */
/* 예식일시 h2 만 19px — h2 가 .font-tit 라서 공통 타이틀 규칙(.preview-title .font-tit,
 * 특이도 1-3-0, 20px)이 이기므로 .font-tit 셀렉터를 병기해 뒤 선언 우선으로 적용.
 * 캘린더 스코프 한정이라 다른 섹션 타이틀 20px 에는 영향 없음 */
#themeNameBox.theme15 .preview-calendar-title h2,
#themeNameBox.theme15 .preview-calendar-title h2.font-tit {
  display: flex;
  flex-direction: column;
  gap: 0;
  font-size: 19px;
}
#themeNameBox.theme15 .preview-calendar-title .cal-date,
#themeNameBox.theme15 .preview-calendar-title .cal-daytime {
  display: block;
  color: var(--t15-brown);
  font-size: 18px;
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: -0.5px;
}
/* 캘린더: 평면 배치(박스 없음) + "월" 라벨 숨김 */
#themeNameBox.theme15 .calendar-box {
  margin: 20px auto 0;
  padding: 8px 0 0;
  border: 0;
  border-radius: 0;
  background: transparent;
}
#themeNameBox.theme15 .calendar-month {
  display: none;
}
#themeNameBox.theme15 .calendar-table {
  width: 100%;
  border-collapse: collapse;
  table-layout: fixed;
}
#themeNameBox.theme15 .calendar-table th,
#themeNameBox.theme15 .calendar-table td {
  height: 40px;
  font-family: "Noto Serif KR", "JejuMyeongjo", serif;
  font-weight: 600;
  line-height: 40px;
  letter-spacing: -1px;
  text-align: center;
}
/* 요일 헤더: 기본 #111 / 일·토 #BF4340, 구분선 제거 */
#themeNameBox.theme15 .calendar-table th {
  font-size: 14px;
  color: #111111;
  border-bottom: 0;
}
#themeNameBox.theme15 .calendar-table th.sun,
#themeNameBox.theme15 .calendar-table th.sat {
  color: #bf4340;
}
/* 날짜: 당월 #4D4C4C / 일·토 #BF4340 / 타월 #B3B3B3 */
#themeNameBox.theme15 .calendar-table td {
  font-size: 12px;
  color: #4d4c4c;
}
#themeNameBox.theme15 .calendar-table td.sun,
#themeNameBox.theme15 .calendar-table td.sat {
  color: #bf4340;
}
#themeNameBox.theme15 .calendar-table td.other-month {
  color: #b3b3b3;
}
/* 예식일: 브라운 원 + 흰 글자 */
#themeNameBox.theme15 .wedding-day-circle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 26px;
  height: 26px;
  border-radius: 50%;
  background: var(--t15-brown);
  color: #ffffff;
  font-size: 12px;
  font-weight: 600;
}
/* D-day 카운트다운: 4박스 그리드 (테마14 기법) */
#themeNameBox.theme15 .countdown-box {
  position: relative;
  display: grid;
  grid-template-columns: repeat(4, 0.2fr);
  justify-content: center;
  gap: 8px;
  margin: 20px 0 0;
}
#themeNameBox.theme15 .countdown-item {
  padding: 10px 4px 12px;
  border: 1px solid #d9d9d9; /* 카운트다운 박스 보더: 옅은 회색 */
  border-radius: 4px;
  background: transparent;
  text-align: center;
}
#themeNameBox.theme15 .countdown-label,
#themeNameBox.theme15 .countdown-value,
#themeNameBox.theme15 .countdown-message {
  font-family: "Noto Serif KR", "JejuMyeongjo", serif;
}
#themeNameBox.theme15 .countdown-label {
  display: block;
  color: #b3b3b3;
  font-size: 10px;
  letter-spacing: 1px;
  line-height: 1;
}
#themeNameBox.theme15 .countdown-value {
  display: block;
  margin-top: 7px;
  color: #4d4c4c;
  font-size: 20px;
  line-height: 1;
}
#themeNameBox.theme15 .countdown-message {
  position: relative;
  margin: 40px 0 0;
  color: var(--t15-brown);
  font-size: 14px;
  font-weight: 600;
  line-height: 1.6;
  letter-spacing: -0.5px;
  text-align: center;
}
#themeNameBox.theme15 .countdown-message .countdown-heart,
#themeNameBox.theme15 .countdown-message .countdown-dday {
  color: var(--t15-brown);
  font-weight: 600;
}

/* ============================================================
 * 2-4. RSVP (con_rsvp 275:1162) - 타우프 솔리드 배경 + 흰 텍스트
 * ============================================================ */
#themeNameBox.theme15 .preview-attend-wrap {
  position: relative;
  overflow: hidden;
  background-color: var(--t15-taupe) !important;
  background-image: none;
  padding: 65px 32px; /* 섹션 높이 +30px (기존 50px에서 위아래 15px씩) */
  min-height: 0;
}
/* 하단 울타리 장식 벡터 (기준 rsvp-bg-vector.svg, 1134x133 #A99F8C).
 * 기준은 폭 315%로 넓게 깔아 중앙부만 보이게 한다(overflow:hidden). */
#themeNameBox.theme15 .preview-attend-wrap::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: 0px; /* 울타리를 아래로 내림(섹션 overflow:hidden 이 하단을 잘라줌) */
  transform: translateX(-50%);
  width: 315%;
  aspect-ratio: 1134 / 133;
  background: url("/assets/tool/img/invitation/theme_2026/theme15_rsvp_bg.svg") center bottom / contain no-repeat;
  pointer-events: none;
  z-index: 0;
}
#themeNameBox.theme15 .preview-attend-title,
#themeNameBox.theme15 .preview-attend-wrap .preview-inner-wrap,
#themeNameBox.theme15 .preview-attend-link {
  position: relative;
  z-index: 1;
}
/* RSVP 타이틀: 장식 구분선 없음, kicker(위) → body(아래) */
#themeNameBox.theme15 .preview-attend-title {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0;
  margin: 0 0 30px;
  padding-bottom: 0 !important;
  text-align: center;
}
#themeNameBox.theme15 .preview-attend-title::before {
  content: none;
}
/* "참석 의사 전달" kicker: 흰색 14px 500 */
#themeNameBox.theme15 .preview-attend-title .attend-kicker,
#themeNameBox.theme15 .preview-attend-title .bg-gray {
  order: -1;
  display: block;
  margin: 0 0 20px !important;
  min-width: 0;
  min-height: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent !important;
  color: #ffffff !important;
  font-family: "Noto Serif KR", "JejuMyeongjo", serif;
  font-size: 14px;
  font-weight: 500;
  letter-spacing: -0.5px;
}
/* 안내 문구 3줄: 흰색 15px 600 */
#themeNameBox.theme15 .preview-attend-title .attend-body,
#themeNameBox.theme15 .preview-attend-title h2 {
  display: flex;
  flex-direction: column;
  gap: 2px;
  color: #ffffff !important;
  font-family: "Noto Serif KR", "JejuMyeongjo", serif;
  font-size: 15px;
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: -0.5px;
}
#themeNameBox.theme15 .preview-attend-title .attend-body span {
  color: #ffffff;
}
#themeNameBox.theme15 .preview-attend-link {
  margin-top: 0;
  text-align: center;
}
/* 전달하기 버튼: 흰 배경 + 타우프 텍스트 (Figma 275:1287, 180x45 radius4) */
#themeNameBox.theme15 .preview-attend-wrap .btn-attend {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  width: 180px;
  height: 45px;
  padding: 9px 0;
  border: 0 !important;
  border-radius: 4px !important;
  background: #ffffff !important;
  color: var(--t15-taupe) !important;
  font-family: "Noto Serif KR", "JejuMyeongjo", serif;
  font-size: 14px;
  font-weight: 700;
  letter-spacing: -0.5px;
  white-space: nowrap;
  text-decoration: none;
}
#themeNameBox.theme15 .preview-attend-wrap .btn-attend > span:not(.check-icon) {
  color: var(--t15-taupe);
  font-family: "Noto Serif KR", "JejuMyeongjo", serif;
  font-size: 14px;
  font-weight: 700;
}
#themeNameBox.theme15 .preview-attend-wrap .btn-attend .check-icon {
  display: none;
}

/* ============================================================
 * 2-5. 갤러리 (con_gallery 275:1136)
 * ============================================================ */
/* 기준(index.html) 갤러리: 타이틀 "사진첩"(20px 700) + 부제 문구(15px 600).
 * 그러나 공유 마크업의 h2 텍스트 자체가 부제 문구("우리의 가장 빛나는 순간들을 담았어요.")이므로,
 * h2 원문을 숨기고 ::before 로 "사진첩" 타이틀을, ::after 로 부제를 주입해 기준과 동일하게 만든다.
 * (이전엔 h2 원문 + ::after 가 같은 문구를 2번 출력하는 버그가 있었음) */
/* h2 는 class="font-tit" 라서 공통 타이틀 규칙(.preview-title .font-tit, 특이도 높음)이
 * font-size:20px 를 다시 살려 큰 폰트로 중복 출력됐음 → .font-tit 포함 + !important 로 확실히 숨김 */
#themeNameBox.theme15 .preview-gallery-title h2,
#themeNameBox.theme15 .preview-gallery-title h2.font-tit,
#themeNameBox.theme15 .preview-gallery-title .font-tit {
  font-size: 0 !important;
  line-height: 0 !important;
}
#themeNameBox.theme15 .preview-gallery-title h2::before {
  content: "사진첩";
  display: block;
  color: var(--t15-brown);
  font-family: "Noto Serif KR", "JejuMyeongjo", serif;
  font-size: 20px;
  font-weight: 700;
  line-height: 1.5;
  letter-spacing: -0.5px;
}
/* h2 아래 부제 문구 (기준 .div59: 15px 600 브라운, 타이틀과 20px 간격) */
#themeNameBox.theme15 .preview-gallery-title h2::after {
  content: "우리의 가장 빛나는 순간들을 담았어요.";
  display: block;
  margin-top: 20px;
  color: var(--t15-brown);
  font-family: "Noto Serif KR", "JejuMyeongjo", serif;
  font-size: 15px;
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: -0.5px;
}
/* 갤러리 사진 좌우 여백: 테마14와 동일하게 5px (섹션 공통 32px 오버라이드, 상단 100px 유지) */
#themeNameBox.theme15 .preview-gallery-wrap {
  padding-left: 5px;
  padding-right: 5px;
}
#themeNameBox.theme15 .preview-gallery-img {
  margin-top: 24px;
}
#themeNameBox.theme15 .preview-gallery-ul {
  gap: 10px;
}
#themeNameBox.theme15 .preview-gallery-li,
#themeNameBox.theme15 .preview-gallery-item {
  border-radius: 4px;
  overflow: hidden;
}

/* ============================================================
 * 2-6. 오시는 길 (con_location 275:709)
 * ============================================================ */
#themeNameBox.theme15 .preview-weddinginfo-title h2 {
  font-size: 20px;
}
#themeNameBox.theme15 .weddinginfo-content {
  margin-top: 10px;
  color: var(--t15-brown);
  font-family: "Eulyoo1945", "JejuMyeongjo", serif;
}
/* 주소 블록: 박스 없이 평문 중앙 */
#themeNameBox.theme15 .weddinginfo-top {
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  gap: 15px !important;
  padding: 0 !important;
  margin: 0;
  width: 100%;
  border: 0 !important;
  border-radius: 0 !important;
  background: transparent !important;
  text-align: center;
}
#themeNameBox.theme15 .weddinginfo-icon-box {
  display: block !important;
  gap: 0 !important;
  padding: 0;
  margin: 0;
  width: 100%;
  text-align: center;
}
#themeNameBox.theme15 .wedding-hallbox {
  padding: 0 !important;
  margin: 0;
  width: 100%;
  text-align: center;
}
#themeNameBox.theme15 .weddinginfo-namebox {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 5px;
  width: 100%;
}
#themeNameBox.theme15 .weddinginfo-icon {
  display: none;
}
/* 예식장명 20px 700 / 주소 15px 600 / 전화 16px 600 - 모두 브라운 */
/* 기준 .title-address-wrap = Eulyoo1945(600). 예식장명/주소/전화 블록은 Eulyoo 서체 사용.
 * (섹션 타이틀 "오시는 길" h2 는 Noto Serif KR 유지) */
#themeNameBox.theme15 .weddinginfo-namebox .weddding-hall-name {
  position: static;
  top: auto;
  left: auto;
  margin: 0;
  width: 100%;
  color: var(--t15-brown) !important;
  font-family: "Eulyoo1945", "JejuMyeongjo", serif;
  font-size: 20px;
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: -0.5px;
  word-break: keep-all;
  overflow-wrap: break-word;
  text-align: center;
}
#themeNameBox.theme15 .weddinginfo-namebox .weddding-hall {
  margin: 0;
  width: 100%;
  color: var(--t15-brown) !important;
  font-family: "Eulyoo1945", "JejuMyeongjo", serif;
  font-size: 15px;
  font-weight: 600;
  line-height: 1.5;
  text-align: center;
}
#themeNameBox.theme15 .weddinginfo-tellbox {
  margin: 0;
  width: 100%;
  display: flex;
  justify-content: center;
}
#themeNameBox.theme15 .weddinginfo-tellbox .weddding-tell {
  margin: 0;
  width: 100%;
  color: var(--t15-brown) !important;
  font-family: "Eulyoo1945", "JejuMyeongjo", serif;
  font-size: 16px;
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: 0.5px;
  text-align: center;
}
/* 내비 버튼(카카오내비/네이버지도/티맵): 흰 배경 + 브라운 보더 + 어두운 라벨.
 * 브랜드 아이콘(::before)은 베이스 그대로 유지. */
#themeNameBox.theme15 .weddinginfo-navi {
  display: flex !important;
  gap: 8px;
  justify-content: center;
  padding: 0 !important;
  margin: 20px -22px 0;
  width: calc(100% + 44px);
}
#themeNameBox.theme15 .weddinginfo-navi button {
  flex: 1;
  height: 40px;
  min-height: 40px;
  max-width: 120px;
  padding: 0 8px;
  border: 0.5px solid var(--t15-brown);
  border-radius: 4px;
  background: #ffffff;
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  gap: 3px;
  cursor: pointer;
}
#themeNameBox.theme15 .weddinginfo-navi button::before {
  width: 18px !important;
  height: 18px !important;
  flex-shrink: 0;
}
#themeNameBox.theme15 .weddinginfo-navi button span {
  display: inline-block;
  color: #111111;
  font-family: "Noto Serif KR", "JejuMyeongjo", serif;
  font-size: 12px;
  font-weight: 600;
  white-space: nowrap;
}
/* "네이버내비" → "네이버지도" (Figma) */
#themeNameBox.theme15 .weddinginfo-navi button.navernavi span {
  font-size: 0 !important;
  line-height: 0;
}
#themeNameBox.theme15 .weddinginfo-navi button.navernavi span::after {
  content: "네이버지도";
  font-size: 12px;
  font-weight: 600;
  line-height: 1.2;
  color: #111111;
  white-space: nowrap;
}
/* 지도/약도+교통안내: 좌우 여백 없이 풀폭.
 * inner-wrap 좌우 패딩을 0으로 통일한 뒤 인셋은 섹션 32px 뿐이므로 -32px 로 상쇄.
 * (기존 -52px 는 inner 20px 시절 값이라 카드 밖으로 20px씩 튀어나갔음) */
#themeNameBox.theme15 .weddinghall-map-wrap {
  margin-top: 20px;
  margin-left: -32px;
  margin-right: -32px;
  width: calc(100% + 64px);
}
#themeNameBox.theme15 .map-wrap,
#themeNameBox.theme15 .preview-map-img,
#themeNameBox.theme15 .preview-map-img .cropper-preview {
  width: 100% !important;
  max-width: 100%;
  border-radius: 0;
  border: 0;
  margin: 0;
  overflow: hidden;
}
#themeNameBox.theme15 .map-wrap .map,
#themeNameBox.theme15 #kakao_map {
  width: 100% !important;
  min-height: 200px;
}
#themeNameBox.theme15 .preview-map-img .cropper-preview img {
  width: 100%;
  height: auto;
  max-width: 100%;
  max-height: none;
  object-fit: cover;
  display: block;
}
/* 교통 안내: 행 디자인 (하단 브라운 헤어라인) */
#themeNameBox.theme15 .way-guide-box {
  margin-top: 30px;
  padding: 0;
  background: transparent;
}
#themeNameBox.theme15 .way-guide {
  position: relative;
  padding: 20px 30px;
  border-top: 0;
  border-bottom: 0;
  gap: 0;
}
#themeNameBox.theme15 .way-guide::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 1px;
  background: var(--t15-brown);
  transform: scaleY(0.5);
  transform-origin: bottom;
  pointer-events: none;
}
#themeNameBox.theme15 .way-guide .way-title {
  display: flex;
  align-items: center;
  gap: 5px;
  margin-bottom: 9px;
}
#themeNameBox.theme15 .way-guide .way-title p {
  margin: 0;
  color: #111111 !important;
  font-family: "Noto Serif KR", "JejuMyeongjo", serif;
  font-size: 18px !important;
  font-weight: 600;
}
#themeNameBox.theme15 .way-guide .way-content p {
  margin: 0;
  color: #111111 !important;
  font-family: "Noto Serif KR", "JejuMyeongjo", serif;
  font-size: 12px !important;
  font-weight: 600;
  line-height: 18px;
  white-space: pre-line;
}
/* "기타 안내" → "안내 사항" (Figma) */
#themeNameBox.theme15 .way-guide.etc .way-title p:last-child {
  font-size: 0 !important;
  line-height: 0;
}
#themeNameBox.theme15 .way-guide.etc .way-title p:last-child::before {
  content: "안내 사항";
  font-size: 18px;
  font-weight: 600;
  line-height: 1.3;
  color: #111111;
}
/* 교통수단 아이콘: 기존 svg 를 mask 로 브라운 틴트 */
#themeNameBox.theme15 .way-guide .way-title .weddinginfo-icon {
  display: inline-block !important;
  width: 23px;
  height: 23px;
  margin: 0;
  padding: 0;
  background-color: var(--t15-brown);
  background-image: none;
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
  -webkit-mask-position: center;
          mask-position: center;
  -webkit-mask-size: contain;
          mask-size: contain;
  flex-shrink: 0;
}
#themeNameBox.theme15 .way-guide.subway .way-title .weddinginfo-icon {
  -webkit-mask-image: url("/assets/tool/img/invitation/theme_2026/subway_12_icon.svg");
          mask-image: url("/assets/tool/img/invitation/theme_2026/subway_12_icon.svg");
}
#themeNameBox.theme15 .way-guide.bus .way-title .weddinginfo-icon {
  -webkit-mask-image: url("/assets/tool/img/invitation/theme_2026/bus_12_icon.svg");
          mask-image: url("/assets/tool/img/invitation/theme_2026/bus_12_icon.svg");
}
#themeNameBox.theme15 .way-guide.etc .way-title .weddinginfo-icon {
  -webkit-mask-image: url("/assets/tool/img/invitation/theme_2026/info_12_icon.svg");
          mask-image: url("/assets/tool/img/invitation/theme_2026/info_12_icon.svg");
}

/* ============================================================
 * 2-7. 마음 전하실 곳 (con_account 275:626)
 * ============================================================ */
#themeNameBox.theme15 .preview-bank-wrap {
  padding-left: 0;
  padding-right: 0;
}
#themeNameBox.theme15 .preview-bank-title {
  padding-left: 32px;
  padding-right: 32px;
}
#themeNameBox.theme15 .preview-bank-title h2 {
  font-size: 20px;
}
/* 안내 문구 (15px 600 브라운) */
#themeNameBox.theme15 .preview-bank-title h2::after {
  content: "신랑\00026신부에게 축복의 의미로\A축의금을 전달해보세요.";
  white-space: pre-line;
  display: block;
  margin-top: 10px;
  color: var(--t15-brown);
  font-family: "Noto Serif KR", "JejuMyeongjo", serif;
  font-size: 15px;
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: -0.5px;
}
/* 계좌 영역: 박스 제거 풀폭, 좌우 30px */
#themeNameBox.theme15 .preview-bank-wrap .accordion-box {
  margin: 24px 30px 0;
  border: 0;
  background: transparent;
}
#themeNameBox.theme15 .preview-bank-wrap .accordion-inner {
  overflow: visible;
  margin-bottom: 8px;
  border: 0;
  border-radius: 0;
  background: transparent;
}
/* 신랑측/신부측 토글: 풀폭 45px 솔리드 브라운 + 흰 16px 600 */
#themeNameBox.theme15 .preview-bank-wrap .accordion-box .btn-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  max-width: none;
  height: 45px;
  min-height: 45px;
  margin: 0 auto;
  padding: 0;
  background: var(--t15-brown) !important;
  border: 0;
  border-radius: 4px;
  color: #ffffff !important;
  font-family: "Noto Serif KR", "JejuMyeongjo", serif;
  font-size: 16px;
  font-weight: 600;
  text-align: center;
  text-decoration: none;
}
#themeNameBox.theme15 .preview-bank-wrap .accordion-box .btn-toggle::after {
  content: none;
}
/* 계좌 행: 투명 + 하단 0.5px 브라운 헤어라인 */
#themeNameBox.theme15 .preview-bank-wrap .accordion-box .bank {
  margin-bottom: 0;
  padding: 20px 0;
  background: transparent;
  border: 0;
  border-bottom: 0.5px solid var(--t15-brown);
  border-radius: 0;
}
#themeNameBox.theme15 .preview-bank-wrap .bank-info,
#themeNameBox.theme15 .preview-bank-wrap .bank-btn-box {
  padding: 0;
}
#themeNameBox.theme15 .preview-bank-wrap .bank-info p {
  margin: 0;
  line-height: 1.6;
}
#themeNameBox.theme15 .preview-bank-wrap .bank-info p:first-child {
  display: flex;
  align-items: center;
  gap: 5px;
}
#themeNameBox.theme15 .preview-bank-wrap .bank-info .name {
  color: var(--t15-brown) !important;
  font-family: "Noto Serif KR", "JejuMyeongjo", serif;
  font-size: 14px;
  font-weight: 600;
}
#themeNameBox.theme15 .preview-bank-wrap .bank-info .name::before {
  font-weight: 400;
  font-size: 12px;
  margin-right: 5px;
}
/* 이름 앞 관계 표기 (00=본인/01=부/02=모) */
#themeNameBox.theme15 .bank_groom00 .bank-info .name::before { content: "신랑"; }
#themeNameBox.theme15 .bank_bride00 .bank-info .name::before { content: "신부"; }
#themeNameBox.theme15 .bank_groom01 .bank-info .name::before,
#themeNameBox.theme15 .bank_bride01 .bank-info .name::before { content: "부"; }
#themeNameBox.theme15 .bank_groom02 .bank-info .name::before,
#themeNameBox.theme15 .bank_bride02 .bank-info .name::before { content: "모"; }
#themeNameBox.theme15 .preview-bank-wrap .bank-info .bank_type,
#themeNameBox.theme15 .preview-bank-wrap .bank-info .bank_no {
  color: var(--t15-brown) !important;
  font-family: "Noto Serif KR", "JejuMyeongjo", serif;
  font-size: 14px;
  font-weight: 600;
}
/* 버튼 행: 가로 한 줄 */
#themeNameBox.theme15 .preview-bank-wrap .bank-btn-box {
  display: flex;
  flex-wrap: nowrap;
  gap: 5px;
  margin-top: 15px;
}
/* 계좌복사: 흰 배경 + 0.5px 브라운 보더 + 브라운 12px 600 (카카오페이는 브랜드 컬러 유지) */
#themeNameBox.theme15 .preview-bank-wrap .copy-bank {
  flex: 1;
  width: auto;
  height: 40px;
  min-height: 40px;
  padding: 0 10px;
  background: #ffffff !important;
  border: 0.5px solid var(--t15-brown) !important;
  border-radius: 5px !important;
  color: var(--t15-brown) !important;
  font-family: "Noto Serif KR", "JejuMyeongjo", serif;
  font-size: 12px;
  font-weight: 600;
  text-align: center;
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  white-space: nowrap;
}
#themeNameBox.theme15 .preview-bank-wrap .kakaopay {
  flex: 1;
  width: auto;
  height: 40px;
  min-height: 40px;
  padding: 0 10px;
  border-radius: 5px !important;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  white-space: nowrap;
}
#themeNameBox.theme15 .preview-bank-wrap .kakaopay span {
  white-space: nowrap;
}
/* 계좌복사 아이콘: svg mask 로 브라운 틴트 */
#themeNameBox.theme15 .preview-bank-wrap .copy-bank::before {
  content: "";
  display: inline-block;
  width: 23px;
  height: 23px;
  margin-right: 2px;
  flex-shrink: 0;
  background-image: none;
  background-color: var(--t15-brown);
  -webkit-mask: url("/assets/tool/img/theme_new/theme_icon_copy.svg") center / 23px no-repeat;
          mask: url("/assets/tool/img/theme_new/theme_icon_copy.svg") center / 23px no-repeat;
}

/* ============================================================
 * 2-8. 방명록 (guestbook 275:515~) - 타우프 배경 + 하단 소나무 실루엣
 * ============================================================ */
/* 방명록 미사용 시 하단 고정 여백. 하객뷰=미렌더(:not(:has)), 편집기=display:none(:has([style*=none])).
 * 방명록 사용 시엔 방명록 섹션(하단 소나무 벡터 포함)이 바닥 여백을 담당하므로 추가 안 함 */
#themeNameBox.theme15 .preview-etc-wrap:not(:has(.preview-guestbook-wrap)),
#themeNameBox.theme15 .preview-etc-wrap:has(.preview-guestbook-wrap[style*="display: none"]),
#themeNameBox.theme15 .preview-etc-wrap:has(.preview-guestbook-wrap[style*="display:none"]) {
  padding-bottom: 100px;
}

#themeNameBox.theme15 .preview-guestbook-wrap {
  position: relative;
  overflow: hidden;
  padding: 20px 32px 260px;
  background-color: var(--t15-taupe) !important;
  background-image: none;
  /* 타우프 시작 전 크림 배경 100px 이어가기.
   * 앞 섹션(마음전하기)의 padding-bottom 이 아니라 방명록 자신의 border 로 처리
   * → 마음전하기 섹션을 '사용안함'으로 숨겨도 이 여백은 항상 유지됨 */
  border-top: 100px solid var(--t15-bg);
}
/* base 아치형 inner-wrap 제거 */
#themeNameBox.theme15 .preview-guestbook-wrap .preview-inner-wrap {
  position: relative;
  z-index: 1;
  padding: 0;
  border: 0;
  border-radius: 0;
  background-color: transparent;
}
/* 하단 소나무/식물 장식 벡터 (기준 guestbook-bg-vector.svg, 398x177).
 * 기준은 하단 좌측에 약간 넘치게 배치(left -31px/360, width 397/360). */
#themeNameBox.theme15 .preview-guestbook-wrap::after {
  content: "";
  position: absolute;
  left: -9%;
  bottom: 0px;
  width: 110%;
  aspect-ratio: 398 / 177;
  background: url("/assets/tool/img/invitation/theme_2026/theme15_guestbook_bg.svg") center bottom / contain no-repeat;
  pointer-events: none;
  z-index: 0;
}
/* 타이틀: 흰색. 구분선은 타우프 배경 위이므로 크림(흰 라인) 리본(invitation-vector-011) 사용
 * (기준 index.html 방명록 .con-/.con-2 는 리본 divider 를 가진다) */
#themeNameBox.theme15 .preview-guestbook-title {
  margin: 0 0 15px;
  padding-bottom: 0 !important;
  text-align: center;
}
#themeNameBox.theme15 .preview-guestbook-title::before {
  background-image: url("/assets/tool/img/invitation/theme_2026/theme15_title_ribbon_cream.svg");
}
#themeNameBox.theme15 .preview-guestbook-title h2,
#themeNameBox.theme15 .preview-guestbook-title .font-tit {
  color: #ffffff;
  font-size: 20px;
}
/* 안내/무데이터 문구 */
#themeNameBox.theme15 .preview-guestbook-wrap .guestbook-subtitle {
  text-align: center;
  margin: 15px 0 0;
  color: #ffffff;
  font-family: "Noto Serif KR", "JejuMyeongjo", serif;
  font-size: 15px;
  font-weight: 600;
  line-height: 1.5;
}
#themeNameBox.theme15 .guestbook-no-data {
  padding: 42px 18px;
  border: 0;
  border-radius: 0;
  background: transparent;
  text-align: center;
  color: #ffffff;
  font-family: "Noto Serif KR", "JejuMyeongjo", serif;
}
/* 방명록 작성하기 버튼(현재 뷰에선 비활성) - 표시 대비 팔레트만 지정 */
#themeNameBox.theme15 .book_btn_top {
  margin: 20px 0 30px;
  text-align: center;
}
#themeNameBox.theme15 .preview-guestbook-wrap .book_btn_top a,
#themeNameBox.theme15 .book_btn2 a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 180px;
  min-height: 45px !important;
  padding: 0 24px;
  border: 0.5px solid #ffffff !important;
  border-radius: 4px !important;
  background: #ffffff !important;
  color: var(--t15-taupe) !important;
  font-family: "Noto Serif KR", "JejuMyeongjo", serif;
  font-size: 15px;
  font-weight: 700;
  text-decoration: none;
}
/* 방명록 항목: 평면 + 하단 크림 헤어라인 */
#themeNameBox.theme15 .guestbook-list {
  margin-bottom: 0;
  padding: 0;
}
#themeNameBox.theme15 .guestbook-list-txt {
  display: flex;
  flex-direction: column;
  margin-left: -32px;
  margin-right: -32px;
  padding: 30px 20px;
  border: 0;
  border-bottom: 0.5px solid var(--t15-cream-text);
  border-radius: 0;
  background: transparent;
}
/* 수정/삭제 아이콘 (우상단) */
#themeNameBox.theme15 .guest-btn-box {
  order: -2;
  display: flex;
  justify-content: flex-end;
  align-items: center;
  gap: 6px;
  margin-bottom: 10px;
}
#themeNameBox.theme15 .guest-btn-box .btn,
#themeNameBox.theme15 .guest-btn-box .btn-edit,
#themeNameBox.theme15 .guest-btn-box .btn-delete {
  width: 25px;
  height: 24px;
  min-width: 0;
  min-height: 0;
  padding: 0;
  background-color: transparent;
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
  border: 0;
  border-radius: 0;
  font-size: 0;
  line-height: 0;
  color: transparent;
  cursor: pointer;
}
#themeNameBox.theme15 .guest-btn-box .btn-edit {
  background-image: url("/assets/tool/img/invitation/theme_2026/theme12_btn_edit.svg");
}
#themeNameBox.theme15 .guest-btn-box .btn-delete {
  background-image: url("/assets/tool/img/invitation/theme_2026/theme12_btn_delete.svg");
}
/* 이름(크림 16px) + 날짜(크림 14px) 한 줄 */
#themeNameBox.theme15 .guest-name-date {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 8px;
  order: -1;
  margin: 0 0 10px;
}
#themeNameBox.theme15 .guest-name-date p {
  margin: 0;
}
#themeNameBox.theme15 .guest-name-date .name {
  color: var(--t15-cream-text) !important;
  font-family: "Noto Serif KR", "JejuMyeongjo", serif;
  font-size: 16px;
  font-weight: 500;
}
#themeNameBox.theme15 .guest-name-date .date {
  color: var(--t15-cream-text) !important;
  font-family: "Noto Serif KR", "JejuMyeongjo", serif;
  font-size: 14px;
  font-weight: 400;
}
/* 본문 (어두운 잉크 16px / lh 24px) */
#themeNameBox.theme15 .guest-contents .content {
  margin: 0;
  color: #111111 !important;
  font-family: "Noto Serif KR", "JejuMyeongjo", serif;
  font-size: 16px;
  font-weight: 400;
  line-height: 24px;
}

/* ============================================================
 * 0.5px 보더 → 물리 헤어라인 (테마14와 동일 기법)
 *  - 4면 보더 박스: 200% 가상요소 + scale(0.5)
 *  - 하단 보더 행: 1px 가상요소 + scaleY(0.5)
 * ============================================================ */
/* A. 4면 보더 박스 */
#themeNameBox.theme15 .btn-contactme,
#themeNameBox.theme15 .weddinginfo-navi button,
#themeNameBox.theme15 .preview-bank-wrap .copy-bank,
#themeNameBox.theme15 .preview-guestbook-wrap .book_btn_top a,
#themeNameBox.theme15 .book_btn2 a,
body:has(#themeNameBox.theme15) #attendModalContent .btn-group-toggle > label.btn,
body:has(#themeNameBox.theme15) #attendModalContent .input-group-append .btn,
body:has(#themeNameBox.theme15) #attendModalContent .btn-add-companion {
  position: relative;
  border: 0 !important;
}
#themeNameBox.theme15 .btn-contactme::after,
#themeNameBox.theme15 .weddinginfo-navi button::after,
#themeNameBox.theme15 .preview-bank-wrap .copy-bank::after,
#themeNameBox.theme15 .preview-guestbook-wrap .book_btn_top a::after,
#themeNameBox.theme15 .book_btn2 a::after,
body:has(#themeNameBox.theme15) #attendModalContent .btn-group-toggle > label.btn::after,
body:has(#themeNameBox.theme15) #attendModalContent .input-group-append .btn::after,
body:has(#themeNameBox.theme15) #attendModalContent .btn-add-companion::after {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 200%;
  height: 200%;
  box-sizing: border-box;
  border: 1px solid var(--t15-brown, #92623c);
  border-radius: 8px;
  transform: scale(0.5);
  transform-origin: 0 0;
  pointer-events: none;
}
/* 연락하기 버튼: 솔리드 브라운 채움이므로 보더 색도 브라운 유지(위 기본값) */
/* 계좌복사: 시각 radius 5 */
#themeNameBox.theme15 .preview-bank-wrap .copy-bank::after {
  border-radius: 10px;
}
/* 방명록 작성 버튼: 흰 보더 */
#themeNameBox.theme15 .preview-guestbook-wrap .book_btn_top a::after,
#themeNameBox.theme15 .book_btn2 a::after {
  border-color: #ffffff;
}
/* 모달 토글/동행 버튼: 보더색 rgba(17,17,17,.5) */
body:has(#themeNameBox.theme15) #attendModalContent .btn-group-toggle > label.btn::after,
body:has(#themeNameBox.theme15) #attendModalContent .input-group-append .btn::after,
body:has(#themeNameBox.theme15) #attendModalContent .btn-add-companion::after {
  border-color: rgba(17, 17, 17, 0.5);
}
body:has(#themeNameBox.theme15) #attendModalContent .form-group:nth-of-type(1) .btn-group-toggle > label.btn.active::after {
  border-color: var(--t15-point-deep, #8c6238);
}
body:has(#themeNameBox.theme15) #attendModalContent .form-group:nth-of-type(2) .btn-group-toggle > label.btn.active::after {
  border-color: var(--t15-brown, #92623c);
}
/* 신부측/참석불가(각 행 두 번째 버튼) active 보더는 #5E3616 */
body:has(#themeNameBox.theme15) #attendModalContent .form-group:nth-of-type(1) .btn-group-toggle > label.btn:last-child.active::after,
body:has(#themeNameBox.theme15) #attendModalContent .form-group:nth-of-type(2) .btn-group-toggle > label.btn:last-child.active::after {
  border-color: #5e3616;
}
/* B. 하단 보더 행 */
#themeNameBox.theme15 .preview-bank-wrap .accordion-box .bank,
#themeNameBox.theme15 .guestbook-list-txt,
body:has(#themeNameBox.theme15) #contactModalContent .contactItem,
body:has(#themeNameBox.theme15) #contactModalContent .contactItem:last-child {
  position: relative;
  border-bottom: 0;
}
#themeNameBox.theme15 .preview-bank-wrap .accordion-box .bank::after,
#themeNameBox.theme15 .guestbook-list-txt::after,
body:has(#themeNameBox.theme15) #contactModalContent .contactItem::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 1px;
  background: var(--t15-brown, #92623c);
  transform: scaleY(0.5);
  transform-origin: bottom;
  pointer-events: none;
}
/* 방명록 행: 크림 헤어라인 */
#themeNameBox.theme15 .guestbook-list-txt::after {
  background: var(--t15-cream-text, #f4e7dc);
}
/* 연락하기 모달 행: rgba(17,17,17,.3) */
body:has(#themeNameBox.theme15) #contactModalContent .contactItem::after {
  background: rgba(17, 17, 17, 0.3);
}

/* ============================================================
 * 모달 공통 (테마15) - JS가 body 로 appendTo → body:has() 스코프
 * ============================================================ */
body:has(#themeNameBox.theme15) #contactModalContent .modal-dialog,
body:has(#themeNameBox.theme15) #attendModalContent .modal-dialog,
body:has(#themeNameBox.theme15) #guestbookModalContent .modal-dialog,
body:has(#themeNameBox.theme15) #gueseditModalContent .modal-dialog,
body:has(#themeNameBox.theme15) #guestPasswordModal .modal-dialog,
body:has(#themeNameBox.theme15) #guestUpdateModalContent .modal-dialog {
  width: calc(100% - 48px);
  max-width: 340px;
  margin-right: auto;
  margin-left: auto;
}
body:has(#themeNameBox.theme15) #contactModalContent .modal-content,
body:has(#themeNameBox.theme15) #attendModalContent .modal-content,
body:has(#themeNameBox.theme15) #guestbookModalContent .modal-content,
body:has(#themeNameBox.theme15) #gueseditModalContent .modal-content,
body:has(#themeNameBox.theme15) #guestPasswordModal .modal-content,
body:has(#themeNameBox.theme15) #guestUpdateModalContent .modal-content {
  overflow: hidden;
  border: 0 !important;
  border-radius: 4px !important;
  background: #ffffff !important;
  color: #111111 !important;
  box-shadow: 0 14px 34px rgba(0, 0, 0, .14);
}
body:has(#themeNameBox.theme15) #contactModalContent .modal-header,
body:has(#themeNameBox.theme15) #attendModalContent .modal-header,
body:has(#themeNameBox.theme15) #guestbookModalContent .modal-header,
body:has(#themeNameBox.theme15) #gueseditModalContent .modal-header,
body:has(#themeNameBox.theme15) #guestPasswordModal .modal-header,
body:has(#themeNameBox.theme15) #guestUpdateModalContent .modal-header {
  position: relative;
  align-items: center;
  min-height: 46px;
  padding: 16px 44px 12px 20px;
  border-bottom: 1px solid #e8dfd4;
  background: #ffffff;
}
body:has(#themeNameBox.theme15) #contactModalContent .modal-title,
body:has(#themeNameBox.theme15) #attendModalContent .modal-title,
body:has(#themeNameBox.theme15) #guestbookModalContent .modal-title,
body:has(#themeNameBox.theme15) #gueseditModalContent .modal-title,
body:has(#themeNameBox.theme15) #guestPasswordModal .modal-title,
body:has(#themeNameBox.theme15) #guestUpdateModalContent .modal-title {
  width: 100%;
  margin: 0;
  color: #111111 !important;
  font-family: "Noto Serif KR", "JejuMyeongjo", serif;
  font-size: 18px;
  font-weight: 700;
  line-height: 1.2;
  letter-spacing: -0.5px;
  text-align: left;
}
body:has(#themeNameBox.theme15) #contactModalContent .modal-header .close,
body:has(#themeNameBox.theme15) #attendModalContent .modal-header .close,
body:has(#themeNameBox.theme15) #guestbookModalContent .modal-header .close,
body:has(#themeNameBox.theme15) #gueseditModalContent .modal-header .close,
body:has(#themeNameBox.theme15) #guestPasswordModal .modal-header .close,
body:has(#themeNameBox.theme15) #guestUpdateModalContent .modal-header .close {
  position: absolute;
  top: 50%;
  right: 16px;
  margin: 0;
  padding: 0;
  color: #111111;
  font-size: 22px;
  font-weight: 300;
  line-height: 1;
  opacity: 1;
  transform: translateY(-50%);
}
body:has(#themeNameBox.theme15) #contactModalContent .modal-body,
body:has(#themeNameBox.theme15) #attendModalContent .modal-body,
body:has(#themeNameBox.theme15) #guestbookModalContent .modal-body,
body:has(#themeNameBox.theme15) #gueseditModalContent .modal-body,
body:has(#themeNameBox.theme15) #guestPasswordModal .modal-body,
body:has(#themeNameBox.theme15) #guestUpdateModalContent .modal-body {
  padding: 18px 20px 20px;
  color: #111111;
  font-family: "Noto Serif KR", "JejuMyeongjo", serif;
}
body:has(#themeNameBox.theme15) #guestPasswordModal .modal-body input.form-control,
body:has(#themeNameBox.theme15) #guestbookModalContent .modal-body input.form-control {
  min-height: 45px;
  padding: 10px;
  border: 0.5px solid var(--t15-brown, #92623c);
  border-radius: 4px;
  background: #ffffff;
  color: #111111;
  font-family: "Pretendard", "Noto Sans KR", sans-serif;
  font-size: 12px;
}
body:has(#themeNameBox.theme15) .modal-body .btn-dark,
body:has(#themeNameBox.theme15) .modal-body .btn.btn-primary {
  border: 0 !important;
  border-radius: 4px !important;
  background: var(--t15-brown, #92623c) !important;
  color: #ffffff !important;
  font-family: "Noto Serif KR", "JejuMyeongjo", serif;
  font-weight: 600;
  box-shadow: none !important;
}

/* ---- 모달 1. 연락하기 (#contactModalContent) ---- */
body:has(#themeNameBox.theme15) #contactModalContent .modal-header {
  padding: 16px 44px 12px;
  justify-content: center;
  border-bottom: 0;
}
body:has(#themeNameBox.theme15) #contactModalContent .modal-title {
  text-align: center;
  font-size: 18px;
  font-weight: 700;
}
body:has(#themeNameBox.theme15) #contactModalContent .modal-body {
  padding: 0 0 40px !important;
}
body:has(#themeNameBox.theme15) #contactModalContent .contactItem {
  display: grid;
  grid-template-columns: 60px minmax(0, 1fr) auto;
  justify-content: stretch;
  align-items: center;
  column-gap: 20px;
  width: 100%;
  margin: 0;
  padding: 10px 25px 10px 30px;
  box-sizing: border-box;
  background: transparent;
  min-height: 0;
}
body:has(#themeNameBox.theme15) #contactModalContent .contactItem > div {
  min-height: 0;
  line-height: 1.5;
}
body:has(#themeNameBox.theme15) #contactModalContent .contactItem:has(.call_tit.groom),
body:has(#themeNameBox.theme15) #contactModalContent .contactItem:has(.call_tit.bride) {
  grid-template-areas:
    "header header header"
    "tit    name   icon";
  padding: 0 25px 10px 30px;
}
body:has(#themeNameBox.theme15) #contactModalContent .contactItem:has(.call_tit.bride) {
  margin-top: 30px;
}
body:has(#themeNameBox.theme15) #contactModalContent .contactItem:has(.call_tit.groom)::before,
body:has(#themeNameBox.theme15) #contactModalContent .contactItem:has(.call_tit.bride)::before {
  grid-area: header;
  display: block;
  min-height: 76px;
  margin: 0 -25px 10px -30px;
  padding: 29px 30px;
  box-sizing: border-box;
  border-bottom: 0;
  background-image: linear-gradient(rgba(17, 17, 17, 0.3), rgba(17, 17, 17, 0.3));
  background-repeat: no-repeat;
  background-position: left bottom;
  background-size: 100% 0.5px;
  font-family: "Noto Serif KR", "JejuMyeongjo", serif;
  font-size: 18px;
  font-weight: 700;
  color: #111111;
  letter-spacing: -0.5px;
  text-align: left;
}
body:has(#themeNameBox.theme15) #contactModalContent .contactItem:has(.call_tit.groom)::before { content: "신랑측"; }
body:has(#themeNameBox.theme15) #contactModalContent .contactItem:has(.call_tit.bride)::before { content: "신부측"; }
body:has(#themeNameBox.theme15) #contactModalContent .contactItem:has(.call_tit.groom) .call_tit,
body:has(#themeNameBox.theme15) #contactModalContent .contactItem:has(.call_tit.bride) .call_tit { grid-area: tit; }
body:has(#themeNameBox.theme15) #contactModalContent .contactItem:has(.call_tit.groom) .call_name,
body:has(#themeNameBox.theme15) #contactModalContent .contactItem:has(.call_tit.bride) .call_name { grid-area: name; }
body:has(#themeNameBox.theme15) #contactModalContent .contactItem:has(.call_tit.groom) .call_icon,
body:has(#themeNameBox.theme15) #contactModalContent .contactItem:has(.call_tit.bride) .call_icon { grid-area: icon; }
body:has(#themeNameBox.theme15) #contactModalContent .contactItem .call_tit,
body:has(#themeNameBox.theme15) #contactModalContent .contactItem .call_name {
  width: auto !important;
  min-width: 0;
  margin: 0;
  padding: 0;
  color: #111111 !important;
  font-family: "Noto Serif KR", "JejuMyeongjo", serif;
  font-size: 16px;
  line-height: 1.5;
  text-align: left;
  white-space: nowrap;
  word-break: keep-all;
}
body:has(#themeNameBox.theme15) #contactModalContent .contactItem .call_tit { font-weight: 400; }
body:has(#themeNameBox.theme15) #contactModalContent .contactItem .call_name { font-weight: 600; }
body:has(#themeNameBox.theme15) #contactModalContent .contactItem .call_name span {
  display: inline-block;
  white-space: nowrap;
}
body:has(#themeNameBox.theme15) #contactModalContent .contactItem .call_tit .xeicon {
  display: none;
}
body:has(#themeNameBox.theme15) #contactModalContent .contactItem.groom-dad-info .call_tit,
body:has(#themeNameBox.theme15) #contactModalContent .contactItem.groom-mom-info .call_tit,
body:has(#themeNameBox.theme15) #contactModalContent .contactItem.bride-dad-info .call_tit,
body:has(#themeNameBox.theme15) #contactModalContent .contactItem.bride-mom-info .call_tit {
  font-size: 0;
  line-height: 0;
}
body:has(#themeNameBox.theme15) #contactModalContent .contactItem.groom-dad-info .call_tit::before,
body:has(#themeNameBox.theme15) #contactModalContent .contactItem.bride-dad-info .call_tit::before {
  content: "아버지";
  font-size: 16px;
  font-weight: 400;
  color: #111111;
  line-height: 1.5;
  display: inline-block;
}
body:has(#themeNameBox.theme15) #contactModalContent .contactItem.groom-mom-info .call_tit::before,
body:has(#themeNameBox.theme15) #contactModalContent .contactItem.bride-mom-info .call_tit::before {
  content: "어머니";
  font-size: 16px;
  font-weight: 400;
  color: #111111;
  line-height: 1.5;
  display: inline-block;
}
/* 통화/메시지 아이콘 - 브라운 원형 28px + 흰 svg */
body:has(#themeNameBox.theme15) #contactModalContent .contactItem .call_icon {
  width: auto;
  padding: 0;
  display: flex;
  gap: 15px;
  align-items: center;
  justify-self: end;
}
body:has(#themeNameBox.theme15) #contactModalContent .contactItem .call_icon > a {
  margin: 0;
  width: 28px;
  height: 28px;
  border: 0 !important;
  border-radius: 50%;
  background-color: var(--t15-brown, #92623c) !important;
  background-repeat: no-repeat;
  background-position: center;
  display: inline-block;
  text-decoration: none;
  font-size: 0 !important;
  line-height: 0;
}
body:has(#themeNameBox.theme15) #contactModalContent .contactItem .call_icon > a.mobile {
  background-image: url('/assets/tool/img/invitation/theme_2026/theme12_icon_call.svg') !important;
  background-size: 14px 14px;
}
body:has(#themeNameBox.theme15) #contactModalContent .contactItem .call_icon > a.sms {
  background-image: url('/assets/tool/img/invitation/theme_2026/theme12_icon_message.svg') !important;
  background-size: 17px 12px;
}
body:has(#themeNameBox.theme15) #contactModalContent .contactItem .call_icon > a .xeicon {
  display: none !important;
}

/* ---- 모달 2. 참석 의사 전달 (#attendModalContent) ---- */
body:has(#themeNameBox.theme15) #attendModalContent .modal-header {
  padding: 32px 30px 14px !important;
  text-align: center;
  display: block !important;
  position: relative;
  border-bottom: 0;
}
body:has(#themeNameBox.theme15) #attendModalContent .modal-title {
  display: block;
  width: 100%;
  max-width: 100%;
  margin: 0;
  color: #111111 !important;
  font-family: "Noto Serif KR", "JejuMyeongjo", serif;
  font-size: 18px;
  font-weight: 700;
  text-align: center;
  letter-spacing: -0.5px;
  white-space: nowrap;
}
body:has(#themeNameBox.theme15) #attendModalContent .modal-title::after {
  content: "원활한 예식 진행을 위해 참석 정보를\A미리 알려주시면 감사하겠습니다";
  display: block;
  margin-top: 12px;
  white-space: pre-line;
  color: rgba(17, 17, 17, 0.5);
  font-family: "Noto Serif KR", "JejuMyeongjo", serif;
  font-size: 12px;
  font-weight: 600;
  line-height: 18px;
  text-align: center;
}
body:has(#themeNameBox.theme15) #attendModalContent .modal-header .close {
  position: absolute;
  top: 16px;
  right: 16px;
  font-size: 22px;
  transform: none;
}
body:has(#themeNameBox.theme15) #attendModalContent .modal-body {
  padding: 12px 0 30px !important;
  background: #ffffff;
}
body:has(#themeNameBox.theme15) #attendModalContent .preview-attend-content {
  display: flex;
  flex-direction: column;
  gap: 0;
  color: #111111;
  font-family: "Noto Serif KR", "JejuMyeongjo", serif;
}
body:has(#themeNameBox.theme15) #attendModalContent .col-form-label {
  display: none !important;
}
body:has(#themeNameBox.theme15) #attendModalContent .form-group.row {
  display: block;
  margin: 0;
  padding: 10px 13px;
}
body:has(#themeNameBox.theme15) #attendModalContent .form-group.row > .col-sm-9,
body:has(#themeNameBox.theme15) #attendModalContent .form-group.row > .col-12 {
  flex: none;
  max-width: 100%;
  width: 100%;
  padding: 0;
}
body:has(#themeNameBox.theme15) #attendModalContent .btn-group-toggle {
  display: flex !important;
  gap: 8px;
  width: 100% !important;
  grid-template-columns: none;
}
body:has(#themeNameBox.theme15) #attendModalContent .btn-group-toggle > label.btn {
  flex: 1;
  width: auto;
  min-width: 0;
  height: 45px;
  padding: 10px;
  margin: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: #ffffff !important;
  border: 0.5px solid rgba(17, 17, 17, 0.5) !important;
  border-radius: 4px !important;
  color: #111111 !important;
  font-family: "Noto Serif KR", "JejuMyeongjo", serif;
  font-size: 13px;
  font-weight: 600;
  box-shadow: none;
  letter-spacing: -0.5px;
  white-space: nowrap;
}
/* 신랑측(1행 첫번째) active - 딥 브라운 */
body:has(#themeNameBox.theme15) #attendModalContent .form-group:nth-of-type(1) .btn-group-toggle > label.btn.active {
  background: var(--t15-point-deep, #8c6238) !important;
  color: #ffffff !important;
  border-color: var(--t15-point-deep, #8c6238) !important;
}
/* 참석가능(2행 첫번째) active - 브라운 */
body:has(#themeNameBox.theme15) #attendModalContent .form-group:nth-of-type(2) .btn-group-toggle > label.btn.active {
  background: var(--t15-brown, #92623c) !important;
  color: #ffffff !important;
  border-color: var(--t15-brown, #92623c) !important;
}
/* 신부측/참석불가(각 행 두 번째 버튼) active - #5E3616 */
body:has(#themeNameBox.theme15) #attendModalContent .form-group:nth-of-type(1) .btn-group-toggle > label.btn:last-child.active,
body:has(#themeNameBox.theme15) #attendModalContent .form-group:nth-of-type(2) .btn-group-toggle > label.btn:last-child.active {
  background: #5e3616 !important;
  color: #ffffff !important;
  border-color: #5e3616 !important;
}
body:has(#themeNameBox.theme15) #attendModalContent .btn-group-toggle > label.btn input[type="radio"] {
  display: none;
}
body:has(#themeNameBox.theme15) #attendModalContent .form-group:nth-of-type(3) {
  padding: 30px 0 0;
}
body:has(#themeNameBox.theme15) #attendModalContent .form-group:nth-of-type(3) > .col-sm-9::before,
body:has(#themeNameBox.theme15) #attendModalContent .form-group:nth-of-type(3) > .col-12::before {
  content: "성함";
  display: block;
  padding: 0 13px 10px;
  color: #111111;
  font-family: "Noto Serif KR", "JejuMyeongjo", serif;
  font-size: 13px;
  font-weight: 600;
}
body:has(#themeNameBox.theme15) #attendModalContent .form-group:nth-of-type(3) .input-group,
body:has(#themeNameBox.theme15) #attendModalContent .input-group.split {
  display: flex !important;
  gap: 8px;
  padding: 0 13px;
  margin: 0;
  flex-wrap: nowrap;
  grid-template-columns: none;
}
body:has(#themeNameBox.theme15) #attendModalContent .input-group.split {
  margin-bottom: 10px !important;
}
body:has(#themeNameBox.theme15) #attendModalContent .form-group:nth-of-type(3) .input-group input.form-control {
  flex: 1 1 189px;
  width: auto !important;
  max-width: 189px;
  min-width: 0;
  height: 45px;
  padding: 10px;
  background: #ffffff;
  border: 0.5px solid #30312e;
  border-radius: 4px !important;
  color: #111111;
  font-family: "Pretendard", "Noto Sans KR", sans-serif;
  font-size: 12px;
  font-weight: 400;
}
body:has(#themeNameBox.theme15) #attendModalContent .form-group:nth-of-type(3) .input-group input.form-control::placeholder {
  color: rgba(17, 17, 17, 0.3);
  font-family: "Pretendard", "Noto Sans KR", sans-serif;
  font-size: 10px;
  font-weight: 400;
}
body:has(#themeNameBox.theme15) #attendModalContent .input-group-append {
  margin: 0;
  flex: 0 0 137px;
}
body:has(#themeNameBox.theme15) #attendModalContent .input-group-append .btn,
body:has(#themeNameBox.theme15) #attendModalContent .btn-add-companion {
  width: 137px;
  min-height: 45px;
  height: 45px;
  padding: 10px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  background: var(--t15-brown, #92623c) !important;
  border: 0.5px solid rgba(17, 17, 17, 0.5);
  border-radius: 4px !important;
  color: #ffffff !important;
  font-family: "Noto Serif KR", "JejuMyeongjo", serif;
  font-size: 13px;
  font-weight: 600 !important;
  box-shadow: none;
  white-space: nowrap;
}
body:has(#themeNameBox.theme15) #attendModalContent .input-group-append .btn i.xeicon {
  display: none;
}
body:has(#themeNameBox.theme15) #attendModalContent .btn-add-companion::before {
  content: "+";
}
body:has(#themeNameBox.theme15) #attendModalContent .btn-del-companion::before {
  content: "-";
}
body:has(#themeNameBox.theme15) #attendModalContent .btn-dark.btn-block {
  margin: 20px 13px 0;
  width: calc(100% - 26px);
  height: 45px;
  background: var(--t15-brown, #92623c) !important;
  border: 0 !important;
  border-radius: 4px !important;
  color: #ffffff !important;
  font-family: "Noto Serif KR", "JejuMyeongjo", serif;
  font-size: 13px;
  font-weight: 600;
}

/* ---- 모달 3. 방명록 작성/수정 (#gueseditModalContent / #guestUpdateModalContent) ---- */
body:has(#themeNameBox.theme15) #gueseditModalContent .modal-title,
body:has(#themeNameBox.theme15) #guestUpdateModalContent .modal-title {
  font-family: "Noto Serif KR", "JejuMyeongjo", serif;
  font-size: 18px;
  font-weight: 700;
}
body:has(#themeNameBox.theme15) #gueseditModalContent .modal-body,
body:has(#themeNameBox.theme15) #guestUpdateModalContent .modal-body {
  padding: 25px 30px 30px;
}
body:has(#themeNameBox.theme15) #gueseditModalContent.guestbook-write-modal .form-group,
body:has(#themeNameBox.theme15) #guestUpdateModalContent .form-group {
  margin-bottom: 25px;
}
body:has(#themeNameBox.theme15) #gueseditModalContent .modal-body label,
body:has(#themeNameBox.theme15) #guestUpdateModalContent .modal-body label {
  display: block;
  margin-bottom: 7px;
  padding: 0;
  color: #111111 !important;
  font-family: "Noto Serif KR", "JejuMyeongjo", serif;
  font-size: 13px;
  font-weight: 600;
  text-align: left;
}
body:has(#themeNameBox.theme15) #gueseditModalContent .modal-body input.form-control,
body:has(#themeNameBox.theme15) #gueseditModalContent .modal-body textarea.form-control,
body:has(#themeNameBox.theme15) #guestUpdateModalContent .modal-body input.form-control,
body:has(#themeNameBox.theme15) #guestUpdateModalContent .modal-body textarea.form-control {
  min-height: 45px;
  padding: 10px;
  border: 0.5px solid var(--t15-brown, #92623c);
  border-radius: 4px;
  background: #ffffff;
  color: #111111;
  font-family: "Pretendard", "Noto Sans KR", sans-serif;
  font-size: 12px;
}
body:has(#themeNameBox.theme15) #gueseditModalContent .modal-body textarea.form-control,
body:has(#themeNameBox.theme15) #guestUpdateModalContent .modal-body textarea.form-control {
  min-height: 80px;
}
body:has(#themeNameBox.theme15) #gueseditModalContent .modal-body input.form-control::placeholder,
body:has(#themeNameBox.theme15) #gueseditModalContent .modal-body textarea.form-control::placeholder,
body:has(#themeNameBox.theme15) #guestUpdateModalContent .modal-body input.form-control::placeholder,
body:has(#themeNameBox.theme15) #guestUpdateModalContent .modal-body textarea.form-control::placeholder {
  color: rgba(17, 17, 17, 0.3);
  font-family: "Pretendard", "Noto Sans KR", sans-serif;
  font-size: 10px;
  font-weight: 400;
}
body:has(#themeNameBox.theme15) #gueseditModalContent .modal-body .btn-dark.btn-block,
body:has(#themeNameBox.theme15) #guestUpdateModalContent .modal-body .btn-dark.btn-block {
  min-height: 45px;
  height: 45px;
  border: 0 !important;
  border-radius: 4px !important;
  background: var(--t15-brown, #92623c) !important;
  color: #ffffff !important;
  font-family: "Noto Serif KR", "JejuMyeongjo", serif;
  font-size: 13px;
  font-weight: 600;
}

/* ============================================================
 * (예식종료) 감사글 - 테마15
 *  초대글과 형제 블록이므로 동일 팔레트/서체로 맞춘다.
 * ============================================================ */
#themeNameBox.theme15 .preview-testimonial-wrap {
  padding: 100px 32px 30px;
}
#themeNameBox.theme15 .preview-testimonial-wrap .preview-message-wrap.preview-testimonial-message,
#themeNameBox.theme15 .preview-testimonial-wrap .preview-testimonial-message p,
#themeNameBox.theme15 .preview-insa-wrap .preview-message-wrap.preview-insa-message,
#themeNameBox.theme15 .preview-insa-wrap .preview-message-wrap.preview-insa-message p {
  color: var(--t15-brown);
  font-family: "Noto Serif KR", "JejuMyeongjo", serif;
  font-size: 13px;
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: -0.5px;
  text-align: center;
}
