:root {
    --bg: #f4e6d0;
    --text: #3a2e2e;
    --accent: #2e1a1a;
    --border: #d7c6a7;
    --font: 'Namu 1960', sans-serif;
  }

  .db {
    display: block;
  }

  body {
    margin: 0; 
    font-family: var(--font);
    background: var(--bg);
    color: var(--text);
  }

  main {
    max-width: 1400px;
    margin: 0 auto 60px;
    padding: 0 20px;
  }

  h2 {
    text-align: center;
    text-transform: uppercase;
    font-size: 30px;
    margin-bottom: 50px;
  }

  .booking-wrapper {
    display: flex;
    flex-wrap: wrap;
    gap: 20px;
    font-family: 'Namu 1960', sans-serif;
    color: rgba(53, 26, 32, 1);
    border-radius: 16px;
    margin-top: 80px;
  }

  .calendar-block,
  .guests-block {
    flex: 1;
    background: rgba(255, 244, 221, 1);
    border-radius: 12px;
    padding: 35px;
    max-width: 43.125em;
    box-sizing: border-box;
  }

  .calendar-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
  }

  .nav-btn {
    background: none;
    border: 1px solid rgba(53, 26, 32, 0.6);
    color: rgba(53, 26, 32, 1);
    font-size: 22px;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    cursor: pointer;
    transition: all 0.2s ease;
    padding-bottom: 4px;
  }

  .nav-btn:hover {
    background: rgba(53, 26, 32, 0.1);
  }

  .calendar-grid {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 8px;
    margin-top: 20px;
  }

  .day {
    position: relative;
    border: 1px solid rgba(53, 26, 32, 0.6);
    text-align: center;
    border-radius: 8px;
    cursor: pointer;
    transition: all 0.15s ease;
    height: 74px;
    display: flex;
    align-items: center;
    justify-content: center;
  }

  .day:hover {
    background: rgba(53, 26, 32, 0.1);
    transform: scale(1.05);
  }

  .day.selected,
  .day.range {
    background: rgba(53, 26, 32, 1);
    color: #fff;
  }

  .day.start {
    background: linear-gradient(315deg, rgba(53, 26, 32, 1) 50%, rgba(245, 231, 203, 1) 50%);
    color: #fff;
  }

  .day.end {
    background: linear-gradient(315deg, rgba(245, 231, 203, 1) 50%, rgba(53, 26, 32, 1) 50%);
    color: #fff;
  }

  .day.past {
    border: none;
    color: rgba(53, 26, 32, 0.4);
    background: rgba(53, 26, 32, 0.05);
    pointer-events: none;
    cursor: default;
  }

  .date-info {
    background: rgba(255, 244, 221, 1);
    color: rgba(53, 26, 32, 0.8);
    border-radius: 0 0 12px 12px;
    margin-top: 20px;
    font-size: 18px;
    text-transform: uppercase;
    letter-spacing: 0.2px;
  }

  .date-info b {
    color: rgba(53, 26, 32, 1);
  }

  .reset-btn {
    background: transparent;
    border: none;
    float: right;
    color: rgba(53, 26, 32, 1);
    font-size: 24px;
    line-height: 1;
    cursor: pointer;
    transition:
      opacity 0.2s ease,
      transform 0.2s ease;
    opacity: 0;
    pointer-events: none;
  }

  .reset-btn.active {
    opacity: 1;
    pointer-events: all;
  }

  .reset-btn:hover {
    transform: scale(1.15);
    color: rgba(53, 26, 32, 0.7);
  }

  .guest-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 24px;
    flex-direction: column;
  }

  .guest-label {
    font-weight: 500;
    width: 100%;
    font-size: 18px;
    text-transform: uppercase;
  }

  .guest-controls {
    display: flex;
    align-items: center;
    gap: 10px;
    width: 100%;
    justify-content: space-between;
    border: 1px solid #351a2099;
    border-radius: 100px;
    padding: 6px;
    margin-top: 30px;
  }

  .guest-btn {
    width: 62px;
    height: 62px;
    border: none;
    border-radius: 50%;
    font-size: 40px;
    background: #f5e7cb;
    color: #351a20;
    cursor: pointer;
    transition: all 0.2s ease;
  }

  .guest-btn:hover {
    background: rgba(53, 26, 32, 1);
    color: #fff;
  }

  .guest-count {
    font-size: 18px;
    min-width: 32px;
    text-align: center;
  }

  .guest-summary {
    display: flex;
    align-items: flex-start;
    flex-direction: column;
    margin-top: 25px;
    color: rgba(53, 26, 32, 0.8);
    font-size: 15px;
    line-height: 1.6;
    font-family: 'Namu', sans-serif;
  }

  .guest-icon {
    font-size: 22px;
    color: rgba(53, 26, 32, 1);
    margin-top: 2px;
  }

  .guest-text div {
    margin: 2px 0;
    font-size: 18px;
    text-transform: uppercase;
  }

  .guest-text b {
    color: rgba(53, 26, 32, 1);
    font-weight: 600;
  }

  .check-btn {
    width: 100%;
    background: rgba(53, 26, 32, 1);
    color: #fff;
    border: none;
    border-radius: 50px;
    padding: 16px;
    font-size: 16px;
    margin-top: 30px;
    cursor: pointer;
    transition: all 0.3s ease;
    text-transform: uppercase;
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
  }

  .check-btn:hover {
    transform: translateY(-1px);
    opacity: 0.9;
  }

  .check-btn.is-loading {
    pointer-events: none;
    opacity: 0.8;
  }

  .check-btn__loader {
    width: 16px;
    height: 16px;
    border: 2px solid rgba(255, 255, 255, 0.35);
    border-top-color: #fff;
    border-radius: 50%;
    display: none;
    animation: check-btn-spin 0.7s linear infinite;
  }

  .check-btn.is-loading .check-btn__loader {
    display: inline-block;
  }

  @keyframes check-btn-spin {
    to {
      transform: rotate(360deg);
    }
  }

  .month-wrapper {
    display: flex;
    align-items: center;
    gap: 12px;
  }

  .month-name,
  .year-num {
    border: 1px solid rgba(53, 26, 32, 0.6);
    color: rgba(53, 26, 32, 1);
    background: transparent;
    padding: 0 22px;
    border-radius: 9999px;
    font-weight: 600;
    text-transform: uppercase;
    font-size: 15px;
    letter-spacing: 0.5px;
    transition: all 0.2s ease;
    height: 44px;
    display: flex;
    align-items: center;
  }

  .month-name:hover,
  .year-num:hover {
    background: rgba(53, 26, 32, 0.05);
  }

  .rules {
    margin-top: 20px;
    font-size: 13px;
  }

  .rules a {
    color: rgba(53, 26, 32, 1);
    font-weight: 600;
    text-decoration: underline;
  }

  .rules input {
    accent-color: rgba(53, 26, 32, 1);
  }

  .hidden {
    display: none;
  }

  .booking-step {
    opacity: 1;
    transform: translateY(0) scale(1);
    filter: blur(0);
    transform-origin: center top;
  }

  .booking-step.is-exiting {
    opacity: 0;
    transform: translateY(28px) scale(0.985);
    filter: blur(6px);
    transition:
      opacity 0.3s ease,
      transform 0.3s ease,
      filter 0.3s ease;
  }

  .booking-step.is-entering {
    animation: booking-step-enter 0.55s cubic-bezier(0.22, 1, 0.36, 1);
  }

  @keyframes booking-step-enter {
    0% {
      opacity: 0;
      transform: translateY(34px) scale(0.985);
      filter: blur(8px);
    }
    100% {
      opacity: 1;
      transform: translateY(0) scale(1);
      filter: blur(0);
    }
  }

  #step-2 {
    padding: 60px 0;
    text-align: center;
  }

  #step-1 h2,
  #step-2 h2,
  #step-3 h2,
  #step-4 h2 {
    font-size: 64px;
    font-weight: 500;
    color: #2b1b1d;
    padding: 0 100px;
    margin-bottom: 0;
    line-height: 1.1;
  }

  .summary-info {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 20px;
    font-size: 18px;
    color: #6e5c56;
    font-weight: 500;
    margin-top: 12px;
  }

  .summary-info .dates,
  .summary-info .guests {
    text-transform: uppercase;
    letter-spacing: 0.5px;
  }

  .summary-info .divider {
    width: 1px;
    height: 20px;
    background: #9a857f;
    display: inline-block;
    opacity: 0.5;
  }

  .houses-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
    gap: 30px;
    margin: 80px auto;
  }

  .house-card {
    background: rgba(255, 244, 221, 1);
    border-radius: 12px;
    padding: 15px;
    max-width: 43.125em;
    box-sizing: border-box;
  }

  .house-img {
    position: relative;
    min-height: 280px;
    overflow: hidden;
    border-radius: 8px;
    background: linear-gradient(135deg, rgba(233, 214, 185, 0.95), rgba(245, 231, 203, 1));
  }

  .house-img::after {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.45), transparent);
    transform: translateX(-100%);
    opacity: 0;
  }

  .house-img.is-loading::after {
    opacity: 1;
    animation: house-shimmer 1.35s ease-in-out infinite;
  }

  .house-img img,
  .guest-icon img {
    width: 100%;
    height: 280px;
    border-radius: 8px;
    object-fit: cover;
  }

  .guest-icon img {
    width: auto;
    height: auto;
    border-radius: 0;
  }

  .house-img img {
    opacity: 0;
    transform: scale(1.04);
    transition:
      opacity 0.45s ease,
      transform 0.8s ease;
  }

  .house-img.is-loaded img {
    opacity: 1;
    transform: scale(1);
  }

  @keyframes house-shimmer {
    100% {
      transform: translateX(100%);
    }
  }

  .house-card h3 {
    font-size: 24px;
    color: #2b1b1d;
    text-transform: uppercase;
    margin-bottom: 10px;
    text-align: left;
    margin-top: 15px;
    padding-left: 15px;
    font-weight: 500;
  }

  .house-card .price {
    font-weight: 600;
    font-size: 24px;
    color: #2b1b1d;
    text-transform: uppercase;
    margin: 0;
  }

  .price-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-top: 16px;
    padding: 0 15px;
  }

  .price {
    font-size: 18px;
    font-weight: 600;
    color: #3b2a27;
  }

  .book-now {
    background: #3b2a27;
    color: #fff;
    border: none;
    border-radius: 30px;
    padding: 10px 24px;
    font-weight: 600;
    cursor: pointer;
    transition: background 0.2s ease;
  }

  .book-now:hover {
    background: #5b403b;
  }

  .step-actions {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    margin-top: 24px;
  }

  .step-back {
    background: transparent;
    color: #351a20;
    border: 1px solid rgba(53, 26, 32, 0.25);
    border-radius: 999px;
    padding: 14px 24px;
    font-size: 15px;
    text-transform: uppercase;
    cursor: pointer;
    transition:
      background 0.2s ease,
      transform 0.2s ease,
      border-color 0.2s ease;
  }

  .step-back:hover {
    background: rgba(53, 26, 32, 0.06);
    border-color: rgba(53, 26, 32, 0.5);
    transform: translateY(-1px);
  }

  .house-card button {
    background: #351a20;
    color: #fff4dd;
    border: none;
    padding: 15px 34px;
    border-radius: 40px;
    cursor: pointer;
    font-size: 18px;
    text-transform: uppercase;
    font-weight: 500;
  }

  .house-card--animated {
    opacity: 0;
    transform: translateY(26px) scale(0.985);
    animation: house-card-rise 0.55s cubic-bezier(0.22, 1, 0.36, 1) forwards;
    animation-delay: calc(var(--card-index, 0) * 90ms);
  }

  @keyframes house-card-rise {
    to {
      opacity: 1;
      transform: translateY(0) scale(1);
    }
  }

  .extras-form {
    background: #fff4dd;
    max-width: 1200px;
    margin: 80px auto;
    border-radius: 16px;
    padding: 40px 50px;
    box-shadow: 0 0 0 1px #ecdac0;
  }

  .extras-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 40px;
  }

  .extras-column h3 {
    font-size: 18px;
    font-weight: 600;
    margin-bottom: 10px;
    text-transform: uppercase;
  }

  .extras-column label {
    display: block;
    margin-bottom: 8px;
    font-size: 15px;
    line-height: 1.4;
    text-transform: uppercase;
  }

  .extras-column input[type='checkbox'],
  .extras-column input[type='radio'] {
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    width: 20px;
    height: 20px;
    border: 2px solid #c9b8a8;
    border-radius: 4px;
    background-color: #f8ecda;
    cursor: pointer;
    position: relative;
    transition: all 0.2s ease-in-out;
    margin-right: 8px;
    vertical-align: middle;
  }

  .extras-column input[type='checkbox']:hover,
  .extras-column input[type='radio']:hover {
    border-color: #4b2c2c;
  }

  .extras-column input[type='checkbox']:checked,
  .extras-column input[type='radio']:checked {
    background-color: #3b2424;
    border-color: #3b2424;
  }

  .extras-column input[type='checkbox']:checked::after,
  .extras-column input[type='radio']:checked::after {
    content: '✔';
    color: #fff;
    font-size: 14px;
    position: absolute;
    top: -2px;
    left: 3px;
  }

  .extras-column input[type='radio'] {
    border-radius: 50%;
  }

  .extras-column input[type='radio']:checked::after {
    content: '';
    position: absolute;
    top: 4px;
    left: 4px;
    width: 8px;
    height: 8px;
    background: #fff;
    border-radius: 50%;
  }

  .extras-column textarea {
    width: 100%;
    height: 60px;
    margin-top: 10px;
    border: 1px solid #decfb2;
    border-radius: 8px;
    padding: 10px 14px;
    font-family: inherit;
    resize: none;
    background: transparent;
    color: #3b2424;
    font-size: 14px;
  }

  .extras-footer {
    margin-top: 30px;
    text-align: center;
    display: flex;
    flex-direction: column;
  }

  .extras-footer button {
    background: #3b2424;
    color: #fff;
    border: none;
    border-radius: 50px;
    padding: 14px 40px;
    font-size: 18px;
    text-transform: uppercase;
    font-weight: 500;
    cursor: pointer;
    margin-top: 20px;
    transition: background 0.3s ease;
    display: flex;
    width: 20%;
    text-align: center;
    justify-content: center;
  }

  .extras-footer button:hover {
    background: #5a3333;
  }

  .booking-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 40px;
    border-radius: 16px;
    margin: 80px auto;
  }

  .booking-column {
    background: #fff4dd;
    padding: 20px;
    border-radius: 12px;
  }

  .booking-column h3 {
    font-size: 40px;
    margin-top: 0;
    text-transform: uppercase;
    margin-bottom: 50px;
    font-weight: 600;
    color: #2b1b1d;
  }

  .form-side label {
    display: block;
    margin-bottom: 5px;
    font-size: 15px;
    color: #2b1b1d;
  }

  .form-side input {
    width: 100%;
    border: 1px solid #e6d6bc;
    background: #fff4dd;
    border-radius: 25px;
    padding: 20px 0 20px 10px;
    text-transform: uppercase;
    font-size: 15px;
    margin-bottom: 18px;
  }

  .booking-summary {
    list-style: none;
    padding: 0;
    margin: 0 0 20px;
    font-size: 15px;
    color: #3a2b2b;
    text-transform: uppercase;
  }

  .spacing-block {
    margin-bottom: 30px;
  }

  .booking-summary li {
    display: flex;
    justify-content: space-between;
    margin-bottom: 35px;
    font-size: 16px;
  }

  .total-line {
    border-top: 1px solid #e0c8a9;
    padding-top: 15px;
    font-size: 18px;
    display: flex;
    justify-content: space-between;
    margin-bottom: 30px;
  }

  .booking-actions {
    display: flex;
    gap: 12px;
    flex-wrap: wrap;
  }

  .pay-btn {
    background: #3b2424;
    color: #fff;
    font-size: 16px;
    border: none;
    border-radius: 30px;
    padding: 14px 50px;
    cursor: pointer;
    transition: 0.2s;
  }

  .pay-btn:hover {
    background: #4b2c2c;
  }

  .pay-later-btn {
    background: transparent;
    color: #3b2424;
    font-size: 16px;
    border: 1px solid #3b2424;
    border-radius: 30px;
    padding: 14px 32px;
    cursor: pointer;
    transition: 0.2s;
  }

  .pay-later-btn:hover {
    background: #f7efe6;
  }

  @media (max-width: 900px) {
    main {
      margin: 0 !important;
    }

    .booking-wrapper {
      flex-direction: column;
    }

    #step-1 h2,
    #step-2 h2,
    #step-3 h2,
    #step-4 h2 {
      font-size: 28px;
      padding: 0 !important;
    }

    .calendar-block,
    .guests-block {
      padding: 15px;
    }

    .day {
      height: 45px;
    }

    .summary-info {
      font-size: 15px;
    }

    .price-row {
      flex-direction: column;
    }

    .house-card .price {
      width: 100%;
      display: block;
      text-align: left;
      font-size: 18px;
    }

    .house-card button {
      width: 100%;
      margin-top: 20px;
    }

    .booking-grid {
      grid-template-columns: auto !important;
    }
  }

  @media (max-width: 768px) {
    .extras-grid {
      grid-template-columns: 1fr;
      gap: 20px;
    }

    #step-3 h2 {
      font-size: 28px;
    }
  }

  @media (max-width: 450px) {
    .booking-summary li span {
      width: 100%;
    }

    .booking-summary li {
      flex-direction: column;
      margin-bottom: 15px !important;
    }
  }

  /* ---- v2: стани, форма заявки, підтвердження ---- */
  #v890-booking .day.busy {
    background: repeating-linear-gradient(135deg, rgba(53,26,32,0.08), rgba(53,26,32,0.08) 3px, transparent 3px, transparent 6px);
    color: rgba(53,26,32,0.3);
    border: 1px solid rgba(53,26,32,0.15);
  }
  .v890-warn { display: block; color: #8a2a1f; margin-bottom: 6px; }
  .v890-hp { position: absolute !important; left: -9999px !important; width: 1px !important; height: 1px !important; opacity: 0 !important; }
  .v890-msg { margin: 14px 0 0; font-size: 15px; min-height: 1em; }
  .v890-msg.is-error { color: #8a2a1f; }
  .v890-note { grid-column: 1 / -1; text-align: center; }
  .v890-note p { margin: 0 0 8px; }
  .v890-price { display: flex; flex-direction: column; align-items: flex-start; }
  .v890-old { margin: 0 0 4px; font-size: 14px; opacity: .55; text-decoration: line-through; }
  .v890-disc { margin: 4px 0 0; font-size: 13px; font-weight: 600; }
  .v890-per { font-weight: 400; font-size: 14px; opacity: .7; }
  .v890-extra { padding: 0 15px; margin: 4px 0 0; font-size: 13px; opacity: .6; }
  .price-row > div > p:first-child { text-align: left !important; align-self: flex-start !important; margin-left: 0 !important; margin-right: auto !important; }
  .v890-lead { grid-column: 1 / -1; max-width: 560px; margin: 0 auto; background: #fff4dd; border-radius: 12px; padding: 28px 24px; text-align: center; }
  .v890-lead__title { font-size: 22px; color: #2b1b1d; margin: 0 0 10px; }
  .v890-lead__text { font-size: 16px; color: #6e5c56; line-height: 1.5; margin: 0 0 20px; }
  .v890-lead__form { display: flex; flex-direction: column; gap: 12px; text-align: left; }
  .v890-lead__form input, .v890-lead__form textarea {
    width: 100%; box-sizing: border-box; border: 1px solid #e6d6bc; background: #fffaf0; border-radius: 25px;
    padding: 16px 18px; font-size: 15px; font-family: inherit; color: #2b1b1d;
  }
  .v890-lead__form textarea { border-radius: 16px; min-height: 90px; resize: vertical; }
  .v890-lead__form .book-now { align-self: center; text-transform: uppercase; }
  .v890-lead__alt { display: flex; gap: 16px; justify-content: center; flex-wrap: wrap; margin-top: 18px; font-size: 14px; }
  .v890-link { color: #3b2424; }
  .v890-other-dates { grid-column: 1 / -1; justify-self: center; margin-top: 20px; }
  .v890-confirm { max-width: 640px; margin: 0 auto 80px; }
  .v890-confirm h3 { font-size: 32px; margin: 0 0 30px; text-transform: uppercase; color: #2b1b1d; }
  .v890-confirm__text { font-size: 16px; line-height: 1.5; margin: 20px 0; color: #3a2b2b; }
  .v890-pay { display: inline-block; text-decoration: none; }
  .payment-line { display: flex; justify-content: space-between; gap: 16px; font-size: 16px; margin: -15px 0 30px; text-transform: uppercase; color: #3a2b2b; }
  .payment-line.hidden { display: none; }
  /* поки вантажаться зайняті дати — легке мерехтіння днів */
  #v890-booking .calendar-grid.is-loading .day:not(.past) { animation: v890-pulse 1.2s ease-in-out infinite; }
  @keyframes v890-pulse { 50% { opacity: .55; } }
