/* Rovego · Liquid Glass. The last stylesheet: one material for every surface — the side panel,
   cards, inputs, buttons, menus and the floating map controls — plus the route list, My trips
   pane, collapsible forecast and destination indices. Translucency comes from blur and a thin
   light edge, not from gradients or heavy shadows. Turns solid with "Reduce transparency". */
:root {
  --lg-ease: cubic-bezier(.22, .8, .25, 1);
  --lg-fast: .18s;
  --lg-med: .32s;
  --lg-r-panel: 28px;
  --lg-r-card: 20px;
  --lg-r-field: 14px;
  --lg-blur: blur(30px) saturate(185%);
  --lg-blur-soft: blur(18px) saturate(170%);
  --c-from: #34c759;
  --c-to: #ff3b30;
}
:root,:root[data-theme="light"] {
  --lg-panel: rgba(248, 250, 249, .72);
  --lg-card: rgba(255, 255, 255, .56);
  --lg-card-hover: rgba(255, 255, 255, .74);
  --lg-float: rgba(255, 255, 255, .72);
  --lg-fill: rgba(118, 124, 128, .10);
  --lg-fill-hover: rgba(118, 124, 128, .16);
  --lg-active: rgba(255, 255, 255, .92);
  --lg-edge: rgba(255, 255, 255, .72);
  --lg-hair: rgba(20, 40, 34, .07);
  --lg-spec: inset 0 1px 0 rgba(255, 255, 255, .85);
  --lg-shadow: 0 10px 36px rgba(18, 38, 32, .12), 0 1px 2px rgba(18, 38, 32, .05);
  --lg-shadow-sm: 0 3px 12px rgba(18, 38, 32, .08);
  --lg-skel: rgba(118, 124, 128, .14);
  --lg-skel-hi: rgba(255, 255, 255, .55);
  --lg-band: rgba(246, 248, 247, .9);
}
:root[data-theme="dark"] {
  --lg-panel: rgba(26, 28, 30, .70);
  --lg-card: rgba(255, 255, 255, .055);
  --lg-card-hover: rgba(255, 255, 255, .09);
  --lg-float: rgba(32, 34, 36, .72);
  --lg-fill: rgba(255, 255, 255, .07);
  --lg-fill-hover: rgba(255, 255, 255, .11);
  --lg-active: rgba(255, 255, 255, .12);
  --lg-edge: rgba(255, 255, 255, .11);
  --lg-hair: rgba(255, 255, 255, .06);
  --lg-spec: inset 0 1px 0 rgba(255, 255, 255, .07);
  --lg-shadow: 0 12px 40px rgba(0, 0, 0, .42), 0 1px 2px rgba(0, 0, 0, .3);
  --lg-shadow-sm: 0 3px 12px rgba(0, 0, 0, .28);
  --lg-skel: rgba(255, 255, 255, .07);
  --lg-skel-hi: rgba(255, 255, 255, .13);
  --lg-band: rgba(30, 32, 34, .92);
}
/* ------------------------------------------------------------------ the material */
:is(.map-pill, .map-search-field, .map-top > button, .map-top #seasonToggle, .map-top #discoverBtn,
    .map-shell > .sp-seasons, .route-ac, .sp-ac,
    .day-legend, .mobile-switch, .trip-library, #hoverCard, .rv-settings, #savedRoutesTab) {
  background: var(--lg-float) !important;
  -webkit-backdrop-filter: var(--lg-blur) !important;
  backdrop-filter: var(--lg-blur) !important;
  border: .5px solid var(--lg-edge) !important;
  box-shadow: var(--lg-shadow-sm), var(--lg-spec) !important;
}
.map-search-field,.map-pill,.map-top > button,.map-top #discoverBtn,.map-top #seasonToggle { border-radius: 999px !important; transition: background var(--lg-fast), box-shadow var(--lg-fast), transform var(--lg-fast) var(--lg-ease); }
:is(.map-pill, .map-top > button, .map-top #discoverBtn):hover { background: var(--lg-active) !important; }
.route-ac,.sp-ac { border-radius: 18px !important; box-shadow: var(--lg-shadow), var(--lg-spec) !important; animation: lg-pop var(--lg-fast) var(--lg-ease); }
@keyframes lg-pop { from { opacity: 0; transform: translateY(-4px) scale(.985); } }
/* Cards in the panel: a lighter layer of the same glass. */
.sp-card {
  background: var(--lg-card) !important;
  border: .5px solid var(--lg-edge) !important;
  box-shadow: var(--lg-spec), 0 1px 2px rgba(0, 0, 0, .03) !important;
  border-radius: var(--lg-r-card) !important;
  transition: background var(--lg-med) var(--lg-ease), box-shadow var(--lg-med) var(--lg-ease);
}
:root[data-theme="dark"] .sp-card { border-color: var(--lg-hair) !important; }
/* Inputs and secondary buttons: Safari-bar capsules. */
.sidebar :is(.date-box, .sp-ask textarea, .sp-ask .intent-input, .sp-budget input, .sp-budget select, .secondary, .mini-btn) {
  border-radius: var(--lg-r-field) !important;
  background: var(--lg-fill) !important;
  border: .5px solid transparent !important;
  box-shadow: none !important;
  transition: background var(--lg-fast), box-shadow var(--lg-fast);
}
.sidebar :is(.sp-ask textarea, .sp-ask .intent-input, .sp-budget input, .sp-budget select):focus {
  background: var(--lg-fill-hover) !important;
  box-shadow: none !important;
  outline: none;
}
.sidebar :is(.secondary, .mini-btn):hover { background: var(--lg-fill-hover) !important; }
.sidebar .primary,.start-page > .sp-go { border-radius: 999px !important; }
:focus-visible { outline: 2px solid var(--tint); outline-offset: 2px; }
:is(input, textarea, select):focus,:is(input, textarea, select):focus-visible { outline: none !important; }
/* ------------------------------------------------------------------ the panel floats over the map */
@media (min-width: 601px) {
.workspace { display: block !important; position: relative; }
.workspace > .map-shell { position: absolute !important; inset: 0 0 0 calc(var(--planner-width) + 10px); height: auto !important; transition:left .3s ease; }
body.side-hidden .workspace > .map-shell { left:0; }
.workspace > .sidebar.glass {
    position: absolute !important; z-index: 1000; left: 10px; top: 10px; bottom: 10px;
    width: calc(var(--planner-width) - 10px); height: auto !important;
    background: var(--lg-panel) !important;
    -webkit-backdrop-filter: var(--lg-blur) !important;
    backdrop-filter: var(--lg-blur) !important;
    border: .5px solid var(--lg-edge) !important;
    border-radius: var(--lg-r-panel) !important;
    box-shadow: var(--lg-shadow), var(--lg-spec) !important;
    transition: opacity var(--lg-med) var(--lg-ease), transform var(--lg-med) var(--lg-ease), visibility 0s;
  }
body.side-hidden .workspace > .sidebar.glass { transform: translateX(-12px); }
.sidebar .rv-band { background: transparent !important; -webkit-backdrop-filter: none !important; backdrop-filter: none !important; border-radius: var(--lg-r-panel) var(--lg-r-panel) 0 0; }
.rv-dock { top: 33px !important; left: 40px !important; width: calc(var(--planner-width) - 60px) !important; }
.map-top { left: 18px !important; }
body.side-hidden .map-top { left: 168px !important; }
.map-shell { border-radius: 29px !important; }
}
@media (min-width: 601px) and (prefers-reduced-transparency: no-preference) {
/* Let the map show through slightly more where it sits behind the panel's band. */
.sidebar .rv-band { background: var(--lg-band) !important; -webkit-backdrop-filter: var(--lg-blur-soft) !important; backdrop-filter: var(--lg-blur-soft) !important; }
}
/* ------------------------------------------------------------------ route list */
.sp-route { display: flex !important; flex-direction: column; align-items: stretch !important; gap: 0 !important; padding: 12px 10px 10px !important; }
.sp-route > * { width: auto; min-width: 0; }
.rt-head { display: flex; align-items: center; justify-content: space-between; padding: 0 4px 6px; }
.rt-head .sp-label { margin: 0 !important; }
.rt-loop,.rt-x {
  display: grid; place-items: center; flex: none; width: 30px; height: 30px; padding: 0; border: 0; border-radius: 50%;
  background: transparent; color: var(--label-2); cursor: pointer;
  transition: background var(--lg-fast), color var(--lg-fast), transform var(--lg-fast) var(--lg-ease);
}
.rt-loop:hover,.rt-x:hover { background: var(--lg-fill-hover); color: var(--label); }
.rt-loop svg { width: 17px; height: 17px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.rt-x { width: 26px; height: 26px; font-size: 17px; line-height: 1; opacity: .55; }
.rt-row:hover .rt-x,.rt-x:focus-visible { opacity: 1; }
.rt-list { position: relative; list-style: none; margin: 0; padding: 0; display: grid; gap: 2px; }
.rt-list::before { /* the thread joining the stops */
  content: ''; position: absolute; left: 21px; top: 24px; bottom: 24px; width: 2px; border-radius: 2px;
  background: repeating-linear-gradient(to bottom, var(--lg-fill-hover) 0 4px, transparent 4px 8px);
}
.rt-row {
  --rr-color: var(--tint);
  position: relative; display: grid; grid-template-columns: 24px minmax(0, 1fr) auto; align-items: center; gap: 8px;
  min-height: 50px; padding: 4px 6px 4px 10px; border-radius: 15px; border: .5px solid transparent;
  transition: background var(--lg-med) var(--lg-ease), box-shadow var(--lg-med) var(--lg-ease), border-color var(--lg-med);
}
.rt-row[data-role="from"] { --rr-color: var(--c-from); }
.rt-row[data-role="to"] { --rr-color: var(--c-to); }
.rt-row:hover { background: transparent; }
.rt-dot {
  position: relative; z-index: 1; justify-self: center; display: grid; place-items: center;
  width: 12px; height: 12px; border-radius: 50%; background: var(--rr-color);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--rr-color) 18%, transparent), 0 0 0 5px var(--lg-panel);
  color: #fff; font: 700 10px/1 -apple-system, BlinkMacSystemFont, system-ui, sans-serif; font-variant-numeric: tabular-nums;
  transition: transform var(--lg-med) var(--lg-ease), box-shadow var(--lg-med);
}
.rt-dot.to { border-radius: 4px; }
.rt-dot.rt-num,.rt-dot.add { width: 19px; height: 19px; }
.rt-dot.add { background: var(--lg-panel); color: var(--rr-color); box-shadow: inset 0 0 0 1.5px var(--rr-color), 0 0 0 4px var(--lg-panel); }
.rt-row.is-active .rt-dot { transform: scale(1.12); box-shadow: 0 0 0 4px color-mix(in srgb, var(--rr-color) 24%, transparent), 0 0 0 6px var(--lg-panel); }
.rt-field { display: flex; flex-direction: column; justify-content: center; gap: 1px; min-width: 0; margin: 0; cursor: text; }
button.rt-field { padding: 0; border: 0; background: none; text-align: left; color: inherit; cursor: pointer; font: inherit; }
.rt-k { font-size: 11px; font-weight: 600; letter-spacing: .1px; color: var(--label-2); line-height: 1.2; }
.rt-row.is-active .rt-k { color: color-mix(in srgb, var(--rr-color) 70%, var(--label)); }
.rt-field input,.rt-v {
  width: 100%; min-width: 0; padding: 1px 0 0; border: 0 !important; background: transparent !important; box-shadow: none !important; outline: none;
  font-size: 15px; font-weight: 500; line-height: 1.35; color: var(--label); overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.rt-field input:focus,.rt-field input:focus-visible { outline: none !important; box-shadow: none !important; border: 0 !important; background: transparent !important; }
.sp-route #visitPlaces { display: none !important; }
.rt-dot.rt-num,.rt-dot.add { line-height: 19px; padding: 0; text-indent: 0; }
.rt-field input::placeholder { color: var(--label-3); font-weight: 400; }
.rt-end-note { font-size: 15px; font-weight: 500; color: var(--label); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rt-row.rt-stop { animation: lg-row-in var(--lg-med) var(--lg-ease); }
@keyframes lg-row-in { from { opacity: 0; transform: translateY(-6px); } }
.rt-foot { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; margin: 8px 4px 0; }
.rt-ai {
  display: inline-flex; align-items: center; gap: 6px; min-height: 32px; padding: 0 13px; border: 0; border-radius: 999px;
  background: var(--lg-fill); color: var(--label); font-size: 13px; font-weight: 600; cursor: pointer;
  transition: background var(--lg-fast), color var(--lg-fast);
}
.rt-ai:hover { background: var(--lg-fill-hover); }
.rt-ai[aria-pressed="true"] { background: var(--tint-soft); color: var(--tint); }
.rt-hint { flex: 1 1 140px; font-size: 12px; color: var(--label-3); line-height: 1.35; }
.sp-route.ai-stops .rt-list::before { bottom: 50%; }
/* Pins on the map use the same colours as the fields. */
.route-picked-pin {
  display: grid; place-items: center; width: 24px; height: 24px; border: 2.5px solid #fff; border-radius: 50%;
  background: var(--rr-color, var(--tint)) !important; color: #fff; font: 700 11px/1 -apple-system, BlinkMacSystemFont, system-ui, sans-serif;
  box-shadow: 0 0 0 5px color-mix(in srgb, var(--rr-color, var(--tint)) 22%, transparent), 0 3px 10px rgba(0, 0, 0, .25) !important;
}
.route-picked-pin[data-route-role="finish"] { border-radius: 8px !important; }
.pin.is-endpoint[style*="--rr-color"] { background: var(--rr-color) !important; color: #fff !important; filter: drop-shadow(0 2px 8px color-mix(in srgb, var(--rr-color) 45%, transparent)); }
.pin.is-endpoint[style*="--rr-color"]::after { border-color: var(--rr-color) !important; opacity: .5; }
.pin[data-stop-no]::before {
  content: attr(data-stop-no); position: absolute; z-index: 2; top: -7px; right: -7px; display: grid; place-items: center;
  min-width: 16px; height: 16px; padding: 0 3px; border-radius: 999px; background: #fff; color: var(--rr-color);
  font: 700 10px/1 -apple-system, BlinkMacSystemFont, system-ui, sans-serif; box-shadow: 0 1px 4px rgba(0, 0, 0, .25);
}
/* ------------------------------------------------------------------ My trips, inside the panel */
.sidebar.trips-open > :not(.rv-band):not(.trips-pane):not(.rv-dock) { display: none !important; }
.trips-pane { display: grid; gap: 10px; padding-top: 4px; animation: lg-pane-in var(--lg-med) var(--lg-ease); }
.trips-pane[hidden] { display: none !important; }
@keyframes lg-pane-in { from { opacity: 0; transform: translateX(14px); } }
.trips-back {
  justify-self: start; display: inline-flex; align-items: center; gap: 4px; min-height: 34px; padding: 0 14px 0 10px;
  border: .5px solid var(--lg-edge); border-radius: 999px; background: var(--lg-card); color: var(--tint);
  font-size: 14px; font-weight: 600; cursor: pointer; box-shadow: var(--lg-spec);
}
.trips-back span:first-child { font-size: 20px; line-height: 1; margin-top: -2px; }
.trips-back:hover { background: var(--lg-card-hover); }
.trips-pane #savedRoutesPanel { display: block !important; position: static !important; max-height: none !important; background: none !important; border: 0 !important; box-shadow: none !important; padding: 0 !important; }
#savedRoutesTab.active { background: var(--tint-soft) !important; color: var(--tint) !important; }
::view-transition-old(root),::view-transition-new(root) { animation-duration: .26s; animation-timing-function: var(--lg-ease); }
/* ------------------------------------------------------------------ seasonal forecast: collapsible */
.map-shell > .sp-seasons { border-radius: 24px !important; transition: width var(--lg-med) var(--lg-ease), padding var(--lg-med) var(--lg-ease); }
.map-shell > .sp-seasons.is-collapsed { width: auto !important; padding: 4px !important; border-radius: 999px !important; overflow: visible; }
.ss-pill {
  display: inline-flex; align-items: center; gap: 8px; min-height: 40px; padding: 0 10px 0 12px; border: 0; border-radius: 999px;
  background: transparent; color: var(--label); font-size: 13px; font-weight: 600; cursor: pointer; white-space: nowrap;
}
.ss-pill:hover { background: var(--lg-fill); }
.ss-pill .ss-score { position: static !important; transform: none !important; width: 30px !important; height: 20px !important; border-radius: 999px !important; font-size: 11px !important; }
.ss-pill-chev { color: var(--label-3); font-size: 17px; transform: rotate(-90deg); }
.season-collapse {
  display: grid; place-items: center; width: 28px; height: 28px; padding: 0; border: 0; border-radius: 50%;
  background: var(--lg-fill); color: var(--label-2); font-size: 16px; line-height: 1; cursor: pointer;
}
.season-collapse:hover { background: var(--lg-fill-hover); color: var(--label); }
.sp-seasons:not(.is-collapsed) > * { animation: lg-fade var(--lg-med) var(--lg-ease); }
@keyframes lg-fade { from { opacity: 0; } }
/* ------------------------------------------------------------------ destination indices */

.in-grid { display: grid; gap: 6px; }

@keyframes sp-spin { to { transform: rotate(360deg); } }
/* Skeletons: a soft sheen while slow data loads. */
.sk { display: block; border-radius: 8px; background: linear-gradient(100deg, var(--lg-skel) 30%, var(--lg-skel-hi) 50%, var(--lg-skel) 70%) 0 0 / 300% 100% !important; animation: lg-sheen 1.4s ease-in-out infinite; color: transparent !important; }
@keyframes lg-sheen { from { background-position: 100% 0; } to { background-position: 0 0; } }
/* ------------------------------------------------------------------ comfort settings */
@media (prefers-reduced-motion: reduce) {
.sk { animation: none !important; }
.rt-row,.rt-dot,.trips-pane,.route-ac,.sp-ac { animation: none !important; transition: none !important; }
}
@media (prefers-reduced-transparency: reduce) {
:is(.workspace > .sidebar.glass, .map-pill, .map-search-field, .map-top > button, .map-shell > .sp-seasons, .route-ac, .sp-ac, .day-legend, .mobile-switch, .rv-settings, #savedRoutesTab, .sidebar .rv-band) {
    background: var(--card, #fff) !important; -webkit-backdrop-filter: none !important; backdrop-filter: none !important;
  }
}
:root[data-reduced-transparency] :is(.workspace > .sidebar.glass, .map-pill, .map-search-field, .map-top > button, .map-shell > .sp-seasons, .route-ac, .sp-ac, .day-legend, .mobile-switch, .rv-settings, #savedRoutesTab, .sidebar .rv-band) {
  background: var(--card, #fff) !important; -webkit-backdrop-filter: none !important; backdrop-filter: none !important;
}
@media (prefers-contrast: more) {
.rt-row.is-active { border-color: var(--rr-color); }
.sp-card,.workspace > .sidebar.glass { border-color: var(--label-2) !important; }
}
/* ------------------------------------------------------------------ phones */
@media (max-width: 600px) {
.rt-field input { font-size: 16px; }
/* no zoom-on-focus on iOS */
.rt-row { min-height: 52px; }
.rt-x { opacity: .8; }
.map-shell > .sp-seasons.is-collapsed { right: 12px; }
}
/* ------------------------------------------------------------------ one wish instead of stop rows */
#aiFinishNote,.sp-route .rt-add { display: none !important; }
.rt-row.rt-wish { --rr-color: #af52de; align-items: start; padding-top: 8px; padding-bottom: 8px; }
.rt-dot.wish { width: 19px; height: 19px; margin-top: 3px; background: linear-gradient(135deg, #af52de, #007aff); font-size: 10px; }
.rt-wish .rt-field { cursor: text; }
.rt-wish-input {
  display: block; width: 100%; min-height: 44px !important; max-height: 112px; padding: 2px 0 0 !important; margin: 0;
  border: 0 !important; border-radius: 0 !important; background: transparent !important; box-shadow: none !important; outline: none !important;
  resize: none; font-family: inherit; font-size: 15px; font-weight: 500; line-height: 1.4; color: var(--label); overflow-y: auto;
}
.rt-wish-input::placeholder { color: var(--label-3); font-weight: 400; }
.rt-foot .inspiration-entry { margin: 0 !important; padding: 0 4px !important; min-height: 28px; background: none !important; border: 0 !important; font-size: 12.5px; }
.rt-foot .rt-hint { flex-basis: 100%; }
/* ------------------------------------------------------------------ your car */
.sp-car { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 6px 8px; margin-top: 10px; padding-top: 10px; border-top: .5px solid var(--lg-hair); }
.sp-car-k { grid-column: 1 / -1; font-size: 13px; font-weight: 600; color: var(--label); }
.sp-car select,.sp-car input {
  min-width: 0; height: 34px; padding: 0 10px; border: .5px solid transparent; border-radius: 12px; background: var(--lg-fill); color: var(--label); font-size: 13px;
}
.sp-car select:focus,.sp-car input:focus { outline: none; background: var(--lg-fill-hover); box-shadow: none; }
.sp-car-eff { display: inline-flex; gap: 4px; }
.sp-car-eff input { text-align: right; font-variant-numeric: tabular-nums; }
.sp-car-eff select { padding: 0 6px; }
.sp-car small { grid-column: 1 / -1; font-size: 11.5px; color: var(--label-3); }
/* ------------------------------------------------------------------ typed dates */
.date-core .date-type {
  position: relative; z-index: 1; width: 100%; height: 100%; padding: 0; border: 0; background: transparent; outline: none;
  text-align: center; font: inherit; font-size: 16px; font-weight: 600; font-variant-numeric: tabular-nums; color: var(--label); cursor: text;
}
.date-core .date-type:focus { background: transparent; box-shadow: none; }
.date-core .date-type.bad { animation: lg-shake .3s; color: var(--c-to); }
@keyframes lg-shake { 25% { transform: translateX(-3px); } 75% { transform: translateX(3px); } }
/* ------------------------------------------------------------------ forecast panel: Season | At destination */
.in-parked { display: none !important; }
.ss-tabs { grid-template-columns: 1fr 1fr; gap: 3px; padding: 3px; margin: 2px 0 10px; border-radius: 12px; background: var(--lg-fill); }
.ss-tabs button { min-height: 30px; border: 0; border-radius: 9px; background: transparent; color: var(--label-2); font-size: 12.5px; font-weight: 600; cursor: pointer; }
.ss-tabs button[aria-selected="true"] { background: var(--lg-active); color: var(--label); box-shadow: var(--lg-shadow-sm); }
.sp-seasons .in-panel { display: grid; gap: 8px; animation: lg-fade var(--lg-med) var(--lg-ease); }
.sp-seasons .in-panel .sp-outlook { margin: 0 !important; background: var(--lg-fill) !important; border: 0 !important; box-shadow: none !important; border-radius: 14px !important; }
/* ------------------------------------------------------------------ page 2: day overview → one day */
.day-overview { display: grid; gap: 8px; margin: 4px 0 12px; }
.dov-row { position: relative; display: grid; grid-template-columns: 22px minmax(0, 1fr); align-items: center; gap: 4px; }
.dov-grip { display: grid; place-items: center; width: 22px; height: 40px; border-radius: 8px; color: var(--label-3); cursor: grab; touch-action: none; user-select: none; -webkit-user-select: none; }
.dov-grip:hover,.dov-grip:focus-visible { color: var(--tint); background: var(--lg-fill); outline: none; }
/* Collapsed overview: one compact line per day. */
.dov-card {
  display: grid; grid-template-columns: 64px minmax(0, 1fr) auto; align-items: center; gap: 12px; width: 100%; padding: 8px 12px 8px 8px;
  border: .5px solid var(--lg-edge); border-radius: 18px; background: var(--lg-card); box-shadow: var(--lg-spec);
  color: var(--label); text-align: left; cursor: pointer; transition: background var(--lg-fast), transform var(--lg-fast) var(--lg-ease), box-shadow var(--lg-fast);
}
.dov-card:hover { background: var(--lg-card-hover); box-shadow: var(--lg-shadow-sm), var(--lg-spec); }
.dov-card:active { transform: scale(.985); }
.dov-photo { width: 64px; height: 64px; border-radius: 13px; background: color-mix(in srgb, var(--day) 22%, var(--lg-fill)) center / cover no-repeat; position: relative; }
.dov-photo::after { content: ''; position: absolute; left: 6px; top: 6px; width: 9px; height: 9px; border-radius: 50%; background: var(--day); box-shadow: 0 0 0 2px #fff; }
.dov-body { display: grid; gap: 2px; min-width: 0; }
.dov-top { display: flex; align-items: baseline; gap: 8px; }
.dov-top b { font-size: 15px; font-weight: 700; }
.dov-top small { font-size: 12px; color: var(--label-2); }
.dov-warn { margin-left: auto; font-style: normal; font-size: 11px; font-weight: 600; color: #c93400; }
.dov-title { font-size: 13.5px; font-weight: 600; color: var(--label); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dov-stats { font-size: 11.5px; color: var(--label-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dov-go { color: var(--label-3); font-size: 22px; }
.day-nav { justify-content: space-between; margin: 2px 0 10px; }
.day-back { display: inline-flex; align-items: center; gap: 4px; min-height: 34px; padding: 0 14px 0 10px; border: .5px solid var(--lg-edge); border-radius: 999px; background: var(--lg-card); color: var(--tint); font-size: 14px; font-weight: 600; cursor: pointer; box-shadow: var(--lg-spec); }
.day-back span { font-size: 20px; line-height: 1; margin-top: -2px; }
.day-step { display: inline-flex; align-items: center; gap: 4px; font-size: 13px; color: var(--label-2); }
.day-step button { width: 32px; height: 32px; border: 0; border-radius: 50%; background: var(--lg-fill); color: var(--label); font-size: 18px; cursor: pointer; }
.day-step button:disabled { opacity: .35; cursor: default; }
.day-step b { min-width: 76px; text-align: center; font-weight: 600; color: var(--label); }
#timeline.pane-in[data-day-view]:not([data-day-view="all"]) .it-day { animation: lg-pane-in var(--lg-med) var(--lg-ease); }
@media (prefers-reduced-motion: reduce) {
.dov-card,#timeline .it-day { animation: none !important; transition: none !important; }
}
.day-nav,.plan-day-tabs { scroll-margin-top: 150px; }
#timeline:not([data-day-view="all"]) > .day-nav { display: flex !important; }
/* Route rows: no box when clicked; the active field is shown by its dot and label only. */
.rt-row,.rt-row.is-active,.rt-row:focus-within { background: transparent !important; border-color: transparent !important; box-shadow: none !important; }
.rt-row.is-active .rt-k { font-weight: 650; }
.sidebar .sp-card :is(input, textarea):focus { box-shadow: none !important; }
/* Top bar: smaller icons; sign-in sits on the right. */
.rv-dock { height: 38px !important; }
.rv-dock .rv-settings { height: 36px; padding: 0 2px; }
.rv-dock-btn { width: 30px !important; min-width: 30px !important; height: 30px !important; min-height: 30px !important; }
.rv-dock-btn svg { width: 16px !important; height: 16px !important; }
.rv-dock-btn span { font-size: 12px !important; }
.rv-dock .home-tabs { order: 2; margin-left: auto !important; }
.rv-dock .home-tab#savedRoutesTab { height: 32px !important; min-height: 32px !important; width: auto !important; padding: 0 12px !important; font-size: 13px !important; gap: 6px; }
.rv-dock .home-tab#savedRoutesTab svg { width: 15px; height: 15px; }
.rv-dock .account-entry { order: 3; width: 32px !important; height: 32px !important; margin-left: 8px; }
.rv-dock .account-entry svg { width: 15px; height: 15px; }
/* Glass menus (glass-select.js). */
.gsel-native { position: absolute !important; width: 1px !important; height: 1px !important; opacity: 0 !important; pointer-events: none !important; }
.gsel {
  display: inline-flex; align-items: center; justify-content: space-between; gap: 6px; min-width: 0; height: 34px; padding: 0 10px 0 12px;
  border: .5px solid var(--lg-edge); border-radius: 12px; background: var(--lg-fill); color: var(--label);
  font: inherit; font-size: 13px; font-weight: 600; cursor: pointer; transition: background var(--lg-fast);
}
.gsel:hover { background: var(--lg-fill-hover); }
.gsel[aria-expanded="true"] { background: var(--lg-active); }
.gsel.is-empty .gsel-v { color: var(--label-3); font-weight: 500; }
.gsel-v { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.gsel-chev { flex: none; width: 12px; height: 12px; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; opacity: .55; transition: transform var(--lg-fast) var(--lg-ease); }
.gsel[aria-expanded="true"] .gsel-chev { transform: rotate(180deg); }
.gsel-menu {
  position: fixed; z-index: 5000; overflow-y: auto; padding: 5px; border-radius: 16px;
  background: var(--lg-float); -webkit-backdrop-filter: var(--lg-blur); backdrop-filter: var(--lg-blur);
  border: .5px solid var(--lg-edge); box-shadow: var(--lg-shadow), var(--lg-spec);
  animation: lg-pop var(--lg-fast) var(--lg-ease); overscroll-behavior: contain;
}
.gsel-opt { padding: 8px 12px 8px 30px; border-radius: 10px; font-size: 13.5px; color: var(--label); cursor: pointer; position: relative; white-space: nowrap; }
.gsel-opt.is-active { background: var(--lg-fill-hover); }
.gsel-opt[aria-selected="true"] { font-weight: 650; }
.gsel-opt[aria-selected="true"]::before { content: '✓'; position: absolute; left: 11px; color: var(--tint); font-weight: 700; }
.gsel-opt[aria-disabled="true"] { color: var(--label-3); cursor: default; font-size: 12px; }
@media (prefers-reduced-transparency: reduce) {
.gsel-menu { background: var(--card, #fff); -webkit-backdrop-filter: none; backdrop-filter: none; }
}
/* Luggage: one line, value and chevron aligned with the label. */
.sp-bags { display: flex !important; align-items: center !important; justify-content: space-between; gap: 8px; min-height: 0 !important; }
.sp-bags-l { font-size: 13px; font-weight: 600; color: var(--label); }
.sp-bags-v { display: inline-flex; align-items: center; gap: 0; }
.sp-bags #bagText { display: none !important; }
.sp-bags .arrow-pick { display: inline-flex; width: auto; height: auto; margin: 0; vertical-align: middle; }
.sp-bags .gsel { height: 30px; background: transparent; border-color: transparent; color: var(--tint); padding: 0 6px 0 10px; }
.sp-bags .gsel:hover,.sp-bags .gsel[aria-expanded="true"] { background: var(--lg-fill); }
/* Budget row: travellers and currency as glass menus too. */
.sp-car .gsel { width: 100%; }
.sp-car-unit { display: inline-flex; align-items: center; padding: 0 4px 0 2px; font-size: 13px; font-weight: 600; color: var(--label-2); }
.sp-car-eff input { width: 70px; }
/* Trip type and travel style: one size for every chip. */
.sp-prefs [data-pref-group] { display: flex !important; grid-template-columns: none !important; }
.sp-prefs [data-pref-group] button { width: auto !important; min-width: 0 !important; height: 32px !important; min-height: 32px !important; border-radius: 999px !important; font-size: 13px !important; font-weight: 600 !important; letter-spacing: 0 !important;
  border: .5px solid transparent !important; background: var(--lg-fill) !important; color: var(--label) !important; box-shadow: none !important;
}
.sp-prefs [data-pref-group] button:hover { background: var(--lg-fill-hover) !important; }
.sp-prefs [data-pref-group] button:is([aria-checked="true"], [aria-pressed="true"], .on, .active) { background: var(--tint-soft) !important; color: var(--tint) !important; border-color: color-mix(in srgb, var(--tint) 30%, transparent) !important; }
.sp-prefs [data-pref-group] { flex-wrap: nowrap !important; gap: 5px !important; }
.sp-prefs [data-pref-group] button { flex: 1 1 auto !important; padding: 0 8px !important; white-space: nowrap !important; }
/* No helper captions; the brand line never wraps. */
.rt-hint,#carAlt,.sp-car small { display: none !important; }
.sp-brand-caption { max-width: none !important; white-space: nowrap; text-align: right; flex: none; }
/* Ending point: Round trip is a clear choice next to the field. */
.rt-loop { width: auto !important; height: 30px !important; padding: 0 11px 0 9px !important; gap: 5px; display: inline-flex !important; align-items: center; border-radius: 999px !important; background: var(--lg-fill) !important; font-size: 12.5px; font-weight: 600; color: var(--label-2); white-space: nowrap; }
.rt-loop svg { width: 14px !important; height: 14px !important; }
.rt-loop[aria-pressed="true"] { background: var(--tint-soft) !important; color: var(--tint) !important; }
/* The wish: its own tools under the text — the purple travel link and any pinned spots. */
.rt-wish-field { cursor: text; }
.rt-wish-field .rt-k { cursor: text; }
.rt-wish-tools { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; }
.rt-link.inspiration-entry {
  display: inline-flex !important; align-items: center; gap: 5px; width: auto !important; min-height: 28px !important; margin: 0 !important; padding: 0 12px 0 10px !important;
  border: 0 !important; border-radius: 999px !important; background: color-mix(in srgb, #af52de 13%, transparent) !important; color: #8e3bbf !important;
  font-size: 12.5px !important; font-weight: 650 !important; box-shadow: none !important; cursor: pointer;
}
:root[data-theme="dark"] .rt-link.inspiration-entry { color: #d5a3f0 !important; background: color-mix(in srgb, #bf5af2 20%, transparent) !important; }
.rt-link.inspiration-entry:hover { background: color-mix(in srgb, #af52de 20%, transparent) !important; }
.rt-link #inspirationCount { display: inline-grid; place-items: center; min-width: 17px; height: 17px; padding: 0 4px; border-radius: 999px; background: #af52de; color: #fff; font-size: 10.5px; }
.rt-link #inspirationCount[hidden] { display: none; }
.rt-spots { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 6px; }
.rt-spots[hidden] { display: none; }
.rt-spot { display: inline-flex; align-items: center; border-radius: 999px; background: var(--lg-fill); overflow: hidden; }
.rt-spot-go { display: inline-flex; align-items: center; gap: 6px; max-width: 220px; height: 28px; padding: 0 4px 0 5px; border: 0; background: none; color: var(--label); font-size: 12.5px; font-weight: 600; cursor: pointer; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rt-spot-go i { display: inline-grid; place-items: center; width: 18px; height: 18px; border-radius: 50%; background: #af52de; color: #fff; font: 700 10px/1 -apple-system, system-ui, sans-serif; flex: none; }
.rt-spot-x { width: 24px; height: 28px; border: 0; background: none; color: var(--label-3); font-size: 15px; cursor: pointer; }
.rt-spot-x:hover { color: var(--label); }
/* Season & events: one panel, destination indices under the season themes. */
.ss-tabs { display: none !important; }
.sp-seasons .in-panel { margin-top: 12px; padding-top: 12px; border-top: .5px solid var(--lg-hair); }

.map-shell > .sp-seasons.has-intel { max-height: calc(100% - 110px); overflow-y: auto; }
.sp-route .rt-foot:not(:has(:not([hidden]))) { display: none; }
/* ------------------------------------------------------------------ round 5: three short points */
.rt-spot.is-focus { background: color-mix(in srgb, #af52de 16%, var(--lg-fill)); box-shadow: inset 0 0 0 1px color-mix(in srgb, #af52de 35%, transparent); }
.map-shell > .sp-seasons { overflow-x: hidden !important; }
.map-shell > .sp-seasons .ss-list,.map-shell > .sp-seasons .ss-list ol { max-width: 100%; min-width: 0; }

.map-shell > .sp-seasons { grid-template-columns: minmax(0, 1fr) !important; }
.map-shell > .sp-seasons > * { min-width: 0; }
.map-shell > .sp-seasons .ss-list ol { overflow-x: auto; scrollbar-width: none; }
.sp-seasons .in-panel,.sp-seasons .in-grid { grid-template-columns: minmax(0, 1fr); min-width: 0; }

/* Weather and every available activity index share the map's forecast card. */
.in-panel #spOutlookHost { display:block !important; }
.in-panel[hidden] { display:none !important; }
/* Preserve landmark diamonds: a glow has no foreground fill and receives no input. */
.spot-highlight { display:block; width:44px; height:44px; border-radius:50%; pointer-events:none; background:radial-gradient(circle,transparent 22%,rgba(175,82,222,.3) 45%,rgba(175,82,222,.12) 58%,transparent 72%); filter:blur(2px); }
.route-picked-marker:has(.spot-highlight) { pointer-events:none !important; }
.pin.is-picked { filter:drop-shadow(0 0 8px rgba(175,82,222,.7)); box-shadow:0 2px 10px rgba(175,82,222,.35) !important; }
/* One continuous photo and gradient across the entire preview card. */
.hover-card { position:absolute; isolation:isolate; background:linear-gradient(145deg,#334b57,#222c44 58%,#403552) !important; }
.hover-card .hc-backdrop { position:absolute; inset:0; z-index:-2; background-size:cover; background-position:center; pointer-events:none; }
.hover-card .hc-backdrop::after { content:''; position:absolute; inset:0; background:linear-gradient(165deg,rgba(15,29,42,.15),rgba(24,30,53,.62) 38%,rgba(35,26,53,.94) 100%); }
.hover-card .hc-img { background:none !important; }
.hover-card .hc-img::after { display:none; }
.hover-card .hc-body { position:relative; background:transparent !important; }
.hover-card .hc-photo-title { bottom:18px; }
.hover-card .hc-body :is(p,small,strong,.hc-meta,.hc-hours,.hc-meta span),.hover-card .dc-link { color:rgba(255,255,255,.9) !important; }
.hover-card .hc-body > strong { color:#fff !important; }
.hover-card .hc-links a { color:#fff !important; background:rgba(255,255,255,.14); border-color:rgba(255,255,255,.22); }
.hover-card .hc-act .secondary { color:#fff !important; background:rgba(255,255,255,.14) !important; border-color:rgba(255,255,255,.22) !important; }
.hover-card .hc-x { z-index:3; }
@media(prefers-reduced-transparency:reduce) {
.hover-card .hc-backdrop::after { background:linear-gradient(165deg,rgba(15,29,42,.5),rgba(35,26,53,.96)); }
}
/* My trips and account belong to the folded sidebar; the settings stay reachable. */
body.side-hidden .rv-dock :is(.home-tabs,.account-entry) { display:none !important; }
body.side-hidden .rv-dock { width:auto !important; }
@media(min-width:601px) {
body.side-hidden .map-top { left:194px !important; }
}
/* One score grid: seasons, sports, concerts and museums use the same tiles. */
.ss-grid > #intelGrid { display:contents !important; }
.ss-grid .activity-index { min-width:0; border:0; cursor:pointer; }
.ss-grid .activity-index .ss-name { font-size:11px; overflow:hidden; text-overflow:ellipsis; }
.ss-grid .activity-index.off .ss-score { background:var(--lg-fill-hover); color:var(--label-3); }
.ss-grid .activity-index.on { box-shadow:inset 0 0 0 1px var(--tint); background:var(--tint-soft); }

#intelDetails[hidden] { display:none; }

body:has(#setupSection:not(.hidden)) .detail-panel .dp-actions { display:none !important; }
.place-search-source {padding:9px 14px;font-size:11px;opacity:.75;border-top:1px solid var(--lg-edge);}
.rt-wish-tools .inspiration-entry {position:relative;display:flex!important;align-items:center;justify-content:center;gap:7px;padding:12px 16px!important;border:1px solid color-mix(in srgb,var(--tint) 45%,transparent)!important;border-radius:14px!important;background:color-mix(in srgb,var(--tint) 12%,transparent)!important;font-weight:700!important;overflow:visible;}

.in-specials {margin:10px 0;padding:14px;border-radius:16px;background:linear-gradient(125deg,rgba(175,82,222,.16),rgba(218,167,78,.14));border:1px solid rgba(175,82,222,.25);}
.in-specials>a {display:block;margin-top:10px;color:inherit;text-decoration:none;}
.in-specials small {display:block;opacity:.75;margin-top:3px;}

@media(prefers-reduced-motion:reduce) {
.workspace > .map-shell {transition:none!important;}
}
.destination-search {position:relative;display:flex;gap:6px;margin-top:16px;pointer-events:auto;}
.destination-search input {min-width:0;width:100%;padding:12px;border:1px solid var(--lg-edge);border-radius:12px;background:var(--lg-panel);color:var(--ink);font:inherit;font-size:12px;}
.destination-search>button {border:0;border-radius:12px;background:var(--tint);color:white;padding:0 12px;cursor:pointer;}
.destination-search-results {position:absolute;bottom:calc(100% + 8px);left:0;right:0;max-height:270px;overflow:auto;border:1px solid var(--lg-edge);border-radius:14px;background:var(--lg-panel);backdrop-filter:blur(25px);box-shadow:var(--lg-shadow);text-align:left;}
.destination-search-results>button {display:block;width:100%;padding:12px;border:0;border-bottom:1px solid var(--lg-edge);background:transparent;color:var(--ink);text-align:left;cursor:pointer;}
.destination-search-results>button:is(:hover,[aria-selected="true"]) {background:var(--lg-active);}
.destination-search-results small {display:block;margin-top:3px;font-size:10px;opacity:.7;}
.empty-state.hidden .destination-search {pointer-events:none;}
#discoverBtn[hidden] {display:none!important;}
/* Destination search belongs on the initial map card. */
#emptyState {display:block!important;left:18px!important;right:auto!important;top:110px!important;bottom:auto!important;width:calc(100% - 36px);max-width:360px;transform:none!important;}
#emptyState.hidden {visibility:hidden;}
.rt-wish-tools .inspiration-entry {width:100%!important;}

.museum-map-panel {position:absolute;z-index:1150;right:16px;top:100px;width:min(370px,calc(100% - 32px));max-height:calc(100% - 125px);overflow:auto;padding:18px;border:1px solid var(--lg-edge);border-radius:22px;background:var(--lg-panel);backdrop-filter:blur(30px);box-shadow:var(--lg-shadow);color:var(--ink);}
.museum-map-panel[hidden] {display:none;}
.museum-map-panel>header {display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;margin-bottom:10px;}
.museum-map-panel h3 {margin:2px 0 0;font-size:20px;line-height:1.2;}
.museum-map-panel header small {font-size:12px;}
.museum-map-panel header button {border:0;border-radius:50%;width:30px;height:30px;background:var(--lg-fill);color:inherit;font-size:20px;cursor:pointer;}
.museum-map-source {display:block;opacity:.65;padding-top:12px;}
.museum-ranking {list-style:none;padding:0;margin:0;}
.museum-ranking>li {display:grid;grid-template-columns:24px minmax(0,1fr);gap:8px;padding:14px 0;border-bottom:1px solid var(--lg-edge);}
.museum-rank {color:var(--tint);font-size:16px;font-weight:700;}
.museum-ranking a {font-size:14px;font-weight:650;color:inherit;text-decoration:none;}
.museum-hours {display:grid;gap:5px;margin-top:9px;}
.museum-hours>span {display:flex;justify-content:space-between;gap:8px;font-size:12.5px;}
.museum-hours time {opacity:.7;}
.museum-hours b {font-weight:500;}
#advancedSetup {display:none!important;}
/* Map controls must never scroll the map viewport when they receive focus. */
.map-shell {overflow:clip!important;}
/* Day preview: the same panel width as the overview, with larger, easier-to-read type. */
body.day-detail #timeline {font-size:15px}
body.day-detail #timeline .it-day {padding:16px 16px!important}
body.day-detail #timeline .it-day-head strong {font-size:22px!important;letter-spacing:-.02em}
body.day-detail #timeline .it-day-date {font-size:15px!important}
body.day-detail #timeline .day-theme {font-size:15px!important;line-height:1.4}
body.day-detail #timeline .pc-name {font-size:18px!important;line-height:1.3}
body.day-detail #timeline .pc-meta,body.day-detail #timeline .pc-meta time {font-size:13.5px!important}
body.day-detail #timeline .pc-stay {font-size:13px!important;padding:3px 10px!important;white-space:nowrap}
body.day-detail #timeline .it-badge {width:32px!important;height:32px!important;font-size:14.5px!important}
body.day-detail #timeline .ed-place {font-size:14.5px;line-height:1.5}
body.day-detail #timeline .cx-row {font-size:14px!important;min-height:30px!important}
body.day-detail #timeline .cx-row time,body.day-detail #timeline .cx-time-in {font-size:15px!important}
body.day-detail #timeline .it-chip {font-size:13px!important}
body.day-detail #timeline .stay-pick .sp-head strong,body.day-detail #timeline .hp-main strong {font-size:15.5px!important}
body.day-detail #timeline .stay-pick li,body.day-detail #timeline .hp-main span {font-size:13.5px}
body.day-detail #timeline .day-end {font-size:14px}
body.day-detail #timeline .day-photo {height:88px!important}
body.day-detail #timeline .day-photo span {font-size:16px}
/* Day navigation with Discover nearby. */
.day-nav {display:flex;flex-wrap:wrap;align-items:center;gap:8px}
/* Every control in the row shares one height. */
.day-nav .day-back,.day-nav [data-day-discover] {box-sizing:border-box;height:34px;min-height:34px;line-height:1;margin:0}
.day-nav [data-day-discover] {display:inline-flex;align-items:center;gap:6px;padding:0 14px;font-size:14px;font-weight:600;color:var(--tint);border:.5px solid color-mix(in srgb,var(--tint) 35%,transparent);border-radius:999px;background:var(--tint-soft,var(--fill));cursor:pointer}
.day-nav .day-step button {width:34px;height:34px}
.day-nav [data-day-discover]:hover {background:var(--tint);color:var(--on-tint,#fff)}
/* Trip cover: a compact banner, just enough to recognise the trip. */
.trip-hero {min-height:0!important;height:76px!important;flex:none!important;margin-bottom:10px!important;padding:10px 14px!important;border-radius:16px!important;justify-content:center!important}
.trip-hero .th-top,.trip-hero .th-next,.trip-hero .th-credit {display:none!important}
.trip-hero .th-shade {background:linear-gradient(90deg,rgba(0,0,0,.62),rgba(0,0,0,.28) 70%,rgba(0,0,0,.12))!important}
.trip-hero .th-main {margin-top:0!important;padding:0!important;min-width:0}
.trip-hero .th-title {font-size:17px!important;line-height:1.2!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.trip-hero .th-dates {font-size:12.5px!important;margin-top:4px!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* My trips: a small cover thumbnail beside each trip. */
.saved-route.has-cover {display:grid!important;grid-template-columns:64px minmax(0,1fr);column-gap:14px;align-items:start}
.saved-route.has-cover>.saved-trip-cover {grid-row:1/span 2;width:64px;height:64px;border-radius:14px;background:color-mix(in srgb,var(--tint) 18%,var(--lg-fill,#eee)) center/cover no-repeat;display:grid;place-items:center;font-size:24px;font-weight:700;color:var(--tint)}
.saved-route.has-cover>strong,.saved-route.has-cover>small {grid-column:2}
.saved-route.has-cover>small {margin-top:4px!important}
.saved-route.has-cover>.saved-route-actions {grid-column:1/-1}
[data-handle],[data-day-handle] {touch-action:none;min-width:30px;min-height:30px;cursor:grab;user-select:none;-webkit-user-select:none}
.drop-target-day {outline:3px solid var(--tint)!important;background:var(--tint-soft)!important}
/* Drag: a floating drop marker (no layout shift) and a GPU-moved ghost. */
.it-drop-line {position:fixed!important;left:0;top:0;z-index:3001;height:3px!important;margin:0!important;border-radius:3px;background:var(--tint)!important;box-shadow:0 0 0 3px color-mix(in srgb,var(--tint) 22%,transparent)!important;pointer-events:none;will-change:transform;transition:transform 90ms ease-out,width 90ms ease-out}
.it-drop-line[hidden] {display:none!important}
.it-drop-line::before {content:"";position:absolute;left:-5px;top:-3.5px;width:10px;height:10px;border-radius:50%;background:var(--tint)}
.it-ghost {pointer-events:none!important;will-change:transform;opacity:.97!important;border-radius:16px;box-shadow:0 22px 48px rgba(20,40,50,.30),0 2px 6px rgba(20,40,50,.18)!important;transition:none!important;animation:none!important}
.it-item.dragging,.dov-row.dragging {opacity:.28!important;filter:saturate(.4)}
@media (prefers-reduced-motion: reduce) {
.it-drop-line {transition:none}
}
.rv-dock [data-toggle-units] {width:auto!important;min-width:58px!important;flex:none!important}
/* Museums & galleries: the same round score pin as the seasonal indices, with a small 🏛 badge. */
.museum-pin {position:relative;}
.museum-pin>i {position:absolute;right:-7px;top:-7px;width:17px;height:17px;display:grid;place-items:center;border-radius:50%;background:var(--lg-panel,#fff);box-shadow:0 1px 4px rgba(0,0,0,.25);font-style:normal;font-size:10px;line-height:1;}
.museum-pin.has-closed::after {content:"";position:absolute;left:-3px;bottom:-3px;width:10px;height:10px;border-radius:50%;background:#d93a2f;border:2px solid #fff;}
.museum-summary {margin:4px 0 0;font-size:12.5px;opacity:.75;}
.museum-name {display:flex;flex-wrap:wrap;align-items:center;gap:6px;}
.museum-kind {font-size:11px;padding:1px 7px;border-radius:999px;background:var(--lg-fill);opacity:.85;}
.museum-closed-badge,.museum-closed-tag {display:inline-block;font-style:normal;font-size:11px;font-weight:700;letter-spacing:.02em;text-transform:uppercase;padding:2px 7px;border-radius:999px;background:#fde4e1;color:#b3261e;}
:root[data-theme="dark"] .museum-closed-badge,:root[data-theme="dark"] .museum-closed-tag {background:#4a1f1b;color:#ffb4ab;}
.museum-ranking>li.is-closed>div>.museum-name a {opacity:.6;text-decoration:line-through;text-decoration-thickness:1px;}
.museum-ranking>li.is-closed .museum-rank {opacity:.45;}
.museum-hours .closed b {color:#b3261e;font-weight:600;}
:root[data-theme="dark"] .museum-hours .closed b {color:#ffb4ab;}
/* Page 1: just the number of travelers (budget is optional and lives in the itinerary). */
.museum-maybe-tag {display:inline-block;font-style:normal;font-size:11px;font-weight:700;padding:2px 7px;border-radius:999px;background:#fff1d6;color:#8a5300}
:root[data-theme="dark"] .museum-maybe-tag {background:#46350f;color:#ffd27a}
.museum-hours .maybe b {color:#8a5300;font-weight:550}
:root[data-theme="dark"] .museum-hours .maybe b {color:#ffd27a}
/* Page 2: Start over, undo / redo and More share one row above the cover. */
body:has(#pathSection.show) .rv-settings .rv-p2 {display:flex;align-items:center;gap:8px;right:0;background:none!important;border:0!important;padding:0!important;box-shadow:none!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important}
.rv-p2 .rv-start {background:var(--glass-strong);border:1px solid var(--glass-edge)!important;border-radius:999px}
.rv-p2 .trip-toolbar {margin-left:auto;display:flex;align-items:center;gap:6px;overflow:visible;padding:0}
.rv-p2 .trip-toolbar .tool-btn.icon {width:34px!important;height:34px!important;min-width:34px;background:var(--glass-strong)!important;border:1px solid var(--glass-edge)!important}
.rv-p2 .save-state {font-size:12px;white-space:nowrap}
.rv-p2 .tool-more {position:relative;margin-left:0}
.rv-p2 .tool-menu {right:0;top:40px;margin-top:0}
@media(min-width:601px) {
body:has(#pathSection.show) .rv-settings .rv-p2 {width:calc(var(--planner-width) - 60px)}
}
@media(max-width:600px) {
body:has(#pathSection.show) .rv-settings .rv-p2 {width:calc(100vw - 40px)}
}
/* Keep editing, navigation and the trip total in separate, predictable regions. */
.ss-grid { grid-template-columns:repeat(5,minmax(0,1fr))!important; }
.map-shell .ss-tile { min-width:0; min-height:88px!important; }
.map-shell .ss-name { white-space:normal; text-align:center; line-height:1.2; min-height:26px; display:grid; place-items:center; font-size:11px; }
.map-top #discoverBtn { min-height:36px!important; height:36px!important; padding:0 14px!important; font-size:12px!important; width:auto!important; }
body:has(#pathSection.show) .sidebar:not(.trips-open) { overflow:hidden!important; padding-bottom:0!important; }
#pathSection.show { display:flex!important; flex-direction:column; flex:1; min-height:0; overflow:hidden; }
.planner-scroll { overflow:auto; min-height:0; flex:1; overscroll-behavior:contain; scrollbar-gutter:stable; padding:0 2px 16px; }
#pathSection .trip-head { position:static!important; margin:0 0 8px!important; padding:0!important; background:none!important; border:0!important; }
#pathSection .trip-name { width:100%; font-size:14px!important; }
#pathSection.hero-in-view .trip-head { display:none!important; }
#dateControlHostPath { margin:6px 0 8px; }
#dateControlHostPath .field { margin-bottom:0; }
#dateControlHostPath .date-row { grid-template-columns:repeat(2,minmax(0,1fr)); }
#planDayTabs { position:sticky; top:0; z-index:25; background:var(--glass-strong); padding:8px 0; margin-bottom:8px; }
#planDayTabs>button { position:sticky; left:0; z-index:1; background:var(--card); }
#planDayTabs>button.on { background:var(--tint); color:var(--on-tint,#fff); }
/* The map already has the same day navigation and discovery controls. */
body:has(#pathSection.show) #dayLegend { display:none!important; }
.organize-tools { padding:4px 0 12px; }
.organize-tools>span { display:block; font-size:11px; color:var(--label-2); margin-bottom:6px; }
#organizeActions { display:flex; flex-wrap:wrap; gap:6px; }
#organizeActions button,.optimization-actions button { border:1px solid var(--sep); border-radius:12px; background:var(--fill); color:var(--label); font:600 12px/1.3 -apple-system,system-ui,sans-serif; min-height:40px; padding:8px 10px; cursor:pointer; }
#organizeActions button:hover,.optimization-actions button:hover { background:var(--tint-soft); }
.planner-bottom { flex:none; position:relative; z-index:30; border-top:1px solid var(--sep); background:var(--glass-strong); padding:8px 0 max(10px,var(--app-safe-bottom)); }
.planner-bottom .price-panel { margin:0; border:0; background:transparent; overflow:visible; }
.planner-bottom .price-panel>summary { min-height:40px; padding:4px 2px; }
.planner-bottom .price-panel .pp-title { font-size:12px; }
.planner-bottom .pp-total { margin-left:auto; font-size:12px; }
.planner-bottom .pp-total b { font-size:22px; }
.optimization-actions { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:6px; }
.optimization-actions #optimizeBtn { font-size:12px!important; min-height:40px; margin:0; }
.trip-hero { height:auto!important; min-height:98px!important; }
.th-stats { margin:5px 0 0; font-size:13px; font-weight:650; }
.trip-hero .th-title { white-space:normal; text-align:left; }
.stay-pick .sp-head { display:grid!important; grid-template-columns:auto minmax(0,1fr); gap:4px 8px; }
.stay-pick .sp-head strong { white-space:normal!important; overflow:visible!important; }
.stay-pick .sp-head>small { grid-column:2; white-space:normal!important; }
.stay-pick li { display:grid!important; grid-template-columns:minmax(0,1fr) 76px; gap:12px; align-items:start; }
.stay-pick .hp-main { min-width:0; overflow:visible!important; }
.stay-pick .hp-main strong { white-space:normal!important; overflow-wrap:anywhere; }
.stay-pick .hp-main>span { white-space:normal!important; overflow-wrap:anywhere; }
.stay-pick .hp-links { display:flex!important; flex-wrap:wrap; gap:6px 12px; margin-top:6px; }
.stay-pick .hp-links a { white-space:normal!important; min-height:26px; }
.stay-pick .hp-side { min-width:0; display:flex; flex-direction:column; align-items:flex-end; gap:3px; }
.stay-pick .hp-add { min-height:38px; min-width:64px; margin-top:4px; }
@media(max-width:600px) {
body .workspace { display:grid!important; grid-template-rows:42% minmax(0,1fr)!important; }
body .workspace>.map-shell { display:block!important; grid-row:1; grid-column:1; height:100%!important; min-height:0!important; }
body .workspace>.sidebar.glass { display:flex!important; grid-row:2; grid-column:1; height:100%!important; min-height:0; padding:0 12px!important; border-radius:22px 22px 0 0!important; border-top:1px solid var(--sep)!important; }
body .sidebar>.rv-band { height:10px!important; min-height:10px!important; margin:0; }
body .sidebar>.rv-band::after { content:''; display:block; width:36px; height:4px; border-radius:8px; background:var(--label-3); margin:4px auto; }
body:has(#pathSection.show) .map-top { top:70px!important; left:12px!important; right:12px!important; gap:6px; }
body:has(#pathSection.show) .rv-settings .rv-p2 { display:none!important; }
body .mobile-switch { display:none!important; }
body:has(#pathSection.show) .map-search { flex-basis:auto!important; flex:1; min-width:0; width:auto; }
body:has(#pathSection.show) .map-search-field { min-height:36px; }
body:has(#pathSection.show) .trip-hero { min-height:88px!important; margin-bottom:6px!important; }
.planner-bottom { padding-top:4px; }
.optimization-actions button { font-size:11px; min-height:40px; padding:6px; }
body.side-hidden .workspace>.sidebar { transform:none!important; visibility:visible!important; opacity:1!important; }
body .rv-dock :is(.home-tabs,.account-entry) { display:flex!important; }
body .rv-side { display:none!important; }
}
#pathSection.show { padding-bottom:0!important; }
@media(max-width:600px) {
.app { grid-template-columns:minmax(0,1fr)!important; }
body:has(#pathSection.show) .workspace { width:100%; min-width:0; grid-template-columns:minmax(0,1fr)!important; gap:0!important; }
body:has(#pathSection.show) .workspace>.sidebar.glass,body:has(#pathSection.show) .workspace>.map-shell { width:100%; min-width:0; }
body:has(#pathSection.show) .map-search { flex:1 1 0!important; width:0; }
body:has(#pathSection.show) .map-search-field input { height:36px; }
.planner-scroll { scrollbar-gutter:auto; }
}
.map-top #discoverBtn { height:38px!important; min-height:38px!important; }
.organize-heading { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:6px; font-size:11px; color:var(--label-2); }
#organizeHistory { display:flex; gap:6px; }
#organizeHistory button { width:32px; height:32px; border:1px solid var(--sep); border-radius:50%; background:var(--fill); color:var(--label); cursor:pointer; }
#organizeHistory button:disabled { opacity:.35; cursor:default; }
.rv-p2 .tool-more { display:none!important; }
#organizeHistory { align-items:center; }
#organizeHistory .save-state { font-size:11px; }
@media(min-width:601px) {
body:has(#pathSection.show) .rv-settings .rv-p2 { display:none!important; }
body:has(#pathSection.show) .rv-band { height:66px!important; min-height:66px!important; }
}
/* Overview stays outside the horizontally scrolling list of days. */
#planDayTabs { overflow:visible; align-items:center; gap:6px; }
#planDayTabs>button { flex:none; position:static; }
.plan-day-scroll { display:flex; flex:1; min-width:0; gap:5px; overflow-x:auto; scrollbar-width:none; overscroll-behavior-x:contain; touch-action:pan-x; }
.plan-day-scroll::-webkit-scrollbar { display:none; }
.plan-day-scroll button { flex:none; }
/* Dates and times belong to the same two controls. */
#dateControl .date-box { display:grid!important; grid-template-columns:28px minmax(0,1fr) 28px; grid-template-rows:38px 32px; gap:0; height:auto!important; padding:2px 4px!important; align-items:center; }
#dateControl .date-core { min-width:0; width:100%; height:38px; }
.date-time { grid-column:1/-1; display:flex; align-items:center; justify-content:space-between; gap:6px; padding:2px 8px 4px; border-top:1px solid var(--sep); font-size:11px; color:var(--label-2); }
.date-time input { width:100px; min-width:0; min-height:28px; padding:0; background:transparent; border:0; color:var(--tint); font:600 13px -apple-system,system-ui,sans-serif; }
.budget-form { display:grid; grid-template-columns:minmax(55px,.8fr) 10px minmax(130px,2fr) 10px minmax(45px,.65fr); gap:5px; align-items:end; }
.budget-form>label { display:flex; min-width:0; flex-direction:column; gap:7px; font-size:11px; color:var(--label-2); }
.budget-form input { width:100%; min-width:0; min-height:38px; border:1px solid var(--sep); border-radius:10px; padding:6px 8px; background:var(--fill); color:var(--label); font:600 14px -apple-system,system-ui,sans-serif; box-sizing:border-box; }
.budget-times { align-self:end; line-height:38px; color:var(--label-3); }
.daily-budget-input { display:flex; align-items:center; border:1px solid var(--sep); border-radius:10px; min-width:0; background:var(--fill); }
.daily-budget-input input { border:0; padding-left:2px; background:transparent; }
.daily-budget-input select { width:56px; padding:0 3px; border:0; background:transparent; color:var(--label); font-size:11px; }
#budgetTotal { grid-column:1/-1; margin-top:6px; color:var(--label-2); font-size:11px; line-height:1.5; }
#emptyState { top:92px!important; max-width:300px; width:auto!important; padding:12px 16px!important; background:var(--glass)!important; border-radius:16px!important; pointer-events:none; }
#emptyState .empty-icon,#emptyState #destinationSearchForm { display:none!important; }
#emptyState p { font-size:12px!important; margin:0!important; }
.hotel-search { margin-top:12px; padding-top:12px; border-top:1px solid var(--sep); }
.hotel-search>label { display:block; color:var(--label); font-size:13px; font-weight:600; }
.hotel-search>label>span { display:flex; gap:6px; margin-top:7px; }
.hotel-search input { width:100%; min-width:0; min-height:40px; padding:8px 10px; border:1px solid var(--sep); border-radius:12px; background:var(--card); color:var(--label); font:inherit; }
.hotel-search button[type="submit"] { flex:none; padding:0 12px; border:0; border-radius:12px; background:var(--tint); color:var(--on-tint,#fff); font:600 12px -apple-system,system-ui,sans-serif; cursor:pointer; }
.hotel-search button:disabled { opacity:.5; }
.hotel-search>small { display:block; margin-top:6px; font-size:11px; line-height:1.4; color:var(--label-2); }
.hotel-search-results { margin-top:8px; font-size:12px; line-height:1.5; }
@media(max-width:600px) {
.budget-form { grid-template-columns:minmax(46px,.8fr) 8px minmax(125px,2fr) 8px minmax(40px,.6fr); gap:4px; }
}
.date-time>span { white-space:nowrap; font-size:10px; }
.date-time input { width:92px; }
/* Shared glass controls for organizing and optimizing a trip. */
#itineraryBtn[hidden],#posterBtn[hidden],#copyItinerary[hidden] { display:none!important; }
#organizeActions button,#optimizationActions button {
 background:linear-gradient(145deg,rgba(255,255,255,.92),rgba(255,255,255,.52))!important;
 color:#21473f!important;border:1px solid rgba(255,255,255,.9)!important;
 box-shadow:inset 0 1px 0 #fff,0 3px 12px #163c2810!important;backdrop-filter:blur(18px) saturate(145%);
 font-weight:600!important;line-height:1.4!important;
}
#organizeActions button:hover,#optimizationActions button:hover { background:rgba(255,255,255,.96)!important; }
#optimizationActions button:focus-visible,#organizeActions button:focus-visible { outline:2px solid var(--tint);outline-offset:2px; }
[data-theme="dark"] #organizeActions button,[data-theme="dark"] #optimizationActions button { background:linear-gradient(145deg,#ffffff26,#ffffff12)!important;color:var(--label)!important;border-color:#ffffff30!important;box-shadow:inset 0 1px 0 #ffffff30!important; }
.date-time input { width:58px;text-align:right;font-variant-numeric:tabular-nums; }
.sp-vehicle-card .sp-car { border-top:0;margin-top:0;padding-top:0; }
/* The car card is only for road trips (planner.js toggles it). */
.sp-vehicle-card[hidden] { display: none !important; }
/* Museums tile while its map pins load. */
.ss-tile.is-loading .ss-score { opacity: .45; }
.ss-tile.is-loading::after { content: ''; position: absolute; top: 8px; right: 8px; width: 10px; height: 10px; border-radius: 50%; border: 1.5px solid currentColor; border-right-color: transparent; opacity: .55; animation: sp-spin .8s linear infinite; }
@media (prefers-reduced-motion: reduce) {
.ss-tile.is-loading::after { animation: none; }
}
/* ---- Organize: Start over is a round loop button beside undo / redo. */
#organizeHistory #startOverBtn { display:grid !important; place-items:center; width:32px !important; height:32px !important; padding:0 !important; }
#organizeHistory #startOverBtn svg { display:block; width:16px; height:16px; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
#organizeHistory #startOverBtn span { display:none; }
#organizeActions:empty { display:none; }
.organize-tools { padding-bottom:6px; }
/* ---- Import places, pinned in front of the scrolling day tabs. */
.plan-day-tabs { align-items:center; }
.plan-day-tabs .plan-day-import { display:inline-flex; align-items:center; gap:4px; flex:none; color:var(--tint); background:var(--tint-soft); border-color:color-mix(in srgb, var(--tint) 30%, transparent); }
.plan-day-tabs .plan-day-import span:first-child { font-size:14px; line-height:1; }
/* ---- Phones follow the system appearance, units and language: no switches. */
@media (max-width: 600px) {
.rv-dock .rv-settings { display:none !important; }
}
/* ---- Trip total sheet: iOS inset-grouped style (opaque grouped background, white rounded
   lists with hairlines, uppercase section headers, footnotes). Opens above the footer. */
.planner-bottom .pp-total b { color:var(--label); }
.price-panel .pp-body { position:absolute; bottom:calc(100% + 8px); left:0; right:0; max-height:min(72dvh,700px); overflow:auto; overscroll-behavior:contain; padding:20px 16px 22px; border:.5px solid var(--sep); border-radius:24px; background:var(--bg); box-shadow:0 -12px 40px rgba(0,0,0,.18); color:var(--label); font:15px/1.3 -apple-system,BlinkMacSystemFont,"SF Pro Text",system-ui,sans-serif; }
@media (max-width:600px) {
.price-panel .pp-body { position:fixed; left:10px; right:10px; bottom:calc(var(--planner-bottom-h,96px) + 8px); max-height:calc(var(--rovego-viewport-height,100dvh) - var(--planner-bottom-h,96px) - var(--app-safe-top,0px) - 72px); border-radius:22px; z-index:40; }
}
.pp-hero { display:grid; gap:2px; padding:0 4px; }
.pp-eyebrow { font-size:13px; color:var(--label-2); }
.pp-big { font-size:34px; font-weight:700; letter-spacing:-.025em; line-height:1.1; font-variant-numeric:tabular-nums; }
.pp-big.over { color:var(--red); }
.pp-sub { font-size:13px; color:var(--label-2); }
.pp-list { list-style:none; margin:14px 0 0; padding:0; border-radius:14px; background:var(--card); overflow:hidden; }
.pp-list > li { position:relative; display:flex; align-items:center; gap:10px; min-height:46px; padding:10px 14px; }
.pp-list > li + li::before { content:''; position:absolute; top:0; left:14px; right:0; height:1px; background:var(--sep); transform:scaleY(.5); transform-origin:top; }
.pp-breakdown > li + li::before { left:36px; }
.pp-dot { flex:none; width:10px; height:10px; border-radius:50%; }
.pp-l { flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.pp-pct { flex:none; font-size:13px; color:var(--label-3); font-variant-numeric:tabular-nums; }
.pp-list > li > b { flex:none; min-width:64px; text-align:right; font-weight:600; font-variant-numeric:tabular-nums; }
.pp-h { margin:24px 14px 7px; font-size:13px; font-weight:400; letter-spacing:.01em; text-transform:uppercase; color:var(--label-2); }
.pp-foot { margin:7px 14px 0; font-size:12px; line-height:1.4; color:var(--label-2); }
.pp-muted { color:var(--label-3); }
.pp-budget-row .bg-in { display:flex; align-items:center; height:34px; border-radius:9px; background:var(--fill); overflow:hidden; }
.pp-budget-row .bg-in em { padding-left:10px; font-style:normal; font-size:14px; color:var(--label-2); }
.pp-budget-row .bg-in input { width:86px; padding:0 6px 0 4px; border:0; background:transparent; color:var(--label); font:600 15px/1 -apple-system,BlinkMacSystemFont,system-ui,sans-serif; font-variant-numeric:tabular-nums; text-align:right; -moz-appearance:textfield; }
.pp-budget-row .bg-in input::-webkit-inner-spin-button,.pp-budget-row .bg-in input::-webkit-outer-spin-button { -webkit-appearance:none; margin:0; }
.pp-budget-row .bg-in select { height:100%; padding:0 8px; border:0; border-left:1px solid var(--sep); background:transparent; color:var(--tint); font:600 14px/1 -apple-system,BlinkMacSystemFont,system-ui,sans-serif; cursor:pointer; }
.pp-budget-row :is(input,select):focus-visible { outline:2px solid var(--tint); outline-offset:-2px; }
.pp-meter-row { min-height:36px !important; }
.pp-meter { flex:1; height:6px; border-radius:3px; background:var(--fill); overflow:hidden; }
.pp-meter i { display:block; height:100%; border-radius:3px; background:var(--green); transition:width .3s; }
.pp-meter.over i { background:var(--red); }
.pp-options .pp-opt { flex:1; min-width:0; display:grid; gap:2px; }
.pp-options .pp-l { font-weight:500; }
.pp-options small { font-size:12.5px; color:var(--label-2); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.pp-tag { display:inline-block; margin-left:6px; padding:1px 7px; border-radius:999px; background:var(--green-soft); color:var(--green-text); font-size:11px; font-weight:600; font-style:normal; vertical-align:1px; text-transform:capitalize; }
.pp-options li.best > b { color:var(--green-text); }
.pp-check { flex:none; width:16px; color:var(--tint); font-weight:700; text-align:center; }
.pp-options li:not(.planned) > b { margin-right:26px; }
.pp-vehicle { gap:8px !important; }
.pp-preset { flex:1; min-width:0; height:34px; padding:0 30px 0 10px; border:0; border-radius:9px; background:var(--fill) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%238e8e93' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right 11px center / 11px 8px; color:var(--label); font:15px/1 -apple-system,BlinkMacSystemFont,system-ui,sans-serif; -webkit-appearance:none; appearance:none; text-overflow:ellipsis; cursor:pointer; }
.pp-eff { flex:none; display:inline-flex; align-items:center; gap:4px; height:34px; padding:0 10px; border-radius:9px; background:var(--fill); }
.pp-eff input { width:4ch; border:0; background:transparent; color:var(--label); font:600 15px/1 -apple-system,BlinkMacSystemFont,system-ui,sans-serif; text-align:right; -moz-appearance:textfield; }
.pp-eff input::-webkit-inner-spin-button,.pp-eff input::-webkit-outer-spin-button { -webkit-appearance:none; margin:0; }
.pp-eff span { font-size:13px; color:var(--label-2); }
.pp-preset:focus-visible,.pp-eff:focus-within { outline:2px solid var(--tint); outline-offset:-2px; }
.pp-r { flex:none; font-size:14px; color:var(--label-2); font-variant-numeric:tabular-nums; }
.pp-r b { color:var(--label); font-weight:600; }
.pp-gas { flex-wrap:wrap; }
.pp-gas > div { flex-basis:100%; display:flex; flex-wrap:wrap; gap:6px; }
.pp-gas > div > span:not(.pp-muted) { display:inline-flex; align-items:center; gap:4px; padding:5px 9px; border-radius:9px; background:var(--fill-2); font-size:13px; }
.pp-gas em { font-style:normal; font-size:10.5px; font-weight:600; padding:1px 6px; border-radius:999px; }
.pp-gas em.live { background:var(--green-soft); color:var(--green-text); }
.pp-gas em.est { background:var(--orange-soft); color:var(--orange-text); }
/* While the sheet is open it sits above the map controls. */
.planner-bottom:has(.price-panel[open]) { z-index:1100; }
/* ---- Phone: the map search sits in the top row, level with My trips and the account button.
   My trips shrinks to its icon and count to make room; Discover drops to the row below. */
@media (max-width: 600px) {
body .map-shell .map-top,
  body:has(#pathSection.show) .map-shell .map-top,
  body[data-view="map"] .map-shell .map-top { top:max(10px, var(--app-safe-top, 0px)) !important; left:12px !important; right:12px !important; flex-wrap:wrap !important; gap:10px 6px !important; }
/* The right margin fills the row, so Discover always wraps below. */
html body .map-shell .map-top #mapSearchForm.map-search { flex:0 0 auto !important; width:calc(100% - 132px) !important; margin-right:132px; }
.map-shell .map-top .map-search-field { height:38px !important; min-height:38px !important; }
.map-shell .map-top .map-search-field input { height:100% !important; }
.map-shell .map-top #discoverBtn { margin-left:auto; }
.rv-dock #savedRoutesTab { width:64px !important; min-width:0 !important; padding:0 10px !important; justify-content:center; gap:5px; }
.rv-dock #savedRoutesTab > span:not(#savedRouteCount) { display:none !important; }
.rv-dock #accountEntry { width:38px !important; height:38px !important; }
}
/* ---- Footer: one row — $ Trip total on the left, Optimize cost on the right. */
.planner-bottom { display:flex; align-items:center; gap:10px; }
#plannerPrice { flex:1; min-width:0; }
.planner-bottom .optimization-actions { display:flex; flex:none; }
.planner-bottom #optimizationActions button.pp-optimize { display:inline-flex; align-items:center; gap:5px; height:36px; min-height:36px; padding:0 14px; border:0 !important; border-radius:999px; background:var(--tint-soft) !important; color:var(--tint) !important; box-shadow:none !important; font:600 13px/1 -apple-system,BlinkMacSystemFont,system-ui,sans-serif; white-space:nowrap; cursor:pointer; }
.planner-bottom #optimizationActions button.pp-optimize:hover { background:color-mix(in srgb, var(--tint) 18%, transparent) !important; }
.planner-bottom #optimizationActions button.pp-optimize::before { content:'✦'; font-size:12px; }
/* ---- Compare routes panel (opened by Optimize cost). */
.dir-panel .dir-base { background:var(--fill-2); box-shadow:none; }
.dir-panel .dir-alt h4 .pp-tag { margin-left:6px; }
.dir-panel .dir-alt h4 i.dash { background:repeating-linear-gradient(90deg, var(--c) 0 6px, transparent 6px 10px); }
.dir-note { margin:12px 4px 0; font-size:12px; color:var(--label-2); }
@media (max-width:360px) {
.planner-bottom .pp-title { font-size:12.5px !important; }
}
/* "Ideas for the next stop" was removed — Discover on a day view is the same feature. */
#treePanel.folded { display:none !important; }
/* ---- One background for the planner: the sticky day tabs, the footer and the trip-total row
   use the page background instead of their own lighter bands; boxes are plain cards. */
#planDayTabs, .planner-bottom { background:var(--bg) !important; -webkit-backdrop-filter:none !important; backdrop-filter:none !important; }
.planner-bottom .price-panel { background:transparent !important; box-shadow:none !important; border-radius:0 !important; }
#planDayTabs button { height:34px; min-height:34px; padding:0 14px; border:0 !important; border-radius:999px; background:var(--fill) !important; color:var(--label) !important; font:600 13px/1 -apple-system,BlinkMacSystemFont,system-ui,sans-serif; box-shadow:none !important; }
#planDayTabs button.on { background:var(--tint) !important; color:var(--on-tint,#fff) !important; }
#planDayTabs button.plan-day-import { background:var(--tint-soft) !important; color:var(--tint) !important; }
:is(.bulk-import, .place-intel, .route-metrics, .trip-settings) { background:var(--card) !important; border:0 !important; border-radius:14px !important; box-shadow:none !important; -webkit-backdrop-filter:none !important; backdrop-filter:none !important; }
.bulk-status:empty { display:none; }
/* ---- Full itinerary: a price on every line, a subtotal per day. */
.hourly-item { grid-template-columns:48px minmax(0,1fr) auto !important; align-items:baseline; }
.hourly-item .hi-cost { font-weight:600; font-variant-numeric:tabular-nums; white-space:nowrap; color:var(--label); }
.itinerary-day h3 { display:flex; align-items:baseline; justify-content:space-between; gap:10px; }
.itinerary-day h3 .itd-total { font-size:15px; font-weight:700; font-variant-numeric:tabular-nums; color:var(--label); }
/* ---- Meal-time legs: the label is tinted to match the amber route. */
:is(.route-time-label, .mk-route-label).meal { background:#fff4dd !important; color:#8a4b00 !important; border-color:#f59e0b !important; font-weight:600; }
:root[data-theme="dark"] :is(.route-time-label, .mk-route-label).meal { background:#3a2a10 !important; color:#ffc46b !important; }
/* ---- Overview: one total-travel tag per day, in the day's colour. */
.day-total-marker { overflow:visible; background:none !important; border:0 !important; }
.day-total-label { position:absolute; transform:translate(-50%,-50%); padding:4px 10px; border-radius:999px; background:var(--c); color:#fff; font:600 12px/1.3 -apple-system,BlinkMacSystemFont,system-ui,sans-serif; white-space:nowrap; box-shadow:0 2px 8px rgba(0,0,0,.18); pointer-events:none; }
/* ---- Day view: the Organize row is pinned under the day tabs. It holds a small "＋ Add" box that
   widens when tapped (undo / redo step aside meanwhile). */
body.day-detail #pathSection .organize-tools { position:sticky; top:var(--day-tabs-h, 52px); z-index:24; margin:0 0 8px; padding:4px 0 8px; background:var(--bg); }
.organize-heading { display:flex; align-items:center; gap:8px; }
.day-add { display:flex; align-items:center; gap:6px; flex:0 1 190px; min-width:0; height:38px; padding:0 4px 0 12px; border-radius:999px; background:var(--card); box-shadow:0 0 0 1px var(--sep); transition:flex-basis .25s ease, box-shadow .2s; cursor:text; }
.day-add-icon { color:var(--tint); font-size:16px; }
.day-add input { flex:1; min-width:0; height:100%; border:0; background:transparent; color:var(--label); font:14px -apple-system,BlinkMacSystemFont,system-ui,sans-serif; outline:none; text-overflow:ellipsis; }
.day-add input::placeholder { color:var(--label-3); }
.day-add button { display:none; flex:none; height:30px; padding:0 13px; border:0; border-radius:999px; background:var(--tint); color:var(--on-tint,#fff); font:600 13px/1 -apple-system,BlinkMacSystemFont,system-ui,sans-serif; cursor:pointer; }
.day-add:focus-within { flex:1 1 100%; box-shadow:0 0 0 2px var(--tint); }
.day-add:focus-within button { display:block; }
.organize-heading:has(.day-add:focus-within) #organizeHistory { display:none; }
#organizeHistory { margin-left:auto; }
.it-item.just-added { animation:just-added 1.6s ease-out; }
@keyframes just-added { 0%, 30% { box-shadow:0 0 0 3px var(--tint); } 100% { box-shadow:0 0 0 0 transparent; } }
/* ＋1 day, after the last day tab. */
#planDayTabs button.plan-day-add { background:transparent !important; color:var(--tint) !important; box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--tint) 40%, transparent) !important; }
/* Stay length editor: hours/minutes, four quick picks and ✓ — fits one phone row. */
.pc-stay-edit { display:flex; flex-wrap:wrap; align-items:center; gap:6px; }
.pc-stay-edit > button { height:30px; min-width:0; padding:0 10px !important; border-radius:999px; font-size:12.5px !important; }
.pc-stay-edit .pc-stay-done { width:30px; padding:0 !important; font-weight:700; }
/* Phones: reorder by dragging the ⠿ handle, so make it easy to grab. */
@media (max-width:600px) {
.it-item .it-handle { opacity:1 !important; width:34px !important; height:44px !important; }
.day-add input { font-size:16px; }
@media (prefers-reduced-motion: reduce) {
.day-add { transition:none; }
}
}
/* ---- Type (Nature / City) sits inside the route card. */
.sp-route .rt-type { margin-top:12px; padding-top:12px; border-top:1px solid var(--sep); gap:6px; }
/* ---- Full itinerary inside the Trip total sheet: one inset list per day, price on every line. */
.pp-day + .pp-day { margin-top:14px; }
.pp-day-h { display:flex; align-items:baseline; justify-content:space-between; gap:10px; margin:0 14px 6px; font-size:13px; font-weight:600; color:var(--label); }
.pp-day-h i { display:inline-block; width:8px; height:8px; margin-right:7px; border-radius:50%; vertical-align:1px; }
.pp-day-h b { font-variant-numeric:tabular-nums; }
.pp-itin { margin-top:0; }
.pp-itin > li { align-items:baseline; min-height:40px; padding:9px 14px; font-size:14px; }
.pp-itin > li + li::before { left:68px; }
.pp-itin time { flex:none; width:44px; font-size:12.5px; font-weight:600; color:var(--tint); font-variant-numeric:tabular-nums; }
.pp-itin .pp-l { white-space:normal; overflow:visible; line-height:1.35; }
.pp-itin > li > b { min-width:0; font-size:14px; }
/* ---- Overview: one row — Import, Overview, then undo / redo / start over on the right. */
body:not(.day-detail) #pathSection .organize-tools { display:none; }
#planDayTabs .plan-day-history { display:flex; align-items:center; gap:6px; margin-left:auto; }
#planDayTabs .plan-day-history button { display:grid !important; place-items:center; width:34px !important; min-width:34px; padding:0 !important; font-size:15px; }
#planDayTabs .plan-day-history button:disabled { opacity:.35; }
@media (max-width:600px) {
#planDayTabs .plan-day-history .save-state { display:none; }
}
/* ---- Map off (no Google Maps permit): a quiet note in the map area. */
.map-off { position:absolute; inset:0; display:grid; place-content:center; gap:4px; padding:24px; text-align:center; background:var(--bg); color:var(--label-2); font-size:13px; }
.map-off b { color:var(--label); font-size:15px; }
/* ---- Trip total summary, compact: one thin bar per category (label · bar · amount). */
.pp-hero { gap:0; }
.pp-big { font-size:28px; }
.pp-breakdown { margin-top:10px; padding:6px 0; }
.pp-breakdown > li { min-height:0; padding:5px 14px; gap:10px; font-size:13.5px; }
.pp-breakdown > li + li::before { display:none; }
.pp-breakdown .pp-l { flex:0 0 118px; }
.pp-breakdown .pp-dot { width:8px; height:8px; }
.pp-bar { flex:1; min-width:40px; height:6px; border-radius:3px; background:var(--fill); overflow:hidden; }
.pp-bar i { display:block; height:100%; border-radius:3px; transition:width .3s; }
.pp-breakdown > li > b { min-width:62px; font-size:13.5px; }
/* ---- Hints that the full itinerary lives in the Trip total sheet. */
.planner-bottom .price-panel .pp-title { font-size:13px !important; font-weight:600; color:var(--tint) !important; }
/* Breakdown rows never overflow: the label and bar give way, the amount always shows in full. */
.pp-breakdown > li { overflow:hidden; }
.pp-breakdown .pp-l { flex:0 1 112px; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.pp-bar { min-width:24px; }
.pp-breakdown > li > b { flex:none; min-width:0; white-space:nowrap; }
@media (max-width:400px) {
.pp-breakdown > li { padding:5px 12px; gap:8px; }
.pp-breakdown .pp-l { flex-basis:92px; }
.price-panel .pp-body { padding-left:12px; padding-right:12px; }
}
/* ---- Compare routes: a colour swatch per route (matching the map), the stops that differ, one summary line. */
.dir-panel .dir-alt h4 { display:flex; align-items:center; gap:8px; }
.dir-swatch { flex:none; width:22px; height:5px; border-radius:3px; background:var(--c); }
.dir-swatch.dash { background:repeating-linear-gradient(90deg, var(--c) 0 7px, transparent 7px 11px); }
.dir-places { margin:4px 0 0 !important; font-size:13px !important; color:var(--label) !important; }
.dir-sum { margin:4px 0 10px !important; font-size:13px !important; color:var(--label-2) !important; font-variant-numeric:tabular-nums; }
.dir-sum b { color:var(--label); }
.dir-sum .good { color:var(--green-text); font-weight:600; }
.dir-sum .bad { color:var(--orange-text); font-weight:600; }
/* ---- Footer: [▤ Itinerary] [✦ Optimize cost] ……… $857 */
#plannerPrice { display:contents; }
.planner-bottom .price-panel { order:1; flex:none; }
.planner-bottom .optimization-actions { order:2; }
.planner-bottom .pp-total { order:3; margin-left:auto !important; font-size:12px; white-space:nowrap; }
.planner-bottom .pp-total b { font-size:22px; font-weight:700; color:var(--label) !important; font-variant-numeric:tabular-nums; }
.planner-bottom .price-panel > summary.pp-itin-btn { display:inline-flex; align-items:center; gap:5px; height:36px; min-height:36px; padding:0 14px !important; border-radius:999px; background:var(--fill); color:var(--label); font:600 13px/1 -apple-system,BlinkMacSystemFont,system-ui,sans-serif; cursor:pointer; }
.planner-bottom .price-panel > summary.pp-itin-btn::after { content:none !important; }
.planner-bottom .price-panel[open] > summary.pp-itin-btn { background:var(--tint); color:var(--on-tint,#fff); }
.planner-bottom .price-panel .pp-itin-btn .pp-title { font-size:13px !important; color:inherit !important; font-weight:600; }
.planner-bottom #optimizationActions button.pp-optimize::before { content:'✦'; }
/* Itinerary sheet header with "Save as poster". */
.pp-sheet-head { display:flex; align-items:center; justify-content:space-between; gap:10px; margin:0 4px 12px; }
.pp-sheet-head h3 { margin:0; font-size:22px; font-weight:700; letter-spacing:-.02em; color:var(--label); }
.pp-poster { flex:none; height:32px; padding:0 13px; border:0; border-radius:999px; background:var(--tint-soft); color:var(--tint); font:600 13px/1 -apple-system,BlinkMacSystemFont,system-ui,sans-serif; cursor:pointer; }
.pp-poster::before { content:'⤓ '; }
/* ---- Keep Start over / undo / redo inside the page on narrow screens. The add box takes whatever
   room is left instead of a fixed width, and the buttons never shrink or wrap off-screen. */
.organize-heading { min-width:0; }
.organize-heading .day-add { flex:1 1 0; min-width:0; }
#organizeHistory, #planDayTabs .plan-day-history { flex:none; min-width:0; }
#planDayTabs { max-width:100%; }
#planDayTabs > button { flex:0 1 auto; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
@media (max-width:600px) {
#organizeHistory .save-state { display:none; }
#organizeHistory, #planDayTabs .plan-day-history { gap:4px; }
#organizeHistory button, #planDayTabs .plan-day-history button { width:32px !important; min-width:32px; height:32px !important; min-height:32px !important; }
#planDayTabs > button { padding:0 11px !important; }
}
/* ---- Place cards: time in front of the name, a slightly smaller name. */
.pc-title { display:flex; align-items:baseline; gap:8px; min-width:0; }
.pc-time { flex:none; font-size:13px; font-weight:600; color:var(--tint); font-variant-numeric:tabular-nums; }
.pc-title .pc-name { flex:1; min-width:0; font-size:15px !important; }
body.day-detail #timeline .pc-title .pc-name { font-size:15.5px !important; }
/* Footer price always fully visible. */
.planner-bottom .pp-total { flex:none; }
.planner-bottom .price-panel > summary.pp-itin-btn, .planner-bottom #optimizationActions button.pp-optimize { padding:0 12px !important; }
@media (max-width:380px) {
.planner-bottom { gap:6px; }
.planner-bottom .pp-total b { font-size:19px; }
}
/* Poster preview: the poster can be tall now, so the preview scrolls instead of shrinking it. */
.poster-view { display:block !important; max-height:calc(100vh - 210px); overflow:auto !important; }
.poster-view img { display:block; max-height:none !important; height:auto; }
/* ---- Tighter vertical rhythm: the gap above the Overview / Import row matches the gap below it,
   and the day cards are lower with a smaller photo. */
body:has(#pathSection.show) .trip-hero { margin-bottom:6px !important; }
#planDayTabs { padding:6px 0 !important; margin-bottom:6px !important; }
#planDayTabs button { height:32px !important; min-height:32px !important; }
.day-overview { gap:6px; margin-top:0; }
.dov-card { grid-template-columns:46px minmax(0,1fr) auto !important; padding:7px 10px 7px 7px !important; gap:10px !important; min-height:0 !important; }
.dov-photo { width:46px !important; height:46px !important; border-radius:11px !important; }
.dov-photo::after { left:4px !important; top:4px !important; width:7px !important; height:7px !important; }
.dov-body { gap:1px; }
.dov-top b { font-size:14px; }
.dov-title { font-size:13px; }
.dov-stats { font-size:11px; }
/* The empty mode-hint bar added 8px above the day tabs; the gap above and below them now match. */
#pathSection .it-bar { display:none !important; }
/* ---- Plan page: tighter vertical spacing. */
#startPage { gap:8px !important; }
#startPage .sp-card { padding-top:11px !important; padding-bottom:11px !important; }
#startPage .sp-route { margin-bottom:0 !important; }
#startPage .rt-head { padding-bottom:0 !important; min-height:0; height:30px; }
#startPage .rt-row { padding-top:2px !important; padding-bottom:2px !important; }
#startPage .rt-row.rt-wish { padding-top:4px !important; padding-bottom:4px !important; }
#startPage .rt-wish-tools { margin-top:4px !important; }
#startPage #inspirationOpen { padding-top:8px !important; padding-bottom:8px !important; }
#startPage .rt-type { margin-top:8px !important; padding-top:8px !important; }
#startPage .sp-when .sp-label { margin-bottom:6px !important; }
#startPage .sp-bags { margin-top:4px !important; padding-top:4px !important; }
/* ---- Phones: one page. The map stays on top and the planner is the sheet below it, on the start
   page as on a trip — no Plan / Map switch. The start page scrolls inside its sheet. */
@media (max-width:600px) {
body:not(:has(#pathSection.show)) .workspace>.sidebar.glass { display:block !important; overflow-y:auto !important; padding-bottom:calc(16px + var(--app-safe-bottom, 0px)) !important; }
body:not(:has(#pathSection.show)) #startPage { padding-top:6px; }
#startPage .sp-brand-caption { display:none !important; }
html body #mobileSwitch { display:none !important; }
body .workspace { grid-template-columns:minmax(0,1fr) !important; gap:0 !important; width:100%; min-width:0; }
body .workspace>.sidebar.glass, body .workspace>.map-shell { width:100%; min-width:0; }
#setupSection, #startPage { min-width:0; max-width:100%; }
}
/* "Search above or tap a place on the map" card removed: the search bar already says "tap or search". */
#emptyState { display:none !important; }
/* ---- Season & events on phones: a slim card along the bottom of the map (above Google's logo, which must stay visible) — one swipeable row of
   compact tiles, a one-line prediction, no drag handle or reset; collapsed it is a small pill. */
@media (max-width:600px) {
.map-shell > .sp-seasons { left:10px !important; right:10px !important; top:auto !important; bottom:30px !important; width:auto !important; max-width:none !important; max-height:46% !important; padding:8px 10px !important; border-radius:18px !important; transform:none !important; }
.map-shell > .sp-seasons .season-card-head { min-height:0 !important; height:24px; margin:0 0 6px !important; }
.map-shell > .sp-seasons .season-drag-handle { pointer-events:none; font-size:12px !important; padding:0 !important; }
.map-shell > .sp-seasons .season-reset { display:none !important; }
.map-shell > .sp-seasons .season-collapse { width:26px !important; height:26px !important; min-height:26px !important; }
.map-shell > .sp-seasons .ss-grid { display:flex !important; gap:6px !important; overflow-x:auto; scrollbar-width:none; overscroll-behavior-x:contain; margin:0 -2px; padding:0 2px 2px; }
.map-shell > .sp-seasons .ss-grid::-webkit-scrollbar { display:none; }
.map-shell > .sp-seasons .ss-tile { display:flex !important; flex-direction:row !important; flex:0 0 auto !important; width:auto !important; min-width:0; min-height:0 !important; height:34px !important; padding:0 8px 0 7px !important; gap:5px !important; border-radius:999px !important; align-items:center !important; }
.map-shell > .sp-seasons .ss-tile .ss-ico { font-size:17px !important; line-height:1; }
.map-shell > .sp-seasons .ss-tile .ss-name { font-size:10.5px !important; line-height:1.2; white-space:nowrap; }
.map-shell > .sp-seasons .ss-tile .ss-score { min-width:26px; height:18px !important; font-size:11px !important; padding:0 6px !important; }

.map-shell > .sp-seasons.is-collapsed { left:10px !important; right:auto !important; padding:0 !important; max-height:none !important; background:transparent !important; box-shadow:none !important; border:0 !important; }
}
/* Keep the planner beside the map on tablets, unfolded foldables and desktops. */
@media (min-width:601px) {
:root { --planner-width:clamp(340px, 43vw, 438px); }
html body .workspace {
    display:grid !important;
    grid-template-columns:var(--planner-width) minmax(0,1fr) !important;
    grid-template-rows:minmax(0,1fr) !important;
    gap:10px !important;
  }
html body .workspace > .sidebar.glass,
  html body .workspace > .map-shell {
    position:relative !important;
    inset:auto !important;
    width:100% !important;
    height:100% !important;
    min-width:0;
    min-height:0 !important;
    grid-row:1;
    transform:none !important;
    visibility:visible !important;
    opacity:1 !important;
  }
html body .workspace > .sidebar.glass { grid-column:1; }
html body .workspace > .map-shell { grid-column:2; }
html body .rv-dock { left:20px; top:15px; }
html body .rv-side { display:none !important; }
html body .rv-dock :is(.home-tabs,.account-entry) { display:flex !important; }
}
/* Phones show both areas together, with an independently scrolling planner below. */
@media (max-width:600px) {
html body .workspace {
    display:grid !important;
    grid-template-columns:minmax(0,1fr) !important;
    grid-template-rows:42% minmax(0,1fr) !important;
    gap:0 !important;
  }
html body .workspace > .map-shell { grid-area:1 / 1; display:block !important; }
html body .workspace > .sidebar.glass { grid-area:2 / 1; }
}
/* The in-app signature spells the name; installed app icons retain the original R. */
.sp-brand .rv-brand-wordmark { display:block; width:224px; max-width:100%; height:auto; }
.sp-brand { min-width:0; margin-bottom:0; }
.sp-brand-caption { display:none !important; }
:root[data-theme="dark"] .rv-brand-wordmark { filter:brightness(1.6); }
/* Warm ivory and evergreen form one continuous brand surface. */
:root,:root[data-theme="light"] {
  --bg:#fff9ed; --card:#fffdf6; --card-2:#f8f0df;
  --glass-strong:#fff9ed; --lg-panel:#fff9ed; --lg-band:#fff9ed;
  --lg-card:rgba(255,253,246,.8); --lg-edge:rgba(160,137,91,.16);
  --fill:rgba(119,103,67,.07); --sep:rgba(119,103,67,.15);
  --label:#30483d; --label-2:#777966; --tint:#38594b;
  --tint-soft:rgba(56,89,75,.09);
}
html body { background:var(--bg) !important; }
html body .workspace > .sidebar.glass { background:var(--bg) !important; }
.sidebar .rv-band { background:var(--bg) !important; }
.sp-head { padding:5px 0 9px; }
.sp-brand .rv-brand-wordmark { width:212px; height:auto; }
/* Start with a destination, while keeping origin and ending point separate. */
.destination-entry { position:relative; }
.destination-entry > .sp-label { margin-bottom:10px; }
#destinationSearchForm.destination-search { display:flex !important; position:relative; gap:8px; margin:0; padding:0; width:100%; }
#destinationSearchInput { flex:1; width:0; min-width:0; min-height:44px; padding:0 12px; border:1px solid var(--sep); border-radius:13px; background:var(--card); color:var(--label); font:inherit; font-size:13px; }
#destinationSearchForm > button { width:42px; flex:none; border:0; border-radius:13px; background:var(--tint); color:var(--on-tint); font-size:21px; cursor:pointer; }
#destinationSearchResults { position:absolute; top:calc(100% + 6px); left:0; right:0; z-index:1100; max-height:260px; overflow:auto; background:var(--card); border:1px solid var(--sep); border-radius:14px; box-shadow:0 8px 24px #0002; }
#destinationSearchResults[hidden] { display:none; }
#destinationSearchResults > button { display:block; width:100%; padding:11px 12px; border:0; border-bottom:1px solid var(--sep); background:transparent; color:var(--label); text-align:left; cursor:pointer; }
#destinationSearchResults > button small { display:block; margin-top:4px; color:var(--label-2); }
.destination-selection { font-size:11px; line-height:1.5; color:var(--label-2); margin:10px 0 0; }
/* Each date includes its time on the same line, inside the same field. */
html body #dateControl .date-row { display:grid !important; grid-template-columns:minmax(0,1fr) !important; gap:6px; }
html body #dateControl .date-box { grid-template-columns:24px minmax(0,1fr) 24px 86px !important; grid-template-rows:46px !important; }
html body #dateControl .date-time { grid-column:4; grid-row:1; height:34px; padding:0 6px 0 10px; border-top:0; border-left:1px solid var(--sep); display:flex; flex-direction:column; align-items:flex-start; justify-content:center; gap:1px; }
html body #dateControl .date-time > span { font-size:9px; line-height:12px; }
html body #dateControl .date-time input { width:65px; min-height:20px; height:20px; text-align:left; font-size:13px; }
/* Forecast stays in the planner and never covers the map. */
html body #seasonToggle { display:none !important; }
html body #startPage > #spSeasons { position:static !important; inset:auto !important; width:100% !important; max-width:100%; max-height:none !important; transform:none !important; translate:none !important; overflow:visible; margin:0; }
html body #spSeasons.is-collapsed { padding:0 !important; background:transparent !important; border:0 !important; box-shadow:none !important; }
#startPage #spSeasons .ss-pill { width:100%; justify-content:flex-start; min-height:40px; padding:8px 12px; border:1px solid var(--sep); border-radius:14px; background:var(--fill); color:var(--tint); }
#startPage #spSeasons .season-card-head { display:flex; align-items:center; gap:8px; margin-bottom:10px; }
#startPage #spSeasons .season-drag-handle { flex:1; padding:0; background:none; border:0; color:var(--label); text-align:left; font:600 12px system-ui; cursor:default; }
#startPage #spSeasons .season-reset { display:none; }
#startPage #spSeasons .ss-name { white-space:normal; }
#startPage #spSeasons #intelPanel { max-height:320px; overflow-y:auto; }
@media(max-width:600px) {
#destinationSearchInput { font-size:16px; }
}
/* Country question on the left, autocomplete field on the right. */
.destination-question { display:grid; grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr); align-items:center; gap:12px; }
.destination-question > .sp-label { margin:0; line-height:1.5; }
.destination-question #destinationSearchInput { font-size:13px; padding:0 9px; }
#destinationSearchResults > button[aria-selected="true"],#destinationSearchResults > button:hover { background:var(--tint-soft); }
#destinationSearchResults > p { padding:8px 12px; font-size:12px; color:var(--label-2); }
@media(max-width:600px) {
.destination-question #destinationSearchInput { font-size:16px; }
}
/* A single compact row for both dates and their times. */
html body #dateControl .date-row { grid-template-columns:repeat(2,minmax(0,1fr)) !important; gap:6px; }
html body #dateControl .date-box { grid-template-columns:minmax(0,1fr) 50px !important; grid-template-rows:40px !important; padding:2px 6px !important; border-radius:13px !important; }
html body #dateControl .date-arrow { display:none; }
html body #dateControl .date-core { grid-column:1; grid-row:1; height:38px; }
html body #dateControl .date-display { font-size:11px; letter-spacing:-.3px; }
html body #dateControl .date-time { grid-column:2; grid-row:1; height:32px; padding:0 0 0 5px; gap:0; }
html body #dateControl .date-time > span { font-size:8px; line-height:11px; }
html body #dateControl .date-time input { width:44px; font-size:12px; line-height:18px; min-height:18px; height:18px; }
#dateControl .field-head { margin-bottom:5px; }
.sp-when > .sp-label { margin-bottom:6px; }
/* Liquid glass buttons: translucent color, a bright rim and soft depth. */
:root { --button-glass:rgba(255,255,255,.46); --button-rim:rgba(255,255,255,.8); --button-shadow:0 3px 9px rgba(66,65,41,.07),inset 0 1px 0 rgba(255,255,255,.8),inset 0 -1px 0 rgba(100,94,66,.05); }
:root[data-theme="dark"] { --button-glass:rgba(255,255,255,.08); --button-rim:rgba(255,255,255,.17); --button-shadow:0 3px 12px #0003,inset 0 1px 0 #ffffff21; }
html body :is(.destination-countries button,.destination-cities button,.sidebar .secondary,.sidebar .mini-btn,.sidebar .chip-row button,.sidebar .primary,#destinationSearchForm > button,.rt-loop,.rt-swap) {
  background:var(--button-glass) !important;
  border:1px solid var(--button-rim) !important;
  box-shadow:var(--button-shadow) !important;
  -webkit-backdrop-filter:blur(18px) saturate(160%);
  backdrop-filter:blur(18px) saturate(160%);
  color:var(--tint) !important;
  transition:background .18s,box-shadow .18s,transform .18s;
}
html body :is(.sidebar .primary,#destinationSearchForm > button,.destination-countries button[aria-pressed="true"],.sidebar .chip-row button[aria-pressed="true"]) {
  background:color-mix(in srgb,var(--tint) 17%,var(--button-glass)) !important;
  border-color:color-mix(in srgb,var(--tint) 14%,var(--button-rim)) !important;
}
@media(hover:hover) {
html body :is(.destination-countries button,.sidebar .secondary,.sidebar .primary,.sidebar .chip-row button,#destinationSearchForm > button):hover { background:color-mix(in srgb,var(--tint) 12%,var(--button-glass)) !important; box-shadow:0 5px 14px #38594b18,inset 0 1px 0 var(--button-rim) !important; }
}
html body :is(.destination-countries button,.sidebar .secondary,.sidebar .primary,.sidebar .chip-row button,#destinationSearchForm > button):active { transform:scale(.98); }
@media(prefers-reduced-transparency:reduce) {
html body :is(.destination-countries button,.sidebar .secondary,.sidebar .mini-btn,.sidebar .chip-row button,.sidebar .primary,#destinationSearchForm > button,.rt-loop,.rt-swap) { background:var(--card) !important; -webkit-backdrop-filter:none; backdrop-filter:none; }
}
:root[data-reduced-transparency] body :is(.destination-countries button,.sidebar .secondary,.sidebar .mini-btn,.sidebar .chip-row button,.sidebar .primary,#destinationSearchForm > button,.rt-loop,.rt-swap) { background:var(--card) !important; -webkit-backdrop-filter:none; backdrop-filter:none; }
/* Desktop forecast floats lightly over the map; phones keep the planner version. */
@media(min-width:601px) {
:root { --forecast-glass:rgba(255,249,237,.32); --forecast-tile:rgba(255,255,255,.2); }
:root[data-theme="dark"] { --forecast-glass:rgba(25,31,28,.36); --forecast-tile:rgba(255,255,255,.05); }
html body .map-shell > #spSeasons {
    position:absolute !important; top:auto !important; left:auto !important;
    right:16px !important; bottom:30px !important; width:min(310px,calc(100% - 32px)) !important;
    max-height:42% !important; overflow-y:auto !important; padding:12px !important;
    background:var(--forecast-glass) !important;
    border:1px solid rgba(255,255,255,.28) !important;
    box-shadow:0 4px 16px #0000000c,inset 0 1px #ffffff33 !important;
    -webkit-backdrop-filter:blur(10px) saturate(125%) !important;
    backdrop-filter:blur(10px) saturate(125%) !important;
  }
html body .map-shell > #spSeasons .ss-tile { background:var(--forecast-tile) !important; box-shadow:none !important; border-color:rgba(255,255,255,.18) !important; min-height:66px !important; }
html body .map-shell > #spSeasons #intelPanel { background:transparent !important; }
html body .map-shell > #spSeasons.is-collapsed { width:auto !important; max-width:calc(100% - 32px); max-height:none !important; padding:0 !important; border:0 !important; background:transparent !important; box-shadow:none !important; }
html body .map-shell > #spSeasons .ss-pill { background:var(--forecast-glass) !important; border:1px solid #ffffff45 !important; box-shadow:0 3px 12px #0000000a !important; }
}
@media(prefers-reduced-transparency:reduce) {
html body .map-shell > #spSeasons,html body .map-shell > #spSeasons .ss-pill { background:var(--card) !important; -webkit-backdrop-filter:none !important; backdrop-filter:none !important; }
}
:root[data-reduced-transparency] body .map-shell > #spSeasons,:root[data-reduced-transparency] body .map-shell > #spSeasons .ss-pill { background:var(--card) !important; -webkit-backdrop-filter:none !important; backdrop-filter:none !important; }
/* Type choices wrap naturally rather than scrolling. */
html body .sp-route .rt-type { min-width:0; overflow:visible !important; }
html body .sp-route .rt-type .chip-row { display:flex !important; flex-wrap:wrap !important; overflow:visible !important; max-width:100%; }
html body .sp-route .rt-type .chip-row button { flex:0 0 auto !important; white-space:nowrap !important; }
/* Date and time share one typographic treatment. */
html body #dateControl :is(.date-display,.date-time input) { font:600 12px/1.3 -apple-system,BlinkMacSystemFont,system-ui,sans-serif !important; letter-spacing:-.2px !important; font-variant-numeric:tabular-nums; color:var(--label) !important; }
html body #dateControl .date-time > span { display:none !important; }
html body #dateControl .date-time { justify-content:center; }
.destination-question { grid-template-columns:minmax(0,.65fr) minmax(0,1.35fr); }
.destination-selection { margin-top:8px; }
/* Forecast keeps just the content and collapse control. */
html body #spSeasons .season-card-head { display:flex; justify-content:flex-end; min-height:0; height:20px; margin:0 0 2px; }
html body #spSeasons :is(.season-reset,.season-grip,.season-drag-handle,.season-title) { display:none !important; }
html body #spSeasons .season-collapse { width:24px; height:20px; min-height:0; padding:0; }
/* A smaller brief, with one place name and a question that fits two lines. */
html body .destination-question { grid-template-columns:minmax(125px,.95fr) minmax(0,1.05fr); gap:10px; }
html body .destination-question > .sp-label { font-size:12px; font-weight:600; line-height:17px; display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:2; overflow:hidden; margin:0; }
html body .destination-selection[hidden] { display:none !important; }
html body #startPage { gap:6px !important; padding-top:2px !important; }
html body #startPage .sp-card { padding:9px 11px !important; border-radius:18px !important; }
html body #startPage .sp-head { padding:0 0 4px; }
html body .sp-brand .rv-brand-wordmark { width:192px; }
html body #startPage .rt-row { padding-top:1px !important; padding-bottom:1px !important; }
html body #startPage .rt-row.rt-wish { padding-top:3px !important; padding-bottom:3px !important; }
html body #startPage .sp-when > .sp-label { margin-bottom:3px; }
html body #startPage .rt-type { margin-top:6px !important; padding-top:6px !important; }
html body #dateControl .field-head > label { display:none; }
html body #dateControl .field-head { margin-bottom:3px; }
/* Travel occupies the former large link row; importing stays a small text action. */
html body #startPage .rt-wish-tools { display:flex; flex-wrap:wrap; align-items:center; gap:5px 8px; margin-top:5px !important; }
html body #startPage .rt-wish-tools #inspirationOpen { display:inline-flex !important; flex:0 0 auto; width:auto !important; min-height:28px; padding:3px 0 !important; margin:0; gap:4px; border:0 !important; background:transparent !important; box-shadow:none !important; font-size:10px; font-weight:500 !important; border-radius:8px !important; }
html body #inspirationOpen > span:first-child { font-size:12px; }
/* Layered light makes the glass visible against a quiet ivory canvas. */
:root { --button-glass:rgba(255,255,255,.35); --button-rim:rgba(255,255,255,.85); --button-shadow:inset 0 1px 1px #ffffffef,inset 0 -1px 1px #78968530,0 2px 5px #38594b14,0 6px 15px #38594b0a; }
html body .workspace > .sidebar.glass {
  background:radial-gradient(ellipse at 4% 28%,#b4cab438,transparent 46%),radial-gradient(ellipse at 98% 62%,#e9c89138,transparent 49%),var(--bg) !important;
}
html body #startPage > .sp-card {
  background:linear-gradient(145deg,#ffffff60,#ffffff20) !important;
  border:1px solid #ffffffa6 !important;
  box-shadow:inset 0 1px 0 #fffffff0,inset 0 -1px 0 #6b85651a,0 4px 14px #52674109 !important;
  -webkit-backdrop-filter:blur(22px) saturate(150%) !important;
  backdrop-filter:blur(22px) saturate(150%) !important;
}
html body :is(.rt-travel .chip-row button,.sidebar .primary,.sidebar .chip-row button,.sidebar .secondary,#destinationSearchForm > button) {
  background:linear-gradient(160deg,#ffffff99,#ffffff35 48%,#ffffff5e) !important;
  box-shadow:var(--button-shadow) !important;
  border:1px solid var(--button-rim) !important;
  -webkit-backdrop-filter:blur(18px) saturate(180%);
  backdrop-filter:blur(18px) saturate(180%);
  color:var(--tint) !important;
}
html body :is(.rt-travel .chip-row button[aria-pressed="true"],.sidebar .chip-row button[aria-pressed="true"],.sidebar .primary,#destinationSearchForm > button) {
  background:linear-gradient(155deg,#a4c6af80,#638c7440 52%,#b9d5b969) !important;
  border-color:#ffffffb3 !important;
}
:root[data-theme="dark"] body .workspace > .sidebar.glass { background:radial-gradient(ellipse at 5% 25%,#63877221,transparent 50%),var(--bg) !important; }
:root[data-theme="dark"] body #startPage > .sp-card { background:linear-gradient(145deg,#ffffff13,#ffffff05) !important; border-color:#ffffff20 !important; box-shadow:inset 0 1px 0 #ffffff21,0 4px 16px #0002 !important; }
:root[data-theme="dark"] body :is(.rt-travel .chip-row button,.sidebar .primary,.sidebar .chip-row button,.sidebar .secondary,#destinationSearchForm > button) { background:linear-gradient(155deg,#ffffff1a,#ffffff08) !important; border-color:#ffffff26 !important; box-shadow:inset 0 1px 0 #ffffff33,0 3px 10px #0003 !important; }
:root[data-theme="dark"] body :is(.sidebar .primary,.sidebar .chip-row button[aria-pressed="true"],#destinationSearchForm > button) { background:linear-gradient(155deg,#87b29850,#54786225) !important; }
@media(prefers-reduced-transparency:reduce) {
html body #startPage > .sp-card,html body :is(.rt-travel .chip-row button,.sidebar .primary,.sidebar .chip-row button,.sidebar .secondary,#destinationSearchForm > button) { background:var(--card) !important; -webkit-backdrop-filter:none !important; backdrop-filter:none !important; }
}
:root[data-reduced-transparency] body #startPage > .sp-card,:root[data-reduced-transparency] body :is(.rt-travel .chip-row button,.sidebar .primary,.sidebar .chip-row button,.sidebar .secondary,#destinationSearchForm > button) { background:var(--card) !important; -webkit-backdrop-filter:none !important; backdrop-filter:none !important; }
/* Keep the entire canvas the same ivory as the transparent wordmark. */
html body .workspace > .sidebar.glass,
:root[data-theme="dark"] body .workspace > .sidebar.glass { background:var(--bg) !important; }
html body #startPage > .sp-card,
:root[data-theme="dark"] body #startPage > .sp-card { background:var(--bg) !important; }
html body #startPage > .sp-head { background:transparent !important; }
/* Move the original titled Type / Travel group intact into the link area. */
html body #startPage .rt-wish-tools > .rt-type {
  flex:0 0 100%; width:100%; margin:0 !important; padding:8px 10px !important;
  border:1px solid var(--sep) !important; border-radius:13px;
  display:grid !important; grid-template-columns:auto minmax(0,1fr); gap:7px 10px;
  background:var(--fill);
}
html body #startPage .rt-wish-tools .rt-type .sp-label { margin:0; align-self:center; font-size:11px !important; }
html body #startPage .rt-wish-tools .rt-type .sp-label small { display:block; font-size:9px; margin-top:2px; }
html body #startPage .rt-wish-tools .rt-type .chip-row { display:flex !important; flex-wrap:wrap !important; gap:5px !important; padding:0; overflow:visible !important; }
html body #startPage .rt-wish-tools .rt-type .chip-row button { min-height:29px !important; height:29px !important; padding:0 9px !important; font-size:11px !important; }
/* More room for the geographic hint, with the question deliberately on two lines. */
html body .destination-question { grid-template-columns:minmax(112px,.8fr) minmax(0,1.2fr); gap:8px; }
html body .destination-question > .sp-label { display:block; font-size:11px; line-height:17px; -webkit-line-clamp:unset; }
html body #destinationSearchForm { gap:0; }
html body #destinationSearchInput { padding-right:28px !important; }
html body #destinationSearchForm > button {
  position:absolute; right:3px; top:5px; width:26px; height:34px; min-height:0;
  border-radius:10px; background:rgba(255,255,255,.18) !important;
  border:1px solid rgba(255,255,255,.6) !important;
  -webkit-backdrop-filter:blur(12px) saturate(160%) !important;
  backdrop-filter:blur(12px) saturate(160%) !important;
  box-shadow:inset 0 1px #ffffffaa,0 1px 4px #38594b12 !important;
  font-size:16px;
}
#budgetTotal[hidden] { display:none !important; }
.destination-question #destinationSearchInput::placeholder { font-size:11px; letter-spacing:-.25px; }
/* Preserve the original route flow with slightly closer spacing. */
html body #startPage .sp-route .rt-head { padding-bottom:2px !important; }
html body #startPage .sp-route .rt-list { gap:0; }
html body #startPage .sp-route .rt-row { padding-top:2px !important; padding-bottom:2px !important; }
html body #startPage .sp-route .rt-row.rt-wish { padding-top:3px !important; padding-bottom:3px !important; }
html body #startPage .sp-route .rt-wish-tools { margin-top:3px !important; }
html body #startPage .sp-route .rt-wish-tools > .rt-type { padding:6px 8px !important; gap:5px 8px; }
/* A single uninterrupted place field: type, then choose a suggestion or press Enter. */
html body #destinationSearchForm.destination-search { min-width:0; }
html body #destinationSearchInput {
  width:100% !important; min-width:0; padding:0 10px !important;
  min-height:40px; border-radius:12px; text-overflow:ellipsis;
  background:var(--fill) !important; border:1px solid var(--sep);
  transition:border-color .15s,box-shadow .15s;
}
html body #destinationSearchInput:focus { border-color:var(--tint); box-shadow:0 0 0 2px var(--tint-soft) !important; }
html body #destinationSearchInput::-webkit-search-cancel-button,
html body #destinationSearchInput::-webkit-search-decoration { display:none; -webkit-appearance:none; }
html body #destinationSearchInput::-ms-clear { display:none; }
html body #destinationSearchResults { max-height:240px; border-radius:13px; }
html body #destinationSearchResults > button { padding:9px 11px; }
html body #destinationSearchResults > button strong { font-weight:600; }
html body #destinationSearchResults > button small { margin-top:2px; color:var(--label-2); }
/* Compact forecast with a quiet drag area and a small close control. */
html body #spSeasons .season-card-head { display:flex !important; align-items:center; height:16px !important; margin:0 0 3px !important; gap:4px; }
html body #spSeasons .season-drag-handle { display:block !important; flex:1; align-self:stretch; min-height:16px; padding:0; border:0; background:transparent; cursor:grab; touch-action:none; }
html body #spSeasons.is-dragging .season-drag-handle { cursor:grabbing; }
html body #spSeasons .season-collapse { position:relative; flex:none; width:16px !important; height:16px !important; min-height:0 !important; padding:0 !important; border:0; background:transparent; color:var(--label-2); }
html body #spSeasons .season-collapse::after { content:''; position:absolute; inset:-5px; }
@media(min-width:601px) {
html body .map-shell > #spSeasons { width:min(264px,calc(100% - 24px)) !important; padding:7px !important; border-radius:18px !important; max-height:36% !important; }
html body .map-shell > #spSeasons .ss-grid { display:grid !important; grid-template-columns:repeat(3,minmax(0,1fr)) !important; gap:4px !important; }
html body .map-shell > #spSeasons .ss-tile { min-height:58px !important; padding:4px !important; gap:1px !important; border-radius:12px !important; }
html body .map-shell > #spSeasons .ss-tile .ss-ico { font-size:16px !important; line-height:1 !important; }
html body .map-shell > #spSeasons .ss-tile .ss-name { min-height:0 !important; height:auto !important; }
html body .map-shell > #spSeasons .ss-score { margin-top:0 !important; padding:0 4px !important; }

}
@layer rovego-typography {
body #spSeasons .season-collapse { font-size:12px !important; line-height:16px !important; }
}
/* Currency has enough room for its code and native dropdown arrow. */
html body .budget-form { grid-template-columns:60px minmax(0,1fr) 44px; gap:6px; }
html body .budget-form > .budget-times { display:none; }
html body .budget-form > label { min-width:0; }
html body .daily-budget-input { display:flex; min-width:0; width:100%; }
html body #budgetCurrency { flex:0 0 72px; width:72px; min-width:72px; padding:0 6px; }
html body #dailyBudget { flex:1 1 0; min-width:0; width:0; padding-left:4px; padding-right:4px; }
/* Both endpoint fields use the same full width; round-trip sits below the end field. */
html body #routeList > :is([data-role="from"],[data-role="to"]) { grid-template-columns:24px minmax(0,1fr); gap:4px 8px; width:100%; min-width:0; padding-left:10px !important; padding-right:6px !important; }
html body #routeList > :is([data-role="from"],[data-role="to"]) .rt-dot { grid-column:1; grid-row:1; }
html body #routeList > :is([data-role="from"],[data-role="to"]) .rt-field { grid-column:2; grid-row:1; width:100%; min-width:0; }
html body #routeList :is(#fromInput,#toInput) { width:100% !important; min-width:0; box-sizing:border-box; }
html body #roundTripBtn { grid-column:2; grid-row:2; justify-self:start; }
html body :is(#spOutlookHost,#spOutlook,.ol-weather) { display:none !important; }
.flight-manual-times { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; width:100%; margin-top:7px; }
.flight-manual-times :is(input,select) { width:100%; min-width:0; height:32px; padding:4px 8px; color:var(--label); background:var(--fill); border:1px solid var(--sep); border-radius:9px; }
.flight-manual-times > button { align-self:end; min-height:32px; text-align:left; }
.flight-timing-review { width:min(440px,calc(100vw - 32px)); padding:22px; border:1px solid var(--glass-edge); border-radius:22px; background:var(--bg); color:var(--label); box-shadow:0 18px 60px #0003; }
.flight-timing-review::backdrop { background:#10271d55; -webkit-backdrop-filter:blur(5px); backdrop-filter:blur(5px); }
.flight-timing-review h3 { margin:0 0 12px; }
.flight-timing-review p { color:var(--label-2); }
.flight-timing-review dl { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:9px 16px; padding:12px 0; border-block:1px solid var(--sep); }
.flight-timing-review dd { margin:0; font-variant-numeric:tabular-nums; font-weight:600; }
.flight-review-actions { display:flex; flex-wrap:wrap; gap:8px; margin-top:16px; }
.flight-review-actions button { flex:1; padding:9px 12px; border:1px solid var(--sep); border-radius:12px; background:var(--fill); color:var(--tint); cursor:pointer; }
.flight-review-actions button[value="optimize"] { background:var(--tint-soft); }
@media(min-width:601px) {
:root { --planner-width:clamp(330px,30vw,390px); }
}
html body #saveState,html body .day-current { display:none !important; }
.manual-flight-error { color:var(--red); }
#manualFlightEntry .flight-manual-times label { display:flex; flex-direction:column; gap:5px; }
/* Compact flight times; arrival-day control stays beside Arrives. */
html body .flight-manual-times { display:flex; flex-wrap:wrap; align-items:flex-end; gap:8px 12px; width:auto; }
html body #manualFlightEntry .flight-manual-times > label { flex:0 0 auto; width:auto; }
html body .flight-manual-times input { width:76px; min-width:76px; max-width:76px; padding:4px 7px; font-variant-numeric:tabular-nums; }
html body .flight-arrival-label { display:flex; align-items:center; gap:5px; min-height:26px; white-space:nowrap; }
html body .flight-manual-times .flight-day-offset { width:auto; min-width:0; max-width:90px; height:26px; padding:2px 4px; border:0; background:transparent; }
html body .flight-input-error { display:block; flex-basis:100%; color:var(--red); white-space:normal; }
html body #manualFlightEntry .manual-flight-error { color:var(--red); position:relative; background:transparent; }
html body .flight-review-actions [hidden] { display:none !important; }
html body .flight-airport-entry { display:flex; flex-wrap:wrap; gap:12px; margin-bottom:12px; }
html body .flight-airport-entry label { display:flex; flex-direction:column; gap:5px; }
html body .flight-airport-entry input { width:100px; height:32px; border:1px solid var(--sep); border-radius:9px; background:var(--fill); color:var(--label); padding:4px 8px; font:inherit; text-transform:uppercase; }
/* Small transfer waypoints share the meal-row shape, with a lavender accent. */
html body .transit-waypoints { display:flex; flex-direction:column; gap:3px; margin:7px 0; min-width:0; }
html body .it-item.is-waypoint { display:flex; flex-wrap:nowrap; align-items:center; gap:6px; min-height:29px; padding:5px 8px; margin:0; border:1px solid #8c82b133; border-radius:9px; color:#514868; background:#b7a8df20; box-shadow:none; }
html body .is-waypoint .waypoint-name { flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; padding:0; text-align:left; color:inherit; }
html body .is-waypoint .waypoint-code { flex:none; color:#76688c; }
html body .is-waypoint time { flex:none; margin-left:auto; font-weight:500; font-variant-numeric:tabular-nums; }
html body .transit-buffer { display:flex; align-items:center; justify-content:center; min-width:0; gap:5px; margin:1px 0; }
html body .transit-buffer::before,html body .transit-buffer::after { content:''; flex:1; min-width:6px; border-top:1px dashed #9485b066; }
html body .transit-buffer-chip { display:inline-flex; flex-wrap:nowrap; align-items:center; gap:4px; padding:2px 6px; min-height:23px; margin:0; border:1px solid #9485b03d; border-radius:7px; background:var(--bg); color:#70647f; white-space:nowrap; }
html body .transit-buffer-chip input { width:33px; min-width:33px; max-width:33px; min-height:20px; height:20px; padding:0; border:0; box-shadow:none; border-radius:3px; background:transparent; text-align:center; color:inherit; -moz-appearance:textfield; }
html body .transit-buffer-chip input::-webkit-inner-spin-button,html body .transit-buffer-chip input::-webkit-outer-spin-button { -webkit-appearance:none; margin:0; }
html body .transit-buffer-chip select { width:auto; max-width:80px; height:22px; min-height:22px; padding:0 2px; border:0; background:transparent; color:inherit; }
html body .transit-ride { display:flex; align-items:center; gap:6px; min-height:24px; padding:2px 7px; color:#5f5379; }
html body .transit-ride > span:first-of-type { flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
/* One compact airport/flight card; every lead time stays editable in its row. */
html body .airport-plan-card { margin:7px 0; padding:0 9px; border:1px solid #9587b344; border-radius:11px; background:#b7a8df1f; color:#544768; min-width:0; overflow:hidden; }
html body .airport-plan-card > header { display:flex; align-items:center; gap:8px; padding:7px 0; font-weight:600; }
html body .airport-plan-card > header > span { margin-left:auto; }
html body .airport-plan-row { display:flex; flex-wrap:nowrap; align-items:center; gap:5px; min-height:31px; padding:4px 0; margin:0; border-top:1px dashed #9587b355; }
html body .airport-plan-row > span:first-child { flex:1; min-width:0; }
html body .airport-plan-row input { flex:none; width:42px; min-width:42px; max-width:42px; height:25px; min-height:25px; padding:2px 4px; border:1px solid #9587b344; border-radius:6px; color:inherit; background:var(--bg); text-align:center; font:inherit; font-variant-numeric:tabular-nums; -moz-appearance:textfield; }
html body .airport-plan-row input::-webkit-inner-spin-button,html body .airport-plan-row input::-webkit-outer-spin-button { -webkit-appearance:none; margin:0; }
html body .airport-plan-row select { flex:none; width:auto; max-width:78px; height:25px; min-height:25px; padding:1px 3px; border:0; color:inherit; background:transparent; font:inherit; }
html body .airport-flight-entry,html body .airport-flight-info { display:flex; align-items:center; gap:7px; flex-wrap:wrap; padding:7px 0; border-top:1px dashed #9587b355; }
html body .airport-flight-entry input { flex:1 1 95px; min-width:80px; width:95px; height:29px; min-height:29px; padding:4px 6px; border:1px solid #9587b344; border-radius:7px; background:var(--bg); color:inherit; font:inherit; }
html body .airport-flight-info strong { flex:none; }
html body .airport-flight-info > span { color:#77688a; }
html body .airport-flight-info > button:last-child { margin-left:auto; }
html body .airport-plan-card button.ed-link { color:#66507f; padding:2px 0; min-height:22px; }
html body .flight-timing-review { max-height:calc(100dvh - 24px); overflow:auto; }
html body .flight-timing-review h3 { padding-right:20px; }
html body .flight-dialog-close { position:absolute; top:9px; right:10px; display:grid; place-items:center; width:27px; height:27px; min-height:27px; padding:0; border:0; border-radius:50%; color:var(--label-2); background:var(--fill); cursor:pointer; z-index:2; }
html body .flight-estimate-note:empty { display:none; }
html body [data-flight-ignore] { color:#c62732 !important; font-weight:750 !important; background:#d9344210 !important; border:1px solid #d9344245 !important; border-radius:6px; padding:2px 6px !important; }
html body .flight-departure-warning { color:#c62732 !important; font-weight:750 !important; }
html body .flight-departure-warning { padding:6px 8px; border-radius:7px; background:#d9344210; overflow-wrap:anywhere; }
html body .airport-activity select { max-width:110px; }
html body .airport-plan-content { padding-bottom:3px; }
html body .airport-plan-content > .airport-plan-row:first-child { border-top:1px dashed #9587b355; }
html body #startOverBtn { display:none !important; }
html body .flight-top-estimates { display:flex; flex-direction:column; gap:0; margin:10px 0; }
html body .flight-top-estimates label { display:flex; flex-wrap:nowrap; align-items:center; gap:7px; margin:0; padding:8px 0; border-bottom:1px dashed var(--sep); }
html body .flight-top-estimates label > span:first-child { flex:1; min-width:0; }
html body .flight-top-estimates input { flex:none; width:48px; min-width:48px; max-width:48px; height:29px; padding:3px 5px; border:1px solid var(--sep); border-radius:7px; background:var(--fill); color:var(--label); text-align:center; font:inherit; font-variant-numeric:tabular-nums; -moz-appearance:textfield; }
html body .flight-top-estimates input::-webkit-inner-spin-button,html body .flight-top-estimates input::-webkit-outer-spin-button { -webkit-appearance:none; margin:0; }
/* Overview owns trip-wide settings; home and overview share transport preferences. */
html body.day-detail #transportPrefs { display:none !important; } /* trip settings: the same in every day as in Overview */
html body #startPage [data-transport-preferences] { margin:8px 0; padding:9px 11px; border:1px solid var(--sep); border-radius:12px; background:var(--fill); }
html body [data-transport-preferences] .hint { display:none; }
html body #transportPrefs .pref-row,html body [data-transport-preferences] .pref-row { min-height:26px; }
html body .planner-bottom .price-panel { display:none !important; }
html body .planner-bottom #optimizationActions button.pp-optimize::before { content:'▦'; }
html body .flight-arrival-edit { display:flex; flex-direction:column; gap:8px; margin:10px 0; padding-top:9px; border-top:1px dashed var(--sep); }
html body .flight-arrival-edit label { display:flex; align-items:center; flex-wrap:wrap; gap:6px; }
html body .flight-arrival-edit :is(input,select) { width:auto; max-width:180px; height:30px; min-height:30px; border:1px solid var(--sep); border-radius:7px; background:var(--fill); color:var(--label); padding:3px 6px; font:inherit; }
html body .flight-arrival-edit input { width:50px; }
html body .flight-arrival-edit output { font-variant-numeric:tabular-nums; }
/* Hotel booking links share one full-width row below the name and rating. */
html body .stay-pick li { grid-template-columns:minmax(0,1fr) 70px !important; column-gap:8px; row-gap:3px; }
html body .stay-pick .hp-main { display:contents; }
html body .stay-pick .hp-main > :is(strong,span):not(.hp-links) { grid-column:1; }
html body .stay-pick .hp-side { grid-column:2; grid-row:1 / span 2; }
html body .stay-pick .hp-links { grid-column:1 / -1; display:flex !important; flex-wrap:nowrap !important; align-items:center; gap:8px; margin-top:3px; min-width:0; }
html body .stay-pick .hp-links a { display:inline-block; min-width:0; min-height:22px; white-space:nowrap !important; overflow:hidden; text-overflow:ellipsis; }
/* Overview keeps its original footer; only a day view uses the return-to-overview action. */
html body:not(.day-detail) .planner-bottom .price-panel { display:block !important; }
html body:not(.day-detail) .planner-bottom #optimizationActions button.pp-optimize::before { content:'✦'; }
html body.day-detail .planner-bottom .price-panel { display:none !important; }
html body.day-detail .planner-bottom #optimizationActions button.pp-optimize::before { content:'▦'; }
/* Flight facts and actions share one row; transfer controls stay inside the card. */
html body .airport-plan-content > .airport-plan-row { min-height:24px; padding:2px 0; }
html body .airport-plan-content > .airport-plan-row:first-child { padding-right:17px; border-top:0; }
html body .airport-plan-content > .airport-plan-row :is(input,select) { height:21px; min-height:21px; padding-block:0; }
html body .airport-flight-info { flex-wrap:nowrap; gap:6px; min-height:37px; padding:7px 0; }
html body .airport-flight-info .flight-number { flex:none; white-space:nowrap; }
html body .airport-flight-info > button { flex:none; margin-left:0 !important; white-space:nowrap; }
html body .cx-row.cx-dep { flex-wrap:nowrap; min-width:0; }
html body .cx-dep .cx-label { flex:1; min-width:0; }
html body .cx-dep .cx-add { flex:none; margin:0 0 0 auto; padding:1px 5px; white-space:nowrap; }
/* Flight times belong to the long vertical timeline, outside the purple card. */
html body .cx.is-flight { --flight-indent:48px; padding-left:var(--flight-indent); }
html body .cx.is-flight .airport-plan-card { overflow:visible; }
html body .flight-axis-event { position:relative; }
html body .cx.is-flight .cx-dep { flex-wrap:wrap; gap:4px; }
html body .flight-availability-label { display:inline-flex; align-items:center; gap:4px; margin-left:4px; white-space:nowrap; }
html body .flight-availability-label input { width:48px; min-width:48px; max-width:48px; height:24px; min-height:24px; padding:1px 3px; border:1px solid currentColor; border-radius:6px; background:var(--bg); color:inherit; font:inherit; font-variant-numeric:tabular-nums; }
html body .flight-availability-label.needs-attention { color:#c62732; }
html body.day-detail #timeline .cx.is-flight .flight-waypoint-badge { flex:none; width:22px !important; height:22px !important; margin:0; background:#8470aa; color:white; }
html body .flight-axis-event .airport-flight-info { border-top:1px dashed #9587b355; }
/* ---- Timeline axis: each connector has one dotted line; every time is a pill centred on it ---- */
html body #timeline .cx { --axis-x:46px; margin:0 !important; padding:4px 0 4px 86px !important; }
html body #timeline .cx::before { left:calc(var(--axis-x) - 1px); top:14px; bottom:14px; }
html body #timeline .cx-row { min-height:26px; }
html body #timeline .timeline-axis-pill { position:absolute; left:var(--axis-x); top:0; transform:translate(-50%,-50%); z-index:2; display:inline-flex; align-items:center; justify-content:center; gap:3px; min-width:52px; height:24px; padding:0 7px; box-sizing:border-box; border:1px solid color-mix(in srgb, var(--tint) 38%, transparent); border-radius:999px; background:var(--bg); color:var(--label); font-size:12px; font-weight:650; line-height:1; white-space:nowrap; font-variant-numeric:tabular-nums; }
html body #timeline .timeline-axis-pill[hidden] { display:none; }
html body #timeline .timeline-axis-pill time { font:inherit; color:inherit; }
html body #timeline .timeline-axis-pill small { font-size:9.5px; font-weight:700; color:var(--label-2); letter-spacing:.02em; }
html body #timeline .timeline-axis-pill > span[aria-hidden] { font-size:11px; }
html body #timeline .timeline-axis-pill.axis-start { border-color:var(--tint); }
html body #timeline .timeline-axis-pill.axis-end { background:var(--tint); border-color:var(--tint); color:#fff; }
html body #timeline .timeline-axis-pill.axis-end small { color:#ffffffcc; }
html body #timeline .cx.is-flight .timeline-axis-pill:not(.axis-start):not(.axis-end) { border-color:#9587b399; color:#594771; }
html body #timeline .timeline-axis-pill.is-estimate { border-style:dashed; }
html body #timeline .timeline-axis-pill .cx-time-in,html body #timeline .timeline-axis-pill .flight-computed-start { width:5.3ch !important; height:20px; min-height:0; margin:0; padding:0; border:0; background:transparent; color:inherit; font:inherit !important; text-align:center; box-shadow:none; }
html body #timeline .timeline-axis-pill .cx-time-in:focus { outline:none; }
html body #timeline .timeline-axis-pill:has(.cx-time-in:focus) { box-shadow:0 0 0 3px color-mix(in srgb, var(--tint) 22%, transparent); }
html body #timeline .cx .it-item.is-extra .ex-main > time { display:none; }
html body #timeline .cx .airport-plan-card { margin-top:4px; }
html body #timeline .cx .flight-availability-label { margin-left:0; }
html body #timeline .cx-row.cx-arr .cx-label { color:var(--label); }
:root[data-theme="dark"] html body #timeline .cx.is-flight .timeline-axis-pill:not(.axis-start):not(.axis-end),
:root[data-theme="dark"] body #timeline .cx.is-flight .timeline-axis-pill:not(.axis-start):not(.axis-end) { color:#cbbcf0; }
/* ---- Stops: start → end on their own clock, and activities inside them ---- */
html body #timeline .pc-meta { flex-wrap:wrap !important; gap:6px !important; }
html body #timeline .pc-meta > :first-child { flex:none; }
html body #timeline .pc-window { display:inline-flex; align-items:center; gap:3px; flex:none; font-size:12px; font-weight:600; color:var(--label-2); font-variant-numeric:tabular-nums; white-space:nowrap; }
html body #timeline .pc-window i { font-style:normal; opacity:.6; }

html body #timeline .pc-sub { display:flex; flex-wrap:wrap; gap:4px 8px; margin-top:4px; font-size:12px; }
html body #timeline .nested-stops { margin-top:8px; }
html body #timeline .sub-list { list-style:none; margin:0 0 6px; padding:0 0 0 10px; border-left:2px dotted color-mix(in srgb, var(--tint) 40%, transparent); display:flex; flex-direction:column; gap:3px; }
html body #timeline .nested-stop-row,html body #timeline .nested-free { display:grid; grid-template-columns:auto minmax(0,1fr) auto auto; align-items:center; gap:6px; min-height:28px; }
html body #timeline .nested-free { grid-template-columns:auto 1fr; color:var(--label-2); font-size:12px; font-style:italic; }
html body #timeline .sub-time { display:inline-flex; align-items:center; gap:2px; font-size:11.5px; font-weight:650; color:var(--tint); font-variant-numeric:tabular-nums; white-space:nowrap; }
html body #timeline .sub-time i { font-style:normal; opacity:.55; }
html body #timeline .nested-stop-row [data-substop-name] { min-width:0; height:26px; padding:0 6px; border:1px solid transparent; border-radius:7px; background:transparent; color:var(--label); font:inherit; font-size:13px; font-weight:600; }
html body #timeline .nested-stop-row [data-substop-name]:hover,html body #timeline .nested-stop-row [data-substop-name]:focus { border-color:var(--sep); background:var(--bg); outline:none; }
html body #timeline .sub-min { display:inline-flex; align-items:center; gap:3px; font-size:11.5px; color:var(--label-2); }
html body #timeline .sub-min input { width:44px; height:24px; padding:0 4px; border:1px solid var(--sep); border-radius:7px; background:var(--bg); color:var(--label); font:inherit; text-align:right; }
html body #timeline .sub-min em { font-style:normal; }
html body #timeline .sub-remove { width:22px; height:22px; padding:0; border:0; border-radius:50%; background:transparent; color:var(--label-2); font-size:16px; line-height:1; cursor:pointer; }
html body #timeline .sub-remove:hover { background:color-mix(in srgb, var(--label) 8%, transparent); color:var(--label); }
html body #timeline .sub-add { display:flex; flex-wrap:wrap; align-items:center; gap:6px; }
html body #timeline .sub-chip,html body #timeline .sub-form > summary { display:inline-flex; align-items:center; height:24px; padding:0 9px; border:1px dashed color-mix(in srgb, var(--tint) 55%, transparent); border-radius:999px; background:transparent; color:var(--tint); font-size:12px; font-weight:600; cursor:pointer; list-style:none; white-space:nowrap; }
html body #timeline .sub-form > summary::-webkit-details-marker { display:none; }
html body #timeline .sub-chip:hover,html body #timeline .sub-form > summary:hover { background:color-mix(in srgb, var(--tint) 9%, transparent); }
html body #timeline .sub-form[open] { flex-basis:100%; }
html body #timeline .sub-form[open] > summary { display:none; }
html body #timeline .sub-form form { display:flex; align-items:center; gap:6px; }
html body #timeline .sub-form form > input[name="name"] { flex:1; min-width:0; height:28px; padding:0 8px; border:1px solid var(--sep); border-radius:8px; background:var(--bg); color:var(--label); font:inherit; font-size:13px; }
html body #timeline .sub-form form > button { height:28px; padding:0 12px; border:0; border-radius:999px; background:var(--tint); color:#fff; font-size:12.5px; font-weight:650; cursor:pointer; }
html body #timeline .nested-stops.is-compact { margin:2px 0; padding:4px 0; border-top:1px dashed #9587b355; }
html body #timeline .nested-stops.is-compact .sub-list { border-left-color:#9587b388; }
html body #timeline .nested-stops.is-compact .sub-time { color:#7a64a3; }
/* ---- "Stay near …": tonight is a base, not a visit ---- */
html body #timeline .it-item.is-overnight { box-shadow:inset 3px 0 0 color-mix(in srgb, var(--indigo) 70%, transparent); }
html body #timeline .ov-panel { margin-top:8px; padding:9px 11px; border-radius:12px; background:color-mix(in srgb, var(--indigo) 8%, transparent); }
html body #timeline .ov-base { display:flex; align-items:flex-start; gap:8px; }
html body #timeline .ov-base > span { font-size:15px; line-height:1.2; }
html body #timeline .ov-base strong { display:block; font-size:13.5px; color:var(--label); }
html body #timeline .ov-base small { display:block; margin-top:1px; font-size:11.5px; line-height:1.35; color:var(--label-2); }
html body #timeline .ov-why { margin:6px 0 0; font-size:12px; line-height:1.4; color:var(--label-2); }
html body #timeline .ov-actions { display:flex; flex-wrap:wrap; align-items:center; gap:4px 12px; margin-top:6px; font-size:12px; }
html body #timeline .ov-later { display:inline-flex; align-items:center; height:22px; padding:0 8px; border-radius:999px; background:color-mix(in srgb, var(--indigo) 16%, transparent); color:var(--label); font-weight:600; }
html body #timeline .timeline-axis-pill { gap:2px; padding:0 6px; }
html body #timeline .timeline-axis-pill .cx-time-in,html body #timeline .timeline-axis-pill .flight-computed-start { width:4.7ch !important; }
html body #timeline .timeline-axis-pill small { font-size:9px !important; }
html body #timeline .ov-faster { margin-top:4px !important; color:var(--label-2); }
html body #timeline .nested-stop-row { grid-template-columns:auto minmax(0,1fr) auto; grid-template-areas:"name name x" "time min ."; row-gap:1px; padding:2px 0; }
html body #timeline .nested-stop-row [data-substop-name] { grid-area:name; margin-left:-6px; }
html body #timeline .nested-stop-row .sub-time { grid-area:time; }
html body #timeline .nested-stop-row .sub-min { grid-area:min; justify-self:start; }
html body #timeline .nested-stop-row .sub-remove { grid-area:x; }
html body #timeline .nested-free { grid-template-columns:auto 1fr; grid-template-areas:none; }
/* ---- Flight inside the card: LAX / ✈ / LAS, one row each ---- */
html body #timeline .flight-route { display:flex; flex-direction:column; margin-top:2px; border-top:1px dashed #9587b355; }
html body #timeline .flight-ap { display:flex; align-items:baseline; gap:6px; min-height:30px; padding:5px 0 3px; flex-wrap:wrap; }
html body #timeline .flight-ap b { font-size:15px; font-weight:750; letter-spacing:.02em; color:var(--label); }
html body #timeline .flight-ap small { flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:11.5px; color:var(--label-2); }
html body #timeline .flight-exit { display:inline-flex; align-items:center; gap:4px; margin-left:auto; font-size:12px; color:var(--label-2); }
html body #timeline .flight-exit input { width:44px; height:22px; padding:0 4px; border:1px solid var(--sep); border-radius:7px; background:var(--bg); color:var(--label); font:inherit; text-align:right; }
html body #timeline .flight-block { flex:1; min-width:0; font-size:12px; color:var(--label-2); font-variant-numeric:tabular-nums; }
html body #timeline .cx-egress { display:flex; align-items:center; justify-content:space-between; gap:8px; margin:8px 0 2px; font-size:13px; font-weight:600; color:var(--label); }
html body #timeline .cx-egress label { display:inline-flex; align-items:center; gap:4px; font-size:12px; font-weight:500; color:var(--label-2); }
html body #timeline .cx-egress input { width:50px; height:24px; padding:0 4px; border:1px solid var(--sep); border-radius:7px; background:var(--bg); color:var(--label); font:inherit; text-align:right; }
/* ---- Map: labels sit beside the route with a thin leader, never on it ---- */
.day-total-marker,.mk-route-label-wrap { position:relative; display:block; width:0; height:0; overflow:visible; }
.day-total-leader,.mk-route-leader { position:absolute; left:0; top:0; overflow:visible; pointer-events:none; }
.day-total-leader line,.mk-route-leader line { stroke-width:1.5; stroke-dasharray:2 3; opacity:.85; }
.day-total-dot { position:absolute; left:-4px; top:-4px; width:8px; height:8px; border-radius:50%; background:var(--c); border:2px solid #fff; box-sizing:border-box; }
.mk-route-label-wrap .mk-route-label { position:absolute; left:0; top:0; }
.hotel-pin-wrap,.inside-pin-wrap { overflow:visible; background:none !important; border:0 !important; }
.hotel-pin { display:inline-flex; align-items:center; gap:3px; height:24px; padding:0 7px; border-radius:999px; background:var(--card, #fff); border:2px solid var(--c); box-shadow:0 2px 8px rgba(0,0,0,.2); font:650 11.5px -apple-system,system-ui,sans-serif; color:var(--label, #1c1c1e); white-space:nowrap; cursor:pointer; }
.hotel-pin b { font-weight:700; }
.inside-pin { display:grid; place-items:center; width:22px; height:22px; border-radius:50%; background:var(--c); color:#fff; border:2px solid #fff; box-shadow:0 1px 5px rgba(0,0,0,.25); font:700 11px -apple-system,system-ui,sans-serif; }
.inside-pin.is-closed { background:#c62732; }
.inside-pin.is-limited { background:#c77700; }
.hotel-pop { display:flex; flex-direction:column; gap:3px; min-width:180px; font:13px -apple-system,system-ui,sans-serif; }
.hotel-pop span { font-size:12px; color:#555; }
.hotel-pop .hp-add { margin-top:6px; height:28px; border:0; border-radius:999px; background:#2f5d50; color:#fff; font-weight:650; cursor:pointer; }
/* ---- Late arrival: visit or sleep nearby? ---- */
html body #timeline .late-ask { margin-top:8px; padding:9px 11px; border-radius:12px; background:color-mix(in srgb, var(--tint) 9%, transparent); }
html body #timeline .late-ask p { margin:0 0 7px; font-size:12.5px; line-height:1.4; color:var(--label); }
html body #timeline .late-ask div { display:flex; flex-wrap:wrap; gap:6px; }
html body #timeline .late-ask button,.late-dialog .late-actions button { min-height:30px; padding:0 12px; border:1px solid color-mix(in srgb, var(--tint) 45%, transparent); border-radius:999px; background:var(--bg); color:var(--tint); font-size:12.5px; font-weight:650; cursor:pointer; }
.late-dialog { max-width:360px; padding:18px 18px 14px; border:0; border-radius:18px; background:var(--card, #fff); color:var(--label, #1c1c1e); box-shadow:0 20px 50px rgba(0,0,0,.25); }
.late-dialog::backdrop { background:rgba(0,0,0,.3); }
.late-dialog h3 { margin:0 0 6px; font-size:16px; }
.late-dialog p { margin:0 0 12px; font-size:13.5px; line-height:1.45; color:var(--label-2, #555); }
.late-dialog .late-actions { display:flex; flex-direction:column; gap:8px; }
.late-dialog .late-actions .late-later { border-color:transparent; color:var(--label-2, #666); }
/* ---- AI plan inside a stop ---- */
html body #timeline .sub-status { grid-column:1 / -1; font-size:11.5px; line-height:1.35; color:var(--label-2); }
html body #timeline .sub-status.closed { color:#c62732; }
html body #timeline .sub-status.limited { color:#a35f00; }
html body #timeline .nested-stop-row { grid-template-areas:"name name x" "time min ." "st st st"; }
html body #timeline .nested-stop-row .sub-status { grid-area:st; }
html body #timeline .area-note { margin-top:8px; padding:8px 10px; border-radius:10px; background:color-mix(in srgb, var(--label) 4%, transparent); font-size:12px; line-height:1.4; color:var(--label-2); }
html body #timeline .area-note.is-warn { background:color-mix(in srgb, #c62732 8%, transparent); }
html body #timeline .area-note p { margin:0 0 4px; }
html body #timeline .flight-block { white-space:nowrap; }
/* Flight: "LAX ✈ DL1897 … Edit Ignore" on top, the arrival airport in bold below. */
html body #timeline .flight-from { flex-wrap:nowrap; align-items:center; border-bottom:1px dashed #9587b355; }
html body #timeline .flight-from-ap { flex:none; font-size:13px; font-weight:600; color:var(--label-2); }
html body #timeline .flight-from .airport-flight-info { flex:1; min-width:0; border-top:0 !important; padding:0; min-height:0; }
html body #timeline .flight-to b { font-size:16px; font-weight:800; }
/* ---- Logo: the photo R mark blends into the cream panel ---- */
:root:not([data-theme="dark"]) .sp-brand .rv-brand-wordmark { mix-blend-mode:multiply; }
/* ---- Dates: same type size as every other field ---- */
@media (min-width:601px) {
html body .sp-when .date-box { height:36px !important; min-height:36px !important; }
html body #dateControl :is(.date-type,.date-display,.date-time input) { font-size:13px !important; font-weight:500 !important; }
}
/* ---- Transport preferences on the start page: a card like the others ---- */
html body #startPage [data-transport-preferences] { margin:8px 0; padding:9px 11px !important; border-radius:18px !important; background:linear-gradient(145deg,#ffffff60,#ffffff20) !important; border:1px solid #ffffffa6 !important; box-shadow:inset 0 1px 0 #fffffff0,inset 0 -1px 0 #6b85651a,0 4px 14px #52674109 !important; }
:root[data-theme="dark"] body #startPage [data-transport-preferences] { background:var(--bg) !important; border-color:#ffffff20 !important; box-shadow:inset 0 1px 0 #ffffff21,0 4px 16px #0002 !important; }
html body [data-transport-preferences] .field-head label,html body #transportPrefs .field-head label { font-size:13px !important; font-weight:600 !important; color:var(--label) !important; }
html body [data-transport-preferences] .field-head { margin:0 0 4px; }
html body :is(#transportPrefs,[data-transport-preferences]) .pref-row { font-size:13px !important; padding:3px 0 !important; color:var(--label) !important; }
html body :is(#transportPrefs,[data-transport-preferences]) input[type="checkbox"] { width:15px; height:15px; margin:0; accent-color:var(--tint); }
html body :is(#transportPrefs,[data-transport-preferences]) input[type="number"] { width:52px; height:26px; padding:0 6px; border:1px solid var(--sep); border-radius:8px; background:transparent; color:var(--label); font:inherit; font-size:13px; }
/* ---- Season index: the one you tapped is unmistakable ---- */
.sp-seasons .ss-tile.on { background:var(--tint) !important; color:#fff !important; border-color:var(--tint) !important; box-shadow:0 0 0 3px color-mix(in srgb, var(--tint) 25%, transparent),0 6px 16px #0002 !important; transform:translateY(-2px); }
.sp-seasons .ss-tile.on .ss-name { color:#fff !important; font-weight:700; }
.sp-seasons .ss-grid:has(.ss-tile.on) .ss-tile:not(.on) { opacity:.55; }

@keyframes ss-chosen-in { from { opacity:0; transform:translateY(-4px); } to { opacity:1; transform:none; } }
@media (prefers-reduced-motion: reduce) {

.sp-seasons .ss-tile.on { transform:none; }
}
/* Logo stays pinned at the top of the start page while the form scrolls under it. */
html body #startPage > .sp-head { position:sticky !important; top:0; z-index:40 !important; margin-top:-73px !important; padding-top:73px !important; padding-bottom:6px !important; background:#fff9ed !important; }
:root[data-theme="dark"] body #startPage > .sp-head { background:var(--bg) !important; }
:root:not([data-theme="dark"]) .sp-brand .rv-brand-wordmark { mix-blend-mode:normal; }
/* Shorter fields: one consistent 32px control height. */
html body #destinationSearchInput { height:32px !important; min-height:32px !important; padding-block:0 !important; }
html body #dateControl .date-box { grid-template-rows:32px !important; height:auto !important; min-height:0 !important; }
html body #dateControl .date-type,html body #dateControl .date-core { height:32px !important; }
@media (min-width:601px) {
html body .sp-when .date-box { height:auto !important; min-height:0 !important; }
}
html body #startPage :is(#travelersSel,#dailyBudget,#budgetDays) { height:32px !important; min-height:32px !important; }
html body #startPage .sp-budget-card :is(.budget-money,.budget-field,label > span:has(select)) { min-height:0 !important; }
/* Round trip sits on the Ending point line. */
html body .rt-row:has(#roundTripBtn) { grid-template-columns:24px minmax(0,1fr) auto !important; }
html body #roundTripBtn { grid-column:3 !important; grid-row:1 !important; align-self:center; margin:0 !important; }
/* Transport preferences: label left, switch right, hairlines between rows, like Luggage. */
html body :is(#transportPrefs,[data-transport-preferences]) .pref-row { display:flex !important; flex-direction:row-reverse; align-items:center; justify-content:space-between; gap:10px; min-height:34px !important; padding:0 !important; border-top:1px solid var(--sep); }
html body :is(#transportPrefs,[data-transport-preferences]) .field-head + .pref-row { border-top:0; }
html body :is(#transportPrefs,[data-transport-preferences]) input[type="checkbox"] { -webkit-appearance:none; appearance:none; flex:none; width:36px !important; height:22px !important; margin:0; border-radius:999px; background:color-mix(in srgb, var(--label) 16%, transparent); position:relative; cursor:pointer; transition:background .18s; }
html body :is(#transportPrefs,[data-transport-preferences]) input[type="checkbox"]::after { content:''; position:absolute; top:2px; left:2px; width:18px; height:18px; border-radius:50%; background:#fff; box-shadow:0 1px 3px #0003; transition:transform .18s; }
html body :is(#transportPrefs,[data-transport-preferences]) input[type="checkbox"]:checked { background:var(--tint); }
html body :is(#transportPrefs,[data-transport-preferences]) input[type="checkbox"]:checked::after { transform:translateX(14px); }
html body :is(#transportPrefs,[data-transport-preferences]) input[type="checkbox"]:focus-visible { outline:2px solid var(--tint); outline-offset:2px; }
html body :is(#transportPrefs,[data-transport-preferences]) .pref-row:has(input[type="number"]) { flex-direction:row; }
html body :is(#transportPrefs,[data-transport-preferences]) input[type="number"] { height:26px !important; width:52px !important; text-align:right; }
html body #startPage > .sp-head { margin-left:-24px !important; margin-right:-24px !important; padding-left:24px !important; padding-right:24px !important; }
/* Destination card: question and field centred, equal space above and below. */
html body #startPage .destination-entry { padding-top:11px !important; padding-bottom:11px !important; }
html body #startPage .destination-question { align-items:center; min-height:34px; }
html body #startPage .destination-question > .sp-label { align-self:center; }
html body #startPage .destination-search { margin:0 !important; }
html body #startPage .destination-selection:not([hidden]) { margin:8px 0 0 !important; }
/* Budget row: three labels on one baseline, three 32px fields on one line. */
html body #startPage .budget-form { grid-template-columns:58px minmax(0,1fr) 52px !important; gap:4px 8px !important; align-items:end !important; }
html body #startPage .budget-form > label { gap:5px !important; font-size:12px !important; line-height:16px !important; white-space:nowrap; justify-content:flex-end; }
html body #startPage .budget-form :is(#travelersSel,#budgetDays,.daily-budget-input) { height:32px !important; min-height:32px !important; box-sizing:border-box; }
html body #startPage .budget-form :is(#travelersSel,#budgetDays,#dailyBudget) { padding:0 9px !important; font-size:13px !important; font-weight:600 !important; line-height:30px; }
html body #startPage .daily-budget-input #dailyBudget { height:30px !important; min-height:0 !important; }
html body #startPage .daily-budget-input select { height:30px; font-size:12px !important; }
/* Travel switches inside the budget card */
html body #startPage .sp-budget-card [data-transport-preferences] { margin:10px 0 0 !important; padding:4px 0 0 !important; border:0 !important; border-top:1px solid var(--sep) !important; border-radius:0 !important; background:none !important; box-shadow:none !important; -webkit-backdrop-filter:none !important; backdrop-filter:none !important; }
html body #startPage .sp-budget-card [data-transport-preferences] .pref-row { min-height:36px !important; border-top:0 !important; font-size:13px !important; }
html body #startPage .destination-question > .sp-label { margin:0 !important; }
/* Start page: the three travel switches on one row — small switch above a short label. */
html body #startPage .sp-budget-card [data-transport-preferences] { display:grid !important; grid-template-columns:repeat(3,minmax(0,1fr)); gap:6px; padding:10px 0 2px !important; }
html body #startPage .sp-budget-card [data-transport-preferences] .pref-row { flex-direction:column !important; justify-content:flex-start !important; align-items:center; gap:6px !important; min-height:0 !important; padding:0 !important; border:0 !important; font-size:12px !important; line-height:1.25; text-align:center; color:var(--label-2) !important; }
html body #startPage .sp-budget-card [data-transport-preferences] .pref-row:has(input:checked) { color:var(--label) !important; font-weight:600; }
html body #startPage .sp-budget-card [data-transport-preferences] input[type="checkbox"] { width:38px !important; height:22px !important; }
html body #startPage .sp-budget-card [data-transport-preferences] input[type="checkbox"]::after { width:18px; height:18px; }
html body #startPage .sp-budget-card [data-transport-preferences] input[type="checkbox"]:checked::after { transform:translateX(16px); }
html body #startPage .sp-budget-card [data-transport-preferences] .pref-row { white-space:nowrap; font-size:11.5px !important; letter-spacing:-.1px; }
/* ==== Flat buttons (no glass) for chips, Round trip, swap ==== */
html body .sidebar :is(.destination-countries button,.destination-cities button,.secondary,.mini-btn,.chip-row button,#destinationSearchForm > button,.rt-loop,.rt-swap) {
  background:var(--card) !important; border:1px solid var(--sep) !important; box-shadow:none !important;
  -webkit-backdrop-filter:none !important; backdrop-filter:none !important; color:var(--label) !important;
}
html body .sidebar :is(.destination-countries button,.chip-row button,.rt-loop)[aria-pressed="true"] {
  background:var(--tint-soft) !important; border-color:color-mix(in srgb, var(--tint) 35%, transparent) !important; color:var(--tint) !important;
}
@media(hover:hover) {
html body .sidebar :is(.destination-countries button,.secondary,.chip-row button,.rt-loop,.rt-swap):hover { background:color-mix(in srgb, var(--tint) 7%, var(--card)) !important; box-shadow:none !important; }
}
/* Travel options on the start page: toggle chips like Nature / City, in one row. */
html body #startPage .sp-budget-card [data-transport-preferences] { display:flex !important; flex-wrap:wrap; gap:8px !important; padding:10px 0 2px !important; }
html body #startPage .sp-budget-card [data-transport-preferences] .pref-row {
  position:relative; flex-direction:row !important; justify-content:center !important; align-items:center; gap:0 !important;
  height:32px; min-height:32px !important; padding:0 12px !important; border:1px solid var(--sep) !important; border-radius:999px;
  background:var(--card); color:var(--label) !important; font-size:13px !important; font-weight:600; letter-spacing:0; white-space:nowrap; cursor:pointer;
}
html body #startPage .sp-budget-card [data-transport-preferences] .pref-row:has(input:checked) { background:var(--tint-soft); border-color:color-mix(in srgb, var(--tint) 35%, transparent) !important; color:var(--tint) !important; }
html body #startPage .sp-budget-card [data-transport-preferences] .pref-row:has(input:focus-visible) { outline:2px solid var(--tint); outline-offset:2px; }
html body #startPage .sp-budget-card [data-transport-preferences] input[type="checkbox"] { position:absolute; inset:0; width:100% !important; height:100% !important; margin:0; opacity:0; cursor:pointer; }
html body #startPage .sp-budget-card [data-transport-preferences] input[type="checkbox"]::after { display:none; }
.map-result-rating { display:block; margin:1px 0 2px; font-size:12px; color:var(--label-2); }
.map-result-rating b { color:#b7791f; font-weight:700; }
html body #timeline .cx-egress select { height:26px; padding:0 6px; border:1px solid var(--sep); border-radius:8px; background:var(--card); color:var(--label); font:inherit; font-size:12.5px; font-weight:600; }
html body #timeline .area-fact b { color:var(--label); margin-right:4px; }
html body #timeline .area-fact.is-bring { color:#a35f00; font-weight:600; }
html body #timeline .sub-move { font-style:normal; margin-right:3px; }
/* ---- Trip name: edited on the cover only ---- */
#pathSection .trip-name { display:none !important; }
.trip-hero .th-title[contenteditable] { margin:0; padding:2px 6px; margin-left:-6px; border-radius:10px; cursor:text; outline:none; font:inherit; color:inherit; background:none; border:0; transition:background .15s, box-shadow .15s; }
.trip-hero .th-title[contenteditable]:hover { background:rgba(255,255,255,.14); }
.trip-hero .th-title[contenteditable]:focus { background:rgba(0,0,0,.28); box-shadow:0 0 0 2px rgba(255,255,255,.75); }
/* ---- "Plan … with AI": one clear action card ---- */
html body #timeline .ai-plan-btn { display:flex; align-items:center; gap:10px; width:100%; margin:2px 0 4px; padding:9px 12px; border:1px solid color-mix(in srgb, var(--tint) 28%, transparent); border-radius:14px; background:linear-gradient(135deg, color-mix(in srgb, var(--tint) 12%, var(--card)), var(--card)); color:var(--label); text-align:left; cursor:pointer; transition:transform .12s, box-shadow .15s, border-color .15s; }
html body #timeline .ai-plan-btn:hover { border-color:color-mix(in srgb, var(--tint) 50%, transparent); box-shadow:0 4px 14px color-mix(in srgb, var(--tint) 14%, transparent); }
html body #timeline .ai-plan-btn:active { transform:scale(.985); }
html body #timeline .ai-plan-ico { flex:none; display:grid; place-items:center; width:30px; height:30px; border-radius:50%; background:var(--tint); color:#fff; font-size:14px; }
html body #timeline .ai-plan-btn.is-busy .ai-plan-ico { background:transparent; border:2.5px solid color-mix(in srgb, var(--tint) 25%, transparent); border-top-color:var(--tint); box-sizing:border-box; animation:ai-spin .8s linear infinite; }
html body #timeline .ai-plan-tx { display:flex; flex-direction:column; min-width:0; }
html body #timeline .ai-plan-tx b { font-size:13.5px; font-weight:650; }
html body #timeline .ai-plan-tx small { font-size:11.5px; color:var(--label-2); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
html body #timeline .sub-add:has(.ai-plan-btn) { flex-direction:row; }
html body #timeline .sub-add .ai-plan-btn { flex-basis:100%; }
@keyframes ai-spin { to { transform:rotate(360deg); } }
@media (prefers-reduced-motion: reduce) {
html body #timeline .ai-plan-btn.is-busy .ai-plan-ico { animation-duration:2.5s; }
}
html body #timeline .ov-later.is-tomorrow { background:var(--tint); color:#fff; }
/* ---- One consistent press feedback for every button ---- */
html body :is(.sidebar,.map-shell,#tripLibrary,.trips-pane) button:not(:disabled):active { transform:scale(.97); filter:brightness(.97); transition:transform .08s, filter .08s; }
html body .saved-route.is-opening { opacity:.6; pointer-events:none; }
/* Trip settings open from the gear beside undo; its own header row is gone. */
#tripSettings.is-detached:not([open]) { display:none !important; }
#tripSettings.is-detached > summary { display:none !important; }
#tripSettings.is-detached[open] { padding-top:6px; }
.trip-settings-btn svg { width:17px; height:17px; fill:none; stroke:currentColor; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; }
.trip-settings-btn[aria-expanded="true"] { color:var(--tint) !important; background:var(--tint-soft) !important; }
#redoBtn[hidden] { display:none !important; }
/* Exit: first thing top-left while a trip is open. */
.rv-dock-btn.rv-exit { display:inline-flex; align-items:center; gap:3px; width:auto !important; padding:0 10px 0 6px !important; font-weight:650; color:var(--tint); }
.rv-dock-btn.rv-exit svg { width:16px; height:16px; fill:none; stroke:currentColor; stroke-width:2.2; stroke-linecap:round; stroke-linejoin:round; }
.rv-dock-btn.rv-exit[hidden] { display:none !important; }
html body #timeline .area-actions { display:flex; flex-wrap:wrap; gap:4px 14px; margin-top:4px; }
html body #timeline .area-actions:empty { display:none; }
#tripSettings.is-detached[open] { margin:0 0 10px; }
html body #timeline .nested-stops.is-compact .sub-add { gap:6px; }

html body #timeline .nested-stops.is-compact .sub-chip { border-style:solid; color:var(--label); background:var(--card); }

.hotel-pin { transition:transform .15s ease, box-shadow .15s ease; transform-origin:center; }
.hotel-pin.is-hot { transform:scale(1.35); box-shadow:0 4px 14px rgba(0,0,0,.3); }
html body #rvDock #startOverBtn.rv-exit:not([hidden]) { display:inline-flex !important; width:34px !important; padding:0 !important; justify-content:center; }
@keyframes pin-pulse { 0%,100% { transform:scale(1); } 40% { transform:scale(1.35); } }
.pin.pin-pulse { animation:pin-pulse .7s ease 2; }
/* Hotel picks glow under the cursor (their map pin grows too). */
html body #timeline .stay-pick li[data-hotel-name] { transition:box-shadow .2s ease, transform .2s ease; border-radius:14px; }
html body #timeline .stay-pick li[data-hotel-name]:hover { box-shadow:0 0 0 2px color-mix(in srgb, var(--tint) 35%, transparent), 0 6px 22px color-mix(in srgb, var(--tint) 28%, transparent); transform:translateY(-1px); }
@keyframes stay-flash { 0% { box-shadow:0 0 0 0 color-mix(in srgb, var(--tint) 45%, transparent); } 100% { box-shadow:0 0 0 14px transparent; } }
html body #timeline .stay-pick.is-flash { animation:stay-flash .9s ease-out 2; }
@media (prefers-reduced-motion: reduce) { html body #timeline .stay-pick li[data-hotel-name]:hover { transform:none; } html body #timeline .stay-pick.is-flash { animation:none; } }
/* Airport: one dropdown with ticks */
html body #timeline .airport-pick { position:relative; padding:4px 0; }
html body #timeline .airport-pick > summary { display:flex; align-items:center; justify-content:space-between; gap:8px; min-height:26px; list-style:none; cursor:pointer; font-size:13px; }
html body #timeline .airport-pick > summary::-webkit-details-marker { display:none; }
html body #timeline .airport-pick > summary b { font-weight:600; color:var(--label); }
html body #timeline .airport-pick > summary::after { content:'⌄'; color:var(--label-2); margin-left:4px; }

html body #timeline .find-hotels { font-weight:650; }

/* A meal nudge inside a connector (e.g. leaving the arrival airport) lines up with every other nudge. */
html body #timeline .cx .meal-nudge { position:relative; z-index:3; margin:6px 0 6px calc(24px - 86px); }
/* Picked chips are filled (dark), so a tap clearly registers. */
html body .sidebar :is(.chip-row button,.rt-loop)[aria-pressed="true"],html body .sidebar .chip-row button.on { background:var(--tint) !important; border-color:var(--tint) !important; color:#fff !important; }
html body #startPage .sp-budget-card [data-transport-preferences] .pref-row:has(input:checked) { background:var(--tint) !important; border-color:var(--tint) !important; color:#fff !important; }
/* Type + travel style: one question, one row of chips */
/* Airport pick row looks like the Luggage row */
html body #timeline .airport-pick-row { display:flex; align-items:center; justify-content:space-between; gap:8px; min-height:30px; padding:2px 0; font-size:13px; }
html body #timeline .airport-pick-row .gsel { margin-left:auto; }
/* Season & events on the map: a solid, readable card instead of see-through glass over map labels. */
html body .map-shell > .sp-seasons:not(.is-collapsed) { background:var(--card) !important; border:1px solid var(--sep) !important; box-shadow:0 10px 30px rgba(20,40,30,.16) !important; -webkit-backdrop-filter:none !important; backdrop-filter:none !important; }
html body .map-shell > .sp-seasons .ss-tile { background:var(--fill) !important; border:1px solid transparent !important; color:var(--label) !important; }
html body .map-shell > .sp-seasons .ss-tile .ss-name { font-size:12px !important; font-weight:650 !important; color:var(--label) !important; }
html body .map-shell > .sp-seasons .ss-tile .ss-score { font-size:12px !important; font-weight:700 !important; }

html body .map-shell > .sp-seasons .ss-list li button { color:var(--label) !important; }
html body .map-shell > .sp-seasons .ss-list small { color:var(--label-2) !important; font-size:11.5px !important; }
html body #timeline .sub-rating { grid-column:1 / -1; font-size:11.5px; font-weight:700; color:#b7791f; }
html body #timeline .sub-rating i { font-style:normal; font-weight:500; color:var(--label-2); }
html body #timeline .nested-stop-row { grid-template-areas:"name name x" "rate rate rate" "time min ." "st st st"; }
html body #timeline .nested-stop-row .sub-rating { grid-area:rate; }
html body #startPage .chip-row button:is([aria-pressed="true"],.on),html body #startPage .rt-loop[aria-pressed="true"] { background:var(--tint) !important; border-color:var(--tint) !important; color:#fff !important; box-shadow:none !important; }

/* Trip type: no inner box — same background as the card, compact */
html body #startPage .rt-wish-tools > .rt-type{background:transparent!important;border:0!important;box-shadow:none!important;padding:2px 0!important;margin:0!important;gap:4px!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
html body #startPage .rt-car-q[hidden]{display:none!important}
/* Over-budget notice */
.budget-over{margin:8px 0;padding:8px 12px;border-radius:10px;font-size:13px;background:color-mix(in srgb,#f59e0b 14%,transparent);color:inherit;border-left:3px solid #f59e0b}
.budget-over.is-hard{background:color-mix(in srgb,#ef4444 12%,transparent);border-left-color:#ef4444}
/* Season index: say which index the map numbers are */
.ss-pin{position:relative}
.ss-pin > i{position:absolute;top:-9px;right:-9px;font-style:normal;font-size:13px;line-height:1;filter:drop-shadow(0 1px 1px rgba(0,0,0,.3))}

/* Start page: one sheet instead of a stack of boxes — sections are separated by a hairline only */
html body #startPage .sp-sheet{background:var(--card,#fff8ea);border-radius:22px;padding:4px 16px;box-shadow:0 1px 3px rgba(0,0,0,.06);display:flex;flex-direction:column}
html body #startPage .sp-sheet > .sp-card{background:transparent!important;border:0!important;box-shadow:none!important;border-radius:0!important;margin:0!important;padding:12px 0!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
html body #startPage .sp-sheet > .sp-card + .sp-card{border-top:.5px solid var(--lg-hair,rgba(0,0,0,.1))!important}
html body #startPage .sp-sheet > .sp-card[hidden]{display:none!important}
html body #startPage .sp-sheet input,html body #startPage .sp-sheet select{box-shadow:none!important}
/* Season forecast inside the sheet: one compact row of themes */
html body #startPage .sp-seasons{position:static!important;width:auto!important;max-height:none!important}
html body #startPage .sp-seasons .season-drag-handle{display:none!important}
html body #startPage .sp-seasons .season-card-head{position:absolute;right:0;top:8px;min-height:0!important;margin:0!important}
html body #startPage .sp-seasons{position:relative!important}

html body #startPage .sp-seasons.is-collapsed{padding:8px 0!important}
html body #startPage .sp-seasons .ss-pill{background:transparent!important;border:0!important;box-shadow:none!important;padding:0!important;width:100%;justify-content:flex-start}
/* The car question hides unless Nature is picked (beats the chip-row display rule) */
html body #startPage .rt-wish-tools .rt-type .chip-row.rt-car-q[hidden],html body #startPage .rt-wish-tools .rt-type .sp-label.rt-car-q[hidden]{display:none!important}
html body #startPage .sp-seasons .ss-grid{display:grid!important;grid-template-columns:repeat(auto-fit,minmax(64px,1fr))!important;gap:6px!important;margin:0!important;padding-right:30px}

/* Fuel economy sits right under Own car / Rented car */
html body #startPage .rt-type .rt-car-fuel{background:transparent!important;border:0!important;box-shadow:none!important;padding:4px 0 0!important;margin:0!important}
html body #startPage .rt-type .rt-car-fuel[hidden]{display:none!important}
/* After removing the indices heading/source line: no leftover gap */
html body #startPage .sp-seasons .in-panel{margin:0!important;padding:0!important;border:0!important;gap:0!important}
html body #startPage .sp-seasons .in-panel:not(:has(> :not([hidden]):not(#spOutlookHost))):not(:has(#spOutlook:not([hidden]))){display:none!important}
/* "Your car?" already asks — the fuel row needs no second label, and the model picker gets room */
html body #startPage .rt-car-fuel .sp-car-k{display:none!important}
html body #startPage .rt-car-fuel .sp-car{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
html body #startPage .rt-car-fuel #carPreset{flex:1 1 160px;min-width:140px}

/* Fuel row: car type + recommended number (editable) on one line */
html body #startPage .rt-car-fuel .sp-car{flex-wrap:nowrap!important}
html body #startPage .rt-car-fuel #carPreset{flex:1 1 auto!important;min-width:0!important}
html body #startPage .rt-car-fuel .sp-car-eff{display:flex;align-items:center;gap:4px;flex:0 0 auto}
html body #startPage .rt-car-fuel #carValue{width:56px!important;text-align:right}
html body #startPage .rt-car-fuel #carAlt:empty{display:none}
html body #startPage .rt-car-fuel #carValue{border:0!important;border-bottom:1.5px dashed var(--lg-hair,rgba(0,0,0,.25))!important;border-radius:0!important;background:transparent!important;padding:2px 4px!important}

/* Car row: fixed sizes so nothing shifts when the car type changes */
html body #startPage .rt-type{width:100%!important}
html body #startPage .rt-car-fuel .sp-car{display:grid!important;grid-template-columns:minmax(0,1fr) 56px 72px;align-items:center;gap:8px;justify-content:start}
html body #startPage .rt-car-fuel .gsel,html body #startPage .rt-car-fuel #carPreset:not(.gsel-native){width:100%!important;min-width:0!important;max-width:100%!important;flex:none!important}
html body #startPage .rt-car-fuel .sp-car-eff{display:contents!important}
html body #startPage .rt-car-fuel #carUnit{width:72px;white-space:nowrap;font-size:13px}
html body #startPage .rt-car-fuel .gsel-native{position:absolute!important;opacity:0!important;pointer-events:none!important;width:1px!important;height:1px!important}
html body #startPage .rt-car-fuel .gsel{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* Photo card: dark background even before (or without) a photo, so the white text always reads */
html body #hoverCard.hover-card{background:linear-gradient(150deg,#2f4552,#1f2a3f 60%,#3a3150)!important}
html body #hoverCard.hover-card[data-season=foliage]{background:linear-gradient(150deg,#7a3412,#4a2414 55%,#2b1b16)!important}
html body #hoverCard.hover-card[data-season=winter]{background:linear-gradient(150deg,#3d5a7a,#22324a 55%,#161f30)!important}
html body #hoverCard.hover-card[data-season=bloom]{background:linear-gradient(150deg,#7a3a5c,#4a2440 55%,#2a1a2c)!important}

/* Museum list: the building's photo beside each museum */
.museum-ranking li.has-photo{display:grid!important;grid-template-columns:auto 64px minmax(0,1fr);gap:10px;align-items:start}
.museum-ranking .museum-photo{width:64px;height:64px;border-radius:12px;object-fit:cover;display:block;background:rgba(0,0,0,.06)}

/* Hotel picks: the name zooms the map to that hotel */
.stay-pick [data-hotel-zoom]{cursor:pointer}
.stay-pick [data-hotel-zoom] strong::after{content:' 📍';font-size:.85em;opacity:.55}
.stay-pick [data-hotel-zoom]:hover strong{text-decoration:underline;text-underline-offset:3px}

/* "Where to stay" is its own card after the day (same three picks as before) */
#timeline .it-stay{margin:14px 0}
#timeline .it-stay > .stay-pick{margin:0!important;padding:14px!important;border-radius:18px!important;border:1px solid var(--lg-hair,rgba(0,0,0,.1))!important;background:var(--card,#fff)!important;box-shadow:0 1px 3px rgba(0,0,0,.05)}

/* At the airport: label · pick · minutes on one line */
.airport-pick-row{display:flex;align-items:center;gap:8px;flex-wrap:nowrap}
.airport-pick-row > span{flex:0 0 auto}
.airport-pick-row select,.airport-pick-row .gsel{flex:1 1 auto;min-width:0}
.airport-pick-min{display:inline-flex;align-items:center;gap:4px;flex:0 0 auto}
.airport-pick-min input{width:56px;text-align:right}
/* Luggage row in trip settings */
.trip-settings .ts-luggage{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 14px}
.trip-settings .ts-luggage select{max-width:60%}
html body #timeline .airport-pick-row{min-width:0;max-width:100%}
html body #timeline .airport-pick-row .gsel{flex:1 1 0!important;min-width:0!important;width:auto!important;max-width:none!important}
html body #timeline .airport-pick-row .gsel-native{position:absolute!important;opacity:0!important;pointer-events:none!important;width:1px!important;height:1px!important}
html body #timeline .airport-pick-row .airport-pick-min input{width:52px!important;min-width:0!important;flex:none!important}

/* The pick is the label: "At the airport ▾" until chosen, then "Lounge ▾" with its minutes on the right (like Security) */
html body #timeline .airport-pick-row{display:flex!important;align-items:center;justify-content:space-between;gap:8px}
html body #timeline .airport-pick-row .gsel{flex:0 1 auto!important;min-width:0!important;max-width:60%!important;background:transparent!important;border:0!important;box-shadow:none!important;padding:0 18px 0 0!important;font:inherit;color:inherit;text-align:left}
html body #timeline .airport-pick-row .airport-pick-min{margin-left:auto}
html body #timeline .airport-pick-row .airport-pick-min input{width:42px!important;height:21px!important;padding:0 4px!important;font-size:12px!important;text-align:center!important;background:rgb(255,249,237)!important;border:1px solid rgba(149,135,179,.267)!important;border-radius:6px!important;box-shadow:none!important}
html body #timeline .airport-pick-row .gsel{padding-left:0!important;justify-content:flex-start!important}
html body #timeline .airport-pick-row .airport-pick-min span{font-size:12px}
html body #timeline .airport-pick-row .gsel{margin-left:0!important}

/* At the airport row: as low as the Security row */
html body #timeline .airport-pick-row{min-height:0!important;padding-top:4px!important;padding-bottom:4px!important}
html body #timeline .airport-pick-row .gsel{height:22px!important;min-height:22px!important;line-height:22px!important;padding-top:0!important;padding-bottom:0!important;font-size:12.5px!important}
html body #timeline .airport-pick-row:not([data-child-id]) .gsel{margin-left:auto!important;flex:0 0 auto!important;padding-right:16px!important}
html body #timeline .airport-pick-label{flex:1 1 auto}
html body #timeline .airport-plan-content .nested-stops.is-compact{margin:0!important;padding:0!important;gap:0!important;min-height:0!important}
html body #timeline .airport-pick-row{padding-top:3px!important;padding-bottom:3px!important;margin:0!important}

html body #timeline .airport-pick-sel{display:flex;flex:0 1 auto;min-width:0}
html body #timeline .airport-pick-row:not([data-child-id]) .airport-pick-sel{margin-left:auto}
html body #timeline .airport-pick-sel .gsel{max-width:100%!important;margin-left:0!important}
::view-transition-group(*){animation-duration:.28s;animation-timing-function:cubic-bezier(.2,.8,.2,1)}
/* Overview day cards: same colour as the panel behind them, only a hairline edge */
html body #timeline .dov-card{background:transparent!important;box-shadow:none!important}
html body #timeline .dov-price{margin-left:auto;font-weight:650;white-space:nowrap;font-variant-numeric:tabular-nums}

/* The planner column keeps one width on every screen wider than a phone, so day cards never squeeze */
@media (min-width:601px) { :root { --planner-width:352px !important; } } /* the width it had in a full desktop window; it no longer shrinks with the window */
html body #timeline .dov-top{flex-wrap:nowrap!important;white-space:nowrap;min-width:0}
html body #timeline .dov-top > :is(b,small,.dov-warn,.dov-price){flex:0 0 auto;white-space:nowrap}
html body #timeline .dov-body{min-width:0}
html body #timeline .it-day-head .it-day-title,html body #timeline .it-day-head .it-chip{white-space:nowrap;flex-shrink:0}

/* A flight that isn't booked yet: one small question instead of the airport timeline */
html body #timeline .flight-ask{border:1px solid var(--lg-hair,rgba(0,0,0,.1));border-radius:14px;padding:10px 12px;display:grid;gap:8px;background:var(--card,#fff)}
html body #timeline .flight-ask-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px}
html body #timeline .flight-ask-head small{color:var(--label-2);font-size:12px}
html body #timeline .flight-ask p{margin:0;font-size:13px;color:var(--label-2)}
html body #timeline .flight-ask .airport-flight-entry{display:flex;gap:8px;align-items:center}
html body #timeline .flight-ask .airport-flight-entry input{flex:1 1 auto;min-width:0}

html body #timeline .flight-book{display:block;text-align:center;padding:8px 12px;border-radius:12px;background:var(--tint,#2c4a3e);color:#fff!important;font-weight:650;text-decoration:none}
html body #timeline .flight-or{display:flex;align-items:center;gap:8px;color:var(--label-2);font-size:12px}
html body #timeline .flight-or::before,html body #timeline .flight-or::after{content:'';flex:1;border-top:1px solid var(--lg-hair,rgba(0,0,0,.12))}
html body #timeline .flight-ask .airport-flight-entry{border-top:0!important;padding-top:0!important;margin-top:0!important}
html body #timeline .flight-fare{display:block;margin-top:6px;font-size:12px;color:var(--label-2)}

/* Leg price: editable per person */
html body #timeline .cx-cost{display:inline-flex;align-items:center;gap:2px;white-space:nowrap}
html body #timeline .cx-cost input{width:52px;height:20px;padding:0 4px;font:inherit;font-size:12px;text-align:right;background:rgb(255,249,237);border:1px solid rgba(149,135,179,.267);border-radius:6px}
html body #timeline .cx-cost span{font-size:11px;color:var(--label-2)}
html body #timeline .cx-cost.is-own input{border-color:var(--tint,#2c4a3e)}
/* Season & destination tiles: all in one row */
html body #startPage .sp-seasons .ss-grid{grid-template-columns:repeat(4,minmax(0,1fr))!important;padding-right:24px}
html body #startPage .sp-seasons .ss-grid > #intelGrid{display:contents!important}
html body #startPage .sp-seasons .ss-tile{min-width:0!important;padding-left:2px!important;padding-right:2px!important}
html body #startPage .sp-seasons .ss-tile .ss-name{font-size:12px!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
html body #startPage #spSeasons .ss-grid{gap:4px!important}
html body #startPage #spSeasons .ss-tile .ss-name,html body #startPage #spSeasons .ss-tile span:not(.ss-ico):not(.ss-score) {font-size:11.5px!important;letter-spacing:-.2px}
@layer rovego-typography { html body #startPage #spSeasons .ss-tile .ss-name{font-size:11.5px!important;letter-spacing:-.2px} }

/* "LAS → Valley of Fire": a light outlined button that frames that part of the day */
html body #timeline .egress-frame{background:transparent;border:1px solid var(--lg-hair,rgba(0,0,0,.18));border-radius:8px;padding:1px 7px;font:inherit;color:inherit;cursor:pointer;text-align:left}
html body #timeline .egress-frame:hover{border-color:var(--tint,#2c4a3e)}
/* clock change beside the new local time */
html body #timeline .tz-change{display:block;font-size:10px;font-weight:600;color:#b45309;white-space:nowrap}
/* Top-left dock: avatar first (start page only), the three settings packed tight, My trips pinned on the right.
   In a trip the avatar gives way to the back button. */
html body #rvDock{display:flex!important;align-items:center!important;gap:6px!important;justify-content:flex-start!important}
html body #rvDock #accountEntry{order:6;flex:0 0 auto;margin:0 0 0 6px!important}
html body #rvDock .home-tabs{order:5;margin-left:auto!important;flex:0 0 auto}
html body:has(#pathSection.show) #rvDock #accountEntry{display:none!important}
html body #rvDock .rv-settings{gap:0!important;padding-left:2px!important;padding-right:2px!important;flex:0 0 auto;width:auto!important}
html body #rvDock .rv-settings .rv-dock-btn{min-width:28px!important;padding-left:5px!important;padding-right:5px!important}
html body #rvDock .rv-settings .rv-units{width:auto!important}
/* Budget: currency right next to the amount */
html body #startPage .daily-budget-input{display:inline-flex!important;align-items:center;gap:2px!important}
html body #startPage .daily-budget-input select,html body #startPage .daily-budget-input .gsel{width:auto!important;min-width:0!important;flex:0 0 auto!important;padding-right:14px!important}
html body #startPage #budgetDays{display:inline-flex;align-items:center;min-height:36px;padding:0 10px;font-variant-numeric:tabular-nums}
html body #startPage #budgetCurrency{width:68px!important;min-width:0!important;padding-left:8px!important;padding-right:18px!important;background-position:right 4px center!important}
/* Narrow column fixes */
html body #timeline .meal-nudge > p{flex:0 0 auto!important;min-width:max-content!important;overflow:visible!important}
html body #timeline .meal-nudge > p b{white-space:nowrap}
html body #timeline .meal-nudge button{padding-left:10px!important;padding-right:10px!important;white-space:nowrap}
/* Clock change: a small tag right under the landing pill, so the pill keeps its size and never covers takeoff */
html body #timeline .timeline-axis-pill:has(.tz-change){overflow:visible!important}
html body #timeline .timeline-axis-pill .tz-change{position:absolute;top:calc(100% + 2px);left:50%;transform:translateX(-50%);z-index:2;font-size:9.5px;line-height:1.2;padding:1px 5px;border-radius:6px;background:#fef3c7;color:#92400e}
html body #startPage #budgetCurrency{width:auto!important;field-sizing:content;padding-right:20px!important}
html body #timeline .meal-nudge{flex-wrap:nowrap!important;gap:6px!important}
html body #timeline .meal-nudge button{padding:4px 8px!important;font-size:13px!important}
html body #timeline .cx-egress{flex-wrap:nowrap!important;gap:6px}
html body #timeline .cx-egress label{flex:0 0 auto;display:inline-flex;align-items:center;gap:3px;white-space:nowrap}
html body #timeline .cx-egress label input{width:46px!important}

/* Destination: smaller field, a working drop-down (it was squeezed to a 2px line) and a caret */
html body #startPage .destination-question{grid-template-columns:auto minmax(0,1fr)!important;gap:10px!important}
html body #startPage .destination-question > .sp-label{white-space:nowrap!important;font-size:15px}
html body #destinationSearchForm{position:relative}
html body #destinationSearchInput{height:30px!important;min-height:0!important;padding-right:26px!important;font-size:15px!important}
html body #destinationSearchForm .dest-caret{position:absolute;right:6px;top:50%;transform:translateY(-50%);z-index:2;border:0;background:transparent;color:var(--label-2);font-size:13px;padding:2px 4px;cursor:pointer}
html body #destinationSearchResults{bottom:auto!important;top:calc(100% + 4px)!important;height:auto!important;z-index:2000!important;min-width:200px}
/* Luggage row: less height */
html body #startPage .sp-when .sp-bags{padding-top:2px!important;padding-bottom:2px!important;min-height:0!important}

html body #destinationSearchForm .dest-caret{width:auto!important;height:auto!important;min-height:0!important;border:0!important;background:none!important;box-shadow:none!important;padding:2px 2px!important;font-size:11px!important;line-height:1}
html body #destinationSearchResults [role=option]{cursor:pointer;transition:background-color .12s}
html body #destinationSearchResults [role=option]:hover,html body #destinationSearchResults [role=option][aria-selected=true]{background:var(--tint-soft,rgba(44,74,62,.12))!important;color:var(--tint,#2c4a3e)!important}
html body #timeline .cx-add.is-blocked{opacity:.4;cursor:not-allowed}
/* Phones: avatar on the right (after My trips); the sheet shows a drag bar on top with the logo right under it */
@media (max-width:600px) {
  html body #rvDock #accountEntry{order:6!important;margin-left:6px!important}
  html body #rvDock .home-tabs{margin-left:auto!important}
  html body .workspace > .sidebar > .rv-band{position:sticky!important;top:0!important;z-index:40!important;height:16px!important;background:var(--card,#fff8ea)!important;display:flex!important;align-items:center;justify-content:center}
  html body .workspace > .sidebar > .rv-band::after{width:40px!important;height:5px!important;border-radius:3px!important;margin:0!important;background:rgba(60,70,65,.35)!important}
  html body #startPage .sp-head{padding-top:2px!important;margin-top:0!important;top:16px!important}
}
html body #startPage #destinationSearchForm #destinationCaret{width:auto!important;min-width:0!important;height:auto!important;min-height:0!important;border:0!important;background:none!important;box-shadow:none!important;padding:2px!important;border-radius:0!important}
/* Destination list: exactly under the field, same width and colours, light rows */
html body #destinationSearchResults{left:0!important;right:0!important;min-width:0!important;width:auto!important;background:var(--fill,#f3f0e6)!important;border:1px solid var(--sep,rgba(0,0,0,.12))!important;border-radius:12px!important;box-shadow:0 6px 18px rgba(0,0,0,.08)!important;padding:3px!important}
html body #destinationSearchResults > button{padding:7px 10px!important;border:0!important;border-radius:8px!important;font-size:14px!important;font-weight:500!important;line-height:1.25}
html body #destinationSearchResults > button strong{font-weight:500!important}
html body #destinationSearchResults > button small{font-size:11px!important;margin-top:1px!important}
/* Season tiles: four equal tiles filling the row */
html body #startPage #spSeasons .ss-grid{padding-right:0!important;grid-template-columns:repeat(4,minmax(0,1fr))!important;width:100%}
html body #startPage #spSeasons .ss-tile{width:100%!important;max-width:none!important}
/* Budget row: smaller labels, a narrow Days, currency with its arrow right after the letters */
html body #startPage .budget-form{grid-template-columns:52px minmax(0,1fr) 34px!important;gap:4px 8px!important}
html body #startPage #budgetDays{padding:0 2px!important;justify-content:center}
html body #startPage #budgetCurrency{appearance:none!important;-webkit-appearance:none!important;width:52px!important;field-sizing:fixed;padding:0 13px 0 8px!important;background:transparent url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='5'%3E%3Cpath d='M0 0l4 5 4-5z' fill='%23667066'/%3E%3C/svg%3E") no-repeat right 3px center!important;border:0!important;font-weight:600}
@layer rovego-typography { html body #startPage .budget-form > label{font-size:11.5px!important;line-height:15px!important} }
@media (max-width:600px){ html body .workspace > .sidebar > .rv-band{background:var(--bg)!important} html body #startPage .sp-head{padding-top:0!important;margin-top:-6px!important} html body #startPage .sp-brand{margin-top:0!important} }
html body #destinationSearchResults{background:color-mix(in srgb, rgb(119,103,67) 7%, var(--card,#fffdf6))!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important}
html body #destinationSearchResults > button:hover,html body #destinationSearchResults > button[aria-selected=true]{background:rgba(44,74,62,.12)!important}

/* Phones: the planner sheet height follows the drag bar */
@media (max-width:600px) {
  html body .workspace{grid-template-rows:minmax(0,1fr) var(--sheet-h,58%)!important}
  html.sheet-dragging body .workspace{transition:none!important}
  html body .workspace > .sidebar > .rv-band{cursor:ns-resize;touch-action:none}
}
/* Destination caret: part of the field — the field fades into it */
html body #startPage #destinationSearchForm #destinationCaret{top:1px!important;bottom:1px!important;right:1px!important;transform:none!important;width:30px!important;display:flex!important;align-items:center;justify-content:center;border-radius:0 9px 9px 0!important;background:linear-gradient(90deg,transparent,color-mix(in srgb, rgb(119,103,67) 10%, var(--card,#fffdf6)) 55%)!important;color:var(--label-2)!important}
html body #startPage #destinationSearchForm:focus-within #destinationCaret{color:var(--tint,#2c4a3e)!important}
/* Map zoom: small round buttons in the lower right, out of the way */
html body .map-shell .gm-bundled-control{margin:0 8px!important}
html body .map-shell .gm-bundled-control .gmnoprint > div{background:transparent!important;box-shadow:none!important;width:auto!important;height:auto!important;display:flex!important;flex-direction:column;gap:6px}
html body .map-shell .gm-bundled-control button.gm-control-active{width:32px!important;height:32px!important;border-radius:50%!important;background:color-mix(in srgb, var(--card,#fff) 88%, transparent)!important;box-shadow:0 1px 4px rgba(0,0,0,.18)!important;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
html body .map-shell .gm-bundled-control button.gm-control-active img{width:12px!important;height:12px!important}

/* Currency: room for the three letters and the arrow */
html body #startPage #budgetCurrency{width:60px!important;padding:0 15px 0 8px!important}
/* Route list: tighter left indent; "optional" hints */
html body #startPage .rt-list{padding-left:0!important;margin-left:0!important}
html body #startPage .rt-row{column-gap:8px!important}
html body #startPage .rt-wish-tools{margin-left:0!important;padding-left:0!important}
html body #startPage .rt-opt{font-size:11px;font-weight:500;color:var(--label-2);margin-left:4px;text-transform:none;letter-spacing:0}
/* Place card on the map: ✓ Added + remove, or + Add */
.hover-card .hc-added{display:inline-flex;align-items:center;padding:6px 10px;border-radius:10px;background:rgba(52,199,89,.2);color:#d9f99d;font-weight:650;font-size:13px}
.hover-card .hc-del{border:0;background:rgba(255,255,255,.14);color:#fff;border-radius:10px;padding:6px 9px;cursor:pointer}
.hover-card .hc-del:hover{background:rgba(255,80,80,.35)}

/* Phones, trip page: same slim drag bar as the start page; avatar back on the far right with My trips beside it; no zoom buttons (pinch to zoom) */
@media (max-width:600px) {
  html body:has(#pathSection.show) .workspace > .sidebar > .rv-band{height:16px!important;min-height:16px!important}
  html body:has(#pathSection.show) #rvDock #accountEntry{display:flex!important;order:6!important;margin-left:6px!important}
  html body .map-shell .gm-bundled-control{display:none!important}
}

/* Avatar: icon in the middle of its round button */
html body #rvDock #accountEntry{align-items:center!important;justify-content:center!important;padding:0!important}
html body #rvDock #accountEntry svg{display:block!important;margin:0!important;flex:none}
/* Phones: the drag bar sits on a transparent strip */
@media (max-width:600px) {
  html body .workspace > .sidebar > .rv-band,
  html body:has(#pathSection.show) .workspace > .sidebar > .rv-band{background:transparent!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important;box-shadow:none!important}
}
/* Trip settings: end point field and button match the date boxes; luggage is a soft yellow pick */
html body #tripSettings .start-picker{gap:8px!important;align-items:stretch}
html body #tripSettings #endPlaceLive,html body #tripSettings #setEndPlaceLive{height:37px!important;min-height:37px!important;border-radius:13px!important}
html body #tripSettings #endPlaceLive{background:rgba(118,124,128,.1)!important}
html body #tripSettings .ts-luggage{padding:6px 2px!important}
html body #tripSettings [data-luggage-setting]{appearance:none;-webkit-appearance:none;height:32px;max-width:62%;padding:0 30px 0 12px;border:1px solid color-mix(in srgb, rgb(119,103,67) 18%, transparent);border-radius:10px;font:inherit;font-weight:600;color:var(--label,#30483d);cursor:pointer;background:color-mix(in srgb, rgb(214,170,60) 14%, var(--card,#fffdf6)) 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='%23667066' stroke-width='1.6' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat right 11px center;transition:background-color .15s,box-shadow .15s}
html body #tripSettings [data-luggage-setting]:hover{background-color:color-mix(in srgb, rgb(214,170,60) 26%, var(--card,#fffdf6));box-shadow:0 0 0 3px color-mix(in srgb, rgb(214,170,60) 18%, transparent)}
html body #tripSettings [data-luggage-setting]:focus-visible{outline:none;box-shadow:0 0 0 3px color-mix(in srgb, var(--tint,#2c4a3e) 25%, transparent)}

/* Start sheet: tighter gaps under Luggage, above Your route and above Add link */
html body #startPage .sp-sheet > .sp-when{padding-bottom:6px!important}
html body #startPage .sp-sheet > #spSeasons{padding-top:8px!important;padding-bottom:8px!important}
html body #startPage .sp-sheet > .sp-route{padding-top:4px!important}
html body #startPage .sp-route .rt-head{padding-bottom:0!important;min-height:0!important}
html body #startPage .rt-wish-tools{gap:2px!important;margin-top:2px!important}
html body #startPage .rt-wish-tools .sp-prefs.rt-type{padding-top:4px!important;padding-bottom:2px!important}
html body #startPage .rt-wish-tools #inspirationOpen{margin-top:0!important}
/* Start and end are just the bookends: quieter labels; the main places stand out */
html body #startPage .rt-row:is([data-role=from],[data-role=to]) .rt-k{color:var(--label-2)!important;font-weight:600!important}
html body #startPage .rt-row.rt-wish .rt-k{color:var(--label)!important;font-weight:700!important}
html body #startPage .rt-wish-tools .sp-prefs.rt-type{padding-left:0!important;padding-right:0!important}
html body #startPage .rt-wish-tools .rt-type .sp-label{padding-left:0!important}
/* Ground leg after a flight: one line, long names end with … */
html body #timeline .cx-egress > span{min-width:0;flex:1 1 auto;display:flex;flex-wrap:wrap;align-items:center;gap:4px}
html body #timeline .egress-frame{max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* Leg line: the price drops to the next line instead of running out of the card */
html body #timeline .cx-line .cx-dur{white-space:normal!important;min-width:0;max-width:100%}
html body #timeline .cx-arr .tz-change{display:inline-block;margin-left:6px;padding:1px 5px;border-radius:6px;background:#fef3c7;color:#92400e;font-size:10px;vertical-align:1px}
/* Price boxes: no spinner arrows eating the digits */
html body #timeline :is(.cx-cost,.pc-cost) input{-moz-appearance:textfield;appearance:textfield}
html body #timeline :is(.cx-cost,.pc-cost) input::-webkit-inner-spin-button,html body #timeline :is(.cx-cost,.pc-cost) input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
/* Axis pills with a zone (13:05 MT) stay clear of the label beside them */
@layer rovego-typography { html body #timeline .timeline-axis-pill > small{font-size:.62em!important;margin-left:2px!important;letter-spacing:0} }
html body #timeline .timeline-axis-pill.axis-end{padding-left:7px!important;padding-right:7px!important}
html body #timeline .cx-arr .cx-label{margin-left:3px}
/* Route list: closer rows and a small "What kind of trip?" */
html body #startPage #routeList > .rt-row{padding-top:1px!important;padding-bottom:1px!important}
html body #startPage #tripPrompt{field-sizing:content;min-height:0!important;height:auto!important;max-height:7.5em}
html body #startPage .rt-type .sp-label{min-height:0!important;height:auto!important;margin:0 0 3px!important;line-height:1.2!important;align-items:center}
html body #startPage .rt-type .chip-row{margin:0!important}
html body #startPage #inspirationOpen{padding-top:1px!important;padding-bottom:1px!important;min-height:0!important;height:auto!important}
@layer rovego-typography {
  html body #startPage .rt-type .sp-label{font-size:10.5px!important;letter-spacing:.04em}
  html body #startPage .rt-type .sp-label small{font-size:11px!important;letter-spacing:0}
}
/* Phones: the logo scrolls with the sheet instead of floating over the form */
@media (max-width:600px){ html body #startPage .sp-head{position:static!important;top:auto!important} }
/* Opening a shared link: hide the old trip for the moment before the shared one loads */
html[data-shared-open="loading"] body{visibility:hidden}
/* Replanning: a slim moving bar instead of a summary to read afterwards */
.replan-progress{display:block;height:4px;border-radius:4px;background:rgba(44,74,62,.14);overflow:hidden;margin:4px 0 8px;position:relative}
.replan-progress i{position:absolute;top:0;bottom:0;width:38%;border-radius:4px;background:var(--tint,#2c4a3e);animation:replan-slide 1.3s ease-in-out infinite}
@keyframes replan-slide{0%{left:-38%}100%{left:100%}}
@media (prefers-reduced-motion:reduce){.replan-progress i{animation:none;left:0;width:100%;opacity:.5}}
/* Booked flight: the number stays editable; Look up again after changing it */
html body #timeline .airport-flight-info{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
html body #timeline .airport-flight-info .flight-no-edit{width:84px;height:26px;padding:0 7px;border:1px solid var(--sep,rgba(0,0,0,.14));border-radius:8px;background:var(--card,#fffdf6);font:inherit;font-weight:700;letter-spacing:.02em;color:var(--label)}
html body #timeline .airport-flight-info .flight-no-edit:focus{outline:none;border-color:var(--tint,#2c4a3e);box-shadow:0 0 0 3px rgba(44,74,62,.14)}
/* Book flight: departure windows from the time you're free; the Google Flights link follows the pick */
html body #timeline .flight-when{display:flex;flex-direction:column;gap:6px;margin:8px 0 2px}
html body #timeline .flight-when > label{display:flex;align-items:center;gap:6px;font-size:12.5px;font-weight:600;color:var(--label-2)}
html body #timeline .flight-when > label input{width:62px;height:26px;padding:0 6px;border:1px solid var(--sep,rgba(0,0,0,.14));border-radius:8px;background:var(--card,#fffdf6);font:inherit;font-weight:700;color:var(--label);text-align:center}
html body #timeline .flight-wins{display:flex;gap:6px;flex-wrap:wrap}
html body #timeline .flight-wins button{height:28px;padding:0 11px;border:1px solid color-mix(in srgb, var(--tint,#2c4a3e) 30%, transparent);border-radius:999px;background:var(--card,#fffdf6);color:var(--label);font:inherit;font-size:12.5px;font-weight:650;cursor:pointer}
html body #timeline .flight-wins button.on{background:var(--tint,#2c4a3e);border-color:var(--tint,#2c4a3e);color:#fff}
html body #timeline .flight-wins-why,html body #timeline .flight-wins-none{font-size:11px;color:var(--label-2)}
/* "Search this area": a small pill in the lower right of the map */
html body .map-shell > #discoverBtn{position:absolute!important;right:12px!important;bottom:30px!important;left:auto!important;top:auto!important;z-index:6;height:34px!important;min-height:34px!important;padding:0 14px!important;font-size:12.5px!important;font-weight:650;width:auto!important;margin:0!important;white-space:nowrap;box-shadow:0 2px 10px rgba(0,0,0,.14)}
/* Flight warnings: a small red ! before the title or the reminder */
html body .flight-alert{display:inline-grid!important;place-items:center;flex:none;width:18px;height:18px;margin-right:7px;border-radius:50%;background:#d93025!important;color:#fff!important;font-size:12px;font-weight:800;line-height:1;vertical-align:-3px}
.flight-timing-review h3 .flight-alert{width:20px;height:20px;font-size:13px}
html body #timeline .flight-departure-warning{display:flex;align-items:center;gap:0;margin:6px 0;padding:8px 10px;border-radius:12px;background:#fdecea;color:#8a1c12;font-size:12.5px}
html body #timeline .flight-departure-warning strong{font-weight:650}
html body #timeline .flight-availability-label .flight-alert{margin-right:5px}
.flight-avail-edit{display:flex;align-items:center;gap:8px;margin:4px 0 12px;font-weight:600;font-size:13px}
.flight-avail-edit input{width:70px;height:30px;padding:0 8px;border:1px solid var(--sep,rgba(0,0,0,.15));border-radius:9px;background:var(--card,#fffdf6);font:inherit;font-weight:700;text-align:center}
.flight-review-actions button.primary{background:var(--tint,#2c4a3e)!important;color:#fff!important;border-color:var(--tint,#2c4a3e)!important}
/* A sight inside a stop: "+" makes it a stop of its own */
html body #timeline .nested-stop-row .sub-promote{width:24px;height:24px;border:1px solid color-mix(in srgb, var(--tint,#2c4a3e) 40%, transparent);border-radius:50%;background:var(--card,#fffdf6);color:var(--tint,#2c4a3e);font-size:16px;font-weight:700;line-height:1;display:inline-grid;place-items:center;cursor:pointer;padding:0}
html body #timeline .nested-stop-row .sub-promote:hover{background:var(--tint,#2c4a3e);color:#fff}
html body #timeline .airport-flight-info [hidden]{display:none!important}
html body #timeline .nested-stop-row { grid-template-areas:"name name x" "rate rate rate" "time min add" "st st st"; }
html body #timeline .nested-stop-row .sub-promote { grid-area:add; justify-self:center; }
html body #timeline .nested-stop-row .sub-min input { width:46px!important; }

/* Flight block: one font size like the rows above; LAX and LAS equally bold; number, plane and Edit times on one line */
html body #timeline .flight-from-ap,html body #timeline .flight-to b{font-size:15px!important;font-weight:750!important;color:var(--label)!important;letter-spacing:.02em}
html body #timeline .flight-from .airport-flight-info{flex-wrap:nowrap!important;gap:6px}
html body #timeline .airport-flight-info .flight-no-edit{font-size:13px!important;font-weight:600!important;width:72px!important;height:26px!important}
html body #timeline .airport-flight-info .ed-link{white-space:nowrap}
@layer rovego-typography {
  html body #timeline .flight-from-ap,html body #timeline .flight-to b{font-size:15px!important;font-weight:750!important}
  html body #timeline .airport-flight-info .flight-no-edit{font-size:13px!important}
}
html body #timeline .airport-plan-card input[type=number]{width:46px!important}
/* Trip card: title, then one lighter line with days, places, distance and dates */
html body .trip-hero .th-stats{color:rgba(255,255,255,.74)!important;font-weight:500!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* Flight block: airport codes the same size as the rows, only bold */
@layer rovego-typography {
  html body #timeline .flight-from-ap,html body #timeline .flight-to b{font-size:13px!important;font-weight:750!important}
}
/* Red exclamation: just the mark, no circle */
html body .flight-alert{width:auto!important;height:auto!important;background:none!important;color:#d93025!important;font-size:15px;margin-right:4px;vertical-align:0}
/* Times dialog: flight number on top, "local time" right beside each time box */
.flight-no-head{display:flex;align-items:center;gap:10px;margin:0 0 10px;font-weight:700;font-size:15px}
.flight-no-head input{width:110px;height:34px;padding:0 10px;border:1px solid var(--sep,rgba(0,0,0,.15));border-radius:10px;background:var(--card,#fffdf6);font:inherit;font-weight:700;letter-spacing:.02em;text-transform:uppercase}
.flight-manual-times .local-time{display:inline-flex;align-items:center;gap:6px}
.flight-manual-times .local-time small{font-size:11px;color:var(--label-2);white-space:nowrap}
/* Compare routes: a route sketch per option */
.dir-sketch{display:block;width:100%;height:auto;margin:6px 0 4px;border-radius:10px;background:color-mix(in srgb, var(--fill,#f3f0e6) 70%, transparent)}
/* Day cover photo: fills the top of the card, edge to edge (inside its 2px outline) */
html body #timeline .it-day.has-photo > .day-photo{margin:-14px -14px 12px!important;width:calc(100% + 28px)!important;border-radius:20px 20px 0 0!important;background-size:cover!important;background-position:center!important}
/* Airport name after the code: ordinary small text */
@layer rovego-typography { html body #timeline .flight-ap small{font-size:12px!important} }
/* Compare routes: a small horizontal glass tab bar at the bottom of the map (same material as the forecast) */
.map-shell > .route-compare{position:absolute;left:50%;bottom:28px;transform:translateX(-50%);z-index:8;display:flex;align-items:center;gap:6px;max-width:calc(100% - 24px);padding:5px;border-radius:20px;
  background:var(--lg-float)!important;-webkit-backdrop-filter:var(--lg-blur)!important;backdrop-filter:var(--lg-blur)!important;border:.5px solid var(--lg-edge)!important;box-shadow:var(--lg-shadow-sm),var(--lg-spec)!important;animation:lg-fade var(--lg-med) var(--lg-ease)}
.map-shell > .route-compare[hidden]{display:none!important}
.route-compare .rc-tabs{display:flex;gap:4px;overflow-x:auto;scrollbar-width:none;min-width:0}
.route-compare .rc-tabs::-webkit-scrollbar{display:none}
.route-compare .rc-tab{flex:none;display:grid;grid-template-columns:auto auto;grid-template-rows:auto auto;column-gap:6px;align-items:center;padding:6px 11px 6px 9px;border:0;border-radius:15px;background:transparent;color:var(--label);font:inherit;text-align:left;cursor:pointer;transition:background var(--lg-fast),box-shadow var(--lg-fast)}
.route-compare .rc-tab:hover{background:var(--lg-active)}
.route-compare .rc-tab.on{background:color-mix(in srgb, var(--c) 16%, var(--card,#fff));box-shadow:inset 0 0 0 1.5px var(--c)}
.route-compare .rc-swatch{grid-row:1/3;width:16px;height:4px;border-radius:2px;background:var(--c)}
.route-compare .rc-swatch.dash{background:repeating-linear-gradient(90deg,var(--c) 0 5px,transparent 5px 8px)}
.route-compare .rc-name{font-size:12px;font-weight:700;white-space:nowrap}
.route-compare .rc-low{margin-left:4px;padding:0 5px;border-radius:6px;background:#e3f4e6;color:#1e7a34;font-size:10px;font-weight:700}
.route-compare .rc-data{font-size:11px;color:var(--label-2);white-space:nowrap;font-variant-numeric:tabular-nums}
.route-compare .rc-data b{color:var(--label);font-weight:700}
.route-compare .rc-data em{font-style:normal;font-weight:700;margin-left:3px}
.route-compare .rc-data em.good{color:#1e7a34}.route-compare .rc-data em.bad{color:#c0392b}
.route-compare .rc-use{flex:none;height:32px;padding:0 13px;border-radius:999px;font-size:12.5px;font-weight:700;white-space:nowrap}
.route-compare .rc-use[hidden]{display:none}
.route-compare .rc-x{flex:none;width:28px;height:28px;border:0;border-radius:50%;background:transparent;color:var(--label-2);cursor:pointer;font-size:13px}
.route-compare .rc-x:hover{background:var(--lg-active)}
@media (max-width:600px){ .map-shell > .route-compare{bottom:10px;max-width:calc(100% - 16px)} }
.map-shell:has(> .route-compare:not([hidden])) > #discoverBtn{display:none!important}
@layer rovego-typography {
  .route-compare .rc-name{font-size:12px!important}
  .route-compare .rc-data{font-size:11px!important}
  .route-compare .rc-use{font-size:12.5px!important}
}
.route-compare .rc-swatch.rc-cal{width:16px;height:16px;border-radius:50%;background:color-mix(in srgb,var(--c) 18%,transparent);color:var(--label-2);font-size:11px;font-style:normal;display:grid;place-items:center}
.route-compare .rc-use:disabled{background:var(--fill,#eee)!important;color:var(--label-2)!important;border-color:transparent!important;cursor:not-allowed}
.route-compare .rc-tab{grid-template-rows:auto auto auto}
.route-compare .rc-flag{grid-column:2;font-size:10.5px;font-weight:600;white-space:nowrap;color:#b45309}
.route-compare .rc-flag.high{color:#c0392b}
/* ---- Booked flight: the departure and arrival airports are stops, in the same cream card as a place ----
   Departure card: small, regular-weight rows (travel to airport, security, at the airport) split by dashed
   lines, then the airport code with its number. Arrival card: the airport, then the time to get out. */
html body #timeline .cx .airport-plan-card.ap-card{margin:6px 0 0!important;padding:4px 10px 4px!important;border:0!important;border-radius:16px!important;background:var(--card-2)!important;color:var(--label-2)!important;overflow:visible!important}
html body #timeline .cx .airport-plan-card.ap-card + .airport-plan-card.ap-card{margin-top:8px!important}
html body #timeline .ap-card .ap-steps{padding:0!important}
html body #timeline .ap-card .ap-steps > .airport-plan-row{border-top:1px dashed var(--sep)!important;min-height:26px;padding:2px 0!important}
html body #timeline .ap-card .ap-steps > .airport-plan-row:first-child{border-top:0!important;padding-right:0!important}
html body #timeline .ap-card .ap-steps :is(.airport-plan-row,.airport-pick-row) :is(span,label,select){font-weight:400!important;color:var(--label-2)!important}
html body #timeline .ap-card .ap-steps .airport-pick-row{border-top:1px dashed var(--sep)!important}
html body #timeline .ap-card .ap-steps :is(input,select){border-color:var(--sep)!important}
html body #timeline .ap-card .ap-head{display:flex;align-items:center;gap:8px;min-height:36px;padding:6px 0!important;border:0!important;flex-wrap:nowrap}
html body #timeline .ap-depart .ap-head{border-top:1px dashed var(--sep)!important}
html body #timeline .ap-arrive .ap-head{padding-bottom:4px!important}
html body #timeline .ap-card .ap-head .flight-from-ap,html body #timeline .ap-card .ap-head > b{flex:none;font-size:15px!important;font-weight:750!important;color:var(--label)!important;letter-spacing:.02em}
html body #timeline .ap-card .ap-head small{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px!important;font-weight:400!important;color:var(--label-2)!important}
html body #timeline .ap-card .ap-head .airport-flight-info{flex:1;min-width:0;border-top:0!important;padding:0!important;min-height:0!important}
html body #timeline .ap-card .ap-badge{flex:none;display:inline-grid;place-items:center;width:24px!important;height:24px!important;margin:0!important;border-radius:50%;font-size:12px!important;font-weight:700}
html body #timeline .ap-card button.ed-link{color:var(--tint)!important}
/* Bottom-right price inside a day: that day's price, with a small "Day N" in front */
html body .planner-bottom .pp-total .pp-day-label{font-size:12px;font-weight:600;color:var(--label-2);margin-right:2px}
/* ---- Itinerary sheet: route map on top, then each day with the same detail as the page ---- */
.price-panel .pp-map{margin:2px 14px 14px;border-radius:16px;overflow:hidden;background:#eef2ea;aspect-ratio:1/.72;box-shadow:0 1px 0 var(--sep)}
.price-panel .pp-map[hidden]{display:none}
.price-panel .pp-map canvas{display:block;width:100%;height:auto}
.pp-day-h .pp-day-title{display:block;margin:2px 0 0 15px;font-size:12px;font-weight:500;color:var(--label-2)}
.pp-itin .pp-l{display:flex;align-items:flex-start;gap:8px;min-width:0;flex:1}
.pp-itin .pp-tx{min-width:0}
.pp-itin .pp-tx small{display:block;margin-top:2px;font-size:12px;font-weight:400;line-height:1.35;color:var(--label-2)}
.pp-itin .pp-n{flex:none;display:inline-grid;place-items:center;width:20px;height:20px;margin-top:0;border-radius:50%;background:var(--day,#2f5d50);color:#fff;font-size:11px;font-style:normal;font-weight:700}
.pp-itin .pp-n.is-airport{background:#5b4a86}
.pp-itin > li:is(.pp-k-place,.pp-k-airport){background:var(--card-2)}
.pp-itin > li:is(.pp-k-place,.pp-k-airport) .pp-tx{font-weight:600}
.pp-itin > li.pp-k-child{min-height:30px;padding-top:5px;padding-bottom:5px}
.pp-itin > li.pp-k-child .pp-tx{font-size:13px;color:var(--label-2)}
.hourly-item .hi-sub{font-size:12px;color:var(--label-2)}
.pp-day-h > span{flex:1;min-width:0}
.pp-day-h > b{flex:none;white-space:nowrap}
/* ---- Day header: "Long day" sits in front of the day's title ---- */
html body #timeline .it-day-meta .day-theme-row{flex:1 1 100%;order:-1;display:flex;align-items:center;gap:8px;min-width:0}
html body #timeline .it-day-meta .day-theme-row .day-theme{flex:1;min-width:0;order:0}
html body #timeline .it-day-meta .day-theme-row .it-chip{flex:none}
/* ---- Airports and stations: cards of their own, exactly like a place ---- */
html body #timeline .ap-stop .pc-body{padding-right:4px!important;min-width:0}
html body #timeline .ap-stop .ap-name{display:flex;align-items:baseline;gap:7px;min-width:0;white-space:nowrap;overflow:hidden}
html body #timeline .ap-stop .ap-name b{flex:none;font-weight:600;color:var(--label)}
html body #timeline .ap-stop .ap-name small{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;font-size:12.5px!important;font-weight:400!important;color:var(--label-2)!important}
html body #timeline .ap-stop .ap-steps{margin-top:6px;padding:0!important}
html body #timeline .ap-stop .ap-steps > :is(.airport-plan-row,.airport-pick-row,.nested-stops){border-top:1px dashed var(--sep)!important;min-height:26px;padding:3px 0!important}
html body #timeline .ap-stop .ap-steps > :first-child{border-top:0!important}
html body #timeline .ap-stop .ap-steps :is(span,label,select,.ap-fixed){font-size:12.5px!important;font-weight:400!important;color:var(--label-2)!important}
html body #timeline .ap-stop .ap-steps input{width:44px!important;height:22px!important;min-height:22px!important;padding:0 4px!important;border:1px solid var(--sep)!important;border-radius:7px;background:var(--bg);color:var(--label);font:inherit;font-size:12.5px!important;text-align:center}
html body #timeline .ap-stop .ap-flight-row{margin-top:2px;padding-top:5px;border-top:1px dashed var(--sep)}
html body #timeline .ap-stop .ap-flight-row .airport-flight-info{border-top:0!important;padding:0!important;min-height:28px!important;flex-wrap:nowrap;gap:6px}
html body #timeline .ap-stop .ap-flight-row button.ed-link{color:var(--tint)!important}
html body #timeline .cx-ride-line{display:flex;align-items:center;gap:7px;min-height:30px;font-size:13.5px;font-weight:500;color:var(--label)}
html body #timeline .cx-ride-line .ap-ride-ico{color:#6a4fd0}
html body #timeline .cx-split.cx-onward .cx-egress{margin-top:4px}
html body #timeline .cx-split.cx-ride{padding-top:10px!important;padding-bottom:10px!important}
html body #timeline .cx-split.cx-ride .cx-ride-line{min-height:48px!important;align-items:center!important}
html body #timeline .cx-split.cx-ride .cx-arr{min-height:30px}
/* Itinerary sheet: PDF + poster buttons side by side; the full-itinerary dialog gets the map too */
.pp-sheet-head .pp-sheet-acts{display:inline-flex;gap:6px;align-items:center}
.itin-full-map{margin:0 0 14px!important;border-radius:16px;overflow:hidden;background:#eef2ea}
.itin-full-map canvas{display:block;width:100%;height:auto}
/* ---- Time conflict: the stop you leave from turns red, with the suggested departure, "Use" and Ignore ---- */
html body #timeline .it-item.is-place.has-conflict{background:color-mix(in srgb,#d93442 12%,var(--card-2))!important;box-shadow:inset 0 0 0 1.5px #d9344299!important}
html body #timeline .pc-conflict{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:4px 10px;margin-top:6px;font-size:13px;line-height:1.35;color:#c62732}
html body #timeline .pc-conflict b{font-weight:750}
html body #timeline .pc-conflict small{font-size:11.5px;color:#c62732cc}
html body #timeline .pc-conflict-acts{display:inline-flex;gap:8px}
html body #timeline .pc-conflict-acts button.ed-link{color:#c62732!important;font-weight:700;padding:2px 8px!important;border:1px solid #d9344255;border-radius:999px;background:#fff8}
html body #timeline .cx .pc-conflict{padding:8px 10px;border-radius:12px;background:#d9344212;box-shadow:inset 0 0 0 1.5px #d9344266}
html body #timeline .cx-split.cx-ride{padding-top:6px!important;padding-bottom:6px!important}
html body #timeline .ap-stop .pc-title .tz-change{flex:none;font-size:11px;font-weight:700;color:#a35f00}
/* Flight line: takeoff pill · ✈ flight number (editable) · route · Edit — the flight shown once */
html body #timeline .cx-ride-line{flex-wrap:wrap;row-gap:2px}
html body #timeline .cx-ride-line .airport-flight-info{flex:none;border-top:0!important;padding:0!important;min-height:0!important;gap:6px;flex-wrap:nowrap}
html body #timeline .cx-ride-line .flight-number{color:#6a4fd0}
html body #timeline .cx-ride-line .flight-no-edit{width:70px!important;height:26px!important;font-weight:650!important}
html body #timeline .cx-ride-line .ap-ride-route{font-size:13px;color:var(--label-2);white-space:nowrap}
html body #timeline .cx-egress .egress-book{font-size:12.5px;font-weight:650;color:var(--tint);text-decoration:none;white-space:nowrap}
/* ---- "Add here": six choices, three per row; the text box appears after Custom ---- */
html body .ins-types.ins-six{grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:6px!important}
html body .ins-types.ins-six button{min-width:0;white-space:nowrap}
html body .ins-types.ins-six button.on{background:var(--tint)!important;color:var(--on-tint,#fff)!important}
/* ---- Closed tonight: a bigger red box, short text, a real "Find hotels nearby" button ---- */
html body #timeline .area-note.is-warn{width:100%;max-width:none;box-sizing:border-box;padding:12px 14px!important;border-radius:14px!important;font-size:14px!important;line-height:1.45!important;color:#a3222d!important}
html body #timeline .area-note.is-warn p{margin:0 0 8px}
html body #timeline .area-btn{display:inline-flex;align-items:center;gap:6px;height:36px;padding:0 16px;border:0;border-radius:999px;background:var(--tint);color:var(--on-tint,#fff);font:inherit;font-size:13.5px;font-weight:650;cursor:pointer}
html body #timeline .area-btn:hover{filter:brightness(1.08)}
/* ---- "Leave your starting point by …" in red ---- */
.flight-timing-review h3.leave-by-title{color:#c62732}
/* ---- Account button stays on the far right on the trip page too ---- */
html body:has(#pathSection.show) #rvDock #accountEntry{display:flex!important;order:6!important;margin-left:6px!important}
/* Closed-tonight box: as wide as the card (it starts under the number, not under the name) */
html body #timeline .it-item.is-place > .pc-body > .area-note.is-warn{margin-left:-62px!important;width:calc(100% + 88px)!important}
/* Closed-tonight box: centred in the card */
html body #timeline .it-item.is-place > .pc-body > .area-note.is-warn{margin-left:-60px!important;width:calc(100% + 66px)!important}
/* "Day ▾" on a place card: move it to any day */
html body #timeline .pc-move{display:inline-flex;align-items:center;flex:none}
html body #timeline .pc-move select{height:26px;min-height:26px;padding:0 20px 0 9px;border:1px solid var(--sep);border-radius:999px;background:var(--card) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%23777' stroke-width='1.5'/%3E%3C/svg%3E") no-repeat right 7px center/9px;-webkit-appearance:none;appearance:none;color:var(--label-2);font:inherit;font-size:12.5px;font-weight:600;cursor:pointer}
/* "Add a stop" opens as a cream card like a place */
html body #timeline .it-insert-panel{background:var(--card-2)!important;border:0!important;box-shadow:none!important;border-radius:16px!important;padding:12px!important}
html body #timeline .it-insert-panel .ins-types button{background:var(--card,#fffdf6)!important}
html body #timeline .ins-results{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:4px}
html body #timeline .ins-results:empty{display:none}
html body #timeline .ins-results button{display:flex;flex-direction:column;align-items:flex-start;width:100%;padding:7px 10px;border:0;border-radius:10px;background:var(--card,#fffdf6);text-align:left;cursor:pointer;font:inherit}
html body #timeline .ins-results button:hover{background:color-mix(in srgb,var(--tint) 10%,var(--card,#fff))}
html body #timeline .ins-results b{font-size:13.5px;font-weight:650;color:var(--label)}
html body #timeline .ins-results small{font-size:11.5px;color:var(--label-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
html body #timeline .ins-results .ins-none{font-size:12px;color:var(--label-2);padding:4px 2px}
/* Trip sheet: pages stacked, a note when the phone can't share */
.poster-sheet .poster-view img{display:block;width:100%;height:auto;margin:0 0 12px;border-radius:8px;box-shadow:0 2px 12px rgba(0,0,0,.12);-webkit-user-drag:none}
.poster-sheet .poster-note{margin:6px 0 0;font-size:13px;color:var(--label-2,#666);text-align:center}
/* "📅 Day N ▾" on every place and "+ Add to… ▾" on nearby places: add/move to any day */
html body #timeline .pc-move select{padding-left:26px!important;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Crect x='2' y='3' width='12' height='11' rx='2' fill='none' stroke='%23666' stroke-width='1.3'/%3E%3Cpath d='M2 6.5h12M5 1.8v2.6M11 1.8v2.6' stroke='%23666' stroke-width='1.3'/%3E%3C/svg%3E"),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%23777' stroke-width='1.5'/%3E%3C/svg%3E")!important;background-repeat:no-repeat,no-repeat!important;background-position:8px center,right 7px center!important;background-size:13px,9px!important}
.dp-add-pick select{height:28px;padding:0 22px 0 10px;border:0;border-radius:999px;background:var(--tint) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%23fff' stroke-width='1.5'/%3E%3C/svg%3E") no-repeat right 8px center/9px;-webkit-appearance:none;appearance:none;color:var(--on-tint,#fff);font:inherit;font-size:12.5px;font-weight:650;cursor:pointer}
/* Compare routes: a preview card above the tab bar — what would change, before "Use"/"Move the trip" */
.map-shell > .route-compare .rc-preview{position:absolute;left:0;right:0;bottom:calc(100% + 8px);padding:12px 14px;border-radius:16px;background:var(--card,#fffdf6);color:var(--label,#1c1c1e);box-shadow:0 8px 28px rgba(0,0,0,.18);font-size:13px;line-height:1.4;max-height:42vh;overflow:auto}
.map-shell > .route-compare .rc-preview[hidden]{display:none}
.map-shell > .route-compare .rc-preview strong{display:block;margin-bottom:6px;font-size:14px}
.map-shell > .route-compare .rc-preview ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}
.map-shell > .route-compare .rc-preview li{display:grid;grid-template-columns:92px 1fr;gap:8px}
.map-shell > .route-compare .rc-preview li > span{color:var(--label-2,#666);font-weight:600}
.map-shell > .route-compare .rc-preview em{font-style:normal;font-weight:700}
.map-shell > .route-compare .rc-preview em.good{color:#1e8a4c}.map-shell > .route-compare .rc-preview em.bad{color:#c62732}
.map-shell > .route-compare .rc-preview .rc-pv-flag.warn,.map-shell > .route-compare .rc-preview .rc-pv-flag.bad{color:#a35f00}
.map-shell > .route-compare .rc-preview small{display:block;margin-top:8px;color:var(--label-2,#666);font-size:11.5px}
/* Bottom right: day · total (· of budget), per person */
html body .planner-bottom .pp-total .pp-budget-of{margin-left:4px}
html body .planner-bottom .pp-total .pp-budget-of.over{color:#c62732}
html body .planner-bottom .pp-total b{font-size:18px!important}
.inside-pin.opt-pin{width:auto!important;min-width:22px;padding:0 5px;border-radius:999px;font-size:11px}
/* Return flight: the earliest window you can make, then Book flight */
html body #timeline .flight-ask .flight-when:not(:has(label)) .flight-wins{margin:2px 0 10px}
/* Airport code in the card is a picker (choose ONT instead of LAX, …) */
html body #timeline .ap-stop .ap-code-pick{flex:none;display:inline-flex}
html body #timeline .ap-stop .ap-code-pick select{height:auto!important;min-height:0!important;padding:0 16px 0 0!important;border:0!important;box-shadow:none!important;background:transparent url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%23777' stroke-width='1.5'/%3E%3C/svg%3E") no-repeat right 2px center/9px!important;-webkit-appearance:none;appearance:none;color:var(--label);font:inherit;font-size:17px;font-weight:650;letter-spacing:.02em;cursor:pointer}
/* Not booked yet: the flight line holds Book flight / earliest window / flight number */
html body #timeline .cx-ride-line .flight-ask-inline{flex:1 1 100%;margin:4px 0;padding:10px 12px;border:1px solid var(--sep);border-radius:14px;background:var(--card,#fffdf6)}
/* "Add link" (import from a travel link) — hidden for now, the feature stays in the code */
#inspirationOpen,.inspiration-entry{display:none!important}
/* "Add here" panel: fixed size inside the day card (no spill-over); search results scroll inside it */
html body #timeline .it-insert-panel{box-sizing:border-box!important;width:100%!important;max-width:100%!important;margin-left:0!important;margin-right:0!important;overflow:hidden}
html body #timeline .day-end .it-insert-panel,html body #timeline .cx .it-insert-panel{margin-left:0!important;width:100%!important}
html body #timeline .it-insert-panel .ins-types.ins-six button{min-width:0!important;overflow:hidden;text-overflow:ellipsis}
html body #timeline .it-insert-panel .ins-place{grid-template-columns:minmax(0,1fr) auto!important}
html body #timeline .it-insert-panel .ins-results{height:200px;overflow-y:auto;overscroll-behavior:contain}
html body #timeline .it-insert-panel .ins-results:empty{display:block;height:200px}
