/* ============================================================
   Quote estimator + booking form
   ============================================================ */

.booking{display:grid;grid-template-columns:1fr 380px;gap:34px;align-items:start}
@media (max-width:1000px){.booking{grid-template-columns:1fr}}

/* ---- Steps -------------------------------------------------- */
.step{margin-bottom:30px}
.step__head{display:flex;align-items:center;gap:13px;margin-bottom:16px}
.step__num{
  width:38px;height:38px;flex-shrink:0;border-radius:50%;
  background:var(--gold);border:2.5px solid var(--ink);
  display:grid;place-items:center;font-family:var(--display);
  font-weight:800;font-size:1.05rem;
}
.step__title{font-family:var(--display);font-weight:800;font-size:1.3rem;margin:0}
.step__hint{font-size:.97rem;color:var(--gray);margin:-6px 0 16px 51px}
@media (max-width:600px){.step__hint{margin-left:0}}

/* ---- Room rows ---------------------------------------------- */
.rooms{display:flex;flex-direction:column;gap:12px}
.room{
  display:grid;
  grid-template-columns:1.5fr 78px 16px 78px auto auto;
  gap:10px;align-items:center;
  background:var(--paper);border:2.5px solid var(--ink);
  border-radius:var(--radius);padding:12px 14px;
}
.room__times{text-align:center;font-weight:700;color:var(--gray)}
.room__sqft{
  font-family:var(--display);font-weight:800;font-size:.95rem;
  background:var(--mint-soft);border:2px solid var(--ink);border-radius:8px;
  padding:6px 11px;white-space:nowrap;min-width:92px;text-align:center;
}
.room__sqft.is-empty{background:transparent;border-style:dashed;color:var(--gray);font-weight:600}
.room__remove{
  width:34px;height:34px;flex-shrink:0;border-radius:8px;cursor:pointer;
  border:2px solid var(--ink);background:var(--paper);
  font-size:1.15rem;line-height:1;display:grid;place-items:center;
  font-family:var(--display);
}
.room__remove:hover{background:var(--rose-soft)}
.room__remove:focus-visible{outline:3px solid var(--mint-deep);outline-offset:2px}

@media (max-width:720px){
  .room{grid-template-columns:1fr 1fr;gap:10px;position:relative;padding-top:14px}
  .room .field--type{grid-column:1 / -1}
  .room__times{display:none}
  .room__sqft{grid-column:1 / -1}
  .room__remove{position:absolute;top:10px;right:10px}
}

/* ---- Fields ------------------------------------------------- */
.room input[type=number]{padding:11px 8px;text-align:center}
/* strip spinners so the x/y row stays tidy */
.room input[type=number]::-webkit-outer-spin-button,
.room input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.room input[type=number]{-moz-appearance:textfield}

.field-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media (max-width:600px){.field-grid{grid-template-columns:1fr}}

/* ---- Checkbox / extras -------------------------------------- */
.check{
  display:flex;gap:12px;align-items:flex-start;cursor:pointer;
  background:var(--paper);border:2.5px solid var(--ink);border-radius:var(--radius);
  padding:15px 17px;
}
.check:hover{background:var(--gold-soft)}
.check input{
  width:21px;height:21px;flex-shrink:0;margin:1px 0 0;accent-color:var(--mint-deep);cursor:pointer;
}
.check__body strong{font-family:var(--display);display:block;margin-bottom:2px}
.check__body span{font-size:.94rem;color:var(--gray)}
.check.is-on{background:var(--mint-soft);box-shadow:var(--pop-sm)}

