/* Override Squarespace c-wrapper width constraint */
.c-wrapper { max-width: none !important; width: 100% !important; padding-left: 0 !important; padding-right: 0 !important; }

/* ── oh-prefixed namespace to avoid KW collisions ── */
*, *::before, *::after { box-sizing: border-box; }

.oh-wrap {
  font-family: 'Century Gothic', 'CenturyGothicPaneuropean', Arial, Helvetica, sans-serif;
  background: #e8ecf1;
  padding: 0 0 48px;
  color: #333;
}

/* HEADER */
.oh-header {
  background: #32143f;
  padding: 32px 0 28px;
  text-align: center;
}
.oh-header-inner {
  max-width: 1920px;
  margin: 0 auto;
  padding: 0 24px;
}
.oh-brand {
  display: block;
  font-size: 11px;
  font-weight: bold;
  letter-spacing: 3px;
  text-transform: uppercase;
  color: #E098FF;
  margin-bottom: 8px;
}
.oh-brand-sub {
  display: block;
  font-size: 9px;
  font-weight: normal;
  letter-spacing: 1.5px;
  color: rgba(255,255,255,0.45);
  margin-top: 2px;
  text-transform: uppercase;
}
.oh-title {
  margin: 0 0 8px;
  font-size: clamp(26px, 5vw, 42px);
  font-weight: bold;
  color: #fff;
  text-transform: uppercase;
  letter-spacing: 2px;
}
.oh-date {
  font-size: 16px;
  color: #E8A820;
  font-weight: bold;
  margin: 0;
}

/* CONTROLS */
.oh-controls {
  background: #faf7fd;
  border-bottom: 3px solid #E098FF;
}
.oh-controls-inner {
  max-width: 1920px;
  margin: 0 auto;
  padding: 0 20px;
}
.oh-controls-row1 {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: center;
  padding: 12px 0 10px;
}
/* FILTER ROWS */
.oh-frow {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 12px 28px;
  padding: 10px 0;
  border-top: 1px solid #f0eaf8;
}
.oh-frow:first-child { border-top: none; padding-top: 8px; }
#oh-featured-group { flex: 0 0 auto; flex-direction: column; align-items: flex-start; gap: 5px; }
#oh-day-group      { flex: 0 0 auto; flex-direction: column; align-items: flex-start; gap: 5px; min-width: 0; }
#oh-time-group     { flex: 1 1 0; flex-direction: column; align-items: flex-start; gap: 5px; min-width: 0; }
#oh-price-group    { flex: 1 1 auto; flex-direction: column; align-items: flex-start; gap: 5px; }
#oh-beds-group     { flex: 0 0 auto; flex-direction: column; align-items: flex-start; gap: 5px; }
#oh-baths-group    { flex: 0 0 auto; flex-direction: column; align-items: flex-start; gap: 5px; }
#oh-sqft-group     { flex: 0 0 auto; flex-direction: column; align-items: flex-start; gap: 5px; }
#oh-dom-group      { flex: 0 0 auto; flex-direction: column; align-items: flex-start; gap: 5px; }
#oh-sort-group     { flex: 0 0 auto; flex-direction: column; align-items: flex-start; gap: 5px; }
#oh-city-group     { flex: 1 1 100%; }

.oh-filter-group {
  display: flex;
  align-items: center;
  gap: 7px;
  flex-wrap: wrap;
}
.oh-filter-label {
  font-size: 11px;
  font-weight: bold;
  text-transform: uppercase;
  letter-spacing: 1px;
  color: #7a4f9a;
  white-space: nowrap;
}
.oh-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.oh-chip {
  padding: 6px 14px;
  border-radius: 20px;
  border: 1.5px solid #dcc8f5;
  background: #f5f0fc;
  color: #5a3a7a;
  font-family: inherit;
  font-size: 15px;
  font-weight: 600;
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s, color 0.15s;
  white-space: nowrap;
  line-height: 1.4;
}
.oh-chip.active {
  background: #E098FF;
  border-color: #E098FF;
  color: #32143f;
}
.oh-chip:hover:not(.active) {
  background: #ede0fa;
  border-color: #E8A820;
  color: #32143f;
}
.oh-chip--gold {
  border-color: #f0c84a;
  background: #fffbeb;
  color: #7a5200;
}
.oh-chip--gold.active {
  background: #E8A820;
  border-color: #E8A820;
  color: #fff;
}
.oh-chip--gold:hover:not(.active) {
  background: #fff3cc;
  border-color: #E8A820;
  color: #5a3a00;
}
.oh-chip--purple {
  border-color: #dcc8f5;
  background: #f5f0fc;
  color: #5a3a7a;
}
.oh-chip--purple.active {
  background: #E098FF;
  border-color: #E098FF;
  color: #32143f;
}
.oh-chip--purple:hover:not(.active) {
  background: #ede0fa;
  border-color: #c080e8;
  color: #32143f;
}

