.estimator-grid {
  grid-template-columns: 1fr;
  gap: clamp(24px, 3vw, 38px);
}

.estimator-intro {
  position: static;
  display: grid;
  grid-template-columns: minmax(0,1.2fr) minmax(300px,.68fr);
  gap: 10px clamp(36px,6vw,90px);
  align-items: end;
  max-width: none;
}
.estimator-intro .section-title,
.estimator-intro > h2 { font-size: clamp(2.6rem,5.3vw,5.7rem); }
.estimator-intro .section-kicker,
.estimator-intro .eyebrow { grid-column: 1 / -1; }
.estimator-intro .section-title,
.estimator-intro > h2 { grid-column: 1; grid-row: 2 / span 3; margin-bottom: 0; }
.estimator-intro .section-copy,
.estimator-intro .copy { grid-column: 2; grid-row: 2; margin-bottom: 0; }
.estimator-intro .small-work-welcome { grid-column: 2; grid-row: 3; }
.estimator-intro .estimator-model { grid-column: 2; grid-row: 4; }
.estimator-model { display: none; }

.estimator-discovery {
  margin-bottom: 18px;
  padding: clamp(17px, 2vw,23px);
  border: 1px solid rgba(0,0,0,.13);
  border-radius: 18px;
  background: linear-gradient(135deg, rgba(255,255,255,.62), rgba(222,211,190,.28));
}

.estimator-discovery header {
  display: grid;
  grid-template-columns: minmax(0,1fr) minmax(240px,.7fr);
  gap: 16px 32px;
  align-items: end;
}

.estimator-discovery-kicker,
.project-visual-kicker,
.finish-comparison-kicker {
  display: block;
  margin-bottom: 7px;
  color: #77654a;
  font-size: .64rem;
  font-weight: 800;
  letter-spacing: .13em;
  text-transform: uppercase;
}

.estimator-discovery h3,
.project-visual h3,
.finish-comparison h3,
.estimate-controls > h3 {
  margin: 0;
  color: #24211d;
  font: 750 clamp(1.1rem,1.7vw,1.42rem)/1.1 Manrope, sans-serif;
  letter-spacing: -.035em;
}

.estimator-discovery header p,
.finish-comparison header p {
  margin: 0;
  color: #625d54;
  font-size: .78rem;
  line-height: 1.55;
}

