/* ========== RESERVAS — ESTILOS ========== */

/* PROPERTY SELECTOR */
.property-selector{margin-bottom:2.5rem}
.property-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.5rem}
.property-card{background:var(--color-bg-card);border:2px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden;cursor:pointer;transition:var(--transition)}
.property-card:hover{border-color:var(--color-primary);box-shadow:var(--shadow-md);transform:translateY(-3px)}
.property-card.selected{border-color:var(--color-primary);box-shadow:0 0 0 3px rgba(139,105,20,.18)}
.property-card img{width:100%;height:200px;object-fit:cover}
.property-card-body{padding:1.5rem}
.property-card-body h4{font-size:1.2rem;margin-bottom:.2rem}
.property-card-stars{color:var(--color-primary);font-size:1rem;display:block;margin-bottom:.6rem}
.property-card-body p{font-size:.88rem;color:var(--color-text-light);line-height:1.5;margin-bottom:1rem}
.property-card-meta{display:flex;justify-content:space-between;font-size:.82rem;color:var(--color-text-muted);padding-top:.75rem;border-top:1px solid var(--color-border)}
.property-card-meta strong{color:var(--color-primary);font-size:1.05rem}
.property-selected-badge{display:inline-flex;align-items:center;gap:.5rem;background:var(--color-bg-warm);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:.5rem 1rem;margin-bottom:1rem;font-size:.9rem}
.property-selected-badge strong{color:var(--color-primary)}
.property-selected-badge button{background:none;border:none;color:var(--color-text-muted);cursor:pointer;font-size:.85rem;text-decoration:underline;margin-left:.5rem}
.property-selected-badge button:hover{color:var(--color-primary)}

/* LOADING & ERROR */
.booking-loader{text-align:center;padding:3rem 1rem}
.booking-loader p{margin-top:1rem;color:var(--color-text-muted);font-size:.95rem}
.booking-spinner{width:40px;height:40px;border:4px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:bk-spin .8s linear infinite;margin:0 auto}
@keyframes bk-spin{to{transform:rotate(360deg)}}
.booking-error{background:rgba(196,87,58,.08);border:1px solid rgba(196,87,58,.2);border-radius:var(--radius-sm);padding:1rem 1.2rem;color:var(--color-accent);font-size:.9rem;margin-bottom:1rem}

