@use '../components/mixins' as mixins;

.map-view {
  display: flex;
  flex-direction: column;
  font-family: var(--tide-booking-font-body);
  font-size: var(--tide-booking-font-size-body);
  color: var(--tide-booking-gray-dark);

  @include mixins.media-md {
    flex-direction: row;
    height: calc(100dvh - 120px);
    overflow: hidden;
  }

  // ── Panel (left sidebar) ────────────────────────────────────────────────

  &__panel {
    display: flex;
    flex-direction: column;
    background-color: var(--tide-booking-map-view-panel-bg);
    width: 100%;

    @include mixins.media-md {
      width: var(--tide-booking-map-view-panel-width);
      min-width: var(--tide-booking-map-view-panel-width);
      height: 100%;
      box-shadow: var(--tide-booking-map-view-panel-shadow);
      z-index: 100;
    }
  }

  &__panel-head {
    flex-shrink: 0;
  }

  &__panel-inner {
    flex: 1;
    overflow-y: auto;
    @extend %scrollbar-thin;
  }

  // ── Intro: title + subtitle ─────────────────────────────────────────────

  &__intro {
    padding: 20px 20px 16px;
    border-bottom: var(--tide-booking-map-view-destination-border);
  }

  &__title {
    margin: 0;
    font-family: var(--tide-booking-font-body);
    font-size: var(--tide-booking-h3);
    font-weight: 700;
    color: var(--tide-booking-black);
    line-height: 1.2;
    letter-spacing: -0.02em;

    @include mixins.media-md {
      font-size: var(--tide-booking-h3-sm);
    }
  }

  &__subtitle {
    margin: 6px 0 0;
    font-size: var(--tide-booking-small-font-size--mobile);
    color: var(--tide-booking-gray-dark);
    line-height: 1.5;

    @include mixins.media-md {
      font-size: var(--tide-booking-small-font-size--desktop);
    }
  }

  // ── Meta chip: dates · nights · adults ─────────────────────────────────

  &__meta {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 14px 20px;
    padding: 10px 12px;
    background-color: var(--tide-booking-map-view-dates-bg);
    border: var(--tide-booking-map-view-destination-border);
    border-radius: 12px;
    font-size: var(--tide-booking-small-font-size--mobile);
    color: var(--tide-booking-gray-dark);
  }

  &__meta-dates {
    font-weight: 600;
    color: var(--tide-booking-black);
  }

  &__meta-dot {
    width: 4px;
    height: 4px;
    border-radius: 50%;
    background-color: var(--tide-booking-gray-medium);
    flex-shrink: 0;
  }

  &__meta-item {
    color: var(--tide-booking-gray-dark);
  }

  &__meta-pax {
    margin-left: auto;
    display: flex;
    align-items: center;
    gap: 5px;
    font-weight: 600;
    color: var(--tide-booking-black);
  }

  &__meta-edit {
    width: 28px;
    height: 28px;
    border-radius: 8px;
    border: var(--tide-booking-map-view-destination-border);
    background-color: var(--tide-booking-white);
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    color: var(--tide-booking-gray-dark);
    flex-shrink: 0;
    transition: border-color 0.15s ease, color 0.15s ease;

    &:hover {
      border-color: var(--tide-booking-color-primary);
      color: var(--tide-booking-color-primary);
    }
  }

  // ── Mobile map peek strip ────────────────────────────────────────────────

  &__map-peek {
    position: relative;
    height: 130px;
    background-color: #e8f0e0;
    overflow: hidden;
    flex-shrink: 0;

    background-image: linear-gradient(rgba(0, 0, 0, 0.04) 1px, transparent 1px), linear-gradient(90deg, rgba(0, 0, 0, 0.04) 1px, transparent 1px);
    background-size: 40px 40px;

    @include mixins.media-md {
      display: none;
    }
  }

  &__see-map {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    background-color: var(--tide-booking-color-primary);
    color: var(--tide-booking-white);
    border: none;
    border-radius: var(--tide-booking-input-border-radius);
    padding: 1rem 2.8rem;
    font-family: var(--tide-booking-font-body);
    font-size: var(--tide-booking-font-size-body);
    font-weight: 500;
    cursor: pointer;
    white-space: nowrap;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
    transition: background-color 0.2s ease;

    &:hover {
      background-color: var(--tide-booking-color-primary-dark);
    }

    @include mixins.media-md {
      display: none;
    }
  }

  // ── Shared icon button ──────────────────────────────────────────────────

  &__icon-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    background: none;
    border: none;
    cursor: pointer;
    padding: 5px;
    color: var(--tide-booking-gray-medium);
    border-radius: 8px;
    transition: color 0.15s ease, background-color 0.15s ease;
    flex-shrink: 0;

    &:hover {
      color: var(--tide-booking-black);
      background-color: var(--tide-booking-gray-light);
    }
  }

  // ── Spine: the vertical timeline ────────────────────────────────────────
  // Pins + cards are flex rows; the ::before creates the dashed connector line.

  &__spine {
    position: relative;
    padding: 5px 20px 5px;

    &::before {
      content: '';
      position: absolute;
      // Horizontally centred on the 26 px pins which sit at left:20px
      left: calc(20px + 13px);
      top: 48px;
      bottom: 34px;
      border-left: 2px dashed var(--tide-booking-map-view-connector-color);
      pointer-events: none;
    }
  }

  // ── Node: a single destination (start / stop / end) ─────────────────────

  &__node {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    margin-bottom: 8px;
    position: relative;
    z-index: 1;

    &--menu-open {
      z-index: 300;
    }
  }

  &__node-pin {
    width: 26px;
    min-width: 26px;
    height: 26px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    margin-top: 14px;
    background-color: var(--tide-booking-white);
    border: var(--tide-booking-map-view-destination-border);

    &--flag {
      border-color: var(--tide-booking-color-primary);
      color: var(--tide-booking-color-primary);
    }

    &--number {
      background-color: var(--tide-booking-map-view-dot-stop-bg);
      color: var(--tide-booking-map-view-dot-stop-color);
      border-color: transparent;
      font-weight: 700;
      font-size: 12px;
      box-shadow: 0 3px 10px rgba(0, 0, 0, 0.18);
    }
  }

  &__node-card {
    flex: 1;
    min-width: 0;
    background-color: var(--tide-booking-white);
    border: var(--tide-booking-map-view-destination-border);
    border-radius: 12px;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;

    &:hover {
      border-color: var(--tide-booking-gray-background-light);
      box-shadow: 0 2px 12px rgba(0, 0, 0, 0.07);
    }
  }

  &__node-row {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 12px 14px;
  }

  &__node-info {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 2px;
  }

  &__node-place {
    font-size: var(--tide-booking-font-size-body);
    font-weight: 700;
    color: var(--tide-booking-black);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;

    @include mixins.media-md {
      font-size: var(--tide-booking-font-size-body-lg);
    }
  }

  &__node-date {
    font-size: var(--tide-booking-small-font-size--mobile);
    color: var(--tide-booking-gray-dark);
  }

  &__node-tag {
    flex-shrink: 0;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    padding: 3px 8px;
    border-radius: 6px;

    &--start,
    &--end {
      background-color: var(--tide-booking-color-primary-fade);
      color: var(--tide-booking-color-primary);
    }
  }

  // ── Reorder mode ────────────────────────────────────────────────────────

  &__reorder-banner {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 9px 12px;
    margin: 10px 20px 0;
    background-color: var(--tide-booking-color-primary-fade);
    border: 1px solid var(--tide-booking-color-primary-fade);
    border-radius: 10px;
    font-size: var(--tide-booking-small-font-size--mobile);
    color: var(--tide-booking-color-primary);

    span {
      flex: 1;
    }
  }

  &__reorder-done {
    padding: 4px 12px;
    border-radius: 7px;
    background-color: var(--tide-booking-white);
    border: 1px solid var(--tide-booking-color-primary);
    color: var(--tide-booking-color-primary);
    font-family: var(--tide-booking-font-body);
    font-size: var(--tide-booking-small-font-size--mobile);
    font-weight: 600;
    cursor: pointer;
    white-space: nowrap;
    transition: background-color 0.15s ease;

    &:hover {
      background-color: var(--tide-booking-color-primary-fade);
    }
  }

  &__drag-handle {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 20px;
    min-width: 20px;
    margin-top: 14px;
    color: var(--tide-booking-gray-medium);
    cursor: grab;
    flex-shrink: 0;
    border-radius: 6px;
    padding: 4px 2px;
    transition: color 0.15s ease, background-color 0.15s ease;

    &:hover {
      color: var(--tide-booking-black);
      background-color: var(--tide-booking-gray-light);
    }

    &:active {
      cursor: grabbing;
    }
  }

  &__node--reorder-locked {
    opacity: 0.4;
    pointer-events: none;
  }

  &__node--drag-over > .map-view__node-card {
    border-color: var(--tide-booking-color-primary);
    box-shadow: 0 0 0 3px var(--tide-booking-color-primary-extra-fade);
  }

  // ── Node action menu (stop cards) ──────────────────────────────────────

  &__node-menu {
    position: relative;
    flex-shrink: 0;
  }

  &__node-dropdown {
    position: absolute;
    top: calc(100% + 10px);
    right: -7px;
    z-index: 200;
    min-width: 210px;
    background-color: var(--tide-booking-white);
    border: var(--tide-booking-map-view-destination-border);
    border-radius: 10px;
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);

    // Arrow pointing up — border layer
    &::before {
      content: '';
      position: absolute;
      top: -8px;
      right: 12px;
      border-left: 7px solid transparent;
      border-right: 7px solid transparent;
      border-bottom: 7px solid var(--tide-booking-gray-background-light);
      z-index: 1;
    }

    // Arrow pointing up — white fill layer on top
    &::after {
      content: '';
      position: absolute;
      top: -6px;
      right: 13px;
      border-left: 6px solid transparent;
      border-right: 6px solid transparent;
      border-bottom: 6px solid var(--tide-booking-white);
      z-index: 2;
    }
  }

  &__node-dropdown-item {
    display: flex;
    align-items: center;
    gap: 10px;
    width: 100%;
    padding: 11px 16px;
    background: none;
    border: none;
    cursor: pointer;
    font-family: var(--tide-booking-font-body);
    font-size: var(--tide-booking-font-size-body);
    color: var(--tide-booking-black);
    text-align: left;
    transition: background-color 0.12s ease;

    &:first-child {
      border-radius: 10px 10px 0 0;
    }

    &:last-child {
      border-radius: 0 0 10px 10px;
    }

    & + & {
      border-top: var(--tide-booking-map-view-destination-border);
    }

    &:hover {
      background-color: var(--tide-booking-gray-light);
    }

    &--danger {
      color: var(--tide-booking-invalid);
    }
  }

  // ── Accommodation row (inside stop card) ────────────────────────────────

  &__stay {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 14px;
    border-top: var(--tide-booking-map-view-destination-border);
    background-color: var(--tide-booking-gray-xlight);
    flex-wrap: wrap;
    border-radius: 0 0 12px 12px;
  }

  &__stay-icon {
    width: 32px;
    min-width: 32px;
    height: 32px;
    border-radius: 50%;
    background-color: orangered;
    color: var(--tide-booking-white);
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;

    &--off {
      background-color: var(--tide-booking-gray--medium-light);
      color: var(--tide-booking-gray-dark);
    }
  }

  &__stay-info {
    display: flex;
    flex-direction: column;
    gap: 1px;
    flex: 1;
    min-width: 0;
  }

  &__stay-label {
    font-size: var(--tide-booking-font-size-body);
    font-weight: 600;
    color: var(--tide-booking-black);
  }

  &__stay-sublabel {
    font-size: var(--tide-booking-small-font-size--mobile);
    color: var(--tide-booking-gray-dark);
  }

  &__stay-stepper {
    display: flex;
    align-items: center;
    gap: 4px;
    flex-shrink: 0;
    background-color: var(--tide-booking-gray-light);
    border-radius: 8px;
    padding: 4px;
  }

  &__stay-btn {
    width: 24px;
    height: 24px;
    border-radius: 6px;
    border: none;
    background-color: var(--tide-booking-white);
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.06);
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    color: var(--tide-booking-gray-dark);
    padding: 0;
    transition: color 0.15s ease;

    &:hover {
      color: var(--tide-booking-color-primary);
    }
  }

  &__stay-value {
    min-width: 22px;
    text-align: center;
    font-weight: 700;
    font-size: var(--tide-booking-font-size-body);
    color: var(--tide-booking-black);
  }

  &__stay-nights {
    font-size: var(--tide-booking-small-font-size--mobile);
    color: var(--tide-booking-gray-dark);
    margin-left: 2px;
    margin-right: 4px;
  }

  // ── Leg: transport row between destinations ─────────────────────────────

  &__leg {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 8px;
    padding: 6px 0;
    position: relative;
    z-index: 0;
  }

  &__leg-pin {
    width: 26px;
    min-width: 26px;
    height: 26px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    background-color: var(--tide-booking-white);
    border: var(--tide-booking-map-view-destination-border);
    color: var(--tide-booking-color-primary);
  }

  &__leg-text {
    flex: 1;
    font-size: var(--tide-booking-small-font-size--mobile);
    color: var(--tide-booking-gray-dark);
    transition: color 0.2s ease;

    .map-view__leg--on & {
      color: var(--tide-booking-black);
    }

    @include mixins.media-md {
      font-size: var(--tide-booking-small-font-size--desktop);
    }
  }

  // ── Toggle switch ───────────────────────────────────────────────────────

  &__toggle {
    position: relative;
    flex-shrink: 0;
    width: 40px;
    height: 22px;
    background-color: var(--tide-booking-map-view-toggle-off-bg);
    border-radius: 11px;
    border: none;
    cursor: pointer;
    transition: background-color 0.25s ease;

    &::after {
      content: '';
      position: absolute;
      width: 16px;
      height: 16px;
      border-radius: 50%;
      background-color: var(--tide-booking-white);
      top: 3px;
      left: 3px;
      transition: transform 0.25s ease;
      box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25);
    }

    &--on {
      background-color: var(--tide-booking-map-view-toggle-on-bg);

      &::after {
        transform: translateX(18px);
      }
    }
  }

  // ── Add destination search ───────────────────────────────────────────────

  &__add {
    padding: 14px 20px 28px;
  }

  &__add-wrap {
    position: relative;
  }

  &__add-results {
    position: absolute;
    bottom: calc(100% + 6px);
    left: 0;
    right: 0;
    z-index: 200;
    list-style: none;
    margin: 0;
    padding: 4px 0;
    background-color: var(--tide-booking-white);
    border: var(--tide-booking-map-view-destination-border);
    border-radius: 12px;
    box-shadow: 0 -6px 24px rgba(0, 0, 0, 0.1);
    overflow: hidden;
  }

  &__add-result {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 14px;
    cursor: pointer;
    transition: background-color 0.12s ease;

    & + & {
      border-top: var(--tide-booking-map-view-destination-border);
    }

    &:hover {
      background-color: var(--tide-booking-gray-light);
    }
  }

  &__add-result-icon {
    width: 28px;
    min-width: 28px;
    height: 28px;
    border-radius: 50%;
    background-color: var(--tide-booking-gray-light);
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    color: var(--tide-booking-color-primary);
  }

  &__add-result-info {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
  }

  &__add-result-name {
    font-size: var(--tide-booking-font-size-body);
    font-weight: 600;
    color: var(--tide-booking-black);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }

  &__add-result-sub {
    font-size: var(--tide-booking-small-font-size--mobile);
    color: var(--tide-booking-gray-dark);
  }

  &__add-label {
    margin: 0 0 8px;
    font-size: var(--tide-booking-font-size-body);
    font-weight: 600;
    color: var(--tide-booking-black);
  }

  &__add-field {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 0 14px;
    background-color: var(--tide-booking-gray-light);
    border: 1.5px solid transparent;
    border-radius: 12px;
    min-height: var(--tide-booking-input-height);
    color: var(--tide-booking-gray-dark);
    transition: background-color 0.15s ease, border-color 0.15s ease;

    &:focus-within {
      background-color: var(--tide-booking-gray--medium-light);
      border-color: var(--tide-booking-color-primary);
    }
  }

  &__add-input {
    flex: 1;
    border: none;
    outline: 0;
    box-shadow: none;
    -webkit-appearance: none;
    appearance: none;

    &:hover,
    &:focus {
      border: none;
      outline: 0;
      box-shadow: none;
    }
    font-family: var(--tide-booking-font-body);
    font-size: var(--tide-booking-font-size-body);
    color: var(--tide-booking-input-color);
    background: none;
    padding: 0;

    &::placeholder {
      color: var(--tide-booking-input-placeholder-color);
      font-style: var(--tide-booking-input-placeholder-font-style);
    }
  }

  // ── Footer: price estimate + continue button ─────────────────────────────

  &__footer {
    border-top: var(--tide-booking-map-view-destination-border);
    flex-shrink: 0;
    display: flex;
    align-items: center;
    flex-direction: row-reverse;
    justify-content: space-between;
    gap: 14px;
    padding: 16px 20px;
  }

  &__price {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 2px;
  }

  &__price-label {
    font-size: var(--tide-booking-small-font-size--mobile);
    color: var(--tide-booking-gray-dark);
  }

  &__price-value {
    font-size: var(--tide-booking-h5);
    font-weight: 700;
    color: var(--tide-booking-black);
    white-space: nowrap;

    @include mixins.media-md {
      font-size: var(--tide-booking-h5-xl);
    }
  }

  &__continue {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 12px 22px;
    background: var(--tide-booking-map-view-continue-bg);
    color: var(--tide-booking-map-view-continue-color);
    border: var(--tide-booking-cta-border);
    border-radius: 10px;
    cursor: pointer;
    font-family: var(--tide-booking-font-body);
    font-size: var(--tide-booking-map-view-continue-font-size);
    font-weight: var(--tide-booking-map-view-continue-font-weight);
    white-space: nowrap;
    letter-spacing: 0.02em;
    transition: background 0.2s ease, transform 0.15s ease, box-shadow 0.15s ease;
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.14);

    &:hover {
      background: var(--tide-booking-map-view-continue-bg-hover);
      transform: translateY(-1px);
      box-shadow: 0 6px 20px rgba(0, 0, 0, 0.18);
    }
  }

  // ── Map wrap ─────────────────────────────────────────────────────────────

  &__map-wrap {
    position: fixed;
    inset: 0;
    visibility: hidden;
    z-index: -1;

    @include mixins.media-md {
      position: relative;
      flex: 1;
      visibility: visible;
      z-index: auto;
      inset: auto;
    }

    &--expanded {
      visibility: visible;
      z-index: 9999;
    }
  }

  &__map {
    width: 100%;
    height: 100%;
    position: absolute;
    inset: 0;
  }

  // ── Close button (mobile full-screen map) ─────────────────────────────────

  &__map-close {
    position: absolute;
    top: 1.5rem;
    right: 1.5rem;
    z-index: 1001;
    background-color: var(--tide-booking-white);
    border: none;
    border-radius: 50%;
    width: 4rem;
    height: 4rem;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
    transition: background-color 0.2s ease;

    &:hover {
      background-color: var(--tide-booking-gray-light);
    }

    @include mixins.media-md {
      display: none;
    }
  }

  // ── Leaflet tooltip ───────────────────────────────────────────────────────

  &__leaflet-tooltip {
    font-family: var(--tide-booking-font-body);
    font-size: var(--tide-booking-small-font-size--mobile);
    border-radius: var(--tide-booking-input-border-radius);
    border: none;
    box-shadow: var(--tide-booking-nav-box-shadow);
    padding: 0.5rem 0.8rem;
  }

  // ── Map markers ───────────────────────────────────────────────────────────

  &__marker {
    width: var(--tide-booking-map-view-marker-size);
    height: var(--tide-booking-map-view-marker-size);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 3px solid var(--tide-booking-map-view-marker-border-color);
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);
    cursor: pointer;
    transition: transform 0.15s ease, box-shadow 0.15s ease;

    &:hover {
      transform: scale(1.08);
      box-shadow: 0 4px 16px rgba(0, 0, 0, 0.28);
    }

    &--plane {
      background-color: var(--tide-booking-map-view-marker-plane-bg);
      color: var(--tide-booking-map-view-marker-plane-color);
    }

    &--stop {
      background-color: var(--tide-booking-gray-light);
      background-size: cover;
      background-position: center;
      position: relative;
      overflow: visible;
    }
  }

  &__marker-number {
    font-size: 18px;
    font-weight: 700;
    color: var(--tide-booking-map-view-dot-stop-bg);
  }

  &__marker-badge {
    position: absolute;
    bottom: -4px;
    right: -4px;
    width: 20px;
    height: 20px;
    background-color: var(--tide-booking-map-view-marker-badge-bg);
    color: var(--tide-booking-map-view-marker-badge-color);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 11px;
    font-weight: 700;
    border: 2px solid var(--tide-booking-white);
  }

  // ── Popup overlay ─────────────────────────────────────────────────────────

  &__popup {
    position: absolute;
    z-index: 1000;
    width: var(--tide-booking-map-view-popup-width);
    background-color: var(--tide-booking-map-view-popup-bg);
    border-radius: var(--tide-booking-map-view-popup-border-radius);
    box-shadow: var(--tide-booking-map-view-popup-shadow);
    transform: translate(-50%, calc(-100% - 28px));
    overflow: hidden;
    pointer-events: auto;

    &::after {
      content: '';
      position: absolute;
      bottom: -7px;
      left: 50%;
      transform: translateX(-50%);
      width: 0;
      height: 0;
      border-left: 7px solid transparent;
      border-right: 7px solid transparent;
      border-top: 7px solid var(--tide-booking-map-view-popup-bg);
      filter: drop-shadow(0 2px 2px rgba(0, 0, 0, 0.06));
    }
  }

  &__popup-close {
    position: absolute;
    top: 7px;
    right: 7px;
    z-index: 10;
    background-color: rgba(255, 255, 255, 0.92);
    border: none;
    border-radius: 50%;
    width: 24px;
    height: 24px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: background-color 0.2s ease;

    &:hover {
      background-color: var(--tide-booking-white);
    }
  }

  &__popup-image {
    width: 100%;
    height: var(--tide-booking-map-view-popup-image-height);
    background-size: cover;
    background-position: center;
    background-color: var(--tide-booking-gray-light);
  }

  &__popup-body {
    padding: 1.2rem 1.4rem;
  }

  &__popup-meta {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.8rem;
    margin-bottom: 1rem;
  }

  &__popup-name {
    margin: 0;
    font-size: var(--tide-booking-h6);
    font-weight: 700;
    color: var(--tide-booking-black);
    line-height: 1.25;
  }

  &__popup-country {
    margin: 3px 0 0;
    font-size: var(--tide-booking-small-font-size--mobile);
    color: var(--tide-booking-gray-dark);
  }

  &__popup-link {
    flex-shrink: 0;
    font-size: var(--tide-booking-small-font-size--mobile);
    color: var(--tide-booking-map-view-popup-link-color);
    text-decoration: var(--tide-booking-a-text-decoration);
    font-weight: 500;

    &:hover {
      color: var(--tide-booking-map-view-popup-link-color-hover);
    }
  }

  &__popup-nights {
    border-top: var(--tide-booking-map-view-destination-border);
    padding-top: 1rem;
  }

  &__popup-nights-label {
    margin: 0 0 0.8rem;
    font-size: var(--tide-booking-small-font-size--mobile);
    color: var(--tide-booking-gray-dark);
  }

  &__popup-nights-row {
    display: flex;
    align-items: center;
    gap: 0.6rem;
  }

  &__popup-nights-btn {
    background-color: var(--tide-booking-gray-light);
    border: var(--tide-booking-map-view-destination-border);
    border-radius: var(--tide-booking-input-border-radius);
    width: 30px;
    height: 30px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    font-size: var(--tide-booking-font-size-body);
    color: var(--tide-booking-gray-dark);
    transition: background-color 0.15s ease, color 0.15s ease;

    &:hover {
      background-color: var(--tide-booking-gray--medium-light);
      color: var(--tide-booking-black);
    }
  }

  &__popup-nights-value {
    min-width: 30px;
    text-align: center;
    font-size: var(--tide-booking-font-size-body-lg);
    font-weight: 700;
    color: var(--tide-booking-black);
  }
}
