.quote-launcher{position:relative;width:44px;height:44px;display:grid;place-items:center;flex-shrink:0;background:var(--stone);border:0;border-radius:50%}
.quote-launcher>svg{width:22px;height:22px;stroke-width:1.7}
.quote-launcher>span{position:absolute;right:-3px;top:-3px;min-width:19px;height:19px;border-radius:50%;padding:0 4px;background:#275634;color:white;display:grid;place-items:center;font-size:10px;font-weight:700;border:2px solid white}
.quote-launcher>span[hidden]{display:none}
.quote-cart{padding:0;border:0;border-radius:26px 0 0 26px;width:min(760px,calc(100% - 24px));max-width:none;height:100svh;max-height:100svh;margin:0 0 0 auto;background:#fff;color:var(--ink);overflow:hidden;box-shadow:-20px 0 80px #17201426}
.quote-cart:not([open]){display:none}
.quote-cart[open]{display:flex;flex-direction:column;animation:quote-enter .32s cubic-bezier(.2,.8,.2,1)}
.quote-cart::backdrop{background:#17201485;backdrop-filter:blur(4px)}
.quote-cart-header{display:flex;justify-content:space-between;align-items:flex-start;gap:25px;padding:32px 36px 23px;border-bottom:1px solid var(--line)}
.quote-cart-header .eyebrow{font-size:12px;margin-bottom:10px}
.quote-cart h2{font-size:46px;letter-spacing:-.06em;line-height:1.06;font-weight:500;margin-bottom:10px}
.quote-title-dot{color:#7d985b}
.quote-cart h2:focus{outline:none}
.quote-cart-header [role=status]{font-size:13px;color:var(--muted);line-height:1.5}
.quote-close{width:40px;height:40px;flex-shrink:0;background:var(--stone);border:0;border-radius:50%;display:grid;place-items:center}
.quote-cart-body{padding:0 36px 28px;overflow:auto;overscroll-behavior:contain;flex:1;min-height:0}
.quote-empty{padding:65px 5px 40px;text-align:center}
.quote-empty h3{font-size:34px;font-weight:500;letter-spacing:-.05em;margin-bottom:18px}
.quote-empty p{color:var(--muted);font-size:16px;line-height:1.7;max-width:380px;margin:0 auto 27px}
.quote-cart [hidden]{display:none!important}
.quote-line{padding:26px 0;border-bottom:1px solid var(--line)}
.quote-line-top{display:grid;grid-template-columns:95px 1fr 30px;gap:20px;align-items:start}
.quote-line-image{aspect-ratio:1.1;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#fff}
.quote-line-image img{object-fit:contain}
.quote-line-image.is-request{display:grid;place-items:center;padding:9px;background:var(--stone);font-size:11px;line-height:1.45;text-align:center;color:#69735e}
.quote-line h3{font-size:18px;font-weight:600;letter-spacing:-.025em;line-height:1.4;margin:0 0 8px}
.quote-line h3 a:hover{text-decoration:underline;text-underline-offset:4px}
.quote-line-size{font-size:12px;color:var(--muted);line-height:1.5}
.quote-pending{padding:9px 11px;border-radius:9px;background:#edf0e7;color:#526149;font-size:12px;line-height:1.6;margin-top:12px}
.quote-remove{background:none;border:0;display:grid;place-items:center;width:30px;height:30px;color:#747b6a}
.quote-remove svg{width:18px;height:18px}
.quote-line-controls{display:grid;grid-template-columns:1fr 1fr;gap:13px;margin:19px 0 0 115px}
.quote-line-controls label{font-size:12px;font-weight:550;display:block}
.quote-line-controls input,.quote-line-controls select{appearance:none;display:block;width:100%;min-width:0;height:47px;font:inherit;font-size:15px;font-weight:500;padding:0 14px;background:var(--stone);border:1px solid #e5e6df;color:var(--ink);border-radius:11px;margin-top:8px}
.quote-line-controls select{appearance:auto}
.quote-line-controls input:focus-visible,.quote-line-controls select:focus-visible{outline:3px solid #718b4f;outline-offset:2px}
.quote-line-controls input[aria-invalid=true]{border-color:#ab4639}
.quote-line-error{font-size:12px;line-height:1.5;color:#9b3529;margin:8px 0 0 115px}
.quote-extras{margin:19px 0 0 115px}
.quote-extras summary{font-size:13px;font-weight:600;cursor:pointer}
.quote-extras>div{display:flex;gap:10px 14px;flex-wrap:wrap;margin-top:13px}
.quote-extras label{font-size:12px;display:flex;gap:7px;align-items:center;cursor:pointer;line-height:1.5}
.quote-extras input,.quote-installation input{accent-color:#275634;flex-shrink:0}
.quote-extras input{width:16px;height:16px;margin:0}
.quote-installation{border:0;padding:26px 0 0;margin:0;min-width:0}
.quote-installation legend{font-size:23px;font-weight:500;letter-spacing:-.04em;padding:27px 0 0;margin-bottom:16px}
.quote-installation label{display:flex;gap:12px;align-items:flex-start;padding:16px;background:var(--stone);border:1px solid transparent;border-radius:13px;margin-bottom:9px;cursor:pointer}
.quote-installation label:has(input:checked){background:#edf0e7;border-color:#8ea27b}
.quote-installation input{margin:3px 0 0;width:16px;height:16px}
.quote-installation strong{font-size:14px;line-height:1.5;font-weight:600;display:block}
.quote-installation small{font-size:12px;line-height:1.6;color:var(--muted);display:block;margin-top:3px}
.quote-installation>p{font-size:12px;line-height:1.7;color:var(--muted);margin-top:15px}
.quote-storage-note{font-size:11px;line-height:1.6;color:var(--muted);margin-top:23px}
.quote-cart-footer{padding:20px 36px 24px;border-top:1px solid var(--line);background:#fff;box-shadow:0 -10px 30px #1d211c05}
.quote-cart-summary{display:flex;align-items:baseline;justify-content:space-between;gap:20px;margin-bottom:15px}
.quote-cart-summary strong{font-size:14px}
.quote-cart-summary>span{font-size:12px;color:var(--muted)}
.quote-footer-actions{display:flex;align-items:center;justify-content:space-between;gap:15px}
.quote-footer-actions .pill,.quote-ready .pill{font-size:14px;--pill-circle:32px;min-height:50px;padding:9px 9px 9px 21px;gap:14px}
.quote-footer-actions .pill:disabled{opacity:.4;cursor:default;transform:none}
.quote-continue{background:var(--stone);border:0;padding:14px 20px;border-radius:999px;font-size:14px;font-weight:550}
.quote-ready{padding:25px;border-radius:18px;background:#edf0e7;margin-top:24px}
.quote-ready h3{font-size:27px;letter-spacing:-.04em;font-weight:550;margin-bottom:12px}
.quote-ready>p{font-size:14px;line-height:1.7;color:#68715f;margin-bottom:18px}
.quote-ready .pill{background:#fff}
.quote-ready .quote-long-note{font-size:13px;margin-top:16px}
.quote-ready details{margin-top:20px;font-size:13px}
.quote-ready summary{cursor:pointer;font-weight:600;line-height:1.6}
.quote-ready textarea{display:block;margin-top:13px;width:100%;padding:14px;border:1px solid #cfd6c7;border-radius:10px;font:inherit;font-size:12px;line-height:1.7;resize:vertical;background:#fff;color:var(--ink)}
.quote-download{font-size:13px;border:0;background:none;padding:0;color:#344b35;text-decoration:underline;text-underline-offset:4px;margin-top:17px}
.request-visual{height:100%;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;padding:42px;background:#edf0e7;color:#344b35}
.request-visual>span{font-size:12px;line-height:1.5;margin-bottom:16px}
.request-visual strong{font-size:clamp(35px,3.7vw,53px);font-weight:500;line-height:1.1;letter-spacing:-.06em}
.request-visual p{font-size:14px;line-height:1.75;margin-top:20px;max-width:340px;color:#66725b}
.catalogue-photo .request-visual{padding:25px}
.catalogue-photo .request-visual strong{font-size:clamp(27px,2.6vw,37px)}
.catalogue-photo .request-visual>span{font-size:11px;margin-bottom:12px}
.request-product-note{padding:17px 18px;background:#edf0e7;border-radius:13px;color:#526149;font-size:14px;line-height:1.7;margin-bottom:24px}
@keyframes quote-enter{from{transform:translateX(50px);opacity:0}to{transform:none;opacity:1}}
@media(max-width:650px){.quote-cart{width:100%;border-radius:0}.quote-cart-header{padding:25px 23px 20px}.quote-cart h2{font-size:39px}.quote-cart-body{padding:0 23px 24px}.quote-cart-footer{padding:18px 23px max(20px,env(safe-area-inset-bottom))}.quote-line-top{grid-template-columns:75px 1fr 28px;gap:14px}.quote-line h3{font-size:16px}.quote-line-controls,.quote-line-error,.quote-extras{margin-left:89px}.quote-cart-summary{display:block}.quote-cart-summary>span{display:block;margin-top:5px}.quote-footer-actions .pill{font-size:13px;gap:9px;padding-left:17px;--pill-circle:28px}.quote-continue{padding:14px 15px;font-size:13px}.quote-ready{padding:23px 20px}.request-visual{padding:30px}.catalogue-photo .request-visual{padding:18px}.catalogue-photo .request-visual strong{font-size:27px}.quote-launcher{width:39px;height:39px}}
@media(max-width:400px){.quote-line-controls,.quote-line-error,.quote-extras{margin-left:0}.quote-line h3{font-size:15px}.quote-footer-actions{gap:8px}.quote-footer-actions .pill{font-size:12px;padding-left:14px}.quote-continue{font-size:12px;padding-inline:12px}.catalogue-photo .request-visual strong{font-size:24px}}
@media(prefers-reduced-motion:reduce){.quote-cart[open]{animation:none}}
/* Direct quote request: contact details and confirmed server response. */
.quote-contact{min-width:0;border:0;padding:28px 0 0;margin:28px 0 0;border-top:1px solid var(--line)}
.quote-contact legend{font-size:27px;line-height:1.15;letter-spacing:-.045em;font-weight:500;max-width:400px;padding:0 0 14px}
.quote-contact>p{font-size:13px;line-height:1.7;color:var(--muted);margin:0 0 23px}
.quote-contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px 16px}
.quote-field{min-width:0}.quote-field-wide{grid-column:1/-1}
.quote-field label{display:block;font-size:13px;font-weight:550;margin-bottom:9px}
.quote-field input,.quote-field textarea{display:block;width:100%;min-width:0;border:1px solid #e5e6df;border-radius:11px;background:var(--stone);color:var(--ink);padding:13px 14px;font:inherit;font-size:16px;line-height:1.5}
.quote-field textarea{resize:vertical;min-height:114px}
.quote-field input:focus-visible,.quote-field textarea:focus-visible{outline:3px solid #718b4f;outline-offset:2px;background:#fff}
.quote-field input[aria-invalid=true],.quote-field textarea[aria-invalid=true]{border-color:#9b3529}
.quote-field-error{font-size:12px;line-height:1.5;color:#9b3529;margin-top:7px}
.quote-contact .quote-contact-privacy{margin:18px 0 0;font-size:11px;line-height:1.7}
.quote-contact-privacy a{text-decoration:underline;text-underline-offset:3px}
.quote-send-error{padding:16px 18px;background:#fbefeb;border-radius:12px;color:#903e30;font-size:14px;line-height:1.6;margin-top:24px}
.quote-confirmation{padding:52px 0 35px}
.quote-confirmation-icon{display:grid;place-items:center;width:62px;height:62px;background:#edf2e7;border-radius:50%;color:#275634;margin-bottom:25px}
.quote-confirmation-icon svg{width:32px;height:32px;stroke:currentColor;stroke-width:2;fill:none;stroke-linecap:round;stroke-linejoin:round}
.quote-confirmation h3{font-size:35px;font-weight:500;letter-spacing:-.05em;line-height:1.12;margin-bottom:20px}
.quote-confirmation p{font-size:16px;line-height:1.7;overflow-wrap:anywhere;margin-bottom:18px;color:var(--muted)}
.quote-confirmation [data-quote-reference]{font-size:13px}
.quote-confirmation .quote-continue{margin-top:16px}
.quote-cart [aria-busy=true]{opacity:.7}
.quote-footer-actions{flex-wrap:wrap}.quote-footer-actions .pill{max-width:100%;white-space:normal}
@media(max-width:480px){.quote-contact-grid{grid-template-columns:1fr;gap:18px}.quote-contact legend{font-size:25px}.quote-footer-actions{display:grid;grid-template-columns:1fr}.quote-footer-actions .pill{width:100%;justify-content:space-between;grid-row:1;font-size:14px}.quote-continue{justify-self:start;padding-block:9px}.quote-cart-footer{padding-top:13px}.quote-cart-summary{margin-bottom:10px}.quote-cart-summary>span{display:none}.quote-cart-header{padding-top:20px;padding-bottom:16px}.quote-cart h2{font-size:34px}.quote-cart-header .eyebrow{margin-bottom:7px}}