/* HOLD TIMER */
.hold-timer{background:rgba(196,150,40,.1);border:1px solid rgba(196,150,40,.3);border-radius:var(--radius-sm);padding:.75rem 1rem;font-size:.9rem;color:#7a5c00;margin-bottom:1.5rem;text-align:center}
.hold-timer.expiring{background:rgba(196,87,58,.1);border-color:rgba(196,87,58,.3);color:var(--color-accent)}
.hold-timer-sidebar{background:rgba(196,150,40,.1);border:1px solid rgba(196,150,40,.3);border-radius:var(--radius-sm);padding:.75rem 1rem;font-size:.85rem;color:#7a5c00;margin-top:1.5rem;text-align:center}
.hold-timer-sidebar.expiring{background:rgba(196,87,58,.1);border-color:rgba(196,87,58,.3);color:var(--color-accent)}

/* ROOM AMENITIES */
.room-amenities{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.5rem}
.room-amenity{display:inline-flex;align-items:center;gap:.3rem;background:var(--color-bg-warm);padding:.2rem .5rem;border-radius:var(--radius-sm);font-size:.72rem;color:var(--color-text-muted)}
.room-amenity::before{content:'✓';color:var(--color-secondary);font-weight:700;font-size:.65rem}
.room-availability{font-size:.75rem;color:var(--color-accent);font-weight:600;margin-top:.3rem}
.room-option-pricing{display:flex;flex-direction:column;align-items:flex-end;justify-content:center;min-width:100px;text-align:right;margin-left:auto;flex-shrink:0}
.room-option-total{font-family:var(--font-accent);font-size:1.3rem;font-weight:700;color:var(--color-primary)}
.room-option-pernight{font-size:.75rem;color:var(--color-text-muted)}
.room-option-tax{font-size:.7rem;color:var(--color-text-muted)}
.booking-layout{display:grid;grid-template-columns:1fr 380px;gap:2.5rem;align-items:start}
.booking-steps{display:flex;gap:0;margin-bottom:2.5rem;border-radius:var(--radius-md);overflow:hidden;background:var(--color-bg-warm)}
.booking-step{flex:1;padding:1rem;text-align:center;font-family:var(--font-accent);font-size:.85rem;font-weight:600;color:var(--color-text-muted);position:relative;transition:var(--transition)}
.booking-step.active{background:var(--color-primary);color:white}
.booking-step.completed{background:var(--color-secondary);color:white}
.booking-step span{display:block;font-size:.7rem;font-weight:400;margin-top:.2rem;opacity:.8}

/* CALENDAR */
.calendar{background:var(--color-bg-card);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);overflow:hidden}
.cal-header{display:flex;align-items:center;justify-content:space-between;padding:1.2rem 1.5rem;background:var(--color-primary);color:white}
.cal-header h3{font-family:var(--font-accent);font-size:1.1rem;color:white}
.cal-nav{background:rgba(255,255,255,.2);border:none;color:white;width:36px;height:36px;border-radius:50%;font-size:1.1rem;cursor:pointer;transition:var(--transition)}
.cal-nav:hover{background:rgba(255,255,255,.35)}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);text-align:center}
.cal-day-name{padding:.6rem;font-size:.75rem;font-weight:600;text-transform:uppercase;color:var(--color-text-muted);letter-spacing:1px}
.cal-day{padding:.75rem .5rem;cursor:pointer;transition:var(--transition);font-size:.9rem;position:relative;border:1px solid transparent}
.cal-day:hover{background:var(--color-bg-warm)}
.cal-day.today{font-weight:700;color:var(--color-primary)}
.cal-day.selected{background:var(--color-primary);color:white;border-radius:0}
.cal-day.range{background:rgba(139,105,20,.12)}
.cal-day.check-in{background:var(--color-primary);color:white;border-radius:var(--radius-sm) 0 0 var(--radius-sm)}
.cal-day.check-out{background:var(--color-primary);color:white;border-radius:0 var(--radius-sm) var(--radius-sm) 0}
.cal-day.disabled{opacity:.3;cursor:not-allowed;pointer-events:none}
.cal-day.past{opacity:.25;pointer-events:none}
.cal-day .price-tag{display:block;font-size:.6rem;color:var(--color-text-muted);margin-top:2px;font-family:var(--font-accent)}
.cal-day.selected .price-tag,.cal-day.check-in .price-tag,.cal-day.check-out .price-tag{color:rgba(255,255,255,.8)}
.cal-legend{display:flex;gap:1.5rem;padding:1rem 1.5rem;font-size:.75rem;color:var(--color-text-muted);flex-wrap:wrap}
.cal-legend-item{display:flex;align-items:center;gap:.4rem}
.cal-legend-dot{width:12px;height:12px;border-radius:3px}

/* ROOM SELECTOR */
.room-selector{display:grid;gap:1rem}
.room-option{display:flex;gap:1.2rem;padding:1.2rem;background:var(--color-bg-card);border:2px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;transition:var(--transition)}
.room-option:hover{border-color:var(--color-primary-light);box-shadow:var(--shadow-sm)}
.room-option.selected{border-color:var(--color-primary);background:rgba(139,105,20,.04)}
.room-option img{width:100px;height:75px;object-fit:cover;border-radius:var(--radius-sm);flex-shrink:0}
.room-option-info h4{margin-bottom:.2rem;font-size:1rem}
.room-option-info p{font-size:.82rem;color:var(--color-text-light);margin-bottom:.3rem}
.room-option-price{font-family:var(--font-accent);font-weight:600;color:var(--color-primary)}

/* SIDEBAR SUMMARY */
.booking-summary{background:var(--color-bg-card);border-radius:var(--radius-md);box-shadow:var(--shadow-md);padding:2rem;position:sticky;top:100px}
.booking-summary h3{font-size:1.2rem;margin-bottom:1.5rem;padding-bottom:.75rem;border-bottom:2px solid var(--color-border)}
.summary-row{display:flex;justify-content:space-between;padding:.5rem 0;font-size:.9rem}
.summary-row.total{font-weight:700;font-size:1.1rem;color:var(--color-primary);border-top:2px solid var(--color-border);margin-top:.5rem;padding-top:.75rem}
.summary-row .label{color:var(--color-text-light)}

/* GUEST FORM */
.guest-form .form-group{margin-bottom:1rem}
.guest-form .form-group label{display:block;margin-bottom:.3rem;font-weight:500;font-size:.88rem}
.guest-form .form-group input,.guest-form .form-group select{width:100%;padding:.7rem 1rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:.9rem;transition:var(--transition)}
.guest-form .form-group input:focus,.guest-form .form-group select:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px rgba(139,105,20,.12)}
.guest-form .form-grid{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}

