/*
 * 사이트 다국어 — 외국어 화면만의 배치 손질 (2026-10-01)
 *
 * 번역 글은 한국어보다 길다(영어·러시아어·베트남어는 메뉴·단추가 1.5~2배). 한국어 길이에 맞춘 고정 칸·한 줄 규칙에서
 * 글자가 겹치는 자리만 여기서 푼다. 이 시트는 다국어가 켜진 요청에만 실린다(lib/i18n.inc bj_i18n_head_markup) —
 * 전 언어 꺼짐이면 손님 HTML 에 링크조차 없다. 규칙은 모두 html[data-bj-lang]:not([data-bj-lang="ko"]) 로 묶는다
 * (다국어가 켜져도 한국어로 보는 손님 화면은 그대로).
 * 화면 파일의 인라인 <style> 에 넣지 않는 까닭: 그 글은 한국어 손님에게도 나가므로 꺼짐 출력이 바뀐다.
 */

/* 표지 금박 표식은 정본의 한 줄·12px·26px 높이를 유지한다. 전체 문구는 title/접근성 이름으로 제공한다. */
html[data-bj-lang]:not([data-bj-lang="ko"]) .newyearCoverFoilMark { max-width: calc(100% - 16px); }
html[data-bj-lang]:not([data-bj-lang="ko"]) .newyearCoverFoilMark__text { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
@media (max-width: 767px) { html[data-bj-lang]:not([data-bj-lang="ko"]) .newyearCoverFoilMark { max-width: calc(100% - 10px); } }

/* 혜택 안내의 수량 탭·특가 카드처럼 좁은 칸에서도 긴 번역 낱말이 이웃 칸을 덮지 않게 한다. */
html[data-bj-lang]:not([data-bj-lang="ko"]) .benefitRenewal {
  overflow-wrap: anywhere;
}

/* 주문 구성 상태는 문장 길이가 다르므로 상품명 옆 배지를 고정 한 줄에 가두지 않는다. */
html[data-bj-lang]:not([data-bj-lang="ko"]) .mypage-order-detail__product-copy {
  flex: 1 1 0;
}
html[data-bj-lang]:not([data-bj-lang="ko"]) .mypage-order-detail__product-name-row {
  max-width: 100%;
  flex-wrap: wrap;
}
html[data-bj-lang]:not([data-bj-lang="ko"]) .mypage-order-detail__status {
  height: auto;
  min-height: 20px;
  max-width: 100%;
  flex: 0 1 auto;
  padding-block: 2px;
  white-space: normal;
  overflow-wrap: anywhere;
  line-height: var(--bj-type-caption-line, 1.5);
}

/* 로그인 공통 폼: 번역된 비회원 탭은 고정 높이/한 줄을 넘고, 계정 찾기의 긴 낱말은 옆 링크를 덮었다.
   탭과 링크가 자기 칸 안에서 감기고 필요한 높이를 차지하게 한다. */
html[data-bj-lang]:not([data-bj-lang="ko"]) .bj-login-card .ui-check-user-type {
  height: auto;
  min-height: 52px;
  align-items: stretch;
}
html[data-bj-lang]:not([data-bj-lang="ko"]) .bj-login-card .ui-check-user-type button {
  padding: 12px 8px;
  white-space: normal;
  overflow-wrap: anywhere;
  line-height: var(--bj-type-caption-line, 1.5);
}
/* Keep whole words in the account tab; its 32% basis may grow to fit translated words. */
html[data-bj-lang]:not([data-bj-lang="ko"]) .bj-login-card .ui-check-user-type button.ui-tab-member {
  min-width: min-content;
  overflow-wrap: normal;
}
html[data-bj-lang]:not([data-bj-lang="ko"]) .bj-login-card .ui-account-find-row {
  align-items: stretch;
  flex-wrap: wrap;
  gap: 0 8px;
}
html[data-bj-lang]:not([data-bj-lang="ko"]) .bj-login-card .ui-account-find-row li {
  flex: 1 1 max-content;
  max-width: 100%;
}
html[data-bj-lang]:not([data-bj-lang="ko"]) .bj-login-card .ui-account-find-row li + li::before {
  display: none;
}
html[data-bj-lang]:not([data-bj-lang="ko"]) .bj-login-card .ui-account-find-row a {
  box-sizing: border-box;
  min-width: 0;
  width: 100%;
  padding: 4px 8px;
  white-space: normal;
  overflow-wrap: anywhere;
  text-align: center;
}

/* 홈 바로가기 띠 — 칸이 109px 고정·한 줄이라 «Design Envelopes»·«Wedding Frames» 가 옆 칸을 덮었다. 칸이 글 길이만큼 넓어진다(띠는 원래 가로로 민다). */
html[data-bj-lang]:not([data-bj-lang="ko"]) .renew-shortcut-grid { grid-auto-columns: minmax(109px, max-content); }

@media (max-width: 699px) {
  /* 홈 첫 화면(폰) — 글 묶음이 위에서 400px 에 고정돼 길어지면 아래 넘김 단추(01/05)를 덮었다. 아래 기준으로 세워 위로 자라게 한다.
     한국어 길이일 때 끝나는 자리(아래에서 70px)와 같다. */
  html[data-bj-lang]:not([data-bj-lang="ko"]) .renew-slide-copy { top: auto; bottom: 70px; }
  /* 홈 바로가기 띠(폰) — 칸이 84px 고정이라 «Professional Photo Retouching» 이 양옆으로 넘치고 첫 칸은 화면 밖으로 잘렸다.
     칸은 84px 부터 글 길이만큼(최대 132px) 넓어지고, 더 길면 두 줄로 감싼다. 한 줄·두 줄 칸의 아이콘 높이를 맞추려 위에서부터 쌓는다. */
  html[data-bj-lang]:not([data-bj-lang="ko"]) .renew-shortcut-grid { grid-auto-columns: minmax(84px, max-content); }
  html[data-bj-lang]:not([data-bj-lang="ko"]) .renew-shortcut {
    width: auto;
    max-width: 132px;
    justify-content: flex-start;
    white-space: normal;
  }
}

/* 폰 아래 바 — 번역은 두 줄보다 길 수 있으므로 도크와 목록·항목이 함께 내용 높이를 따른다.
   모든 아이콘은 같은 줄에서 시작하고, 가장 긴 이름이 공통 행 높이를 결정한다. */
html[data-bj-lang]:not([data-bj-lang="ko"]) .bojagiMobileDock,
html[data-bj-lang]:not([data-bj-lang="ko"]) .bojagiMobileDock .bojagiMobileDock__list,
html[data-bj-lang]:not([data-bj-lang="ko"]) .bojagiMobileDock .bojagiMobileDock__item {
  height: auto;
  min-height: var(--bojagi-mobile-dock-height);
}
html[data-bj-lang]:not([data-bj-lang="ko"]) .bojagiMobileDock .bojagiMobileDock__action {
  justify-content: flex-start;
  gap: 2px;
  padding-block: 6px;
}
html[data-bj-lang]:not([data-bj-lang="ko"]) .bojagiMobileDock .bojagiMobileDock__label {
  max-width: 100%;
  font-size: 11px;
  line-height: 1.1;
  white-space: normal;
  text-align: center;
  overflow-wrap: anywhere;
}
/* 공통 도크가 실제 차지하는 높이를 사용해 꼬리말 마지막 링크도 가리지 않는다. */
html[data-bj-lang]:not([data-bj-lang="ko"]).bj-language-mobile-dock .bj-compact-footer {
  padding-bottom: calc(var(--bj-language-mobile-dock-height) + max(6px, env(safe-area-inset-bottom, 0px))) !important;
}

/* 펼친 상품 메뉴도 번역의 최소 낱말 폭으로 열을 밀어내지 않는다.
   두 탐색 영역은 자기 폭에서 줄바꿈하고, 길어지면 각각 세로로 탐색한다. */
html[data-bj-lang]:not([data-bj-lang="ko"]) .mobileCatalogExplorer__body {
  grid-template-columns: clamp(116px, 32vw, 132px) minmax(0, 1fr);
}
html[data-bj-lang]:not([data-bj-lang="ko"]) .mobileCatalogExplorer__groups,
html[data-bj-lang]:not([data-bj-lang="ko"]) .mobileCatalogExplorer__right {
  min-width: 0;
  grid-template-columns: minmax(0, 1fr);
  overflow-x: hidden;
  overflow-y: auto;
  overscroll-behavior: contain;
}
html[data-bj-lang]:not([data-bj-lang="ko"]) .mobileCatalogExplorer__groups {
  grid-auto-rows: minmax(48px, auto);
}
html[data-bj-lang]:not([data-bj-lang="ko"]) .mobileCatalogExplorer__right {
  grid-template-rows: max-content max-content;
}
html[data-bj-lang]:not([data-bj-lang="ko"]) .mobileCatalogExplorer__groups button,
html[data-bj-lang]:not([data-bj-lang="ko"]) .mobileCatalogExplorer__groupLink,
html[data-bj-lang]:not([data-bj-lang="ko"]) .mobileCatalogExplorer__label,
html[data-bj-lang]:not([data-bj-lang="ko"]) .mobileCatalogExplorer__support,
html[data-bj-lang]:not([data-bj-lang="ko"]) .mobileCatalogExplorer__eventBanner strong {
  min-width: 0;
  max-width: 100%;
  white-space: normal;
  word-break: normal;
  overflow-wrap: anywhere;
}
html[data-bj-lang]:not([data-bj-lang="ko"]) .mobileCatalogExplorer__groups button > span,
html[data-bj-lang]:not([data-bj-lang="ko"]) .mobileCatalogExplorer__groupLink > span {
  min-width: 0;
}
html[data-bj-lang]:not([data-bj-lang="ko"]) .mobileCatalogExplorer__grid--related,
html[data-bj-lang]:not([data-bj-lang="ko"]) .mobileCatalogExplorer__reviewLinks {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}
@media (max-width: 359px) {
  html[data-bj-lang]:not([data-bj-lang="ko"]) .mobileCatalogExplorer__grid,
  html[data-bj-lang]:not([data-bj-lang="ko"]) .mobileCatalogExplorer__reviewLinks {
    grid-template-columns: minmax(0, 1fr);
  }
  html[data-bj-lang]:not([data-bj-lang="ko"]) .mobileCatalogExplorer__grid > .mobileCatalogExplorer__child {
    grid-column: auto;
  }
}

/* ── 목록·상세(단위 ②-a) ── */

/* 구매 영역: 번역 문구를 칸 안에서 감싸고, 고정 높이 대신 실제 내용 높이를 쓴다. */
html[data-bj-lang]:not([data-bj-lang="ko"]) body.pdp-modern-page [data-pdp-purchase-actions] .pdp-purchase-action:not([data-pdp-action="cart"]),
html[data-bj-lang]:not([data-bj-lang="ko"]) body.pdp-unified-product-detail:not([data-pdp-business-group="new_year"]) [data-pdp-direct-purchase-actions] .pdp-purchase-action:not([data-pdp-action="cart"]) {
  height: auto;
  align-self: stretch;
  padding-block: 8px;
}
html[data-bj-lang]:not([data-bj-lang="ko"]) body.pdp-modern-page [data-pdp-purchase-actions] .pdp-purchase-action:not([data-pdp-action="cart"]) .pdp-purchase-action__label,
html[data-bj-lang]:not([data-bj-lang="ko"]) body.pdp-unified-product-detail:not([data-pdp-business-group="new_year"]) [data-pdp-direct-purchase-actions] .pdp-purchase-action:not([data-pdp-action="cart"]) .pdp-purchase-action__label {
  min-width: 0;
  max-width: 100%;
  white-space: normal;
  word-break: normal;
  overflow-wrap: anywhere;
}
html[data-bj-lang]:not([data-bj-lang="ko"]) body.pdp-modern-page [data-pdp-purchase-actions] .pdp-purchase-dock__rail,
html[data-bj-lang]:not([data-bj-lang="ko"]) body.pdp-modern-page [data-pdp-purchase-actions] .pdp-purchase-dock__actions,
html[data-bj-lang]:not([data-bj-lang="ko"]) body.pdp-unified-product-detail:not([data-pdp-business-group="new_year"]) [data-pdp-direct-purchase-actions] .pdp-purchase-dock__actions {
  height: auto;
}
html[data-bj-lang]:not([data-bj-lang="ko"]) body.pdp-modern-page [data-pdp-purchase-actions] .pdp-purchase-dock .pdp-purchase-dock__order {
  height: auto;
  padding-block: 8px;
}
@media (max-width: 768px) {
  /* 보조 동작 다음에 주문을 한 줄 전체로 둔다. DOM/키보드 순서는 그대로다. */
  html[data-bj-lang]:not([data-bj-lang="ko"]) body.pdp-modern-page [data-pdp-purchase-actions] .pdp-purchase-dock__actions {
    grid-template-columns: 48px minmax(0, 1fr);
  }
  html[data-bj-lang]:not([data-bj-lang="ko"]) body.pdp-modern-page [data-pdp-purchase-actions] .pdp-purchase-dock__order {
    grid-column: 1 / -1;
    grid-row: 2;
  }
}
/* JS가 표시 중인 도크의 실제 높이를 측정한다. safe-area는 측정 높이에 이미 포함된다. */
html[data-bj-lang]:not([data-bj-lang="ko"]).pdp-language-purchase-dock body.pdp-modern-page.pdp-purchase-dock-visible {
  padding-bottom: calc(var(--pdp-language-dock-height, 88px) + var(--pdp-environment-banner-inset, 0px)) !important;
}
html[data-bj-lang]:not([data-bj-lang="ko"]).pdp-language-purchase-dock.pdp-purchase-dock-visible,
html[data-bj-lang]:not([data-bj-lang="ko"]).pdp-language-purchase-dock body.pdp-purchase-dock-visible {
  scroll-padding-bottom: calc(var(--pdp-language-dock-height, 88px) + 16px + var(--pdp-environment-banner-inset, 0px));
}
html[data-bj-lang]:not([data-bj-lang="ko"]).pdp-language-purchase-dock body.pdp-purchase-dock-visible :where(a[href], button, input, select, textarea, [tabindex]:not([tabindex="-1"])) {
  scroll-margin-bottom: calc(var(--pdp-language-dock-height, 88px) + 16px + var(--pdp-environment-banner-inset, 0px));
}

@media (min-width: 768px) {
  html[data-bj-lang]:not([data-bj-lang="ko"]) #top_r2_left { column-gap: var(--bj-space-2); }
  html[data-bj-lang]:not([data-bj-lang="ko"]) .headerNavScroll:not([hidden]) { display: flex; flex: 0 0 auto; }
  html[data-bj-lang]:not([data-bj-lang="ko"]) .headerNavScroll button {
    display: inline-flex; align-items: center; justify-content: center;
    width: 44px; height: 44px; padding: 0;
    border: 1px solid var(--bj-line); border-radius: var(--bj-control-radius);
    background: var(--bj-clean); color: var(--bj-text); cursor: pointer;
  }
  html[data-bj-lang]:not([data-bj-lang="ko"]) .headerNavScroll button:disabled { opacity: .35; cursor: default; }
  html[data-bj-lang]:not([data-bj-lang="ko"]) .headerNavScroll button:focus-visible { outline: 2px solid var(--bj-text); outline-offset: -2px; }
  html[data-bj-lang]:not([data-bj-lang="ko"]) .headerNavScroll svg { width: 20px; height: 20px; }
  html[data-bj-lang]:not([data-bj-lang="ko"]) .headerNavScroll [data-nav-scroll="1"] svg { transform: rotate(180deg); }
  /* 목록 정렬 칸(PC) — 104px 고정이라 «Overall popularity» 가 «Overall po…» 로 잘렸다. 칸이 글 길이만큼 넓어진다(220px 넘으면 그때 말줄임).
     원래 규칙이 #pl_sort_row 로 묶여 있어 같은 아이디를 써야 이긴다. */
  html[data-bj-lang]:not([data-bj-lang="ko"]) #pl_sort_row .weddingCatalogSortControl { width: auto; max-width: 220px; }
  /* 크게·작게 단추(PC) — 52px 상자에 단추가 꽉 차게 떠 있어(absolute) «Large» 가 상자 밖으로 삐져나왔다. 단추가 제 글 폭으로 상자를 채운다. */
  html[data-bj-lang]:not([data-bj-lang="ko"]) #pl_sort_row .rpcBtnBox { width: auto; flex: 0 0 auto; }
  html[data-bj-lang]:not([data-bj-lang="ko"]) #pl_sort_row .rpcBtn { position: relative; width: auto; white-space: nowrap; }
  /* 두 메뉴 묶음 모두 실제 글 폭을 보장한다. 오른쪽 묶음만 보장하면 왼쪽이 좁아져
     연하장 러시아어 서비스명끼리 겹친다. 전체가 길면 기존 태블릿 메뉴와 같은 가로 탐색을 사용한다. */
  html[data-bj-lang]:not([data-bj-lang="ko"]) .weddingCatalogContextNav--pc .weddingCatalogContextNav__railViewport { overflow-x: auto; overflow-y: hidden; overscroll-behavior-x: contain; scrollbar-width: none; }
  html[data-bj-lang]:not([data-bj-lang="ko"]) .weddingCatalogContextNav--pc .weddingCatalogContextNav__railViewport::-webkit-scrollbar { display: none; }
  html[data-bj-lang]:not([data-bj-lang="ko"]) .weddingCatalogContextNav--pc .weddingCatalogContextNav__rail { grid-template-columns: max-content max-content; min-width: 100%; }
  html[data-bj-lang]:not([data-bj-lang="ko"]) .weddingCatalogContextNav--pc .weddingCatalogContextNav__styles,
  html[data-bj-lang]:not([data-bj-lang="ko"]) .weddingCatalogContextNav--pc .weddingCatalogContextNav__related { grid-template-columns: none; grid-auto-flow: column; grid-auto-columns: max-content; column-gap: 16px; }
  html[data-bj-lang]:not([data-bj-lang="ko"]) .companionCatalogNav.weddingCatalogContextNav--pc .weddingCatalogContextNav__styles { grid-template-columns: none !important; }
  /* 상세 요약 줄(PC) — «· Express production ships same day»·«Offset printing, Die-cutting, Foil stamping…» 가 한 줄 말줄임으로 잘렸다.
     폰 화면처럼 두 줄로 감싼다(폰은 원래 감싼다). */
  html[data-bj-lang]:not([data-bj-lang="ko"]) body.pdp-modern-page .pdp-inline-guide-button > span,
  html[data-bj-lang]:not([data-bj-lang="ko"]) .pdp-eta-summary__hint { white-space: normal; }
}

/* 폰 목록 머리 제목 — 18px·줄 높이 28px 라 «Wedding Invitations» 가 두 줄로 머리(56px)를 꽉 채웠다. 조금 줄여 한 줄에 들거나, 두 줄이어도 머리 안에 여유 있게 든다. */
html[data-bj-lang]:not([data-bj-lang="ko"]) #main_header .mobileHeaderContextTitle {
  font-size: 16px;
  line-height: 19px;
  text-wrap: balance;
  overflow-wrap: anywhere;
}

