/* Free quote page: short intro beside a single-card request form. */
.quote-page { padding:140px 0 120px; background:linear-gradient(#ecf1ed,var(--paper) 560px); }
.quote-layout { display:grid; grid-template-columns:minmax(0,5fr) minmax(0,7fr); gap:clamp(40px,7vw,120px); }
.quote-intro { display:flex; flex-direction:column; }
.quote-intro h1 { margin:0; font-size:var(--page-title-size); font-weight:500; line-height:1.08; letter-spacing:-.045em; }
.quote-intro>p { max-width:400px; margin:24px 0 0; font-size:15px; line-height:1.6; }
.quote-contact { max-width:420px; margin:44px 0 0; padding:0; list-style:none; border-top:1px solid var(--line); }
.quote-contact li { display:grid; grid-template-columns:76px 1fr; gap:12px; align-items:baseline; padding:16px 0; border-bottom:1px solid var(--line); font-size:14px; }
.quote-contact span { color:var(--muted); font-size:12px; }
.quote-contact a { color:var(--ink); transition:color .2s; }
.quote-contact a:hover { color:#173342; text-decoration:underline; text-underline-offset:3px; }
.quote-reviews { max-width:420px; margin:auto 0 0; padding-top:48px; }
.quote-review-pages { display:grid; }
.quote-review-page { grid-area:1 / 1; display:grid; gap:12px; align-content:end; margin:0; padding:0; list-style:none; opacity:0; translate:0 8px; transition:opacity .6s ease,translate .9s var(--ease); }
.quote-review-page.is-active { opacity:1; translate:0 0; }
.quote-review-page li { padding:18px 20px; border:1px solid #e3e8e5; border-radius:18px; background:#ffffffb3; }
.quote-reviews .review-stars { display:inline-flex; gap:2px; color:#c8963a; }
.quote-reviews .review-stars svg { width:12px; height:12px; fill:currentColor; }
.quote-reviews blockquote { margin:10px 0 0; }
.quote-reviews p { margin:0; color:var(--ink); font-size:13px; line-height:1.55; }
.quote-reviews li>span { display:block; margin-top:10px; color:var(--muted); font-size:11px; }

.quote-card { padding:clamp(24px,3.6vw,48px); border:1px solid #e3e8e5; border-radius:28px; background:#fff; box-shadow:0 1px 2px #1a2e2808,0 40px 80px -60px #1a2e2866; }
.quote-form { position:relative; }
.quote-grid { display:grid; grid-template-columns:1fr 1fr; gap:20px 16px; }
.quote-field { display:flex; flex-direction:column; min-width:0; }
.quote-field.is-wide { grid-column:1 / -1; }
.quote-field label,.quote-label { margin-bottom:8px; color:var(--ink); font-size:13px; font-weight:550; }
.quote-field label span,.quote-label span { margin-left:6px; color:var(--muted); font-weight:400; }
.quote-form input,.quote-form select,.quote-form textarea { box-sizing:border-box; width:100%; height:52px; padding:0 16px; border:1px solid #dfe5e2; border-radius:12px; background:#f7f9f8; color:var(--ink); font:inherit; font-size:16px; appearance:none; transition:border-color .2s,box-shadow .2s,background .2s; }
.quote-form textarea { height:auto; min-height:128px; padding:14px 16px; line-height:1.5; resize:vertical; }
.quote-form input:hover,.quote-form select:hover,.quote-form textarea:hover { border-color:#c9d2ce; }
.quote-form input:focus,.quote-form select:focus,.quote-form textarea:focus { outline:none; border-color:#173342; background:#fff; box-shadow:0 0 0 4px #1733421a; }
.quote-form ::placeholder { color:#98a19d; }
.quote-form [aria-invalid="true"] { border-color:#c4321f; background:#fffafa; }
.quote-form [aria-invalid="true"]:focus { border-color:#c4321f; box-shadow:0 0 0 4px #c4321f1a; }
.quote-form .is-autofilled { animation:quote-fill 1.4s var(--ease); }
@keyframes quote-fill { from { border-color:#173342; background:#eaf0f4; } }
.quote-error { margin:6px 0 0; color:#b42318; font-size:12px; }
.quote-hint { margin:6px 0 0; color:var(--muted); font-size:12px; }
.quote-error:empty,.quote-address:has([aria-invalid="true"]) .quote-hint { display:none; }

.quote-address-box { position:relative; }
.quote-address-box>.icon { position:absolute; top:26px; width:18px; height:18px; translate:0 -50%; color:#7d8783; pointer-events:none; }
.quote-address-box>.icon { left:15px; }
.quote-address-box input { padding-left:44px; }

.quote-picker { box-sizing:border-box; position:relative; display:flex; flex-wrap:wrap; align-items:center; gap:6px; min-height:52px; padding:7px 44px 7px 7px; border:1px solid #dfe5e2; border-radius:12px; background:#f7f9f8; cursor:pointer; transition:border-color .2s,box-shadow .2s,background .2s; }
.quote-picker:hover { border-color:#c9d2ce; }
.quote-picker:focus-within,.quote-picker.is-open { border-color:#173342; background:#fff; box-shadow:0 0 0 4px #1733421a; }
.quote-services:has([aria-invalid="true"]) .quote-picker { border-color:#c4321f; background:#fffafa; }
.quote-chips { display:flex; flex-wrap:wrap; gap:6px; margin:0; padding:0; list-style:none; }
.quote-chips:empty { display:none; }
.quote-chips li { display:inline-flex; align-items:center; gap:6px; height:36px; padding:0 6px 0 12px; border-radius:9px; background:#173342; color:#fff; font-size:13px; font-weight:500; cursor:default; animation:quote-chip .3s var(--ease); }
@keyframes quote-chip { from { opacity:0; scale:.9; } }
.quote-chips button { display:grid; place-items:center; width:24px; height:24px; padding:0; border:0; border-radius:6px; background:#ffffff1f; color:#fff; cursor:pointer; transition:background .2s; }
.quote-chips button:hover { background:#ffffff3d; }
.quote-chips button:focus-visible { outline:2px solid #fff; outline-offset:-2px; }
.quote-chips .icon { width:14px; height:14px; }
.quote-picker-toggle { flex:1 1 160px; display:flex; align-items:center; min-height:36px; padding:0 9px; border:0; background:none; color:#98a19d; font:inherit; font-size:16px; text-align:left; cursor:pointer; outline:none; }
.has-value .quote-picker-toggle { color:#173342; font-size:14px; font-weight:550; }
.has-value [data-services-prompt]::before { content:'+'; margin-right:7px; font-size:16px; font-weight:400; }
.quote-picker-toggle .icon { position:absolute; top:25px; right:15px; width:18px; height:18px; translate:0 -50%; color:#7d8783; transition:rotate .3s var(--ease); }
.quote-picker.is-open .quote-picker-toggle .icon { rotate:180deg; }
.quote-picker-menu { position:absolute; z-index:20; top:calc(100% + 6px); left:-1px; right:-1px; padding:6px; border:1px solid #e3e8e5; border-radius:18px; background:#fff; box-shadow:0 2px 6px #0b18160f,0 30px 60px -24px #0b181652; cursor:default; animation:quote-open .2s var(--ease); }
.quote-picker-menu ul { max-height:min(392px,58vh); margin:0; padding:0; overflow:auto; overscroll-behavior:contain; list-style:none; outline:none; }
.quote-option-group { padding:14px 10px 6px; color:var(--muted); font-size:10px; font-weight:550; letter-spacing:.14em; text-transform:uppercase; }
.quote-option-group:first-child { padding-top:8px; }
.quote-picker-menu [role="option"] { display:grid; grid-template-columns:36px 1fr 22px; align-items:center; gap:12px; padding:8px 10px; border-radius:12px; cursor:pointer; transition:background .15s; }
.quote-picker-menu [role="option"].is-active { background:#f3f6f4; }
.quote-option-icon { display:grid; place-items:center; width:36px; height:36px; border-radius:10px; background:#eef2f0; color:#173342; transition:background .2s,color .2s; }
.quote-option-icon .icon { width:19px; height:19px; }
.quote-option-copy strong { display:block; font-size:14px; font-weight:550; line-height:1.3; }
.quote-option-copy small { display:block; margin-top:1px; color:var(--muted); font-size:12px; line-height:1.35; }
.quote-option-check { box-sizing:border-box; display:grid; place-items:center; width:22px; height:22px; border:1.5px solid #d3dad6; border-radius:50%; color:transparent; transition:background .2s,border-color .2s,color .2s; }
.quote-option-check .icon { width:13px; height:13px; stroke-width:2.2; }
.quote-picker-menu [aria-selected="true"] .quote-option-icon { background:#173342; color:#fff; }
.quote-picker-menu [aria-selected="true"] .quote-option-check { border-color:#173342; background:#173342; color:#fff; }

.quote-suggestions { position:absolute; z-index:10; top:calc(100% + 6px); left:0; right:0; padding:6px; border:1px solid #e3e8e5; border-radius:16px; background:#fff; box-shadow:0 2px 6px #0b18160f,0 24px 48px -20px #0b181640; animation:quote-open .18s var(--ease); }
@keyframes quote-open { from { opacity:0; translate:0 -4px; } }
.quote-suggestions ul { margin:0; padding:0; list-style:none; }
.quote-suggestions li { display:flex; flex-direction:column; gap:1px; padding:10px 12px; border-radius:10px; cursor:pointer; }
.quote-suggestions li strong { font-size:14px; font-weight:550; }
.quote-suggestions li span { color:var(--muted); font-size:12px; }
.quote-suggestions li:hover,.quote-suggestions li[aria-selected="true"] { background:#f1f4f2; }
.quote-suggestions-credit { margin:4px 12px 4px; color:#9aa29e; font-size:10px; }

.quote-trap { position:absolute; left:-10000px; width:1px; height:1px; overflow:hidden; }
.quote-status { margin:20px 0 0; color:#b42318; font-size:13px; }
.quote-status:empty { display:none; }
.quote-form .submit-button { width:100%; height:56px; margin-top:28px; gap:12px; border-color:#173342; border-radius:14px; background:#173342; font-size:15px; font-weight:550; }
.quote-form .submit-button:hover { background:#284c5d; }
.quote-form .submit-button:disabled { opacity:.72; cursor:progress; transform:none; }
.form-fine { margin:16px auto 0; max-width:440px; color:var(--muted); font-size:12px; line-height:1.55; text-align:center; }
.form-fine a { text-decoration:underline; text-underline-offset:3px; }

.quote-success { padding:56px 12px; text-align:center; outline:none; animation:quote-open .4s var(--ease); }
.quote-success-mark { display:inline-grid; place-items:center; width:56px; height:56px; border-radius:50%; background:#173342; color:#fff; }
.quote-success-mark .icon { width:26px; height:26px; stroke-width:2; }
.quote-success h2 { margin:22px 0 0; font-size:28px; font-weight:500; line-height:1.2; letter-spacing:-.03em; }
.quote-success p { max-width:380px; margin:12px auto 0; }
.quote-success a { color:var(--ink); text-decoration:underline; text-underline-offset:3px; }
.quote-reference { color:#8a938f; font-size:12px; }

@media (max-width:900px) {
 .quote-page { padding:110px 0 72px; }
 .quote-layout { grid-template-columns:1fr; gap:36px; }
 .quote-contact { margin-top:32px; }
 .quote-reviews { display:none; }
}
@media (max-width:560px) {
 .quote-grid { grid-template-columns:1fr; gap:18px; }
 .quote-card { padding:22px; border-radius:22px; }
}
@media (prefers-reduced-motion:reduce) {
 .quote-suggestions,.quote-success,.quote-form .is-autofilled,.quote-picker-menu,.quote-chips li { animation:none; }
 .quote-review-page { transition:none; }
}