/* ---- Calendar ------------------------------------------------ */
.cal{background:var(--paper);border:2.5px solid var(--ink);border-radius:var(--radius);padding:16px;max-width:400px}
.cal__head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.cal__month{font-family:var(--display);font-weight:800;font-size:1.08rem}
.cal__nav{
  width:36px;height:36px;border:2px solid var(--ink);border-radius:9px;
  background:var(--paper);cursor:pointer;font-size:1.1rem;line-height:1;
  display:grid;place-items:center;font-family:var(--display);
}
.cal__nav:hover:not([disabled]){background:var(--gold)}
.cal__nav[disabled]{opacity:.3;cursor:not-allowed}
.cal__nav:focus-visible{outline:3px solid var(--mint-deep);outline-offset:2px}
.cal__grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.cal__dow{
  text-align:center;font-family:var(--display);font-weight:700;font-size:.76rem;
  color:var(--gray);letter-spacing:.04em;padding-bottom:6px;
}
.cal__day{
  aspect-ratio:1;border:2px solid transparent;border-radius:9px;background:transparent;
  font-family:var(--body);font-size:.95rem;font-weight:600;cursor:pointer;
  display:grid;place-items:center;color:var(--ink);
}
.cal__day:hover:not(:disabled){background:var(--gold-soft);border-color:var(--ink)}
.cal__day:focus-visible{outline:3px solid var(--mint-deep);outline-offset:1px}
.cal__day:disabled{color:#C8CACB;cursor:not-allowed}
.cal__day.is-empty{cursor:default;pointer-events:none}
.cal__day.is-selected{background:var(--gold);border-color:var(--ink);font-weight:800;box-shadow:var(--pop-sm)}
.cal__day.is-inweek{background:var(--mint-soft);border-color:var(--mint-deep)}
.cal__day.is-today{text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:2px}
.cal__legend{display:flex;flex-wrap:wrap;gap:6px 16px;margin-top:13px;font-size:.88rem;color:var(--gray)}
.cal__legend i{display:inline-block;width:13px;height:13px;border:2px solid var(--ink);border-radius:4px;margin-right:5px;vertical-align:-2px}

/* ---- Estimate panel ------------------------------------------ */
.estimate{position:sticky;top:96px}
.estimate__box{
  background:var(--gold-soft);border:2.5px solid var(--ink);
  border-radius:var(--radius);box-shadow:var(--pop);overflow:hidden;
}
.estimate__top{background:var(--gold);border-bottom:2.5px solid var(--ink);padding:16px 20px}
.estimate__top h3{margin:0;font-size:1.12rem}
.estimate__body{padding:18px 20px}
.estimate__lines{list-style:none;margin:0 0 16px;padding:0}
.estimate__lines li{padding:9px 0;border-bottom:1px dashed rgba(0,0,0,.2)}
.estimate__lines li:last-child{border-bottom:none}
.estimate__line-top{display:flex;justify-content:space-between;gap:12px;align-items:baseline}
.estimate__label{font-family:var(--display);font-weight:700;font-size:.97rem}
.estimate__amt{font-family:var(--display);font-weight:800;white-space:nowrap;font-size:.97rem}
.estimate__meta{font-size:.87rem;color:var(--gray);margin-top:2px}
.estimate__total{border-top:2.5px solid var(--ink);padding-top:14px;margin-top:4px}
.estimate__total-label{font-family:var(--display);font-weight:700;font-size:.83rem;letter-spacing:.09em;text-transform:uppercase;color:var(--gray)}
.estimate__total-amt{font-family:var(--display);font-weight:800;font-size:clamp(1.6rem,3.4vw,2.1rem);line-height:1.15;margin-top:2px}
.estimate__empty{color:var(--gray);font-size:.95rem;margin:0}
.estimate__disclaimer{font-size:.9rem;color:var(--gray);line-height:1.55;margin:14px 0 0}
@media (max-width:1000px){.estimate{position:static}}

/* ---- Summary review before submit ---------------------------- */
.review{background:var(--mint-soft);border:2.5px solid var(--ink);border-radius:var(--radius);padding:20px}
.review dl{display:grid;grid-template-columns:auto 1fr;gap:8px 18px;margin:0}
.review dt{font-family:var(--display);font-weight:700;font-size:.85rem;text-transform:uppercase;letter-spacing:.04em;color:var(--gray)}
.review dd{margin:0}

/* ---- Success ------------------------------------------------- */
.success{text-align:center;max-width:600px;margin:0 auto;padding:40px 0}

/* ---- Form-level error ---------------------------------------- */
.form-error{
  background:#FDF3F2;border:2.5px solid #B4453D;border-radius:var(--radius);
  padding:14px 17px;color:#8B2F28;font-weight:600;margin-bottom:20px;
}