/* 목록 정렬 펼침 목록(PC·폰) — 목록 폭은 단추 폭(최소 156~164px)을 따라가 «Most sample requests» 가 «Most sample r…» 로 잘렸다.
   목록을 넓히면 오른쪽 끝 단추에서 화면 밖으로 나가므로, 폭은 두고 글을 두 줄까지 감싼다. */
html[data-bj-lang]:not([data-bj-lang="ko"]) .weddingCatalogSortOption { padding-block: 8px; }
html[data-bj-lang]:not([data-bj-lang="ko"]) .weddingCatalogSortOption__label { white-space: normal; overflow-wrap: anywhere; }

/* ── 상품 종류별 상세(단위 ②-b) ── */

/* 제작 일정 줄의 보조 글(폰·PC) — «영업일 기준» 칸에 «Business days» 가 «Business …» 로 잘렸다. 두 줄까지 감싼다. */
html[data-bj-lang]:not([data-bj-lang="ko"]) body.pdp-modern-page .pdp-modern-purchase-surface .pdp-inline-guide-button--schedule .pdp-inline-guide-button__meta { white-space: normal; }
/* 사진 미리보기 안내(PC) — «You can preview it with your own…» 가 한 줄 말줄임으로 잘렸다. 감싼다. */
html[data-bj-lang]:not([data-bj-lang="ko"]) body.pdp-modern-page .pdp-modern-customizer .pdp-customizer-photo-status { white-space: normal; }

