.visitor-section { margin: 30px 0; scroll-margin-top: 24px; }
.visitor-section h2 { margin-bottom: 10px; }
.visitor-banner { display: flex; align-items: center; justify-content: space-between; gap: 24px; background: #edf1e7; padding: 30px; }
.visitor-banner h1 { font-size: clamp(26px, 3vw, 38px); margin: 10px 0; }
.visitor-banner img { flex: 0 0 auto; object-fit: contain; }
.visitor-tabs, .topic-links, .social-actions, .share-actions { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; }
.visitor-tabs { margin-top: 22px; }
.visitor-tabs a, .topic-link { padding: 12px 16px; border-radius: 12px; background: #fff; color: #194f4b; text-decoration: none; min-height: 44px; }
.booking-grid, .social-grid, .notice-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
.booking-card { display: grid; grid-template-columns: 115px minmax(0, 1fr); gap: 18px; padding: 22px; align-items: start; }
.booking-card > img { width: 115px; height: 115px; object-fit: cover; border-radius: 16px; }
.booking-card h3, .social-card h3 { margin: 8px 0; font-size: 19px; }
.booking-card p, .visitor-notice p, .social-card p, .public-trip p, .public-trip li { line-height: 1.85; color: #52655d; }
.booking-card a, .social-card a { text-decoration: none; font-size: 14px; }
.booking-card .eyebrow, .social-card .eyebrow { letter-spacing: 1px; }
.visitor-route, .visitor-home-link { display: flex; align-items: center; justify-content: space-between; gap: 24px; padding: 25px; background: #f2eee3; margin-top: 22px; }
.visitor-route button, .visitor-home-link button { flex-shrink: 0; }
.visitor-notice { padding: 20px; align-self: start; }
.visitor-notice summary { cursor: pointer; min-height: 44px; display: list-item; font-weight: 600; line-height: 1.8; }
.social-card, .topic-panel { padding: 24px; }
.topic-panel { margin-top: 18px; }
.visitor-search { display: flex; align-items: end; flex-wrap: wrap; gap: 12px; margin: 18px 0; }
.visitor-search label { flex: 1 1 200px; }
.visitor-search input { display: block; width: 100%; min-width: 0; }
.visitor-search > span { flex-basis: 100%; font-size: 13px; }
.social-theme { border-top: 1px solid #e2e5da; margin-top: 18px; padding-top: 18px; }
.social-theme .topic-links { margin-top: 10px; }
.trip-dialog { width: min(720px, calc(100vw - 24px)); }
.trip-dialog p { line-height: 1.8; }
.trip-dialog input, .trip-dialog textarea { width: 100%; min-width: 0; }
.trip-dialog label { display: block; margin: 15px 0; }
.trip-dialog fieldset { min-width: 0; padding: 16px; margin: 20px 0; border: 1px solid #d7dfd0; border-radius: 14px; }
.trip-dialog .consent-label { display: flex; gap: 12px; align-items: flex-start; line-height: 1.8; }
.trip-dialog .consent-label input { flex: 0 0 auto; width: 22px; height: 22px; margin-top: 3px; }
.poster-preview img { display: block; width: 100%; height: auto; margin-top: 20px; border-radius: 10px; }
.poster-preview a { display: inline-flex; text-decoration: none; }
.share-status, .poster-status, .detail-status { color: #805123; overflow-wrap: anywhere; }
.planner-share-actions { border-top: 1px solid #e4e7dc; padding-top: 24px; margin-top: 24px; }
.planner-share-actions p { flex-basis: 100%; }
.saved-trip { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; border-bottom: 1px solid #ddd; padding: 16px 0; }
.saved-trip strong { flex-basis: 100%; overflow-wrap: anywhere; }
.public-trip { max-width: 1000px; margin: auto; padding: 28px 24px 70px; overflow-wrap: anywhere; }
.public-trip .panel { padding: 26px; margin: 18px 0; }
.public-trip .booking-card { margin: 0; padding: 20px; }
.public-trip-header { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 28px; }
.public-trip-header a { font-size: 24px; font-weight: 700; color: #194f4b; text-decoration: none; }
.public-trip-header span { font-size: 12px; }
.public-trip .shared-heading { background: #edf1e7; }
.public-trip h1 { font-size: clamp(26px, 4vw, 40px); }
.public-trip footer { margin-top: 32px; font-size: 12px; color: #52655d; }
.public-trip .outline-button, .public-trip .primary-button { text-decoration: none; }
@media (max-width: 1100px) { .booking-card { grid-template-columns: minmax(0, 1fr); } .booking-card > img { width: 100%; height: 150px; } }
@media (max-width: 600px) {
  .booking-grid, .social-grid, .notice-grid { grid-template-columns: minmax(0, 1fr); }
  .visitor-banner { padding: 22px; gap: 10px; align-items: flex-start; }
  .visitor-banner > div { min-width: 0; }
  .visitor-banner > img { display: none; }
  .visitor-tabs { gap: 8px; }
  .visitor-tabs a { padding: 10px; font-size: 13px; }
  .visitor-route, .visitor-home-link { display: block; }
  .visitor-route button, .visitor-home-link button { margin-top: 12px; }
  .social-card, .topic-panel { padding: 20px; }
  .public-trip { padding: 18px 12px 40px; }
  .public-trip .panel { padding: 20px; }
  .public-trip-header { flex-wrap: wrap; }
  .public-trip .booking-card { grid-template-columns: minmax(0, 1fr); }
  .share-actions > button, .share-actions > a { max-width: 100%; white-space: normal; }
  .visitor-section .panel-heading { flex-wrap: wrap; gap: 10px; }
}
