.zt-estimator { width: min(1180px, calc(100% - 40px)); margin: 0 auto; }
.zt-estimator-app { display: grid; grid-template-columns: minmax(270px,.82fr) minmax(420px,1.6fr) minmax(245px,.72fr); align-items: stretch; border: 1px solid #d4e1f0; border-radius: 24px; background: #fff; box-shadow: 0 26px 70px rgba(28,68,126,.14); overflow: hidden; }
.zt-estimator-app[aria-busy="true"] { cursor: progress; }
.zt-estimator-form { display: grid; align-content: start; gap: 14px; padding: 26px; border-right: 1px solid #dbe6f3; }
.zt-estimator-heading { margin-bottom: 4px; padding-bottom: 19px; border-bottom: 1px solid #dbe5f1; }
.zt-estimator-heading span,
.zt-map-toolbar span,
.zt-estimator-result > span,
.zt-estimate-box > span { color: #1548ff; font-size: 10px; font-weight: 900; letter-spacing: .09em; text-transform: uppercase; }
.zt-estimator-heading h3,
.zt-map-toolbar h3 { margin: 7px 0 5px; color: #081229; font-size: 23px; letter-spacing: -.035em; line-height: 1.05; }
.zt-estimator-heading p { margin: 0; color: #66758c; font-size: 12px; }
.zt-estimator-form label,
.zt-manual-area { display: grid; gap: 6px; color: #2d405d; font-size: 11px; font-weight: 820; }
.zt-estimator-form label small { color: #7b879a; font-weight: 650; }
.zt-estimator-form input,
.zt-estimator-form select,
.zt-estimator-form textarea,
.zt-estimator-contact-dialog input,
.zt-estimator-contact-dialog textarea { width: 100%; border: 1px solid #cbd9ea; border-radius: 9px; color: #081229; background: #fff; }
.zt-estimator-form input,
.zt-estimator-form select { height: 44px; padding: 0 11px; }
.zt-estimator-form textarea { min-height: 92px; padding: 10px 11px; resize: vertical; }
.zt-estimator-form .zt-form-row { grid-template-columns: 1fr; gap: 12px; }
.zt-estimator-path-card { display: grid; gap: 14px; margin-top: 4px; padding: 18px; border: 1px solid #cfe0f6; border-radius: 15px; background: #f3f7ff; }
.zt-estimator-path-card > span { color: #1548ff; font-size: 10px; font-weight: 900; letter-spacing: .08em; text-transform: uppercase; }
.zt-estimator-path-card ol { display: grid; gap: 14px; margin: 0; padding: 0; list-style: none; counter-reset: path; }
.zt-estimator-path-card li { position: relative; display: grid; gap: 3px; min-height: 34px; padding-left: 42px; color: #132440; counter-increment: path; }
.zt-estimator-path-card li::before { content: counter(path); position: absolute; top: 0; left: 0; width: 29px; height: 29px; display: grid; place-items: center; border-radius: 9px; color: #fff; background: #1548ff; font-size: 10px; font-weight: 900; }
.zt-estimator-path-card b { font-size: 12px; }
.zt-estimator-path-card small { color: #687990; font-size: 10px; font-weight: 650; line-height: 1.45; }
.zt-address-row { display: grid; grid-template-columns: 1fr auto; gap: 6px; }
.zt-address-row button,
.zt-map-actions button { min-height: 42px; padding: 0 13px; border: 1px solid #bdcde1; border-radius: 9px; color: #14223a; background: #fff; font-size: 11px; font-weight: 850; cursor: pointer; }
.zt-address-row button:hover,
.zt-map-actions button:hover { border-color: #1548ff; }
.zt-address-row button:disabled { opacity: .6; cursor: wait; }
.zt-map-actions button:disabled { opacity: .42; cursor: not-allowed; }
.zt-map-actions button:disabled:hover { border-color: #bdcde1; }

.zt-estimator-map-panel { min-width: 0; background: #f6faff; }
.zt-map-toolbar { min-height: 100px; display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 20px; border-bottom: 1px solid #dce7f3; background: #fff; }
.zt-map-actions { display: flex; gap: 7px; }
.zt-map-actions button:first-child { border-color: #1548ff; color: #fff; background: #1548ff; }
.zt-map-message { min-height: 38px; margin: 0; padding: 10px 18px; color: #3a5579; background: #e6f5ff; font-size: 11px; font-weight: 700; }
.zt-live-map { position: relative; min-height: 460px; background-color: #dfe9f4; background-image: linear-gradient(#cad9e8 1px, transparent 1px), linear-gradient(90deg, #cad9e8 1px, transparent 1px); background-size: 44px 44px; isolation: isolate; overflow: hidden; }
.zt-map-gate-image { position: absolute; z-index: 0; inset: -8px; width: calc(100% + 16px); height: calc(100% + 16px); object-fit: cover; filter: blur(5px) saturate(.82); transform: scale(1.02); }
.zt-live-map.is-unavailable { position: relative; }
.zt-live-map.is-unavailable::after { content: "Map unavailable — use the square-foot field below"; position: absolute; inset: 0; display: grid; place-items: center; padding: 30px; color: #415673; background: rgba(239,246,253,.94); font-size: 14px; font-weight: 800; text-align: center; }
.zt-map-gate { position: absolute; z-index: 1000; inset: 0; display: grid; place-items: center; padding: 28px; background: linear-gradient(135deg, rgba(7,18,41,.72), rgba(21,72,255,.24)); }
.zt-map-gate::after { content: ""; position: absolute; z-index: 0; inset: 0; background: linear-gradient(135deg, rgba(7,18,41,.5), rgba(21,72,255,.22)); }
.zt-map-gate[hidden],
.zt-map-gate [hidden] { display: none !important; }
.zt-map-gate-choice { position: relative; z-index: 1; width: min(520px,100%); display: grid; gap: 10px; padding: 24px; border: 1px solid rgba(255,255,255,.58); border-radius: 20px; color: #fff; background: rgba(8,17,36,.94); box-shadow: 0 24px 70px rgba(8,17,36,.42); }
.zt-map-gate-choice > span { color: #8fb0ff; font-size: 10px; font-weight: 900; letter-spacing: .09em; text-transform: uppercase; }
.zt-map-gate-choice h4 { margin: 0; font-size: 24px; letter-spacing: -.035em; line-height: 1.08; }
.zt-map-gate-choice > p { margin: 0; color: #c0cde0; font-size: 11px; line-height: 1.5; }
.zt-map-path-buttons { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 6px; }
.zt-map-path-buttons button { display: grid; gap: 4px; min-height: 86px; padding: 15px; border: 1px solid #789cff; border-radius: 13px; color: #0b1732; background: #fff; text-align: left; cursor: pointer; transition: transform .18s ease, border-color .18s ease, box-shadow .18s ease; }
.zt-map-path-buttons button:last-child { color: #fff; background: #1548ff; }
.zt-map-path-buttons button:hover { border-color: #fff; box-shadow: 0 12px 30px rgba(10,46,150,.26); transform: translateY(-2px); }
.zt-map-path-buttons b { font-size: 13px; line-height: 1.25; }
.zt-map-path-buttons small { color: #61718a; font-size: 9px; font-weight: 700; }
.zt-map-path-buttons button:last-child small { color: #dbe5ff; }
.zt-map-choice-status { min-height: 16px; color: #a9c0ff; font-size: 10px; font-weight: 750; }
.zt-map-address-popup { position: relative; z-index: 1; width: min(390px, 100%); display: grid; gap: 13px; padding: 24px; border: 1px solid #d5e1f0; border-radius: 20px; color: #081229; background: #fff; box-shadow: 0 24px 70px rgba(8,17,36,.38); }
.zt-map-address-popup > span { color: var(--zt-blue); font-size: 10px; font-weight: 900; letter-spacing: .08em; text-transform: uppercase; }
.zt-map-address-popup h4 { margin: 0; font-size: 22px; letter-spacing: -.035em; line-height: 1.08; }
.zt-map-address-popup p { margin: 0; color: #62728a; font-size: 12px; }
.zt-map-address-popup label { display: grid; gap: 7px; color: #283b58; font-size: 11px; font-weight: 850; }
.zt-map-address-popup input { width: 100%; height: 47px; padding: 0 12px; border: 1px solid #c5d5e8; border-radius: 10px; color: #081229; background: #fff; }
.zt-map-address-popup .zt-button { width: 100%; }
.zt-map-popup-close { position: absolute; top: 12px; right: 12px; width: 34px; height: 34px; border: 0; border-radius: 9px; color: #52637b; background: #eef3fa; font-size: 20px; line-height: 1; cursor: pointer; }
.zt-map-gate-status { min-height: 18px; margin: 0; color: #1548ff !important; font-size: 11px !important; font-weight: 800; }

.zt-estimator-result { display: flex; flex-direction: column; align-items: flex-start; padding: 26px; background: #fff; }
.zt-estimator-result > strong { margin-top: 10px; color: #1548ff; font-size: clamp(2.8rem,4.6vw,4.7rem); letter-spacing: -.06em; line-height: .9; }
.zt-estimator-result > small { margin-top: 7px; color: #6d7a8f; }
.zt-estimate-box { width: 100%; display: grid; gap: 8px; margin-top: 28px; padding: 18px; border-radius: 15px; background: #eaf2ff; }
.zt-estimate-box strong { color: #0c1c3a; font-size: 23px; line-height: 1.1; }
.zt-estimate-box p { margin: 0; color: #667791; font-size: 11px; }
.zt-estimator-result .zt-button { width: 100%; margin-top: auto; }
.zt-estimator-result .zt-form-status { margin-top: 12px; }
.zt-no-script { padding: 16px; border-radius: 12px; color: #7c2500; background: #fff1e8; }

.zt-estimator-contact-modal { position: fixed; z-index: 8500; inset: 0; display: grid; place-items: center; padding: 22px; }
.zt-estimator-contact-modal[hidden] { display: none; }
.zt-estimator-contact-backdrop { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; background: rgba(3,8,19,.8); backdrop-filter: blur(5px); cursor: pointer; }
.zt-estimator-contact-dialog { position: relative; z-index: 1; width: min(650px,100%); max-height: calc(100vh - 44px); padding: clamp(24px,4vw,40px); border: 1px solid #cfdbec; border-radius: 24px; background: #fff; box-shadow: 0 34px 100px rgba(0,0,0,.4); overflow-y: auto; }
.zt-estimator-contact-dialog > span { color: #1548ff; font-size: 10px; font-weight: 900; letter-spacing: .09em; text-transform: uppercase; }
.zt-estimator-contact-dialog > h3 { margin: 9px 0 10px; color: #081229; font-size: clamp(1.8rem,4vw,2.8rem); letter-spacing: -.045em; line-height: 1.02; }
.zt-estimator-contact-dialog > p { margin: 0 0 22px; color: #64748b; font-size: 13px; line-height: 1.6; }
.zt-estimator-contact-dialog form { display: grid; gap: 14px; }
.zt-estimator-contact-dialog label { display: grid; gap: 7px; color: #2d405d; font-size: 11px; font-weight: 820; }
.zt-estimator-contact-dialog label small { color: #7b879a; font-weight: 650; }
.zt-estimator-contact-dialog input { height: 46px; padding: 0 11px; }
.zt-estimator-contact-dialog textarea { min-height: 100px; padding: 11px; resize: vertical; }
.zt-estimator-contact-close { position: absolute; top: 14px; right: 14px; width: 38px; height: 38px; border: 0; border-radius: 10px; color: #52637b; background: #eef3fa; font-size: 23px; cursor: pointer; }

.zt-live-map .leaflet-control-attribution { font-size: 9px; }
.zt-live-map .leaflet-control-container button,
.zt-live-map .leaflet-control-container a { min-width: 30px; min-height: 30px; }

@media (max-width: 1040px) {
  .zt-estimator-app { grid-template-columns: minmax(250px,.8fr) minmax(430px,1.4fr); }
  .zt-estimator-result { grid-column: 1 / -1; display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 8px 22px; border-top: 1px solid #dbe6f3; }
  .zt-estimator-result > span { grid-column: 1; }
  .zt-estimator-result > strong { grid-column: 1; }
  .zt-estimator-result > small { grid-column: 1; }
  .zt-estimate-box { grid-column: 2; grid-row: 1 / 4; margin-top: 0; }
  .zt-estimator-result .zt-button { grid-column: 3; grid-row: 1 / 4; width: auto; margin-top: 0; }
  .zt-estimator-result .zt-form-status { grid-column: 1 / -1; }
}

@media (max-width: 760px) {
  .zt-estimator { width: min(100% - 28px,720px); }
  .zt-estimator-app { grid-template-columns: 1fr; border-radius: 19px; }
  .zt-estimator-form { border-right: 0; border-bottom: 1px solid #dbe6f3; padding: 22px; }
  .zt-map-toolbar { align-items: flex-start; flex-direction: column; }
  .zt-map-actions { width: 100%; }
  .zt-map-actions button { flex: 1; }
  .zt-live-map { min-height: 390px; }
  .zt-map-gate { padding: 18px; }
  .zt-map-gate-choice, .zt-map-address-popup { width: 100%; }
  .zt-map-gate-choice { padding: 20px; }
  .zt-map-path-buttons { grid-template-columns: 1fr; }
  .zt-map-path-buttons button { min-height: 70px; }
  .zt-map-address-popup { padding: 22px 18px 18px; }
  .zt-estimator-result { grid-column: auto; display: flex; align-items: flex-start; padding: 22px; }
  .zt-estimate-box { width: 100%; margin-top: 24px; }
  .zt-estimator-result .zt-button { width: 100%; margin-top: 22px; }
  .zt-estimator-contact-modal { align-items: end; padding: 0; }
  .zt-estimator-contact-dialog { width: 100%; max-height: 88vh; border-radius: 24px 24px 0 0; padding: 28px 20px 24px; }
  .zt-estimator-contact-dialog .zt-form-row { grid-template-columns: 1fr; }
}