@media (max-width: 768px) {
  /* 폰 상세 머리 제목 — 18px 이라 «Professional photo retouching» 이 «…retou…» 로 잘렸다(장바구니·계정 단추 사이). 조금 줄인다. */
  html[data-bj-lang]:not([data-bj-lang="ko"]) #menu_r1.bojagiMobileCompactHeader .bojagiSharedHeaderIdentity { font-size: 15px; letter-spacing: -0.01em; }
  /* 뒤로 가기 머리말은 실제 양쪽 버튼 사이의 남은 폭을 제목에 배정한다. */
  html[data-bj-lang]:not([data-bj-lang="ko"]) #menu_r1.bojagiMobileCompactHeader[data-mobile-leading="back"] .bojagiSharedHeaderIdentity { position: static; flex: 1 1 0; min-width: 0; max-width: none; margin-inline: 8px; transform: none; }
  html[data-bj-lang]:not([data-bj-lang="ko"]) #menu_r1.bojagiMobileCompactHeader[data-mobile-leading="back"] .headerUtility { flex: 0 0 auto; }
}

/* ── 나라 돈 «약» 금액(단위 ③-a) ──
   한국어 «3,000원» 길이에 맞춘 고정 칸·한 줄 규칙에 «약 59.245 ₫»·«약 US$13.67» 같은 나라 돈 금액이 들어가 칸·화면 밖으로 잘렸다.
   칸을 글 길이만큼 넓히거나 칸 안에서 감는다. 감을 때는 띄어 쓴 자리에서 먼저 바꾸고, 한 덩어리가 칸보다 길 때만 글자 사이에서 끊는다. */

