@charset "UTF-8";
/* =========================================================
   비짓강남 리디자인 시안 — page-plan.css (여행계획 페이지 전용)
   - style.css · sub.css 다음에 불러온다. 토큰(--ink, --blue, --mint, --pink …)만 사용.
   목차: 1. 공통 보조  2. 관광지도  3. 가이드북  4. 관광안내소 · 체크리스트  5. FAQ
   ========================================================= */

/* ---------- 1. 공통 보조 ---------- */
.btn--sm { min-height: 48px; padding: 0 20px; gap: 8px; font-size: 15px; }

/* ---------- 2. 관광지도 (직접 그린 개념도) ---------- */
.tmap { display: grid; gap: 28px; }
.tmap__figure { margin: 0; }
.tmap__canvas {
  position: relative; overflow: hidden; border-radius: var(--radius-lg);
  background: radial-gradient(70% 80% at 85% 15%, #3D57FF 0%, rgba(61, 87, 255, 0) 70%), var(--blue);
}
.tmap__svg { display: block; width: 100%; height: auto; aspect-ratio: 800 / 560; }
.tmap__river { fill: rgba(159, 255, 227, .24); }
.tmap__area { fill: rgba(255, 255, 255, .06); stroke: rgba(255, 255, 255, .5); stroke-width: 2; stroke-dasharray: 6 8; stroke-linejoin: round; }
.tmap__road { fill: none; stroke: rgba(255, 255, 255, .14); stroke-width: 10; stroke-linecap: round; }
.tmap__stream { fill: none; stroke: rgba(159, 255, 227, .36); stroke-width: 20; stroke-linecap: round; }
.tmap__hills { fill: rgba(159, 255, 227, .22); }
.tmap__water-label { fill: var(--mint); font-family: var(--font); font-size: 15px; font-weight: 700; letter-spacing: .02em; }
.tmap__compass circle { fill: rgba(255, 255, 255, .1); stroke: rgba(255, 255, 255, .55); stroke-width: 1.5; }
.tmap__compass path { fill: var(--mint); }
.tmap__compass text { fill: #fff; font-family: var(--font); font-size: 15px; font-weight: 800; text-anchor: middle; dominant-baseline: central; }

.tmap-spot { cursor: pointer; transition: opacity .2s; }
.tmap-spot__ring { fill: none; stroke: var(--mint); stroke-width: 3; opacity: 0; transition: opacity .2s; transform-box: fill-box; transform-origin: center; }
.tmap-spot__dot { fill: var(--mint); stroke: var(--blue); stroke-width: 4; transition: fill .2s; }
.tmap-spot__no { fill: var(--ink); font-family: var(--font); font-size: 17px; font-weight: 800; text-anchor: middle; dominant-baseline: central; pointer-events: none; }
.tmap-spot__label {
  fill: #fff; font-family: var(--font); font-size: 17px; font-weight: 700; text-anchor: middle;
  paint-order: stroke; stroke: var(--blue); stroke-width: 6px; stroke-linejoin: round;
}
.tmap-spot:hover .tmap-spot__dot { fill: #fff; }
.tmap-spot.is-active .tmap-spot__dot { fill: var(--pink); }
.tmap-spot.is-active .tmap-spot__ring { opacity: 1; }
.tmap-spot.is-active .tmap-spot__label { fill: var(--mint); }
.tmap.has-active .tmap-spot:not(.is-active) { opacity: .6; }
@media (prefers-reduced-motion: no-preference) {
  .tmap-spot.is-active .tmap-spot__ring { animation: tmapPulse 1.1s ease-out 2; }
}
@keyframes tmapPulse { from { transform: scale(.6); opacity: 1; } to { transform: scale(1.35); opacity: 0; } }
/* 좁은 화면: 이름표 대신 큰 번호 (오른쪽/아래 버튼 번호와 짝) */
@media (max-width: 767.98px) {
  .tmap-spot__label { display: none; }
  .tmap-spot__dot { r: 27px; }
  .tmap-spot__ring { r: 40px; }
  .tmap-spot__no { font-size: 26px; }
  .tmap__water-label { font-size: 22px; }
}
.tmap__cap { display: flex; align-items: center; gap: 8px; margin-top: 12px; color: var(--gray); font-size: 14px; font-weight: 600; }
.tmap__cap .ico { color: var(--blue); }

.tmap__heading { font-size: 18px; font-weight: 800; margin-bottom: 14px; }
.spot-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.spot-btn {
  width: 100%; height: 100%; display: flex; align-items: center; gap: 10px;
  min-height: 48px; padding: 6px 14px 6px 6px; border-radius: 999px;
  border: 1.5px solid var(--line-strong); background: #fff;
  font-size: 15px; font-weight: 600; line-height: 1.3; text-align: left;
  transition: background-color .2s, border-color .2s, color .2s;
}
.spot-btn__no {
  flex: none; width: 32px; height: 32px; border-radius: 50%; display: grid; place-items: center;
  background: var(--mint); color: var(--ink); font-size: 14px; font-weight: 800; font-variant-numeric: tabular-nums;
}
.spot-btn:hover { border-color: var(--ink); }
.spot-btn[aria-pressed="true"] { background: var(--ink); border-color: var(--ink); color: #fff; }
.spot-btn[aria-pressed="true"] .spot-btn__no { background: var(--pink); color: var(--ink); }

.spot-panel { margin-top: 20px; padding: 24px; border-radius: var(--radius-lg); background: var(--mint-soft); min-height: 132px; }
.no-js .spot-panel { display: none; }
.spot-panel__intro { display: flex; align-items: flex-start; gap: 12px; font-size: 16px; font-weight: 600; line-height: 1.6; }
.spot-panel__intro .ico { flex: none; margin-top: 2px; color: var(--blue); width: 24px; height: 24px; }

/* 장소 정보 (패널과 목록 공통) */
.spot-info__no { color: var(--blue); font-size: 12px; font-weight: 800; letter-spacing: .14em; }
.spot-info__name { margin-top: 2px; font-size: 22px; font-weight: 800; letter-spacing: -.02em; line-height: 1.35; }
.spot-info__desc { margin-top: 8px; color: #333; font-size: 15px; line-height: 1.65; }
.spot-info__tags { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 12px; }
.spot-info__tags li { padding: 3px 10px; border-radius: 999px; background: #fff; font-size: 13px; font-weight: 600; }
.spot-info__links { display: flex; flex-wrap: wrap; gap: 0 18px; margin-top: 10px; }
.spot-info__links a { display: inline-flex; align-items: center; gap: 6px; min-height: 44px; color: var(--blue); font-size: 15px; font-weight: 700; }
.spot-info__links a:hover { text-decoration: underline; text-underline-offset: 4px; }
.spot-info__links .ico { transition: transform .2s var(--ease); }
.spot-info__links a:hover .ico { transform: translateX(4px); }

/* 목록으로 보기 */
.tmap-list { margin-top: 28px; padding-top: 8px; border-top: 1px solid var(--line-strong); }
.tmap-list summary {
  display: inline-flex; align-items: center; gap: 8px; min-height: 48px; padding-right: 8px;
  cursor: pointer; list-style: none; font-size: 16px; font-weight: 700; border-radius: 12px;
}
.tmap-list summary::-webkit-details-marker { display: none; }
.tmap-list summary .ico { transition: transform .2s var(--ease); }
.tmap-list[open] summary .ico { transform: rotate(180deg); }
.tmap-list summary:hover { color: var(--blue); }
.spot-items { display: grid; gap: 12px; margin-top: 12px; }
.spot-items .spot-info { padding: 20px 22px; border-radius: 20px; border: 1px solid var(--line-strong); background: #fff; }
.spot-items .spot-info__name { font-size: 19px; }
.spot-items .spot-info__tags li { background: var(--line); }

@media (min-width: 768px) {
  .spot-list { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .spot-items { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 1280px) {
  .tmap { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 48px; align-items: start; }
  .spot-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .spot-panel { padding: 28px 30px; min-height: 248px; }
  .spot-items { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

/* ---------- 3. 가이드북 ---------- */
.guide { display: grid; gap: 40px; }
.guide__books { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; max-width: 520px; }
.gbook { margin: 0; }
.gbook__cover {
  position: relative; isolation: isolate; overflow: hidden; aspect-ratio: 3 / 4;
  display: flex; flex-direction: column; justify-content: space-between; gap: 12px;
  padding: 18px 16px 20px 22px; border-radius: 6px 18px 18px 6px; color: #fff;
  box-shadow: 0 26px 40px -26px rgba(17, 17, 17, .65), inset 7px 0 0 rgba(255, 255, 255, .14);
}
.gbook__cover--ink { background: var(--ink); }
.gbook__cover--blue { background: var(--blue); }
.gbook__cover::before {
  content: ""; position: absolute; right: -14%; bottom: -14%; z-index: -1;
  width: 52%; aspect-ratio: 1; border-radius: 50%; background: var(--mint);
}
.gbook__cover--blue::before { background: var(--pink); }
.gbook__cover::after {
  content: ""; position: absolute; inset: 0; z-index: -2;
  background: radial-gradient(rgba(255, 255, 255, .1) 1px, transparent 1.6px) 0 0 / 5px 5px;
}
.gbook__top { padding-right: 48px; font-size: 10px; font-weight: 800; letter-spacing: .16em; line-height: 1.5; color: var(--mint); } /* 오른쪽 언어 배지와 겹치지 않게 */
.gbook__wm { align-self: flex-start; font-size: clamp(24px, 7vw, 40px); }
.gbook__title { max-width: 60%; font-size: clamp(16px, 4.4vw, 24px); font-weight: 900; letter-spacing: -.01em; line-height: .95; }
.gbook__lang {
  position: absolute; top: 14px; right: 14px; padding: 2px 8px; border-radius: 999px;
  border: 1.5px solid currentColor; font-size: 10px; font-weight: 800; letter-spacing: .1em; line-height: 1.5;
}
.gbook__cap { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 8px; margin-top: 14px; font-size: 15px; font-weight: 700; }
.guide-toc__no { margin-right: 10px; color: var(--blue); font-size: 13px; font-weight: 800; font-variant-numeric: tabular-nums; }
.guide__note { margin-top: 24px; }
@media (min-width: 768px) {
  .guide__books { gap: 24px; }
  .gbook__cover { padding: 24px 22px 26px 28px; }
  .gbook__top { font-size: 11px; }
}
@media (min-width: 1280px) {
  .guide { grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: 88px; align-items: center; }
  .gbook:nth-child(2) { transform: translateY(32px); }
  .gbook__wm { font-size: 44px; }
  .gbook__title { font-size: 26px; }
}

/* ---------- 4. 관광안내소 · 연락처 · 체크리스트 ---------- */
.info-note { margin-top: 24px; }
/* 태블릿 3열 배치는 sub.css .features--3 공통 규칙이 처리 */
.info-grid { display: grid; gap: 48px; }
.contact-list dd { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 10px; }
.info-list dd a.contact-list__num { font-size: 19px; font-weight: 800; font-variant-numeric: tabular-nums; text-decoration-thickness: 1.5px; }

.prep { padding: 26px 22px; border-radius: var(--radius-lg); background: var(--ink); color: #fff; }
.prep :focus-visible { outline-color: var(--mint); }
.prep__head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 6px 16px; }
.prep .sub-title { margin-bottom: 0; }
.prep__count { color: var(--mint); font-size: 15px; font-weight: 800; font-variant-numeric: tabular-nums; }
.prep__bar { height: 6px; margin-top: 16px; border-radius: 6px; background: rgba(255, 255, 255, .18); overflow: hidden; }
.prep__bar span { display: block; height: 100%; background: var(--mint); transform: scaleX(0); transform-origin: left center; transition: transform .3s var(--ease); }
.prep__list { margin-top: 10px; }
.prep__list li { border-bottom: 1px solid rgba(255, 255, 255, .14); }
.prep .check { display: flex; width: 100%; min-height: 54px; padding: 15px 0 13px; font-size: 16px; }
.prep .check input { accent-color: var(--mint); margin-top: 1px; }
.prep .check input:checked + span { color: var(--gray-dark-bg); text-decoration: line-through; text-decoration-color: rgba(255, 255, 255, .5); }
.prep__foot { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px 16px; margin-top: 20px; }
.prep__note { color: var(--gray-dark-bg); font-size: 14px; }
.prep .btn--outline { background: transparent; color: #fff; border-color: rgba(255, 255, 255, .7); }
.prep .btn--outline:hover { background: var(--mint); border-color: var(--mint); color: var(--ink); }
@media (min-width: 768px) { .prep { padding: 36px 40px; } }
@media (min-width: 1280px) {
  .info-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 64px; align-items: start; }
}

/* ---------- 5. FAQ ---------- */
#faq .fchip { background: #fff; }
#faq .fchip[aria-pressed="true"] { background: var(--ink); }
#faq .faq__cat { background: #fff; border: 1px solid var(--line-strong); }
.faq-more { margin-top: 28px; }
@media (max-width: 767.98px) {
  #faq .faq__q { flex-wrap: wrap; }
  #faq .faq__qtxt { flex: 1 1 calc(100% - 80px); }
  #faq .faq__cat { order: 3; margin-left: 40px; }
  #faq .faq__icon { order: 2; }
}