.discovery-group { margin-top: 15px; }
.discovery-group-label { margin: 0 0 9px; color: #5e584e; font-size: .68rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.discovery-options { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 9px; }
.discovery-options--style { grid-template-columns: repeat(5,minmax(0,1fr)); gap: 12px; }
.discovery-choice {
  min-height: 46px;
  padding: 9px 11px;
  border: 1px solid rgba(0,0,0,.15);
  border-radius: 11px;
  background: rgba(255,255,255,.5);
  color: #302c26;
  font: 700 .74rem/1.25 Inter, sans-serif;
  text-align: left;
  cursor: pointer;
  transition: transform .18s ease, border-color .18s ease, background .18s ease;
}
.discovery-choice::before { content: ""; display: block; width: 22px; height: 3px; margin-bottom: 7px; border-radius: 999px; background: #a3895c; opacity: .72; }
.discovery-options--style .discovery-choice {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  min-height: 76px;
  padding: 43px 11px 9px;
  border-color: rgba(0,0,0,.18);
  box-shadow: 0 9px 24px rgba(42,35,24,.08);
}
.discovery-options--style .discovery-choice::before {
  position: absolute;
  z-index: -1;
  inset: 0 0 auto;
  width: auto;
  height: 34px;
  margin: 0;
  border-radius: 0;
  opacity: 1;
}
.discovery-choice[data-discovery-style="warm-minimal"] { background: #f3eadb; }
.discovery-choice[data-discovery-style="warm-minimal"]::before { background: linear-gradient(135deg,#d8c4a3 0 42%,#efe4cf 42% 72%,#ba9464 72%); }
.discovery-choice[data-discovery-style="contemporary"] { background: #e6e9e8; }
.discovery-choice[data-discovery-style="contemporary"]::before { background: linear-gradient(90deg,#9ca6a6 0 31%,#d3d8d6 31% 68%,#5f6b6e 68%); }
.discovery-choice[data-discovery-style="period"] { background: #efe3d8; }
.discovery-choice[data-discovery-style="period"]::before { background: radial-gradient(ellipse at 50% 105%,transparent 0 34%,#8d5e48 35% 42%,transparent 43%),linear-gradient(135deg,#b88d6e,#e3c9ad); }
.discovery-choice[data-discovery-style="industrial"] { border-color: #4b4d4d; background: #343738; color: #f4f0e7; }
.discovery-choice[data-discovery-style="industrial"]::before { background: repeating-linear-gradient(135deg,#1f2223 0 12px,#596061 12px 14px,#2c3031 14px 27px); }
.discovery-choice[data-discovery-style="bespoke"] { border-color: #816b49; background: #29241d; color: #f0dfbb; }
.discovery-choice[data-discovery-style="bespoke"]::before { background: radial-gradient(circle at 72% 35%,rgba(233,199,132,.75) 0 3px,transparent 4px),linear-gradient(135deg,#4d3d29,#b38b4e 48%,#171512 49%); }
.discovery-choice:hover { transform: translateY(-2px); border-color: rgba(93,72,38,.48); }
.discovery-choice[aria-pressed="true"] { border-color: #6f5937; background: #f8f2e6; box-shadow: inset 0 0 0 1px rgba(111,89,55,.2); }
.discovery-note { margin: 8px 0 0; padding-left: 17px; color: #5f594f; font-size: .67rem; font-weight: 700; }
.discovery-note::before { content: "i"; display: inline-grid; place-items: center; width: 13px; height: 13px; margin-left: -17px; margin-right: 4px; border: 1px solid currentColor; border-radius: 50%; font-size: .55rem; }
.discovery-footer { display: flex; justify-content: space-between; gap: 16px; align-items: center; margin-top: 17px; }
.discovery-status { min-height: 1.2em; margin: 0; color: #4d604e; font-size: .7rem; }
.discovery-skip { color: #463a28; font-size: .72rem; font-weight: 750; text-decoration: underline; text-underline-offset: 3px; }

.estimate-workspace {
  display: grid;
  grid-template-columns: minmax(340px,.72fr) minmax(0,1.28fr);
  gap: 10px;
  align-items: stretch;
  padding: 10px;
  border: 1px solid rgba(91,75,48,.18);
  border-radius: 24px;
  background: rgba(218,211,198,.42);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.7);
}

.estimate-controls > h3 { margin-bottom: 20px; font-size: 1.05rem; }
.estimate-controls { padding: clamp(20px,2.2vw,28px); border: 1px solid rgba(0,0,0,.1); border-radius: 17px; background: rgba(255,255,255,.48); }
.estimate-fields { grid-template-columns: repeat(2,minmax(0,1fr)); column-gap: 12px; }
.estimate-field { margin-bottom: 13px; gap: 7px; }
.estimate-field--wide { grid-column: 1/-1; }
.estimate-field select { min-height: 46px; padding-left: 11px; font-size: .79rem; }
.estimate-field label { font-size: .61rem; letter-spacing: .075em; }

.project-visual {
  position: relative;
  display: grid;
  grid-template-rows: auto auto auto minmax(0,1fr) auto auto;
  overflow: hidden;
  min-height: 548px;
  padding: clamp(24px,2.5vw,34px);
  border: 1px solid rgba(199,167,109,.5);
  border-radius: 18px;
  background: radial-gradient(circle at 21% 10%,rgba(199,167,109,.2),transparent 30%), linear-gradient(145deg,#1b2021 0%,#0b0e0f 62%,#07090a 100%);
  color: #ece8de;
  box-shadow: 0 20px 50px rgba(29,25,18,.2), inset 0 1px 0 rgba(255,255,255,.045);
}
.project-visual::after { content: ""; position: absolute; inset: 11px; border: 1px solid rgba(255,255,255,.035); border-radius: 12px; pointer-events: none; }
.project-visual h3 { max-width: 470px; color: #f0ece2; font-size: clamp(1.45rem,2.25vw,2rem); }
.project-visual-copy { max-width: 470px; margin: 8px 0 0; color: #b8bab6; font-size: .7rem; line-height: 1.5; }
.project-plan { display: block; align-self: center; width: min(100%,620px); margin: 14px auto 12px; }
.project-plan .plan-sheet { fill: rgba(255,255,255,.018); stroke: rgba(255,255,255,.06); }
.project-plan .plan-grid { fill: url(#plan-grid); opacity: .44; }
.project-plan .plan-shell { fill: rgba(255,255,255,.018); stroke: rgba(229,216,188,.62); stroke-width: 3; }
.project-plan .plan-wall { fill: none; stroke: rgba(232,228,216,.52); stroke-width: 2; }
.project-plan .plan-room { fill: rgba(163,174,176,.09); stroke: rgba(218,218,207,.34); stroke-width: 1.35; }
.project-plan .plan-zone.is-active .plan-room { fill: rgba(198,158,89,calc(.24 + var(--visual-intensity,.6) * .38)); stroke: #e0bd7c; stroke-width: 2; filter: drop-shadow(0 0 6px rgba(216,177,111,.24)); }
.project-plan .plan-detail { fill: none; stroke: rgba(222,220,211,.3); stroke-width: 1.1; }
.project-plan .plan-fixture { fill: rgba(220,220,211,.035); stroke: rgba(222,220,211,.28); stroke-width: 1; }
.project-plan .plan-zone.is-active .plan-detail,
.project-plan .plan-zone.is-active .plan-fixture { stroke: rgba(255,229,179,.58); }
.project-plan .plan-zone-label { fill: rgba(225,223,214,.52); font: 700 8px/1 Inter,sans-serif; letter-spacing: 1.45px; }
.project-plan .plan-zone.is-active .plan-zone-label { fill: #f1d69d; }
.project-plan .plan-annotation { fill: rgba(222,220,211,.45); font: 650 7px/1 Inter,sans-serif; letter-spacing: .9px; }
.project-plan .plan-dimension { fill: none; stroke: rgba(222,220,211,.27); stroke-width: .9; }
.project-plan .plan-route { fill: none; stroke: #e2bc78; stroke-width: 2.2; stroke-dasharray: 6 5; opacity: 0; }
.project-plan[data-project-type="decorating"] .plan-route--decorating,
.project-plan[data-project-type="bathroom"] .plan-route--bathroom,
.project-plan[data-project-type="kitchen"] .plan-route--kitchen,
.project-plan[data-project-type="renovation"] .plan-route--renovation,
.project-plan[data-project-type="extension"] .plan-route--extension,
.project-plan[data-project-type="loft"] .plan-route--loft,
.project-plan[data-project-type="basement"] .plan-route--basement,
.project-plan[data-project-type="new-build"] .plan-route--new-build { opacity: .9; }
.project-plan[data-project-type="new-build"] .plan-shell { stroke: #e0bd7c; }
.project-visual-legend { display: flex; flex-wrap: wrap; gap: 8px 18px; padding-top: 14px; border-top: 1px solid rgba(255,255,255,.1); color: #b8b6af; font-size: .64rem; }
.project-visual-legend span { display: inline-flex; gap: 7px; align-items: center; }
.project-visual-legend i { width: 10px; height: 10px; border: 1px solid rgba(229,216,188,.42); background: rgba(180,188,191,.16); }
.project-visual-legend span:first-child i { border-color: #d7b576; background: rgba(208,169,101,.54); }
.project-visual-status { margin: 11px 0 0; padding-top: 11px; border-top: 1px solid rgba(255,255,255,.1); color: #e7cc92; font-size: .65rem; font-weight: 750; line-height: 1.45; }

.estimate-output {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: minmax(300px,.82fr) minmax(420px,1.18fr);
  grid-template-areas:
    "receipt receipt"
    "range brief"
    "note brief"
    "method brief"
    "save transfer"
    "save transfer-status"
    "premium premium";
  column-gap: clamp(34px,5vw,72px);
  align-items: start;
  padding: clamp(20px,2.2vw,28px);
  border: 1px solid rgba(91,75,48,.28);
  border-radius: 18px;
  background: linear-gradient(160deg,rgba(255,255,255,.88),rgba(238,231,216,.82));
  box-shadow: 0 22px 58px rgba(58,45,25,.15);
}
.estimate-receipt-label {
  grid-area: receipt;
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 15px;
  padding-bottom: 13px;
  border-bottom: 1px solid rgba(0,0,0,.13);
  color: #59492f;
  font-size: .63rem;
  font-weight: 850;
  letter-spacing: .13em;
  text-transform: uppercase;
}
.estimate-receipt-label::after { content: ""; width: 7px; height: 7px; border-radius: 50%; background: #477452; box-shadow: 0 0 0 4px rgba(71,116,82,.1); }
.estimate-range-block { grid-area: range; }
.estimate-project-brief { grid-area: brief; align-self: stretch; margin: 0; background: rgba(255,255,255,.62); }
.estimate-output > #estimate-note { grid-area: note; }
.estimate-output > .estimate-method { grid-area: method; }
.estimate-save { grid-area: save; margin-top: 16px; }
.estimate-output > .estimate-transfer { grid-area: transfer; }
.estimate-output > .estimate-transfer-status { grid-area: transfer-status; }
.estimate-output > .estimate-premium { grid-area: premium; }
.estimate-project-brief summary { cursor: pointer; list-style: none; }
.estimate-project-brief summary::-webkit-details-marker { display: none; }
.estimate-project-brief summary::after { content: "+"; color: #78694f; font-size: 1.2rem; }
.estimate-project-brief[open] summary::after { content: "−"; }
.estimate-project-brief header { display: block; }
.estimate-project-brief summary { display: flex; justify-content: space-between; gap: 14px; align-items: center; padding-bottom: 12px; border-bottom: 1px solid rgba(0,0,0,.1); }
.estimate-project-brief header small { margin-top: 5px; text-align: left; }
.estimate-summary { display: grid; grid-template-columns: minmax(68px,.34fr) minmax(0,1fr) minmax(68px,.34fr) minmax(0,1fr); gap: 0 13px; margin: 8px 0 0; }
.estimate-summary dt, .estimate-summary dd { margin: 0; padding: 9px 0; border-bottom: 1px solid rgba(0,0,0,.075); }
.estimate-summary dt { color: #777066; font-size: .58rem; font-weight: 800; letter-spacing: .07em; text-transform: uppercase; }
.estimate-summary dd { color: #27221b; font-size: .7rem; font-weight: 750; text-align: right; }
.estimate-output-head { align-items: flex-start; flex-direction: column; gap: 8px; }
.estimate-output-head > span:first-child { color: #55462f; }
.estimate-confidence { padding: 0; border: 0; color: #746d62; font-size: .59rem; text-transform: none; }
.estimate-confidence > span { display: none; }
.estimate-range-block > strong { margin-top: 12px; color: #17130e; font-size: clamp(3rem,4.6vw,5rem); line-height: .92; }
.estimate-contingency span { max-width: 170px; }
.estimate-save-button {
  width: 100%; min-height: 54px; padding: 10px 14px; border: 1px solid rgba(23,21,17,.22); border-radius: 12px; background: transparent; color: #272117; font-weight: 800; cursor: pointer;
}
.estimate-save-button span { display: block; }
.estimate-save-button small { margin: 3px 0 0; color: #716b61; font-size: .61rem; font-weight: 500; }

.finish-comparison { margin-top: 22px; padding: 19px 20px; border: 1px solid rgba(0,0,0,.12); border-radius: 15px; background: rgba(255,255,255,.4); }
.finish-comparison header { display: grid; grid-template-columns: minmax(0,1fr) minmax(240px,.7fr); gap: 16px 28px; align-items: end; }
.finish-comparison h3 { font-size: 1.05rem; }
.finish-comparison header p { font-size: .65rem; }
.finish-comparison-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 12px; margin-top: 18px; }
.finish-comparison-grid.is-refreshing .finish-card { opacity: .62; }
.finish-card { display: grid; min-height: 112px; padding: 14px; border: 1px solid rgba(0,0,0,.14); border-radius: 12px; background: rgba(255,255,255,.63); color: #2b2722; text-align: left; cursor: pointer; transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease; }
.finish-card:hover { transform: translateY(-3px); box-shadow: 0 16px 30px rgba(56,45,28,.12); }
.finish-card.is-current { border-color: #806942; background: linear-gradient(145deg,#fffaf0,#e9dcc1); box-shadow: inset 0 0 0 1px rgba(128,105,66,.24),0 16px 35px rgba(80,61,31,.14); }
.finish-card h4 { margin: 0; font: 800 .82rem/1.2 Manrope,sans-serif; }
.finish-card strong { align-self: end; margin-top: 12px; color: #251f16; font: 750 clamp(1rem,1.8vw,1.35rem)/1 Manrope,sans-serif; letter-spacing: -.04em; }
.finish-card small { margin-top: 8px; color: #686157; font-size: .63rem; }
.finish-comparison-message { grid-column: 1/-1; margin: 0; padding: 14px; border: 1px dashed rgba(0,0,0,.18); border-radius: 10px; color: #625d54; font-size: .72rem; text-align: center; }
.finish-comparison[hidden] { display: none; }

.estimate-print-sheet { display: none; }

.small-job-panel { margin-top: 22px; padding: 22px; border: 1px solid rgba(111,87,49,.2); border-radius: 15px; background: linear-gradient(145deg,rgba(255,255,255,.55),rgba(225,214,193,.42)); }
.small-job-head { align-items: center; }
.small-job-head h3 { font-size: clamp(1.1rem,1.7vw,1.4rem); }
.small-job-head > strong { font-size: clamp(1.5rem,2.8vw,2.2rem); }
.small-job-intro { margin: 5px 0 0; color: #625a4e; font-size: .72rem; }
.small-job-controls { grid-template-columns: minmax(0,1.2fr) minmax(190px,.8fr); margin-top: 15px; }
.small-job-panel > small { margin-top: 9px; font-size: .65rem; }
.estimate-transfer--small { min-height: 46px; margin-top: 13px; }

@media (max-width: 1080px) {
  .estimator-intro { grid-template-columns: 1fr; }
  .estimator-intro .section-kicker,
  .estimator-intro .eyebrow,
  .estimator-intro .section-title,
  .estimator-intro > h2,
  .estimator-intro .section-copy,
  .estimator-intro .copy,
  .estimator-intro .small-work-welcome,
  .estimator-intro .estimator-model { grid-column: 1; grid-row: auto; }
  .estimate-workspace { grid-template-columns: minmax(320px,.78fr) minmax(0,1.22fr); }
  .project-visual { min-height: 520px; }
  .estimate-output { grid-column: 1 / -1; grid-template-columns: minmax(270px,.76fr) minmax(360px,1.24fr); column-gap: 28px; }
  .estimate-summary { grid-template-columns: minmax(70px,.34fr) minmax(0,1fr); }
}

@media (max-width: 860px) {
  .estimator-discovery header,
  .finish-comparison header { grid-template-columns: 1fr; }
  .discovery-options,
  .discovery-options--style { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .estimate-workspace { grid-template-columns: 1fr; }
  .estimate-output {
    grid-column: auto;
    display: flex;
    flex-direction: column;
  }
  .estimate-project-brief { margin-top: 22px; }
  .project-visual { min-height: auto; }
  .project-plan { width: min(100%,560px); }
  .estimate-summary { grid-template-columns: minmax(78px,.42fr) minmax(0,1fr); }
  .finish-comparison-grid { grid-template-columns: 1fr; }
}

@media (max-width: 760px) {
  .estimate-workspace { margin-inline: -4px; padding: 6px; border-radius: 20px; }
  .estimate-controls { padding: 20px; }
}

@media (max-width: 460px) {
  .discovery-options,
  .discovery-options--style { grid-template-columns: 1fr; }
  .discovery-choice { min-height: 50px; }
  .discovery-options--style .discovery-choice { min-height: 74px; }
  .discovery-footer { align-items: flex-start; flex-direction: column; }
  .project-visual { padding: 20px 16px; }
  .project-plan { width: 100%; margin-block: 16px; }
}

@media (prefers-reduced-motion: reduce) {
  .discovery-choice,
  .project-plan .plan-zone { transition: none; }
}

@media print {
  @page { margin: 16mm; }
  body * { visibility: hidden !important; }
  .estimate-print-sheet,
  .estimate-print-sheet * { visibility: visible !important; }
  .estimate-print-sheet {
    position: absolute; inset: 0 auto auto 0; display: block; width: 100%; padding: 0; background: #fff; color: #171717; font: 11pt/1.45 Arial,sans-serif;
  }
  .estimate-print-sheet h1 { margin: 0; font-size: 24pt; }
  .estimate-print-sheet .print-brand { margin-bottom: 24px; padding-bottom: 18px; border-bottom: 2px solid #9e8050; }
  .estimate-print-sheet .print-range { margin: 20px 0; padding: 18px; border: 1px solid #baa887; }
  .estimate-print-sheet .print-range strong { display: block; font-size: 25pt; }
  .estimate-print-sheet dl { display: grid; grid-template-columns: 1fr 1.5fr; gap: 0 18px; }
  .estimate-print-sheet dt,
  .estimate-print-sheet dd { margin: 0; padding: 8px 0; border-bottom: 1px solid #ddd; }
  .estimate-print-sheet dd { text-align: right; }
  .estimate-print-sheet .print-disclaimer { margin-top: 24px; padding-top: 16px; border-top: 1px solid #bbb; font-size: 9pt; }
}