/* 비슷한 상품 카드 가격 줄(PC·폰) — PC 는 «N부 세트»와 금액이 한 줄(둘 다 한 줄 고정)이고 카드가 넘침을 숨겨 금액 뒤쪽이 사라졌다.
   폰처럼 두 줄로 쌓고, 폰의 좁은 카드에서도 긴 수량 글·금액이 칸 안에서 감기게 한다. */
html[data-bj-lang]:not([data-bj-lang="ko"]) .ui-similar-product-card__price { flex-direction: column; align-items: flex-start; gap: 1px; }
html[data-bj-lang]:not([data-bj-lang="ko"]) .ui-similar-product-card__price > span,
html[data-bj-lang]:not([data-bj-lang="ko"]) .ui-similar-product-card__price strong { max-width: 100%; white-space: normal; overflow-wrap: anywhere; }

/* 배송비 줄(상세 제작 요약·무료배송 줄) — «약 59.245 ₫ / 약 987.413 ₫ 이상 무료» 두 금액이 한 줄 고정이라 폰에서 화면 밖으로 잘리고
   PC 에서는 요약 칸 밖으로 삐져나왔다. 칸 안에서 감는다(정렬·글 크기는 그대로). */
html[data-bj-lang]:not([data-bj-lang="ko"]) body.pdp-unified-product-detail .pdp-preserved-production__shipping-fee dd,
html[data-bj-lang]:not([data-bj-lang="ko"]) body.pdp-unified-product-detail .freeDeliveryRow > ul > li:last-child { white-space: normal; overflow-wrap: anywhere; }

/* 상품 사양의 항목명은 고정 열 안에서 감는다. 긴 단어가 옆 값까지 침범하지 않도록 한다. */
html[data-bj-lang]:not([data-bj-lang="ko"]) body.pdp-unified-product-detail #productSpecArea > div > ul > li:first-child { min-width: 0; white-space: normal; overflow-wrap: anywhere; }

@media (max-width: 767px) {
  /* 세트 구성 창의 «별도 구매 시» 표(폰) — 칸 폭이 74% : 26% 로 고정(약 85~93px)이고 금액이 한 줄이라 «약 296.224 ₫» 가 화면 밖으로 잘렸다.
     금액 칸은 가장 긴 금액만큼, 이름 칸은 남은 폭에서 감는다. 금액은 한 줄 그대로. 이름과 금액 사이 12px. PC 창은 폭이 넉넉해 그대로 둔다. */
  html[data-bj-lang]:not([data-bj-lang="ko"]) body.pdp-modern-page .pdp-fullset-value__table { table-layout: auto; }
  html[data-bj-lang]:not([data-bj-lang="ko"]) body.pdp-modern-page .pdp-fullset-value__table thead th:first-child { width: auto; }
  html[data-bj-lang]:not([data-bj-lang="ko"]) body.pdp-modern-page .pdp-fullset-value__table thead th + th { padding-left: 12px; white-space: normal; }
  html[data-bj-lang]:not([data-bj-lang="ko"]) body.pdp-modern-page .pdp-fullset-value__table td { width: 1%; padding-left: 12px; }
}

/* 폰 청첩장 목록 수량 단추 — 50px 고정이라 «300 copies» 가 단추를 넘고 화살표가 옆 금액 위에 얹혔다. 단추가 글 길이만큼 넓어지고(50px 부터),
   수량과 금액이 한 줄에 다 안 들면 금액이 수량 아래 줄로 내려간다(360px 화면 카드 160px). 원래 규칙처럼 폭 조건 없이 폰 목록 몸통에만 건다. */
html[data-bj-lang]:not([data-bj-lang="ko"]) body.mobile-wedding-navigation #slide_pl .pl_qty_select { width: auto; max-width: none; flex: 0 0 auto; }
html[data-bj-lang]:not([data-bj-lang="ko"]) body.mobile-wedding-navigation #slide_pl .pl_cnt_price { flex-wrap: wrap; row-gap: 2px; }

@media (max-width: 768px) {
  /* 웨딩 액자 상세 혜택 칸 셋째(판매가, 폰) — 한국어 «18,000원부터» 에 맞춘 18px 한 줄이라 «약 US$13.67부터» 가 칸과 화면 밖으로 잘렸다.
     조금 줄이고 칸 안에서 감는다(나머지 두 칸은 원래 감긴다). */
  html[data-bj-lang]:not([data-bj-lang="ko"]) body.pdp-unified-product-detail .pdp-frame-value-facts > div:nth-child(3) strong { font-size: 16px; white-space: normal; overflow-wrap: anywhere; }
}

@media (min-width: 768px) {
  /* PC 청첩장 목록 수량 고르기 — 62px 고정(글 자리 44px)이라 «300 copies» 가 «300 cop» 으로 잘렸다. 고른 수량 글 길이만큼 넓어진다(62px 부터).
     원래 규칙의 «두 목록 묶음(where)» 을 그대로 쓰면 쉼표로 나뉘어 «선택자는 모두 html[data-bj-lang] 로 시작» 검사에 걸리므로 두 목록을 따로 적는다. */
  html[data-bj-lang]:not([data-bj-lang="ko"]) .product_list_gb .select_box,
  html[data-bj-lang]:not([data-bj-lang="ko"]) .product_list_pb .select_box,
  html[data-bj-lang]:not([data-bj-lang="ko"]) .product_list_gb .select_option_active,
  html[data-bj-lang]:not([data-bj-lang="ko"]) .product_list_pb .select_option_active { width: auto; max-width: none; }
  html[data-bj-lang]:not([data-bj-lang="ko"]) .product_list_gb .select_option_active,
  html[data-bj-lang]:not([data-bj-lang="ko"]) .product_list_pb .select_option_active { field-sizing: content; }
}

/* ── 테스트 서버 실제 영어 번역으로 본 겹침(10-04) ──
   가짜 번역(짧은 글)으로는 안 보이던 자리다. 진짜 영어 글 길이에서 재고 고쳤다. */

/* 폰 청첩장 목록 카드 — 글 칸 줄 높이가 24·28·40px 고정이라 금액이 수량 아래로 내려가면 셋째 줄(«+ Add sample»·BEST)을 덮었다.
   금액 줄만 글 높이만큼 자란다(28px 부터). */
