/* 오시는 길 — RSVP보다 연한 배경 (`App.css`) */
#directions.section.directions {
  background: color-mix(in srgb, var(--body-palette-tone-en, rgb(220 220 220)) 9%, rgb(255 255 255));
  background-image: none;
  --directions-body: color-mix(in srgb, var(--ink) 94%, rgb(34 31 28) 6%);
  --directions-soft: color-mix(in srgb, var(--muted) 78%, var(--ink) 22%);
}

/* 오시는 길 제목 — `.rsvp-attendance__title`과 동일 톤·타이포 */
#directions .wedding-section__title > h2 {
  margin: 0 0 12px;
  font-size: 16px;
  font-weight: 600;
  letter-spacing: 0.04em;
  color: var(--directions-body, var(--ink));
}

.directions__inner {
  max-width: min(22rem, 100%);
  margin: 0 auto;
}

.directions__venue {
  margin: 0 0 8px;
  font-size: 15px;
  font-weight: 600;
  text-align: center;
  color: var(--directions-body, var(--ink));
}

.directions__address {
  margin: 0 0 16px;
  font-size: 14px;
  line-height: 1.55;
  text-align: center;
  color: var(--directions-soft, var(--muted));
}

.directions__address-row {
  position: relative;
  width: 100%;
  margin: 0 0 16px;
  box-sizing: border-box;
}

.directions__address-row .directions__address {
  margin: 0;
}

/* 주소 줄바꿈·가운데 정렬은 아이콘 없을 때와 동일 — 아이콘만 흐름 밖 */
.directions__address-copy-abs {
  position: absolute;
  top: 50%;
  right: 0;
  transform: translateY(-50%);
  line-height: 0;
  z-index: 1;
}

.directions__address-copy-abs .heart-accounts__copy-inline {
  margin-left: 0;
  color: var(--directions-soft, var(--muted));
}

.directions__address-copy-abs .heart-accounts__copy-inline:hover {
  color: #b08d57;
}

.directions__address-copy-abs .heart-accounts__copy-inline:focus-visible {
  outline: 2px solid #b08d57;
  outline-offset: 2px;
  border-radius: 999px;
}

button.directions__address.directions__address--copy {
  display: block;
  width: 100%;
  max-width: 100%;
  margin-left: auto;
  margin-right: auto;
  font: inherit;
  letter-spacing: inherit;
  text-align: center;
  border: none;
  background: none;
  padding: 0;
  cursor: pointer;
  color: inherit;
  word-break: keep-all;
  overflow-wrap: break-word;
}

button.directions__address.directions__address--copy:hover {
  color: #b08d57;
}

button.directions__address.directions__address--copy:focus-visible {
  outline: 2px solid #b08d57;
  outline-offset: 3px;
  border-radius: 4px;
}

.directions__note {
  margin: 0 0 20px;
  font-size: 14px;
  line-height: 1.65;
  color: var(--directions-body, var(--ink));
  word-break: keep-all;
  overflow-wrap: break-word;
}

.directions__note p {
  margin: 0 0 0.5em;
}

.directions__note p:last-child {
  margin-bottom: 0;
}

.directions__maplink {
  display: block;
  width: fit-content;
  margin: 0 auto;
  padding: 10px 20px;
  border-radius: 999px;
  font-size: 14px;
  font-weight: 500;
  text-decoration: none;
  color: var(--directions-body, var(--ink));
  background: #fff;
  border: 1px solid var(--body-palette-ui-border, var(--line));
  box-shadow: 0 4px 14px rgb(0 0 0 / 0.06);
}

.directions__maplink:hover {
  opacity: 0.92;
  border-color: var(--body-palette-ui-border-hover, rgb(0 0 0 / 0.12));
}

.directions__mapfigure {
  margin: 28px auto 0;
  max-width: min(22rem, 100%);
}

.directions__mapimage {
  display: block;
  width: 100%;
  height: auto;
  border-radius: 14px;
  border: 1px solid rgb(0 0 0 / 0.08);
  box-shadow: 0 8px 24px rgb(0 0 0 / 0.08);
}

