/* Calculateur impression 3D : complète les styles .calc / .opt / .field de diferance.css */
.p3d-drop { border: 1.5px dashed var(--gray-light); border-radius: var(--radius); background: var(--off-white); padding: 18px 20px; display: flex; flex-wrap: wrap; gap: 14px; align-items: center; justify-content: space-between; transition: border-color .2s var(--ease), background .2s var(--ease); }
.p3d-drop.is-over { border-color: var(--red); background: #FFF5F5; }
.p3d-drop p { margin: 0; color: var(--charcoal); font-size: 15.5px; }
.p3d-drop small { display: block; color: var(--gray); font-size: 13px; margin-top: 2px; }
.p3d-file { display: none; gap: 10px; align-items: baseline; flex-wrap: wrap; min-width: 0; }
.p3d-file b { font-family: var(--font-mono); font-weight: var(--mono-weight); text-transform: uppercase; letter-spacing: .08em; font-size: 14px; overflow-wrap: anywhere; }
.p3d-file span { color: var(--gray); font-size: 13px; }
#calc-3d.has-file .p3d-drop__vide { display: none; }
#calc-3d.has-file .p3d-file { display: flex; }

.p3d-stage { margin-top: 14px; border: 1px solid var(--silver); border-radius: var(--radius); position: relative; aspect-ratio: 16 / 10; overflow: hidden; background: linear-gradient(180deg, #FAFAFA, #EEF0F3); }
.p3d-viewer { position: absolute; inset: 0; cursor: grab; touch-action: none; }
.p3d-viewer:active { cursor: grabbing; }
.p3d-viewer canvas { display: block; }
.p3d-thumb { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; }
.p3d-vide { position: absolute; inset: 0; display: grid; place-content: center; justify-items: center; gap: 12px; text-align: center; color: var(--gray); padding: 20px; }
.p3d-vide svg { width: 56px; height: 56px; color: var(--gray-light); }
.p3d-vide span { font-family: var(--font-mono); font-weight: var(--mono-weight); text-transform: uppercase; letter-spacing: .12em; font-size: 13px; }
#calc-3d.has-file .p3d-vide { display: none; }
.p3d-tag { position: absolute; left: 10px; top: 10px; z-index: 2; font-family: var(--font-mono); font-weight: var(--mono-weight); text-transform: uppercase; letter-spacing: .12em; font-size: 12px; background: var(--white); color: var(--gray); border: 1px solid var(--silver); padding: 4px 8px; border-radius: var(--radius); pointer-events: none; }
.p3d-tag:empty { display: none; }
.p3d-tag.is-exact { background: var(--charcoal); border-color: var(--charcoal); color: var(--white); }
.p3d-aide { position: absolute; right: 10px; bottom: 10px; z-index: 2; font-size: 12px; color: var(--gray); pointer-events: none; display: none; }
#calc-3d.has-file .p3d-aide { display: block; }
.p3d-busy { position: absolute; inset: 0; z-index: 3; display: none; place-items: center; background: rgba(255,255,255,.85); font-family: var(--font-mono); letter-spacing: .12em; text-transform: uppercase; }
#calc-3d.is-loading .p3d-busy { display: grid; }

.p3d-err, .p3d-warn { color: var(--red); font-size: 14px; margin: 10px 0 0; }
.p3d-hint { font-size: 13px; color: var(--gray); margin: 8px 0 0; }
.p3d-mwcheck { margin-top: 14px; font-size: 14.5px; color: var(--charcoal); cursor: pointer; }
.p3d-err[hidden], .p3d-warn[hidden], .p3d-hint[hidden], .p3d-thumb[hidden], .p3d-viewer[hidden], [hidden].p3d-recap-form, #calc-3d [hidden] { display: none !important; }

.p3d-mes { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1px; background: var(--silver); border: 1px solid var(--silver); margin: 14px 0 0; }
.p3d-mes div { background: var(--white); padding: 12px 14px; min-width: 0; }
.p3d-mes dt { font-family: var(--font-mono); font-weight: var(--mono-weight); text-transform: uppercase; letter-spacing: .12em; font-size: 12px; color: var(--gray-light); }
.p3d-mes dd { margin: 2px 0 0; font-family: var(--font-display); font-weight: 800; font-size: 17px; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }

.opt .p3d-sw { width: 26px; height: 26px; border-radius: 50%; border: 1px solid rgba(0,0,0,.18); display: block; }
.p3d-row { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.p3d-sub { font-family: var(--font-mono); font-weight: var(--mono-weight); text-transform: uppercase; letter-spacing: .12em; font-size: 12.5px; color: var(--gray); display: block; margin-bottom: 8px; }
.p3d-qty { display: flex; border: 2px solid var(--silver); border-radius: var(--radius); background: var(--white); }
.p3d-qty button { width: 46px; flex: none; border: 0; background: var(--off-white); cursor: pointer; font-size: 20px; font-weight: 600; color: var(--charcoal); }
.p3d-qty input { flex: 1; min-width: 0; border: 0; text-align: center; font-size: 16px; padding: 13px 4px; font-family: var(--font-body); -moz-appearance: textfield; }
.p3d-qty input::-webkit-inner-spin-button, .p3d-qty input::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }
.p3d-ttc { color: var(--gray-light); font-size: 14px; margin-top: 8px; font-variant-numeric: tabular-nums; line-height: 1.45; }
.p3d-ttc:empty { display: none; }
.calc__recap div span { min-width: 0; overflow-wrap: anywhere; }

.p3d-recap-form { margin: 0 0 26px; padding: 14px 16px; background: var(--white); border: 1px solid var(--silver); border-left: 3px solid var(--red); font-size: 14.5px; color: var(--gray); overflow-wrap: anywhere; }
.p3d-recap-form b { color: var(--charcoal); }
.p3d-hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
#demande .checkline { font-family: var(--font-body); text-transform: none; letter-spacing: 0; font-size: 14px; color: var(--gray); line-height: 1.5; }
#demande [hidden] { display: none !important; }
.p3d-merci h3 { text-transform: uppercase; margin: 10px 0 8px; }

.p3d-etapes { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1px; background: var(--silver); border: 1px solid var(--silver); margin-top: 36px; }
.p3d-etapes > div { background: var(--white); padding: 26px 22px; }
.p3d-etapes b { font-family: var(--font-mono); font-weight: var(--mono-weight); color: var(--red); letter-spacing: .1em; font-size: 15px; }
.p3d-etapes h3 { font-family: var(--font-display); font-weight: 800; text-transform: uppercase; font-size: 16px; margin: 10px 0 8px; }
.p3d-etapes p { color: var(--gray); font-size: 15px; margin: 0; line-height: 1.55; }
.p3d-formule { margin: 24px 0 0; padding: 18px 20px; background: var(--white); border: 1px solid var(--silver); font-size: 15px; color: var(--charcoal); line-height: 1.6; }
.p3d-formule small { color: var(--gray); font-size: 14px; }

@media (max-width: 1000px) { .p3d-etapes { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 560px) {
  .p3d-mes { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .p3d-etapes { grid-template-columns: minmax(0, 1fr); }
  #p3d-couleur.opts--4 { grid-template-columns: repeat(4, 1fr); }
  #p3d-couleur .opt { min-height: 64px; padding: 10px 4px; }
  #p3d-couleur .opt strong { font-size: 12px; }
}
@media (max-width: 420px) { .p3d-row { grid-template-columns: 1fr; } .p3d-aide { display: none !important; } }

/* Exemples de pièces */
.p3d-exemples { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; margin-top: 36px; }
.p3d-ex { border: 1px solid var(--silver); border-radius: var(--radius); background: var(--white); overflow: hidden; display: flex; flex-direction: column; }
.p3d-ex img { width: 100%; height: auto; aspect-ratio: 4 / 3; object-fit: cover; display: block; background: #F2F2F0; border-bottom: 1px solid var(--silver); }
.p3d-ex__corps { padding: 18px 20px 20px; display: flex; flex-direction: column; gap: 8px; flex: 1; }
.p3d-ex__usage { font-family: var(--font-mono); font-weight: var(--mono-weight); text-transform: uppercase; letter-spacing: .1em; font-size: 12px; color: var(--red); }
.p3d-ex h3 { font-family: var(--font-display); font-weight: 800; text-transform: uppercase; font-size: 16px; line-height: 1.25; margin: 0; }
.p3d-ex dl { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px 14px; margin: 6px 0 0; }
.p3d-ex dt { font-family: var(--font-mono); font-weight: var(--mono-weight); text-transform: uppercase; letter-spacing: .1em; font-size: 11.5px; color: var(--gray-light); }
.p3d-ex dd { margin: 0; font-size: 14.5px; font-variant-numeric: tabular-nums; }
.p3d-ex__total { margin: 6px 0 0; padding-top: 10px; border-top: 1px solid var(--silver); font-size: 14px; color: var(--charcoal); font-weight: 600; }
.p3d-ex small { color: var(--gray-light); font-size: 12.5px; }
.p3d-guides { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; margin-top: 36px; }
@media (max-width: 1000px) { .p3d-exemples, .p3d-guides { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 640px) { .p3d-exemples, .p3d-guides { grid-template-columns: minmax(0, 1fr); } }

/* Bambu Lab & MakerWorld */
.p3d-mw { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 56px; align-items: start; }
.p3d-mw__etapes { list-style: none; margin: 0; padding: 0; display: grid; gap: 1px; background: var(--silver); border: 1px solid var(--silver); }
.p3d-mw__etapes li { background: var(--white); padding: 18px 20px; display: grid; grid-template-columns: 44px minmax(0, 1fr); gap: 4px 12px; }
.p3d-mw__etapes b { grid-row: span 2; font-family: var(--font-mono); font-weight: var(--mono-weight); color: var(--red); letter-spacing: .1em; font-size: 15px; }
.p3d-mw__etapes strong { font-family: var(--font-display); font-weight: 800; text-transform: uppercase; font-size: 15px; }
.p3d-mw__etapes span { color: var(--gray); font-size: 14.5px; line-height: 1.5; }
.p3d-mw__note { margin: 22px 0 0; font-size: 14px; line-height: 1.55; color: var(--gray); border-left: 3px solid var(--red); padding-left: 14px; }
@media (max-width: 900px) { .p3d-mw { grid-template-columns: minmax(0, 1fr); gap: 32px; } }