html[data-bj-lang]:not([data-bj-lang="ko"]) .pl_cardinfo_wrapper_inner { grid-template-rows: 24px minmax(28px, auto) minmax(40px, auto); }
/* The action can wrap while its badge stays immediately after it in the third row.
   A shared flex row reserves the badge width without pushing it to the card edge. */
html[data-bj-lang]:not([data-bj-lang="ko"]) .weddingCatalogLanguageActions { grid-area:sample; display:flex; align-items:stretch; min-width:0; }
html[data-bj-lang]:not([data-bj-lang="ko"]) #slide_pl .weddingCatalogLanguageActions > .pl_sp_btn { flex:0 1 auto; min-width:0; width:auto; height:auto; min-height:40px; }
html[data-bj-lang]:not([data-bj-lang="ko"]) .weddingCatalogLanguageActions .no_cart_product_area { min-width:0; width:auto; }
html[data-bj-lang]:not([data-bj-lang="ko"]) .weddingCatalogLanguageActions > .weddingCatalogStatus { margin-left:10px; }
html[data-bj-lang]:not([data-bj-lang="ko"]) #slide_pl .weddingCatalogLanguageActions .sample_pick_icon { max-width:100%; height:auto; white-space:normal; overflow-wrap:anywhere; text-align:left; }

/* Selected filters add a summary and reset action. Give translated controls a
   complete row instead of squeezing three labels into the original 44px line. */
html[data-bj-lang]:not([data-bj-lang="ko"]) #weddingCatalogFilterDialog .filterPanelWrapper { flex-direction:column; align-items:stretch; }
html[data-bj-lang]:not([data-bj-lang="ko"]) #weddingCatalogFilterDialog .chooseFilterBtnBox { flex:auto; width:100%; }
html[data-bj-lang]:not([data-bj-lang="ko"]) #weddingCatalogFilterDialog .filterResetBtn { flex:0 1 auto; width:auto; max-width:45%; min-height:44px; height:auto; white-space:normal; overflow-wrap:anywhere; }
html[data-bj-lang]:not([data-bj-lang="ko"]) #weddingCatalogFilterDialog .ProdViewBtn { min-height:44px; height:auto; padding:8px 10px; }
html[data-bj-lang]:not([data-bj-lang="ko"]) #weddingCatalogFilterDialog .filterCounter { min-width:0; overflow-wrap:anywhere; }
html[data-bj-lang]:not([data-bj-lang="ko"]) #weddingCatalogFilterDialog .iconSearch,
html[data-bj-lang]:not([data-bj-lang="ko"]) #weddingCatalogFilterDialog .iconReset { flex-shrink:0; }

/* 청첩장 상세 세트 구성 줄 — 왼쪽 «Components and benefits by quantity»(한 줄 고정 · 오른쪽 128px 비움)와
   오른쪽 위에 떠 있는 «See discount benefits»(약 160px)가 겹쳤다. 두 글이 줄을 반쯤씩 나눠 쓰고 길면 두 줄로 감는다. */
html[data-bj-lang]:not([data-bj-lang="ko"]) body.pdp-modern-page .pdp-fullset__summary { max-width: 54%; }
html[data-bj-lang]:not([data-bj-lang="ko"]) body.pdp-modern-page .pdp-fullset__summary-heading,
html[data-bj-lang]:not([data-bj-lang="ko"]) body.pdp-modern-page .pdp-fullset__summary-heading > strong { white-space: normal; }
html[data-bj-lang]:not([data-bj-lang="ko"]) body.pdp-modern-page .pdp-order-discounts > summary { max-width: 44%; }
html[data-bj-lang]:not([data-bj-lang="ko"]) body.pdp-modern-page .pdp-order-discounts > summary strong { white-space: normal; text-align: right; }

@media (min-width: 768px) {
  /* 번역 메뉴도 좁은 화면의 공통 가로 레일을 쓴다. 글을 압축하면 일본어는 글자 중간에서,
     러시아어는 세 줄까지 끊긴다. 메뉴는 고유 폭을 유지하고 넘친 부분은 기존 드래그·터치·키보드로 탐색한다. */
  html[data-bj-lang]:not([data-bj-lang="ko"]) #menu_r2 .top_r2_menu_ul {
    width: auto;
    min-width: 0;
    flex: 1 1 auto;
    margin-right: 0;
    overflow-x: auto;
    overflow-y: hidden;
    scrollbar-width: none;
    scroll-snap-type: x proximity;
  }
  html[data-bj-lang]:not([data-bj-lang="ko"]) #menu_r2 .top_r2_menu_ul::-webkit-scrollbar { display: none; }
  html[data-bj-lang]:not([data-bj-lang="ko"]) #menu_r2 .top_r2_menu_ul > li { flex: 0 0 auto; scroll-snap-align: start; }
  html[data-bj-lang]:not([data-bj-lang="ko"]) #menu_r2 .top_r2_menu_ul > li > a {
    white-space: nowrap;
    line-height: var(--bj-type-nav-line);
    padding-inline: var(--bj-space-1);
  }
}

@media (min-width: 1040px) {
  /* PC 구성품 목록 분류 칸(아홉 칸 같은 폭 약 111px · 이름 한 줄 고정) — «Wedding Meal Tickets»(151px)·«Ceremony Programs» 가 옆 칸을 덮었다(10-04 테스트 서버 영어).
     칸 높이는 68px 그대로(스크롤 계산이 쓴다) — 이름을 13px 로 조금 줄이고 두 줄까지 감는다(그림 36 + 사이 2 + 두 줄 28 = 66px). */
  html[data-bj-lang]:not([data-bj-lang="ko"]) .companionCatalogNav.weddingCatalogContextNav--pc .weddingCatalogContextNav__link { gap: 2px; }
  html[data-bj-lang]:not([data-bj-lang="ko"]) .companionCatalogNav.weddingCatalogContextNav--pc .weddingCatalogContextNav__styleLabel { white-space: normal; text-align: center; overflow-wrap: anywhere; font-size: 13px; line-height: 14px; }
}

/* ── 테스트 서버 실제 일본어 번역(10-04) ──
   띄어쓰기 없는 글(일본어·중국어·태국어)은 «낱말 안에서 줄을 바꾸지 않기»(word-break: keep-all — 한국어 화면 규칙이 629곳)에서
   한 문장이 통째 한 낱말이 되어 줄이 안 바뀐다 — 폰 홈 큰 글이 화면 오른쪽 밖으로(497px 칸이 390px 화면에) · 상세 «お急ぎ制作の場合当日出荷» 가 «…» 로 잘림.
   이 언어 화면에서만 줄 바꿈 규칙을 기본(normal)으로 되돌린다(규칙이 629곳이라 한 곳에서 · 한국어·띄어 쓰는 언어 화면은 그대로). */
/* 언어는 <html lang> 을 물려받은 :lang() 으로 고른다(중국어 zh-Hans·zh-Hant 둘 다 :lang(zh)) — 안에 lang="ko" 로 둔 한국어 글은 그대로 keep-all. */
/* Japanese small kana and punctuation must not start a wrapped line. */
html[data-bj-lang]:not([data-bj-lang="ko"]) :lang(ja) { word-break: normal !important; line-break: strict !important; }
html[data-bj-lang]:not([data-bj-lang="ko"]) :lang(zh) { word-break: normal !important; }
html[data-bj-lang]:not([data-bj-lang="ko"]) :lang(th) { word-break: normal !important; }