/* WeddingBundleImage — 템플릿 미리보기: 타이틀·지도 미업로드 시 회색 면 */
.wedding-bundle-preview-gray {
  box-sizing: border-box;
  display: block;
  width: 100%;
  min-height: clamp(8.5rem, 36vw, 11rem);
  aspect-ratio: 4 / 3;
  background: linear-gradient(148deg, #c8c8c8 0%, #9e9e9e 52%, #b2b2b2 100%);
}

.closing-photo .wedding-bundle-preview-gray {
  aspect-ratio: 16 / 10;
  min-height: clamp(9.5rem, 44vw, 14rem);
}

/* 지도 아래 — 카카오 / 네이버 길찾기 진입 (한 줄·동일 너비) */
.directions-nav {
  display: flex;
  flex-wrap: nowrap;
  align-items: stretch;
  justify-content: stretch;
  gap: 8px;
  margin: 20px auto 0;
  max-width: min(22rem, 100%);
  width: 100%;
}

.directions-nav__btn {
  display: inline-flex;
  flex: 1 1 0;
  min-width: 0;
  align-items: center;
  justify-content: center;
  gap: 6px;
  min-height: 46px;
  padding: 8px 6px;
  border-radius: 12px;
  border: 1px solid var(--body-palette-ui-border, rgb(0 0 0 / 0.08));
  background: #fff;
  box-shadow: 0 4px 14px rgb(0 0 0 / 0.07);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: -0.02em;
  color: var(--directions-body, var(--ink));
  text-decoration: none;
  transition:
    box-shadow 0.2s ease,
    transform 0.15s ease,
    border-color 0.2s ease;
}

.directions-nav__btn:hover {
  box-shadow: 0 6px 18px rgb(0 0 0 / 0.1);
  border-color: var(--body-palette-ui-border-hover, rgb(0 0 0 / 0.12));
}

.directions-nav__btn:active {
  transform: scale(0.98);
}

.directions-nav__btn:focus-visible {
  outline: 2px solid #b08d57;
  outline-offset: 2px;
}

.directions-nav__icon {
  display: flex;
  flex-shrink: 0;
  line-height: 0;
}

.directions-nav__icon-img--kakao,
.directions-nav__icon-img--naver {
  width: 28px;
  height: 28px;
  display: block;
  object-fit: contain;
  border-radius: 8px;
}

.directions-nav__icon-svg {
  display: block;
  width: 28px;
  height: 28px;
  flex-shrink: 0;
}

.directions-nav__label {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  min-width: 0;
}

/* 길찾기 버튼 아래 — 교통수단별 토글(`<details name>`: 한 번에 한 섹션만 펼침, 지원 브라우저) */
.directions-transport {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin: 20px auto 0;
  max-width: min(22rem, 100%);
}

.directions-transport__item {
  border: 1px solid var(--body-palette-ui-border, rgb(0 0 0 / 0.1));
  border-radius: 12px;
  background: #fff;
  box-shadow: 0 2px 10px rgb(0 0 0 / 0.04);
  overflow: hidden;
}

.directions-transport__summary {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 14px 16px;
  border: none;
  background: transparent;
  font-family: inherit;
  font-size: 15px;
  font-weight: 600;
  color: var(--directions-body, var(--ink));
  letter-spacing: 0.02em;
  cursor: pointer;
  user-select: none;
}

.directions-transport__summary::after {
  content: "";
  width: 0.5em;
  height: 0.5em;
  border-right: 2px solid var(--directions-soft, var(--muted));
  border-bottom: 2px solid var(--directions-soft, var(--muted));
  transform: rotate(45deg);
  flex-shrink: 0;
  transition: transform 0.2s ease;
}

.directions-transport__item--open .directions-transport__summary::after {
  transform: rotate(225deg);
  margin-top: 4px;
}

.directions-transport__item--open .directions-transport__summary {
  border-bottom: 1px solid var(--body-palette-ui-border, rgb(0 0 0 / 0.06));
}

.directions-transport__panel {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows 0.42s cubic-bezier(0.22, 1, 0.32, 1);
}

.directions-transport__item--open .directions-transport__panel {
  grid-template-rows: 1fr;
}

.directions-transport__item:not(.directions-transport__item--open) .directions-transport__panel {
  pointer-events: none;
}

.directions-transport__panel-inner {
  min-height: 0;
  overflow: hidden;
}

.directions-transport__body {
  padding: 12px 16px 16px;
  opacity: 0;
  transform: translateY(-6px);
  transition: opacity 0.28s ease, transform 0.38s cubic-bezier(0.22, 1, 0.32, 1);
}

.directions-transport__item--open .directions-transport__body {
  opacity: 1;
  transform: translateY(0);
}

.directions-transport__bullets {
  margin: 0;
  padding: 0 0 0 1.1em;
  font-size: 14px;
  line-height: 1.7;
  color: var(--directions-body, var(--ink));
  word-break: keep-all;
  overflow-wrap: break-word;
}

.directions-transport__bullets li {
  margin: 0 0 0.4em;
}

.directions-transport__bullets li:last-child {
  margin-bottom: 0;
}

.directions-transport__note {
  margin: 0.75em 0 0;
  font-size: 14px;
  line-height: 1.65;
  color: var(--directions-soft, var(--muted));
  word-break: keep-all;
  overflow-wrap: break-word;
}

.directions-transport__bullets + .directions-transport__note {
  margin-top: 0.9em;
}

@media (prefers-reduced-motion: reduce) {
  .directions-transport__panel,
  .directions-transport__body {
    transition: none;
  }

  .directions-transport__item--open .directions-transport__body {
    opacity: 1;
    transform: none;
  }

  .directions-transport__item:not(.directions-transport__item--open) .directions-transport__body {
    opacity: 0;
  }
}

/* 오시는 길 위 `HeartAccountsSection.tsx` */
.section.heart-accounts h2#heart-accounts-heading,
.heart-accounts__h2 {
  margin: 0 0 20px;
  font-size: 18px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-align: center;
  color: var(--ink);
}

.heart-accounts__box {
  max-width: min(22rem, 100%);
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  gap: 14px;
}

/* `createPortal` — 복사 완료 하단 고정 토스트 (스크롤과 무관) */
.heart-accounts__toast {
  position: fixed;
  left: 50%;
  bottom: max(20px, env(safe-area-inset-bottom));
  z-index: 220;
  transform: translateX(-50%);
  width: min(340px, calc(100vw - 28px));
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0;
  padding: 11px 12px;
  border-radius: 12px;
  border: 1px solid var(--line);
  background: var(--paper);
  color: var(--ink);
  box-shadow: 0 14px 34px rgb(0 0 0 / 0.16);
  backdrop-filter: blur(6px);
  animation: heart-acc-toast-in 0.18s ease-out forwards;
}

.heart-accounts__toast--closing {
  animation: heart-acc-toast-out 0.4s ease-in forwards;
}

@keyframes heart-acc-toast-in {
  from {
    opacity: 0;
    transform: translateX(-50%) translateY(14px);
  }

  to {
    opacity: 1;
    transform: translateX(-50%) translateY(0);
  }
}

@keyframes heart-acc-toast-out {
  from {
    opacity: 1;
    transform: translateX(-50%) translateY(0);
  }

  to {
    opacity: 0;
    transform: translateX(-50%) translateY(18px);
  }
}

@media (prefers-reduced-motion: reduce) {
  .heart-accounts__toast,
  .heart-accounts__toast--closing {
    animation: none;
  }
}

.heart-accounts__toast-ic {
  flex-shrink: 0;
  color: #b08d57;
  line-height: 0;
}

.heart-accounts__toast-title {
  flex: 1;
  margin: 0;
  font-size: 13px;
  font-weight: 600;
  letter-spacing: -0.01em;
}

.heart-accounts__toast-close {
  flex-shrink: 0;
  border: none;
  background: transparent;
  color: var(--muted);
  font-family: inherit;
  font-size: 12px;
  font-weight: 500;
  padding: 4px 6px;
  cursor: pointer;
}

/* `HeartAccountsSection` — 바깥 블록만 팔레트 테두리, 안쪽·토글·펼침 면은 흰색 */
.heart-accounts__side {
  width: 100%;
  min-width: 0;
  padding: 0 16px;
  border-radius: 12px;
  border: 1px solid var(--body-palette-ui-border, rgb(224 224 224));
  background: #fff;
  box-shadow: none;
}

.heart-accounts__side:first-of-type {
  padding-top: 0;
}

.heart-accounts__side:last-of-type {
  padding-bottom: 0;
}

.heart-accounts__side--empty {
  padding: 0 16px;
}

.heart-accounts__acc-panel {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows 0.45s cubic-bezier(0.22, 1, 0.32, 1);
}

.heart-accounts__item--open .heart-accounts__acc-panel {
  grid-template-rows: 1fr;
}

.heart-accounts__item:not(.heart-accounts__item--open) .heart-accounts__acc-panel {
  pointer-events: none;
}

.heart-accounts__acc-inner {
  min-height: 0;
  overflow: hidden;
}

.heart-accounts__acc-body {
  padding: 0 4px 16px;
  background: #fff;
  opacity: 0;
  transform: translateY(-6px);
  transition: opacity 0.32s ease, transform 0.4s cubic-bezier(0.22, 1, 0.32, 1);
}

.heart-accounts__item--open .heart-accounts__acc-body {
  opacity: 1;
  transform: translateY(0);
}

.heart-accounts__side-body {
  display: flex;
  flex-direction: column;
  gap: 16px;
  padding-top: 2px;
  background: #fff;
}

.heart-accounts__trigger {
  width: 100%;
  min-height: 3.5rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 1.1rem 4px;
  box-sizing: border-box;
  border: none;
  border-radius: 0;
  background: #fff;
  font-family: inherit;
  font-size: 15px;
  font-weight: 600;
  text-align: left;
  color: rgb(68 68 68);
  cursor: pointer;
}

.heart-accounts__trigger-text {
  flex: 1;
  min-width: 0;
  letter-spacing: 0.02em;
}

.heart-accounts__chev {
  flex-shrink: 0;
  font-size: 10px;
  color: rgb(128 128 128);
  transition: transform 0.2s ease;
  display: inline-block;
}

.heart-accounts__chev--open {
  transform: rotate(-180deg);
}

@media (prefers-reduced-motion: reduce) {
  .heart-accounts__acc-panel,
  .heart-accounts__acc-body {
    transition: none;
  }

  .heart-accounts__item--open .heart-accounts__acc-body {
    opacity: 1;
    transform: none;
  }

  .heart-accounts__item:not(.heart-accounts__item--open) .heart-accounts__acc-body {
    opacity: 0;
  }
}

.heart-accounts__card {
  padding: 14px 12px 16px;
  border-radius: 12px;
  background: #fff;
  border: none;
  box-shadow: 0 4px 18px rgb(0 0 0 / 0.08);
}

.heart-accounts__sublabel {
  margin: 0 0 12px;
  font-size: 13px;
  font-weight: 600;
  color: rgb(88 88 88);
  letter-spacing: 0.04em;
}

.heart-accounts__fields {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin: 0 0 12px;
}

.heart-accounts__field {
  display: flex;
  align-items: center;
  gap: 4px 10px;
  margin: 0;
  font-size: 14px;
  line-height: 1.5;
  color: rgb(72 72 72);
}

.heart-accounts__v {
  flex: 1 1 12em;
  min-width: 0;
}

.heart-accounts__v--number {
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.04em;
}

.heart-accounts__copy-inline {
  margin-left: auto;
  width: 30px;
  height: 30px;
  border: none;
  border-radius: 999px;
  background: transparent;
  color: rgb(128 128 128);
  display: grid;
  place-items: center;
  cursor: pointer;
}

.heart-accounts__copy-inline:hover {
  color: rgb(68 68 68);
  background: rgb(40 40 40 / 0.06);
}

.heart-accounts__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.heart-accounts__btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 40px;
  padding: 0 14px;
  border-radius: 9px;
  font-family: inherit;
  font-size: 13px;
  font-weight: 500;
  border: none;
  background: #fff;
  color: rgb(68 68 68);
  text-decoration: none;
  cursor: pointer;
  box-shadow: 0 1px 4px rgb(0 0 0 / 0.08);
  transition: background 0.15s ease, box-shadow 0.15s ease;
}

.heart-accounts__btn:hover {
  background: rgb(250 250 250);
  box-shadow: 0 2px 10px rgb(0 0 0 / 0.1);
}

.heart-accounts__btn--kakao {
  background: #fee500;
  border: 1px solid #f0d000;
  box-shadow: 0 1px 4px rgb(0 0 0 / 0.12);
  color: var(--stage);
}

.heart-accounts__btn--kakao:hover {
  background: #ffe100;
  border-color: #e6c200;
  box-shadow: 0 2px 8px rgb(0 0 0 / 0.14);
}

.heart-accounts__empty {
  margin: 0;
  font-size: 14px;
  color: var(--muted);
  text-align: center;
  padding: 0;
}

