/* Schedule places and restaurant bookmarks */
.trip-map-section { padding-top:var(--space-3xl); }
.place-day-tabs {
  display:grid;
  grid-template-columns:repeat(6,1fr);
  margin-top:var(--space-xl);
  border-top:1px solid var(--ink);
  border-left:1px solid var(--ink);
}
.place-day-tabs button {
  min-width:0;
  min-height:48px;
  padding:0;
  border:0;
  border-right:1px solid var(--ink);
  border-bottom:1px solid var(--ink);
  background:transparent;
  color:var(--ink);
  cursor:pointer;
  font:500 .75rem 'DM Mono',monospace;
}
.place-day-tabs button.active {
  background:var(--coral);
  font-weight:800;
}
.place-day-tabs button:focus-visible {
  position:relative;
  z-index:1;
  outline:2px solid var(--ink);
  outline-offset:-4px;
}
.schedule-map-frame {
  margin-top:var(--space-md);
  border:1px solid var(--ink);
  background:var(--ink);
}
.schedule-map-toolbar {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:var(--space-md);
  min-height:60px;
  padding:10px var(--space-md);
  color:var(--paper);
}
.schedule-map-toolbar > div:first-child {
  display:grid;
  gap:3px;
}
.schedule-map-toolbar > div:first-child > span,.schedule-map-caption > div span {
  color:var(--yellow);
  font:500 var(--text-caption) 'DM Mono',monospace;
  letter-spacing:0;
}
.schedule-map-toolbar strong {
  font-size:.8125rem;
}
.schedule-map-toolbar > .schedule-map-actions {
  display:flex;
  flex:0 0 auto;
  gap:6px;
}
.schedule-map-toolbar button,.map-alternative-action {
  display:flex;
  align-items:center;
  justify-content:center;
  gap:6px;
  min-width:70px;
  min-height:44px;
  padding:0 10px;
  border:1px solid var(--paper);
  border-radius:4px;
  background:var(--paper);
  color:var(--ink);
  cursor:pointer;
  font:800 .75rem/1 'Manrope',sans-serif;
}
.map-alternative-action input {
  appearance:none;
  width:9px;
  height:9px;
  flex:0 0 9px;
  margin:0;
  border:1px solid var(--muted);
  border-radius:50%;
  background:transparent;
  pointer-events:none;
}
.map-alternative-action input:checked {
  border-color:var(--coral);
  background:var(--coral);
}
.schedule-map-toolbar #mapAddRestaurant {
  border-color:var(--yellow);
  background:var(--yellow);
}
.schedule-map-toolbar button:focus-visible,.map-alternative-action:focus-within {
  outline:2px solid var(--yellow);
  outline-offset:3px;
}
.schedule-map-stage {
  position:relative;
  overflow:hidden;
  border-top:1px solid rgba(245,243,238,.28);
  border-bottom:1px solid rgba(245,243,238,.28);
}
.schedule-map-canvas {
  width:100%;
  height:clamp(320px,78vw,430px);
  background:#e9edf0;
}
.schedule-map-stage.is-unavailable .schedule-map-canvas { height:180px; }
.schedule-map-stage.is-unavailable .maplibregl-control-container,
.schedule-map-stage.is-unavailable .schedule-map-legend { display:none; }
.schedule-map-status {
  position:absolute;
  z-index:4;
  top:50%;
  left:50%;
  width:max-content;
  max-width:calc(100% - 40px);
  margin:0;
  padding:10px 12px;
  transform:translate(-50%,-50%);
  background:var(--ink);
  color:var(--paper);
  font-size:.75rem;
  text-align:center;
}
.schedule-map-status.error {
  background:var(--coral);
  color:var(--ink);
}
.schedule-map-legend {
  position:absolute;
  z-index:3;
  right:10px;
  bottom:10px;
  display:flex;
  align-items:center;
  gap:10px;
  padding:8px 9px;
  border:1px solid rgba(16,24,40,.2);
  background:rgba(255,255,255,.94);
  color:var(--ink);
  font:500 .625rem/1 'DM Mono',monospace;
}
.schedule-map-legend span {
  display:inline-flex;
  align-items:center;
  gap:4px;
}
.schedule-map-legend i {
  display:inline-block;
  flex:0 0 auto;
}
.schedule-map-legend .route-key {
  width:17px;
  height:4px;
  background:var(--coral);
}
.schedule-map-legend .pin-key,.schedule-map-legend .food-key {
  width:9px;
  height:9px;
  border-radius:50%;
  background:var(--ink);
}
.schedule-map-legend .food-key {
  background:var(--yellow);
}
.schedule-map-legend .alternative-key {
  background:var(--coral);
  border:1px dashed var(--ink);
}
.schedule-map-marker {
  width:32px;
  height:32px;
  padding:0;
  overflow:visible;
  border:0;
  background:transparent;
  cursor:pointer;
}
.schedule-map-marker-visual {
  display:grid;
  place-items:center;
  width:32px;
  height:32px;
  border:3px solid #fff;
  border-radius:50%;
  background:var(--ink);
  box-shadow:0 2px 7px rgba(16,24,40,.34);
  color:var(--yellow);
  font:800 .75rem/1 'DM Mono',monospace;
  transform:translateX(var(--marker-shift-x, 0));
  transition:transform 300ms cubic-bezier(.25,1,.5,1),background 160ms cubic-bezier(.25,1,.5,1),box-shadow 160ms cubic-bezier(.25,1,.5,1);
}
.schedule-map-marker.all-days:not(.stay):not(.airport) .schedule-map-marker-visual {
  font-size:0;
}
.schedule-map-marker.all-days:not(.stay):not(.airport) .schedule-map-marker-visual::after {
  width:7px;
  height:7px;
  border-radius:50%;
  background:currentColor;
  content:'';
}
.schedule-map-marker.is-overlap {
  z-index:1;
}
.schedule-map-marker.is-overlap .schedule-map-marker-visual {
  will-change:transform;
}
.schedule-map-marker.restaurant .schedule-map-marker-visual {
  background:var(--yellow);
  color:var(--ink);
}
.schedule-map-marker.alternative .schedule-map-marker-visual {
  background:var(--coral);
  color:var(--ink);
  border-style:dashed;
}
.schedule-map-marker.stay .schedule-map-marker-visual {
  background:var(--ink);
  color:var(--yellow);
}
.schedule-map-marker.airport .schedule-map-marker-visual {
  background:var(--blue);
  color:var(--ink);
}
.schedule-map-marker.stay svg,.place-pin.stay .place-pin-no svg {
  width:17px;
  height:17px;
  fill:currentColor;
}
.schedule-map-marker.active {
  z-index:2;
}
.schedule-map-marker.active .schedule-map-marker-visual {
  background:var(--coral);
  color:var(--ink);
  transform:translateX(var(--marker-shift-x, 0)) scale(1.18);
  box-shadow:0 3px 10px rgba(16,24,40,.42);
}
.schedule-map-marker:focus-visible { outline:none; }
.schedule-map-marker:focus-visible .schedule-map-marker-visual {
  outline:3px solid var(--ink);
  outline-offset:3px;
}
.schedule-map-stage .maplibregl-ctrl-top-right {
  top:8px;
  right:8px;
}
.schedule-map-stage .maplibregl-ctrl-group {
  overflow:hidden;
  border:1px solid rgba(16,24,40,.2);
  border-radius:4px;
  box-shadow:0 2px 8px rgba(16,24,40,.16);
}
.schedule-map-stage .maplibregl-ctrl-group button {
  width:36px;
  height:36px;
}
.schedule-map-caption {
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:var(--space-lg);
  align-items:center;
  min-height:74px;
  padding:12px var(--space-md);
  color:var(--paper);
}
.schedule-map-caption > div {
  display:grid;
  gap:3px;
  min-width:0;
}
.schedule-map-caption strong {
  overflow:hidden;
  font-size:.9375rem;
  letter-spacing:0;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.schedule-map-caption a {
  display:inline-flex;
  align-items:center;
  gap:8px;
  min-height:40px;
  padding-left:var(--space-md);
  border-left:1px solid rgba(245,243,238,.25);
  color:var(--paper);
  text-decoration:none;
  font-size:.75rem;
  font-weight:800;
}
.schedule-map-caption a span { color:var(--yellow); }
.place-pin-list {
  margin-top:var(--space-md);
  border-top:1px solid var(--line);
}
.place-pin {
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:var(--space-md);
  align-items:center;
  width:100%;
  min-height:66px;
  padding:10px 0;
  border:0;
  border-bottom:0;
  background:transparent;
  color:var(--ink);
  text-align:left;
  cursor:pointer;
}
.place-pin.all-days:not(.stay):not(.airport) .place-pin-no {
  font-size:0;
}
.place-pin.all-days:not(.stay):not(.airport) .place-pin-no::after {
  width:7px;
  height:7px;
  border-radius:50%;
  background:currentColor;
  content:'';
}
.place-pin-no {
  display:grid;
  place-items:center;
  width:34px;
  height:34px;
  border:1px solid var(--ink);
  border-radius:50%;
  font:500 .6875rem 'DM Mono',monospace;
}
.place-pin.restaurant-pin .place-pin-no {
  border-color:var(--coral);
  background:var(--coral);
}
.place-pin.restaurant > span:first-child {
  border-color:var(--coral);
  background:var(--coral);
}
.place-pin.alternative > span:first-child {
  border-color:var(--coral);
  background:var(--coral);
  color:var(--ink);
}
.place-pin.stay .place-pin-no {
  border-color:var(--ink);
  background:var(--ink);
  color:var(--yellow);
}
.place-pin.airport .place-pin-no {
  border-color:var(--blue);
  background:var(--blue);
  color:var(--ink);
  font-size:1rem;
}
.place-pin > span:nth-child(2) { min-width:0; }
.place-pin > span:nth-child(2) strong,.place-pin > span:nth-child(2) small { display:block; }
.place-pin > span:nth-child(2) strong {
  overflow:hidden;
  font-size:.875rem;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.place-pin > span:nth-child(2) small {
  display:-webkit-box;
  overflow:hidden;
  margin-top:2px;
  color:var(--muted);
  font-size:.75rem;
  line-height:1.4;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:2;
}
.place-pin > .arrow { color:var(--coral-ink); font-size:1.25rem; }
.place-pin-copy { min-width:0; }
.place-pin-copy strong,.place-pin-copy small { display:block; }
.place-pin-copy strong {
  overflow:hidden;
  font-size:.875rem;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.place-pin-copy small {
  margin-top:2px;
  color:var(--muted);
  font-size:.75rem;
}
.place-pin-arrow {
  color:var(--coral-ink);
  font-size:1.25rem;
  transition:transform .18s ease-out;
}
.place-pin.active {
  background:color-mix(in srgb,var(--yellow) 32%,transparent);
}
.place-pin.active .place-pin-no {
  background:var(--ink);
  color:var(--yellow);
}
.place-pin:focus-visible {
  outline:2px solid var(--ink);
  outline-offset:-2px;
}
.day-route-link {
  display:flex;
  align-items:center;
  justify-content:space-between;
  min-height:52px;
  margin-top:var(--space-lg);
  padding:0 var(--space-lg);
  background:var(--blue);
  color:var(--ink);
  text-decoration:none;
  font-size:.8125rem;
  font-weight:800;
}
.day-route-link[hidden] { display:none; }
.day-route-link span { font-size:1.125rem; }
.day-route-link:focus-visible {
  outline:2px solid var(--ink);
  outline-offset:3px;
}
.restaurant-section {
  container:restaurant / inline-size;
  min-height:calc(100dvh - var(--bottom-nav-reserve) - 56px);
  padding-top:var(--space-2xl);
}
.restaurant-heading {
  display:flex;
  align-items:baseline;
  justify-content:space-between;
  gap:var(--space-md);
}
.restaurant-heading h2 { margin-bottom:var(--space-lg); }
.restaurant-mode {
  flex:0 0 auto;
  padding:4px 7px;
  background:var(--yellow);
  font:500 .625rem 'DM Mono',monospace;
  letter-spacing:.04em;
}
.restaurant-mode[data-mode="local"] { background:#ffb8a9; }
.restaurant-day-tabs {
  display:grid;
  grid-template-columns:repeat(5,minmax(0,1fr));
  margin-top:var(--space-xl);
  border-top:1px solid var(--ink);
  border-left:1px solid var(--ink);
}
.restaurant-day-tabs button {
  min-width:0;
  min-height:48px;
  padding:0;
  border:0;
  border-right:1px solid var(--ink);
  border-bottom:1px solid var(--ink);
  background:transparent;
  color:var(--ink);
  cursor:pointer;
  font:500 .75rem 'DM Mono',monospace;
}
.restaurant-day-tabs button.active { background:var(--coral); font-weight:800; }
.restaurant-day-tabs button:focus-visible {
  position:relative;
  z-index:1;
  outline:2px solid var(--ink);
  outline-offset:-4px;
}
.restaurant-search-shell {
  margin-top:var(--space-lg);
  padding:var(--space-lg);
  border:1px solid var(--ink);
  background:color-mix(in srgb,var(--blue) 18%,var(--paper));
}
.restaurant-search-context {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:var(--space-md);