/* PC 청첩장 목록 정렬 줄 «찜» 칸 — 52px 고정이라 «お気に入り»(91px)가 옆 «大きく» 단추를 덮었다. 글 길이만큼. */
html[data-bj-lang]:not([data-bj-lang="ko"]) #pl_sort_row .zzimCardTypeBox { width: auto; }

/* PC·폰 구성품 목록 카드 수량·금액 줄 — 한 줄(수량 칸이 줄어듦)이라 «1 set (50 items)» 가 «…» 로 잘렸다. 수량 칸은 줄지 않고 금액이 모자라면 아래 줄로. */
html[data-bj-lang]:not([data-bj-lang="ko"]) .companionCatalogCard__purchase { flex-wrap: wrap; row-gap: 2px; }
/* 번역된 샘플 동작과 상태 표시는 각자의 폭을 유지하고 카드 폭을 넘으면 다음 줄로 흐른다. */
html[data-bj-lang]:not([data-bj-lang="ko"]) .companionCatalogCard__actions { flex-wrap: wrap; column-gap: 10px; }
html[data-bj-lang]:not([data-bj-lang="ko"]) .companionCatalogCard__actions > .companionCatalogCard__sample[data-catalog-card-action] { flex: 0 1 auto; max-width: 100%; height: auto; white-space: normal; overflow-wrap: anywhere; }
html[data-bj-lang]:not([data-bj-lang="ko"]) .companionCatalogCard__actions > .companionCatalogCard__best { flex: 0 0 auto; margin-left: 0; }
html[data-bj-lang]:not([data-bj-lang="ko"]) .companionCatalogCard__quantity { flex-shrink: 0; max-width: 100%; }

/* 상세 총액의 «원» — 외국어 화면은 «₩80,000»(아래 «약 그 나라 돈» 줄·폰 막대와 같은 모양). 총액 글(«80,000원»)은 다른 스크립트가 숫자로 읽으므로(R4)
   글자는 그대로 두고 보이는 모양만 바꾼다: «원» 칸을 숨기고 금액 앞에 ₩. 두 모양 — 총액 글을 금액·단위 칸으로 나눈 화면(.pdp-total-price-*)과
   청첩장 상세 총액 줄(.totalPrice 의 금액 칸 + «원» 칸). 이미 나눈 칸은 앞 규칙만 받는다(₩ 두 번 안 붙게). */
html[data-bj-lang]:not([data-bj-lang="ko"]) .pdp-total-price-unit { display: none; }
html[data-bj-lang]:not([data-bj-lang="ko"]) .pdp-total-price-amount::before { content: "₩"; }
html[data-bj-lang]:not([data-bj-lang="ko"]) .totalPrice > .ompPriceTotal:not(.pdp-total-price-amount)::before { content: "₩"; }
html[data-bj-lang]:not([data-bj-lang="ko"]) .totalPrice > .ompPriceTotal + .fontHighligh:not(.pdp-total-price-unit) { display: none; }
/* 함께 주문 할인가(«80,000원») — 금액 칸 앞에 ₩, 뒤 «원» 칸(.priceWonText · 외국어 응답에서만 감싸는 .pdp-won-unit)은 숨긴다. */
html[data-bj-lang]:not([data-bj-lang="ko"]) .priceDiscountedAmt::before { content: "₩"; }
html[data-bj-lang]:not([data-bj-lang="ko"]) .priceDiscountedAmt + .priceWonText,
html[data-bj-lang]:not([data-bj-lang="ko"]) .priceDiscountedAmt + .pdp-won-unit { display: none; }

/* ── 영어 화면 전체 훑기로 찾은 겹침(10-04) ──
   테스트 서버 진짜 영어 번역으로 PC 160·폰 160 화면을 열어 글끼리 겹침·칸 잘림을 재고, 한국어 화면에도 있는 것은 뺐다. */

@media (min-width: 768px) {
  /* PC 웨딩 소품 목록 정렬 칸 — 104px 고정이라 «Overall popularity» 가 «Overall po…» 로 잘렸다(청첩장 목록 정렬 칸과 같은 손질). */
  html[data-bj-lang]:not([data-bj-lang="ko"]) .catalogControlsSortControl { width: auto; max-width: 220px; }
  /* 같은 줄의 크게·작게 / 찜 — 52px 고정이라 «Small» 이 앞 아이콘 위에 얹히고 «Wishlist» 가 상자를 넘었다. 글 길이만큼 넓어진다. */
  html[data-bj-lang]:not([data-bj-lang="ko"]) .catalogControls__view,
  html[data-bj-lang]:not([data-bj-lang="ko"]) .catalogControls__wishlist { flex: 0 0 auto; width: auto; }
}

/* PC 옵션 상품 동그라미 메뉴 — 이름이 동그라미(60px) 밑에 한 줄 고정으로 떠 있어 «Sealing Wax Stickers»·«Honeymoon Pouches» 가 옆 이름을 덮었다.
   칸 폭(동그라미 + 간격 = 약 105px) 안의 100px 에서 두 줄로 감고, 두 줄째가 다음 줄 동그라미에 닿지 않게 줄 간격을 넓힌다. */
html[data-bj-lang]:not([data-bj-lang="ko"]) .categoryMenuInner .categoryMenuBtn .categoryMenuText {
  top: 67px;
  bottom: auto;
  width: 100px;
  white-space: normal;
  line-height: 15px;
  text-wrap: balance;
}
html[data-bj-lang]:not([data-bj-lang="ko"]) .categoryMenuInner .categoryMenuBtnWrapper { row-gap: 32px; }

/* 폰 옵션 상품 동그라미 띠 — 칸이 54px(+간격 20px)인데 이름 칸은 100px 한 줄이라 «Card envelopes»·«Sealing Stamps» 가 옆 이름을 덮었다.
   칸을 84px 로 넓혀 그 안에서 두 줄로 감고, 두 줄째가 잘리지 않게 띠 높이(126px 고정)를 늘린다. */
html[data-bj-lang]:not([data-bj-lang="ko"]) .menu2_row_top_wrapper { height: 144px; }
html[data-bj-lang]:not([data-bj-lang="ko"]) .menu2_row_top_wrapper ul.tabs li.swiper-slide { width: 84px; margin-right: 4px; }
html[data-bj-lang]:not([data-bj-lang="ko"]) .menu2_row_top_wrapper ul.tabs li.swiper-slide > a { width: 100%; align-items: center; }
html[data-bj-lang]:not([data-bj-lang="ko"]) .menu2_row_top_wrapper .categoryMenuText {
  top: 58px;
  bottom: auto;
  width: 100%;
  height: auto;
  white-space: normal;
  text-align: center;
  line-height: 1.15;
  text-wrap: balance;
}

/* 폰 청첩장 목록 필터 줄 — 필터를 하나라도 고르면 정렬 칸이 54px 고정이 되어 «Most popular» 가 옆 «Wish» 위에 얹혔다. 정렬 칸은 글 길이만큼(개수 칸이 줄어든다). */
html[data-bj-lang]:not([data-bj-lang="ko"]) .filterConditionBox.has-applied-filters { grid-template-columns: 96px minmax(0, 1fr) max-content 44px; }