/* CARD VALIDATION */
.card-section{background:var(--color-bg-warm);border-radius:var(--radius-md);padding:1.5rem;margin-top:1rem}
.card-section h4{margin-bottom:.5rem}
.card-notice{background:rgba(196,87,58,.08);border:1px solid rgba(196,87,58,.2);border-radius:var(--radius-sm);padding:1rem;font-size:.85rem;color:var(--color-accent);margin-bottom:1rem}
.card-icons{display:flex;gap:.5rem;margin-bottom:1rem;font-size:1.5rem}

/* CONFIRMATION */
.confirmation{text-align:center;padding:3rem}
.confirmation .check{font-size:4rem;margin-bottom:1rem}
.confirmation h2{color:var(--color-secondary);margin-bottom:1rem}
.confirmation p{color:var(--color-text-light);margin-bottom:.5rem}
.conf-details{background:var(--color-bg-warm);border-radius:var(--radius-md);padding:1.5rem;margin:1.5rem auto;max-width:500px;text-align:left}
.conf-details .row{display:flex;justify-content:space-between;padding:.4rem 0;font-size:.9rem}

/* STEP PANELS */
.step-panel{display:none}
.step-panel.active{display:block}

/* POLICY */
.policy-box{background:var(--color-bg-warm);border-left:4px solid var(--color-primary);padding:1rem 1.2rem;border-radius:0 var(--radius-sm) var(--radius-sm) 0;margin:1.5rem 0;font-size:.88rem;color:var(--color-text-light)}

/* CANCELLATION POLICY CHECKBOX */
.cancel-policy-check{background:var(--color-bg-warm);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:1rem 1.2rem;margin-top:1.2rem}
.cancel-policy-label{display:flex;align-items:flex-start;gap:.7rem;cursor:pointer;font-size:.88rem;color:var(--color-text-light);line-height:1.6}
.cancel-policy-label input[type="checkbox"]{width:18px;height:18px;min-width:18px;margin-top:2px;cursor:pointer;accent-color:var(--color-primary)}
.cancel-policy-label a{color:var(--color-accent);text-decoration:underline}
.cancel-policy-label strong{color:var(--color-text)}

@media(max-width:768px){
  .property-cards{grid-template-columns:1fr}
  .property-card img{height:160px}
  .property-card-body{padding:1.2rem}
  .property-card-body h4{font-size:1.05rem}
  .booking-layout{grid-template-columns:1fr;gap:1.5rem}
  .booking-summary{position:static;padding:1.5rem;order:-1}
  .booking-summary h3{font-size:1.05rem;margin-bottom:1rem}
  .booking-steps{flex-wrap:wrap}
  .booking-step{flex:1 1 50%;font-size:.75rem;padding:.75rem .5rem}
  .booking-step span{font-size:.6rem}
  .cal-header{padding:.8rem 1rem}
  .cal-header h3{font-size:.95rem}
  .cal-nav{width:32px;height:32px;font-size:.9rem}
  .cal-day{padding:.5rem .25rem;font-size:.8rem}
  .cal-day-name{padding:.4rem;font-size:.65rem}
  .cal-day .price-tag{font-size:.5rem}
  .cal-legend{padding:.75rem 1rem;gap:1rem;font-size:.7rem}
  .room-option{flex-direction:column;padding:1rem}
  .room-option img{width:100%;height:160px}
  .room-option-info h4{font-size:.95rem}
  .room-option-info p{font-size:.8rem}
  .guest-form .form-grid{grid-template-columns:1fr}
  .guest-form .form-group input,.guest-form .form-group select{padding:.6rem .8rem;font-size:.88rem}
  .card-section{padding:1.2rem}
  .card-notice{font-size:.8rem;padding:.8rem}
  .confirmation{padding:2rem 1rem}
  .confirmation .check{font-size:3rem}
  .confirmation h2{font-size:1.4rem}
  .conf-details{padding:1.2rem}
  .conf-details .row{font-size:.82rem;flex-wrap:wrap;gap:.3rem}
  .policy-box{font-size:.82rem;padding:.8rem 1rem}
  .summary-row{font-size:.82rem}
  .summary-row.total{font-size:1rem}
}
@media(max-width:480px){
  .booking-step{flex:1 1 50%;font-size:.7rem}
  .cal-day{padding:.4rem .15rem;font-size:.75rem}
  .cal-day .price-tag{display:none}
  .room-option img{height:130px}
  .confirmation{padding:1.5rem .5rem}
}
