/* doc-project | public/assets/css/pages/configurator.css | Structure l'éditeur 2D et rend lisibles les cotes d’ouverture utile entre segments parallèles sans masquer les traits cotés, avec poignées déplaçables, aperçus de plis et menu accordéon. | Expose: styles configurateur, cotes de passage libre, drag des extrémités et aperçu de pli | Dépend de: tokens.css, base.css | Impacte: configurateur métier, longueurs, angles et ouvertures lisibles, progression accessible et lecture visuelle des finitions | Tables: aucune */
.configurator{min-height:calc(100vh - 76px);background:#dfe4e7}.configurator__topbar{display:flex;align-items:center;gap:.75rem;min-height:68px;padding:.65rem 1rem;border-bottom:1px solid var(--ink-200);background:#fff}.configurator__name{display:flex;align-items:center;gap:.55rem;flex:1;max-width:500px}.configurator__name>span{margin:0;font-size:.75rem;color:var(--ink-500);white-space:nowrap}.configurator__name input{min-height:38px}.configurator__topbar>div:last-child{display:flex;gap:.5rem}.configurator__steps{display:grid;grid-template-columns:repeat(6,1fr);border-bottom:1px solid var(--ink-200);background:var(--ink-50)}.configurator__steps button{display:flex;align-items:center;justify-content:center;gap:.5rem;min-height:54px;border:0;border-right:1px solid var(--ink-200);background:transparent;color:var(--ink-500);font-size:.78rem;font-weight:800}.configurator__steps button:last-child{border-right:0}.configurator__steps button b{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--ink-200);color:var(--ink-600)}.configurator__steps button.is-active{background:#fff;color:var(--ink-900);box-shadow:inset 0 -3px var(--accent)}.configurator__steps button.is-active b,.configurator__steps button.is-complete b{background:var(--accent);color:#fff}.configurator__workspace{display:grid;grid-template-columns:320px minmax(520px,1fr) 330px;min-height:calc(100vh - 198px)}.configurator__parameters,.configurator__summary{overflow:auto;padding:1rem;background:#fff}.configurator__parameters{border-right:1px solid var(--ink-200)}.configurator__summary{border-left:1px solid var(--ink-200)}.configurator__parameters>section{display:grid;gap:1rem}.panel-title{display:flex;align-items:flex-start;gap:.75rem;margin-bottom:.5rem}.panel-title>span{display:grid;place-items:center;min-width:34px;height:34px;border-radius:.55rem;background:var(--ink-900);color:#fff;font-size:.72rem;font-weight:900}.panel-title h2{font-size:1.2rem;margin:0}.panel-title p{font-size:.78rem;color:var(--ink-500);margin:.25rem 0 0}.creation-choices{display:grid;grid-template-columns:repeat(2,1fr);gap:.55rem}.creation-choices button,.creation-choices a{display:grid;gap:.2rem;min-height:86px;padding:.75rem;border:1px solid var(--ink-200);border-radius:.6rem;background:#fff;text-align:left}.creation-choices button:hover,.creation-choices a:hover,.creation-choices button.is-active{border-color:var(--accent);background:var(--accent-soft)}.creation-choices strong{font-size:.83rem}.creation-choices span{font-size:.7rem;color:var(--ink-500)}[data-template-parameters]{display:grid;gap:.65rem}.dimension-summary{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}.dimension-summary span{display:grid;padding:.65rem;border-radius:.5rem;background:var(--ink-50);font-size:.7rem;color:var(--ink-500)}.dimension-summary strong{color:var(--ink-900);font-size:.95rem}.delivery-choices{display:grid;gap:.55rem}.delivery-choices label{position:relative}.delivery-choices input{position:absolute;opacity:0}.delivery-choices label>span{display:grid;padding:.8rem;border:1px solid var(--ink-200);border-radius:.55rem;cursor:pointer}.delivery-choices input:checked+span{border-color:var(--accent);background:var(--accent-soft);box-shadow:var(--focus)}.delivery-choices small{color:var(--ink-500)}.price-card{display:grid;place-items:center;gap:.25rem;padding:1.35rem;border-radius:.8rem;background:var(--ink-900);color:#fff;text-align:center}.price-card strong{font-size:2.15rem}.price-card small{color:#bdc8ce}.configurator__canvas{display:flex;min-width:0;flex-direction:column;background:#e4e8ea}.drawing-toolbar{display:flex;align-items:center;gap:.35rem;min-height:56px;padding:.5rem;border-bottom:1px solid var(--ink-300);background:#fff;overflow:auto}.drawing-toolbar>span{flex:1}.drawing-toolbar>button:not(.button){min-height:36px;padding:.45rem .58rem;border:1px solid var(--ink-200);border-radius:.4rem;background:#fff;font-size:.72rem;white-space:nowrap}.drawing-stage{position:relative;flex:1;min-height:500px;overflow:hidden;background-color:#f7f8f9;background-image:linear-gradient(var(--ink-100) 1px,transparent 1px),linear-gradient(90deg,var(--ink-100) 1px,transparent 1px);background-size:24px 24px;background-position:var(--drawing-pan-x,0px) var(--drawing-pan-y,0px),var(--drawing-pan-x,0px) var(--drawing-pan-y,0px)}.drawing-stage svg{width:100%;height:100%;min-height:500px;touch-action:none}.drawing-empty{position:absolute;inset:0;display:grid;place-items:center;align-content:center;text-align:center;pointer-events:none}.drawing-empty[hidden]{display:none}.drawing-empty>*{pointer-events:auto}.drawing-empty h2{font-size:1.5rem;margin-bottom:.3rem}.drawing-empty p{color:var(--ink-500)}.profile-body{fill:none;stroke:#6e7b84;stroke-width:8;stroke-linecap:round;stroke-linejoin:round}.bend-preview-segment{fill:none;stroke:var(--accent);stroke-width:6;stroke-dasharray:12 8;stroke-linecap:round;opacity:.8;pointer-events:none}.bend-preview-endpoint{fill:#fff;stroke:var(--accent);stroke-width:3;opacity:.9;pointer-events:none}.profile-finish{fill:none;stroke:var(--profile-finish-color,var(--accent));stroke-width:5;stroke-linecap:round;stroke-linejoin:round;pointer-events:none;filter:drop-shadow(0 0 1px rgba(0,0,0,.45))}.profile-segment-hit{fill:none;stroke:transparent;stroke-width:28;cursor:pointer}.profile-segment-hit.is-selected{stroke:rgba(228,87,46,.14)}.dimension-line{stroke:#77848d;stroke-width:1;stroke-dasharray:4 4}.dimension-text{font-size:13px;fill:#303a42;font-weight:800;paint-order:stroke;stroke:#fff;stroke-width:4px}.bend-handle{fill:#fff;stroke:var(--accent);stroke-width:3}.segment-handle-hit{fill:transparent;stroke:transparent;cursor:grab;touch-action:none}.segment-handle{fill:var(--ink-900);stroke:#fff;stroke-width:2;pointer-events:none}.drawing-stage.is-dragging-segment-endpoint{cursor:grabbing;user-select:none}.drawing-stage.is-dragging-segment-endpoint .segment-handle{fill:var(--accent)}.drawing-stage.is-invalid-segment-endpoint .segment-handle{fill:var(--danger)}.axis-legend{position:absolute;left:1rem;bottom:1rem;display:flex;gap:.8rem;padding:.55rem .7rem;border:1px solid var(--ink-200);border-radius:.45rem;background:rgba(255,255,255,.9);font-size:.7rem}.axis-legend span::before{content:"";display:inline-block;width:18px;height:4px;margin-right:.4rem;vertical-align:middle}.axis-legend .profile::before{background:var(--ink-600)}.axis-legend .finish::before{background:var(--active-finish-color,var(--accent));box-shadow:0 0 0 1px rgba(0,0,0,.22)}.drawing-footer{display:flex;justify-content:space-between;padding:.45rem .7rem;border-top:1px solid var(--ink-300);background:#fff;color:var(--ink-500);font-size:.7rem}.summary-header{padding-bottom:1rem;border-bottom:1px solid var(--ink-100)}.summary-header h2{font-size:1.4rem;margin:.2rem 0 .7rem}.configurator__summary dl{display:grid;margin:0}.configurator__summary dl div{display:flex;justify-content:space-between;gap:1rem;padding:.72rem 0;border-bottom:1px solid var(--ink-100)}.configurator__summary dt{color:var(--ink-500);font-size:.78rem}.configurator__summary dd{margin:0;text-align:right;font-size:.82rem;font-weight:750}.fabricability-list{display:grid;gap:.5rem;margin:1rem 0;padding:0;list-style:none}.fabricability-list li{display:grid;grid-template-columns:24px 1fr;gap:.45rem;padding:.6rem;border-radius:.45rem;background:var(--ink-50);font-size:.75rem}.fabricability-list li[data-level="BLOCKING"]{background:var(--danger-soft);color:var(--danger)}.fabricability-list li[data-level="WARNING"]{background:var(--warning-soft);color:#8e5d0e}.confidence-meter{padding:1rem;border-radius:.7rem;background:var(--ink-50)}.confidence-meter header{display:flex;justify-content:space-between}.confidence-meter strong{font-size:1.15rem}.confidence-meter .progress{margin-top:.6rem}.pricing-breakdown{display:grid;gap:.45rem;margin-top:1rem}.pricing-breakdown div{display:flex;justify-content:space-between;font-size:.76rem}.pricing-breakdown .total{padding-top:.65rem;border-top:1px solid var(--ink-200);font-weight:850}.configurator-mobile-summary{display:none}

.parallel-clearance-line{stroke:var(--accent);stroke-width:1.5;pointer-events:none}.parallel-clearance-guide{stroke:var(--accent);stroke-width:1.2;pointer-events:none}.parallel-clearance-arrow{fill:none;stroke:var(--accent);stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}.parallel-clearance-text{fill:var(--ink-900);font-size:12px;font-weight:900;paint-order:stroke;stroke:rgba(255,255,255,.96);stroke-width:4px;stroke-linejoin:round;pointer-events:none}

.color-preview{display:flex;align-items:center;gap:.55rem;margin-top:.45rem;color:var(--ink-600);font-size:.74rem}.color-preview i{display:inline-block;width:28px;height:18px;flex:0 0 auto;border:1px solid var(--ink-300);border-radius:.3rem;box-shadow:inset 0 0 0 1px rgba(255,255,255,.35)}.color-preview i.is-empty{background-color:#fff!important;background-image:linear-gradient(45deg,var(--ink-100) 25%,transparent 25%,transparent 75%,var(--ink-100) 75%),linear-gradient(45deg,var(--ink-100) 25%,transparent 25%,transparent 75%,var(--ink-100) 75%);background-position:0 0,5px 5px;background-size:10px 10px}.finish-face-control{display:grid;gap:.65rem}.finish-face-control__invert[hidden]{display:none}.finish-face-control>small{color:var(--ink-500);font-size:.72rem}.axis-legend [hidden]{display:none}

@media(min-width:1001px){

/* Résumé tarifaire réellement présent dans la colonne de synthèse. */
.price-summary{display:grid;gap:.25rem;margin-top:1rem;padding:1rem;border-radius:.7rem;background:var(--ink-900);color:#fff}
.price-summary>span,.price-summary>small{color:#bdc8ce;font-size:.72rem}
.price-summary>strong{font-size:1.55rem}
  .portal-main:has(.configurator){max-width:none;margin:0;padding:0;overflow:hidden}
  .configurator{display:grid;grid-template-rows:auto auto minmax(0,1fr);height:var(--configurator-viewport-height,calc(100dvh - 76px));min-height:0;overflow:hidden}
  .configurator__topbar,.configurator__steps{position:relative;z-index:30}
  .configurator__workspace{height:100%;min-height:0;overflow:hidden}
  .configurator__parameters,.configurator__summary{height:100%;min-height:0;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable}
  .configurator__canvas{height:100%;min-height:0;overflow:hidden}
  .drawing-toolbar{flex:0 0 auto}
  .drawing-stage{min-height:0;cursor:grab}
  .drawing-stage.is-panning{cursor:grabbing;user-select:none}
  .drawing-stage svg{display:block;width:100%;height:100%;min-height:0;touch-action:none}
  .drawing-footer{flex:0 0 auto}
  .profile-segment-hit,.dimension-text{cursor:pointer}
}
@media(max-width:1220px){.configurator__workspace{grid-template-columns:300px minmax(480px,1fr)}.configurator__summary{position:fixed;right:0;top:0;bottom:0;z-index:300;width:340px;transform:translateX(100%);transition:transform .2s;box-shadow:var(--shadow-lg)}.configurator.summary-open .configurator__summary{transform:none}.configurator-mobile-summary{display:block;position:fixed;right:1rem;bottom:1rem;z-index:250}}
@media(max-width:850px){.configurator__topbar{flex-wrap:wrap}.configurator__name{order:3;max-width:none;width:100%}.configurator__steps{overflow:auto;grid-template-columns:repeat(6,minmax(115px,1fr))}.configurator__workspace{display:block}.configurator__parameters{border:0;max-height:none}.configurator__canvas{min-height:620px}.drawing-toolbar{position:sticky;top:0;z-index:20}.drawing-stage{min-height:540px}.configurator__summary{width:min(360px,90vw)}}


/* Parcours guidé : chaque étape reste visible, seul son contenu actif est déplié. */
.configurator__workspace{grid-template-columns:340px minmax(520px,1fr) 330px;min-height:calc(100vh - 144px)}
.configurator__parameters{display:flex;flex-direction:column;gap:.55rem;padding:.75rem}
.configurator-step{flex:0 0 auto;overflow:hidden;border:1px solid var(--ink-200);border-radius:var(--radius-md);background:var(--surface);transition:border-color var(--transition),box-shadow var(--transition)}
.configurator-step.is-active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent-soft)}
.configurator-step[data-step-status="complete"]:not(.is-active){border-color:var(--success)}
.configurator-step[data-step-status="error"]:not(.is-active){border-color:var(--danger)}
.configurator-step__toggle{display:grid;grid-template-columns:34px minmax(0,1fr) auto 18px;align-items:center;gap:.65rem;width:100%;min-height:60px;padding:.65rem .7rem;border:0;background:var(--surface);color:var(--ink-700);text-align:left;cursor:pointer}
.configurator-step__toggle:hover{background:var(--ink-50)}.configurator-step__toggle.is-active{background:var(--accent-soft);color:var(--ink-900)}.configurator-step__toggle:focus-visible{position:relative;z-index:2;outline:0;box-shadow:inset var(--focus)}.configurator-step__toggle:disabled{cursor:not-allowed;opacity:.62}
.configurator-step__index{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--ink-100);color:var(--ink-600);font-size:.72rem;font-weight:900}.configurator-step.is-active .configurator-step__index{background:var(--accent);color:#fff}.configurator-step[data-step-status="complete"]:not(.is-active) .configurator-step__index{background:var(--success);color:#fff}.configurator-step[data-step-status="error"]:not(.is-active) .configurator-step__index{background:var(--danger);color:#fff}
.configurator-step__title{display:grid;gap:.1rem;min-width:0;font-size:.82rem;font-weight:850}.configurator-step__title small{overflow:hidden;color:var(--ink-500);font-size:.68rem;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.configurator-step__state{font-size:.68rem;font-weight:800;white-space:nowrap}.configurator-step[data-step-status="complete"]:not(.is-active) .configurator-step__state{color:var(--success)}.configurator-step[data-step-status="error"]:not(.is-active) .configurator-step__state{color:var(--danger)}.configurator-step.is-active .configurator-step__state{color:var(--accent)}
.configurator-step__chevron{font-size:1rem;transition:transform var(--transition)}.configurator-step.is-active .configurator-step__chevron{transform:rotate(180deg)}
.configurator-step__content{display:grid;gap:1rem;padding:.85rem;border-top:1px solid var(--ink-100);background:#fff}.configurator-step__content[hidden]{display:none}.configurator-step__hint{margin:0;color:var(--ink-500);font-size:.76rem}
@media(min-width:1001px){.configurator{grid-template-rows:auto minmax(0,1fr)}.configurator__topbar{position:relative;z-index:30}.configurator__parameters{scroll-behavior:smooth}}
@media(max-width:850px){.configurator-step__toggle{grid-template-columns:34px minmax(0,1fr) auto 18px;min-height:64px}.configurator-step__state{font-size:.66rem}.configurator__parameters{padding:.65rem}}
@media(max-width:520px){.configurator-step__toggle{grid-template-columns:32px minmax(0,1fr) 18px}.configurator-step__index{width:32px;height:32px}.configurator-step__state{grid-column:2/3}.configurator-step__chevron{grid-column:3/4;grid-row:1/2}.configurator-step__content{padding:.75rem}}