/* 소품·초대장·감사장 목록 카드의 수량·금액 줄 — 줄 높이가 24px 고정(넘침 숨김)이라 «10 copies ▾ approx. US$9.11» 이 한 줄에 안 들어
   금액이 다음 줄로 내려가면(위 «구성품 목록 카드 수량·금액 줄» 규칙) 아래 «+ Add sample»·«Pick a design…» 을 덮었다. 줄이 글 높이만큼 자란다. */
html[data-bj-lang]:not([data-bj-lang="ko"]) [data-catalog-card-layout="invitation"] [data-catalog-card-commerce] { --catalog-card-commerce-height: auto; --catalog-card-commerce-overflow: visible; }

@media (max-width: 767px) {
  /* 폰 상세 구역 탭 — 네 칸이 똑같이 나뉘고 한 줄 고정이라 «Production & delivery» 가 옆 «Reviews»·«Events» 를 덮었다.
     칸이 글 길이에 맞춰 나뉘고, 그래도 길면 두 줄로 감는다. */
  html[data-bj-lang]:not([data-bj-lang="ko"]) body.pdp-modern-page [data-pdp-section-nav] [data-pdp-section-link] {
    flex: 1 1 auto;
    white-space: normal;
    text-align: center;
    line-height: 17px !important;
    text-wrap: balance;
  }
}

/* 새 디자인 목록 의견 단추 — 한 줄 고정이라 «Leave a comment» 가 단추 밖으로 잘렸다(폰). 단추 높이(42px) 안에서 두 줄로 감는다. */
html[data-bj-lang]:not([data-bj-lang="ko"]) .weddingNewCatalog .weddingNewCard__feedbackActions .weddingNewCard__opinion,
html[data-bj-lang]:not([data-bj-lang="ko"]) .weddingNewCatalog .weddingNewCard__feedbackActions .weddingNewCard__coupon { white-space: normal; line-height: 15px; }

/* ── 7개 언어 화면 훑기(10-05 밤 · 테스트 서버 진짜 번역) ──
   PC 머리: 무료 샘플 칸이 126px 고정이라 긴 이름(러시아어 «Бесплатный образец»)이 왼쪽 메뉴 위로 넘쳤다 — 글 길이만큼.
   왼쪽 메뉴는 가로 레일 안에서 탐색하므로 언어마다 글자를 줄이지 않는다. */
@media (min-width: 900px) {
  html[data-bj-lang]:not([data-bj-lang="ko"]) #menu_r2 #top_r2_right { width: auto; flex: 0 0 auto; }
}
/* 상세 «추가 옵션» 줄(폰): 이름이 두 줄이 되면 개수(«3 шт.»)가 오른쪽 «선택 안 함» 위로 넘쳤다 — 개수는 이름 밑으로. */
html[data-bj-lang]:not([data-bj-lang="ko"]) body.pdp-modern-page .pdp-modern-purchase-surface .pdp-additional-options__heading { flex-wrap: wrap; }
/* 웨딩영상 목록 카드 가격 줄: «청첩장 고객가 약 US$… · 2분 45초»가 한 줄 고정이라 재생시간이 옆 카드 위로 넘쳤다 — 줄바꿈. */
html[data-bj-lang]:not([data-bj-lang="ko"]) .companionCatalogCard__priceSummaryRow { flex-wrap: wrap; row-gap: 2px; }
/* 가격 칸이 글 한 줄 폭(flex 0 0 auto)·높이 24px(넘침 숨김) 고정이라 러시아어·베트남어 웨딩영상 카드에서
   «около 1 771 ₽»가 카드 밖으로 잘렸다(러 16장 중 15 · 베 6) — 칸은 카드 폭까지, 금액은 이름 밑 줄로, 높이는 글만큼. */
html[data-bj-lang]:not([data-bj-lang="ko"]) .companionCatalogCard__price { flex-wrap: wrap; white-space: normal; max-width: 100%; height: auto; }
/* 카드 이름 한 줄 말줄임 — 이름 링크가 flex 라 말줄임표가 안 찍히고 긴 번역 이름이 낱말 중간에서 잘렸다(«…только для в»). 보통 글 흐름으로 «…» 가 찍힌다. */
html[data-bj-lang]:not([data-bj-lang="ko"]) [data-catalog-card-layout="invitation"] [data-catalog-card-title] > a { display: block; }

/* ── 러시아어 목록 겹침 셋(10-06 · 1280·1040 실측) ── */
@media (min-width: 768px) {
  /* 청첩장 목록 분류 줄이 화면 위에 붙었을 때: 무료 샘플 칸이 줄 밖 105px 고정 자리라 «Бесплатный образец»가 옆
     «Карточка с сообщением» 위로 넘쳤다 — 외국어는 샘플 칸도 줄 안의 한 칸으로(글 길이만큼, 왼쪽 여섯 칸이 남은 폭을 나눔). */
  html[data-bj-lang]:not([data-bj-lang="ko"]) .weddingCatalogContextNav--pc.ui-fixed .weddingCatalogContextNav__utilityLink--sample { position: static; width: auto; }
  /* 목록 도구 줄: 왼쪽 묶음이 줄어들지 않아 «Выгода при заказе набора →»가 오른쪽 «Дизайнов в наборе»를 덮었다.
     혜택 링크만 줄어들며 두 줄로 감긴다(화살표는 끝 낱말 뒤에 붙어서). */
  html[data-bj-lang]:not([data-bj-lang="ko"]) #pl_sort_row .productFilterRowLeft .weddingCatalogToolbarActions { flex: 0 1 auto; min-width: 0; }
  html[data-bj-lang]:not([data-bj-lang="ko"]) #pl_sort_row .productFilterRowLeft .weddingCatalogToolbarActions__link--benefit { display: block; flex: 0 1 auto; min-width: 0; min-height: 0; white-space: normal; line-height: 18px; text-wrap: balance; }
  /* 웨딩영상 목록 분류 줄: 일곱 칸 한 줄 고정이라 «Благодарность на церемонии»가 양옆 칸 이름을 덮었다 — 두 줄로 감고 칸이 그만큼 자란다. */
  html[data-bj-lang]:not([data-bj-lang="ko"]) .companionCatalog--video .companionCatalog__categoryLink { height: auto; min-height: 68px; }
  html[data-bj-lang]:not([data-bj-lang="ko"]) .companionCatalog--video .companionCatalog__categoryLabel { white-space: normal; line-height: 17px; text-wrap: balance; overflow-wrap: anywhere; }
}
/* 청첩장 목록 첫 칸(직접 만드는 청첩장): 제목 높이가 한 줄(24px) 고정이라 세 줄 제목이 그림·가격 줄 위로 넘쳤다.
   한 줄 높이는 바닥으로 두고 제목이 자란다. 화살표가 끝 낱말 뒤에 붙도록 보통 글 흐름으로. */
html[data-bj-lang]:not([data-bj-lang="ko"]) .cardTemplateEntry[data-card-template-entry="wedding"] .cardTemplateEntry__caption strong { display: block; height: auto; min-height: var(--bj-catalog-title-line); }

