/* Rovego · itinerary editor + readability pass. Loaded last so it can refine the base styles. */
:root { --it-soft: rgba(255, 255, 255, .62); --it-teal: #178b7a; --it-warn: #b4581d; --it-radius: 16px; }
/* ---------- readability: nothing below 11px in the working UI ---------- */
.hint,.instruction span { font-size: 12px; }
.micro,.switch-copy span,.reco small,.reco-score,.live-reco-head span,.season-head p,.season-row small,.season-state,.season-tip { font-size: 11px; }
.reco strong,.season-row strong,.theme-place strong { font-size: 12px; }
.theme-place small,.theme-popular-head span,.theme-place-rank,.theme-prob { font-size: 11px; }
.theme-chip,.theme-popular-head strong,.date-display,.map-pill,.toast { font-size: 12px; }
.intent-action small { font-size: 11px; }
.ai-analysis { font-size: 12px; }
.date-prediction strong { font-size: 12.5px; }
.date-prediction span { font-size: 11.5px; }
.selected-plan { font-size: 12px; }
.selected-plan strong { font-size: 13px; }
.saved-route strong { font-size: 14px; }
.saved-route small { font-size: 12px; }
.bulk-import summary { font-size: 12.5px; }
.bulk-body textarea { font-size: 13px; }
.bulk-status { font-size: 11.5px; }
.tree-head p,.filter-status,.root-node span,.branch p,.branch-season,.branch-event { font-size: 11px; }
.root-node small,.branch-photo span,.branch em,.branch-meta { font-size: 10.5px; }
.branch strong { font-size: 13px; }
.complete-copy span,.opt-head p { font-size: 12px; }
.stat small,.saving small,.saving span,.compare-card p,.change small,.change strong { font-size: 11.5px; }
.route-choice-action small,.empty-state p { font-size: 12px; }
.route-time-label { font-size: 11px; }
.intel-head strong { font-size: 14px; }
.intel-head span { font-size: 11px; }
.intel-signal b { font-size: 11.5px; }
.intel-signal small { font-size: 11.5px; line-height: 1.4; }
.photo-strip small { font-size: 11px; }
.itinerary-day h3 { font-size: 15px; }
.hourly-item { font-size: 13px; }
.itinerary-summary span { font-size: 12px; }
.field-head label { font-size: 13px; }
.input { font-size: 14px; }
/* ---------- shared focus ring ---------- */
.sidebar :is(button, input, select, textarea, summary, a):focus-visible,.mobile-switch button:focus-visible,.toast-undo:focus-visible { outline: 2px solid var(--it-accent); outline-offset: 2px; }
/* ---------- trip header & toolbar ---------- */
.path-section.show { flex: 0 0 auto; }
.trip-head { z-index: 5; padding: 16px 21px 11px; }
.trip-title-row { display: flex; align-items: center; gap: 8px; }
.trip-name { flex: 1; min-width: 0; border: 0; font: inherit; letter-spacing: -.035em; padding: 4px 6px; margin-left: -6px; border-radius: 10px; }
.trip-name::placeholder { opacity: .9; }
.trip-name:hover,.trip-name:focus { background: rgba(255, 255, 255, .7); outline: none; box-shadow: inset 0 0 0 1px rgba(11, 111, 216, .25); }
.save-state { flex: 0 0 auto; font-size: 11px; padding: 3px 8px; border-radius: 999px; }
.save-state:empty { display: none; }
.trip-stats span + span:before,.trip-stats button + span:before { content: ' · '; color: #a4b3b8; }
.it-leg-warn { display: block; font-size: 11.5px; }
.trip-toolbar { display: flex; align-items: center; flex-wrap: nowrap; }
.tool-btn { height: 32px; display: inline-flex; align-items: center; justify-content: center; gap: 4px; padding: 0 9px; border: 1px solid rgba(255, 255, 255, .95); border-radius: 999px; background: rgba(255, 255, 255, .66); box-shadow: 0 1px 2px rgba(20, 50, 60, .06); color: #1c4656; font-size: 12.5px; font-weight: 640; cursor: pointer; white-space: nowrap; list-style: none; transition: background .15s, transform .15s; }
.tool-btn.icon { width: 32px; padding: 0; font-size: 16px; }
.tool-btn:hover:not(:disabled) { background: #fff; }
.tool-btn:active:not(:disabled) { transform: scale(.96); }
.tool-btn:disabled { opacity: .38; cursor: default; }
.tool-more { margin-left: auto; }
.tool-more summary::-webkit-details-marker { display: none; }
.tool-menu { position: absolute; z-index: 30; display: grid; gap: 2px; }
.tool-menu button { text-align: left; border: 0; background: transparent; padding: 9px 10px; border-radius: 9px; font-size: 13px; color: var(--ink); cursor: pointer; }
.tool-menu button:hover { background: rgba(11, 111, 216, .08); }
.tool-menu .danger,.ed-btn.danger,.it-day-menu .danger,.secondary.danger { color: #b42318; }
/* ---------- add place ---------- */
.add-place { display: grid; grid-template-columns: minmax(0, 1fr) 104px auto; gap: 6px; margin-bottom: 8px; }
.add-place .input { height: 40px; border-radius: 12px; font-size: 13.5px; }
.add-place select.input { padding: 0 6px; font-size: 12.5px; }
.add-place .primary { padding: 0 14px; border-radius: 12px; font-size: 13px; }
.bulk-import:not([open]) { display: none; }
.it-hint { margin: 0 2px 10px; font-size: 11.5px; color: var(--muted); }
/* ---------- itinerary ---------- */
.timeline { padding-left: 0; margin: 0 0 12px; overflow: visible; }
.timeline:before { display: none; }
.it-day { margin-bottom: 10px; }
.it-day.drop-day { box-shadow: 0 0 0 2px rgba(11, 111, 216, .35), 0 8px 22px rgba(11, 111, 216, .12); background: rgba(240, 247, 255, .82); }
.it-day-head { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 4px 8px; padding: 0 2px 7px; }
.it-day-title { display: flex; gap: 7px; white-space: nowrap; }
.it-day-title span { font-size: 12px; overflow: hidden; text-overflow: ellipsis; }
.it-day-title .it-day-date { font-size: 13px; font-weight: 650; color: var(--label-2); white-space: nowrap; }
.it-day-meta { grid-column: 1 / -1; grid-row: 2; display: flex; align-items: center; gap: 6px; flex-wrap: wrap; font-size: 12px; }
.it-time-input { height: 28px; width: 108px; padding: 0 6px; font: inherit; font-size: 12.5px; }
.it-chip { padding: 2px 7px; border-radius: 999px; font-size: 11px; }
.it-icon-btn { flex: 0 0 auto; width: 30px; height: 30px; border: 0; border-radius: 50%; background: transparent; font-size: 16px; line-height: 1; cursor: pointer; }
.it-day-menu { display: grid; gap: 2px; margin: 0 0 8px; padding: 5px; }
.it-day-menu button { border: 0; background: transparent; text-align: left; padding: 8px 10px; border-radius: 8px; font-size: 13px; cursor: pointer; }
.it-day-menu button:hover:not(:disabled) { background: rgba(11, 111, 216, .07); }
.it-day-menu button:disabled { opacity: .4; cursor: default; }
.it-list { position: relative; min-height: 8px; }
.it-item { position: relative; display: grid; grid-template-columns: 22px 26px minmax(0, 1fr); align-items: center; gap: 6px; padding: 7px 8px 7px 2px; border-radius: 14px; background: rgba(255, 255, 255, .78); border: 1px solid rgba(255, 255, 255, .96); box-shadow: 0 1px 2px rgba(20, 50, 60, .05); transition: box-shadow .15s, background .15s, opacity .15s; }
.it-item:hover,.it-item.map-hover { box-shadow: 0 0 0 1px rgba(55, 200, 156, .35), 0 4px 12px rgba(20, 50, 60, .06); }
.it-item.open { box-shadow: 0 0 0 1.5px rgba(11, 111, 216, .45); border-radius: 14px 14px 4px 4px; }
.it-item.current .it-badge { background: linear-gradient(135deg, #17a37c, #39cba0); }
.it-handle { width: 22px; height: 34px; display: grid; place-items: center; border: 0; border-radius: 8px; background: transparent; cursor: grab; touch-action: none; padding: 0; }
.it-handle:hover { color: #3b5b67; background: rgba(20, 69, 87, .06); }
.it-is-dragging,.it-is-dragging * { cursor: grabbing !important; user-select: none !important; -webkit-user-select: none !important; }
.it-badge { width: 24px; height: 24px; border-radius: 50%; display: grid; place-items: center; font-size: 12px; }
.it-main { min-width: 0; border: 0; background: transparent; text-align: left; padding: 0; cursor: pointer; color: inherit; font: inherit; }
.it-ghost { position: fixed; left: 0; top: 0; z-index: 3000; transform-origin: left top; }
.it-empty { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 12px; border-radius: 14px; border: 1.5px dashed rgba(25, 67, 82, .16); font-size: 12.5px; }
.ed-link { border: 0; background: none; padding: 2px 0; font-size: 12.5px; font-weight: 600; cursor: pointer; }
.it-insert-panel { margin: 4px 0; padding: 10px; }
.ins-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 6px; font-size: 13px; }
.ins-types { display: grid; grid-template-columns: repeat(4, 1fr); gap: 5px; }
.ins-types button { display: flex; flex-direction: column; align-items: center; gap: 2px; padding: 7px 2px; font-size: 12px; cursor: pointer; }
.ins-types button span { font-size: 18px; }
.ins-types button:hover { background: #fff; border-color: rgba(11, 111, 216, .3); }
.ins-place { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 6px; margin-top: 8px; }
.ins-place .input { height: 36px; font-size: 13px; border-radius: 10px; border-color: rgba(25, 67, 82, .1); }
.it-editor { margin: -1px 0 4px; padding: 10px; display: grid; gap: 9px; }
.ed-place { margin: 0; font-size: 12.5px; line-height: 1.5; }
.ed-place span { color: #6e633d; }
.ed-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.ed-field { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.ed-field > span { font-size: 11.5px; font-weight: 600; }
.ed-field input,.ed-field select,.ed-field textarea { width: 100%; min-width: 0; height: 34px; border: 1px solid rgba(25, 67, 82, .12); border-radius: 9px; background: #fff; padding: 0 8px; font: inherit; font-size: 13px; color: var(--ink); }
.ed-field textarea { height: auto; min-height: 52px; padding: 7px 8px; resize: vertical; line-height: 1.45; }
.ed-field small { font-size: 11px; min-height: 16px; }
.ed-wide { grid-column: 1 / -1; }
.ed-icons { display: flex; flex-wrap: wrap; gap: 4px; }
.ed-icons button { width: 32px; height: 32px; font-size: 16px; cursor: pointer; padding: 0; }
.ed-icons button.active { border-color: var(--it-accent); background: rgba(11, 111, 216, .08); box-shadow: 0 0 0 2px rgba(11, 111, 216, .15); }
.rest-suggestion { text-align: left; border: 1px solid rgba(25, 67, 82, .08); border-radius: 10px; background: #f6fafb; padding: 7px 9px; cursor: pointer; }
.rest-suggestion strong { display: block; font-size: 12.5px; }
.rest-suggestion small { font-size: 11px; color: var(--muted); }
.ed-actions { display: flex; flex-wrap: wrap; gap: 6px; justify-content: flex-end; }
.ed-btn { height: 32px; padding: 0 12px; font-size: 12.5px; cursor: pointer; }
.ed-btn.danger { margin-right: auto; border-color: rgba(180, 35, 24, .15); }
.ed-btn.primary-lite { border-color: transparent; }
.it-footer { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 2px 2px 0; font-size: 12px; }
.it-add-day { padding: 8px 12px; font-size: 13px; font-weight: 600; cursor: pointer; }
.it-add-day.drop-day { background: rgba(11, 111, 216, .1); border-style: solid; }
/* ---------- place intel & prices ---------- */
.place-intel { padding: 13px; border-radius: 20px; }
.place-intel.pulse { box-shadow: 0 0 0 2px rgba(11, 111, 216, .35); transition: box-shadow .3s; }
.price-actions { display: flex; gap: 4px; flex-wrap: wrap; }
.price-actions button { flex: 1 1 auto; padding: 7px 8px; font-size: 12px; border-radius: 999px; }
.inline-price-results { display: none; margin-top: 8px; }
.inline-price-results.show { display: grid; gap: 8px; }
.price-context { font-size: 12px; color: var(--muted); }
.price-loading { font-size: 12px; color: var(--muted); padding: 8px 2px; }
.price-group { display: grid; gap: 4px; padding: 8px; border-radius: 13px; background: rgba(255, 255, 255, .55); }
.pg-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.pg-head strong { font-size: 13px; }
.price-badge { flex: 0 1 auto; padding: 2px 8px; border-radius: 999px; font-size: 11px; font-weight: 650; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.price-badge.live { background: rgba(23, 163, 124, .14); color: #11704f; }
.price-badge.live:before { content: '● '; }
.price-badge.estimate { background: rgba(255, 149, 100, .16); color: var(--it-warn); }
.price-badge.sandbox { background: rgba(122, 99, 216, .14); color: #5a45b8; }
.price-badge.muted { background: rgba(20, 50, 60, .07); color: var(--muted); }
.price-result { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; align-items: center; padding: 7px 9px; border-radius: 10px; background: rgba(255, 255, 255, .85); color: inherit; text-decoration: none; }
a.price-result:hover { box-shadow: inset 0 0 0 1px rgba(11, 111, 216, .25); }
.price-result strong { font-size: 12.5px; }
.price-result small { display: block; font-size: 11px; color: var(--muted); margin-top: 1px; line-height: 1.35; }
.price-result b { font-size: 13px; color: #1d6f5b; font-variant-numeric: tabular-nums; }
.price-result.estimate b { color: #7a5a2e; }
.pg-foot { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 4px 10px; }
.pg-note { font-size: 11px; color: var(--muted); line-height: 1.4; }
.pg-links { display: flex; gap: 8px; flex-wrap: wrap; }
.pg-links a { font-size: 11.5px; color: var(--it-accent); text-decoration: none; font-weight: 600; }
.price-note { font-size: 11px; line-height: 1.45; margin: 8px 0; }
.nearby-live-btn { width: 100%; margin-top: 2px; font-size: 12px !important; padding: 9px 10px !important; text-align: center !important; }
/* ---------- settings ---------- */
.trip-settings { margin: 0 0 14px; }
.trip-settings summary { list-style: none; cursor: pointer; padding: 12px 14px; font-size: 13px; font-weight: 650; display: flex; justify-content: space-between; }
.trip-settings summary::-webkit-details-marker { display: none; }
.trip-settings summary:after { content: '⌄'; color: var(--muted); }
.trip-settings[open] summary:after { content: '⌃'; }
.trip-settings-body { padding: 0 12px 6px; }
/* ---------- toast with action ---------- */
.toast { display: flex; align-items: center; gap: 10px; max-width: min(92vw, 460px); }
.toast.has-action { pointer-events: auto; padding-right: 6px; }
.toast > span { min-width: 0; }
.toast-undo { flex: 0 0 auto; white-space: nowrap; border: 0; border-radius: 999px; padding: 5px 11px; font-size: 12px; cursor: pointer; }
.toast-undo:hover { background: rgba(255, 255, 255, .28); }
/* ---------- mobile ---------- */
.mobile-switch { display: none; }
@media (max-width: 600px) {
.app { padding-bottom: max(8px, env(safe-area-inset-bottom)); }
.workspace { grid-template-columns: 1fr !important; grid-template-rows: minmax(0, 1fr) !important; }
body[data-view="map"] .sidebar { display: none; }
body:not([data-view="map"]) .map-shell { display: none; }
.sidebar { border-radius: 22px; }
.trip-head { margin: -16px -14px 10px; padding: 14px 14px 10px; border-radius: 22px 22px 0 0; }
.tree-panel { bottom: 76px !important; max-height: 52%; overflow: auto; }
.mobile-switch { position: fixed; z-index: 1500; border: 1px solid rgba(255, 255, 255, .95); box-shadow: 0 12px 34px rgba(20, 50, 60, .22); }
.mobile-switch button { min-width: 84px; cursor: pointer; }
.add-place { grid-template-columns: minmax(0, 1fr) 92px; }
.add-place .primary { grid-column: 1 / -1; height: 40px; }
.it-handle { width: 30px; height: 40px; }
.it-item { grid-template-columns: 30px 26px minmax(0, 1fr); }
.tool-btn { height: 34px; }
.toast { top: auto; max-width: calc(100vw - 32px); }
}
@media (prefers-reduced-motion: reduce) {
.it-item,.tool-btn { transition: none; }
}
/* ---------- transport advice ---------- */
.it-leg-why { display: block; margin-top: 2px; font-size: 11.5px; line-height: 1.4; }
.it-leg-why b { display: inline-block; padding: 0 6px; border-radius: 999px; font-size: 10px; font-weight: 750; letter-spacing: .02em; vertical-align: 1px; }
.it-nav { text-decoration: none; font-weight: 600; white-space: nowrap; }
.it-nav:hover { text-decoration: underline; }
.transport-prefs .pref-row { display: flex; align-items: center; gap: 8px; padding: 5px 2px; font-size: 13px; color: var(--ink); cursor: pointer; }
.transport-prefs input[type="checkbox"] { width: 16px; height: 16px; accent-color: #173f52; }
.pref-num { width: 56px; height: 30px; border: 1px solid rgba(25, 67, 82, .12); border-radius: 8px; padding: 0 6px; font: inherit; }
/* leg row v2: times + mode picker on top, details full width below */
.it-leg-why b { margin-right: 6px; }
.tool-btn { flex: 0 0 auto; }
.trip-toolbar { overflow-x: auto; scrollbar-width: none; padding: 2px 0; }
.trip-toolbar::-webkit-scrollbar { display: none; }
.tool-more { position: static; }
.trip-head { position: sticky; }
.tool-menu { right: 21px; top: auto; margin-top: 6px; }
/* dialogs lifted to the page level */
.optimize.app-dialog,.route-choice.app-dialog { position: fixed; z-index: 2500; }
/* ---------- v3: current day, detail level, segmented legs ---------- */
.it-bar { display: flex; align-items: center; gap: 8px; }
.it-bar .it-hint { margin: 0; }
.day-current { margin-left: 4px; padding: 1px 8px; border-radius: 999px; font-size: 10.5px; font-weight: 750; }
.day-pick { margin-left: 4px; padding: 1px 8px; border: 1px dashed rgba(25, 67, 82, .25); border-radius: 999px; background: transparent; color: var(--muted); font-size: 10.5px; cursor: pointer; opacity: 0; transition: opacity .15s; }
.it-day:hover .day-pick,.day-pick:focus-visible { opacity: 1; }
@media (hover: none) {
.day-pick { opacity: .8; }
}
.tz { font-size: 10px; font-weight: 600; }
.it-leg-tip { display: block; margin-top: 3px; font-size: 11.5px; }
.it-leg-warn { margin-top: 3px; }
.ed-hm { display: flex; align-items: center; gap: 4px; }
.ed-hm input { width: 52px !important; text-align: right; }
.ed-hm em { font-style: normal; font-size: 12px; color: var(--muted); }
.ed-chips { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 4px; }
.ed-chips button { padding: 3px 8px; font-size: 11.5px; cursor: pointer; }
.ed-chips button.active { border-color: transparent; }
.ed-stay { grid-column: 1 / -1; }
.pin.airport-pin { width: auto; height: auto; padding: 3px 7px; border-radius: 999px; background: #fff; border: 2px solid #6a4fd0; transform: none; box-shadow: 0 3px 10px rgba(60, 40, 140, .25); }
.pin.airport-pin span { transform: none; font-size: 10.5px; font-weight: 750; color: #4a35a8; white-space: nowrap; }
@media (max-width: 600px) {
.it-bar .it-hint { display: none; }
.it-bar { justify-content: flex-end; }
}
/* advanced leg panel: use the full card width */
.pin.airport-pin { display: inline-block; white-space: nowrap; }
/* =====================================================================================
   v4 · day editor: main stops in front, travel in between (Depart → how → Arrive), quiet extras
   ===================================================================================== */
.trip-head { padding-bottom: 10px; }
.trip-stats { margin: 0 0 8px; }
.it-day { padding: 10px 10px 8px; scroll-margin-top: 178px; transition: box-shadow .2s; }
.day-current { display: none; }
.it-day.is-current .day-current { display: inline-block; }
.it-day-start { display: inline-flex; align-items: center; gap: 5px; font-size: 12px; }
/* main stop */
.it-item.is-place { grid-template-columns: 20px 28px minmax(0, 1fr) auto; align-items: start; gap: 8px; padding: 10px 10px 10px 2px; margin: 2px 0; }
.it-item.is-place .it-handle { height: 30px; opacity: .45; }
.it-item.is-place:hover .it-handle,.it-item .it-handle:focus-visible { opacity: 1; }
.it-item.is-place .it-badge { width: 28px; height: 28px; font-size: 13px; margin-top: 1px; }
.pc-body { min-width: 0; }
.pc-name { display: block; width: 100%; letter-spacing: -.015em; line-height: 1.25; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pc-meta { display: flex; align-items: center; gap: 4px 8px; margin-top: 4px; font-size: 12px; }
.pc-meta time { font-variant-numeric: tabular-nums; font-weight: 650; font-size: 12.5px; }
.pc-meta time sup { font-size: 9px; color: var(--it-warn); }
.pc-meta .warn { font-style: normal; color: var(--it-warn); font-weight: 650; }
.pc-flag { padding: 0 6px; border-radius: 999px; background: rgba(11, 111, 216, .08); color: #205d86; font-size: 11px; }
.pc-note { color: #5b6f76; font-style: italic; }
.pc-stay { border-radius: 999px; padding: 2px 9px; font: inherit; font-size: 12px; font-weight: 650; cursor: pointer; }
.pc-stay:hover,.pc-stay.on { border-color: #147aa5; background: #fff; color: #0b5d9e; }
.pc-stay-edit { display: flex; flex-wrap: wrap; align-items: center; gap: 5px; margin-top: 8px; }
.pc-stay-edit > button { padding: 3px 9px; font-size: 11.5px; cursor: pointer; }
.pc-stay-edit > button.active { border-color: transparent; }
.pc-stay-edit .pc-stay-done { border-color: transparent; }
.pc-thumb { width: 52px; height: 52px; border-radius: 12px; object-fit: cover; background: #e6eef0; }
.it-item.flash { animation: it-flash 1.2s ease; }
@keyframes it-flash { 0%, 40% { box-shadow: 0 0 0 3px rgba(23, 163, 124, .55); } 100% { box-shadow: 0 3px 12px rgba(20, 60, 75, .07); } }
/* quiet extras: coffee, charging, meals… */
.it-item.is-extra { grid-template-columns: 18px minmax(0, 1fr); gap: 2px; padding: 0 4px 0 0; margin: 1px 0; background: transparent; border-radius: 10px; min-height: 28px; }
.it-item.is-extra:hover { box-shadow: none; }
.it-item.is-extra .it-handle { width: 18px; height: 26px; opacity: 0; }
.it-item.is-extra:hover .it-handle { opacity: .7; }
.ex-main { display: flex; align-items: center; gap: 6px; min-height: 28px; font-size: 12.5px; color: #3c5964; }
.ex-ico { width: 22px; height: 22px; border-radius: 7px; display: grid; place-items: center; font-size: 12.5px; flex: none; }
.ex-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 600; }
.ex-dur { font-size: 11.5px; white-space: nowrap; }
.ex-main time { margin-left: auto; font-variant-numeric: tabular-nums; font-size: 11.5px; }
.ex-main .warn { font-style: normal; color: var(--it-warn); font-size: 11px; }
.it-item.is-extra.open { box-shadow: 0 0 0 1.5px rgba(11, 111, 216, .45); }
/* travel between stops */
.cx { position: relative; margin: 0 0 0 33px; }
.cx::before { content: ''; position: absolute; left: 4px; top: 16px; bottom: 16px; border-left: 2px dotted rgba(20, 110, 160, .35); }
.cx-row { position: relative; display: flex; align-items: center; gap: 6px; font-size: 12px; color: var(--muted); }
.cx-row time,.cx-time-in { font-variant-numeric: tabular-nums; font-weight: 700; font-size: 12.5px; color: #165f86; }
.cx-time-in { height: 26px; padding: 0 4px; margin-left: -5px; border: 1px solid transparent; border-radius: 8px; background: transparent; font-family: inherit; cursor: pointer; }
.cx-time-in:focus { outline: none; box-shadow: 0 0 0 3px rgba(20, 122, 165, .12); }
.cx-label { font-weight: 600; }
.cx-note { color: #11704f; font-size: 11.5px; }
.cx-line { display: flex; align-items: center; gap: 4px 8px; font-size: 12px; color: #3b5864; }
.cx-dur { font-variant-numeric: tabular-nums; }
.cx .it-leg-why,.cx .it-leg-tip,.cx .it-leg-warn { margin-top: 4px; }
.cx-add { display: inline-block; margin-top: 3px; border: 0; background: transparent; padding: 2px 6px; margin-left: -6px; border-radius: 999px; font-size: 11.5px; font-weight: 600; cursor: pointer; opacity: .55; transition: opacity .15s, background .15s, color .15s; }
.cx:hover .cx-add,.day-end:hover .cx-add,.cx-add:focus-visible { opacity: 1; color: var(--it-accent); }
.cx-add:hover { background: rgba(11, 111, 216, .08); }
.cx .it-item.is-extra { margin-left: -2px; }
.cx .it-editor { margin: 2px 0 6px -18px; }
.cx .it-insert-panel { margin: 6px 0 4px -18px; }
.day-end { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin: 4px 2px 0 33px; font-size: 11.5px; }
.day-end .it-insert-panel { flex: 1; margin-left: -33px; }
.day-end .it-insert-panel + span { display: none; }
.hm-in input { width: 30px !important; height: 26px !important; border: 0 !important; background: transparent !important; font-size: 13.5px !important; padding: 0 !important; box-shadow: none !important; }
.hm-in input::-webkit-outer-spin-button,.hm-in input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.hm-in input:focus { background: rgba(11, 111, 216, .08) !important; }
.hm-in.set { border-color: rgba(11, 111, 216, .5); background: rgba(11, 111, 216, .04); }
.ed-field input.placeName,.ed-field [data-ed="placeName"] { font-weight: 650; }
.ed-field > span small { font-weight: 500; color: var(--muted); }
@media (hover: none) {
.cx-add { opacity: .8; }
.it-item.is-place .it-handle { opacity: .8; }
.it-item.is-extra .it-handle { opacity: .5; }
}
@media (max-width: 600px) {
.it-day { scroll-margin-top: 170px; }
.it-item.is-place { grid-template-columns: 26px 28px minmax(0, 1fr) auto; }
.it-item.is-extra { grid-template-columns: 24px minmax(0, 1fr); }
.cx { margin-left: 34px; }
.pc-thumb { width: 44px; height: 44px; }
}
/* v4 compact travel rows */
.cx { padding: 2px 0 2px 18px; }
.cx-row { min-height: 22px; }
.cx-time-in,.it-day-start .it-time-input { width: 6ch !important; min-width: 0; text-align: left; }
.it-day-start .it-time-input { height: 26px; padding: 0 6px; font-weight: 650; font-variant-numeric: tabular-nums; }
.cx-label { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cx-travel { padding: 2px 0; }
.cx-line { min-width: 0; }
.cx-line .cx-dur { white-space: nowrap; }
.cx-line .it-nav { white-space: nowrap; }
.cx-line .cx-add { margin: 0 0 0 auto; flex: none; }
.sidebar { overflow-x: hidden; }
.cx-line .it-nav { font-size: 13px; padding: 0 2px; }
.day-end span { text-align: right; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.day-end .cx-add { flex: none; }
@media (min-width: 601px) {
.workspace { grid-template-columns: clamp(370px, 30vw, 420px) minmax(0, 1fr) !important; }
}
@media (max-width: 420px) {
.cx-line { flex-wrap: wrap; }
}
.cx-line,.cx-line:is(*) { flex-wrap: wrap !important; }
/* v5 · icon transport picker, collapsible + draggable days, AI plan panel */
.mode-pick { display: inline-flex; gap: 2px; padding: 2px; flex: none; }
.mp { width: 28px; height: 26px; border: 0; background: transparent; font-size: 14px; line-height: 1; cursor: pointer; position: relative; padding: 0; opacity: .55; filter: grayscale(.6); transition: opacity .12s, background .12s; }
.mp:hover { opacity: 1; filter: none; }
.mp.on { opacity: 1; filter: none; }
.mp.rec::after { content: ''; position: absolute; right: 3px; top: 3px; width: 5px; height: 5px; border-radius: 50%; }
.mp:focus-visible { outline: 2px solid var(--it-accent); outline-offset: 1px; }
.cx-dur { font-weight: 600; }
.it-bar { flex-wrap: wrap; }
.it-bar .it-hint { flex: 1 1 140px; }
.day-grip { width: 18px; height: 26px; display: grid; place-items: center; border: 0; border-radius: 7px; background: transparent; cursor: grab; touch-action: none; padding: 0; margin-left: -4px; }
.day-grip:hover { color: #3b5b67; }
.day-fold { width: 22px; height: 22px; border: 0; border-radius: 50%; background: transparent; font-size: 13px; cursor: pointer; padding: 0; transition: transform .15s; }
.it-day.collapsed .day-fold { transform: rotate(-90deg); }
.day-theme { font-style: normal; font-size: 12px; overflow: hidden; text-overflow: ellipsis; }
.it-day-title { min-width: 0; }
.it-day.collapsed { padding-bottom: 10px; }
.it-day.collapsed .it-day-head { padding-bottom: 4px; }
.day-sum { display: flex; flex-direction: column; align-items: flex-start; gap: 1px; width: 100%; text-align: left; border: 0; border-radius: 12px; padding: 8px 10px; cursor: pointer; color: inherit; font: inherit; }
.day-sum:hover { background: #fff; }
.day-sum span { font-size: 13px; font-weight: 650; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 100%; }
.day-sum small { font-size: 11.5px; }
.it-day.dragging { opacity: .35; }
.day-ghost { padding: 8px 12px; border-radius: 14px; background: #fff; }
.day-drop-line { margin: 4px 8px 8px; }
.ai-panel { margin: 0 0 10px; }
.ai-panel summary { list-style: none; display: flex; align-items: center; gap: 8px; padding: 10px 12px; cursor: pointer; }
.ai-panel summary::-webkit-details-marker { display: none; }
.ai-panel summary::after { content: '⌄'; margin-left: auto; color: var(--muted); }
.ai-panel[open] summary::after { content: '⌃'; }
.ai-badge { flex: none; padding: 2px 8px; border-radius: 999px; background: #5a45b8; color: #fff; font-size: 11px; font-weight: 750; }
.ai-sum-text { min-width: 0; font-size: 12.5px; color: #2c4a55; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ai-panel[open] .ai-sum-text { white-space: normal; }
.ai-body { padding: 0 12px 12px; display: grid; gap: 8px; font-size: 12.5px; color: #35535e; }
.ai-body p { margin: 0; line-height: 1.45; }
.ai-q b,.ai-src b,.ai-ideas b { display: block; font-size: 11.5px; color: #4f646c; margin-bottom: 3px; }
.ai-q span { display: inline-block; margin: 0 6px 3px 0; padding: 1px 8px; border-radius: 999px; background: rgba(255, 255, 255, .75); font-size: 11.5px; }
.ai-tips { margin: 0; padding-left: 18px; line-height: 1.45; }
.ai-ideas small { color: var(--muted); font-size: 11px; }
.ai-ideas > div { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 4px; }
.ai-idea { display: inline-flex; align-items: center; gap: 5px; border: 1px solid rgba(20, 80, 100, .14); background: #fff; border-radius: 999px; padding: 4px 10px; font-size: 12px; font-weight: 600; color: #1d4b5b; cursor: pointer; }
.ai-idea small { color: var(--muted); font-weight: 500; }
.ai-idea:hover:not(:disabled) { border-color: #147aa5; }
.ai-idea.added { opacity: .55; cursor: default; }
.ai-note { color: #8a4512 !important; }
.ai-src a { display: block; text-decoration: none; font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ai-src a:hover { text-decoration: underline; }
@media (hover: none) {
.mp { opacity: .75; }
}
.it-day.collapsed .it-day-meta { display: none; }
.it-day-meta .day-theme { flex: 1 1 100%; order: -1; font-size: 12.5px; }
.day-over { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 8px; margin: 0 0 8px; padding: 9px 11px; border-radius: 12px; font-size: 12.5px; }
.day-over .ed-btn { height: 30px; }
.toast-dismiss { color: #cfe3ea !important; }
/* small arrow dropdowns: only the arrow shows, the text next to it says what is chosen */
.arrow-pick { position: relative; display: inline-block; width: 1.1em; height: 1em; margin: 0 1px 0 2px; vertical-align: -0.12em; }
.arrow-pick select { position: absolute; inset: 0; width: 100%; height: 100%; padding: 0; border: 0; border-radius: 4px; opacity: 1; color: transparent; font-size: 16px; cursor: pointer; -webkit-appearance: none; appearance: none; background: transparent url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%23147aa5' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat center; }
.arrow-pick select:hover { background-color: rgba(20, 122, 165, .1); }
.arrow-pick select:focus-visible { outline: 2px solid var(--it-accent); outline-offset: 1px; }
.arrow-pick select option { color: #10242d; }
/* costs */
.pc-cost { display: inline-flex; align-items: center; gap: 1px; height: 24px; padding: 0 6px; border-radius: 999px; font-size: 12px; cursor: text; }
.pc-cost em { font-style: normal; font-weight: 650; }
.pc-cost input { width: 5.5ch; border: 0; background: transparent; font: inherit; font-size: 12px; font-weight: 650; padding: 0; -moz-appearance: textfield; }
.pc-cost input::-webkit-outer-spin-button,.pc-cost input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.pc-cost input::placeholder { font-weight: 500; }
.pc-cost input:focus { outline: none; }
.pc-cost:focus-within { border-style: solid; border-color: #147aa5; background: #fff; }
.pc-cost.set { border-style: solid; border-color: rgba(23, 163, 124, .35); }
.ex-cost { font-size: 11.5px; font-weight: 650; }
.it-chip.cost { font-weight: 650; }
.cost-in { display: flex; align-items: center; gap: 4px; }
.cost-in em { font-style: normal; font-weight: 650; color: var(--muted); }
/* price comparison */
.price-panel { margin: 0 0 10px; }
.price-panel summary { list-style: none; display: flex; align-items: center; gap: 8px; padding: 10px 12px; cursor: pointer; }
.price-panel summary::-webkit-details-marker { display: none; }
.price-panel summary::after { content: '⌄'; color: var(--muted); }
.price-panel[open] summary::after { content: '⌃'; }
.pp-title { font-weight: 700; }
.pp-total { margin-left: auto; font-size: 12.5px; }
.pp-total b { font-size: 14px; }
.cx-cost { font-weight: 650; }
/* location detail panel */
#placeIntel,#nearbyLiveBtn { display: none !important; }
.detail-panel { position: fixed; z-index: 2200; top: 24px; right: 24px; bottom: 24px; width: min(400px, calc(100vw - 48px)); overflow: auto; backdrop-filter: blur(30px) saturate(160%); -webkit-backdrop-filter: blur(30px) saturate(160%); }
.detail-panel[hidden] { display: none; }
.dp-hero { position: relative; height: 54px; background-size: cover; background-position: center; border-radius: 24px 24px 0 0; }
.dp-hero.has-img { height: 170px; }
.dp-close { position: absolute; top: 10px; right: 10px; line-height: 1; cursor: pointer; }
.dp-head { padding: 12px 16px 4px; font-size: 12.5px; }
.dp-head h2 { margin: 3px 0 4px; line-height: 1.2; }
.dp-rating { font-weight: 700; }
.dp-rating small { color: var(--muted); font-weight: 500; }
.dp-actions { margin: 8px 16px; padding: 10px 12px; display: grid; gap: 8px; font-size: 12.5px; }
.dp-actions small { color: var(--muted); }
.dp-addrow { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.dp-add { flex: none !important; padding: 10px 16px !important; font-size: 14px; }
.dp-dayswitch { font-size: 12px; color: var(--muted); }
.dp-in { font-weight: 600; }
.dp-cost { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.dp-cost > span:first-child { font-weight: 650; }
.dp-cost input { width: 9ch; height: 30px; padding: 0 6px; font: inherit; font-weight: 650; }
.dp-row-btns { display: flex; gap: 6px; flex-wrap: wrap; }
.dp-tabs { display: flex; gap: 4px; margin: 6px 16px 0; }
.dp-tabs button { flex: 1; border: 0; padding: 6px 8px; cursor: pointer; }
.dp-tabs button.on { color: #10242d; }
.dp-body { padding: 10px 16px 18px; display: grid; gap: 10px; font-size: 13px; line-height: 1.5; }
.dp-body p { margin: 0; }
.dp-addr { font-weight: 600; }
.dp-desc a,.dp-links a,.dp-note a,.dp-muted a,.dp-tickets small a { color: var(--it-accent); text-decoration: none; }
.dp-links { display: flex; flex-wrap: wrap; gap: 6px 14px; font-size: 12.5px; font-weight: 600; }
.dp-tickets { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 10px 12px; }
.dp-tickets b { font-size: 16px; }
.dp-tickets small { display: block; font-size: 11.5px; color: var(--muted); line-height: 1.4; }
.dp-tickets.free b { font-size: 14px; }
.dp-btn { flex: none; padding: 8px 12px; font-weight: 650; font-size: 12.5px; text-decoration: none; white-space: nowrap; }
.dp-weather { font-size: 12.5px; }
.dp-hours summary { cursor: pointer; font-weight: 650; font-size: 12.5px; }
.dp-hours div { font-size: 12px; color: #3c5964; }
.dp-meta,.dp-muted,.dp-note { font-size: 12px; color: var(--muted); }
.dp-pois { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.dp-poi { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; padding: 9px 10px; }
.dp-poi-main { text-align: left; border: 0; background: transparent; padding: 0; cursor: pointer; font: inherit; color: inherit; min-width: 0; display: grid; gap: 1px; }
.dp-poi-main strong { font-size: 13.5px; }
.dp-poi-main span { font-size: 11.5px; }
.dp-poi-main small { font-size: 11px; color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dp-poi-side { display: flex; flex-direction: column; align-items: flex-end; gap: 3px; font-size: 11.5px; }
.dp-poi-side a { text-decoration: none; font-weight: 600; }
.dp-est { font-weight: 700; }
.dp-est small { font-weight: 500; color: var(--muted); }
.dp-add-sm { padding: 2px 9px; font-size: 11.5px; font-weight: 700; cursor: pointer; }
.dp-added { font-weight: 700; }
@media (min-width: 601px) {
body.dp-open .tree-panel { opacity: 0; pointer-events: none; }
}
@media (max-width: 600px) {
.detail-panel { top: auto; left: 0; right: 0; bottom: 0; width: 100%; max-height: 82vh; padding-bottom: env(safe-area-inset-bottom); }
.dp-hero { border-radius: 22px 22px 0 0; }
.dp-hero.has-img { height: 130px; }
}
/* A museum or gallery that is closed on the day it is planned. */
.pc-closed { display: inline-flex; align-items: center; gap: 4px; padding: 2px 8px; border-radius: 999px; background: #fde4e1; color: #b3261e; font-size: 11.5px; font-weight: 700; letter-spacing: .02em; }
.pc-closed::before { content: "⊘"; font-weight: 700; }
:root[data-theme="dark"] .pc-closed { background: #4a1f1b; color: #ffb4ab; }
.pc-closed.maybe { background: #fff1d6; color: #8a5300; }
.pc-closed.maybe::before { content: "!"; }
:root[data-theme="dark"] .pc-closed.maybe { background: #46350f; color: #ffd27a; }
/* Rovego · page 1 (dates, daily hours, the AI box) */
.legacy-setup[hidden] { display: none !important; }
.start-page { display: flex; flex-direction: column; }
.sp-head p { margin: 0; color: var(--muted); font-size: 13px; line-height: 1.45; }
.sp-label { gap: 8px; }
.sp-when .field { margin: 0; }
.sp-when .field-head { display: none; }
.sp-when .date-row { margin: 0; }
.sp-go { flex: none !important; padding: 10px 16px !important; font-size: 14px; }
.sp-go:disabled { opacity: .55; cursor: progress; }
.sp-muted { line-height: 1.4; }
.sp-note { padding: 9px 11px; border-radius: 12px; font-size: 12.5px; margin-bottom: 8px; background: rgba(255, 255, 255, .7); }
.sp-loading { display: flex; gap: 12px; align-items: flex-start; padding: 14px 12px; }
.sp-spinner { width: 22px; height: 22px; border-radius: 50%; border: 3px solid rgba(20, 122, 165, .2); animation: sp-spin .9s linear infinite; flex: none; margin-top: 2px; }
@keyframes sp-spin { to { transform: rotate(360deg); } }
.sp-steps { margin: 0; padding: 0; list-style: none; display: grid; gap: 6px; font-size: 13px; }
.sp-steps li::before { content: '○'; display: inline-block; width: 18px; color: #9fb3ba; }
.sp-steps li.now { font-weight: 650; }
.sp-steps li.now::before { content: '●'; }
.sp-steps li.done::before { content: '✓'; }
@media (prefers-reduced-motion: reduce) {
.sp-spinner { animation: none; }
}
.hm-in { display: inline-flex; align-items: center; gap: 3px; padding: 2px 6px; }
.hm-in input { width: 34px; border: 0; background: transparent; font: inherit; font-size: 14px; font-weight: 650; text-align: right; padding: 3px 0; -moz-appearance: textfield; }
.hm-in input::-webkit-outer-spin-button,.hm-in input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.hm-in input:focus { outline: none; background: rgba(11, 111, 216, .08); border-radius: 5px; }
.hm-in em { font-style: normal; font-size: 12px; margin-right: 2px; }
.sp-ac { position: absolute; left: 0; right: 0; top: calc(100% + 4px); z-index: 30; background: rgba(255, 255, 255, .98); border-radius: 14px; box-shadow: 0 16px 40px rgba(20, 50, 65, .18); border: 1px solid rgba(20, 80, 100, .1); padding: 4px; max-height: 320px; overflow: auto; }
.sp-ac[hidden] { display: none; }
.sp-ac button { display: flex; flex-direction: column; align-items: flex-start; gap: 1px; width: 100%; text-align: left; border: 0; background: transparent; padding: 8px 10px; border-radius: 10px; cursor: pointer; }
.sp-ac button:hover,.sp-ac button:focus { background: rgba(20, 122, 165, .08); }
.sp-ac strong { font-size: 13.5px; }
.sp-ac small { font-size: 11.5px; color: var(--muted); }
@media (max-width: 600px) {
.sp-head h1 { font-size: 23px; }
}
.sp-nights { margin-left: auto; font-size: 12px; font-weight: 600; }
.add-place[hidden] { display: none !important; }
.trip-sub { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; margin-bottom: 8px; }
.trip-sub .trip-stats { margin: 0; min-width: 0; }
.trip-sub .save-state { flex: none; }
.tree-panel.folded { left: auto !important; right: 14px !important; padding: 0 !important; box-shadow: none !important; backdrop-filter: none !important; -webkit-backdrop-filter: none !important; }
.tree-panel.folded > :not(.tree-toggle) { display: none !important; }
/* v5 page 1: inputs only */
.sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.start-page > .sp-go { padding: 14px 16px !important; }
.start-page .sp-label { font-size: 14px; }
.sp-brand { margin-bottom: 10px; }
.sp-bags-l { margin-right: auto; }
.sp-bags-v { font-weight: 650; }
/* preferences + outlook */
.sp-label-sm { margin-top: 10px; }
.sp-label small { margin-left: 4px; }
.chip-row { display: flex; }
.chip-row button { font: inherit; cursor: pointer; }
.chip-row button:hover { background: #fff; border-color: rgba(20, 122, 165, .4); }
.chip-row button.on { border-color: transparent; }
.sp-outlook { padding: 12px; display: grid; gap: 8px; }
.sp-outlook[hidden] { display: none; }
.ol-tag { flex: none; display: inline-block; padding: 1px 7px; border-radius: 999px; font-size: 10.5px; font-weight: 750; letter-spacing: .02em; margin-top: 1px; }
