/* Live quote tools (1 Nov 2026): app parts of the approved redesign that the static preview did not need. */
html{overflow-x:clip}
body.qp{overflow-x:clip}
.qp .site-header{position:sticky;top:0}
.qp main{display:block}
.skip-link{position:absolute;left:-9999px;top:8px;z-index:100;background:var(--ink);color:#fff;padding:10px 14px;border-radius:12px}.skip-link:focus{left:12px}
.qp-sr{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.qp-secure{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:800;color:#227a45;background:#e6f6ec;border-radius:999px;padding:7px 11px}
.qp-secure:before{content:"🔒";font-size:11px}
.qp-preview-warning{background:#fff6cc;border:1px solid var(--yellow);border-radius:16px;padding:12px 16px;font-size:13px;font-weight:800;margin:0 0 24px}
.qp-tabs a{border-radius:999px;padding:11px 18px;font-size:14px;font-weight:850;color:var(--muted);text-decoration:none}
.qp-tabs a[aria-current=page]{background:var(--ink);color:#fff}
.qp-tabs a:not([aria-current]):hover{color:var(--ink)}
.qp-card a{color:inherit}
.qp-help a{color:var(--ink)}
.qp-fieldset{border:0;padding:0;margin:0;min-width:0}
.qp-fieldset legend{padding:0}
/* Material radio cards */
.qp-chip:disabled{opacity:.5;cursor:not-allowed}
.qp-chip[aria-checked=true]{border-color:var(--ink);background:var(--ink)}.qp-chip[aria-checked=true] strong{color:#fff}.qp-chip[aria-checked=true] small{color:var(--yellow)}
.qp-chip:focus-visible,.qp-radio:focus-within,.qp-sw:focus-visible,.swatch:focus-visible{outline:3px solid var(--magenta);outline-offset:2px}
.qp-material-note{margin:10px 0 0}
.qp-chips-2{grid-template-columns:1fr 1fr}
label.qp-chip-radio{display:block;margin:0;position:relative}
label.qp-chip-radio input{position:absolute;opacity:0;pointer-events:none}
label.qp-chip-radio:has(input:checked){border-color:var(--ink);background:var(--ink)}label.qp-chip-radio:has(input:checked) strong{color:#fff}label.qp-chip-radio:has(input:checked) small{color:var(--yellow)}
.qp-phoenix{text-decoration:none}
/* Swatches (round buttons from the live tool, drawn at the preview size) */
.qp-swatches.swatches{display:flex;flex-wrap:wrap;gap:10px;padding:3px}
.swatch{position:relative;width:44px;height:44px;padding:0;border-radius:50%;border:0;background:transparent;display:grid;place-items:center;cursor:pointer;transition:transform .15s,box-shadow .15s}
.swatch-fill{width:38px;height:38px;border-radius:50%;box-shadow:inset 0 0 0 2px rgba(20,18,23,.15)}
.swatch.pale .swatch-fill{box-shadow:inset 0 0 0 2px #b9b3b8}
.swatch.clear .swatch-fill{background-image:linear-gradient(45deg,#d9dcd4 25%,transparent 25% 75%,#d9dcd4 75%),linear-gradient(45deg,#d9dcd4 25%,transparent 25% 75%,#d9dcd4 75%)!important;background-size:8px 8px;background-position:0 0,4px 4px}
.swatch:hover:not(:disabled){transform:scale(1.07)}
.swatch.selected{box-shadow:0 0 0 3px var(--paper),0 0 0 6px var(--magenta)}
.colour-name{color:var(--magenta)}
.colour-map-panel{margin-top:18px;padding:16px 18px;border-radius:20px;background:var(--paper);border:1px solid var(--line)}
.colour-map-panel .qp-label{margin-top:0}
.colour-map-row{display:grid;grid-template-columns:26px minmax(110px,1fr) minmax(140px,1.2fr);align-items:center;gap:10px;margin:10px 0 0!important;font-size:13px;font-weight:700}
.colour-map-chip{width:24px;height:24px;border:1px solid rgba(0,0,0,.2);border-radius:50%}
.colour-map-control{display:flex;align-items:center;gap:8px;min-width:0}
.colour-map-control select{flex:1 1 auto;min-width:0;padding:9px 10px;background:#fff}
.colour-map-chosen-chip{display:block;flex:0 0 22px;width:22px;height:22px;border:1px solid rgba(0,0,0,.2);border-radius:50%}
/* Model viewer and upload */
.qp-viewer{position:relative;height:400px;overflow:hidden;border-radius:24px;background:radial-gradient(circle at 35% 35%,#fffdfb,#f8eff5 54%,#f1eafa);touch-action:none;border:1px solid var(--line)}
#preview{position:absolute;inset:0;display:grid;place-items:center;padding:24px;text-align:center;font-size:13px;color:var(--muted)}
#preview canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
.qp-viewer .qp-drop{position:absolute;inset:0;z-index:2;justify-content:center;border-radius:24px;margin:0}
.qp-drop.drag{border-color:var(--pink);background:#fff0f5}
.file-input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.qp-view-controls{position:absolute;z-index:3;top:12px;left:12px;right:12px;display:flex;gap:6px;flex-wrap:wrap}
.qp-view-controls button{border:1px solid var(--line);background:rgba(255,253,251,.9);border-radius:999px;padding:8px 12px;font:inherit;font-size:12px;font-weight:800;color:var(--ink);cursor:pointer}
.qp-view-controls button:hover{background:var(--ink);color:#fff}
.qp-view-hint{position:absolute;z-index:3;bottom:12px;left:0;right:0;text-align:center;font-size:12px;color:var(--muted);pointer-events:none}
.upload-status{position:absolute;z-index:4;left:16px;right:16px;bottom:16px;display:flex;gap:13px;align-items:flex-start;padding:15px 17px;background:rgba(255,253,251,.96);border:2px solid var(--magenta);border-radius:18px;box-shadow:0 12px 30px rgba(45,25,41,.14);pointer-events:none}
.upload-status strong{display:block;font-size:14px}.upload-status small{display:block;color:var(--muted);font-size:12.5px;margin-top:3px}.upload-status span[id]{display:block;color:var(--magenta);font-size:12px;font-weight:800;margin-top:6px}
.upload-spinner{flex:none;width:22px;height:22px;margin-top:2px;border:3px solid #f2d0e2;border-top-color:var(--magenta);border-radius:50%;animation:qp-spin .85s linear infinite}
@keyframes qp-spin{to{transform:rotate(360deg)}}
.qp-model-meta{margin-top:16px;padding:16px 18px;border-radius:22px;background:var(--paper);border:1px solid var(--line)}
.file-line{display:flex;align-items:center;gap:12px}
.file-icon{border:1px solid var(--line);border-radius:12px;padding:8px 11px;font-size:19px;color:var(--magenta);background:#fff}
.file-line>div{min-width:0;flex:1}.file-line strong{display:block;font-size:15px;overflow-wrap:anywhere}.file-line small{display:block;color:var(--muted);font-size:12.5px;margin-top:3px}
.text-button{border:0;background:none;color:var(--muted);font:inherit;font-size:13px;font-weight:800;padding:6px;cursor:pointer;margin:0!important;text-decoration:underline}
.text-button:hover{color:var(--ink)}
.dimensions{display:flex;gap:22px;flex-wrap:wrap;align-items:flex-end;border-top:1px solid var(--line);margin-top:14px;padding-top:14px}
.dimensions small{display:block;font-size:10px;letter-spacing:.12em;font-weight:900;color:var(--muted);margin-bottom:4px}.dimensions strong{font-size:15px}
.dimensions label{margin:0 0 0 auto}.dimensions label span{font-size:10px!important;margin-bottom:4px!important}.dimensions select{padding:8px 10px;font-size:13px;background:#fff}
.orientation-tools{display:flex;gap:12px;align-items:center;margin-top:14px;flex-wrap:wrap}
.orientation-tools .secondary{border:1px solid var(--ink);background:#fff;border-radius:999px;padding:9px 15px;font:inherit;font-size:13px;font-weight:850;cursor:pointer}
.orientation-tools .secondary:disabled{opacity:.45;cursor:not-allowed}
.orientation-note,.qp-model-meta .field-note{font-size:12.5px;line-height:1.55;color:var(--muted);margin:10px 0 0}
.estimate-duration{display:flex;gap:12px;margin-top:12px;padding:12px 14px;border-radius:16px;background:#fff6cc;border:1px solid var(--yellow)}
.estimate-duration-icon svg{width:22px;height:22px;stroke:var(--ink);stroke-width:2}
.estimate-duration strong{font-size:13.5px}.estimate-duration p{margin:2px 0 0;font-size:12.5px;color:#4b444d}
.layout-panel{margin-top:14px;padding:14px;border:1px solid var(--line);border-radius:18px;background:#fff}
.layout-head strong{display:block;font-size:14px}.layout-head small{display:block;font-size:12.5px;color:var(--muted);margin-top:3px}
.check{display:flex!important;align-items:flex-start;gap:10px;font-size:13.5px;line-height:1.5;margin:14px 0}
.check input{width:18px;height:18px;flex:0 0 18px;margin:2px 0 0;accent-color:var(--magenta)}
.check>span{display:block!important;font-size:13.5px!important;letter-spacing:0!important;text-transform:none!important;font-weight:600!important;color:var(--ink)!important;margin:0!important}
.check small{display:block;font-size:12px;color:var(--muted);font-weight:500}
.part-list{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:6px;max-height:340px;overflow:auto}
.part-list li{display:grid;grid-template-columns:56px minmax(0,1fr) auto;gap:10px;align-items:center;padding:6px;border:1px solid var(--line);border-radius:12px}
.part-list .thumb{width:56px;height:56px;border-radius:10px;background:var(--paper);display:flex;align-items:center;justify-content:center;overflow:hidden}
.part-list .thumb canvas{width:56px;height:56px}
.part-list strong{display:block;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.part-list small{display:block;font-size:12px;color:var(--muted)}
.part-list .count{display:inline-block;margin-left:6px;padding:0 7px;border-radius:9px;background:var(--paper);color:var(--magenta);font-size:11px}
.part-list .price{font-size:14px;font-weight:850;text-align:right;white-space:nowrap}
.layout-panel.one-piece-on .part-list{opacity:.55}
.fit-notice{margin-top:14px;padding:16px;background:#fdecef;border:1px solid #f3b3c4;border-radius:18px}.fit-notice p{margin:0 0 12px;font-size:13.5px}.fit-notice small{display:block;margin-top:10px;font-size:12px;color:var(--muted)}
/* Quantity, tiers and advanced settings */
.qp-qty input{margin:0}
.qp-tiers span.on{background:var(--ink);color:var(--yellow)}.qp-tiers span.on b{color:#fff}
.qp-adv-grid label>span small{font-size:10px;color:var(--magenta);text-transform:none;letter-spacing:0}
.qp-adv-grid select option:disabled{color:#aaa}
/* Delivery */
.qp-radio input:disabled+span{opacity:.6}
.qp-intl label{display:block}
.qp-intl select:disabled{opacity:.6}
/* Price card */
.qp-summary{align-self:start}
.qp-sum-card .qp-sum-thumb{flex:none;display:grid;place-items:center;width:54px;height:54px;border-radius:14px;background:rgba(255,255,255,.08);color:var(--yellow);font-size:22px}
.qp-sum-card .qp-sum-thumb img{width:100%;height:100%;object-fit:cover;border-radius:14px}
.qp-sum-model>div{min-width:0}.qp-sum-model strong{overflow-wrap:anywhere}
.qp-sum-model small{display:block;font-size:12.5px;line-height:1.45}
.qp-sum-metrics{color:rgba(255,255,255,.5)!important}
.qp-sum-card dl div.qp-sum-rush dd{color:var(--yellow)}
.qp-sum-total strong{font:inherit;color:inherit}
.qp-sum-note{margin:6px 0 0;font-size:12px;line-height:1.5;color:rgba(255,255,255,.6)}
.qp-sum-review{margin:10px 0;padding:10px 12px;border-radius:14px;background:rgba(255,210,31,.14);color:#fff;font-size:13px}
.qp-get-price{margin-bottom:12px}
.qp-sum-card .button.qp-order{width:100%;margin-top:6px}
.qp-sum-card .button.qp-order:disabled{opacity:.4;cursor:not-allowed;background:var(--pink);color:#fff}
.qp-sum-link{display:block;width:100%;margin-top:10px;background:none;border:0;color:#ff9ac0;font:inherit;font-size:14px;font-weight:850;cursor:pointer;text-decoration:underline}
.qp-sum-link:hover{color:#fff}
.qp-sum-message{margin-top:14px;padding:11px 13px;border-radius:14px;font-size:13px;line-height:1.5;background:rgba(255,255,255,.08);color:#fff}
.qp-sum-message.error{background:rgba(239,11,77,.22);color:#fff}
.qp-progress{margin:0 0 14px}
.quote-progress-track{position:relative;height:8px;overflow:hidden;border-radius:999px;background:rgba(255,255,255,.14)}
.quote-progress-track span{display:block;width:0;height:100%;border-radius:inherit;background:var(--yellow);transition:width .3s ease}
.quote-progress p{display:flex;justify-content:space-between;gap:12px;margin:9px 0 0;font-size:13px;font-weight:700;color:#fff}
#quote-progress-detail{display:block;margin-top:6px;font-size:12px;line-height:1.5;color:rgba(255,255,255,.6)}
#quote-progress-joke{display:block;margin-top:8px;font-size:12.5px;line-height:1.5;color:#ff9ac0;font-style:italic;min-height:3em}
#quote-progress-joke[hidden]{display:none}
.quote-progress.is-processing .quote-progress-track::after{content:"";position:absolute;inset:0;width:40%;border-radius:inherit;background:linear-gradient(90deg,transparent,rgba(255,255,255,.6),transparent);animation:qp-activity 1.8s linear infinite}
.quote-progress.is-indeterminate .quote-progress-track span{opacity:.25;transition:none}
.quote-progress.is-indeterminate .quote-progress-track::after{background:var(--yellow);width:35%;opacity:.9}
@keyframes qp-activity{from{transform:translateX(-100%)}to{transform:translateX(260%)}}
@media(prefers-reduced-motion:reduce){.quote-progress.is-processing .quote-progress-track::after{animation:none;width:100%;background:repeating-linear-gradient(120deg,transparent 0 7px,rgba(255,255,255,.35) 7px 14px)}.upload-spinner{animation:none}}
/* Basket, PDF and checkout cards */
.qp-basket-items{list-style:none;margin:12px 0;padding:0;display:grid;gap:8px}
.qp-basket-items li{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:12px 14px;border-radius:16px;background:var(--paper);border:1px solid var(--line);font-size:13.5px}
.qp-basket-lines{margin:0}.qp-basket-lines div{font-size:14px;padding:4px 0}
.qp-basket-total{font-size:24px;font-weight:950;letter-spacing:-.03em;margin:8px 0}
.qp-actions{display:flex;gap:10px;flex-wrap:wrap;margin:10px 0}
.qp-actions .button{flex:1 1 220px}
.qp-card .button.qp-order{background:var(--pink);color:#fff}.qp-card .button.qp-order:hover{background:var(--ink)}.qp-card .button.qp-order:disabled{opacity:.45;cursor:not-allowed}
.qp-form .pair{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}
.qp-form textarea{resize:vertical}
.qp-country-row{margin-bottom:18px}.qp-country-row span{display:block;font-size:12px;letter-spacing:.08em;text-transform:uppercase;font-weight:850;margin:0 0 8px;color:#514a52}
.qp-final-total{font-size:20px;font-weight:950;letter-spacing:-.02em}
.qp-method{margin-top:6px;padding:0 6px}.qp-method p{font-size:13.5px;color:#4b444d}
footer{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:26px max(24px,calc((100vw - 1440px)/2));font-size:13px;color:var(--muted);border-top:1px solid var(--line)}
footer a{color:var(--ink)}
.footer-dot{margin:0 4px}
@media(max-width:640px){
 .qp-main{padding-top:24px}
 .qp-secure{display:none}
 .qp-viewer{height:320px}
 .qp-tabs a{flex:1;text-align:center;padding:11px 8px;font-size:13px}
 .qp-chips-2{grid-template-columns:1fr}
 .qp-form .pair{grid-template-columns:1fr}
 .colour-map-row{grid-template-columns:26px 1fr}.colour-map-control{grid-column:1/-1}
 .qp-qty{gap:6px}.qp-tier{margin-left:0}
 .dimensions label{margin-left:0}
 .qp-basket-items li{flex-direction:column;align-items:flex-start}
}
/* MakerWorld tool */
.qp-steps-form{display:grid;gap:20px}
.qp-link-progress{margin:-4px 0 14px}.qp-link-progress .quote-progress-track{background:var(--paper);border:1px solid var(--line)}.qp-link-progress .quote-progress-track span{background:var(--magenta)}
#link-elapsed{display:block;margin-top:6px;font-size:12px;color:var(--muted)}
.qp-model-mw{grid-template-columns:96px 1fr;margin-bottom:6px}
.qp-model-thumb{display:grid;place-items:center;width:96px;height:96px;border-radius:18px;background:linear-gradient(135deg,var(--pink),var(--purple));color:var(--yellow);font-size:34px}
.qp-source-link{font-size:13px;font-weight:850;color:var(--ink)}
.qp-help-tight{margin-top:-4px!important}
.qp-profiles{display:grid;gap:10px}
.designer-profile{border:1.5px solid #ddd3da;border-radius:18px;padding:12px 16px;background:#fff}
.designer-profile:has(.profile-choice:checked){border-color:var(--ink);box-shadow:0 0 0 1px var(--ink)}
.designer-profile .check{margin:0}
.designer-profile>a{font-size:12.5px;font-weight:800;color:var(--magenta)}
.profile-plates{display:flex;flex-wrap:wrap;gap:6px 16px;margin-top:8px}
.profile-plates .check{margin:0;font-size:13px}
.qp-materials{display:grid;gap:16px}
.material-line{padding:16px 18px;border-radius:20px;background:var(--paper);border:1px solid var(--line)}
.material-line>p{margin:6px 0;font-size:13px;color:var(--muted)}
.source-filament{display:flex;align-items:center;gap:8px;font-size:14px;margin-bottom:10px}
.source-swatch{display:inline-block;width:20px;height:20px;border-radius:50%;border:1px solid rgba(0,0,0,.2)}
.material-line .qp-chips{margin-bottom:12px}
.material-line .qp-label{margin:12px 0 8px}
.substitution-note{font-size:12.5px!important;color:#7a4b00!important;background:#fff6cc;border-radius:12px;padding:8px 10px}
.qp-unsupported{background:#fdecef!important;color:#a3123d!important;border-radius:12px;padding:10px 12px}
.qp-unsupported a{color:inherit;font-weight:850}
.price-breakdown{margin:0}.price-breakdown div{display:flex;justify-content:space-between;gap:12px;padding:6px 0;border-bottom:1px solid var(--line);font-size:14px}.price-breakdown dd{margin:0;font-weight:800}.price-breakdown .tax-note{font-weight:600;color:var(--muted)}
.basket-item{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:12px 14px;border-radius:16px;background:var(--paper);border:1px solid var(--line);font-size:13.5px}
.remove-item{border:0;background:none;font:inherit;font-weight:800;text-decoration:underline;cursor:pointer;color:var(--muted)}
@media(max-width:640px){.qp-model-mw{grid-template-columns:64px 1fr}.qp-model-mw .qp-model-thumb{width:64px;height:64px;font-size:24px}.basket-item{flex-direction:column;align-items:flex-start}}
.colour-map-row>span:not(.colour-map-chip):not(.colour-map-control){display:inline!important;font-size:13px!important;letter-spacing:0!important;text-transform:none!important;margin:0!important;font-weight:700!important;color:var(--ink)!important}
.colour-map-control .colour-map-chosen-chip{margin:0!important}
.file-line{flex-wrap:wrap}.file-line>div{flex:1 1 200px}
@media(max-width:640px){.file-line>div{flex-basis:calc(100% - 60px)}.file-line .text-button{margin-left:auto!important}}

/* MakerWorld profile selection: spacing and aligned wrapped labels. */
.qp-mw #profile-card>.qp-label{margin-bottom:8px}
.qp-mw #profile-card>.qp-help-tight{margin:0 0 16px!important;line-height:1.6}
.qp-mw .designer-profile{padding:16px 18px}
.qp-mw .designer-profile .check{display:flex;align-items:flex-start;gap:10px;line-height:1.6;margin:0!important}
.qp-mw .designer-profile .check input{flex:0 0 auto;margin:3px 0 0}
.qp-mw .designer-profile .check span{min-width:0}
.qp-mw .designer-profile>a{display:inline-block;margin:8px 0 0 28px;line-height:1.6}
.qp-mw .profile-plates{margin:12px 0 0 28px;padding-top:12px;border-top:1px solid #eee5eb;gap:10px 20px}
.qp-mw #source-metrics{margin:14px 0 0;line-height:1.6}
.qp-mw #profile-card+.qp-help{margin-top:22px;line-height:1.75}

/* Checkout contact form: separate summary, fields and payment actions. */
.qp-mw #quote-card .qp-card-head{margin-bottom:24px}
.qp-mw #quote-summary{margin:0 0 16px;line-height:1.7}
.qp-mw #quote-breakdown{margin:0 0 12px}
.qp-mw #quote-total{margin:14px 0 12px}
.qp-mw #quote-delivery,.qp-mw #quote-estimate-note{line-height:1.7;margin:10px 0}
.qp-mw #customer-form{margin-top:24px;padding-top:22px;border-top:1px solid var(--line)}
.qp-mw #customer-form>.qp-help{margin:0 0 22px;line-height:1.7}
.qp-mw #customer-form .pair{gap:18px 16px;margin-bottom:20px}
.qp-mw #customer-form label{margin:0}
.qp-mw #customer-form label>span{margin-bottom:8px}
.qp-mw #customer-form>label{display:block;margin:0 0 20px}
.qp-mw #customer-form>label.check{display:flex;align-items:flex-start;gap:10px;line-height:1.6;margin:22px 0}
.qp-mw #customer-form>label.check input{margin-top:3px;flex-shrink:0}
.qp-mw #customer-form>label.check span{margin:0}
.qp-mw #payment-review{margin-top:24px;padding-top:20px;border-top:1px solid var(--line);scroll-margin-top:100px}
.qp-mw #payable{line-height:1.5;margin:0 0 16px}
.qp-mw #quote-card{scroll-margin-top:100px}

.qp-mw .qp-model-thumb,.qp-mw .qp-sum-thumb{overflow:hidden}
.qp-mw .qp-model-thumb img,.qp-mw .qp-sum-thumb img{display:block;width:100%;height:100%;object-fit:cover}

/* One delivery method per order: basket-locked delivery choices. */
.qp-basket-lock{margin:12px 0 0!important;padding:12px 14px;border-radius:14px;background:#fff4dc;border:1.5px solid #f2c14e;color:var(--ink,#141217);font-weight:600}
.qp-radio:has(input:disabled){cursor:not-allowed;opacity:.5}
.qp-radio:has(input:disabled:checked){opacity:1}