/* 상세 «디자인 옵션» 탭 줄(PC): 한국어는 일곱 탭이 432px 에 꼭 맞아 넘김 화살표를 꺼 두었다. 외국어는 28~103px 넘쳐
   «Углы»·«Форма» 같은 끝 탭이 끌기 말고는 닿지 않았다 — 마우스 쓰는 화면에서만 원래 있던 이전·다음 화살표를 보인다
   (가릴 게 없으면 스크립트가 끄고 투명하게 둔다 · 폰은 밀기 그대로). */
@media (hover: hover) and (pointer: fine) {
  html[data-bj-lang]:not([data-bj-lang="ko"]) body.pdp-modern-page .pdp-modern-customizer .pdp-customizer-menu-arrow { display: inline-flex !important; }
}

/* (10-07) 인사말 예문 읽기 도움 — 예문은 카드에 그대로 인쇄되는 한국어라 원문을 그대로 두고, 번역을 원문 문단 끝에 한 덩이로 붙인다
   (lib/i18n_db_content.inc bj_i18n_dbc_greeting_aid_html). 원문보다 옅고 작게, 낱말 단위로 감긴다. */
html[data-bj-lang]:not([data-bj-lang="ko"]) .greetingSearch__aid { display: block; margin-top: var(--bj-space-2); color: var(--bj-muted); font-size: var(--bj-type-caption); line-height: var(--bj-type-caption-line); letter-spacing: 0; word-break: normal; overflow-wrap: anywhere; }
html[data-bj-lang]:not([data-bj-lang="ko"]) .greetingSearch__aidNote { margin: 0 0 var(--bj-space-3); color: var(--bj-muted); font-size: var(--bj-type-caption); line-height: var(--bj-type-caption-line); }
@media (max-width: 767px) { html[data-bj-lang]:not([data-bj-lang="ko"]) .greetingSearch__aidNote { margin-right: 16px; margin-left: 16px; } }   /* 폰은 목록과 같은 16px 여백(greeting-renewal.css) */
/* (10-07) 고객센터 공지 펼친 본문: 표 칸이 줄바꿈 금지(white-space: nowrap)를 물려줘 번역 본문의 긴 줄이 폰 폭 밖으로 잘렸다
   (한국어 줄은 관리자가 넣은 <br> 로 짧게 끊겨 있다). 외국어 화면에서만 본문이 칸 폭에서 감긴다. */
html[data-bj-lang]:not([data-bj-lang="ko"]) .notice_table_wrapper .notice_memo_inner { white-space: normal; word-break: normal !important; overflow-wrap: anywhere; }
/* (10-07) 자주 묻는 질문 제목(폰): 한국어는 한 줄 말줄임이 정본이지만 번역 질문은 두 배 길어 뜻이 잘렸다 — 외국어는 줄을 감는다. */
html[data-bj-lang]:not([data-bj-lang="ko"]) .cs-renewal .faq-question__label { white-space: normal; overflow: visible; text-overflow: clip; overflow-wrap: anywhere; }
/* 제작 일정 요약: 짧은 한국어 제목용 고정 열 대신 제목 아래에 설명을 배치해 긴 번역이 옆 칸을 덮지 않게 한다. */
html[data-bj-lang]:not([data-bj-lang="ko"]) .process-schedule-summary { grid-template-columns: 32px minmax(0, 1fr); overflow-wrap: anywhere; }
html[data-bj-lang]:not([data-bj-lang="ko"]) .process-schedule-summary h3 { min-width: 0; white-space: normal; }
html[data-bj-lang]:not([data-bj-lang="ko"]) .process-schedule-summary-copy { grid-column: 2; }
/* (10-07) 인사말 예문 종류 이름(번역 greeting.type): 한국어는 짧은 이름 한 줄(white-space: nowrap)이 정본이지만 번역 이름은 칸보다 길어
   폰 두 칸 격자에서 화면 밖으로 밀려 잘리고 쪽 전체가 옆으로 밀렸다 — 외국어는 칸 안에서 낱말 단위로 감는다(PC 가운데·폰 왼쪽 정렬은 그대로). */
html[data-bj-lang]:not([data-bj-lang="ko"]) .greetingSearch__typeLink { min-width: 0; padding-top: var(--bj-space-1); padding-bottom: var(--bj-space-1); white-space: normal; overflow-wrap: anywhere; text-align: center; }
@media (max-width: 767px) { html[data-bj-lang]:not([data-bj-lang="ko"]) .greetingSearch__typeLink { text-align: left; } }
/* (10-10) 옛 모바일 청첩장(V4) 계좌 «카카오페이 송금» 창: 안내 «송금하실 때 예금주를 꼭 확인해 주세요»가 그림(deposit_comfirm.jpg 809×898)에 구워져 있다 —
   외국어 하객에게만 그 글자 자리(그림 속 휴대폰 화면의 빈 흰 바탕, 이름 칸 아래)를 덮고 하객 언어 글(i/bank_txt.php .bank_deposit_popup_note)을 얹는다.
   자리는 그림 크기에 비례(%)라 창 폭이 달라도 같은 곳이다. V4 화면은 디자인 시스템 시트를 싣지 않아 토큰마다 같은 값의 대체값을 둔다. */
html[data-bj-lang]:not([data-bj-lang="ko"]) .bank_deposit_popup_wrapper .img_wrapper { position: relative; }
html[data-bj-lang]:not([data-bj-lang="ko"]) .bank_deposit_popup_wrapper .bank_deposit_popup_note { position: absolute; top: 34%; bottom: 38%; left: 24.5%; right: 24.5%; margin: 0; display: flex; align-items: center; justify-content: center; text-align: center; background: var(--bj-clean, #fff); color: var(--bj-ink, #181817); font-size: 13px; line-height: 1.4; font-weight: 700; word-break: normal; overflow-wrap: anywhere; }
/* (10-10) 옛 모바일 청첩장(V4) 4번 테마 축하 연락처: 상자 머리 «신랑»·«신부»는 테마 시트가 CSS 글(::before — 한글 이스케이프)로 찍어 키가 닿지 않았다 —
   외국어 하객 응답에만 i/contact.php 가 하객 언어 이름표 속성(data-bj-side-label)을 달고, 여기서 그 속성을 찍는다(한국어 응답엔 속성도 이 시트도 없다). */
html[data-bj-lang]:not([data-bj-lang="ko"]) .contact_inner[data-bj-side-label]::before { content: attr(data-bj-side-label); }
/* (10-10) 옛 모바일 청첩장(V4) 화환 «축하 화환 간편 배송» 단추: 테마마다 150×38px 고정 알약(한 줄 높이 36px)이라 긴 번역은 두 줄째가 단추 밖으로 떨어졌다 —
   외국어는 글 길이만큼 넓어지고(화면 폭 안) 넘치면 단추 안에서 줄을 감는다. V4 화면은 디자인 시스템 시트를 싣지 않아 토큰마다 같은 값의 대체값을 둔다. */
html[data-bj-lang]:not([data-bj-lang="ko"]) .flower_wreath_wrapper > a.aff_banner > div { width: -webkit-fit-content; width: fit-content; min-width: 150px; max-width: 100%; height: auto; min-height: 38px; line-height: 1.4; padding: var(--bj-space-1, 8px) var(--bj-space-2, 16px); overflow-wrap: anywhere; }
