.upload-list{display:grid;gap:10px;margin-block:16px}.upload-row{display:flex;align-items:center;gap:15px;justify-content:space-between;padding:15px;border:1px solid #dedfd5;border-radius:10px;background:#faf9f5;min-width:0}.upload-row>button:first-child{display:grid;gap:6px;text-align:left;min-width:0;background:transparent;border:0;color:var(--ink);cursor:pointer;flex:1}.upload-row strong{font-size:13px;overflow-wrap:anywhere}.upload-row small{font-size:11px;color:#737a70}.upload-row>button[aria-pressed=true] strong{color:#a96140}.upload-row .text-link{font-size:11px;flex-shrink:0}.quote-item-controls{display:flex;align-items:center;gap:20px;margin-top:15px}.quote-item-controls label{font-size:11px;display:flex;align-items:center;gap:8px}.quote-item-controls input{width:60px;padding:7px;border:1px solid #d7d9cf;border-radius:6px;background:#fff}.quote-item-controls .text-link{font-size:11px}.quote-product-card{min-width:0}.quote-product-card>div{min-width:0}.quote-product-card h3,.quote-summary-item b,#fileName{overflow-wrap:anywhere}#uploadStatus{font-size:12px;line-height:1.7}#uploadStatus:empty{display:none}#analysisCard[hidden],#quoteVisual[hidden]{display:none!important}.quote-product-strip{align-items:stretch}.quote-product-card .quote-product-image{flex-shrink:0}#quoteVisual{max-height:none}#uploadViewer{overflow:hidden}
@media(max-width:600px){.quote-item-controls{flex-wrap:wrap;gap:12px}.quote-product-card{grid-template-columns:74px minmax(0,1fr)!important}.quote-product-card .quote-product-image{width:74px}.upload-row{padding:12px;gap:10px}.quote-product-card strong small{display:block;margin:4px 0 0}.upload-row strong{font-size:12px}.upload-row small{font-size:10px}}
.material-cards label,.extras-grid label{position:relative}.material-cards input,.extras-grid input{width:1px;height:1px;clip-path:inset(50%);overflow:hidden}.material-cards label:focus-within>span,.extras-grid label:focus-within>span{outline:2px solid var(--terr);outline-offset:2px}

/* Cotizador multipieza: cada modelo conserva su propia escala, peso, tiempo y precio. */
.upload-list{display:flex;overflow-x:auto;scroll-snap-type:x proximity;padding-bottom:8px}.upload-row{min-width:280px;scroll-snap-align:start}.piece-scale-box{margin:14px 0;padding:14px;border:1px solid var(--line);border-radius:10px;background:#f8f5ee}.piece-scale-head{display:flex;justify-content:space-between;gap:12px;font:10px 'DM Mono',monospace;letter-spacing:.08em}.piece-scale-head b{font-size:13px;color:var(--terr)}.piece-scale-warning{padding:10px;margin:10px 0;background:#fff1dc;border:1px solid #e5c99f;border-radius:8px;font-size:11px;line-height:1.5}.piece-scale-controls{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px}.piece-scale-controls label{font-size:10px;color:var(--muted)}.piece-scale-controls input{width:100%;margin-top:5px;padding:9px;border:1px solid var(--line);border-radius:7px;background:#fff}.piece-scale-presets{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px}.piece-scale-presets button{border:1px solid var(--line);background:#fff;padding:6px 8px;border-radius:7px;cursor:pointer;font-size:10px}.piece-scale-box #pieceScaleResult{font-size:11px;margin:9px 0 0}.upload-row small{line-height:1.45}
@media(max-width:600px){.upload-row{min-width:245px}.piece-scale-controls{grid-template-columns:1fr}}

/* V12: visor multimedia estable. Imagen y canvas nunca determinan la altura del contenedor. */
#analysisCard #uploadViewer{position:relative;width:100%;height:clamp(280px,32vw,430px);min-height:0!important;max-height:430px;overflow:hidden;contain:layout paint;background:#e9e5dd}
#analysisCard #uploadViewer>canvas,#analysisCard #uploadViewer>.reference-preview{position:absolute;inset:0;display:block;width:100%!important;height:100%!important;max-width:100%;max-height:100%;margin:0}
#analysisCard #uploadViewer>canvas{object-fit:contain}
#analysisCard #uploadViewer>.reference-preview{min-height:0!important;object-fit:contain;background:#e9e5dd}
#analysisCard.is-image .upload-viewer{min-height:0!important}
@media(max-width:850px){#analysisCard #uploadViewer{height:clamp(260px,58vw,380px)}}
@media(max-width:560px){#analysisCard #uploadViewer{height:280px}}