.oh-price-input {
  width: 58px;
  padding: 9px 8px;
  border: 1.5px solid #d0d4dc;
  border-radius: 8px;
  font-family: inherit;
  font-size: 16px;
  background: #f8f9fc;
  outline: none;
}
.oh-price-input:focus { border-color: #E098FF; }
.oh-price-input::placeholder { color: #bbb; }
.oh-reset-btn {
  padding: 9px 16px;
  border: 1.5px solid #E098FF;
  border-radius: 8px;
  font-family: 'Century Gothic', 'CenturyGothicPaneuropean', Arial, Helvetica, sans-serif;
  font-size: 15px;
  font-weight: bold;
  background: #fff;
  color: #7a4f9a;
  cursor: pointer;
  white-space: nowrap;
  letter-spacing: 0.3px;
  transition: border-color 0.15s, color 0.15s, background 0.15s;
}
.oh-reset-btn:hover { background: #FAF4FF; border-color: #c060e8; color: #32143f; }


/* RANGE SLIDERS (kept for backwards compat) */
.oh-slider-group {
  display: flex;
  flex-direction: column;
  gap: 5px;
  flex: 1 1 140px;
  max-width: 220px;
}
.oh-slider-group--wide {
  flex: 4 1 340px;
  max-width: 560px;
}
.oh-slider-header {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
}
.oh-slider-val {
  font-size: 12px;
  color: #555;
}
.oh-range-wrap {
  position: relative;
  height: 24px;
}
.oh-range-track {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  height: 4px;
  left: 0;
  right: 0;
  background: #e0e4ec;
  border-radius: 2px;
  pointer-events: none;
}
.oh-range-fill {
  position: absolute;
  top: 0;
  height: 100%;
  background: #32143f;
  border-radius: 2px;
}
input.oh-range {
  position: absolute;
  width: 100%;
  height: 24px;
  top: 0;
  background: transparent;
  -webkit-appearance: none;
  appearance: none;
  pointer-events: none;
  margin: 0;
  padding: 0;
  outline: none;
}
input.oh-range::-webkit-slider-thumb {
  -webkit-appearance: none;
  pointer-events: all;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: #32143f;
  cursor: pointer;
  border: 2px solid #fff;
  box-shadow: 0 1px 4px rgba(0,0,0,0.25);
}
input.oh-range::-moz-range-thumb {
  pointer-events: all;
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: #32143f;
  cursor: pointer;
  border: 2px solid #fff;
  box-shadow: 0 1px 4px rgba(0,0,0,0.25);
}

.oh-search {
  flex: 1 1 200px;
  min-width: 120px;
  padding: 9px 14px 9px 36px;
  border: 1.5px solid #d0d4dc;
  border-radius: 8px;
  font-family: inherit;
  font-size: 16px;
  background: #f8f9fc url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23888' stroke-width='2.5'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.35-4.35'/%3E%3C/svg%3E") 10px center/16px no-repeat;
  outline: none;
}
.oh-search:focus { border-color: #E098FF; }

.oh-select {
  padding: 9px 12px;
  border: 1.5px solid #d0d4dc;
  border-radius: 8px;
  font-family: inherit;
  font-size: 16px;
  background: #f8f9fc;
  outline: none;
  cursor: pointer;
  min-width: 140px;
}
.oh-select:focus { border-color: #E098FF; }

.oh-count {
  font-size: 15px;
  color: #666;
  white-space: nowrap;
  margin-left: auto;
}
.oh-count strong { color: #32143f; }

/* VIEW TOGGLE */

/* MAIN CONTENT AREA */
.oh-main {
  max-width: 1920px;
  margin: 0 auto;
  padding: 28px 20px 0;
}

/* GRID */
.oh-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 22px;
}
@media (max-width: 780px) { .oh-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 719px) { .oh-grid { grid-template-columns: 1fr; } }

/* CARD */
.oh-card {
  background: #fff;
  border-radius: 14px;
  overflow: hidden;
  box-shadow: 0 2px 10px rgba(0,0,0,0.09);
  display: flex;
  flex-direction: column;
  transition: transform 0.18s, box-shadow 0.18s;
}
.oh-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 8px 24px rgba(0,0,0,0.14);
}
.oh-card--team {
  border: 3px solid #E8A820;
  background: #FFFBF0;
  box-shadow: 0 2px 10px rgba(232,168,32,0.25);
}
.oh-card--team:hover {
  box-shadow: 0 8px 24px rgba(232,168,32,0.35);
}
.oh-card--abode {
  border: 3px solid #E098FF;
  background: #FAF7FC;
  box-shadow: 0 2px 10px rgba(224,152,255,0.2);
}
.oh-card--abode:hover {
  box-shadow: 0 8px 24px rgba(224,152,255,0.35);
}

.oh-photo-wrap {
  position: relative;
  width: 100%;
  padding-top: 56.25%; /* 16:9 */
  overflow: hidden;
  background: #d5dce8;
}
.oh-photo-wrap a {
  position: absolute; inset: 0;
  display: block;
}
.oh-photo-wrap > a img,
.oh-photo-wrap > img {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
  transition: transform 0.3s;
}
.oh-card:hover .oh-photo-wrap > a img,
.oh-card:hover .oh-photo-wrap > img { transform: scale(1.04); }

/* Photo carousel arrows */
.oh-arrow {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  background: rgba(0,0,0,0.45);
  color: #fff;
  border: none;
  border-radius: 5px;
  width: 28px;
  height: 38px;
  font-size: 15px;
  cursor: pointer;
  z-index: 10;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  transition: opacity 0.15s, background 0.15s;
  padding: 0;
  line-height: 1;
}
.oh-photo-wrap:hover .oh-arrow { opacity: 1; }
.oh-arrow:hover { background: rgba(0,0,0,0.7); }
.oh-arrow--prev { left: 6px; }
.oh-arrow--next { right: 6px; }
.oh-photo-count {
  position: absolute;
  bottom: 8px;
  right: 8px;
  background: rgba(0,0,0,0.5);
  color: #fff;
  font-size: 11px;
  padding: 2px 7px;
  border-radius: 10px;
  z-index: 10;
  pointer-events: none;
  letter-spacing: 0.5px;
}

/* Badge overlay on photo */
.oh-badge {
  position: absolute;
  top: 10px; left: 10px;
  padding: 4px 10px;
  border-radius: 20px;
  font-size: 11px;
  font-weight: bold;
  letter-spacing: 0.5px;
  z-index: 1;
}
.oh-badge-abode {
  background: #32143f;
  color: #E098FF;
  border: 1px solid #E098FF;
}
.oh-badge-team {
  background: #E8A820;
  color: #fff;
}

/* Team note overlay at bottom of photo */
.oh-photo-note {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  background: rgba(232, 168, 32, 0.95);
  backdrop-filter: blur(4px);
  padding: 6px 14px 6px 98px;
  min-height: 52px;
  display: flex;
  align-items: center;
  font-size: 13px;
  line-height: 1.6;
  color: #fff;
  z-index: 1;
  overflow: visible;
}
.oh-photo-note--abode {
  background: rgba(224, 152, 255, 0.97);
  padding: 10px 14px;
  min-height: auto;
  justify-content: center;
  font-size: 14px;
  font-weight: bold;
  letter-spacing: 0.3px;
  color: #32143f;
}

/* Card body */
.oh-card-body {
  padding: 16px 18px 12px;
  flex: 1;
  display: flex;
  flex-direction: column;
}
.oh-card-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 8px;
  margin: 0 0 2px;
}
.oh-card-header .oh-address { margin: 0; flex: 1; }
.oh-card-header .oh-dom-tag { margin: 3px 0 0; flex-shrink: 0; }
.oh-card-meta {
  display: flex;
  flex-direction: column;
  gap: 3px;
  align-items: flex-start;
  margin: 0 0 0;
}
.oh-card-meta .oh-price { margin: 0; }
.oh-card-meta .oh-details { margin: 0; text-align: left; font-size: 13px; color: #888; }
.oh-dom-tag {
  display: inline-block;
  margin-left: 6px;
  padding: 3px 8px;
  background: #f0eaf8;
  color: #7a4f9a;
  border-radius: 4px;
  font-size: 12px;
  font-weight: bold;
  letter-spacing: 0.3px;
  vertical-align: middle;
  white-space: nowrap;
}
.oh-address {
  font-size: 16px;
  font-weight: bold;
  color: #32143f;
  margin: 0 0 1px;
  line-height: 1.3;
}
.oh-city {
  font-size: 13px;
  font-weight: 600;
  color: #aaa;
  margin: 0 0 8px;
}
.oh-price {
  font-size: 22px;
  font-weight: bold;
  color: #32143f;
  margin: 0;
}
.oh-details {
  font-size: 14px;
  font-weight: 600;
  color: #888;
  margin: 0;
}
.oh-mls {
  font-size: 11px;
  color: #ccc;
  margin: 0 0 4px;
}
.oh-times {
  border-top: 1px solid #f0eaf8;
  margin: 10px 0 8px;
  padding-top: 10px;
  flex: 1;}
.oh-time-row { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin: 0 0 5px; }
.oh-time-pill {
  display: inline;
  padding: 0;
  background: none;
  color: #555;
  border-radius: 0;
  font-size: 15px;
  font-weight: bold;
  white-space: nowrap;
}
.oh-cal-btn {
  display: inline-block;
  padding: 3px 9px;
  background: #ECE4F2;
  border: 1px solid #E098FF;
  border-radius: 4px;
  font-size: 12px;
  color: #32143f;
  text-decoration: none;
  white-space: nowrap;
  font-weight: normal;
  vertical-align: middle;
}
.oh-cal-btn:hover { background: #E098FF; color: #fff; }

.oh-mls-btn {
  display: block;
  width: 100%;
  margin: 0 0 8px;
  padding: 10px 18px;
  background: #fff;
  color: #32143f;
  border: 1.5px solid #32143f;
  border-radius: 8px;
  font-family: 'Century Gothic', 'CenturyGothicPaneuropean', Arial, Helvetica, sans-serif;
  font-size: 15px;
  font-weight: bold;
  text-align: center;
  cursor: pointer;
  text-decoration: none;
  transition: background 0.2s, color 0.2s;
}
.oh-map-btn {
  display: block;
  width: 100%;
  padding: 10px 18px;
  border-radius: 8px;
  font-size: 15px;
  font-weight: bold;
  font-family: inherit;
  text-align: center;
  text-decoration: none;
  border: 1.5px solid #32143f;
  color: #32143f;
  background: #fff;
  cursor: pointer;
  transition: background 0.2s, color 0.2s;
  margin: 0 0 8px;
}
.oh-map-btn.oh-map-view-active { background: #32143f; color: #fff; border-color: #32143f; }
@media (hover: hover) {
  .oh-map-btn:hover { background: #32143f; color: #fff; }
  .oh-map-btn.oh-map-view-active:hover { background: #5a2a70; border-color: #5a2a70; }
}
.oh-mls-btn:hover { background: #32143f; color: #fff; }

/* Route planner card button */
.oh-route-btn {
  display: block;
  width: 100%;
  margin: 0 0 8px;
  padding: 10px 18px;
  background: #fff;
  color: #7a4f9a;
  border: 1.5px solid #E098FF;
  border-radius: 8px;
  font-family: 'Century Gothic', 'CenturyGothicPaneuropean', Arial, Helvetica, sans-serif;
  font-size: 15px;
  font-weight: bold;
  text-align: center;
  cursor: pointer;
  text-decoration: none;
  transition: background 0.2s, color 0.2s;
}
.oh-route-btn:hover { background: #f0eaf8; }
.oh-route-btn.in-route {
  background: #7a4f9a;
  color: #fff;
  border-color: #7a4f9a;
}
.oh-route-btn.in-route:hover { background: #5c3872; border-color: #5c3872; }
.oh-route-btn.route-full { opacity: 0.45; cursor: not-allowed; }

/* Route Tray */
#oh-route-tray {
  position: fixed;
  bottom: 0; left: 0; right: 0;
  background: #32143f;
  color: #fff;
  z-index: 1000;
  box-shadow: 0 -4px 24px rgba(0,0,0,0.28);
  font-family: 'Century Gothic', 'CenturyGothicPaneuropean', Arial, Helvetica, sans-serif;
  transform: translateY(100%);
  transition: transform 0.3s ease;
  will-change: transform;
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
  max-height: 85vh;
  display: flex;
  flex-direction: column;
}
#oh-route-tray.visible { transform: translate3d(0, 0, 0); }
#oh-route-tray-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 10px 16px;
  cursor: pointer;
  user-select: none;
}
#oh-route-tray.tray-minimized #oh-route-tray-header {
  padding: 20px 16px;
}
#oh-route-tray-header h3 {
  font-size: 13px;
  font-weight: bold;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  margin: 0;
  color: #E098FF;
}
#oh-route-tray-toggle {
  font-size: 18px;
  color: #E098FF;
  background: none;
  border: none;
  cursor: pointer;
  padding: 0 0 0 12px;
  line-height: 1;
}
#oh-route-tray-body {
  padding: 10px 20px 16px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}
#oh-route-stops {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 0;
}
@media (min-width: 700px) {
  #oh-route-stops {
    flex-direction: row;
    align-items: flex-start;
    flex-wrap: wrap;
    gap: 0;
  }
  .oh-route-stop {
    min-width: 150px;
    max-width: 220px;
    flex: 1 1 150px;
    margin-right: 8px;
  }
  .oh-route-connector {
    flex-direction: column;
    padding: 18px 12px 0;
    align-self: flex-start;
    min-width: 130px;
    flex-shrink: 0;
  }
}

.oh-route-stop {
  background: rgba(255,255,255,0.1);
  border: 1px solid rgba(224,152,255,0.35);
  border-radius: 10px;
  padding: 8px 12px;
  position: relative;
}
.oh-route-stop-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-right: 22px;
  margin-bottom: 4px;
}
.oh-route-stop-num {
  font-size: 12px;
  font-weight: bold;
  letter-spacing: 1px;
  color: #E098FF;
  text-transform: uppercase;
  display: flex;
  align-items: center;
  gap: 5px;
}
.oh-route-stop-num.stop-one { color: #E8A820; }
.oh-route-stop-pin-icon { opacity: 0.85; flex-shrink: 0; }
@keyframes oh-pin-flash {
  0%   { border-color: #E8A820; box-shadow: 0 0 0 3px rgba(232,168,32,0.35); }
  65%  { border-color: #E8A820; box-shadow: 0 0 10px rgba(232,168,32,0.12); }
  100% { border-color: rgba(224,152,255,0.35); box-shadow: none; }
}
.oh-stop-pinned-flash { animation: oh-pin-flash 0.75s ease-out forwards; }
.oh-route-stop-addr {
  font-size: 13px;
  font-weight: bold;
  color: #fff;
  line-height: 1.3;
  margin-bottom: 2px;
}
.oh-route-stop-time {
  font-size: 12px;
  color: #ccc;
}
.oh-route-connector {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  padding: 8px 0;
  text-align: center;
}
.oh-route-connector::before {
  content: '↓';
  font-size: 16px;
  color: rgba(224,152,255,0.4);
  line-height: 1;
  margin-bottom: 2px;
}
.oh-route-connector-label {
  font-size: 11px;
  font-weight: bold;
  padding: 3px 10px;
  border-radius: 10px;
  white-space: nowrap;
}
.oh-route-connector-label.ok   { background: rgba(100,220,100,0.2); color: #7defa0; }
.oh-route-connector-label.warn { background: rgba(255,200,0,0.2);   color: #ffe066; }
.oh-route-connector-label.bad  { background: rgba(255,80,80,0.2);   color: #ff8080; }
.oh-route-connector-label.calc { color: rgba(255,255,255,0.7); font-weight: normal; font-style: italic; }
.oh-route-connector-sublabel {
  font-size: 10px;
  color: rgba(255,255,255,0.4);
  white-space: nowrap;
}
@media (min-width: 700px) {
  .oh-route-connector::before { content: '→'; }
}
.oh-route-stop-gap {
  font-size: 11px;
  font-weight: bold;
  margin-top: 4px;
  padding: 2px 6px;
  border-radius: 4px;
  display: inline-block;
}
.oh-route-stop-gap.ok   { background: rgba(100,220,100,0.2); color: #7defa0; }
.oh-route-stop-gap.warn { background: rgba(255,200,0,0.2);   color: #ffe066; }
.oh-route-stop-gap.bad  { background: rgba(255,80,80,0.2);   color: #ff8080; }
.oh-route-remove {
  position: absolute;
  top: 6px; right: 8px;
  background: none;
  border: none;
  color: rgba(255,255,255,0.4);
  font-size: 16px;
  cursor: pointer;
  line-height: 1;
  padding: 0;
}
.oh-route-remove:hover { color: #ff8080; }
.oh-route-set-first {
  background: rgba(224,152,255,0.08);
  border: 1px solid rgba(224,152,255,0.28);
  color: rgba(224,152,255,0.55);
  font-size: 11px;
  font-weight: bold;
  cursor: pointer;
  line-height: 1;
  padding: 4px 10px;
  border-radius: 100px;
  letter-spacing: 0.3px;
  white-space: nowrap;
  font-family: 'Century Gothic', 'CenturyGothicPaneuropean', Arial, Helvetica, sans-serif;
}
@media (hover: hover) {
  .oh-route-set-first:hover { background: rgba(232,168,32,0.15); border-color: rgba(232,168,32,0.5); color: #E8A820; }
}
#oh-route-reasoning {
  font-size: 14px;
  color: rgba(255,255,255,0.55);
  padding: 4px 14px 8px;
  font-style: italic;
  line-height: 1.5;
  white-space: pre-wrap;
}
.oh-conflict-fix-btn {
  display: inline-block;
  margin-top: 8px;
  padding: 5px 14px;
  background: rgba(255,255,255,0.15);
  color: #fff;
  border: 1px solid rgba(255,255,255,0.35);
  border-radius: 20px;
  font-size: 12px;
  font-style: normal;
  font-family: inherit;
  cursor: pointer;
  transition: background 0.15s;
}
.oh-conflict-fix-btn:hover { background: rgba(255,255,255,0.28); }
#oh-route-tray-actions {
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-auto-rows: 1fr;
  gap: 10px;
  align-items: stretch;
}
@media (min-width: 700px) {
  #oh-route-tray-actions {
    grid-template-columns: repeat(4, auto);
    grid-auto-rows: auto;
  }
  .oh-route-launch-btn {
    width: auto;
    padding: 10px 18px;
  }
  #oh-route-clear-btn {
    width: auto;
    padding: 10px 18px;
  }
}
.oh-route-launch-btn {
  padding: 12px 10px;
  border-radius: 8px;
  font-family: inherit;
  font-size: 14px;
  font-weight: bold;
  cursor: pointer;
  text-decoration: none;
  border: none;
  white-space: nowrap;
  text-align: center;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  box-sizing: border-box;
}
.oh-route-launch-btn.google {
  background: #E098FF;
  color: #32143f;
}
.oh-route-launch-btn.google:hover { background: #d070f0; }
.oh-route-launch-btn.gold {
  background: #E8A820;
  color: #32143f;
}
.oh-route-launch-btn.gold:hover { background: #d49510; }
.oh-route-launch-btn.apple {
  background: rgba(255,255,255,0.12);
  color: #fff;
  border: 1.5px solid rgba(255,255,255,0.25);
}
.oh-route-launch-btn.apple:hover { background: rgba(255,255,255,0.22); }
.oh-route-launch-btn:disabled { opacity: 0.4; cursor: not-allowed; }
.oh-route-launch-btn.blocked {
  opacity: 0.25 !important;
  cursor: not-allowed !important;
  pointer-events: none !important;
  filter: grayscale(0.5);
}
#oh-route-reset-btn.conflict-pulse {
  background: #E8A820 !important;
  border: 2.5px solid #fff !important;
  color: #32143f !important;
  box-shadow: 0 0 0 3px rgba(232,168,32,0.5), 0 0 18px rgba(232,168,32,0.55) !important;
  animation: oh-conflict-pulse 1.6s ease-in-out 3;
  font-size: 15px !important;
}
@keyframes oh-conflict-pulse {
  0%   { box-shadow: 0 0 0 3px rgba(232,168,32,0.5), 0 0 18px rgba(232,168,32,0.55); transform: scale(1); }
  50%  { box-shadow: 0 0 0 7px rgba(232,168,32,0.2), 0 0 28px rgba(232,168,32,0.8); transform: scale(1.03); }
  100% { box-shadow: 0 0 0 3px rgba(232,168,32,0.5), 0 0 18px rgba(232,168,32,0.55); transform: scale(1); }
}
#oh-route-reasoning.conflict-msg {
  background: rgba(220,80,60,0.15);
  border-left: 3px solid rgba(255,120,100,0.6);
  border-radius: 0 6px 6px 0;
  padding: 8px 14px;
  font-style: normal;
  color: rgba(255,200,180,0.95);
  font-size: 13px;
}
#oh-route-optimize-btn {
  padding: 10px 18px;
  border-radius: 8px;
  font-family: inherit;
  font-size: 14px;
  font-weight: bold;
  cursor: pointer;
  border: 1.5px solid #E098FF;
  background: rgba(224,152,255,0.12);
  color: #E098FF;
  white-space: nowrap;
  display: none;
}
#oh-route-optimize-btn:hover { background: rgba(224,152,255,0.25); }
#oh-route-optimize-btn.calculating { opacity: 0.6; cursor: default; }

#oh-route-clear-btn {
  background: rgba(220,60,60,0.18);
  border: 1.5px solid rgba(220,60,60,0.4);
  color: #ff8080;
  font-family: inherit;
  font-size: 14px;
  font-weight: bold;
  cursor: pointer;
  padding: 12px 10px;
  border-radius: 8px;
  width: 100%;
  text-align: center;
}
#oh-route-clear-btn:hover { background: rgba(220,60,60,0.32); border-color: rgba(220,60,60,0.7); }
#oh-route-count-badge {
  display: inline-block;
  background: #E098FF;
  color: #32143f;
  border-radius: 50%;
  width: 18px; height: 18px;
  font-size: 11px;
  font-weight: bold;
  text-align: center;
  line-height: 18px;
  margin-left: 6px;
}


.oh-pick-agent { position: absolute; top: -38px; left: 14px; width: 76px; height: 76px; border-radius: 50%; object-fit: cover; border: 3px solid #fff; box-shadow: 0 2px 8px rgba(0,0,0,0.3); display: block; }
.oh-pick-agent-initial { display: flex; align-items: center; justify-content: center; background: #32143f; color: #fff; font-size: 20px; font-weight: bold; }

/* Callout note bar (for abode listings) */
.oh-callout {
  margin: 12px 18px 16px;
  padding: 10px 14px;
  border-radius: 6px;
  font-size: 13px;
  line-height: 1.6;
}
.oh-callout-abode {
  background: #f0ecf5;
  border-left: 4px solid #32143f;
  color: #32143f;
}
.oh-callout strong { display: block; margin-bottom: 2px; }

/* MAP */

/* SPLIT VIEW */
.oh-main--split {
  display: flex;
  align-items: flex-start;
  gap: 20px;
  max-width: 1920px;
  margin: 0 auto;
  padding: 16px 20px 0;
}
.oh-main--split .oh-grid-wrap {
  flex: 0 0 480px;
  min-width: 260px;
  overflow-y: auto;
  scrollbar-width: thin;
  scrollbar-color: #d0d4dc transparent;
}
.oh-main--split .oh-map-wrap { flex: 1; min-width: 0; position: sticky; align-self: flex-start; max-height: 700px; overflow: hidden; }
.oh-main--split .oh-grid { grid-template-columns: 1fr; }
@media (max-width: 1199px) {
  .oh-main--split .oh-grid-wrap { flex: 1 1 100%; }
  .oh-main--split .oh-grid { grid-template-columns: 1fr; }
}

/* NO RESULTS */
.oh-empty {
  text-align: center;
  padding: 60px 20px;
  color: #888;
  font-size: 15px;
  display: none;
}

/* FOOTER */
.oh-footer {
  background: #32143f;
  padding: 28px 0;
  text-align: center;
  margin-top: 48px;
}
.oh-footer-inner {
  max-width: 1920px;
  margin: 0 auto;
  padding: 0 24px;
}
.oh-footer p { margin: 0 0 6px; font-size: 13px; color: #E098FF; }
.oh-footer strong { display: block; font-size: 15px; color: #fff; margin: 0 0 10px; }
.oh-footer small { font-size: 11px; color: #ECE4F2; }

@media (min-width: 769px) { #oh-controls-body { display: block !important; } }

/* DESKTOP LAYOUT OVERRIDES */
@media (min-width: 769px) {
  /* Row A: Day (auto) left | Time (grows) right */
  #oh-row-a { gap: 32px; align-items: flex-start; }
  #oh-row-a #oh-day-group  { flex: 0 0 auto; }
  #oh-row-a #oh-time-group { flex: 1 1 0; }

  /* Row B: Featured | Price | Sort + Reset */
  #oh-row-b { gap: 32px; align-items: flex-start; }
  #oh-row-b #oh-featured-group { flex: 0 0 auto; }
  #oh-row-b #oh-price-group    { flex: 0 0 auto; }
  #oh-row-b #oh-sort-group     { flex: 0 0 auto; }
}

/* MOBILE LAYOUT */
@media (max-width: 768px) {
  .oh-controls-inner { padding: 0 14px; }
  .oh-controls-row1 { gap: 8px; padding: 8px 0; }

  /* Each frow stacks vertically */
  .oh-frow {
    flex-direction: column;
    align-items: stretch;
    gap: 8px;
    padding: 8px 0;
  }

  /* All chip filter groups: column layout on mobile */
  #oh-day-group, #oh-time-group, #oh-featured-group, #oh-price-group, #oh-sort-group {
    flex: none;
    align-items: flex-start;
  }
  /* Day chip container fills full width so chips wrap across the row */
  #oh-day-group { align-items: stretch; }
  /* Time chips scroll horizontally */
  #oh-time-group { align-items: flex-start; min-width: 0; max-width: 100%; }
  #oh-time-chips {
    width: 100%;
    min-width: 0;
    flex-wrap: nowrap;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
  }
  #oh-time-chips::-webkit-scrollbar { display: none; }
  /* Hide featured row on mobile */
  #oh-featured-group { display: none; }
  /* Sort + Reset above Price on mobile */
  #oh-sort-group { order: -1; }
  /* Featured chips scroll on mobile (kept for completeness) */
  #oh-curation-chips {
    flex-wrap: nowrap;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
  }
  #oh-curation-chips::-webkit-scrollbar { display: none; }

  /* City: label above, chips scroll horizontally */
  #oh-city-group { flex-direction: column; align-items: flex-start; gap: 5px; min-width: 0; max-width: 100%; }
  #oh-city-chips {
    width: 100%;
    min-width: 0;
    flex-wrap: nowrap;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
  }
  #oh-city-chips::-webkit-scrollbar { display: none; }

  .oh-chip { padding: 6px 14px; font-size: 15px; }
  .oh-arrow { opacity: 1; }
}

/* STICKY BACK-TO-FILTERS FAB */
.oh-fab-top {
  position: fixed;
  top: 12px;
  left: 50%;
  transform: translateX(-50%);
  background: #32143f;
  color: #fff;
  border: none;
  border-radius: 24px;
  padding: 13px 22px;
  font-family: 'Century Gothic', 'CenturyGothicPaneuropean', Arial, Helvetica, sans-serif;
  font-size: 15px;
  font-weight: bold;
  letter-spacing: 0.5px;
  cursor: pointer;
  box-shadow: 0 4px 16px rgba(0,0,0,0.3);
  z-index: 1000;
  display: none;
  align-items: center;
  gap: 6px;
  transition: background 0.2s, transform 0.15s;
}
.oh-fab-top.oh-fab-visible { display: flex; }
.oh-fab-top:hover { background: #4a1f5e; transform: translateX(-50%) translateY(-2px); }

#oh-controls-layout {
  display: flex;
  align-items: flex-start;
  gap: 16px;
}
#oh-controls-body { flex: 1; min-width: 0; overflow: hidden; }
#oh-city-map-panel {
  flex: 0 0 33%;
  padding: 10px 0 14px;
}
#oh-city-map-panel.oh-map-open { /* mobile legacy */ }
@media (max-width: 768px) {
  #oh-controls-layout { display: block; }
  #oh-city-map-panel { flex: none; width: 100%; padding: 0 0 14px; }
}
#oh-city-map-container {
  position: relative;
  width: 100%;
  border-radius: 8px;
  overflow: hidden;
  border: 1px solid #e0d4f5;
  box-shadow: 0 2px 8px rgba(50,20,63,0.08);
  background: #c8bfda;
  background-size: 100% 100%;
}
#oh-city-map-container::before { content: ''; position: absolute; inset: 0; background: rgba(255,255,255,0.52); z-index: 0; pointer-events: none; }
#oh-city-map-svg { width: 100%; height: auto; display: block; background: transparent; position: relative; z-index: 1; }
.oh-map-city polygon { fill: rgba(0,0,0,0.001); stroke: #9B6EC8; stroke-width: 2; stroke-opacity: 1; cursor: pointer; transition: fill 0.15s, stroke 0.15s; }

.oh-map-city.oh-map-active polygon { stroke: #32143f; stroke-width: 2.5; stroke-opacity: 1; fill: rgba(50,20,63,0.45); fill-opacity: 1; }
@media (hover: hover) {
  .oh-chip-map-hover { background: #E8A820 !important; color: #32143f !important; border-color: #E8A820 !important; }
  .oh-map-city.oh-map-hover polygon { stroke: #E8A820; stroke-width: 3.5; stroke-opacity: 1; fill: rgba(232,168,32,0.10); fill-opacity: 1; }
}
/* ── Mini map card overlay ── */
.oh-minimap-overlay {
  position: absolute; inset: 0; z-index: 5;
  background: transparent;
  display: flex; align-items: center; justify-content: center;
  overflow: hidden;
}
.oh-minimap-close {
  position: absolute; top: 6px; right: 6px;
  background: rgba(50,20,63,0.8); color: #fff;
  border: none; border-radius: 50%;
  width: 26px; height: 26px;
  font-size: 12px; cursor: pointer; z-index: 10;
  display: flex; align-items: center; justify-content: center;
  line-height: 1;
}
.oh-minimap-close:hover { background: rgba(50,20,63,1); }
.oh-agent-initial { display:flex; align-items:center; justify-content:center; width:40px; height:40px; border-radius:50%; background:#32143f; color:#fff; font-size:16px; font-weight:bold; border:2px solid rgba(255,255,255,0.3); }
#oh-city-map .leaflet-interactive { cursor: pointer; }
#oh-city-map-close {
  position: absolute;
  top: 6px; right: 6px;
  z-index: 1000;
  background: rgba(50,20,63,0.72);
  color: #fff;
  border: none;
  border-radius: 50%;
  width: 26px; height: 26px;
  font-size: 13px;
  line-height: 26px;
  text-align: center;
  cursor: pointer;
  padding: 0;
}
#oh-city-map-close:hover { background: rgba(50,20,63,1); }
#oh-city-map-hint {
  font-size: 11px;
  color: #9a7aba;
  text-align: center;
  margin: 5px 0 0;
  letter-spacing: 0.3px;
}
#oh-map-toggle-link {
  display: none;
  font-size: 10px;
  color: #9B6EC8;
  text-decoration: none;
  margin-left: 6px;
  font-weight: normal;
  text-transform: none;
  letter-spacing: 0;
}
#oh-map-toggle-link:hover { color: #32143f; }
@media (max-width: 479px) {
  #oh-map-toggle-link { display: inline; }
}


/* ── Password gate ── */
#oh-pw-gate {
  position: fixed !important; inset: 0 !important; z-index: 99999 !important;
  background: #32143f !important;
  display: flex !important; flex-direction: column !important;
  align-items: center !important; justify-content: center !important;
  padding: 24px !important;
  font-family: 'Century Gothic', 'Trebuchet MS', Arial, sans-serif !important;
  color: #fff !important;
  opacity: 1 !important; visibility: visible !important;
}
#oh-pw-gate.hidden { display: none !important; }
#oh-pw-logo { margin-bottom: 28px !important; text-align: center !important; }
#oh-pw-box {
  background: rgba(255,255,255,0.07) !important;
  border: 1px solid rgba(255,255,255,0.18) !important;
  border-radius: 14px !important;
  padding: 32px 28px 28px !important;
  max-width: 360px !important; width: 100% !important;
  text-align: center !important;
}
#oh-pw-box h2 { color: #E098FF !important; font-size: 20px !important; margin: 0 0 6px !important; }
#oh-pw-box p { color: rgba(255,255,255,0.75) !important; font-size: 14px !important; margin: 0 0 22px !important; line-height: 1.5 !important; }
#oh-pw-input {
  width: 100% !important; padding: 12px 14px !important; font-size: 17px !important;
  border-radius: 8px !important; border: 2px solid rgba(255,255,255,0.25) !important;
  background: rgba(255,255,255,0.1) !important; color: #fff !important;
  font-family: inherit !important; text-align: center !important; letter-spacing: 2px !important;
  outline: none !important; box-sizing: border-box !important; margin-bottom: 12px !important;
  display: block !important; visibility: visible !important; opacity: 1 !important;
}
#oh-pw-input:focus { border-color: #E8A820 !important; }
#oh-pw-input.shake { animation: ohShake 0.35s ease !important; border-color: #ff8080 !important; }
@keyframes ohShake {
  0%,100% { transform: translateX(0); }
  20%,60% { transform: translateX(-8px); }
  40%,80% { transform: translateX(8px); }
}
#oh-pw-btn {
  width: 100% !important; padding: 13px !important; font-size: 15px !important; font-weight: bold !important;
  background: #E8A820 !important; color: #32143f !important; border: none !important; border-radius: 8px !important;
  cursor: pointer !important; font-family: inherit !important; margin-bottom: 14px !important;
  display: block !important; visibility: visible !important; opacity: 1 !important;
}
#oh-pw-btn:active { background: #c9901a !important; }
#oh-pw-error { color: #ff9090 !important; font-size: 13px !important; min-height: 18px !important; margin-bottom: 10px !important; }
#oh-pw-signup {
  font-size: 13px !important; color: rgba(255,255,255,0.6) !important;
  border-top: 1px solid rgba(255,255,255,0.12) !important;
  padding-top: 16px !important; margin-top: 4px !important;
}
#oh-pw-signup a { color: #E098FF !important; text-decoration: underline !important; }

/* ── Listing detail modal ── */
#oh-listing-overlay {
  display: none;
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.65);
  z-index: 2000;
  overflow-y: auto;
  padding: 40px 16px;
  box-sizing: border-box;
}
#oh-listing-overlay.open { display: block; }
#oh-listing-modal {
  position: relative;
  background: #fff;
  border-radius: 12px;
  max-width: 780px;
  margin: 0 auto;
  overflow: hidden;
  box-shadow: 0 24px 64px rgba(0,0,0,0.45);
}
.oh-listing-close {
  position: absolute;
  top: 10px; right: 10px;
  z-index: 20;
  background: rgba(0,0,0,0.5);
  color: #fff;
  border: none;
  border-radius: 50%;
  width: 32px; height: 32px;
  font-size: 18px;
  line-height: 1;
  cursor: pointer;
  display: flex; align-items: center; justify-content: center;
}
.oh-listing-close:hover { background: rgba(0,0,0,0.75); }
#oh-listing-photo-wrap {
  position: relative;
  width: 100%;
  padding-top: 62%;
  background: #d5dce8;
  overflow: hidden;
}
#oh-listing-photo-wrap img {
  position: absolute;
  inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
}
#oh-listing-photo-count {
  position: absolute;
  bottom: 8px; right: 8px;
  background: rgba(0,0,0,0.5);
  color: #fff;
  font-size: 11px;
  padding: 2px 7px;
  border-radius: 10px;
  z-index: 5;
  pointer-events: none;
  letter-spacing: 0.5px;
}
.oh-listing-arrow {
  position: absolute;
  top: 50%; transform: translateY(-50%);
  background: rgba(0,0,0,0.45);
  color: #fff;
  border: none;
  border-radius: 5px;
  width: 32px; height: 44px;
  font-size: 16px;
  cursor: pointer;
  z-index: 10;
  display: flex; align-items: center; justify-content: center;
  opacity: 0;
  transition: opacity 0.15s;
}
#oh-listing-photo-wrap:hover .oh-listing-arrow { opacity: 1; }
.oh-listing-arrow:hover { background: rgba(0,0,0,0.7); }
.oh-listing-arrow--prev { left: 6px; }
.oh-listing-arrow--next { right: 6px; }
#oh-listing-body {
  padding: 20px 24px 28px;
  font-family: 'Century Gothic', 'CenturyGothicPaneuropean', Arial, sans-serif;
}
.oh-listing-price { font-size: 26px; font-weight: bold; color: #32143f; margin: 0 0 4px; }
.oh-listing-address { font-size: 17px; font-weight: bold; color: #222; margin: 0 0 2px; }
.oh-listing-city { font-size: 14px; color: #888; margin: 0 0 12px; }
.oh-listing-stats {
  display: flex; gap: 18px; font-size: 14px; color: #444;
  margin: 0 0 10px; flex-wrap: wrap;
}
.oh-listing-stat { white-space: nowrap; }
.oh-listing-meta { font-size: 12px; color: #aaa; margin: 0 0 14px; }
.oh-listing-meta a { color: #E098FF; text-decoration: none; }
.oh-listing-meta a:hover { text-decoration: underline; }
.oh-listing-facts {
  display: grid; grid-template-columns: 1fr 1fr;
  gap: 8px 16px; margin: 0 0 14px;
  background: #f8f9fc; border-radius: 8px; padding: 12px 14px;
}
.oh-listing-fact { font-size: 12px; color: #555; }
.oh-listing-fact strong { display: block; font-size: 11px; color: #aaa; text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; }
.oh-listing-desc {
  font-size: 13px; color: #555; line-height: 1.5;
  margin: 0 0 14px; max-height: 80px; overflow: hidden;
  position: relative;
}
.oh-listing-desc.expanded { max-height: none; }
.oh-listing-desc-more {
  font-size: 12px; color: #E098FF; background: none; border: none;
  cursor: pointer; padding: 0; margin: 2px 0 14px; display: block;
}
.oh-listing-section-label {
  font-size: 11px; font-weight: bold; text-transform: uppercase;
  letter-spacing: 1px; color: #aaa; margin: 0 0 8px;
}
.oh-listing-times { margin: 0 0 14px; }
.oh-listing-times .oh-time-row { margin-bottom: 6px; }
.oh-listing-note {
  margin: 12px 0 0; padding: 10px 14px;
  background: #f5f0ff; border-left: 3px solid #E098FF;
  border-radius: 4px; font-size: 13px; color: #555;
}