[data-estimate-panel][hidden], .estimate-mode-tabs[hidden] { display: none !important; }
[data-estimate-configuration][hidden], [data-estimate-change-room][hidden] { display: none !important; }
.estimate-product-picker { padding: clamp(1.25rem, 4vw, 3.5rem); border: 0; background: #fff; }
.estimate-shared-configuration { margin-top: 2.5rem; }
.estimate-configuration-heading { display: flex; justify-content: space-between; flex-wrap: wrap; align-items: center; gap: 1.25rem; margin-bottom: 1.5rem; }
.estimate-configuration-heading h2 { margin: .4rem 0 .8rem; font: 400 clamp(1.35rem, 3vw, 2rem)/1.6 "Noto Serif JP", serif; scroll-margin-top: 7rem; }
.estimate-configuration-heading [data-estimate-selected-name] { margin: 0; color: var(--sub-forest); font-size: .9rem; font-weight: 700; line-height: 1.8; }
.estimate-change-room { min-height: 2.75rem; padding: .6rem 1rem; border: 1px solid #adbcb4; background: #fff; color: var(--sub-forest); font: inherit; font-size: .8rem; cursor: pointer; }
.estimate-people-heading { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; max-width: 38rem; }
.estimate-people-heading label { font-size: .85rem; }
.estimate-people-heading output { color: var(--sub-forest); font-size: clamp(1.5rem, 4vw, 2rem); font-weight: 700; font-variant-numeric: tabular-nums; }
.estimate-people-slider { appearance: none; display: block; width: 100%; max-width: 38rem; height: 2.75rem; margin: .5rem 0 0; background: transparent; cursor: pointer; touch-action: pan-y; }
.estimate-people-slider::-webkit-slider-runnable-track { height: .4rem; border-radius: 1rem; background: linear-gradient(to right, var(--sub-forest) var(--people-progress, 10%), #d9ded9 var(--people-progress, 10%)); }
.estimate-people-slider::-moz-range-track { height: .4rem; border-radius: 1rem; background: #d9ded9; }
.estimate-people-slider::-moz-range-progress { height: .4rem; border-radius: 1rem; background: var(--sub-forest); }
.estimate-people-slider::-webkit-slider-thumb { appearance: none; width: 1.75rem; height: 1.75rem; margin-top: -.675rem; border: 3px solid #fff; border-radius: 50%; background: var(--sub-forest); box-shadow: 0 0 0 1px #8da296, 0 3px 8px #153a3129; }
.estimate-people-slider::-moz-range-thumb { width: 1.4rem; height: 1.4rem; border: 3px solid #fff; border-radius: 50%; background: var(--sub-forest); box-shadow: 0 0 0 1px #8da296; }
.estimate-people-slider:focus-visible { outline: 3px solid #b38b4d; outline-offset: .2rem; }
.estimate-people-slider:disabled { opacity: .4; cursor: default; }
.estimate-people-ticks { display: flex; justify-content: space-between; max-width: 38rem; color: var(--sub-muted); font-size: .75rem; }
.estimate-people-unknown { display: flex; align-items: center; gap: .5rem; margin-top: 1.25rem; font-size: .8rem; cursor: pointer; }
.estimate-people-unknown input { accent-color: var(--sub-forest); }
.estimate-condition-card.is-selected { background: #e7efe8; box-shadow: none; }
.estimate-condition-select { cursor: pointer; white-space: normal; line-height: 1.8; }
.estimate-condition-select[aria-pressed="true"] { background: #254c35; }
.estimate-stove-recommended-badge { align-self: flex-start; padding: .15rem .5rem; border-radius: 2px; background: #e0ebe0; color: #254c35; font-size: .65rem; font-weight: 700; line-height: 1.5; }
.estimate-stove-recommended-badge[hidden] { display: none !important; }
[data-condition-results-title] { scroll-margin-top: 7rem; }
@media (min-width: 1200px) {
  .estimate-product-picker .estimate-option-grid-body { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
.estimate-conditions-panel [hidden] { display: none !important; }
.estimate-installation-note { margin: 0 0 1.25rem; padding: .85rem; background: #fff; color: #606a64; font-size: .75rem; line-height: 1.9; overflow-wrap: anywhere; }
.estimate-installation-note[hidden] { display: none !important; }
.estimate-mode-tabs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .5rem; margin: 0 0 1.5rem; padding: .4rem; border: 0; border-radius: .5rem; background: #f1f3ef; }
.estimate-mode-tabs button { min-height: 3.6rem; padding: .9rem .6rem; border: 0; background: transparent; color: var(--sub-muted); font: 700 .95rem/1.5 "Noto Sans JP", sans-serif; cursor: pointer; }
.estimate-mode-tabs button[aria-selected="true"] { background: var(--sub-forest); color: #fff; box-shadow: 0 2px 8px #153a3114; }
.estimate-mode-tabs button:focus-visible, [data-estimate-panel]:focus-visible { outline: 3px solid #b38b4d; outline-offset: 4px; }
.estimate-conditions-panel { padding: clamp(1.25rem, 4vw, 3.5rem); border: 0; background: #fff; }
.estimate-conditions-intro { max-width: 42rem; margin-bottom: 2.5rem; }
.estimate-conditions-intro h2 { margin: .5rem 0 1rem; font: 400 clamp(1.4rem, 3vw, 2rem)/1.6 "Noto Serif JP", serif; }
.estimate-conditions-intro h2 span { display: inline-block; }
.estimate-conditions-intro > p:last-child, .estimate-condition-fieldset > p { color: var(--sub-muted); font-size: .85rem; line-height: 1.9; }
[data-estimate-conditions] { display: grid; gap: 2.5rem; max-width: 50rem; }
.estimate-condition-fieldset { min-width: 0; margin: 0; padding: 0; border: 0; }
.estimate-condition-fieldset legend { display: flex; gap: .75rem; align-items: center; margin-bottom: 1rem; font-size: 1.05rem; font-weight: 700; }
.estimate-condition-fieldset legend > span { color: var(--sub-forest); font: 600 .8rem/1 serif; }
.estimate-condition-fieldset > label { display: block; margin-bottom: .5rem; font-size: .85rem; }
.estimate-condition-fieldset select, .estimate-condition-fieldset input[type="number"] { min-width: 0; min-height: 3.25rem; border: 1px solid #adbcb4; border-radius: 0; background: #fff; color: var(--sub-ink); font: inherit; }
.estimate-condition-fieldset select { width: 100%; max-width: 24rem; padding: .75rem; }
.estimate-condition-choices { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .75rem; }
.estimate-condition-choices label { position: relative; cursor: pointer; }
.estimate-condition-choices input { position: absolute; top: 1.25rem; left: 1rem; accent-color: var(--sub-forest); }
.estimate-condition-choices span { display: block; padding: 1rem 1rem 1rem 2.6rem; border: 0; border-radius: .4rem; background: #f3f5f0; font-size: .9rem; }
.estimate-condition-choices input:checked + span { background: #e7efe8; box-shadow: none; }
.estimate-condition-choices input:focus-visible + span { outline: 3px solid #b38b4d; outline-offset: 2px; }
.estimate-condition-dimensions { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; }
.estimate-dimension-field > label:first-child { display: block; margin-bottom: .5rem; font-size: .85rem; font-weight: 700; }
.estimate-dimension-input { display: flex; gap: .5rem; align-items: center; white-space: nowrap; }
.estimate-dimension-input input { flex: 1; width: 0; padding: .65rem; }
.estimate-dimension-input input:disabled { background: #f1f3ef; color: #6c7871; }
.estimate-dimension-unknown { display: flex; gap: .45rem; align-items: baseline; margin-top: .7rem; font-size: .75rem; cursor: pointer; }
.estimate-dimension-unknown input { flex: 0 0 auto; accent-color: var(--sub-forest); }
.estimate-condition-roof { margin-top: 1.5rem; }
.estimate-condition-roof > p { margin-bottom: .75rem; font-size: .85rem; }
.estimate-condition-disclaimer { margin: 0; padding: 1rem; background: #f7f5ef; color: #606a64; font-size: .78rem; line-height: 1.9; }
.estimate-condition-submit { display: flex; align-items: center; justify-content: space-between; gap: 1rem; min-height: 3.5rem; padding: 1rem 1.25rem; font-size: .88rem; letter-spacing: 0; cursor: pointer; }
.estimate-condition-error { margin: 0; color: #a32929; font-size: .85rem; line-height: 1.8; }
.estimate-condition-fieldset [aria-invalid="true"] { outline: 2px solid #a32929; outline-offset: 2px; }
.estimate-condition-results { margin-top: 3rem; padding-top: 2.5rem; }
.estimate-condition-results-head h3 { margin: .5rem 0 1rem; font: 400 clamp(1.25rem, 2.7vw, 1.8rem)/1.6 "Noto Serif JP", serif; }
.estimate-condition-results-head > p:last-child { max-width: 55rem; font-size: .8rem; line-height: 1.9; color: var(--sub-muted); overflow-wrap: anywhere; }
.estimate-condition-card-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.25rem; margin: 1.5rem 0; }
.estimate-condition-card { display: flex; flex-direction: column; align-items: flex-start; min-width: 0; padding: clamp(1rem, 2vw, 1.5rem); border: 0; border-radius: .5rem; background: #f3f5f0; }
.estimate-condition-card-image { width: 100%; height: 10rem; object-fit: contain; margin-bottom: 1.25rem; }
.estimate-condition-badge { display: inline-block; margin: 0 0 .75rem; padding: .4rem .65rem; background: #e5eee5; color: #254c35; font-size: .75rem; font-weight: 700; line-height: 1.5; }
.estimate-condition-card-confirm .estimate-condition-badge { background: #f1e8d8; color: #735326; }
.estimate-condition-card-short .estimate-condition-badge { background: #eee9e8; color: #6e504a; }
.estimate-condition-card h4 { margin: 0 0 .5rem; font-size: 1rem; line-height: 1.7; }
.estimate-condition-model, .estimate-condition-size { margin: 0 0 .5rem; font-size: .78rem; color: var(--sub-muted); line-height: 1.7; }
.estimate-condition-footprint { font-size: .8rem; color: #254c35; font-weight: 700; }
.estimate-condition-reason { margin: .5rem 0 1rem; font-size: .8rem; line-height: 1.9; }
.estimate-condition-price { margin: auto 0 1rem; padding-top: .5rem; font-size: .85rem; font-weight: 700; line-height: 1.8; }
.estimate-condition-card .btn { width: 100%; min-height: 3rem; padding: .8rem; font-size: .8rem; letter-spacing: 0; text-align: center; }
.estimate-condition-cost-link { margin-top: 1rem; padding: 0; border: 0; background: transparent; color: var(--sub-forest); font-family: inherit; font-size: .8rem; font-weight: 700; line-height: 1.8; text-align: left; text-decoration: underline; text-underline-offset: .2em; cursor: pointer; }
.estimate-condition-detail-link { margin-top: .8rem; font-size: .75rem; color: var(--sub-muted); text-decoration: underline; text-underline-offset: .2em; }
.estimate-condition-excluded { margin: 1.5rem 0; padding: 1rem; border: 0; background: #f3f5f0; }
.estimate-condition-excluded summary { cursor: pointer; font-size: .85rem; line-height: 1.8; }
.estimate-condition-consult { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1.5rem; margin-top: 2rem; padding: 1.5rem; background: #edf1eb; }
.estimate-condition-consult h3 { margin: 0 0 .75rem; font-size: 1rem; line-height: 1.7; }
.estimate-condition-consult p { max-width: 36rem; margin: 0; font-size: .8rem; line-height: 1.9; }
.estimate-condition-consult .btn { padding: 1rem; font-size: .85rem; letter-spacing: 0; }
.estimate-condition-stale { padding: 1rem; color: #735326; background: #f1e8d8; font-size: .85rem; line-height: 1.9; }
.estimate-condition-empty { font-size: .9rem; line-height: 1.9; }
@media (max-width: 540px) {
  .estimate-mode-tabs button { font-size: .82rem; }
  .estimate-condition-choices { gap: .4rem; }
  .estimate-condition-choices span { padding: 1rem .4rem 1rem 1.8rem; font-size: .8rem; }
  .estimate-condition-choices input { left: .5rem; }
  .estimate-condition-dimensions { grid-template-columns: 1fr; gap: .85rem; }
  .estimate-condition-card-grid { grid-template-columns: 1fr; }
  .estimate-condition-submit { font-size: .8rem; padding: 1rem; }
}

/* The journey keeps the two entry modes and a single set of priced inputs. */
.estimate-ux [hidden], .estimate-hide-before-selection { display: none !important; }
.estimate-ux { --ux-surface: #f3f5f0; --ux-selected: #e7efe8; padding-bottom: 1rem; }
.estimate-page #sticky-cta, .estimate-page #floating-cta { display: none !important; }
.estimate-completed-summary { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: .8rem 1rem; margin-bottom: 1rem; background: #eaf0e5; }
.estimate-completed-summary p { margin: 0; font-size: .75rem; line-height: 1.8; overflow-wrap: anywhere; }
.estimate-completed-summary button { flex-shrink: 0; font-size: .7rem; }
.estimate-progress { position: sticky; top: 4.6rem; z-index: 20; padding: .7rem 0; margin-bottom: 1rem; background: #f7f7f2f5; scroll-margin-top: 5rem; }
.estimate-progress ol { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .4rem; padding: 0; margin: 0; list-style: none; }
.estimate-progress button { display: flex; align-items: center; justify-content: center; gap: .65rem; width: 100%; min-height: 3.4rem; padding: .6rem; border: 0; border-radius: .4rem; background: transparent; color: #4d6256; font: 600 .82rem/1.4 "Noto Sans JP", sans-serif; cursor: pointer; }
.estimate-progress button:disabled { color: #6c756e; background: transparent; cursor: default; }
.estimate-progress button[aria-current="step"] { color: #fff; background: var(--sub-forest); }
.estimate-step-number { display: inline-grid; place-items: center; width: 1.7rem; height: 1.7rem; border-radius: 50%; background: #e4e9e3; color: #314b3f; font-weight: 700; font-variant-numeric: tabular-nums; }
.estimate-progress .is-complete .estimate-step-number { background: #dfebdf; color: #254c35; }
.estimate-progress button[aria-current="step"] .estimate-step-number { background: #fff; color: #12352b; }
.estimate-journey { display: grid; grid-template-columns: minmax(0, 1fr) minmax(17rem, 20rem); align-items: start; gap: 1.5rem; }
.estimate-journey-main, .estimate-journey-stage { min-width: 0; }
.estimate-ux .estimate-product-picker, .estimate-ux .estimate-conditions-panel { padding: clamp(1.1rem, 2.4vw, 2rem); }
.estimate-ux .estimate-mode-tabs { margin-bottom: 1rem; }
.estimate-ux .estimate-mode-tabs button { min-height: 3rem; padding: .6rem; font-size: .85rem; }
.estimate-ux .estimate-product-picker .estimate-option-grid-body { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .8rem; }
.estimate-product-card { display: flex; flex-direction: column; min-width: 0; border: 0; border-radius: .5rem; background: var(--ux-surface); }
.estimate-ux .estimate-product-card .estimate-option-inner { grid-template-columns: 1fr; border: 0; height: 100%; background: var(--ux-surface); }
.estimate-ux .estimate-product-card label { flex: 1; }
.estimate-ux .estimate-product-card .estimate-option-media { height: 8rem; min-height: 0; padding: .6rem; }
.estimate-ux .estimate-product-card .estimate-option-media img { height: 100%; max-height: 100%; width: 100%; object-fit: contain; }
.estimate-ux .estimate-product-card .estimate-option-copy { min-height: 8.7rem; gap: .5rem; padding: 1rem; }
.estimate-ux .estimate-product-card .estimate-option-copy strong { padding-right: 1rem; font-size: .85rem; }
.estimate-ux .estimate-product-card .estimate-option-copy > small { color: var(--sub-forest); font-weight: 700; font-variant-numeric: tabular-nums; font-size: .9rem; }
.estimate-card-dimensions { display: block; color: #68756b; font-size: .72rem; font-weight: 400; line-height: 1.8; }
.estimate-spec-details { padding: .75rem 1rem; font-size: .72rem; line-height: 1.8; color: #526258; }
.estimate-spec-details summary { cursor: pointer; min-height: 1.7rem; }
.estimate-spec-details p, .estimate-spec-details small { display: block; margin: .5rem 0 0; font-size: .72rem; }
.estimate-product-filters { display: flex; gap: .5rem; margin-bottom: .65rem; }
.estimate-ux-button { min-height: 2.75rem; padding: .6rem .9rem; border: 0; border-radius: .4rem; background: var(--ux-surface); color: var(--sub-forest); font: 500 .8rem/1.6 "Noto Sans JP", sans-serif; cursor: pointer; }
.estimate-product-filters .estimate-ux-button { flex: 1; }
.estimate-product-filters [aria-pressed="true"] { background: var(--ux-selected); box-shadow: none; font-weight: 700; }
.estimate-filter-status { margin: 0 0 1rem; color: #667269; font-size: .72rem; line-height: 1.8; }
.estimate-ux .estimate-shared-configuration { margin-top: 0; }
.estimate-ux .estimate-configuration-heading { gap: .7rem; margin-bottom: 1.25rem; }
.estimate-ux .estimate-configuration-heading h2 { margin: .3rem 0 .6rem; font-size: clamp(1.2rem, 2.2vw, 1.6rem); scroll-margin-top: 10rem; }
.estimate-ux .estimate-configuration-heading .sub-kicker { display: none; }
.estimate-ux .estimate-fields { gap: 1.5rem; }
.estimate-ux .estimate-journey-stage.estimate-fields { padding: clamp(1.1rem, 2.4vw, 2rem); border: 0; background: #fff; }
.estimate-ux .estimate-fieldset legend { font: 700 1.1rem/1.6 "Noto Sans JP", sans-serif; margin-bottom: 1rem; }
.estimate-ux .estimate-fieldset legend > span { display: none; }
.estimate-ux .estimate-fieldset-lead { font-size: .75rem; margin: 0 0 1rem; }
.estimate-ux .estimate-custom-panel { gap: 1.25rem; }
.estimate-ux .estimate-option-inner { grid-template-columns: 5rem minmax(0, 1fr); min-height: 6rem; }
.estimate-ux .estimate-option-media { min-height: 6rem; }
.estimate-ux .estimate-option-copy { padding: .85rem 1.9rem .85rem .65rem; }
.estimate-ux .estimate-option-copy strong { font-size: .8rem; }
.estimate-ux .estimate-option-copy small { font-size: .72rem; }
.estimate-ux .estimate-option-inner::after { top: .45rem; right: .45rem; width: 1.15rem; height: 1.15rem; font-size: .65rem; }
.estimate-ux .estimate-option-grid-stove { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .65rem; }
.estimate-stove-group-title { margin: .5rem 0; font-size: .95rem; color: var(--sub-forest); }
.estimate-stove-group-hint { margin: 0 0 1rem; color: #5b6b60; font-size: .73rem; line-height: 1.8; }
.estimate-other-stoves { margin-top: 1rem; padding: 1rem; border: 0; border-radius: .5rem; background: var(--ux-surface); }
.estimate-other-stoves > summary { min-height: 2rem; color: var(--sub-forest); font-size: .85rem; cursor: pointer; }
.estimate-other-stoves[open] > summary { margin-bottom: .75rem; }
.estimate-ux .estimate-other-stoves .estimate-option-grid-stove { grid-template-columns: 1fr; }
.estimate-ux .estimate-condition-fieldset { margin: 0; }
.estimate-ux [data-estimate-conditions] { gap: 1.6rem; }
.estimate-ux .estimate-conditions-intro { margin-bottom: 1.6rem; }
.estimate-ux .estimate-conditions-intro .sub-kicker { display: none; }
.estimate-ux .estimate-conditions-intro h2 { font-size: 1.3rem; margin: 0 0 .65rem; }
.estimate-ux .estimate-conditions-intro > p { margin: 0; }
.estimate-people-adjusters { display: flex; align-items: center; gap: .8rem; }
.estimate-people-adjusters output { min-width: 4.5rem; text-align: center; }
.estimate-people-adjusters button { display: grid; place-items: center; width: 2.75rem; height: 2.75rem; padding: 0; font-size: 1.15rem; border-radius: 50%; }
.estimate-people-adjusters button:disabled { opacity: .45; cursor: default; }
.estimate-ux .estimate-people-unknown { margin-top: .8rem; }
.estimate-ux #condition-size-help { font-size: .76rem; }
.estimate-space-guide { padding: 1rem; margin: 0 0 1rem; color: #355845; background: #f1f4ed; }
.estimate-space-guide svg { display: block; width: 100%; max-height: 12rem; }
.estimate-space-guide figcaption { font-size: .7rem; line-height: 1.8; }
.estimate-space-live { margin: .6rem 0 0; font-size: .75rem; font-weight: 700; }
.estimate-ux .estimate-condition-dimensions { gap: .65rem; }
.estimate-ux .estimate-dimension-unknown { font-size: .68rem; }
.estimate-ux .estimate-dimension-input { gap: .25rem; font-size: .8rem; }
.estimate-ux .estimate-dimension-input input { padding: .6rem .4rem; }
.estimate-ux .estimate-condition-fieldset > .estimate-ux-button { margin-top: 1rem; font-size: .74rem; }
.estimate-ux .estimate-condition-card-grid { gap: .75rem; margin: 1rem 0; }
.estimate-ux .estimate-condition-card { padding: 1rem; }
.estimate-ux .estimate-condition-card-image { height: 8rem; margin-bottom: .85rem; }
.estimate-ux .estimate-condition-card h4 { font-size: .9rem; }
.estimate-ux .estimate-condition-card .estimate-spec-details { padding: .4rem 0; margin-bottom: .5rem; width: 100%; }
.estimate-ux .estimate-condition-price { font-size: .8rem; }
.estimate-ux .estimate-condition-badge { font-size: .68rem; }
.estimate-ux .estimate-condition-results { margin-top: 1.5rem; padding-top: 1.5rem; }
.estimate-ux .estimate-condition-results-head h3 { font-size: 1.2rem; scroll-margin-top: 10rem; }
.estimate-ux .estimate-condition-consult { margin-top: 1rem; padding: 1rem; gap: 1rem; }
.estimate-term-help { padding: .7rem; margin-bottom: .8rem; background: #f1f4ed; color: #405d4b; font-size: .75rem; line-height: 1.9; }
.estimate-term-help summary { min-height: 2rem; cursor: pointer; font-weight: 600; }
.estimate-term-help p { margin: .5rem 0 0; }
.estimate-door-examples svg { display: block; width: 100%; max-height: 9rem; margin: .75rem 0; }
.estimate-ux .estimate-result { top: 10rem; padding: 1.25rem; max-height: calc(100dvh - 11rem); overflow-y: auto; border: 0; border-radius: .5rem; box-shadow: none; background: #fff; }
.estimate-summary-product { margin: 0 0 1rem; padding-bottom: .25rem; font-size: .85rem; line-height: 1.8; font-weight: 700; }
.estimate-ux .estimate-result-amount > strong { font-size: clamp(1.4rem, 8.5cqi, 1.9rem); }
.estimate-ux .estimate-result > [data-estimate-note] { margin-bottom: .85rem; }
.estimate-summary-incomplete { margin: 0 0 1rem; color: #526358; font-size: .8rem; line-height: 1.8; }
.estimate-price-delta { margin: 0 0 .7rem; font-size: .75rem; font-weight: 700; color: #355d41; }
.estimate-price-delta:empty { display: none; }
.estimate-pending-heading { margin: 0 0 .5rem; font-size: .76rem; font-weight: 700; color: #795f30; }
.estimate-pending-list { margin: 0 0 1rem; padding-left: 1.1rem; font-size: .75rem; color: #6c5732; line-height: 1.9; }
.estimate-cost-details { padding: .8rem 0; font-size: .75rem; }
.estimate-cost-details > summary { cursor: pointer; min-height: 1.8rem; }
.estimate-cost-rows { display: grid; grid-template-columns: minmax(5rem, 1fr) minmax(0, 1fr); gap: .7rem; margin: .8rem 0; font-size: .78rem; line-height: 1.8; }
.estimate-cost-rows dt { color: #617266; }
.estimate-cost-rows dd { margin: 0; text-align: right; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.estimate-rounding-note, .estimate-additional-note { margin: .5rem 0 1rem; font-size: .68rem; color: #677365; line-height: 1.9; }
.estimate-ux .estimate-next, .estimate-ux .estimate-result-contact { width: 100%; min-height: 3.2rem; padding: .85rem; letter-spacing: 0; font-size: .82rem; cursor: pointer; text-align: center; white-space: normal; }
.estimate-ux .estimate-custom-summary { margin-bottom: 1rem; padding-top: .8rem; }
.estimate-ux .estimate-custom-summary li { font-size: .75rem; }
.estimate-ux .estimate-installation-note { padding: .6rem; font-size: .68rem; }
.estimate-stage-footer { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-top: 1.5rem; }
.estimate-stage-footer > .btn { min-height: 3rem; font-size: .85rem; padding: .85rem 1.25rem; letter-spacing: 0; cursor: pointer; }
.estimate-review { padding: clamp(1.1rem, 2.4vw, 2rem); background: #fff; border: 0; }
.estimate-review h2 { margin: 0 0 .8rem; font-size: 1.5rem; scroll-margin-top: 10rem; }
.estimate-review > p { font-size: .8rem; line-height: 1.9; color: #667265; }
.estimate-review-row { display: grid; grid-template-columns: 1fr auto; align-items: start; column-gap: .8rem; padding: 1rem; margin: .65rem 0; border: 0; border-radius: .4rem; background: var(--ux-surface); }
.estimate-review-row > strong { font-size: .8rem; color: #647265; }
.estimate-review-row > p { grid-column: 1; margin: .5rem 0 0; font-size: .85rem; line-height: 1.9; }
.estimate-review-row > button { grid-row: 1 / 3; grid-column: 2; font-size: .72rem; }
.estimate-review-contact { display: flex; justify-content: center; width: 100%; min-height: 3.3rem; padding: .9rem; font-size: .9rem; letter-spacing: 0; }
.estimate-mobile-dock { display: none; }
/* Keep image dimensions independent of intrinsic portrait/landscape sizes.
   Selection uses a background and check; the outline is reserved for keyboard focus. */
.estimate-ux .estimate-option-inner { height: auto !important; align-items: stretch; }
.estimate-ux .estimate-product-card .estimate-option-inner { height: 100% !important; }
.estimate-ux .estimate-option-media { position: relative; min-width: 0; overflow: hidden; }
.estimate-ux .estimate-option-media img { position: absolute; inset: .65rem; width: calc(100% - 1.3rem) !important; height: calc(100% - 1.3rem) !important; max-height: none !important; object-fit: contain; }
.estimate-ux .estimate-option-card input:checked + .estimate-option-inner,
.estimate-ux .estimate-option-card input:focus-visible + .estimate-option-inner { box-shadow: none; }
.estimate-ux .estimate-option-card::before { content: ''; position: absolute; inset: 0; border: 2px solid transparent; z-index: 2; pointer-events: none; }
.estimate-ux .estimate-option-card:has(input:checked)::before { border-color: transparent; }
.estimate-ux .estimate-option-card:has(input:focus-visible)::before { border-color: #b38b4d; border-radius: .4rem; }
.estimate-ux .estimate-option-inner::after,
.estimate-ux .estimate-delivery-grid label > span::after,
.estimate-ux .estimate-addon-card > span::after { content: none; display: none; }
.estimate-ux .estimate-option-copy,
.estimate-ux .estimate-addon-card > span > span { position: relative; padding-right: 2.7rem !important; }
.estimate-selection-indicator { position: absolute; top: .8rem; right: .8rem; display: grid; place-items: center; width: 1.4rem; height: 1.4rem; border: 1px solid #9bad9e; border-radius: 50%; background: #fff; color: #fff; pointer-events: none; z-index: 3; }
.estimate-selection-indicator svg { display: block; width: .95rem; height: .95rem; opacity: 0; }
.estimate-ux input:checked + .estimate-option-inner .estimate-selection-indicator,
.estimate-ux .estimate-delivery-grid input:checked + span .estimate-selection-indicator,
.estimate-ux .estimate-addon-card input:checked + span .estimate-selection-indicator { background: var(--sub-forest); }
.estimate-ux input:checked + .estimate-option-inner .estimate-selection-indicator svg,
.estimate-ux .estimate-delivery-grid input:checked + span .estimate-selection-indicator svg,
.estimate-ux .estimate-addon-card input:checked + span .estimate-selection-indicator svg { opacity: 1; }
.estimate-ux .estimate-option-grid-stove .estimate-option-inner { opacity: 1; }
.estimate-ux button:focus-visible, .estimate-ux summary:focus-visible, .estimate-ux a:focus-visible { outline: 3px solid #b38b4d; outline-offset: 3px; }
@media (max-width: 980px) {
  .estimate-journey { grid-template-columns: minmax(0, 1fr) 17rem; gap: 1rem; }
  .estimate-ux .estimate-option-grid-stove, .estimate-ux .estimate-custom-panel .estimate-option-grid { grid-template-columns: 1fr; }
  .estimate-ux .estimate-product-picker .estimate-option-grid-body { grid-template-columns: 1fr; }
  .estimate-ux .estimate-product-card .estimate-option-inner { grid-template-columns: 7rem minmax(0, 1fr); }
  .estimate-ux .estimate-product-card .estimate-option-copy { min-height: 7rem; }
  .estimate-ux .estimate-condition-card-grid { grid-template-columns: 1fr; }
}
@media (max-width: 760px) {
  .estimate-ux { padding-bottom: 7.5rem; }
  .estimate-completed-summary { align-items: start; gap: .5rem; padding: .7rem; }
  .estimate-completed-summary p { font-size: .68rem; }
  .estimate-completed-summary button { max-width: 6.5rem; white-space: normal; padding: .5rem; font-size: .65rem; }
  .estimate-progress { top: 4.3rem; padding: .5rem 0; }
  .estimate-progress ol { gap: .25rem; }
  .estimate-progress button { flex-direction: column; gap: .25rem; min-height: 3.8rem; padding: .4rem .15rem; font-size: .65rem; }
  .estimate-step-number { width: 1.35rem; height: 1.35rem; font-size: .7rem; }
  .estimate-journey { grid-template-columns: minmax(0, 1fr); }
  .estimate-ux:not([data-ux-step="4"]) .estimate-result { display: none; }
  .estimate-ux .estimate-result { position: static; max-height: none; overflow: visible; }
  .estimate-ux .estimate-product-card .estimate-option-media { height: 7rem; }
  .estimate-ux .estimate-option-grid-stove, .estimate-ux .estimate-addon-grid { grid-template-columns: 1fr; }
  .estimate-ux .estimate-condition-dimensions { grid-template-columns: 1fr; }
  .estimate-ux .estimate-configuration-heading h2 { font-size: 1.2rem; }
  .estimate-ux .estimate-configuration-heading [data-estimate-selected-name] { font-size: .8rem; }
  .estimate-ux .estimate-condition-choices span { font-size: .8rem; }
  .estimate-ux .estimate-condition-fieldset legend { font-size: .95rem; }
  .estimate-ux .estimate-people-heading { flex-wrap: wrap; }
  .estimate-people-adjusters { gap: .6rem; }
  .estimate-people-adjusters output { font-size: 1.5rem; }
  .estimate-mobile-dock { position: fixed; bottom: 0; left: 0; right: 0; z-index: 45; gap: .6rem; align-items: center; justify-content: space-between; padding: .75rem max(1rem, env(safe-area-inset-left)) calc(.75rem + env(safe-area-inset-bottom)); border: 0; background: #fff; box-shadow: 0 -4px 22px #153a3112; }
  .estimate-ux.is-on-screen .estimate-mobile-dock { display: flex; }
  .estimate-mobile-dock > div { display: flex; flex-direction: column; min-width: 0; max-width: 60%; gap: .15rem; }
  .estimate-dock-product { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: .65rem; color: #4e6656; }
  .estimate-mobile-dock strong { font-size: .95rem; line-height: 1.4; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
  .estimate-mobile-dock small { font-size: .6rem; color: #796334; }
  .estimate-mobile-dock > .btn { flex-shrink: 0; max-width: 45%; min-height: 2.8rem; padding: .65rem; text-align: center; white-space: normal; font-size: .7rem; letter-spacing: 0; line-height: 1.6; cursor: pointer; }
  .estimate-stage-footer > .btn { display: none; }
  .estimate-review-row { gap: .5rem; }
  .estimate-review-row > button { padding: .5rem; font-size: .65rem; }
  .estimate-ux .estimate-delivery-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* Room customization expands in the selected card, within the first step. */
.estimate-ux .estimate-product-card.is-customizing,
.estimate-ux .estimate-condition-card.is-customizing { grid-column: 1 / -1; }
.estimate-ux .estimate-inline-customization { width: 100%; min-width: 0; box-sizing: border-box; padding: clamp(1rem, 2.4vw, 1.75rem); border: 0; background: #fff; }
.estimate-inline-customization legend { scroll-margin-top: 10rem; }
.estimate-ux .estimate-condition-card.is-customizing .estimate-inline-customization { margin-top: 1rem; padding-right: 0; padding-left: 0; }
.estimate-ux .estimate-product-card.is-customizing > label .estimate-option-inner { grid-template-columns: minmax(6rem, 9rem) minmax(0, 1fr); }
.estimate-ux .estimate-product-card.is-customizing > label .estimate-option-media { height: 8rem; }
.estimate-ux .estimate-product-card.is-customizing > label .estimate-option-copy { min-height: 0; }
.estimate-ux .estimate-next:disabled,
.estimate-ux .estimate-mobile-dock > .btn:disabled,
.estimate-ux .estimate-stage-footer > .btn:disabled { opacity: .65; cursor: default; }
@media (max-width: 400px) {
  .estimate-ux .estimate-product-card.is-customizing > label .estimate-option-inner { grid-template-columns: 6rem minmax(0, 1fr); }
  .estimate-ux .estimate-product-card.is-customizing > label .estimate-option-copy { padding: .8rem; }
}

/* Keep decisions and important price conditions visible; disclose supporting detail. */
.estimate-ux .estimate-configuration-heading [data-estimate-selected-name],
.estimate-ux .estimate-configuration-heading [data-estimate-change-room] { display: none !important; }
.estimate-ux[data-ux-step="4"] .estimate-result .estimate-custom-summary { display: none; }
.estimate-stove-help { margin-top: 1rem; margin-bottom: 0; }
.estimate-stove-help .estimate-fieldset-lead { margin: .75rem 0 0; }
.estimate-size-help { margin: .75rem 0 1rem; }
.estimate-ux .estimate-result .product-price-note { margin-top: .75rem; font-size: .72rem; line-height: 1.8; }
@media (max-width: 760px) {
  .estimate-ux[data-ux-step="4"] .estimate-journey { display: flex; flex-direction: column; }
  .estimate-ux[data-ux-step="4"] .estimate-result { order: -1; width: 100%; box-sizing: border-box; }
  .estimate-ux[data-ux-step="4"] .estimate-journey-main { width: 100%; }
  .estimate-ux .estimate-review-contact { display: none; }
  .estimate-review h2 { font-size: 1.2rem; }
}

.estimate-result-heading { scroll-margin-top: 10rem; }

/* Separate choices with space and quiet surfaces instead of nested frames. */
.estimate-ux .estimate-mode-tabs button { border-radius: .3rem; box-shadow: none; }
.estimate-ux .estimate-product-picker,
.estimate-ux .estimate-conditions-panel,
.estimate-ux .estimate-journey-stage.estimate-fields,
.estimate-ux .estimate-review { border-radius: .5rem; }
.estimate-ux .estimate-option-inner,
.estimate-ux .estimate-delivery-grid label > span,
.estimate-ux .estimate-addon-card > span { border: 0; border-radius: .4rem; background: var(--ux-surface); box-shadow: none; }
.estimate-ux .estimate-option-card input:checked + .estimate-option-inner,
.estimate-ux .estimate-delivery-grid input:checked + span,
.estimate-ux .estimate-addon-card input:checked + span { background: var(--ux-selected); box-shadow: none; }
.estimate-ux .estimate-option-media { background: transparent; }
.estimate-ux .estimate-product-card:has(> label > input:checked) { background: var(--ux-selected); }
.estimate-ux .estimate-product-card > label .estimate-option-inner { border-radius: .5rem .5rem 0 0; }
.estimate-ux .estimate-inline-customization { padding-top: 1.75rem; }
.estimate-ux .estimate-custom-summary { border: 0; }
.estimate-ux .estimate-delivery-grid label > span { height: 100%; box-sizing: border-box; }
.estimate-ux .estimate-delivery-grid input:focus-visible + span,
.estimate-ux .estimate-addon-card input:focus-visible + span { outline: 3px solid #b38b4d; outline-offset: 2px; box-shadow: none; }
@media (hover: hover) {
  .estimate-ux .estimate-option-card:hover .estimate-option-inner,
  .estimate-ux .estimate-delivery-grid label:hover > span,
  .estimate-ux .estimate-addon-card:hover > span { background: #eaf0e7; }
  .estimate-ux .estimate-option-card:has(input:checked):hover .estimate-option-inner,
  .estimate-ux .estimate-delivery-grid label:has(input:checked):hover > span,
  .estimate-ux .estimate-addon-card:has(input:checked):hover > span { background: #dde9df; }
}

.estimate-ux .estimate-stove-none { margin-bottom: 1.5rem; }
.estimate-ux .estimate-stove-none .estimate-option-inner { grid-template-columns: minmax(0, 1fr); min-height: 4.5rem; }
.estimate-ux .estimate-stove-none .estimate-option-copy { padding: 1rem; }

/* A compact page title leads directly into the simulator. */
.estimate-page .estimate-page-intro { padding: clamp(2.5rem, 5vw, 4rem) 0 clamp(1.25rem, 3vw, 2.5rem); }
.estimate-page .estimate-page-intro h1 { margin: 0; font-size: clamp(1.4rem, 3.5vw, 3rem); line-height: 1.5; text-wrap: balance; }

/* Keep price information on a plain surface without the page grain overlay. */
body.estimate-page::after { display: none; }
.estimate-ux .estimate-result > [data-estimate-note],
.estimate-ux .estimate-result .estimate-rounding-note,
.estimate-ux .estimate-result .estimate-additional-note { color: #4b5852; }
