/* Family-first search and evidence. Shared with existing page-specific styles. */
:root {
  --journey-canvas: #f7f9f5;
  --journey-ring: #35735a;
}
button, a, input, select, summary { -webkit-tap-highlight-color: transparent; }
:is(button, a, input, select, textarea, summary, [tabindex]):focus-visible {
  outline: 3px solid var(--journey-ring);
  outline-offset: 4px;
}
button:disabled { cursor: wait; opacity: .6; }
.main-home .hero-copy { min-width: 0; }
.hero-copy .hero-eyebrow-row .eyebrow { letter-spacing: .025em; font-size: 14px; }
.hero-onboard-copy strong { overflow-wrap: anywhere; }
.hero-search .search-input-wrap { min-width: 0; }
.hero-search .search-input-wrap input { min-width: 0; width: 100%; }
/* 해시태그는 검색창 바로 아래 붙인다 — 터치 영역(44px)만큼 생기는 위 여백을 상쇄한다. */
/* 글자는 검색창 바로 아래(약 8px)에 붙이고, 터치 영역은 아래쪽으로 늘려 44px을 지킨다. */
.quick-search { margin-top: 6px; gap: 6px; }
.quick-search button { display: inline-flex; align-items: flex-start; min-height: 44px; padding: 2px 10px 14px; font-size: 14px; line-height: 1.4; }
.quick-search button:first-of-type { padding-left: 4px; }
.main-home .category-grid {
  margin: 28px 0 30px; padding: 14px 8px;
  border: 1px solid var(--color-divider); border-radius: 20px;
  background: var(--journey-canvas);
}
.main-home .category { min-height: 88px; font-size: 14px; border-radius: 14px; }
.main-home .category:hover { background: var(--color-accent-100); }
.home-resume {
  display: flex; align-items: center; gap: 16px; width: 100%;
  text-align: left; padding: 22px 24px; margin-bottom: 24px;
  background: var(--color-accent); color: white; border: 0; border-radius: 18px;
}
.home-resume-icon { display: grid; place-items: center; width: 48px; height: 48px; flex-shrink: 0; background: #ffffff19; border-radius: 14px; }
.home-resume-copy { display: grid; gap: 5px; flex: 1; min-width: 0; }
.home-resume-copy strong { font-size: 17px; line-height: 1.5; }
.home-resume-copy > span { font-size: 14px; color: #e2ebdf; }
.home-example-disclosure { margin: 0 0 40px; border: 1px solid var(--color-divider); border-radius: 20px; background: white; }
.home-example-disclosure > summary { cursor: pointer; padding: 22px 24px; font-size: 16px; font-weight: 700; line-height: 1.6; }
.example-disclosure-hint { margin-left: 12px; font-size: 14px; color: var(--color-neutral-800); font-weight: 400; }
.home-example-disclosure[open] > summary { border-bottom: 1px solid var(--color-divider); }
.home-example-disclosure .judge-example { margin: 0; padding: 24px; }
.home-example-disclosure .section-head h2 { font-size: 24px; line-height: 1.5; }
.home-example-disclosure .judge-example-card { padding: 22px; border-radius: 14px; }
.theme-card { text-align: left; }
.theme-body p, .region-sub { font-size: 14px; line-height: 1.7; }
.themes-section .section-head .eyebrow, .region-section .section-head .eyebrow { letter-spacing: .02em; font-size: 14px; }
.explore-profile { border: 1px solid var(--color-accent-200); border-radius: 16px; }
.explore-profile .text-link { min-height: 44px; padding: 8px 12px; background: white; border-radius: 10px; }
.possible-toggle { min-height: 44px; padding: 8px 12px; border: 1px solid var(--color-divider); border-radius: 12px; }
.possible-toggle:has(input:checked) { background: var(--color-accent-100); border-color: var(--color-accent); }
.possible-toggle input { width: 19px; height: 19px; accent-color: var(--color-accent); }
.place-card { border: 1px solid var(--color-divider); box-shadow: 0 5px 18px #173f3007; }
.place-card-foot { color: var(--color-accent); font-weight: 650; }
.place-address-text { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.results-loading { display: flex; flex-direction: column; padding: 24px 0; }
.search-skeletons { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; width: 100%; margin-top: 20px; }
.search-skeleton { padding: 12px; border: 1px solid var(--color-divider); border-radius: 18px; }
.skeleton-photo, .skeleton-line { background: var(--color-neutral-200); border-radius: 10px; }
.skeleton-photo { aspect-ratio: 1.7; }
.skeleton-line { height: 16px; margin: 16px 0; width: 80%; }
.skeleton-line.short { width: 55%; }
.detail-place-heading { margin-bottom: 20px; padding-right: 28px; }
.detail-place-heading h2 { margin: 0 0 8px; font-size: clamp(24px, 3vw, 30px); line-height: 1.4; overflow-wrap: anywhere; }
.detail-place-heading p { display: flex; align-items: flex-start; gap: 6px; margin: 0; font-size: 14px; line-height: 1.7; color: var(--color-neutral-800); }
.detail-place-heading p .icon { margin-top: 4px; flex-shrink: 0; }
.detail-image-caption { font-size: 16px; }
.detail-image-caption .eyebrow { display: none; }
.detail-tabbar { gap: 4px; background: var(--color-neutral-200); border-radius: 12px; padding: 5px; margin: 24px 0 18px; }
.detail-tabbar > button { min-height: 44px; border-radius: 8px; font-size: 15px; }
.detail-tabbar > button[aria-selected="true"] { background: white; color: var(--color-accent); box-shadow: 0 2px 5px #173f3010; }
.tabpanel[hidden] { display: none; }
/* margin-bottom·padding-bottom이 .detail-body의 바닥 패딩(34px)만큼을 정확히 상쇄해야
   한다 — 안 그러면 그 34px만큼 흰 여백이 dock 아래 남아서, 고정 버튼줄이 실제 바닥에
   붙지 않고 붕 떠 보인다(테두리·그림자가 있어서 더 도드라진다). 좌우 bleed(-34px)와
   같은 원리를 아래쪽에도 적용하고, 대신 그만큼을 dock 자신의 padding-bottom에 더해서
   버튼이 화면 끝에 짓눌리지 않게 한다.*/
.detail-action-dock { position: sticky; bottom: 0; z-index: 5; margin: 24px -34px -34px; padding: 12px 24px calc(34px + max(14px, env(safe-area-inset-bottom))); background: white; border-top: 1px solid var(--color-divider); box-shadow: 0 -8px 24px #173f3009; }
.detail-action-dock .detail-actions { margin: 0; display: flex; flex-wrap: wrap; }
.detail-action-dock .action { flex: 1 1 auto; justify-content: center; min-height: 46px; }
.detail-action-dock .course-cta-msg { margin: 0; font-size: 14px; line-height: 1.6; }
.detail-action-dock .course-cta-msg:not(:empty) { margin-top: 8px; }
.check-item { min-height: 44px; gap: 10px; font-size: 15px; }
.check-item:has(input:checked) { background: var(--color-accent-100); }
.check-item input { width: 20px; height: 20px; accent-color: var(--color-accent); }
.tag-card { min-width: 0; }
.raw pre { font-size: 14px; line-height: 1.85; white-space: pre-wrap; overflow-wrap: anywhere; }
.hero-search .search-submit { width: auto; min-width: 48px; padding: 0 18px; display: flex; align-items: center; justify-content: center; gap: 9px; font-size: 14px; white-space: nowrap; }
.hero-onboard { background: var(--color-accent-100); margin-bottom: 16px; }
.hero-onboard-copy span { font-size: 14px; line-height: 1.6; }
.hero-desc { max-width: 36em; }
.hero-desc strong { display: block; color: var(--color-text); font-weight: 700; }
.main-home .companion-banner { margin-top: 24px; }
.judge-example { margin-top: 36px; }
.judge-example-card { background: var(--color-neutral-100); box-shadow: none; }
.judge-example-card .judge-example-place > span { color: var(--color-neutral-800); font-size: 14px; }
.judge-example-lead, .judge-example-verdict > p { font-size: 16px; line-height: 1.75; }
.judge-example-note { font-size: 14px; color: var(--color-neutral-800); }
/* 장소 안내(배지·이름·조건)와 결과(가족 판정·예시 안내·버튼)를 각각 한 장의 카드로 묶는다. */
.judge-example-place, .judge-example-outcome { padding: 18px 20px; border: 1px solid var(--color-divider); border-radius: 14px; background: white; }
.judge-example-outcome { display: grid; gap: 14px; align-content: start; }
.judge-example-outcome > .btn-primary { width: fit-content; justify-self: center; }
@media (max-width: 640px) {
  .judge-example-place, .judge-example-outcome { padding: 14px; }
  .judge-example-outcome > .btn-primary { width: 100%; }
}
.evidence-flow { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; color: var(--color-accent); font-size: 14px; font-weight: 650; padding-bottom: 16px; border-bottom: 1px solid var(--color-divider); }
.companion-picker { width: min(480px, calc(100vw - 32px)); max-height: 88dvh; overflow-y: auto; padding: 28px; border: 1px solid var(--color-divider); border-radius: 24px; background: var(--color-bg); color: var(--color-text); box-shadow: var(--shadow-lift); }
.companion-picker::backdrop { background: #10291ecc; backdrop-filter: blur(4px); }
.picker-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; }
.picker-heading h2 { font-size: 24px; line-height: 1.4; margin: 6px 0 12px; }
.picker-heading .action { min-width: 44px; min-height: 44px; padding: 10px; }
.picker-description { font-size: 16px; line-height: 1.7; color: var(--color-neutral-800); }
.picker-list { display: grid; gap: 10px; margin: 18px 0; }
.picker-pet { display: flex; align-items: center; gap: 14px; border: 1px solid var(--color-divider); border-radius: 16px; padding: 16px; cursor: pointer; }
.picker-pet:has(input:checked) { border-color: var(--color-accent); background: var(--color-accent-100); }
.picker-avatar { display: grid; place-items: center; width: 44px; height: 44px; border-radius: 50%; background: var(--color-accent-200); flex-shrink: 0; }
.picker-pet-copy { min-width: 0; display: grid; gap: 4px; flex: 1; overflow-wrap: anywhere; }
.picker-pet-copy > span { font-size: 14px; color: var(--color-neutral-800); }
.picker-pet input { width: 22px; height: 22px; flex-shrink: 0; accent-color: var(--color-accent); }
.picker-storage { font-size: 14px; line-height: 1.7; color: var(--color-neutral-800); margin: 18px 0; }
.companion-picker > .btn-primary, .companion-picker > .btn-ghost { width: 100%; min-height: 48px; }
.detail-family-label { display: flex; gap: 8px; align-items: center; color: var(--color-accent); font-weight: 700; font-size: 14px; margin-bottom: 12px; }
.detail-family-label .text-link { margin-left: auto; min-height: 44px; }
.detail-status { padding: 20px; border-radius: 16px; background: var(--color-accent-100); }
.detail-status[data-tone="warn"] { background: var(--sun-soft); }
.detail-status[data-tone="no"] { background: var(--clay-soft); }
.detail-status .detail-headline { margin: 0; font-size: clamp(21px, 3vw, 27px); line-height: 1.5; }
.dog-result-head { flex-wrap: wrap; }
.dog-result-head strong { overflow-wrap: anywhere; }
.dog-result p { font-size: 14px; line-height: 1.7; }
.dog-result-meta, .dog-result-status { font-size: 14px; }
.decision-reasons { border-bottom: 1px solid var(--color-divider); padding: 4px 0 16px; margin: 16px 0; font-size: 14px; line-height: 1.75; }
.decision-reasons summary, .tag-evidence summary { cursor: pointer; font-weight: 650; min-height: 32px; }
.decision-reasons li + li { margin-top: 8px; }
.inquiry-card, .alternatives-section { margin: 20px 0; padding: 20px; background: var(--color-neutral-100); border: 1px solid var(--color-divider); border-radius: 16px; }
.inquiry-card h4, .alternatives-section h4, .evidence-title { margin: 0 0 10px; font-size: 16px; }
.inquiry-card p, .alternatives-section p { font-size: 14px; line-height: 1.7; color: var(--color-neutral-800); }
.inquiry-card pre { white-space: pre-wrap; overflow-wrap: anywhere; user-select: text; font: inherit; font-size: 14px; line-height: 1.85; background: var(--color-bg); border-radius: 10px; padding: 14px; }
.tag-evidence { margin-top: 10px; font-size: 14px; font-weight: 400; }
.tag-evidence blockquote { margin: 8px 0 0; border-left: 2px solid var(--color-accent-300); padding-left: 10px; line-height: 1.7; white-space: pre-wrap; overflow-wrap: anywhere; color: var(--color-neutral-800); }
.evidence-title { margin-top: 22px; }
.alternative-results { display: grid; gap: 10px; margin-top: 12px; }
.alternative-card { display: flex; text-align: left; align-items: center; gap: 12px; width: 100%; padding: 12px; background: var(--color-bg); color: var(--color-text); border: 1px solid var(--color-divider); border-radius: 12px; }
.alternative-photo { width: 72px; height: 80px; object-fit: cover; border-radius: 8px; flex-shrink: 0; }
.alternative-copy { flex: 1; min-width: 0; display: grid; justify-items: start; gap: 5px; font-size: 14px; overflow-wrap: anywhere; }
.alternative-copy strong { font-size: 16px; }
.alternative-copy > span:not(.verdict) { color: var(--color-neutral-800); }
.course-recheck { display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 24px; margin: 20px 0; background: var(--color-accent-100); border: 1px solid var(--color-accent-200); border-radius: 20px; }
.course-recheck h2 { font-size: 20px; margin: 0 0 8px; }
.course-recheck p { margin: 0; font-size: 14px; line-height: 1.7; }
.course-recheck [role="status"]:not(:empty) { margin-top: 10px; font-weight: 650; }
.course-recheck .btn-primary { flex-shrink: 0; min-height: 48px; }
@media (min-width: 851px) {
  .judge-example-card { grid-template-columns: 1fr 1fr; column-gap: 30px; }
  .judge-example-card > .evidence-flow, .judge-example-card > .judge-example-place, .judge-example-card > .judge-example-lead { grid-column: 1 / -1; }
  .judge-example-card > .dog-results { margin: 0; }
}
@media (max-width: 640px) {
  .hero { gap: 20px; }
  .hero h1 { font-size: clamp(30px, 8vw, 42px); line-height: 1.32; }
  .hero-desc { font-size: 16px; margin-bottom: 16px; }
  .hero-search .search-region { display: none; }
  .hero-search .search-submit { padding: 0 13px; }
  .hero-search .search-submit > span { font-size: 14px; }
  .hero-search .search-submit > .icon { display: none; }
  .hero-visual { min-height: 230px; height: 260px; }
  .companion-picker { width: 100%; max-width: 100%; max-height: 88dvh; margin: auto 0 0; border-radius: 24px 24px 0 0; padding: 24px 20px max(24px, env(safe-area-inset-bottom)); }
  .inquiry-card, .alternatives-section { padding: 16px; }
  .course-recheck { flex-direction: column; align-items: stretch; padding: 20px; }
  .detail-actions { gap: 8px; }
  .detail-actions .action { min-height: 48px; font-size: 14px; }
}

@media (min-width: 641px) and (max-width: 850px) {
  /* .detail-body 바닥 패딩이 28px로 바뀌므로 상쇄값도 같이 바꾼다. */
  .detail-action-dock { bottom: 0; margin: 24px -28px -28px; padding-bottom: calc(28px + max(14px, env(safe-area-inset-bottom))); }
  .search-skeletons { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 640px) {
  .main-home .category-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 4px; padding: 8px; margin: 22px 0; }
  .main-home .category { min-height: 82px; padding: 10px 4px; }
  .home-resume { padding: 18px; gap: 12px; }
  .home-resume-copy strong { font-size: 16px; }
  .home-example-disclosure > summary { padding: 18px; }
  .example-disclosure-hint { display: block; margin: 4px 0 0 20px; }
  .home-example-disclosure .judge-example { padding: 18px 14px; }
  .home-example-disclosure .judge-example-card { padding: 16px 14px; }
  .home-example-disclosure .section-head h2 { font-size: 21px; }
  .home-example-disclosure .section-head .eyebrow { display: none; }
  .home-example-disclosure .evidence-flow { font-size: 13px; gap: 6px; }
  .home-example-disclosure .evidence-flow .icon { width: 12px; }
  .themes-section .section-head > .text-link { font-size: 14px; margin-top: 0; align-self: end; min-height: 44px; }
  .theme-body p, .region-sub { font-size: 14px; }
  .explore-profile > span { min-width: 0; flex-basis: calc(100% - 42px); font-size: 14px; }
  .explore-profile > .text-link { margin-left: auto; }
  .search-skeletons { grid-template-columns: 1fr; gap: 16px; }
  .search-skeleton:nth-child(n+3) { display: none; }
  .detail-visual { height: 160px; min-height: 160px; aspect-ratio: auto; }
  .detail-image-caption { display: none; }
  .detail-body { padding: 22px 18px; }
  .detail-place-heading { padding-right: 0; margin-bottom: 14px; }
  /* .detail-body 바닥 패딩이 22px(위 .detail-body 규칙의 '22px 18px')이므로 상쇄값도 맞춘다. */
  .detail-action-dock { bottom: 0; margin: 24px -18px -22px; padding: 12px 14px calc(22px + max(16px, env(safe-area-inset-bottom))); }
  .detail-action-dock .course-cta { flex-basis: 100%; }
  .detail-status { padding: 16px; }
  .tag-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 370px) {
  .theme-grid { grid-template-columns: 1fr; }
  .theme-image-wrap { aspect-ratio: 1.6; }
  .tag-grid { grid-template-columns: 1fr; }
  .hero-search { flex-wrap: wrap; gap: 8px; }
  .hero-search .search-input-wrap { flex-basis: 100%; min-height: 44px; }
  .hero-search .search-submit { width: 100%; }
}

.picker-pet:focus-within { outline: 3px solid var(--journey-ring); outline-offset: 3px; }
.companion-picker > .text-link { min-height: 44px; }
.companion-picker > .btn-primary { position: sticky; bottom: 0; box-shadow: 0 -8px 18px #ffffffed; }

/* Named lists share the same controls in the editor and My page. */
.list-library-bar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 18px; padding: 24px; margin: 20px 0; border: 1px solid var(--color-accent-200); border-radius: 20px; background: var(--color-accent-100); }
.list-library-copy { flex: 1 1 240px; min-width: 0; }
.list-library-copy > strong { font-size: 17px; line-height: 1.5; }
.list-storage-note { margin: 7px 0 0; font-size: 14px; line-height: 1.7; color: var(--color-neutral-800); }
.list-library-actions { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.list-library-actions :is(button, a) { min-height: 44px; }
.course-name-dialog { color: var(--color-text); background: white; width: min(480px, calc(100vw - 32px)); max-height: 90dvh; overflow-y: auto; padding: 28px; border: 1px solid var(--color-divider); border-radius: 22px; box-shadow: var(--shadow-lift); }
.course-name-dialog::backdrop { background: #10291eb8; backdrop-filter: blur(3px); }
.course-name-dialog h2 { font-size: 23px; line-height: 1.5; margin: 0 0 10px; }
.course-save-description { font-size: 15px; line-height: 1.75; margin: 0 0 22px; color: var(--color-neutral-800); }
.course-save-field { display: grid; gap: 8px; margin-bottom: 18px; font-size: 14px; font-weight: 650; }
.course-save-field .input { width: 100%; min-width: 0; min-height: 48px; font-size: 16px; box-sizing: border-box; }
.course-save-actions { display: flex; justify-content: flex-end; gap: 10px; }
.course-save-actions button { min-height: 48px; }
.course-save-error { font-size: 14px; line-height: 1.7; color: var(--clay-deep); }

/* 장소 상세 → 발담리스트 선택 */
.journey-picker { width: min(560px, calc(100vw - 32px)); max-height: min(760px, calc(100dvh - 32px)); padding: 0; border: 0; border-radius: 24px; color: var(--color-text); background: #fff; box-shadow: var(--shadow-lift); overflow: hidden; }
.journey-picker::backdrop { background: #10291eb8; backdrop-filter: blur(4px); }
.journey-picker-content { display: grid; max-height: inherit; padding: 26px; overflow: auto; }
.journey-picker-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; }
.journey-picker-kicker { display: block; margin-bottom: 6px; color: var(--color-accent); font-size: 11px; font-weight: 800; letter-spacing: .12em; }
.journey-picker-head h2 { margin: 0; font-size: 22px; line-height: 1.4; }
.journey-picker-head p { margin: 5px 0 0; color: var(--color-neutral-700); font-size: 13px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.journey-picker-close { width: 40px; height: 40px; flex: 0 0 auto; border: 1px solid var(--color-divider); border-radius: 50%; background: #fff; color: var(--color-neutral-700); font-size: 25px; line-height: 1; }
.journey-picker-list { display: grid; gap: 9px; max-height: 390px; margin: 22px 0 12px; overflow: auto; padding: 2px; }
.journey-picker-row { display: grid; grid-template-columns: 34px minmax(0, 1fr) auto; align-items: center; gap: 11px; min-height: 76px; padding: 12px 13px; text-align: left; border: 1px solid var(--color-divider); border-radius: 14px; background: #fff; transition: border-color .15s, background .15s, transform .15s; }
.journey-picker-row:not(:disabled):hover { border-color: var(--color-accent-300); background: var(--color-accent-100); transform: translateY(-1px); }
.journey-picker-row.is-added { background: #f4f7f2; color: var(--color-neutral-700); }
.journey-picker-row-icon { display: grid; place-items: center; width: 32px; height: 32px; border-radius: 10px; background: var(--color-accent-100); color: var(--color-accent); font-size: 18px; font-weight: 800; }
.journey-picker-row.is-added .journey-picker-row-icon { background: var(--color-accent); color: #fff; }
.journey-picker-row-copy { min-width: 0; display: grid; gap: 3px; }
.journey-picker-row-copy strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 15px; }
.journey-picker-row-copy small { color: var(--color-neutral-700); font-size: 12px; }
.journey-picker-row-action { color: var(--color-accent-800); font-size: 12px; font-weight: 750; white-space: nowrap; }
.journey-picker-pets { display: flex; flex-wrap: wrap; gap: 4px; }
.journey-pet-pill { display: inline-flex; align-items: center; gap: 3px; padding: 2px 6px; border-radius: 999px; background: #f1f5ed; color: var(--color-neutral-800); font-size: 10px; }
.journey-picker-empty { margin: 20px 0; color: var(--color-neutral-700); font-size: 14px; line-height: 1.7; }
.journey-create-link { display: inline-flex; align-items: center; justify-content: center; width: 100%; min-height: 48px; border: 1px dashed var(--color-accent-300); border-radius: 12px; background: var(--color-accent-100); color: var(--color-accent-800); font-size: 14px; font-weight: 750; }
.journey-picker-note { min-height: 22px; margin: 12px 0 0; color: var(--color-accent-800); font-size: 13px; font-weight: 650; }
.journey-picker-subtitle { margin: 22px 0 16px; color: var(--color-neutral-700); font-size: 14px; line-height: 1.6; }
.journey-create-form { display: grid; gap: 16px; }
.journey-create-form label, .journey-create-form legend { display: grid; gap: 7px; color: var(--color-neutral-800); font-size: 13px; font-weight: 700; }
.journey-create-form fieldset { display: grid; gap: 10px; min-width: 0; margin: 0; padding: 0; border: 0; }
.journey-pet-select { display: flex; flex-wrap: wrap; gap: 7px; }
.journey-pet-option { display: inline-flex; align-items: center; gap: 5px; min-height: 40px; padding: 7px 11px; border: 1px solid var(--color-divider); border-radius: 999px; background: #fff; color: var(--color-neutral-800); font-size: 12px; }
.journey-pet-option.is-selected { border-color: var(--color-accent); background: var(--color-accent-100); color: var(--color-accent-800); box-shadow: 0 0 0 2px var(--color-accent-100); }
.journey-date-fields { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.journey-create-actions { display: flex; justify-content: flex-end; gap: 9px; margin-top: 3px; }
.journey-create-actions button { min-height: 46px; }
.journey-picker-error { min-height: 20px; margin: 0; color: var(--clay-deep); font-size: 13px; }
.journey-toast { position: fixed; z-index: 120; right: 22px; bottom: 24px; display: flex; align-items: center; gap: 14px; max-width: min(420px, calc(100vw - 32px)); padding: 13px 15px; border: 1px solid var(--color-accent-300); border-radius: 13px; background: #173f30; color: #fff; box-shadow: var(--shadow-lift); font-size: 13px; font-weight: 700; animation: journey-toast-in .22s ease-out; }
.journey-toast-link { color: #d6e9b8; text-decoration: underline; text-underline-offset: 3px; white-space: nowrap; }
@keyframes journey-toast-in { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }
@media(max-width:640px){
  .journey-picker { width: 100%; max-width: none; max-height: 78dvh; margin: auto 0 0; border-radius: 22px 22px 0 0; }
  .journey-picker-content { padding: 22px 18px calc(22px + env(safe-area-inset-bottom)); }
  .journey-picker-head h2 { font-size: 20px; }
  .journey-picker-list { max-height: 42dvh; }
  .journey-picker-row { min-height: 72px; }
  .journey-create-actions button { flex: 1; justify-content: center; }
  .journey-toast { right: 12px; bottom: calc(74px + env(safe-area-inset-bottom)); left: 12px; justify-content: space-between; }
}
@media (max-width: 640px) {
  .list-library-bar { padding: 20px; gap: 14px; }
  .list-library-actions { width: 100%; }
  .list-library-actions > .btn-primary, .list-library-actions > .btn-ghost { flex: 1 1 140px; justify-content: center; font-size: 14px; }
  .course-name-dialog { padding: 22px; }
  .course-save-actions button { flex: 1; justify-content: center; font-size: 14px; }
}

/* 히어로 스티커는 사진 오른쪽 위 모서리에 걸친다. */
.hero-stamp { top: -14px; right: -14px; }
@media (max-width: 640px) {
  .hero-stamp { top: -10px; right: -10px; }
  /* 사진 하단 캡션은 카운터 왼쪽, 바닥 가까이. */
  .hero-carousel .photo-corner-note { left: 17px; right: 132px; max-width: calc(100% - 149px); bottom: 18px; }
}

/* 홈 여행 유형 아이콘은 전부 모든 여행처럼 진한 초록 타일에 라임 아이콘. */
.main-home .category .category-icon { background: var(--color-accent); color: var(--lime); }
.main-home .category:hover .category-icon { background: var(--lime); color: var(--color-accent); }

/* 사진 카운터 알약을 날씬하게(높이 34px). 캡션(높이 ~18px, bottom 18px)과 세로 중심을 맞춘다. */
.hero-carousel-meta { padding: 0 0 0 12px; gap: 4px; }
.hero-carousel-pause { width: 38px; height: 32px; }
@media (max-width: 640px) {
  .hero-carousel-meta { right: 15px; bottom: 10px; }
}

/* 테마 카드: 주제목과 부제목 사이를 좁힌다. */
.theme-body h3 { margin-bottom: 1px; line-height: 1.4; }
.theme-body p { line-height: 1.5; }

/* 지역 카드: 도시명을 위에 고정(버튼 기본 세로 중앙 정렬을 끈다). 부제목은 한 줄. */
.region-card { display: flex; flex-direction: column; align-items: flex-start; justify-content: flex-start; }
.region-sub { white-space: nowrap; }
@media (max-width: 640px) { .region-sub { font-size: 13px; } }

/* 약속 배너: 제목은 한 줄, 버튼은 오른쪽 끝. 모바일은 아이콘을 빼고 글자를 폭에 맞춘다. */
.promise-title h2 br { display: none; }
.promise-title h2 { white-space: nowrap; }
.promise-banner > .btn-lime { margin-left: auto; }
@media (max-width: 640px) {
  .promise-title > .icon { display: none; }
  .promise-title h2 { font-size: clamp(15px, 4.4vw, 20px); }
}

/* 판정 예시 안내: 약속 배너와 같은 진한 초록 카드. 제목 한 줄 + 라임 버튼(오른쪽). */
.home-example-disclosure { margin: 16px 0 40px; border: 0; border-radius: 20px; background: var(--color-accent); color: white; overflow: hidden; }
.home-example-disclosure > summary { list-style: none; display: flex; align-items: center; flex-wrap: wrap; gap: 17px; padding: 36px 34px; border: 0; }
.home-example-disclosure > summary::-webkit-details-marker { display: none; }
.home-example-disclosure[open] > summary { border-bottom: 1px solid #ffffff22; }
.example-title { font-size: 23px; line-height: 1.5; font-weight: 600; letter-spacing: -.04em; white-space: nowrap; }
.example-cta { margin-left: auto; }
.home-example-disclosure .judge-example { background: white; color: var(--color-text); margin: 0; }
@media (max-width: 640px) {
  .home-example-disclosure { border-radius: 17px; margin-top: 14px; }
  .home-example-disclosure > summary { padding: 24px 20px; gap: 17px; }
  .example-title { font-size: clamp(15px, 4.4vw, 20px); }
}

/* 검색창: 입력칸 자체의 포커스 테두리(바깥 4px)가 버튼 위로 넘치던 것을 없애고,
   대신 검색창 전체 테두리를 진하게 해서 포커스를 보여준다. */
.hero-search input:focus, .hero-search input:focus-visible { outline: none; }
.hero-search:focus-within { border-color: var(--color-accent); box-shadow: 0 0 0 3px var(--color-accent-200), 0 8px 23px #29452c09; }
.hero-search .search-input-wrap input { padding-right: 8px; }

/* 홈 맨 아래 빈 여백 정리: 마지막 카드 아래 여백과 본문 바닥 패딩이 겹쳐 90px이 비었다. */
.home-example-disclosure { margin-bottom: 0; }
@media (max-width: 640px) { .main-home { padding-bottom: 20px; } }

/* 섹션 머리: 작은 안내문과 제목을 붙인다. */
.section-head .eyebrow { margin-bottom: 2px; }
.section-head h2 { line-height: 1.3; }

/* 모바일 푸터: 맨 위로 버튼이 한 줄을 통째로 차지하며 빈 칸을 만들던 것을,
   © 줄 오른쪽에 겹쳐 두는 것으로 바꾼다. */
@media (max-width: 640px) {
  .footer-inner { position: relative; }
  .footer-top { position: absolute; right: 21px; bottom: 0; margin: 0; }
  .footer-info { padding-right: 52px; }
}

/* Search workspace: filters, results and a shared result map. */
.explore-workspace { display: grid; grid-template-columns: 252px minmax(0, 1fr) minmax(350px, .9fr); gap: 20px; align-items: start; }
.explore-filter-panel { position: sticky; top: 24px; display: grid; gap: 13px; min-width: 0; padding: 17px; border: 1px solid var(--color-divider); border-radius: 18px; background: white; box-shadow: 0 8px 24px #173f3009; }
.explore-filter-label { display: flex; align-items: center; gap: 7px; color: var(--color-accent); font-size: 13px; font-weight: 750; }
.explore-filter-label .icon { flex-shrink: 0; }
.explore-filter-panel .explore-search { display: grid; gap: 8px; margin: 0; padding: 0; border: 0; box-shadow: none; background: transparent; }
.explore-filter-panel .explore-search-input { width: 100%; min-width: 0; min-height: 44px; padding: 0 11px; border: 1px solid var(--color-divider); border-radius: 11px; background: white; box-sizing: border-box; }
.explore-filter-panel .explore-search-input > .input { min-width: 0; width: 100%; padding: 9px 0; }
.explore-filter-panel .explore-search > .input { width: 100%; min-height: 44px; padding: 9px 11px; border: 1px solid var(--color-divider); border-radius: 11px; box-sizing: border-box; }
.explore-filter-panel .explore-search > .btn-primary { width: 100%; min-height: 44px; justify-content: center; }
.explore-filter-panel .explore-categories { display: grid; gap: 6px; margin: 0; }
.explore-filter-panel .explore-category { justify-content: flex-start; min-height: 40px; padding: 8px 10px; border-radius: 10px; }
/* 선택된 카테고리는 '상태'이고 검색하기는 '동작'이다 — 둘 다 진한 초록이면 버튼이 두 개로 보인다.
   진한 채움은 검색하기에만 남기고, 선택 상태는 옅은 녹색 면 + 녹색 테두리·글자로 말한다. */
.explore-filter-panel .explore-category[aria-pressed="true"] { background: var(--color-accent-100); border-color: var(--color-accent); color: var(--color-accent-800); font-weight: 700; box-shadow: none; }
.explore-filter-panel .explore-profile { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 7px 9px; margin: 1px 0 0; padding: 12px; font-size: 12px; }
.explore-filter-panel .explore-profile > span { min-width: 0; line-height: 1.55; }
.explore-filter-panel .explore-profile > .text-link { grid-column: 1 / -1; justify-self: start; margin: 0; padding: 3px 0; font-size: 12px; }
.explore-filter-panel > .possible-toggle { justify-content: flex-start; }
.explore-results-column { min-width: 0; }
.explore-view-toggle { display: none; }
.results-toolbar { margin-bottom: 14px; }
.results-toolbar > p { margin: 0; }
.place-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.place-card { border-radius: 15px; transition: border-color .2s, box-shadow .2s, transform .2s; }
.place-card:hover { transform: translateY(-2px); }
.place-card.is-selected { border-color: var(--color-accent); box-shadow: 0 0 0 3px var(--color-accent-200), 0 9px 24px #173f3020; }
.place-image-wrap { aspect-ratio: 1.55; }
.place-card-body { padding: 14px; }
.place-card-body h2 { margin: 5px 0 7px; font-size: 18px; line-height: 1.4; }
.place-address { min-height: 2.8em; font-size: 12px; line-height: 1.45; }
.place-tags { min-height: 26px; font-size: 11px; }
.place-card-foot { margin-top: 12px; font-size: 12px; }
.explore-map-column { position: sticky; top: 24px; min-width: 0; overflow: hidden; border: 1px solid var(--color-divider); border-radius: 18px; background: white; box-shadow: 0 8px 24px #173f3009; }
.explore-map-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 16px 17px 12px; border-bottom: 1px solid var(--color-divider); }
.explore-map-kicker { display: block; color: var(--color-accent); font-size: 10px; font-weight: 800; letter-spacing: .14em; }
.explore-map-head h2 { margin: 4px 0 0; font-size: 17px; line-height: 1.4; }
.explore-map-hint { color: var(--color-neutral-800); font-size: 11px; text-align: right; }
.explore-map-stage { height: min(70vh, 700px); min-height: 480px; padding: 8px 8px 10px; }
.explore-map-canvas { position: relative; width: 100%; height: 100%; overflow: hidden; border-radius: 13px; background: var(--journey-canvas); }
.explore-map-empty { display: grid; place-items: center; align-content: center; gap: 8px; height: 100%; padding: 20px; color: var(--color-neutral-800); text-align: center; }
.explore-map-empty strong { color: var(--color-text); font-size: 14px; }
.explore-map-empty span { font-size: 12px; line-height: 1.6; }
.results-source { margin-top: 20px; }

@media (min-width: 851px) and (max-width: 1200px) {
  .explore-workspace { grid-template-columns: 232px minmax(0, 1fr); }
  .explore-map-column { grid-column: 1 / -1; position: static; }
  .explore-map-stage { height: 430px; min-height: 0; }
}
@media (max-width: 850px) {
  .explore-workspace { display: flex; flex-direction: column; gap: 13px; }
  .explore-filter-panel { position: static; width: 100%; box-sizing: border-box; }
  .explore-map-column { position: static; width: 100%; }
  .explore-map-stage { height: 52vh; min-height: 360px; max-height: 560px; }
}
@media (max-width: 640px) {
  .explore-filter-panel { gap: 10px; padding: 0; border: 0; box-shadow: none; background: transparent; }
  .explore-filter-label { display: none; }
  .explore-filter-panel .explore-search { gap: 7px; }
  .explore-filter-panel .explore-search-input { min-height: 48px; padding: 0 12px; border-radius: 13px; }
  .explore-filter-panel .explore-search-input > .input { font-size: 16px; }
  .explore-filter-panel .explore-search > .input { min-height: 44px; font-size: 16px; }
  .explore-filter-panel .explore-search > .btn-primary { min-height: 44px; font-size: 14px; }
  .explore-filter-panel .explore-categories { display: flex; overflow-x: auto; gap: 7px; margin: 0; padding: 1px 0 3px; scrollbar-width: none; }
  .explore-filter-panel .explore-categories::-webkit-scrollbar { display: none; }
  .explore-filter-panel .explore-category { flex-shrink: 0; min-height: 40px; padding: 9px 12px; border-radius: 999px; font-size: 13px; }
  .explore-filter-panel .explore-profile { grid-template-columns: auto minmax(0, 1fr); margin: 0; padding: 12px; border-radius: 13px; font-size: 13px; }
  .explore-filter-panel .explore-profile > .text-link { font-size: 13px; }
  .explore-filter-panel > .possible-toggle { align-self: flex-end; min-height: 40px; font-size: 13px; }
  .explore-view-toggle { display: grid; grid-template-columns: 1fr 1fr; order: 2; gap: 4px; padding: 4px; border-radius: 12px; background: var(--color-neutral-200); }
  .explore-view-toggle > button { display: flex; align-items: center; justify-content: center; gap: 6px; min-height: 42px; border: 0; border-radius: 9px; background: transparent; color: var(--color-neutral-800); font-size: 14px; font-weight: 700; }
  .explore-view-toggle > button[aria-selected="true"] { background: white; color: var(--color-accent); box-shadow: 0 2px 6px #173f3014; }
  .explore-results-column, .explore-map-column { order: 3; width: 100%; }
  .explore-workspace[data-view="list"] .explore-map-column { display: none; }
  .explore-workspace[data-view="map"] .explore-results-column { display: none; }
  .explore-map-head { padding: 13px 14px 10px; }
  .explore-map-head h2 { font-size: 16px; }
  .explore-map-hint { font-size: 10px; }
  .explore-map-stage { height: 52vh; min-height: 360px; padding: 7px; }
  .results-toolbar { margin-bottom: 12px; }
  .place-grid { gap: 14px; }
  .place-image-wrap { aspect-ratio: 1.65; }
  .place-card-body { padding: 16px; }
  .place-card-body h2 { font-size: 20px; }
  .place-address { min-height: 0; font-size: 13px; }
  .place-tags { font-size: 12px; }
  .place-card-foot { font-size: 13px; }
}

/* The companion profile is a primary filter, not a secondary notice. */
.explore-filter-panel .explore-profile {
  grid-template-columns: 36px minmax(0, 1fr);
  align-items: center;
  gap: 2px 9px;
  padding: 13px;
  border: 1px solid var(--color-accent-200);
  border-radius: 14px;
  background: linear-gradient(145deg, #f3f8ed 0%, #eaf3e8 100%);
  color: var(--color-text);
}
.explore-profile-icon { display: grid; place-items: center; width: 36px; height: 36px; grid-row: span 3; border-radius: 11px; background: var(--color-accent); color: white; }
.explore-profile-copy { display: grid; min-width: 0; gap: 1px; }
.explore-profile-kicker { color: var(--color-accent); font-size: 10px; font-weight: 800; letter-spacing: .08em; }
.explore-profile-copy strong { overflow: hidden; font-size: 14px; line-height: 1.45; text-overflow: ellipsis; white-space: nowrap; }
.explore-profile-copy small { color: var(--color-neutral-800); font-size: 11px; line-height: 1.45; }
.explore-filter-panel .explore-profile > .text-link { grid-column: 2; justify-self: stretch; min-height: 32px; margin: 5px 0 0; padding: 5px 8px; border: 1px solid var(--color-accent-300); border-radius: 8px; background: #ffffff9c; color: var(--color-accent); font-size: 12px; font-weight: 750; justify-content: center; }

/* On desktop, compact horizontal result rows keep the central column scannable. */
@media (min-width: 641px) {
  .place-grid { grid-template-columns: 1fr; gap: 10px; }
  .place-card { min-height: 148px; }
  .place-open { display: grid; grid-template-columns: 142px minmax(0, 1fr); align-items: stretch; }
  .place-image-wrap { height: 148px; min-height: 148px; aspect-ratio: auto; }
  .place-card-body { display: grid; grid-template-columns: minmax(0, 1fr) auto; grid-template-rows: auto auto auto 1fr; column-gap: 12px; padding: 13px 15px; }
  .place-meta { grid-column: 1 / -1; margin-bottom: 2px; }
  .place-card-body h2 { grid-column: 1 / -1; overflow: hidden; margin: 1px 0 3px; font-size: 17px; text-overflow: ellipsis; white-space: nowrap; }
  .place-address { grid-column: 1 / -1; min-height: 0; overflow: hidden; margin-bottom: 5px; text-overflow: ellipsis; white-space: nowrap; }
  .place-tags { grid-column: 1; align-self: end; min-height: 0; max-height: 27px; overflow: hidden; }
  .place-card-foot { grid-column: 2; align-self: end; margin: 0; padding: 0; border-top: 0; white-space: nowrap; }
  .place-card-foot .icon { width: 16px; }
}
@media (min-width: 851px) and (max-width: 1200px) {
  /* The map is a second section at this width; nothing should float over the filter. */
  .explore-filter-panel { position: static; }
  .explore-map-column { z-index: 0; }
}
@media (max-width: 640px) {
  .explore-filter-panel .explore-profile { grid-template-columns: 36px minmax(0, 1fr); align-items: center; }
  .explore-filter-panel .explore-profile > .text-link { grid-column: 2; min-height: 34px; margin-top: 5px; font-size: 13px; }
}

/* Five compact rows leave room for the map and pagination in the first viewport. */
@media (min-width: 1201px) {
  .explore-workspace { align-items: stretch; }
  .explore-filter-panel,
  .explore-map-column { height: 100%; box-sizing: border-box; }
  .explore-map-column { display: flex; flex-direction: column; }
  .explore-map-stage { flex: 1 1 auto; height: auto; min-height: 0; }
  .explore-filter-panel { gap: 9px; padding: 13px; }
  .explore-filter-panel .explore-search { gap: 6px; }
  .explore-filter-panel .explore-search-input,
  .explore-filter-panel .explore-search > .input,
  .explore-filter-panel .explore-search > .btn-primary { min-height: 40px; }
  .explore-filter-panel .explore-search-input > .input,
  .explore-filter-panel .explore-search > .input { padding-top: 7px; padding-bottom: 7px; }
  .explore-filter-panel .explore-categories { gap: 4px; }
  .explore-filter-panel .explore-category { min-height: 34px; padding: 6px 9px; font-size: 13px; }
  .explore-filter-panel .explore-profile { padding: 10px; }
  .explore-profile-icon { width: 32px; height: 32px; }
  .explore-profile-copy strong { font-size: 13px; }
  .explore-profile-copy small { font-size: 10px; }
  .explore-filter-panel .explore-profile > .text-link { min-height: 29px; margin-top: 3px; padding: 3px 7px; font-size: 11px; }
  .explore-filter-panel > .possible-toggle { min-height: 36px; font-size: 12px; }
  .place-grid { gap: 8px; }
  .place-card, .place-image-wrap { min-height: 120px; height: 120px; }
  .place-card-body { padding: 9px 12px; }
  .place-card-body h2 { margin: 0 0 2px; font-size: 16px; }
  .place-address { font-size: 11px; }
  .place-tags { max-height: 24px; font-size: 10px; }
  .place-tags span { padding: 3px 6px; }
  .place-card-foot { font-size: 11px; }
  .explore-map-stage { flex: 1 1 auto; height: auto; min-height: 0; }
}

/* Search controls: keep long placeholders readable and give the region control a clear affordance. */
.explore-filter-panel .explore-search-input { overflow: hidden; }
/* 포커스 표시는 안쪽 input이 아니라 상자가 갖는다. input에 그리면 상자의 overflow:hidden에 위아래가 잘려
   좌우에 괄호 같은 조각만 남는다(맨 위 전역 :focus-visible 규칙이 app.css의 outline:none을 덮는다). */
.explore-filter-panel .explore-search-input > .input:focus-visible { outline: none; }
.explore-filter-panel .explore-search-input:focus-within { outline: 3px solid var(--journey-ring); outline-offset: 2px; border-color: var(--journey-ring); }
.explore-filter-panel .explore-search-input > .input { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 14px; letter-spacing: -.025em; }
.explore-area-field { display: flex; align-items: center; gap: 7px; min-width: 0; min-height: 44px; padding: 0 10px; border: 1px solid var(--color-divider); border-radius: 11px; background: linear-gradient(180deg, #fff 0%, #f9fbf8 100%); color: var(--color-accent-400); }
.explore-area-field > .explore-area-select { min-width: 0; flex: 1; width: 100%; appearance: none; border: 0; outline: 0; background: transparent; color: var(--color-text); font-size: 14px; font-weight: 650; cursor: pointer; }
.explore-area-field > .explore-area-select:focus-visible { outline: none; }
.explore-area-field:has(> .explore-area-select:focus-visible) { outline: 3px solid var(--journey-ring); outline-offset: 2px; border-color: var(--journey-ring); }
.explore-area-field > .icon:last-child { flex-shrink: 0; color: var(--color-accent); pointer-events: none; }

/* Verdict badges stay legible without taking over the compact thumbnail. */
.place-image-wrap > .verdict { left: 9px; bottom: auto; top: 9px; max-width: calc(100% - 18px); padding: 4px 7px; border-radius: 7px; gap: 4px; font-size: 11px; line-height: 1.2; white-space: nowrap; box-shadow: 0 2px 7px #173f3020; }
.place-image-wrap > .verdict[data-tone="prepare"] { color: var(--color-accent-700); background: var(--color-accent-100); }
.place-image-wrap > .verdict[data-tone="ok"] { color: #285440; background: #eff8e6; }
.place-image-wrap > .verdict .icon { width: 12px; height: 12px; }

@media (min-width: 1201px) {
  .explore-filter-panel .explore-area-field { min-height: 40px; }
  .explore-filter-panel .explore-area-field > .explore-area-select { font-size: 13px; }
  .place-image-wrap > .verdict { left: 7px; top: 7px; padding: 3px 6px; font-size: 10px; }
}
@media (max-width: 640px) {
  .explore-filter-panel .explore-area-field { min-height: 44px; border-radius: 12px; }
  .explore-filter-panel .explore-area-field > .explore-area-select { font-size: 16px; }
  .place-image-wrap > .verdict { left: 10px; top: 10px; padding: 5px 8px; font-size: 12px; }
}

/* Mobile search cards share the same image and text rows, regardless of copy length. */
@media (max-width: 640px) {
  .explore-results-column .place-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; align-items: stretch; }
  .explore-results-column .place-open { display: flex; flex-direction: column; align-items: stretch; justify-content: flex-start; }
  .explore-results-column .place-image-wrap { width: 100%; aspect-ratio: 3 / 2; flex-shrink: 0; }
  .explore-results-column .place-card-body { display: grid; grid-template-rows: 18px 2.8em 36px 38px 44px; gap: 8px; padding: 12px; width: 100%; min-width: 0; font-size: 16px; }
  .explore-results-column .place-meta { margin: 0; font-size: 11px; line-height: 18px; overflow: hidden; white-space: nowrap; }
  .explore-results-column .place-card-body h2 { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; margin: 0; font-size: 16px; line-height: 1.4; word-break: normal; overflow-wrap: anywhere; }
  .explore-results-column .place-address { align-items: flex-start; gap: 4px; margin: 0; min-height: 0; font-size: 11px; line-height: 18px; }
  .explore-results-column .place-address > .icon { margin-top: 2px; width: 12px; height: 14px; }
  .explore-results-column .place-address-text { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow-wrap: anywhere; }
  .explore-results-column .place-tags { align-content: flex-start; min-height: 0; max-height: 38px; overflow: hidden; font-size: 10px; line-height: 15px; gap: 4px; }
  .explore-results-column .place-tags span { padding: 4px 6px; }
  .explore-results-column .place-card-foot { margin: 0; padding: 8px 0 0; gap: 5px; font-size: 11px; line-height: 16px; }
  .explore-results-column .place-card-foot > .icon { width: 14px; height: 14px; }
  .explore-results-column .place-image-wrap > .verdict { top: auto; bottom: 7px; left: 7px; max-width: calc(100% - 14px); padding: 4px 6px; font-size: 10px; line-height: 1.3; white-space: normal; text-align: left; }
}

/* PC 여행지 찾기 3단 — 필터·결과·지도를 같은 급의 카드 셋으로 묶는다.
   세 카드의 윗선, 머리띠 높이·구분선, 첫 콘텐츠 시작선, 아랫선이 모두 같다. 색·카드 스타일은 기존 것을 그대로 쓴다. */
@media (min-width: 1201px) {
  .explore-workspace { --explore-band: 64px; --explore-lead: 12px; grid-template-columns: clamp(240px, 20%, 300px) minmax(0, 43fr) minmax(360px, 38fr); gap: 24px; }
  /* 필터: '검색 필터'를 머리띠로 만든다. 패널 gap(9px)에 3px을 더해 시작선을 맞춘다.
     카드는 줄 높이까지 늘어나고, 남는 높이는 유형 목록과 '현재 동행' 사이에 둔다(동행·토글이 카드 바닥에 앉는다). */
  .explore-filter-panel { padding-top: 0; grid-template-rows: auto auto 1fr auto auto; }
  .explore-filter-panel .explore-categories { align-self: start; gap: 6px; }
  /* 카드가 목록 높이만큼 길어졌으니 위 블록에서 압축했던 컨트롤 높이는 기본값으로 되돌려 빈 구간을 줄인다. */
  .explore-filter-panel .explore-search { gap: 8px; }
  .explore-filter-panel .explore-search-input,
  .explore-filter-panel .explore-search > .btn-primary,
  .explore-filter-panel .explore-area-field { min-height: 44px; }
  .explore-filter-panel .explore-category { min-height: 38px; }
  .explore-filter-label { box-sizing: border-box; height: var(--explore-band); margin: 0 -13px calc(var(--explore-lead) - 9px); padding: 0 17px; border-bottom: 1px solid var(--color-divider); }
  /* 결과: 개수 문구가 머리띠, 페이지 번호와 출처 문구가 꼬리인 카드. 양옆 카드와 같은 테두리·그림자를 쓴다. */
  .explore-results-column { box-sizing: border-box; display: flex; flex-direction: column; padding: 0 10px 12px; border: 1px solid var(--color-divider); border-radius: 18px; background: white; box-shadow: 0 8px 24px #173f3009; }
  .explore-results-column .results-toolbar { box-sizing: border-box; flex-shrink: 0; height: var(--explore-band); margin: 0 -10px var(--explore-lead); padding: 0 17px; border-bottom: 1px solid var(--color-divider); align-items: center; flex-wrap: nowrap; }
  .explore-results-column .list-tail { margin-top: auto; }
  .explore-results-column .pagination { margin: 18px 0 4px; }
  .explore-results-column .results-source { margin: 10px 0 2px; }
  .explore-map-head { box-sizing: border-box; height: var(--explore-band); padding: 0 17px; }
  .explore-map-stage { padding-top: var(--explore-lead); }
  /* 본문이 화면 위쪽에 떠 보이지 않게: 70vh 최소 높이를 풀고 푸터 앞에는 섹션 간격만 남긴다. */
  .main:has(> .explore-workspace) { min-height: 0; padding-bottom: 64px; }
}
/* 넓은 모니터에서 검색 화면이 가운데에 작게 뭉치지 않도록 이 화면의 컨테이너만 한 단계 넓힌다(화면의 약 65~70%).
   머리말·꼬리말도 같은 선에 맞춘다 — 본문만 넓히면 로고와 본문 좌측선이 어긋난다. */
@media (min-width: 1600px) {
  .main:has(> .explore-workspace),
  body:has(.main > .explore-workspace) .header-inner,
  body:has(.main > .explore-workspace) .footer-inner { max-width: clamp(1360px, calc(70vw + 96px), 1776px); }
}

/* 페이지 넘김: 보던 목록과 지도를 지우지 않는다. 목록만 살짝 물렸다가 새 결과가 그 자리에 붙는다.
   진행 표시는 개수 문구 옆의 작은 고리 하나뿐이고, 머리띠 안이라 카드 높이를 바꾸지 않는다. */
.explore-results-column .place-grid { transition: opacity .18s ease; }
.explore-results-column.is-fetching .place-grid { opacity: .68; pointer-events: none; }
.explore-results-column .results-toolbar { justify-content: flex-start; gap: 10px; }
/* 페이지 번호를 쓰는 폭에서만. 모바일은 개수 문구가 길어 줄바꿈을 막으면 넘친다. */
@media (min-width: 641px) { .explore-results-column .results-toolbar > p { flex-shrink: 0; white-space: nowrap; } }
.results-status { display: flex; align-items: center; gap: 8px; min-width: 0; color: var(--color-neutral-800); font-size: 12px; white-space: nowrap; }
.results-status > span:not(.results-spinner):not(.sr-only) { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.results-status .text-link { flex-shrink: 0; }
.results-status:empty { display: none; }
.results-status .text-link { font-size: 12px; }
.results-spinner { flex-shrink: 0; width: 14px; height: 14px; border: 2px solid var(--color-accent-200); border-top-color: var(--color-accent); border-radius: 50%; animation: spin .8s linear infinite; }
.results-status .sr-only { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
/* 누른 번호는 '받는 중'만 표시한다. 선택 표시는 새 결과가 온 뒤에 옮겨 간다. */
.page-btn[aria-busy="true"] { border-color: var(--color-accent-300); background: var(--color-accent-100); color: var(--color-accent); }
