/* The modelling sequence lives beside the CAD canvas. */
.workspace { grid-template-columns: 188px minmax(0,1fr) 274px; }
.panel-closed .workspace { grid-template-columns: 188px minmax(0,1fr); }
.workflow-rail { align-items: stretch; gap: 0; padding: 20px 12px; }
.step-button { display:flex; align-items:center; gap:12px; position:relative; width:100%; min-height:46px; padding:10px 12px; margin:0; border:1px solid transparent; border-radius:6px; background:transparent; color:#b4c8d6; font-size:13px; text-align:left; justify-content:flex-start; }
.step-marker { flex:none; width:43px; font-size:11px; color:#91adbd; font-variant-numeric:tabular-nums; }
.step-title { display:flex; align-items:center; gap:8px; font-weight:550; white-space:nowrap; }
.step-title .icon { width:17px; height:17px; }
.workflow-rail .step-button:hover:not(:disabled) { background:#182a35; color:#e0f3f4; }
.workflow-rail .step-button.is-current { border-color:#3c6a64; background:#162e2c; color:#a5e9d5; }
.step-button.is-current .step-marker { color:#a5e9d5; }
.workflow-rail .step-button:disabled { opacity:.35; cursor:not-allowed; }
.workflow-children { margin:4px 0 18px 33px; padding:3px 0 3px 10px; border-left:1px solid #2a424f; display:flex; flex-direction:column; gap:3px; }
.workflow-rail .object-button { width:100%; min-height:32px; padding:6px 9px; flex-direction:row; justify-content:flex-start; gap:9px; font-size:12px; }
.workflow-rail .object-button .icon { width:17px; height:17px; }
.workflow-rail .object-button[data-part=member] > span { font-size:12px; }
.workflow-rail > .step-button + .step-button { margin-top:12px; }
.workflow-rail #generateBtn { background:#17372f; border-color:#315d51; color:#c0ebdc; }
.workflow-rail #exportBtn { margin-top:12px; }
.workflow-rail #exportBtn:not(:disabled) { border-color:#335467; }
.workflow-rail .step-button:focus-visible { outline:2px solid #77edcf; outline-offset:3px; }
.header-actions .motion-control { margin-left:3px; border-left:1px solid #28404d; padding-left:15px; }
.header-actions .motion-control > span { display:inline; }
.header-actions #helpBtn { display:flex; }
.app-shell:not([data-step=dimensions]) #form { display:none; }
.app-shell:not([data-step=dimensions]) #dimensionLines { visibility:hidden; }
.app-shell[data-step=assembly] #assemblyDimensionLines { visibility:visible; }
.assembly-popover { position:absolute; left:24px; top:80px; z-index:10; width:300px; max-width:calc(100% - 28px); max-height:calc(100% - 130px); padding:16px; box-shadow:0 14px 38px #0005; }
.assembly-heading { margin-bottom:8px; }
.assembly-popover label { margin-top:10px; }
.assembly-metrics { gap:26px; padding-top:12px; margin-top:13px; }
.assembly-metrics dd { font-size:18px; }
.assembly-actions { margin-top:15px; }
.assembly-dimension-lines { z-index:9; }
.member-assembly-link { width:100%; margin-top:10px; padding:7px 9px; border:1px solid #41675f; border-radius:3px; background:#152d2a; color:#a5e9d5; font-size:11px; text-align:left; }
.member-assembly-link:hover { background:#23433f; }
.member-assembly-link:focus-visible { outline:2px solid #77edcf; outline-offset:3px; }
.rod-length-hint { margin-top:10px; }
.rod-length-hint .member-assembly-link { margin-top:0; font-size:12px; font-variant-numeric:tabular-nums; }
.rod-length-hint .member-assembly-link:disabled { opacity:.6; cursor:not-allowed; }
.rod-length-hint p { margin:6px 0 0; color:#b3c8d5; font-size:11px; line-height:1.65; overflow-wrap:anywhere; }
.access-dialog { width:360px; max-width:calc(100vw - 32px); margin:auto; padding:24px; border:1px solid #466072; border-radius:12px; background:#121e27; color:#deedf4; box-shadow:0 18px 48px #0007; }
.access-dialog::backdrop { background:#050d14aa; }
.access-dialog h2 { margin:0 0 10px; font-size:18px; font-weight:550; }
.access-dialog #accessDescription { margin:0 0 22px; color:#b7cdd9; font-size:13px; line-height:1.7; }
.access-dialog label { display:block; margin-bottom:8px; font-size:12px; color:#c0d2de; }
.access-dialog input { width:100%; min-height:40px; padding:9px 11px; border:1px solid #4c748b; border-radius:5px; background:#102430; color:#deedf4; font:inherit; caret-color:#77edcf; }
.access-dialog input:focus-visible { outline:2px solid #77edcf; outline-offset:3px; }
.access-dialog input[aria-invalid=true] { border-color:#ef9d9d; }
.access-error { min-height:19px; margin:10px 0 20px; color:#ffd3d3; font-size:12px; line-height:1.6; }
.access-actions { display:flex; justify-content:flex-end; gap:10px; }
.assembly-dimension-label { fill:#a5efd6; font-size:12px; font-weight:550; paint-order:stroke; stroke:#101d26; stroke-width:4px; stroke-linejoin:round; }
.no-dimensions #assemblyPopover { visibility:hidden; pointer-events:none; }
.standard-shortcut { position:relative; border:2px solid transparent; background:linear-gradient(#10262b,#10262b) padding-box,linear-gradient(110deg,#67d9ff 0%,#bc96ff 22%,#f19cc5 43%,#f2c778 64%,#8be6cd 82%,#67d9ff 100%) border-box; background-size:100% 100%,300% 100%; color:#d9e4ef; box-shadow:none; padding:5px 8px; }
.standard-shortcut:hover:not(:disabled) { color:#f0f4ff; background:linear-gradient(#153037,#153037) padding-box,linear-gradient(110deg,#67d9ff,#bc96ff,#f19cc5,#f2c778,#8be6cd,#67d9ff) border-box; background-size:100% 100%,300% 100%; }
.standard-shortcut.accent-moving { animation:shortcut-border-drift 4.5s ease-in-out infinite alternate; }
.standard-shortcut:disabled { animation:none; }
@keyframes shortcut-border-drift { from{background-position:0 0,0% 50%} to{background-position:0 0,100% 50%} }
.preset-arrival::after { content:''; position:absolute; inset:-1px; padding:2px; border-radius:inherit; pointer-events:none; background:linear-gradient(110deg,#67d9ff,#bc96ff,#f19cc5,#f2c778,#8be6cd,#67d9ff); background-size:300% 100%; mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0); mask-composite:exclude; animation:shortcut-border-drift 1.8s ease-in-out,arrival-border-fade 1.8s linear forwards; }
.preset-arrival.arrival-still::after { animation:arrival-border-fade 1.8s linear forwards; }
@keyframes arrival-border-fade { 0%,55.5556%{opacity:1} 100%{opacity:0} }
.generation-copy { width:370px; max-width:calc(100% - 32px); padding:28px 20px; }
.generation-indicator { display:none; }
.generation-progress-meta { display:flex; justify-content:space-between; margin:19px 0 10px; color:#b5d0dc; font-size:11px; }
#generationPercent { color:#b9f4df; font-variant-numeric:tabular-nums; }
.generation-progress { position:relative; height:10px; overflow:hidden; border:1px solid #2c4858; border-radius:6px; background:#0d202b; --progress:0; --travel:328px; }
.generation-progress-fill { position:absolute; inset:0; transform:scaleX(0); transform-origin:left; background:linear-gradient(90deg,#3b7d93,#66cbb7 70%,#b4efdb); transition:transform .38s cubic-bezier(.16,1,.3,1); }
.progress-particles { position:absolute; inset:0; clip-path:inset(0 calc((1 - var(--progress))*100%) 0 0); }
.progress-particles i { position:absolute; top:3px; left:0; width:2px; height:2px; border-radius:50%; background:#e5fff1; opacity:0; animation:progress-drift 2.9s linear infinite; animation-play-state:paused; }
.progress-particles i::before { content:''; position:absolute; height:1px; width:19px; right:0; top:.5px; background:linear-gradient(90deg,transparent,#b1efde); }
.progress-particles i:nth-child(2) { animation-delay:-.5s; top:6px; }
.progress-particles i:nth-child(3) { animation-delay:-1s; }
.progress-particles i:nth-child(4) { animation-delay:-1.5s; top:5px; }
.progress-particles i:nth-child(5) { animation-delay:-2s; top:1px; }
.progress-particles i:nth-child(6) { animation-delay:-2.5s; }
.particles-running .progress-particles i { animation-play-state:running; }
@keyframes progress-drift { 0%{transform:translateX(-20px);opacity:0} 12%{opacity:.8} 90%{opacity:.8} 100%{transform:translateX(var(--travel));opacity:0} }
@media(max-width:1250px) { .workspace,.panel-closed .workspace{grid-template-columns:176px minmax(0,1fr)} .workflow-rail{padding:16px 8px} }
@media(max-width:620px) {
  .workspace,.panel-closed .workspace { grid-template-columns:minmax(0,1fr); grid-template-rows:auto minmax(0,1fr); }
  .workflow-rail { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:3px; padding:5px; overflow:hidden; }
  .step-button { min-height:36px; padding:5px 3px; gap:4px; justify-content:center; flex-wrap:wrap; font-size:10px; }
  .step-marker { width:auto; font-size:9px; }
  .step-title { font-size:10px; gap:3px; }
  .step-title .icon { display:none; }
  .workflow-rail > .step-button + .step-button,.workflow-rail #exportBtn { margin-top:0; }
  .workflow-children { grid-row:2; grid-column:1/-1; flex-direction:row; justify-content:center; gap:3px; margin:2px 0 0; border:0; border-top:1px solid #263c49; padding:4px 0 0; }
  .workflow-rail .object-button { justify-content:center; width:auto; min-height:28px; padding:4px 7px; font-size:10px; }
  .workflow-rail .object-button[data-part=member] > span { font-size:10px; }
  .workflow-rail .object-button .icon { width:14px; height:14px; }
  .header-actions .motion-control { min-height:30px; padding-inline:8px; margin-left:0; }
  .header-actions .motion-control > span { font-size:10px; }
  .assembly-popover { top:65px; left:14px; max-height:calc(100% - 85px); width:285px; }
}
@media(prefers-reduced-motion:reduce) { .standard-shortcut.accent-moving { animation:none; } .preset-arrival::after { animation:arrival-border-fade 1.8s linear forwards; } .progress-particles i { animation:none; } .generation-progress-fill { transition:none; } }
