/* Shared, data-backed exploration and personal trip surfaces. */
* { letter-spacing: 0; }
body { background: #edf2f6; }
.welcome-copy h1 { word-break: keep-all; overflow-wrap: normal; font-size: 24px; }
.welcome-copy p { word-break: keep-all; }
button, a, input, select, textarea { -webkit-tap-highlight-color: transparent; }
button:focus-visible, a:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible { outline: 3px solid #1477eb; outline-offset: 3px; }
button:disabled { opacity: .55; cursor: not-allowed; }
.phone-screen { overflow-wrap: anywhere; }
.explore-page h1, .place-detail h1, .schedule-page h1, .itinerary-page h1, .my-page h1, .today-page h1 { font-size: 25px; line-height: 1.3; }
.phone-screen h2 { font-size: 18px; line-height: 1.4; }
.bottom-nav { z-index: 1200; }
.topbar { min-height: 64px; }
.screen-title { min-width: 0; }
.connection-notice { padding: 12px; background: #fff5d9; border-left: 3px solid #d89b00; color: #624a12; font-size: 13px; }
.explore-page, .place-detail, .schedule-page, .itinerary-page, .my-page, .today-page { padding-bottom: 20px; }
.empty-state { color: #617286; padding: 30px 0; line-height: 1.7; }
.empty-state .text-button, .empty-state .ghost { margin: 8px 12px 0 0; }
.source-note { color: #617286; font-size: 12px; line-height: 1.7; margin: 14px 0; }
.media-filter-row { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 16px; padding: 12px 0; }
@media (max-width: 480px) { .media-filter-row { column-gap: 8px; } }
.media-filter { display: inline-flex; align-items: center; gap: 8px; font-size: 13px; line-height: 1.6; cursor: pointer; }
.media-filter input { width: 18px; height: 18px; margin: 0; accent-color: #147567; flex-shrink: 0; }
.media-filter:has(input:disabled) { color: #617286; cursor: default; }
.media-count, .media-note { font-size: 12px; line-height: 1.7; color: #617286; }
.media-note { flex-basis: 100%; }
.media-note .text-button { font-size: 12px; padding: 4px 0; }
.guide-progress { display: grid; gap: 4px; }
.guide-progress .text-button { justify-self: start; }
.place-guide-badge { display: inline-flex; align-items: center; gap: 4px; font-size: 12px; color: #617286; overflow-wrap: anywhere; }
.place-guide-badge svg { width: 14px; height: 14px; flex-shrink: 0; }
.place-guide-badge.has-guide { color: #147567; }
.home-place .place-guide-badge { margin: 0 12px 10px; padding-right: 22px; }
.home-places:has(> .empty-state) { display: block; }
.photo-placeholder { align-content: center; gap: 6px; padding: 8px; text-align: center; }
.photo-placeholder span { font-size: 11px; line-height: 1.6; }
.place-audio-check { margin: 16px 0; border-block: 1px solid #e1e8ed; padding: 12px 0; }
.place-audio-check > summary { cursor: pointer; font-size: 13px; color: #526875; min-height: 32px; align-content: center; }
.place-audio-check > summary .svg-icon { width: 18px; height: 18px; vertical-align: middle; margin-right: 4px; }
.place-audio-check > p, .place-audio-check > div { font-size: 13px; line-height: 1.6; }
.home-photo .photo-placeholder, .home-photo .home-image { width: 100%; height: 100%; }
.home-audio { display: flex; align-items: center; justify-content: space-between; gap: 14px; width: 100%; padding: 18px 0; margin: 12px 0; border-block: 1px solid #e0e8f0; background: transparent; color: #14695c; text-align: left; }
.home-audio span { display: flex; align-items: center; gap: 12px; }
[data-audio-page] h1 { display: flex; align-items: center; gap: 10px; }
.text-button { display: inline-flex; align-items: center; justify-content: center; background: transparent; color: #0763ca; padding: 10px 4px; }
.explore-search { display: flex; gap: 8px; margin: 18px 0; }
.explore-search input { min-width: 0; flex: 1; padding: 12px; border: 1px solid #c5d3e2; border-radius: 6px; font: inherit; background: white; }
.explore-search button { flex-shrink: 0; border-radius: 6px; padding: 10px 16px; }
.explore-filters { display: flex; flex-wrap: wrap; gap: 14px; align-items: end; justify-content: space-between; margin-bottom: 16px; }
.explore-filters .segmented { margin: 0; display: flex; padding: 4px; border-radius: 6px; background: #edf2f7; }
.explore-filters .segmented button { min-width: 85px; padding: 10px; background: transparent; color: #456; border-radius: 4px; }
.explore-filters .segmented button.selected { background: #0877ff; color: white; }
.explore-filters label { color: #617286; display: flex; flex-direction: column; gap: 4px; font-size: 12px; max-width: 100%; }
.explore-filters select { font: inherit; font-size: 13px; max-width: 100%; background: white; color: #234; border: 1px solid #c5d3e2; border-radius: 4px; padding: 10px; }
.live-map { height: 310px; width: 100%; isolation: isolate; position: relative; background: #edf2f4; border: 1px solid #d6e1e8; border-radius: 6px; overflow: hidden; margin: 16px 0; }
.live-map button, .live-map a { letter-spacing: 0; }
.live-map .leaflet-container { font-family: inherit; }
.live-map .leaflet-control-attribution { font-size: 10px; }
.explore-page .live-map { height: 430px; max-height: 64svh; min-height: 300px; }
.map-rich-marker { background: transparent; border: 0; }
.map-place-pin { display: flex; align-items: center; gap: 4px; width: 136px; height: 36px; padding: 0; border: 0; background: transparent; box-shadow: none; position: relative; color: #173347; }
.map-pin-symbol { display: grid; place-items: center; flex: 0 0 24px; height: 24px; border-radius: 50%; background: #edf4ff; color: #1478e3; }
.map-pin-symbol .svg-icon { width: 16px; height: 16px; }
.pin-food .map-pin-symbol { background: #fff3df; color: #b06c08; }
.pin-beach .map-pin-symbol { background: #e4f6ff; color: #047eac; }
.pin-photo .map-pin-symbol { background: #f2edff; color: #8554c7; }
.pin-attraction .map-pin-symbol { background: #edf6ef; color: #36754d; }
.pin-activity .map-pin-symbol { background: #e6f7f1; color: #14866c; }
.pin-lodging .map-pin-symbol { background: #0877ff; color: #fff; }
.map-pin-copy { display: flex; flex-direction: column; gap: 1px; min-width: 0; flex: 1; text-shadow: -1px -1px 1px #fff, 1px -1px 1px #fff, -1px 1px 1px #fff, 1px 1px 1px #fff; }
.map-pin-copy strong { font-size: 11px; line-height: 1.3; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.map-pin-copy small { font-size: 10px; line-height: 1.35; display: flex; align-items: center; gap: 4px; color: var(--forecast-color); white-space: nowrap; }
.map-pin-copy i { width: 5px; height: 5px; background: var(--forecast-color); border-radius: 50%; flex-shrink: 0; }
.map-rich-marker.pin-compact { width: 24px !important; }
.pin-compact .map-place-pin { width: 24px; }
.pin-compact .map-pin-symbol { box-shadow: 0 0 0 1px var(--forecast-color); }
.pin-compact .map-pin-copy { display: none; }
.map-rich-marker.pin-flipped:not(.pin-compact) .map-place-pin, .map-rich-marker.pin-flipped:hover .map-place-pin, .map-rich-marker.pin-flipped:focus .map-place-pin { transform: translateX(-112px); flex-direction: row-reverse; }
.map-rich-marker:hover, .map-rich-marker:focus { z-index: 1600 !important; width: 136px !important; outline: none; }
.map-rich-marker:hover .map-place-pin, .map-rich-marker:focus .map-place-pin { width: 136px; }
.map-rich-marker:hover .map-pin-copy, .map-rich-marker:focus .map-pin-copy { display: flex; }
.map-rich-marker:focus-visible .map-place-pin { outline: 2px solid #0877ff; outline-offset: 2px; }
.map-prediction-note { position: absolute; top: 6px; left: 52px; right: 52px; z-index: 450; margin: 0; text-align: center; font-size: 10px; line-height: 1.4; color: #344d60; text-shadow: -1px -1px 1px #fff, 1px 1px 1px #fff; pointer-events: none; }
/* Leaflet loads later and sets marker icons to block; keep the dot centered. */
.leaflet-marker-icon.map-current-location { background: #0877ff24; border-radius: 50%; box-shadow: 0 0 0 12px #0877ff18; display: grid; place-items: center; }
.map-current-location > span { display: block; box-sizing: border-box; width: 16px; height: 16px; border-radius: 50%; border: 3px solid #fff; background: #0877ff; box-shadow: 0 1px 6px #17487966; }
.map-forecast-key { margin: 8px 0 20px; display: grid; gap: 8px; color: #526875; }
.map-forecast-key > strong { font-size: 12px; line-height: 1.5; }
.map-forecast-key > small { font-size: 10px; line-height: 1.6; }
.map-forecast-key a { color: inherit; text-underline-offset: 2px; }
.map-level-key { display: flex; flex-wrap: wrap; gap: 8px 14px; font-size: 11px; }
.map-level-key > span { display: inline-flex; align-items: center; gap: 5px; }
.map-level-key i { width: 7px; height: 7px; flex-shrink: 0; border-radius: 50%; }
.map-toolbar { display: flex; flex-wrap: wrap; gap: 12px; margin-bottom: 18px; }
.map-toolbar .ghost { display: inline-flex; gap: 8px; align-items: center; padding: 10px 14px; border-radius: 6px; }
.result-list { display: grid; grid-template-columns: minmax(0,1fr); }
.result-card { border-bottom: 1px solid #e0e8f0; padding: 18px 0; min-width: 0; }
.result-open { width: 100%; display: grid; grid-template-columns: 108px minmax(0,1fr); gap: 18px; padding: 0; background: transparent; color: inherit; text-align: left; }
.result-open.no-photo { grid-template-columns: minmax(0,1fr); }
.place-photo, .photo-placeholder { width: 108px; height: 100px; object-fit: cover; border-radius: 6px; background: #edf3f7; }
.photo-placeholder { display: grid; place-items: center; color: #8297a7; }
.photo-placeholder svg { width: 32px; height: 32px; }
.result-copy { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.result-copy strong { font-size: 17px; line-height: 1.4; overflow-wrap: anywhere; }
.result-copy > span { font-size: 13px; color: #617286; }
.result-copy small { color: #31766b; font-size: 11px; }
.place-actions { display: flex; align-items: center; gap: 12px; justify-content: flex-end; margin-top: 10px; }
.place-actions button { display: inline-flex; align-items: center; justify-content: center; gap: 7px; border-radius: 6px; min-height: 42px; }
.place-actions .primary { font-size: 13px; padding: 10px 14px; }
.place-actions .is-saved { color: #0877ff; background: #eaf2ff; }
.place-actions .is-saved svg { fill: #d4e7ff; }
.place-actions .icon-button { width: 44px; height: 44px; flex-shrink: 0; }
.detail-image { width: 100%; height: 320px; object-fit: cover; margin: 8px 0 12px; }
.app-shell.detail-app-shell .phone-screen { background: #fff; padding: 0; }
.detail-refresh { --detail-accent: #6536e8; padding-bottom: calc(86px + env(safe-area-inset-bottom, 0px)); }
.detail-refresh .detail-hero { position: relative; min-height: calc(80px + env(safe-area-inset-top, 0px)); background: #f1f5fa; }
.detail-refresh .detail-image { display: block; width: 100%; height: 330px; margin: 0; border-radius: 0; object-fit: cover; }
.detail-toolbar { position: absolute; inset: 0 0 auto; display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; padding: calc(16px + env(safe-area-inset-top, 0px)) var(--app-gutter) 16px; }
.detail-toolbar-right { display: flex; align-items: center; gap: 8px; }
.detail-refresh .detail-toolbar .icon-button { display: grid; place-items: center; width: 40px; height: 40px; min-width: 40px; border-radius: 50%; color: #293448; background: #fff; box-shadow: 0 2px 8px #132b4414; }
.detail-toolbar .is-saved svg { color: #6536e8; fill: #eee7ff; }
.detail-toolbar .svg-icon { width: 20px; height: 20px; }
.detail-language { max-width: 112px; min-height: 40px; padding: 0 8px; border: 0; border-radius: 6px; background: #fff; color: #293448; font: inherit; font-size: 12px; box-shadow: 0 2px 8px #132b4414; }
.detail-content { position: relative; background: #fff; padding: 22px var(--app-gutter) 0; }
.has-hero .detail-content { margin-top: -18px; border-radius: 20px 20px 0 0; }
.detail-heading { display: grid; grid-template-columns: minmax(0,1fr) 90px; align-items: start; gap: 16px; padding-bottom: 20px; }
.detail-heading-copy { min-width: 0; }
.detail-refresh .detail-heading h1 { margin: 0 0 8px; font-size: 25px; line-height: 1.3; color: #192036; overflow-wrap: anywhere; }
.detail-address { color: #757b8c; font-size: 12px; line-height: 1.65; margin: 0; }
.detail-meta-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 0 14px; }
.detail-refresh .detail-text-button { display: inline-flex; align-items: center; gap: 4px; min-height: 36px; padding: 5px 0; font-size: 12px; line-height: 1.5; font-weight: 500; background: transparent; color: #386bd5; border-radius: 0; text-align: left; }
.detail-text-button svg { width: 15px; height: 15px; flex-shrink: 0; }
.detail-phone { font-size: 12px; color: #647080; text-decoration: none; padding: 8px 0; }
.detail-category { display: inline-flex; align-items: center; gap: 5px; max-width: 100%; margin-top: 3px; padding: 5px 8px; border: 1px solid #e9edf3; border-radius: 6px; color: #607384; font-size: 10px; line-height: 1.5; }
.detail-category svg { width: 14px; height: 14px; flex-shrink: 0; }
.detail-category.category-beach { color: #277ea3; background: #f4fbfe; }
.detail-category.category-food { color: #997020; background: #fffbf1; }
.detail-nubi { display: flex; flex-direction: column; align-items: center; gap: 7px; padding-top: 2px; }
.detail-nubi > span { position: relative; border-radius: 7px; padding: 7px; background: #f5f4fa; color: #66677f; text-align: center; font-size: 10px; line-height: 1.4; }
.detail-nubi > span::after { content: ''; position: absolute; bottom: -4px; left: 50%; width: 8px; height: 8px; background: #f5f4fa; transform: rotate(45deg); }
.detail-nubi img { display: block; width: 72px; height: 90px; object-fit: contain; }
.detail-refresh h2 { font-size: 15px; margin: 0; color: #293044; }
.detail-refresh .place-audio { margin: 0 0 18px; padding: 14px; background: #faf8ff; border: 1px solid #eee8fa; border-radius: 8px; box-shadow: none; }
.detail-refresh .place-audio-heading { gap: 6px 12px; }
.detail-refresh .place-audio-heading h2 { font-size: 14px; gap: 6px; }
.detail-refresh .place-audio-heading h2 svg { width: 18px; height: 18px; color: #7646ea; }
.detail-refresh .place-audio-heading > span { font-size: 10px; color: #8768b0; }
.detail-refresh .place-audio .audio-story { position: relative; padding: 14px 0 0; border-bottom: 0; }
.detail-refresh .place-audio .audio-story h3 { font-size: 12px; line-height: 1.5; margin: 0 0 4px 54px; }
.compact-audio-controls { position: relative; min-height: 32px; margin-left: 54px; }
.compact-audio-controls [data-audio-toggle] { position: absolute; left: -54px; bottom: 0; width: 44px; height: 44px; display: grid; place-items: center; border-radius: 50%; background: #7141ec; color: #fff; font-size: 17px; }
.compact-audio-controls [data-audio-toggle] .svg-icon { width: 18px; height: 18px; }
.detail-panel [data-share-link] { font-size: 13px; }
.detail-panel [data-copy-place-link] { margin-top: 16px; }
.detail-panel [data-share-status] { font-size: 13px; color: #647080; }
.compact-audio-track { min-width: 0; }
.compact-audio-track input { display: block; width: 100%; height: 16px; padding: 0; margin: 0; cursor: pointer; accent-color: #8054ed; }
.compact-audio-times { display: flex; justify-content: space-between; gap: 8px; font-size: 10px; color: #837297; font-variant-numeric: tabular-nums; }
.detail-refresh .audio-story audio[hidden], .compact-audio-controls[hidden] { display: none; }
.detail-refresh .audio-story details { margin-top: 3px; }
.detail-refresh .audio-story summary { font-size: 11px; min-height: 32px; padding: 8px 0 4px; color: #8060b0; }
.detail-refresh .audio-story details p { margin: 4px 0 10px; font-size: 13px; }
.detail-refresh [data-audio-playback-error]:not([hidden]) { font-size: 12px; line-height: 1.6; color: #a24d58; }
.detail-refresh .place-audio-footer { padding-top: 2px; }
.detail-refresh .place-audio-footer a { color: #9a8aa9; font-size: 10px; text-decoration: none; }
.detail-refresh .detail-about { display: flex; align-items: center; gap: 18px; padding: 16px 0; border-block: 1px solid #edf0f4; }
.detail-about-copy { flex: 1; min-width: 0; }
.detail-about-copy h2 { margin-bottom: 8px; }
.detail-description-credit { margin: 8px 0; color: #667586; font-size: 11px; line-height: 1.5; overflow-wrap: anywhere; }
.detail-excerpt { min-width: 0; margin: 0; font-size: 12px; line-height: 1.8; color: #757b8c; overflow-wrap: anywhere; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.detail-refresh .detail-about-image { flex: 0 0 30%; width: 30%; height: 108px; object-fit: cover; border-radius: 8px; }
.detail-source { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 4px 12px; padding: 0 0 16px; font-size: 11px; }
.detail-source .source-note { font-size: 11px; margin: 0; color: #87909d; }
.detail-source a { color: #657183; text-decoration: none; }
.detail-actionbar { position: fixed; z-index: 1250; left: 50%; bottom: 0; transform: translateX(-50%); width: min(100%, var(--app-width)); display: flex; align-items: stretch; gap: 8px; background: #fff; border-top: 1px solid #eaeaf1; padding: 12px var(--app-gutter) calc(12px + env(safe-area-inset-bottom, 0px)); box-shadow: 0 -4px 16px #23253b05; }
.detail-refresh .detail-actionbar .place-actions { display: flex; flex: 1; padding: 0; margin: 0; border: 0; gap: 8px; }
.detail-actionbar button { min-width: 0; min-height: 44px; padding: 8px; font-size: 12px; line-height: 1.4; white-space: normal; border-radius: 7px; }
.detail-actionbar > button { display: flex; flex: 1; align-items: center; justify-content: center; gap: 6px; background: #fff; border: 1px solid #e5e6ef; color: #434861; }
.detail-actionbar button svg { width: 18px; height: 18px; flex-shrink: 0; }
.detail-actionbar > .detail-save { flex: .72; }
.detail-actionbar > .detail-route { flex: 1.2; background: #6536e8; color: #fff; border-color: #6536e8; }
.detail-actionbar > .is-saved { color: #6536e8; }
.detail-actionbar > .is-saved svg { fill: #eee7ff; }
.detail-panel { width: min(560px, calc(100% - 32px)); max-width: none; max-height: min(720px, calc(100dvh - 48px)); padding: 0; border: 1px solid #e7eaf0; border-radius: 8px; background: #fff; color: #252d38; overflow: hidden; box-shadow: 0 16px 60px #16233524; }
.detail-panel[open] { display: flex; flex-direction: column; }
.detail-panel::backdrop { background: #15233166; }
.detail-panel > header { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; padding: 22px 22px 16px; border-bottom: 1px solid #edf0f4; flex-shrink: 0; }
.detail-panel > header > div { min-width: 0; }
.detail-panel h2 { margin: 0; font-size: 18px; line-height: 1.5; }
.detail-panel > header p { margin: 4px 0 0; color: #717985; font-size: 13px; line-height: 1.5; overflow-wrap: anywhere; }
.detail-panel .icon-button { flex-shrink: 0; width: 40px; height: 40px; color: #465362; background: #f4f6f8; border-radius: 50%; }
.detail-panel-body { padding: 20px 22px 24px; min-height: 0; overflow-y: auto; overscroll-behavior: contain; }
.detail-full-description { margin: 0; font-size: 15px; line-height: 1.9; white-space: pre-line; overflow-wrap: anywhere; color: #4b5665; }
.detail-panel-map { width: 100%; height: min(360px, 45dvh); min-height: 180px; border-radius: 8px; overflow: hidden; background: #f2f5f8; }
.detail-panel-address { margin: 14px 0; color: #667180; font-size: 13px; line-height: 1.7; overflow-wrap: anywhere; }
.detail-panel-body > .primary { display: flex; gap: 8px; align-items: center; justify-content: center; width: 100%; min-height: 46px; border-radius: 8px; font-size: 14px; }
.place-forecast { padding: 18px 0; border-top: 1px solid #edf0f4; }
.detail-about + .place-forecast { border-top: 0; }
.place-forecast > header { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 6px 14px; }
.place-forecast > header > span { color: #79828f; font-size: 11px; }
.forecast-window { display: flex; gap: 4px; width: fit-content; padding: 3px; margin: 14px 0 10px; background: #f2f5f8; border-radius: 6px; }
.forecast-window button { background: transparent; color: #6c7887; border-radius: 4px; padding: 6px 10px; min-height: 34px; font-size: 12px; }
.forecast-window [aria-pressed="true"] { background: #fff; color: #226be0; box-shadow: 0 1px 3px #182e4820; }
.place-forecast-scroll { overflow-x: auto; overscroll-behavior-x: contain; scrollbar-width: thin; padding-bottom: 8px; }
.place-forecast-days { display: grid; grid-template-columns: repeat(var(--forecast-days),minmax(46px,1fr)); list-style: none; gap: 4px; padding: 0; margin: 0; }
.place-forecast-days li { display: flex; flex-direction: column; align-items: center; gap: 10px; padding: 10px 2px; min-width: 0; text-align: center; border-radius: 6px; }
.place-forecast-days .is-today { background: #f4f7fb; }
.place-forecast-days time { font-size: 11px; color: #79828e; }
.place-forecast-days .svg-icon { display: block; width: 22px; height: 22px; }
.place-forecast-days small { font-size: 10px; line-height: 1.4; overflow-wrap: anywhere; }
.forecast-level-quiet { color: #21864b; }
.forecast-level-moderate { color: #a16d08; }
.forecast-level-busy { color: #d44358; }
.forecast-level-unknown { color: #98a2af; }
.forecast-basis { font-size: 11px; color: #7a8491; line-height: 1.7; margin: 8px 0; }
.place-forecast footer { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 5px 12px; font-size: 10px; color: #8b95a2; }
.place-forecast footer a { color: inherit; }
@media (max-width: 600px) {
  .detail-refresh .detail-image { height: 246px; }
  .detail-refresh .detail-heading h1 { font-size: 23px; }
  .detail-panel { width: 100%; margin: auto 0 0; max-height: calc(100dvh - 56px); border: 0; border-radius: 8px 8px 0 0; }
  .detail-panel > header { padding: 20px 20px 16px; }
  .detail-panel-body { padding: 18px 20px calc(24px + env(safe-area-inset-bottom, 0px)); }
}
@media (max-width: 360px) {
  .detail-heading { grid-template-columns: minmax(0,1fr) 68px; gap: 10px; }
  .detail-nubi img { width: 58px; height: 80px; }
  .detail-nubi > span { font-size: 9px; }
  .detail-refresh .detail-about-image { flex-basis: 78px; width: 78px; height: 94px; }
  .detail-refresh .detail-about { gap: 12px; }
  .detail-actionbar { gap: 5px; }
  .detail-actionbar > button { gap: 4px; font-size: 11px; padding: 7px 4px; }
}
.photo-placeholder.detail-image { height: 130px; }
.place-detail h1 { margin: 14px 0 8px; }
.place-detail .place-actions { justify-content: flex-start; padding: 8px 0 18px; border-bottom: 1px solid #e0e8f0; }
.place-overview { white-space: pre-line; font-size: 15px; line-height: 1.8; padding: 12px 0; }
.place-audio { padding: 20px 0 10px; border-bottom: 1px solid #e0e8f0; min-width: 0; }
.place-audio-heading { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 8px 14px; }
.place-audio-heading h2 { display: flex; align-items: center; gap: 8px; margin: 0; min-width: 0; }
.place-audio-heading h2 svg { flex-shrink: 0; color: #147567; }
.place-audio-heading > span { font-size: 12px; color: #147567; }
.audio-story { display: block; min-width: 0; padding: 18px 0; border-bottom: 1px solid #e0e8f0; }
.audio-story > img { float: right; margin: 0 0 12px 12px; width: 64px; height: 64px; object-fit: cover; border-radius: 6px; }
.audio-story h3 { font-size: 16px; line-height: 1.5; margin: 0 0 10px; }
.audio-story audio { display: block; width: 100%; min-width: 0; max-width: 100%; height: 54px; clear: both; }
.audio-story details { clear: both; margin-top: 10px; }
.audio-story summary { cursor: pointer; padding: 8px 0; font-size: 14px; color: #0763ca; }
.audio-story details p { font-size: 14px; line-height: 1.8; white-space: pre-wrap; overflow-wrap: anywhere; }
.audio-distance, .audio-unavailable, .audio-empty { font-size: 13px; line-height: 1.7; color: #617286; }
.audio-unavailable { clear: both; padding: 10px 0; }
.nearby-audio { margin-top: 16px; }
.nearby-audio > summary { cursor: pointer; font-size: 14px; line-height: 1.7; padding: 12px 0; color: #40556c; }
.nearby-audio > summary span { font-size: 12px; color: #147567; margin-left: 6px; }
.place-audio-footer { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 8px 14px; padding-top: 12px; }
.place-audio-footer a { color: #617286; font-size: 12px; }
.place-audio-footer button { font-size: 13px; gap: 5px; }
.detail-links { display: flex; gap: 12px; flex-wrap: wrap; }
.detail-links a { display: inline-flex; align-items: center; justify-content: center; gap: 8px; border-radius: 6px; padding: 12px 16px; text-decoration: none; }
.schedule-place { display: flex; align-items: center; gap: 18px; padding: 20px 0; border-bottom: 1px solid #e0e8f0; margin-bottom: 20px; }
.schedule-place .place-photo, .schedule-place .photo-placeholder { flex-shrink: 0; width: 76px; height: 76px; }
.schedule-form { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr); gap: 18px; }
.schedule-form label, .trip-date, .language-setting { display: flex; flex-direction: column; gap: 8px; font-size: 14px; color: #4f6377; min-width: 0; }
.schedule-form input, .schedule-form textarea, .trip-date input, .language-setting select { min-width: 0; width: 100%; padding: 12px; font: inherit; color: #172e42; background: white; border: 1px solid #c5d3e2; border-radius: 6px; }
.schedule-form .wide { grid-column: 1 / -1; }
.schedule-form textarea { resize: vertical; }
.schedule-form [role=alert]:empty { display: none; }
.trip-date { max-width: 240px; }
.trip-dates { display: flex; gap: 8px; overflow-x: auto; padding: 16px 2px; }
.trip-dates button { padding: 10px 14px; white-space: nowrap; background: #edf2f7; color: #40556c; border-radius: 6px; }
.trip-dates button.selected { background: #0877ff; color: white; }
.trip-timeline { list-style: none; margin: 18px 0; padding: 0; }
.trip-timeline li { display: grid; grid-template-columns: 56px minmax(0,1fr); gap: 12px; }
.trip-timeline time { color: #0877ff; font-weight: 700; padding-top: 6px; font-size: 14px; }
.trip-stop { padding: 0 0 22px 18px; border-left: 2px solid #dae8f6; position: relative; min-width: 0; }
.trip-stop::before { content: ''; width: 8px; height: 8px; border-radius: 50%; background: #0877ff; position: absolute; left: -5px; top: 11px; }
.stop-name { display: block; text-align: left; font: inherit; font-size: 17px; font-weight: 700; background: transparent; color: #183044; padding: 4px 0; overflow-wrap: anywhere; }
.trip-stop p { margin: 7px 0; color: #617286; font-size: 13px; }
.trip-stop .trip-notes { white-space: pre-wrap; color: #2f5f56; }
.trip-controls { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 14px; }
.trip-controls a { display: inline-flex; align-items: center; gap: 5px; color: #0763ca; font-size: 13px; text-decoration: none; padding: 10px 0; }
.trip-controls button { font-size: 13px; }
.danger { color: #b6313d; }
.undo-notice { display: flex; justify-content: space-between; align-items: center; gap: 10px; background: #eaf7f1; padding: 12px; border-radius: 6px; }
.undo-notice button { background: transparent; color: #05624d; padding: 8px; font-weight: 700; }
.my-profile { display: flex; align-items: center; gap: 20px; padding: 10px 0 24px; }
.my-profile .nubi-avatar { width: 70px; height: 88px; background: none; margin: 0; }
.my-counts { display: flex; gap: 36px; border-block: 1px solid #e0e8f0; padding: 18px 0; margin-bottom: 24px; }
.my-counts > div { display: flex; flex-direction: column; gap: 4px; }
.my-counts strong { font-size: 26px; color: #0877ff; }
.my-counts span { font-size: 13px; color: #617286; }
.language-setting { margin-bottom: 30px; max-width: 320px; }
.connection-settings { margin-top: 25px; padding-top: 20px; border-top: 1px solid #e0e8f0; font-size: 13px; }
.connection-settings summary { cursor: pointer; padding: 10px 0; }
.connection-settings p { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 6px; }
.connection-settings span { color: #617286; }
.today-visit { display: flex; gap: 20px; width: 100%; text-align: left; color: inherit; background: transparent; padding: 24px 0; border-bottom: 1px solid #e0e8f0; }
.today-visit time { color: #0877ff; }
@media (max-width:520px) {
  .explore-page h1, .place-detail h1, .schedule-page h1, .itinerary-page h1, .my-page h1, .today-page h1 { font-size: 23px; }
  .result-open { grid-template-columns: 84px minmax(0,1fr); gap: 12px; }
  .result-open .place-photo, .result-open .photo-placeholder { width: 84px; height: 90px; }
  .result-copy strong { font-size: 16px; }
  .live-map { height: 275px; }
  .detail-image { height: 235px; }
  .schedule-form { gap: 14px; }
  .schedule-form input { padding: 10px 6px; }
  .trip-timeline li { grid-template-columns: 46px minmax(0,1fr); gap: 8px; }
}
@media (prefers-reduced-motion:reduce) { * { scroll-behavior: auto !important; animation-duration: .01ms !important; transition-duration: .01ms !important; } }
.forecast-comparison { margin-top: 16px; padding-block: 20px; border-top: 1px solid #dce5ee; min-width: 0; }
.forecast-chart-heading { display: flex; gap: 12px; flex-wrap: wrap; align-items: center; justify-content: space-between; }
.forecast-chart-heading h2 { margin: 0; }
.forecast-range-modes { display: inline-flex; border: 1px solid #becdd8; border-radius: 6px; overflow: hidden; flex-shrink: 0; }
.forecast-range-modes button { min-height: 40px; padding: 8px 14px; border: 0; border-radius: 0; background: #fff; color: #34485a; font: inherit; font-size: 13px; }
.forecast-range-modes button + button { border-left: 1px solid #becdd8; }
.forecast-range-modes button[aria-pressed=true] { background: #e7f1ff; color: #0752b2; font-weight: 700; }
.forecast-range { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr) auto; gap: 10px; margin-block: 18px; align-items: end; }
.forecast-range label { display: grid; gap: 6px; min-width: 0; color: #4f6377; font-size: 13px; }
.forecast-range input { width: 100%; min-width: 0; height: 44px; padding: 8px; border: 1px solid #cad5df; border-radius: 6px; color: #172b3a; background: #fff; font: inherit; }
.forecast-range button, .forecast-edit { display: flex; align-items: center; justify-content: center; gap: 8px; min-height: 44px; height: auto; white-space: normal; }
.forecast-chart-legend { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 16px; font-size: 12px; color: #506174; margin: 18px 0 12px; }
.forecast-legend-planned::before, .forecast-legend-picked::before { content: ''; display: inline-block; width: 10px; height: 10px; margin-right: 6px; background: #3c77ce; }
.forecast-legend-planned::before { background: #ac660b; }
.forecast-plot { display: flex; min-width: 0; }
.forecast-axis { flex: 0 0 28px; height: 192px; padding-top: 32px; display: flex; flex-direction: column; justify-content: space-between; color: #627287; font-size: 11px; }
.forecast-chart-scroll { flex: 1; min-width: 0; overflow-x: auto; scrollbar-width: thin; padding: 4px 2px 10px; }
.forecast-bars { display: grid; grid-template-columns: repeat(var(--day-count), minmax(46px,1fr)); list-style: none; margin: 0; padding: 0; min-width: 100%; width: max-content; }
.forecast-bars li { min-width: 0; }
.forecast-day { display: grid; grid-template-rows: 28px 156px 32px; gap: 0; width: 100%; height: 216px; padding: 0; border: 0; border-radius: 0; color: #44566a; background: #fff; font: inherit; font-size: 11px; }
.forecast-day time { align-self: center; white-space: nowrap; }
.forecast-day[aria-pressed=true] { outline: 2px solid #1766ca; outline-offset: -2px; background: #eaf3ff; }
.forecast-day:focus-visible, .forecast-chart-scroll:focus-visible, .forecast-lower button:focus-visible { outline: 2px solid #083f95; outline-offset: -2px; }
.forecast-bar-value { align-self: center; font-variant-numeric: tabular-nums; font-weight: 650; }
.forecast-bar-track { position: relative; display: flex; align-items: flex-end; justify-content: center; border-block: 1px solid #dce5ee; }
.forecast-bar-track::before { content: ''; position: absolute; inset: 50% 0 auto; border-top: 1px dashed #dce5ee; }
.forecast-bar { display: block; width: 56%; min-height: 2px; background: #87a8d4; border-radius: 3px 3px 0 0; z-index: 1; }
.forecast-day.is-planned .forecast-bar { background: #ac660b; }
.forecast-day.is-planned time { font-weight: 750; text-decoration: underline; text-underline-offset: 3px; }
.forecast-day[aria-pressed=true] .forecast-bar { background: #1766ca; }
.forecast-day:disabled { opacity: 1; color: #68788a; cursor: default; }
.forecast-bar-missing { align-self: center; }
.forecast-date-comparison { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr); gap: 16px; padding-block: 18px; border-top: 1px solid #dce5ee; }
.forecast-date-comparison > div { display: grid; align-content: start; gap: 6px; overflow-wrap: anywhere; }
.forecast-date-comparison span { color: #536578; font-size: 12px; }
.forecast-date-comparison time, .forecast-date-comparison p { font-size: 13px; margin: 0; }
.forecast-date-comparison strong { font-size: 24px; color: #174b8a; font-variant-numeric: tabular-nums; }
.forecast-edit:disabled { opacity: .5; cursor: not-allowed; }
.forecast-lower { padding-block: 20px; }
.forecast-lower h3 { font-size: 15px; line-height: 1.5; margin: 0 0 10px; }
.forecast-lower ul { list-style: none; padding: 0; margin: 0; }
.forecast-lower button { display: flex; width: 100%; justify-content: space-between; align-items: center; gap: 16px; min-height: 48px; padding: 10px 0; border: 0; border-bottom: 1px solid #e0e7ef; border-radius: 0; background: transparent; color: #34485a; font: inherit; font-size: 14px; text-align: left; }
.forecast-lower button[aria-pressed=true] { color: #0752b2; font-weight: 700; }
.forecast-lower strong { color: #126150; font-variant-numeric: tabular-nums; }
.forecast-series th[scope=row] { font-weight: 400; }
@media (max-width: 480px) {
  .forecast-range { grid-template-columns: minmax(0,1fr) minmax(0,1fr); }
  .forecast-range button { grid-column: 1 / -1; }
  .forecast-range input { padding-inline: 4px; font-size: 12px; }
  .forecast-page { padding-inline: 12px; }
}
.trip-route-summary { padding: 18px 0; margin: 16px 0; border-block: 1px solid #dce5ec; }
.trip-route-heading { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 12px; }
.trip-route-heading h2 { margin: 0; font-size: 18px; }
.trip-route-heading button { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; height: auto; white-space: normal; }
.trip-route-totals { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 12px; padding: 18px 0 6px; }
.trip-route-totals > div { display: grid; align-content: start; gap: 8px; overflow-wrap: anywhere; }
.trip-route-totals span { color: #576879; font-size: 12px; }
.trip-route-totals strong { font-size: 17px; color: #155d55; font-variant-numeric: tabular-nums; }
.trip-stop { min-width: 0; }
.trip-stay, .trip-arrival { color: #42645d; font-size: 13px; }
.trip-stop .trip-late { color: #a24513; font-weight: 650; font-size: 13px; }
.travel-leg { padding: 14px 0 14px 14px; margin-top: 16px; border-top: 1px solid #d9e3ec; border-left: 3px solid #bdc9d4; font-size: 13px; }
.travel-leg.is-active { border-left-color: #176bea; }
.travel-leg p { font-size: 13px; overflow-wrap: anywhere; }
.travel-leg-tools { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; }
.travel-modes { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); width: 260px; border: 1px solid #d2dde5; border-radius: 6px; max-width: 100%; }
.travel-modes button { min-height: 42px; padding: 8px 12px; flex: 1; border: 0; border-radius: 5px; background: #fff; color: #455a6c; font: inherit; }
.travel-modes button[aria-pressed=true] { background: #e5f1ff; color: #1255ae; font-weight: 700; }
.travel-leg button:disabled { opacity: .55; cursor: not-allowed; }
.travel-leg .text-button, .travel-leg-links a { display: inline-flex; align-items: center; gap: 6px; min-height: 42px; font-size: 13px; white-space: normal; }
.travel-alternatives { display: grid; gap: 6px; margin: 14px 0; font-size: 12px; color: #536879; }
.travel-alternatives select { width: 100%; min-width: 0; max-width: 100%; height: 44px; border: 1px solid #bdcbd8; border-radius: 6px; padding: 8px; background: white; font: inherit; color: #213b51; }
.travel-leg-metrics { display: flex; flex-wrap: wrap; gap: 8px 14px; align-items: center; }
.travel-leg-metrics strong { font-size: 28px; color: #172b3a; line-height: 1.3; font-variant-numeric: tabular-nums; }
.travel-timing strong { font-variant-numeric: tabular-nums; }
.travel-steps { padding-block: 10px; }
.travel-steps summary { padding-block: 8px; cursor: pointer; color: #1a5b9e; }
.travel-steps > ol { list-style: none; padding: 0; margin: 0; }
.trip-timeline .travel-steps > ol > li { display: block; padding: 12px 0; border-bottom: 1px solid #e1e8ef; }
.travel-steps > ol > li > div { display: flex; justify-content: space-between; gap: 10px; }
.travel-steps ol ol { padding-left: 20px; }
.trip-timeline .travel-steps ol ol li { display: list-item; padding: 4px 0; font-size: 12px; }
.travel-leg-links { display: flex; align-items: center; gap: 8px 16px; flex-wrap: wrap; }
.travel-fallback { display: inline-block; padding-block: 12px; color: #175ba0; }
.travel-leg .source-note { margin-bottom: 0; font-size: 11px; }
.trip-map-number { background: #fff; border: 2px solid #176bea; border-radius: 50%; display: grid; place-items: center; color: #1255ae; font-size: 13px; font-weight: 800; box-shadow: 0 2px 6px #0003; }
.trip-map-number span { line-height: 26px; text-align: center; display: block; }
@media (max-width: 480px) {
  .itinerary-page { padding-inline: 12px; }
  .itinerary-page .trip-timeline > li { grid-template-columns: 44px minmax(0,1fr); gap: 8px; }
  .travel-leg { padding-left: 8px; }
  .travel-modes { width: 100%; }
  .travel-leg-tools > button { margin-left: auto; }
  .trip-route-totals { gap: 8px; }
  .trip-route-totals strong { font-size: 14px; }
  .travel-alternatives select { padding-inline: 4px; font-size: 12px; }
}

.directions-page { padding-bottom: 20px; min-width: 0; }
.directions-page h1 { font-size: 24px; line-height: 1.3; margin: 12px 0 20px; }
.directions-endpoints { border-block: 1px solid #dae3eb; }
.directions-endpoint { display: grid; grid-template-columns: 14px minmax(0,1fr) 22px; gap: 12px; align-items: center; width: 100%; min-height: 70px; padding: 14px 4px; text-align: left; color: #243b4c; background: transparent; border-radius: 0; }
.directions-endpoint + .directions-endpoint { border-top: 1px solid #e3e9ef; }
.directions-endpoint > span:nth-child(2) { display: grid; gap: 5px; min-width: 0; }
.directions-endpoint strong { font-size: 16px; line-height: 1.45; overflow-wrap: anywhere; }
.directions-endpoint small { font-size: 12px; line-height: 1.5; color: #627486; overflow-wrap: anywhere; }
.endpoint-symbol { width: 10px; height: 10px; border-radius: 50%; border: 3px solid #176bea; }
.endpoint-symbol.destination { border-color: #df665c; border-radius: 2px; }
.directions-location { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 16px; padding-top: 12px; }
.directions-location .ghost { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 44px; height: auto; border-radius: 6px; padding: 10px 14px; font-size: 13px; white-space: normal; }
.directions-location .source-note { flex: 1 1 220px; margin: 4px 0; }
.directions-map { height: 280px; border-radius: 0; border-inline: 0; }
.directions-modes { display: flex; align-items: center; gap: 12px; margin-top: 16px; }
.directions-modes .travel-modes { flex: 1; max-width: 360px; }
.directions-modes .icon-button { flex-shrink: 0; }
.directions-page .travel-leg { padding: 0; margin-top: 20px; border: 0; }
.directions-page .travel-steps > ol > li { display: block; padding: 14px 0; border-bottom: 1px solid #e1e8ef; }
.directions-page .travel-steps > ol > li > div > strong { min-width: 0; overflow-wrap: anywhere; }
.directions-page .travel-steps > ol > li > div > span { flex-shrink: 0; }
.directions-page .travel-steps ol ol li { display: list-item; padding: 4px 0; font-size: 12px; }
.route-timeline { margin-top: 18px; min-width: 0; }
.route-walk { --route-color: #68788a; --route-fill: #e7ecf1; --route-ink: #394c5d; }
.route-bus { --route-color: #168049; --route-fill: #168049; --route-ink: #fff; }
.route-subway { --route-color: #176bea; --route-fill: #176bea; --route-ink: #fff; }
.route-duration-bar { display: flex; gap: 2px; height: 28px; border-radius: 14px; overflow: hidden; }
.route-duration-segment { flex-basis: 0; min-width: 3px; background: var(--route-fill); color: var(--route-ink); container-type: inline-size; }
.route-duration-segment.is-unknown { flex: 0 0 22px; background: repeating-linear-gradient(135deg,#e7ecf1 0 4px,#c7d1da 4px 6px); }
.route-duration-segment > span { display: flex; gap: 5px; align-items: center; justify-content: center; height: 100%; overflow: hidden; white-space: nowrap; }
.route-duration-segment .svg-icon { width: 16px; height: 16px; flex: 0 0 16px; }
.route-duration-segment b { font-size: 11px; font-weight: 650; }
@container (max-width: 85px) { .route-duration-segment .svg-icon { display: none; } }
@container (max-width: 52px) { .route-duration-segment b { display: none; } }
.route-segment-legend { display: flex; flex-wrap: wrap; gap: 8px 14px; list-style: none; padding: 12px 0; margin: 0; }
.route-segment-legend li { display: flex; align-items: center; gap: 5px; font-size: 12px; line-height: 1.5; color: #33475a; }
.route-segment-legend .svg-icon { width: 15px; height: 15px; flex-shrink: 0; color: var(--route-color); }
.route-boarding-preview { display: grid; gap: 12px; margin: 6px 0; }
.route-boarding-preview > div { display: grid; grid-template-columns: 20px minmax(48px,auto) minmax(0,1fr); align-items: start; gap: 8px; line-height: 1.6; }
.route-boarding-preview .svg-icon { width: 18px; height: 18px; margin-top: 2px; color: var(--route-color); }
.route-boarding-preview strong { color: var(--route-color); max-width: 110px; overflow-wrap: anywhere; }
.route-boarding-preview span { font-size: 12px; color: #526478; overflow-wrap: anywhere; }
.route-timeline .travel-steps { border-top: 1px solid #e1e8ef; margin-top: 14px; padding-block: 0; }
.route-timeline summary { min-height: 44px; padding: 12px 0; line-height: 20px; }
.route-timeline .travel-steps > summary { font-size: 14px; font-weight: 650; }
.route-timeline summary:focus-visible { outline: 2px solid #176bea; outline-offset: 3px; }
.route-timeline .travel-steps > .route-detail-list > li { position: relative; display: grid; grid-template-columns: 28px minmax(0,1fr); gap: 12px; padding: 6px 0 22px; border-bottom: 0; }
.route-detail-step:not(:last-child)::before { content: ''; position: absolute; top: 32px; bottom: -6px; left: 13px; width: 2px; background: var(--route-color); opacity: .35; }
.route-step-symbol { display: grid; place-items: center; width: 28px; height: 28px; border-radius: 50%; background: var(--route-fill); color: var(--route-ink); }
.route-step-symbol .svg-icon { width: 16px; height: 16px; }
.route-timeline .travel-steps .route-step-body { display: block; min-width: 0; padding-top: 3px; }
.route-step-heading { display: flex; align-items: start; justify-content: space-between; gap: 12px; line-height: 1.6; }
.route-step-heading strong { color: var(--route-color); overflow-wrap: anywhere; }
.route-step-heading > span { flex-shrink: 0; font-size: 12px; color: #526478; }
.route-stop-pair p { display: flex; align-items: baseline; gap: 10px; line-height: 1.6; margin: 10px 0; }
.route-stop-pair p > span { color: #526478; flex-shrink: 0; font-size: 12px; }
.route-stop-pair strong { font-size: 13px; color: #263b4c; font-weight: 600; overflow-wrap: anywhere; }
.travel-leg .route-step-distance { font-size: 11px; color: #526478; margin: 6px 0; }
.route-timeline .route-walk-instructions ol { padding-left: 18px; }
.route-walk-instructions li { line-height: 1.7; overflow-wrap: anywhere; }
.route-walk-instructions small { display: block; color: #637387; }
.chat .rag-source { margin-block: 12px 20px; min-width: 0; }
.rag-source .result-card { margin: 0; }
.rag-source > details { margin-top: 6px; padding-inline: 4px; }
.rag-source summary { padding-block: 12px; cursor: pointer; color: #175ca9; font-size: 13px; }
.rag-source blockquote { margin: 12px 0; padding-left: 12px; border-left: 2px solid #b8cfde; color: #3c5363; font-size: 13px; line-height: 1.7; overflow-wrap: anywhere; }
.rag-source small { color: #657583; font-size: 11px; }
.rag-source .source-note { white-space: normal; overflow-wrap: anywhere; }
.chat-references { margin: -4px 0 16px; font-size: 12px; }
.chat-references summary { min-height: 44px; padding-block: 12px; cursor: pointer; color: #175ca9; }
.chat-references p { margin: 0; padding: 4px 0; }
.directions-search { padding-block: 16px; }
.directions-search .section-head { gap: 12px; flex-wrap: wrap; }
.directions-search .explore-search button { display: inline-flex; align-items: center; gap: 8px; }
.direction-places { list-style: none; padding: 0; margin: 0; }
.direction-places li { border-bottom: 1px solid #dfe7ec; }
.direction-places button { width: 100%; display: grid; grid-template-columns: 22px minmax(0,1fr); gap: 14px; padding: 16px 4px; text-align: left; background: transparent; color: #243b4c; }
.direction-places button > span { display: grid; gap: 6px; min-width: 0; overflow-wrap: anywhere; }
.direction-places strong { font-size: 15px; line-height: 1.5; }
.direction-places small { font-size: 12px; color: #627486; line-height: 1.6; }
.direction-places svg { color: #147567; }
@media (max-width: 480px) {
  .directions-page { padding-inline: 4px; }
  .directions-map { height: 240px; }
  .directions-location .source-note { flex-basis: 100%; }
}

/* Installed-app shell and compact, touch-first travel surfaces. */
.day-planner { border-bottom: 1px solid #dce6e9; margin: 16px 0 24px; padding-bottom: 16px; }
.day-planner-toggle { width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 52px; padding: 12px 0; background: transparent; color: #156455; text-align: left; font-size: 17px; font-weight: 700; }
.day-planner-toggle > span:first-child { display: flex; align-items: center; gap: 8px; }
.day-plan-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px 12px; padding-top: 16px; }
.day-plan-fields label { display: grid; align-content: start; gap: 8px; min-width: 0; font-size: 13px; color: #405766; }
.day-plan-fields input, .day-plan-fields select { width: 100%; min-width: 0; min-height: 48px; border: 1px solid #c7d5df; border-radius: 6px; padding: 8px; background: #fff; color: #243e4c; }
.day-planner .primary { display: inline-flex; align-items: center; justify-content: center; gap: 8px; padding: 12px 16px; min-height: 48px; border-radius: 6px; white-space: normal; }
.day-preview { padding-top: 20px; }
.day-preview h3 { font-size: 18px; }
.day-preview ol { margin: 16px 0; padding: 0; list-style: none; }
.day-preview li { display: grid; grid-template-columns: 54px minmax(0, 1fr); gap: 12px; padding: 16px 0; border-bottom: 1px solid #e1e8ed; }
.day-preview-time { display: grid; align-content: start; gap: 8px; font-size: 13px; color: #466170; font-variant-numeric: tabular-nums; }
.day-preview strong { display: block; font-size: 15px; line-height: 1.6; overflow-wrap: anywhere; }
.day-preview small { display: block; color: #5c7080; font-size: 12px; line-height: 1.6; }
.day-preview-new > div:last-child { border-left: 3px solid #218a72; padding-left: 12px; }
.day-preview .place-photo, .day-preview .photo-placeholder { width: 72px; height: 64px; float: right; object-fit: cover; margin: 0 0 8px 8px; border-radius: 6px; }
@media (max-width: 360px) { .day-plan-fields { grid-template-columns: minmax(0, 1fr); } }
.trip-lodging, .trip-optimizer { padding-block: 20px; border-block: 1px solid #e0e8ee; margin-block: 18px; }
.trip-lodging .section-head { flex-wrap: wrap; gap: 8px; }
.trip-lodging .source-note { margin-top: 0; }
.lodging-selected, .lodging-options li { display: grid; grid-template-columns: 84px minmax(0, 1fr); gap: 14px; align-items: start; }
.lodging-selected .place-photo, .lodging-options .place-photo, .lodging-selected .photo-placeholder, .lodging-options .photo-placeholder { width: 84px; height: 84px; object-fit: cover; border-radius: 6px; }
.lodging-selected strong, .lodging-options strong { font-size: 16px; line-height: 1.5; overflow-wrap: anywhere; }
.lodging-selected p, .lodging-options p { margin: 6px 0; font-size: 13px; color: #566e7c; }
.lodging-options { list-style: none; margin: 0; padding: 0; }
.lodging-options li { padding-block: 16px; border-bottom: 1px solid #e0e8ee; }
.lodging-sheet { width: min(520px, calc(100% - 32px)); max-width: none; height: min(680px, 82dvh); max-height: calc(100dvh - 32px); padding: 20px; border: 1px solid #e0e8ee; border-radius: 8px; background: #fff; color: #183442; box-shadow: 0 16px 60px #142c4433; overflow: hidden; }
.lodging-sheet[open] { display: flex; flex-direction: column; gap: 12px; }
.lodging-sheet::backdrop { background: #10253666; }
html:has(.lodging-sheet[open]), body:has(.lodging-sheet[open]) { overflow: hidden; }
.lodging-sheet-header { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-shrink: 0; }
.lodging-sheet-header h2 { margin: 0; font-size: 20px; line-height: 1.4; overflow-wrap: anywhere; }
.lodging-sheet-header .icon-button { flex-shrink: 0; }
.lodging-sheet .explore-search { flex-shrink: 0; margin: 0; }
.lodging-sheet > .source-note { margin: 0; font-size: 13px; color: #566e7c; }
.lodging-sheet-results { flex: 1; min-height: 0; overflow-y: auto; overscroll-behavior: contain; scrollbar-gutter: stable; padding-right: 4px; }
.lodging-sheet-results .ghost { width: 100%; margin-block: 12px; }
.lodging-sheet :focus-visible { outline: 2px solid #0766ff; outline-offset: 2px; }
@media (max-width: 600px) {
  .lodging-sheet { width: 100%; margin: auto 0 0; height: min(680px, 84dvh); max-height: calc(100dvh - env(safe-area-inset-top) - 16px); border-radius: 8px 8px 0 0; padding: 16px max(16px, env(safe-area-inset-right)) max(16px, env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left)); }
}
.lodging-endpoint { color: #147567; }
.lodging-endpoint > span { justify-self: center; }
.lodging-endpoint strong, .lodging-endpoint small { display: block; margin-bottom: 8px; }
.lodging-endpoint small { font-size: 12px; }
.trip-optimizer label { display: grid; gap: 10px; margin-block: 16px; font-size: 14px; }
.trip-optimizer select { width: 100%; min-width: 0; min-height: 48px; padding: 10px; border: 1px solid #c5d3e2; border-radius: 6px; background: #fff; color: #253e4d; }
.trip-optimizer > .primary { display: flex; gap: 8px; align-items: center; justify-content: center; padding: 12px 20px; border-radius: 6px; }
.trip-optimizer h3 { font-size: 17px; }
.recommendation-grid, .return-suggestions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px 12px; margin-block: 16px; }
.return-suggestion { min-width: 0; display: flex; flex-direction: column; }
.return-suggestion .source-note { margin-bottom: 6px; }
.recommendation-grid .result-card, .return-suggestions .result-card { display: flex; flex-direction: column; padding: 0; border: 1px solid #e0e8f0; border-radius: 8px; background: #fff; overflow: hidden; }
.return-suggestions .result-card { flex: 1; }
.recommendation-grid .result-open, .return-suggestions .result-open { display: flex; flex-direction: column; gap: 0; min-width: 0; }
.recommendation-grid .result-card.no-photo { background: #f8fbfc; }
.recommendation-grid .result-open.no-photo { flex: 1; justify-content: center; }
.recommendation-grid .result-open > .place-photo, .recommendation-grid .result-open > .photo-placeholder,
.return-suggestions .result-open > .place-photo, .return-suggestions .result-open > .photo-placeholder { width: 100%; height: auto; aspect-ratio: 4 / 3; border-radius: 0; object-fit: cover; }
.recommendation-grid .result-copy, .return-suggestions .result-copy { width: 100%; padding: 12px 10px; gap: 6px; }
.recommendation-grid .result-copy strong, .return-suggestions .result-copy strong { font-size: 15px; line-height: 1.5; }
.recommendation-grid .result-copy > span, .return-suggestions .result-copy > span { font-size: 12px; line-height: 1.6; overflow-wrap: anywhere; }
.recommendation-grid .place-actions, .return-suggestions .place-actions { margin-top: auto; padding: 0 8px 10px; gap: 6px; flex-wrap: wrap; }
.recommendation-grid .place-actions .primary, .return-suggestions .place-actions .primary { flex: 1; min-width: 0; padding: 8px 6px; gap: 4px; white-space: normal; overflow-wrap: anywhere; }
.recommendation-grid .place-actions .primary svg, .return-suggestions .place-actions .primary svg { flex-shrink: 0; }
:root { --nav-height: 72px; }
.app-shell { grid-template-columns: minmax(0, 1fr); }
.app-shell .phone-screen { min-width: 0; width: min(100%, var(--app-width)); }
.app-shell .phone-screen { padding-top: 0; padding-bottom: calc(var(--nav-height) + 24px + env(safe-area-inset-bottom, 0px)); background: #fff; box-shadow: none; overflow: clip; }
.app-shell .topbar { position: sticky; top: 0; z-index: 1250; height: auto; min-height: calc(64px + env(safe-area-inset-top, 0px)); margin-inline: calc(-1 * var(--app-gutter)); padding: env(safe-area-inset-top, 0px) var(--app-gutter) 0; background: #fff; border-bottom: 1px solid #eef1f4; }
.app-shell .brand { display: flex; align-items: baseline; gap: 8px; font-size: 26px; }
.app-shell .brand small { font-size: 10px; color: #52746e; font-weight: 700; }
.app-shell .screen-title { flex: 1; text-align: center; font-size: 14px; line-height: 1.4; overflow-wrap: anywhere; }
.app-shell .top-actions { align-items: center; gap: 4px; flex-shrink: 0; }
.app-shell .icon-button { min-width: 44px; width: 44px; height: 44px; background: transparent; border-radius: 6px; font-size: 23px; }
.app-shell .header-language { width: 92px; min-height: 44px; font-size: 14px; padding: 8px 2px; border: 0; background: #fff; color: #344b5b; }
.app-shell button { touch-action: manipulation; }
.app-shell .text-button, .app-shell .ghost, .app-shell .primary, .app-shell .trip-controls button, .app-shell .home-content .section-head button { min-height: 44px; height: auto; }
.app-shell input:not([type=checkbox]):not([type=radio]):not([type=file]), .app-shell textarea, .app-shell select:not(.header-language) { font-size: 16px; }
.app-shell .explore-search input { min-height: 48px; }
.app-shell .bottom-nav { height: calc(var(--nav-height) + env(safe-area-inset-bottom, 0px)); padding: 4px 8px calc(4px + env(safe-area-inset-bottom, 0px)); background: #fff; backdrop-filter: none; border-color: #e1e8ed; gap: 0; }
.app-shell .bottom-nav button { min-width: 0; border-radius: 0; padding: 0 2px; align-content: center; grid-template-rows: 28px 28px; gap: 0; font-weight: 600; color: #677988; }
.app-shell .bottom-nav button > span { width: 44px; height: 28px; border-radius: 8px; }
.app-shell .bottom-nav .svg-icon { width: 23px; height: 23px; }
.app-shell .bottom-nav small { font-size: 11px; font-weight: 600; line-height: 1.15; overflow-wrap: anywhere; }
.app-shell .bottom-nav .active { color: #1267dd; background: transparent; }
.app-shell .bottom-nav .active > span { background: #eaf2ff; }
.home-welcome { display: grid; grid-template-columns: minmax(0,1fr) 112px; gap: 12px; align-items: center; padding: 24px 0 16px; }
.home-welcome small { color: #667985; font-size: 13px; }
.home-welcome h1 { margin: 6px 0 8px; font-size: 25px; line-height: 1.3; color: #1b3446; overflow-wrap: anywhere; }
.home-welcome p { margin: 0; font-size: 14px; color: #56706b; }
.home-welcome .text-button { justify-content: flex-start; gap: 10px; margin-top: 8px; font-size: 13px; text-align: left; }
.home-welcome .nubi-avatar.home-mascot { position: static; width: 112px; height: 144px; margin: 0; }
.app-shell .home-shortcuts { margin: 8px 0 16px; gap: 8px; }
.app-shell .home-shortcuts button { padding: 14px 4px 12px; min-height: 96px; background: #fff; border: 1px solid #e5ebef; gap: 10px; }
.app-shell .home-shortcuts button:nth-child(1) { background: #edf5ff; border-color: #deebfd; color: #0877ff; }
.app-shell .home-shortcuts button:nth-child(2) { background: #edf9f4; border-color: #dcefe6; color: #099666; }
.app-shell .home-shortcuts button:nth-child(3) { background: #f5f0ff; border-color: #eae2fa; color: #9256df; }
.app-shell .home-shortcuts button:nth-child(4) { background: #fff8e8; border-color: #f5ead0; color: #c78a0b; }
.app-shell .home-shortcuts button > span { display: grid; place-items: center; height: 32px; width: 32px; }
.app-shell .home-shortcuts .svg-icon { width: 26px; height: 26px; }
.app-shell .home-shortcuts b { font-size: 12px; line-height: 1.4; font-weight: 650; }
.app-shell .home-shortcuts small { display: none; }
.home-travel-tools { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); border-block: 1px solid #e5ebef; margin-bottom: 26px; }
.home-travel-tools button { display: grid; grid-template-columns: 22px minmax(0,1fr) 10px; align-items: center; gap: 8px; min-height: 58px; padding: 12px 8px; text-align: left; background: #fff; color: #245f56; font-size: 13px; line-height: 1.4; }
.home-travel-tools button + button { border-left: 1px solid #e5ebef; }
.app-shell .home-section { margin: 26px 0; }
.home-feed-status { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; padding-top: 8px; }
.home-feed-status p { flex: 1 1 200px; margin: 0; color: #64748b; font-size: 13px; line-height: 1.5; overflow-wrap: anywhere; }
.home-feed-status button { min-height: 44px; max-width: 100%; white-space: normal; }
.app-shell .home-content h2 { font-size: 18px; }
.app-shell .home-content .section-head { margin-bottom: 8px; }
.app-shell .home-content .section-head button { font-size: 12px; }
.app-shell .media-filter-row { gap: 4px 14px; }
.app-shell .media-filter { min-height: 44px; font-size: 12px; }
.app-shell .media-count { flex-basis: 100%; font-size: 11px; }
.app-shell .home-places { grid-auto-columns: clamp(112px, calc((100% - 30px) / 4), 160px); gap: 10px; scroll-snap-type: x proximity; scrollbar-width: thin; }
.app-shell .home-place { scroll-snap-align: start; }
.app-shell .home-photo { aspect-ratio: 1.15; }
.app-shell .home-place .place-open { padding-bottom: 40px; }
.app-shell .home-place h3 { font-size: 12px; line-height: 1.4; margin: 8px 8px 4px; height: 34px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.app-shell .home-place p { height: 30px; min-height: 0; line-height: 1.4; margin: 0 8px; font-size: 11px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.app-shell .home-place .place-guide-badge { margin: 6px 8px 0; padding: 0; font-size: 10px; }
.app-shell .save-place { width: 44px; height: 44px; display: grid; place-items: center; right: 0; bottom: 0; }
.app-shell .home-weather { padding: 16px 0; }
.app-shell .weather-values { grid-template-columns: minmax(0,1.8fr) repeat(3,minmax(0,1fr)); gap: 10px; }
.app-shell .weather-values .weather-current { display: flex; flex-direction: row; align-items: center; gap: 10px; min-width: 0; }
.weather-condition { width: 46px; height: 46px; flex-shrink: 0; color: #6796b3; }
.weather-condition.weather-sun { color: #f4ad0b; fill: #fff1a9; }
.weather-condition.weather-rain, .weather-condition.weather-snow { color: #268cde; }
.weather-condition.weather-storm { color: #8063b3; }
.weather-reading { min-width: 0; }
.weather-reading > div { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 6px; }
.app-shell .weather-values strong { font-size: 26px; white-space: nowrap; }
.weather-reading span, .weather-reading small { font-size: 11px; overflow-wrap: anywhere; }
.app-shell .weather-values .weather-metric { display: flex; flex-direction: row; align-items: center; gap: 6px; min-width: 0; border-left: 1px solid #e8eef4; padding-left: 10px; }
.weather-metric > .svg-icon { width: 23px; height: 23px; flex-shrink: 0; color: #268cde; }
.weather-uv > .svg-icon { color: #eda90d; }
.weather-metric > div { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.weather-metric span { font-size: 10px; line-height: 1.4; overflow-wrap: anywhere; }
.app-shell .weather-metric b { font-size: 12px; overflow-wrap: anywhere; }
@media (max-width: 580px) {
  .app-shell .weather-values { grid-template-columns: repeat(3,minmax(0,1fr)); gap: 12px 8px; }
  .app-shell .weather-values .weather-current { grid-column: 1 / -1; }
  .app-shell .weather-values .weather-metric { padding-left: 8px; }
  .app-shell .weather-values .weather-metric:nth-child(2) { border-left: 0; padding-left: 0; }
}
.app-shell .home-themes { display: flex; overflow-x: auto; scroll-snap-type: x proximity; padding-bottom: 8px; gap: 10px; }
.app-shell .home-themes button { flex: 1 0 104px; scroll-snap-align: start; min-height: 104px; padding: 14px 8px; }
.app-shell .home-themes b { font-size: 12px; line-height: 1.4; }
.app-shell .home-themes button:nth-child(6) { background: #e9f6f1; color: #147567; }
.theme-location-controls { display: flex; align-items: center; gap: 12px; margin-block: 16px 8px; flex-wrap: wrap; }
.theme-location-controls .segmented { display: flex; gap: 4px; padding: 4px; background: #edf2f7; border-radius: 6px; margin: 0; }
.theme-location-controls .segmented button { padding: 10px 12px; color: #456; background: transparent; border-radius: 4px; }
.theme-location-controls .segmented button.selected { background: #0877ff; color: white; }
.recommendation-grid .result-copy .place-distance { color: #147567; font-weight: 600; }
.home-carousel { margin: 12px 0 6px; min-width: 0; }
.home-carousel-track { display: flex; position: relative; overflow-x: auto; scroll-snap-type: x mandatory; overscroll-behavior-x: contain; scrollbar-width: none; border-radius: 8px; }
.home-carousel-track::-webkit-scrollbar { display: none; }
.home-carousel-slide { flex: 0 0 100%; min-width: 0; height: 210px; position: relative; overflow: hidden; scroll-snap-align: start; scroll-snap-stop: always; border-radius: 8px; background: #e1f1ff; }
.home-carousel-slide.banner-discover { background: #e4f4ec; }
.home-carousel-copy { position: relative; z-index: 1; display: flex; flex-direction: column; align-items: flex-start; justify-content: center; height: 100%; padding: 24px; max-width: 70%; min-width: 0; }
.home-carousel-copy > small { color: #405c69; font-size: 12px; font-weight: 600; }
.home-carousel-copy h1, .home-carousel-copy h2 { margin: 6px 0; font-size: 25px; line-height: 1.3; color: #173a50; overflow-wrap: anywhere; }
.home-carousel-copy p { margin: 0; font-size: 14px; line-height: 1.6; color: #3c5b6b; overflow-wrap: anywhere; }
.home-carousel .banner-action { display: inline-flex; align-items: center; justify-content: space-between; gap: 8px; min-height: 44px; max-width: 100%; margin-top: 10px; padding: 10px 12px; border-radius: 6px; background: #fff; color: #0763ca; font-size: 13px; line-height: 1.5; font-weight: 600; text-align: left; text-decoration: none; overflow-wrap: anywhere; }
.banner-action svg { width: 18px; height: 18px; flex-shrink: 0; }
.home-carousel .nubi-avatar.carousel-mascot { position: absolute; right: 14px; bottom: 16px; width: 28%; height: 164px; margin: 0; background: none; }
.home-carousel .carousel-mascot img { width: 100%; height: 100%; object-fit: contain; }
.home-carousel .banner-art { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.banner-ad .home-carousel-copy { background: #fffffff2; }
.home-carousel-controls { display: flex; justify-content: space-between; align-items: center; gap: 8px; min-height: 44px; }
.home-carousel-dots { display: flex; flex-wrap: wrap; }
.home-carousel-dots button { width: 32px; height: 44px; padding: 0; display: grid; place-items: center; background: transparent; }
.home-carousel-dots span { width: 6px; height: 6px; border-radius: 50%; background: #b7c7d3; }
.home-carousel-dots [aria-current="true"] span { width: 18px; border-radius: 3px; background: #0877ff; }
.home-carousel-arrows { display: flex; align-items: center; flex-shrink: 0; }
.home-carousel-arrows [data-banner-count] { min-width: 44px; font-size: 12px; color: #536779; text-align: center; font-variant-numeric: tabular-nums; }
@media (max-width: 480px) {
  .home-carousel-slide { height: 220px; }
  .home-carousel-copy { padding: 14px; max-width: 70%; }
  .home-carousel-copy h1, .home-carousel-copy h2 { font-size: 20px; }
  .home-carousel-copy p { font-size: 13px; }
  .home-carousel .nubi-avatar.carousel-mascot { right: 4px; bottom: 16px; width: 28%; height: 132px; }
}
.app-shell .trip-dates { scroll-snap-type: x proximity; }
.app-shell .trip-dates button { min-height: 46px; scroll-snap-align: start; }
.app-shell .trip-controls { flex-wrap: wrap; gap: 6px 12px; }
.app-shell .translation-modes button { min-height: 72px; padding: 12px 6px; border-radius: 6px; font-size: 14px; }
.app-shell .translation-workspace .primary { min-height: 48px; }
.app-shell .translation-submit { flex-wrap: wrap; }
.app-shell .nubi-chat .ask-box { bottom: calc(var(--nav-height) + env(safe-area-inset-bottom, 0px)); border: 1px solid #d9e4ec; border-radius: 6px; }
.app-shell .nubi-chat .ask-box input { font-size: 16px; min-height: 48px; }
.app-shell .nubi-chat .ask-box input { flex: 1 1 0; width: 0; }
.app-shell .nubi-chat .ask-box button { flex: 0 0 auto; min-width: 68px; padding-inline: 12px; font-size: 14px; }
.nubi-chat .chat-example { margin: 12px 0 20px; color: #637184; font-size: 14px; line-height: 1.6; overflow-wrap: anywhere; }
.install-button { display: flex; gap: 10px; align-items: center; margin: 16px 0; padding: 12px 16px; border-radius: 6px; }
@media (max-width: 520px) {
  .app-shell .header-language { width: 82px; }
  .app-shell .topbar { gap: 4px; }
  .app-shell .brand { font-size: 25px; gap: 6px; }
  .home-welcome { grid-template-columns: minmax(0,1fr) 88px; gap: 8px; padding-top: 20px; }
  .home-welcome .nubi-avatar.home-mascot { width: 88px; height: 124px; }
  .home-welcome h1 { font-size: 23px; }
  .app-shell .home-shortcuts { gap: 6px; }
  .app-shell .forecast-page, .app-shell .itinerary-page, .app-shell .directions-page { padding-inline: 0; }
  .app-shell .explore-page h1, .app-shell .place-detail h1, .app-shell .schedule-page h1, .app-shell .itinerary-page h1, .app-shell .my-page h1 { font-size: 22px; }
}
@media (prefers-reduced-motion: reduce) {
  .app-shell *, .app-shell *::before, .app-shell *::after { scroll-behavior: auto !important; animation: none !important; transition: none !important; }
}

/* The map owns the remaining viewport; its non-modal sheet never resizes Leaflet. */
.map-app-shell .phone-screen { height: 100dvh; min-height: 0; display: flex; flex-direction: column; padding-bottom: calc(var(--nav-height) + env(safe-area-inset-bottom, 0px)); }
.map-app-shell .topbar { flex: 0 0 auto; position: relative; margin-bottom: 0; }
.map-app-shell .connection-notice { flex: 0 0 auto; max-height: 80px; overflow: auto; margin: 0; }
.map-workspace { flex: 1; min-height: 0; display: flex; flex-direction: column; margin-inline: calc(-1 * var(--app-gutter)); }
.map-searchbar { flex: 0 0 auto; display: flex; align-items: center; gap: 6px; padding: 10px 12px 4px; position: relative; z-index: 1100; background: white; }
.map-searchbar form { display: flex; flex: 1; min-width: 0; border: 1px solid #dfe6ec; border-radius: 8px; background: #f8fafc; }
.map-searchbar input[type="search"] { width: 0; flex: 1; min-width: 0; border: 0; background: transparent; padding: 10px; min-height: 44px; font-size: 16px; }
.map-searchbar .icon-button { flex: 0 0 44px; width: 44px; height: 44px; min-height: 44px; border-radius: 8px; }
.map-searchbar form .icon-button { background: transparent; }
.map-shortcuts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; flex: 0 0 auto; padding: 4px 12px; background: #fff; }
.map-shortcuts button { display: flex; align-items: center; gap: 6px; min-width: 0; min-height: 44px; padding: 8px 10px; border-radius: 6px; background: #ecf7f4; color: #166b5c; font-size: 13px; font-weight: 600; line-height: 1.35; text-align: left; }
.map-shortcuts button[data-route="directions"] { background: #edf4ff; color: #0866d6; }
.map-shortcuts button:hover { filter: brightness(.97); }
.map-shortcuts button:focus-visible { outline: 2px solid #0877ff; outline-offset: 2px; }
.map-shortcuts .svg-icon { width: 18px; height: 18px; flex-shrink: 0; }
.map-shortcuts span { min-width: 0; overflow-wrap: anywhere; }
.map-shortcuts .shortcut-arrow { width: 14px; height: 14px; margin-left: auto; }
.map-filter-menu summary { display: grid; place-items: center; list-style: none; cursor: pointer; }
.map-filter-menu summary::-webkit-details-marker { display: none; }
.map-filter-menu[open] summary { color: #0767e9; background: #eaf3ff; }
.map-filter-panel { position: absolute; top: 100%; left: 12px; right: 12px; background: white; border: 1px solid #dce4eb; box-shadow: 0 8px 24px #182a4526; border-radius: 8px; padding: 14px; max-height: min(430px, 55dvh); overflow: auto; }
.map-filter-panel .media-filter-row { margin: 0; }
.map-filter-panel .map-forecast-key { margin: 12px 0 0; }
.map-category-strip { display: flex; gap: 6px; overflow-x: auto; overscroll-behavior-x: contain; flex: 0 0 auto; padding: 6px 12px 10px; scrollbar-width: none; background: white; }
.map-category-strip::-webkit-scrollbar { display: none; }
.map-category { display: inline-flex; gap: 5px; align-items: center; flex: 0 0 auto; min-height: 40px; padding: 8px 12px; background: #fff; color: #384455; border: 1px solid #e2e8ef; border-radius: 20px; font-size: 13px; }
.map-category .svg-icon { width: 17px; height: 17px; }
.map-category[data-map-category="food"] .svg-icon { color: #bf7415; }
.map-category[data-map-category="photo"] .svg-icon { color: #8753cd; }
.map-category[data-map-category="activity"] .svg-icon { color: #20834b; }
.map-category.selected { color: white; background: #0877ff; border-color: #0877ff; }
.map-category.selected .svg-icon { color: inherit; }
.map-stage { --sheet-height: 250px; position: relative; flex: 1; min-height: 0; overflow: hidden; background: #e4f0f2; isolation: isolate; }
.map-stage > .live-map { position: absolute; inset: 0; width: 100%; height: 100%; min-height: 0; max-height: none; margin: 0; border: 0; border-radius: 0; }
.map-stage .leaflet-bottom { bottom: auto; top: 0; }
.map-stage .leaflet-control-attribution { font-size: 9px; margin-top: 0; }
.map-floating-actions { position: absolute; right: 12px; top: 36px; display: grid; gap: 8px; z-index: 600; }
.map-floating-actions .icon-button { width: 44px; height: 44px; border-radius: 50%; background: #fff; box-shadow: 0 2px 8px #1d456a26; }
.map-floating-actions .map-chat-button { color: white; background: #0877ff; }
.map-location-status { position: absolute; top: 12px; left: 54px; right: 64px; margin: 0; padding: 8px 10px; background: white; border-radius: 6px; font-size: 12px; z-index: 700; }
.map-results-sheet { position: absolute; left: 0; right: 0; bottom: 0; height: var(--sheet-height); display: flex; flex-direction: column; z-index: 800; background: #fff; border-radius: 16px 16px 0 0; box-shadow: 0 -3px 18px #233c5324; overflow: hidden; }
.sheet-snapping .map-results-sheet { transition: height 180ms ease; }
.sheet-dragging .map-results-sheet { transition: none; }
.map-sheet-header { flex: 0 0 56px; height: 56px; position: relative; padding: 16px 12px 0; }
.map-sheet-handle { position: absolute; top: 0; left: 0; right: 52px; height: 56px; cursor: ns-resize; touch-action: none; z-index: 2; user-select: none; }
.map-sheet-handle i { display: block; margin: 7px auto 0; height: 4px; width: 36px; background: #cbd4de; border-radius: 4px; transform: translateX(26px); }
.map-sheet-handle:focus-visible { outline: 2px solid #0877ff; outline-offset: -3px; border-radius: 12px; }
.map-sheet-heading { display: flex; align-items: center; justify-content: space-between; gap: 8px; height: 38px; }
.map-sheet-heading h2 { font-size: 15px; margin: 0; line-height: 1.2; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.map-sheet-heading h2 small { color: #0877ff; font-size: 13px; margin-left: 4px; }
.map-sheet-heading .icon-button { width: 44px; height: 38px; min-height: 38px; border-radius: 6px; z-index: 3; background: #f3f7fc; }
.map-sheet-body { min-height: 0; flex: 1; overflow: auto; overscroll-behavior: contain; padding: 0 12px 12px; }
[data-sheet-snap="collapsed"] .map-sheet-body { visibility: hidden; }
.map-sheet-scope { display: flex; align-items: center; justify-content: space-between; gap: 8px; min-height: 26px; margin-bottom: 6px; font-size: 11px; color: #6a7887; }
.map-sheet-scope .text-button { font-size: 11px; padding: 2px; }
.map-place-cards { display: grid; grid-auto-flow: column; grid-auto-columns: 150px; gap: 10px; overflow-x: auto; scroll-snap-type: x proximity; overscroll-behavior-x: contain; padding-bottom: 4px; }
.map-place-cards .result-card { display: flex; flex-direction: column; gap: 0; padding: 0; min-width: 0; border: 1px solid #e3e9ef; border-radius: 8px; overflow: hidden; background: white; scroll-snap-align: start; }
.map-place-cards .result-open { display: flex; flex-direction: column; min-width: 0; gap: 0; padding: 0; text-align: left; }
.map-place-cards .place-photo { width: 100%; height: 84px; aspect-ratio: auto; object-fit: cover; border-radius: 0; }
.map-place-cards .result-copy { display: flex; flex-direction: column; padding: 7px 8px; gap: 4px; min-width: 0; }
.map-place-cards .result-copy strong { font-size: 12px; line-height: 1.35; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.map-place-cards .result-copy > span { display: none; }
.map-place-cards .result-copy > small:not(.place-guide-badge) { display: none; }
.map-place-cards .no-photo .result-copy { min-height: 122px; justify-content: center; background: #f3f7fa; }
.map-place-cards .place-actions { margin: auto 0 0; padding: 4px 6px 6px; display: flex; gap: 4px; }
.map-place-cards .place-actions .icon-button { flex: 0 0 32px; width: 32px; height: 36px; min-height: 36px; }
.map-place-cards .place-actions .primary { flex: 1; padding: 6px 4px; font-size: 11px; min-height: 36px; background: #edf5ff; color: #0869e7; border-radius: 6px; white-space: normal; }
.map-place-cards .place-actions .svg-icon { width: 16px; height: 16px; flex-shrink: 0; }
.map-more { min-height: 44px; width: 100%; margin-top: 10px; }
.map-sheet-body .empty-state { padding: 12px; font-size: 13px; }
[data-sheet-snap="expanded"] .map-place-cards { grid-auto-flow: row; grid-auto-columns: auto; grid-template-columns: repeat(2, minmax(0,1fr)); overflow: visible; }
[data-sheet-snap="expanded"] .map-place-cards .place-photo { height: auto; aspect-ratio: 3 / 2; }
[data-sheet-snap="expanded"] .map-place-cards .result-copy > span { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; font-size: 11px; line-height: 1.5; }
[data-sheet-snap="expanded"] .map-place-cards .result-copy strong { font-size: 13px; }
@media (min-width: 640px) {
  .map-place-cards { grid-auto-columns: 174px; }
  [data-sheet-snap="expanded"] .map-place-cards { grid-template-columns: repeat(3, minmax(0,1fr)); }
}
@media (max-height: 740px) {
  .map-floating-actions { top: 18px; grid-auto-flow: column; gap: 6px; }
}
@media (prefers-reduced-motion: reduce) { .sheet-snapping .map-results-sheet { transition: none; } }

/* Itinerary stays compact; route details and planning forms remain secondary. */
.itinerary-clean .trip-lodging { margin: 0; padding: 12px 0; border-top: 0; }
.itinerary-clean .trip-lodging .section-head { margin: 0 0 4px; }
.itinerary-clean .trip-lodging h2 { font-size: 13px; color: #687987; margin: 0; }
.itinerary-clean .trip-lodging .section-head > .text-button { min-height: 36px; font-size: 12px; padding: 4px 0; }
.itinerary-clean .trip-lodging > .source-note { display: none; }
.stay-day-status { margin: 0 0 10px; color: #536875; font-size: 12px; line-height: 1.5; }
.journey-toolbar { display:flex; align-items:center; justify-content:space-between; gap:8px; padding:8px 0 16px; flex-wrap:wrap; }
.journey-tabs { display:flex; gap:4px; }
.journey-tabs button { display:flex; align-items:center; gap:6px; background:transparent; color:#66727c; min-height:44px; padding:8px 12px; border:0; border-bottom:2px solid transparent; }
.journey-tabs button[aria-pressed="true"] { color:#0667ed; border-bottom-color:#0667ed; }
.journey-heading { display:grid; grid-template-columns:minmax(0,1fr) 44px; gap:8px; padding-bottom:16px; border-bottom:1px solid #e6ebef; }
.journey-heading label, .journey-schedule-select { display:grid; gap:6px; font-size:12px; color:#61717c; min-width:0; }
.journey-heading select, .journey-schedule-select select { width:100%; min-width:0; font-size:15px; min-height:44px; }
.journey-heading p { grid-column:1/-1; margin:0; color:#60717d; font-size:12px; }
.journey-heading>.icon-button { align-self:end; }
.journey-history h2 { font-size:19px; margin:8px 0 20px; }
.journey-stats { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); margin:0 0 20px; padding:18px 0; border-block:1px solid #e5edf2; }
.journey-stats div { display:flex; flex-direction:column-reverse; align-items:center; gap:6px; border-right:1px solid #e5edf2; }
.journey-stats div:last-child { border:0; }
.journey-stats dt { font-size:12px; color:#60717d; }
.journey-stats dd { margin:0; color:#12334a; font-size:25px; font-weight:700; }
.journey-search { display:grid; grid-template-columns:minmax(0,1fr) 44px minmax(90px,120px); gap:6px; margin-bottom:16px; }
.journey-search input, .journey-search select { min-width:0; width:100%; min-height:44px; font-size:13px; }
.journey-records { display:grid; gap:12px; }
.journey-record { display:grid; grid-template-columns:120px minmax(0,1fr); gap:14px; padding:10px; border:1px solid #e3eaf0; border-radius:8px; background:white; }
.journey-record .journey-cover, .journey-cover-placeholder { width:120px; height:150px; object-fit:cover; border-radius:6px; }
.journey-cover-placeholder { display:grid; place-items:center; background:#edf5fb; color:#438dce; }
.journey-cover-placeholder svg { width:32px; height:32px; }
.journey-record-copy { min-width:0; }
.journey-record h3 { font-size:16px; margin:2px 0 8px; overflow-wrap:anywhere; }
.journey-record p { font-size:12px; color:#61717c; margin:5px 0; overflow-wrap:anywhere; }
.journey-record .journey-place-names { line-height:1.6; color:#34654f; }
.journey-record .text-button { font-size:12px; padding-left:0; min-height:40px; }
.journey-sheet { border:0; border-radius:8px; padding:20px; width:min(460px,calc(100% - 24px)); max-height:90dvh; overflow:auto; color:#142b3b; }
.journey-sheet::backdrop { background:rgba(13,28,43,.4); }
.journey-sheet header { display:flex; justify-content:space-between; align-items:center; margin-bottom:16px; }
.journey-sheet h2 { margin:0; font-size:19px; }
.journey-sheet form, .journey-sheet label { display:grid; gap:8px; min-width:0; }
.journey-sheet form { gap:18px; }
.journey-sheet label { font-size:13px; }
.journey-sheet input { width:100%; min-width:0; min-height:44px; font-size:15px; }
.journey-sheet input, .journey-heading select, .journey-search input, .journey-search select, .journey-schedule-select select { border:1px solid #dce5ed; border-radius:6px; padding:10px; background:#f9fbfd; color:#17334b; font-family:inherit; }
.journey-sheet input:focus-visible, .journey-heading select:focus-visible, .journey-search input:focus-visible, .journey-search select:focus-visible { outline:2px solid #0877ff; outline-offset:1px; }
.journey-date-fields { display:grid; grid-template-columns: minmax(0,1.5fr) minmax(0,1fr); gap:12px; }
.journey-sheet output { color:#0667ed; font-size:13px; line-height:1.6; }
.journey-sheet [role="alert"] { margin:0; color:#b43942; font-size:13px; }
@media(max-width:380px) {
  .journey-record { grid-template-columns:88px minmax(0,1fr); gap:10px; }
  .journey-record .journey-cover, .journey-cover-placeholder { width:88px; height:136px; }
}
.itinerary-clean .lodging-selected { grid-template-columns: 72px minmax(0,1fr); gap: 12px; }
.itinerary-clean .lodging-selected.no-photo { grid-template-columns: minmax(0,1fr); }
.itinerary-clean .lodging-selected .place-photo { width: 72px; height: 80px; border-radius: 8px; }
.itinerary-clean .lodging-selected strong { font-size: 16px; }
.itinerary-clean .lodging-selected p { font-size: 12px; margin: 4px 0; }
.itinerary-clean .lodging-selected .text-button { font-size: 12px; padding: 4px 8px 4px 0; min-height: 36px; }
.trip-calendar-row { display: flex; align-items: center; gap: 8px; margin-block: 14px; }
.itinerary-clean .trip-dates { min-width: 0; flex: 1; padding: 2px 0; gap: 7px; scrollbar-width: none; position: relative; }
.itinerary-clean .trip-dates button { display: grid; gap: 5px; place-items: center; flex: 0 0 58px; min-height: 60px; padding: 8px 6px; border-radius: 8px; background: #f4f7fa; font-size: 13px; }
.itinerary-clean .trip-dates button small { font-size: 11px; font-weight: 400; }
.itinerary-clean .trip-dates button.selected { background: #0877ff; color: #fff; }
.trip-calendar-picker { position: relative; flex: 0 0 44px; height: 48px; display: grid; place-items: center; border: 1px solid #dde6ee; border-radius: 8px; color: #34506c; background: white; overflow: hidden; cursor: pointer; }
.trip-calendar-picker input { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; }
.trip-calendar-picker input::-webkit-calendar-picker-indicator { position: absolute; inset: 0; width: auto; height: auto; cursor: pointer; }
.trip-calendar-picker:focus-within { outline: 2px solid #0877ff; outline-offset: 2px; }
.trip-view-switch { display: flex; gap: 4px; border-bottom: 1px solid #e4eaf0; margin-bottom: 14px; }
.trip-view-switch button { flex: 1; background: white; color: #697b8e; padding: 10px; display: flex; gap: 7px; align-items: center; justify-content: center; min-height: 44px; border-radius: 0; font-size: 13px; border-bottom: 2px solid transparent; }
.trip-view-switch button[aria-pressed="true"] { color: #086bed; border-bottom-color: #0877ff; font-weight: 700; }
.trip-view-switch .svg-icon { width: 18px; height: 18px; }
.trip-workspace { display: grid; grid-template-columns: minmax(0,1fr); gap: 20px; }
.trip-schedule-column,.trip-map-column { min-width: 0; }
.trip-section-heading { display: flex; gap: 8px; align-items: center; justify-content: space-between; min-height: 44px; margin-bottom: 10px; }
.trip-section-heading h2 { font-size: 15px; line-height: 1.4; margin: 0; }
.trip-section-heading .text-button { flex-shrink: 0; display: flex; gap: 4px; align-items: center; font-size: 12px; padding: 6px; }
.trip-section-heading .svg-icon { width: 16px; height: 16px; }
.itinerary-clean .trip-timeline { margin: 10px 0 0; }
.itinerary-clean .trip-timeline > li { grid-template-columns: 43px minmax(0,1fr); gap: 12px; }
.itinerary-clean .trip-timeline time,.trip-time-label { font-size: 12px; color: #697b8e; padding-top: 8px; font-weight: 500; }
.itinerary-clean .trip-stop { padding: 0 0 12px 20px; border-left: 2px solid #e3eaf2; }
.itinerary-clean .trip-stop::before { display: none; }
.itinerary-clean .trip-timeline > li:last-child .trip-stop { border-color: transparent; padding-bottom: 8px; }
.stop-number { position: absolute; left: -11px; top: 6px; width: 20px; height: 20px; display: grid; place-items: center; border: 2px solid white; border-radius: 50%; font-size: 10px; font-weight: 700; color: white; background: #0877ff; }
.stop-color-1 .stop-number { background: #1ba27e; }
.stop-color-2 .stop-number { background: #dc941c; }
.stop-color-3 .stop-number { background: #9660d1; }
.stop-number.endpoint-number { background: #edf5ff; color: #0877ff; }
.endpoint-number .svg-icon { width: 14px; height: 14px; }
.trip-stop-main { display: flex; align-items: flex-start; gap: 10px; }
.trip-stop-copy { min-width: 0; flex: 1; }
.itinerary-clean .stop-name { font-size: 14px; line-height: 1.4; min-height: 30px; padding: 4px 0; }
.itinerary-clean .trip-stop p { font-size: 12px; line-height: 1.5; margin: 3px 0 6px; }
.trip-address { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.trip-photo-button { padding: 0; background: transparent; flex: 0 0 60px; width: 60px; height: 64px; border-radius: 8px; overflow: hidden; }
.trip-photo-button .trip-stop-photo { display: block; width: 100%; height: 100%; object-fit: cover; }
.itinerary-clean .trip-stay { display: inline-flex; align-items: center; gap: 4px; font-size: 11px; color: #758398; }
.trip-stay .svg-icon { width: 13px; height: 13px; }
.stop-caption { color: #8491a2; font-size: 11px; }
.trip-entry-actions { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; margin-top: 4px; }
.trip-entry-actions > .text-button { display: flex; align-items: center; gap: 5px; font-size: 11px; min-height: 36px; padding: 4px 0; }
.trip-entry-actions .svg-icon { width: 16px; height: 16px; }
.trip-stop-menu { position: relative; margin-left: auto; }
.trip-stop-menu summary { display: grid; place-items: center; list-style: none; cursor: pointer; width: 36px; height: 36px; background: #f5f8fb; border-radius: 6px; }
.trip-stop-menu summary::-webkit-details-marker { display: none; }
.trip-stop-menu-content { position: absolute; z-index: 1100; right: 0; top: 100%; width: 228px; max-width: 65vw; background: #fff; border: 1px solid #dce5ee; border-radius: 8px; box-shadow: 0 8px 24px #20344f26; padding: 10px; }
.trip-stop-menu-content .trip-controls { gap: 8px; }
.trip-stop-menu-content .visit-forecast { margin: 0; padding: 6px 0 0; background: transparent; border: 0; }
.trip-stop-menu-content .visit-forecast .text-button { font-size: 12px; }
.itinerary-clean .trip-map { height: 330px; border-radius: 8px; border: 1px solid #dce7ef; margin: 0; }
.trip-map-number .svg-icon { width: 17px; height: 17px; }
.trip-map-column > .source-note { font-size: 11px; line-height: 1.6; }
.trip-day-summary { border-top: 1px solid #e5eaf0; margin-top: 16px; padding-top: 8px; }
.trip-day-summary > div { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 9px 0; }
.trip-day-summary dt { display: flex; align-items: center; gap: 8px; font-size: 12px; color: #6e7f91; }
.trip-day-summary .svg-icon { width: 17px; height: 17px; flex-shrink: 0; }
.trip-day-summary dd { flex-shrink: 0; font-size: 13px; font-weight: 700; margin: 0; }
.trip-empty { text-align: center; padding: 24px 12px 32px; color: #758599; font-size: 13px; }
.trip-empty-icon { display: inline-grid; place-items: center; width: 48px; height: 48px; background: #eef5ff; border-radius: 8px; color: #0877ff; }
.trip-empty .primary { display: inline-flex; align-items: center; gap: 6px; padding: 10px 16px; border-radius: 6px; }
.trip-planning-tools { margin-top: 20px; border-top: 1px solid #e0e8ef; }
.trip-planning-tools .day-planner { margin: 0; padding: 0; border-bottom: 1px solid #e0e8ef; }
.trip-planning-tools .day-planner-toggle { font-size: 14px; min-height: 52px; padding-inline: 4px; }
.trip-planning-tools #day-planner-content { padding-bottom: 14px; }
.trip-return-planner > summary { min-height: 52px; display: flex; align-items: center; gap: 8px; cursor: pointer; font-size: 14px; font-weight: 700; color: #0867df; padding-inline: 4px; list-style: none; }
.trip-return-planner > summary .svg-icon:last-child { margin-left: auto; width: 16px; }
.trip-return-planner[open] > summary .svg-icon:last-child { transform: rotate(90deg); }
.trip-return-planner .trip-optimizer { margin: 0; padding: 0 0 16px; border: 0; }
.trip-return-planner .trip-optimizer > h2 { display: none; }
.trip-storage-note { font-size: 11px; margin-top: 22px; }
.lodging-sheet { height: min(760px, 92dvh); }
.lodging-sheet[open] { gap: 8px; }
.stay-date-fields { flex-shrink: 0; display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 10px; }
.stay-date-fields label { display: grid; gap: 4px; font-size: 12px; min-width: 0; color: #556b7c; }
.stay-date-fields input { width: 100%; min-width: 0; min-height: 42px; border: 1px solid #ccd9e4; border-radius: 6px; background: white; color: #253f54; padding: 6px; font-size: 14px; }
.stay-date-note { flex-shrink: 0; margin: 0; color: #697d8b; font-size: 11px; line-height: 1.4; }
.stay-save-footer { flex-shrink: 0; display: grid; grid-template-columns: minmax(0,1fr) auto; align-items: center; gap: 6px 10px; padding-top: 10px; border-top: 1px solid #dce6ed; }
.stay-save-footer > strong { font-size: 13px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.stay-save-footer > span { font-size: 12px; color: #086edf; white-space: nowrap; }
.stay-save-footer > .primary { grid-column: 1 / -1; min-height: 44px; padding: 10px; border-radius: 6px; font-size: 14px; }
.stay-save-footer > p { grid-column: 1 / -1; font-size: 12px; color: #a64033; margin: 0; }
.stay-overlap { grid-column: 1 / -1; max-height: 88px; overflow: auto; font-size: 12px; }
.stay-overlap p { margin: 0 0 6px; }
.stay-overlap label { display: flex; gap: 8px; align-items: center; }
.lodging-options button[aria-pressed="true"] { color: #087458; font-weight: 700; }
.itinerary-clean .lodging-selected .stay-period { font-size: 11px; color: #1472d9; }
@media (max-width: 520px) { .lodging-sheet { height: min(760px,92dvh); } }
@media (max-width: 679px) {
  [data-itinerary-view="schedule"] .trip-map-column { display: none; }
  [data-itinerary-view="map"] .trip-schedule-column { display: none; }
}
@media (min-width: 680px) {
  .trip-view-switch { display: none; }
  .trip-workspace { grid-template-columns: minmax(0,1.12fr) minmax(0,1fr); gap: 24px; }
  .trip-map-column { border-left: 1px solid #e5ebf1; padding-left: 20px; }
  .trip-calendar-row { margin-block: 18px; }
  .itinerary-clean .trip-dates button { flex-basis: 68px; }
}
.trip-backup { padding: 20px 0; border-top: 1px solid #e3e8ee; border-bottom: 1px solid #e3e8ee; margin: 20px 0; }
.trip-backup h2 { font-size: 17px; margin: 0 0 14px; }
.backup-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.backup-actions button { display: flex; align-items: center; justify-content: center; gap: 8px; min-height: 44px; white-space: normal; overflow-wrap: anywhere; padding: 10px; }
.backup-actions .svg-icon { width: 20px; height: 20px; flex: 0 0 20px; }
.backup-feedback { font-size: 13px; margin: 8px 0 0; color: #176c51; }
.backup-feedback:empty { display: none; }
.backup-feedback[role=alert], .backup-sheet [role=alert] { color: #b12f3c; }
.backup-sheet { width: min(480px, calc(100% - 24px)); max-width: 100%; max-height: calc(100dvh - 32px); box-sizing: border-box; margin: auto; border: 1px solid #e3e8ee; border-radius: 8px; padding: 20px; background: #fff; color: #172b42; overflow: auto; }
.backup-sheet::backdrop { background: rgb(17 29 41 / 45%); }
.backup-sheet header { display: flex; justify-content: space-between; align-items: center; gap: 12px; }
.backup-sheet header h2 { margin: 0; }
.backup-sheet p { font-size: 14px; line-height: 1.6; overflow-wrap: anywhere; }
.backup-filename { color: #637184; }
.backup-counts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; padding: 16px 0; border-block: 1px solid #e3e8ee; }
.backup-counts dt { font-size: 13px; color: #637184; }
.backup-counts dd { margin: 4px 0 0; font-size: 22px; font-weight: 700; }
.detail-korean-name { margin: 8px 0; font-size: 16px; line-height: 1.5; font-weight: 600; color: #34445a; overflow-wrap: anywhere; }
.detail-secondary-address { margin: 4px 0 8px; color: #637184; font-size: 12px; line-height: 1.6; overflow-wrap: anywhere; }
.place-name-credit { color: #637184; font-size: 11px; }
.destination-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-block: 12px; }
.destination-actions button { display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-height: 44px; max-width: 100%; padding: 8px 10px; border: 1px solid #dbe5ef; border-radius: 6px; background: #fff; color: #215fa2; font: inherit; font-size: 13px; line-height: 1.4; cursor: pointer; }
.destination-actions button span { min-width: 0; overflow-wrap: anywhere; }
.destination-actions button:disabled { color: #657583; cursor: default; }
.destination-actions .svg-icon { width: 18px; height: 18px; flex-shrink: 0; }
.rag-source .destination-actions { margin: 0; padding: 8px 12px; border-top: 1px solid #e9eef3; }
.destination-dialog { width: min(540px, calc(100% - 24px)); max-height: calc(100dvh - 32px); padding: 0; border: 1px solid #dbe5ef; border-radius: 8px; background: #fff; color: #12243a; overflow: auto; }
.destination-dialog::backdrop { background: rgb(15 27 42 / 48%); }
.destination-dialog header { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 16px 20px; border-bottom: 1px solid #e9eef3; }
.destination-dialog header h2 { margin: 0; font-size: 17px; overflow-wrap: anywhere; }
.destination-body { padding: 20px; }
.destination-request { margin: 0 0 18px; color: #346aa0; font-size: 18px; }
.destination-body h3 { font-size: 30px; line-height: 1.4; margin: 0 0 18px; overflow-wrap: anywhere; }
[data-destination-address] { font-size: 22px; line-height: 1.7; overflow-wrap: anywhere; }
.destination-status { font-size: 13px; color: #637184; line-height: 1.6; }
.destination-body textarea { width: 100%; min-height: 110px; border: 1px solid #bfcddd; border-radius: 6px; padding: 10px; font: inherit; line-height: 1.6; resize: vertical; }
@media (max-width: 600px) {
  .backup-sheet { width: 100%; max-height: calc(100dvh - 24px); margin: auto 0 0; padding-bottom: max(20px, env(safe-area-inset-bottom)); border-radius: 8px 8px 0 0; }
}
