/* ==========================================================================
   Estimate / Contact form
   ========================================================================== */
.estimate-hero { background: radial-gradient(120% 120% at 80% 0, var(--teal-700), var(--teal-900)); color:#eafafb; padding-block: clamp(2.5rem,2rem+3vw,4rem); }
.estimate-hero h1 { color:#fff; }
.estimate-hero p { color:#bfe0e3; max-width:60ch; margin-top:.8rem; }

.estimate-layout { display:grid; gap:2.5rem; grid-template-columns:1fr; }
@media (min-width:920px){ .estimate-layout{ grid-template-columns: 1.6fr .9fr; align-items:start; } }

/* Contact rail */
.contact-rail { background:var(--mist); border:1px solid var(--line); border-radius:var(--radius-lg); padding:1.8rem; position:sticky; top:90px; }
.contact-rail h3 { font-size:var(--step-1); }
.contact-rail ul { list-style:none; display:grid; gap:1rem; margin-top:1.2rem; }
.contact-rail li { display:flex; gap:.8rem; align-items:flex-start; }
.contact-rail .ico { width:38px;height:38px;flex:none;border-radius:10px;background:var(--teal-600);color:#fff;display:grid;place-items:center; }
.contact-rail .ico svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.8;}
.contact-rail a { font-weight:600; }
.contact-rail .small { color:var(--slate); font-size:.88rem; }
.rail-book { margin-top:1.4rem; display:block; text-align:center; }

/* Form card */
.form-card { background:#fff; border:1px solid var(--line); border-radius:var(--radius-lg); padding:clamp(1.4rem,1rem+2vw,2.4rem); box-shadow:var(--shadow); }

/* Progress */
.progress { display:flex; gap:.5rem; margin-bottom:1.8rem; }
.progress__step { flex:1; height:5px; border-radius:999px; background:var(--line); transition:.3s; }
.progress__step.active { background:var(--teal-500); }
.progress__step.done { background:var(--teal-600); }
.step-label { font-family:var(--font-display); font-size:var(--step--1); letter-spacing:.1em; text-transform:uppercase; color:var(--teal-500); margin-bottom:.3rem; }

/* Steps */
.fstep { display:none; }
.fstep.active { display:block; animation:fade .3s ease; }
@keyframes fade { from{opacity:0;transform:translateY(8px);} to{opacity:1;transform:none;} }
.fstep h2 { font-size:var(--step-2); }

/* Fields */
.field-grid { display:grid; gap:1.1rem; grid-template-columns:1fr 1fr; margin-top:1.4rem; }
.field-grid .full { grid-column:1/-1; }
@media (max-width:560px){ .field-grid{grid-template-columns:1fr;} }
.field label { display:block; font-family:var(--font-display); font-weight:500; font-size:.92rem; margin-bottom:.4rem; color:var(--ink); }
.field label .req { color:#c0392b; }
.field input[type=text], .field input[type=tel], .field input[type=email], .field select, .field textarea {
  width:100%; padding:.8rem .9rem; border:1.5px solid var(--line); border-radius:10px; font:inherit; color:var(--ink); background:#fff; transition:border-color .15s, box-shadow .15s;
}
.field input:focus, .field select:focus, .field textarea:focus { outline:none; border-color:var(--teal-500); box-shadow:0 0 0 3px var(--teal-100); }
.field input.invalid, .field select.invalid { border-color:#c0392b; }
.field textarea { min-height:110px; resize:vertical; }
.field .err-msg { color:#c0392b; font-size:.82rem; margin-top:.3rem; display:none; }
.field .err-msg.show { display:block; }

/* Choice groups (checkbox / radio as chips) */
.choices { display:flex; flex-wrap:wrap; gap:.55rem; margin-top:.5rem; }
.choice { position:relative; }
.choice input { position:absolute; opacity:0; inset:0; cursor:pointer; }
.choice span { display:inline-block; padding:.55rem 1rem; border:1.5px solid var(--line); border-radius:999px; font-size:.92rem; cursor:pointer; transition:.15s; user-select:none; }
.choice input:checked + span { background:var(--teal-600); color:#fff; border-color:var(--teal-600); }
.choice input:focus-visible + span { box-shadow:0 0 0 3px var(--teal-100); }
.fieldset-label { font-family:var(--font-display); font-weight:500; font-size:.95rem; margin-top:1.3rem; }

/* Nav buttons */
.fnav { display:flex; justify-content:space-between; gap:1rem; margin-top:2rem; }
.fnav .btn--back { visibility:hidden; }
.fnav .btn--back.show { visibility:visible; }

/* honeypot */
.hp { position:absolute!important; left:-9999px!important; width:1px;height:1px;overflow:hidden; }

/* alert */
.form-alert { background:#fdecea; border:1px solid #f5c6c0; color:#922; padding:.9rem 1.1rem; border-radius:10px; margin-bottom:1.4rem; font-size:.92rem; }

/* Thank you */
.ty { text-align:center; padding-block:clamp(3rem,2rem+5vw,6rem); }
.ty .mark { width:84px;height:84px;margin:0 auto 1.5rem;border-radius:50%;background:var(--teal-50);display:grid;place-items:center; }
.ty .mark svg{width:42px;height:42px;stroke:var(--teal-600);fill:none;stroke-width:2;}
.ty h1{ margin-bottom:1rem; }
.ty p{ color:var(--slate); max-width:52ch; margin:0 auto 1.5rem; font-size:var(--step-1); }
.ty .actions{ display:flex; gap:.8rem; justify-content:center; flex-wrap:wrap; }
