.loft-step-viewer__ctxbar{border:0;border-bottom:1px solid var(--color-border-subtle);background:var(--color-surface-elevated);box-shadow:none;border-radius:0;flex-wrap:wrap;width:100%;margin:0;padding:8px 12px;display:flex;position:static}.loft-editor__ctxbar.loft-step-viewer__ctxbar button>span,.loft-editor__ctxbar.loft-step-viewer__ctxbar a>span,.loft-editor__ctxbar.loft-step-viewer__ctxbar label>span:not([aria-live]){display:inline}.loft-step-viewer__left-rail-head{border-bottom:1px solid var(--color-border-subtle);letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-muted);justify-content:space-between;align-items:center;padding:10px 12px;font-size:.72rem;font-weight:700;display:flex}.loft-step-viewer__left-rail-actions{gap:4px;display:inline-flex}.loft-step-viewer__left-rail-actions button{width:28px;height:28px;color:var(--color-text-muted);border-radius:var(--radius-sm);cursor:pointer;background:0 0;border:1px solid #0000;justify-content:center;align-items:center;display:inline-flex}.loft-step-viewer__left-rail-actions button i,.loft-step-viewer__atree-eye i{font-size:1.05rem;line-height:1}.loft-step-viewer__left-rail-actions button:hover{background:var(--color-surface-card-hover);color:var(--color-text-body);border-color:var(--color-border-subtle)}.loft-step-viewer__left-rail-actions button:focus-visible{outline:2px solid var(--color-accent-primary);outline-offset:2px}.loft-step-viewer__left-rail-body{scrollbar-width:thin;overscroll-behavior:contain;flex:1;padding:6px 4px;overflow-y:auto}.loft-step-viewer__left-rail-hint{color:var(--color-text-muted);margin:0;padding:12px;font-size:.78rem;line-height:1.5}.loft-step-viewer__atree{flex-direction:column;gap:1px;margin:0;padding:4px 0;list-style:none;display:flex}.loft-step-viewer__atree-row{border-radius:var(--radius-sm);color:var(--color-text-body);text-align:left;cursor:pointer;transition:background var(--duration-quick,.15s) var(--easing-out,ease-out), color var(--duration-quick,.15s) var(--easing-out,ease-out);background:0 0;border:0;grid-template-columns:30px 1fr 24px;align-items:center;gap:4px;padding:4px 8px;font-size:.82rem;display:grid}.loft-step-viewer__atree-row:hover{background:var(--color-surface-card-hover)}.loft-step-viewer__atree-row:focus-visible{outline:2px solid var(--color-accent-primary);outline-offset:-1px}.loft-step-viewer__atree-row.is-dimmed{opacity:.45}.loft-step-viewer__atree-row.is-isolated{background:color-mix(in srgb, var(--color-accent-primary) 16%, transparent)}.loft-step-viewer__atree-row.is-selected{background:color-mix(in srgb, var(--color-accent-primary) 22%, transparent);box-shadow:inset 2px 0 0 0 var(--color-accent-primary)}.loft-step-viewer__atree-icon{color:var(--color-accent-primary);font-size:.92rem}.loft-step-viewer__atree-label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.loft-step-viewer__atree-eye{border-radius:var(--radius-sm);cursor:pointer;background:0 0;border:1px solid #0000;justify-content:center;align-items:center;width:28px;height:28px;font-size:1.1rem;display:inline-flex}.loft-step-viewer__atree-eye[aria-pressed=true]{color:var(--color-accent-primary)}.loft-step-viewer__atree-eye[aria-pressed=false]{color:var(--color-text-muted);opacity:.6}.loft-step-viewer__atree-eye:hover{background:var(--color-surface-card-hover);border-color:var(--color-border-subtle);opacity:1}.loft-step-viewer__panel-actions{gap:6px;margin-bottom:10px;display:flex}.loft-step-viewer__panel-action{border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);background:var(--elev-surface-1);color:var(--color-text-body);font:600 .78rem var(--font-ui);cursor:pointer;box-shadow:var(--elev-1);transition:background var(--duration-quick,.12s) ease, border-color var(--duration-quick,.12s) ease, box-shadow var(--duration-quick,.12s) ease, transform var(--duration-quick,.12s) ease;flex:1;justify-content:center;align-items:center;gap:6px;padding:9px 6px;display:inline-flex}.loft-step-viewer__panel-action i{color:var(--color-text-muted);font-size:1.05rem}.loft-step-viewer__panel-action:hover{background:var(--elev-surface-2);border-color:var(--color-border-hover);box-shadow:var(--elev-2);transform:translateY(-1px)}.loft-step-viewer__panel-action:active{box-shadow:var(--elev-1);transform:translateY(0)}.loft-step-viewer__panel-action.is-active{background:color-mix(in oklab, var(--color-accent-primary) 16%, var(--elev-surface-2));border-color:color-mix(in oklab, var(--color-accent-primary) 55%, transparent);color:var(--color-text-heading);box-shadow:var(--elev-2), 0 0 0 1px color-mix(in oklab, var(--color-accent-primary) 35%, transparent), 0 0 14px color-mix(in oklab, var(--color-accent-primary) 28%, transparent)}.loft-step-viewer__panel-action.is-active i{color:var(--color-accent-primary)}.loft-step-viewer__canvas-wrap{background:var(--color-surface-primary);min-width:0;min-height:0;transition:outline-color .12s;position:relative;overflow:hidden;container-type:inline-size}.loft-step-viewer__canvas-wrap--drag{outline:2px dashed var(--color-accent-primary);outline-offset:-8px}.loft-step-viewer__canvas{width:100%;height:100%;display:block}.loft-step-viewer__right-rail-scroll{scrollbar-width:thin;overscroll-behavior:contain;flex-direction:column;flex:1;gap:4px;padding:8px;display:flex;overflow-y:auto}.loft-step-viewer__accordion{border:1px solid var(--color-border-subtle);border-radius:var(--radius-sm);background:var(--color-surface-card);flex-shrink:0;overflow:hidden}.loft-step-viewer__accordion-head{width:100%;color:var(--color-text-heading);font:600 .78rem var(--font-ui);text-transform:uppercase;letter-spacing:.04em;cursor:pointer;text-align:left;background:0 0;border:0;border-bottom:1px solid #0000;align-items:center;gap:.5rem;padding:8px 10px;display:flex}.loft-step-viewer__accordion-head i{color:var(--color-accent-primary);font-size:1rem}.loft-step-viewer__accordion-head-caret{color:var(--color-text-muted);margin-left:auto;font-size:.85rem}.loft-step-viewer__accordion-head:hover{background:var(--color-surface-card-hover)}.loft-step-viewer__accordion-head:focus-visible{outline:2px solid var(--color-accent-primary);outline-offset:-2px}.loft-step-viewer__accordion.is-open .loft-step-viewer__accordion-head{border-bottom-color:var(--color-border-subtle)}.loft-step-viewer__accordion-body{padding:10px 10px 12px}.loft-step-viewer__accordion-hint{color:var(--color-text-muted);margin:0;padding:6px 0;font-size:.78rem}.loft-step-viewer__meta{grid-template-columns:max-content 1fr;gap:4px 12px;margin:0;font-size:.78rem;display:grid}.loft-step-viewer__meta dt{color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em;align-self:center;margin:0;font-size:.66rem;font-weight:600}.loft-step-viewer__meta dd{color:var(--color-text-body);font-family:var(--font-mono);font-variant-numeric:tabular-nums;word-break:break-word;margin:0;font-size:.78rem}.loft-step-viewer__statusbar-file{min-width:0;max-width:38ch;color:var(--color-text-muted);align-items:center;gap:6px;font-size:.78rem;display:inline-flex}.loft-step-viewer__statusbar-file i{color:var(--color-accent-primary);flex-shrink:0}.loft-step-viewer__statusbar-file-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.loft-step-viewer__unit-chip{border:1px solid color-mix(in oklab, var(--color-accent-primary) 40%, var(--color-border-subtle));border-radius:var(--radius-full);background:color-mix(in oklab, var(--color-accent-primary) 10%, var(--elev-surface-1));color:var(--color-text-heading);font:600 .74rem var(--font-mono);cursor:pointer;box-shadow:var(--elev-1);align-items:center;gap:5px;padding:2px 9px;transition:background .12s,border-color .12s,box-shadow .12s;display:inline-flex}.loft-step-viewer__unit-chip i{color:var(--color-accent-primary);font-size:.95rem}.loft-step-viewer__unit-chip:hover{background:color-mix(in oklab, var(--color-accent-primary) 20%, var(--elev-surface-2));border-color:var(--color-accent-primary);box-shadow:var(--elev-2)}.loft-step-viewer__unit-chip:focus-visible{outline:2px solid var(--color-accent-primary);outline-offset:2px}.loft-step-viewer__faults{display:inline-flex;position:relative}.loft-step-viewer__fault-chip{border:1px solid color-mix(in oklab, var(--color-warning) 45%, var(--color-border-subtle));border-radius:var(--radius-full);background:color-mix(in oklab, var(--color-warning) 14%, var(--elev-surface-1));color:var(--color-text-heading);font:600 .74rem var(--font-mono);cursor:pointer;box-shadow:var(--elev-1);align-items:center;gap:5px;padding:2px 9px;transition:background .12s,border-color .12s,box-shadow .12s;display:inline-flex}.loft-step-viewer__fault-chip i{color:var(--color-warning);font-size:.9rem}.loft-step-viewer__fault-chip:hover{background:color-mix(in oklab, var(--color-warning) 24%, var(--elev-surface-2));border-color:var(--color-warning);box-shadow:var(--elev-2)}.loft-step-viewer__fault-chip:focus-visible{outline:2px solid var(--color-warning);outline-offset:2px}.loft-step-viewer__fault-list{z-index:20;border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);background:var(--color-surface-elevated);max-width:min(70vw,520px);max-height:40vh;box-shadow:var(--elev-3);color:var(--color-text-body);font:500 .72rem var(--font-mono);flex-direction:column;gap:4px;margin:0;padding:8px 10px;list-style:none;display:flex;position:absolute;bottom:calc(100% + 8px);left:0;overflow-y:auto}.loft-step-viewer__fault-row{border-inline-start:2px solid var(--color-warning);flex-wrap:wrap;align-items:baseline;gap:4px 7px;padding-inline-start:8px;line-height:1.35;display:flex}.loft-step-viewer__fault-row[data-severity=error]{border-inline-start-color:var(--color-error)}.loft-step-viewer__fault-code{border-radius:var(--radius-sm);background:color-mix(in oklab, var(--color-warning) 16%, transparent);color:var(--color-warning);letter-spacing:.02em;flex:none;padding:0 5px;font-size:.68rem;font-weight:600}.loft-step-viewer__fault-row[data-severity=error] .loft-step-viewer__fault-code{background:color-mix(in oklab, var(--color-error) 16%, transparent);color:var(--color-error)}.loft-step-viewer__fault-where{color:var(--color-text-heading);flex:none;font-weight:600}.loft-step-viewer__fault-detail{color:var(--color-text-muted);white-space:pre-wrap;word-break:break-word;flex:100%}.loft-step-viewer__unit-hint{color:var(--color-accent-primary);opacity:.85;white-space:nowrap;font-size:.74rem;animation:1.8s ease-in-out infinite loft-unit-hint-pulse}@keyframes loft-unit-hint-pulse{0%,to{opacity:.5}50%{opacity:.95}}@media (prefers-reduced-motion:reduce){.loft-step-viewer__unit-hint{opacity:.8;animation:none}}.loft-step-viewer__statusbar-privacy{color:var(--color-text-muted);align-items:center;gap:6px;font-size:.78rem;display:inline-flex}.loft-step-viewer__statusbar-privacy i{color:var(--color-text-muted);opacity:.85}.loft-step-viewer__rail-subsection{border-top:1px solid var(--color-border-subtle);margin-top:12px;padding-top:12px}.loft-step-viewer__rail-subhead{text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted);margin:0 0 8px;font-size:.66rem;font-weight:600}.loft-step-viewer__file-btn,.loft-step-viewer__icon-btn{background:var(--elev-surface-1);color:var(--color-text-body);border:1px solid var(--color-border-subtle);border-radius:var(--radius-sm);font:.8125rem/1 var(--font-ui);cursor:pointer;min-height:32px;box-shadow:var(--elev-1);align-items:center;gap:.375rem;padding:.4375rem .75rem;transition:background-color .12s,border-color .12s,box-shadow .12s,transform .12s;display:inline-flex}.loft-step-viewer__file-btn:hover:not([disabled]),.loft-step-viewer__icon-btn:hover:not([disabled]){background:var(--elev-surface-2);border-color:var(--color-border-hover);box-shadow:var(--elev-2);transform:translateY(-1px)}.loft-step-viewer__file-btn:active:not([disabled]),.loft-step-viewer__icon-btn:active:not([disabled]){box-shadow:var(--elev-1);transform:translateY(0)}.loft-step-viewer__file-btn:focus-visible,.loft-step-viewer__icon-btn:focus-visible{outline:2px solid var(--color-accent-primary);outline-offset:2px}.loft-step-viewer__file-btn[disabled],.loft-step-viewer__icon-btn[disabled]{opacity:.5;cursor:not-allowed}.loft-step-viewer__file-btn{position:relative;overflow:hidden}.loft-step-viewer__file-input{opacity:0;cursor:pointer;position:absolute;inset:0}.loft-step-viewer__compact-filename{text-overflow:ellipsis;white-space:nowrap;max-width:40%;font:500 .8rem var(--font-mono);color:var(--color-text-muted);overflow:hidden}@media (pointer:coarse){.loft-step-viewer__file-btn,.loft-step-viewer__icon-btn{min-height:44px;padding:.625rem .875rem}}.loft-step-viewer__ar-modal{background:color-mix(in srgb, var(--color-surface-primary) 70%, transparent);backdrop-filter:blur(6px);z-index:50;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.loft-step-viewer__ar-dialog{background:var(--color-surface-elevated);border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);width:min(720px,100%);max-height:90vh;box-shadow:var(--elev-3);flex-direction:column;display:flex;overflow:hidden}.loft-step-viewer__ar-head{border-bottom:1px solid var(--color-border-subtle);justify-content:space-between;align-items:center;padding:.625rem 1rem;display:flex}.loft-step-viewer__ar-head h2{font:600 .95rem var(--font-ui);color:var(--color-text-heading);margin:0}.loft-step-viewer__ar-body{flex:1;justify-content:center;align-items:center;min-height:60vh;padding:1rem;display:flex}.loft-step-viewer__ar-loading,.loft-step-viewer__ar-error{font:.9rem var(--font-ui);color:var(--color-text-muted);align-items:center;gap:.5rem;display:inline-flex}.loft-step-viewer__ar-loading i{color:var(--color-accent-primary);font-size:1.5rem;animation:.9s linear infinite loft-step-viewer-spin}.loft-step-viewer__ar-error{color:var(--color-error)}.loft-step-viewer__restore-chip{z-index:7;background:color-mix(in srgb, var(--color-warning) 18%, var(--color-surface-elevated));border:1px solid color-mix(in srgb, var(--color-warning) 45%, transparent);border-radius:var(--radius-pill);color:var(--color-text-heading);font:500 .78rem var(--font-ui);letter-spacing:.01em;cursor:pointer;box-shadow:var(--elev-2);white-space:nowrap;pointer-events:auto;align-items:center;gap:.375rem;padding:.3125rem .875rem;display:inline-flex;position:absolute;bottom:80px;left:50%;transform:translate(-50%)}.loft-step-viewer__restore-chip:hover{background:color-mix(in srgb, var(--color-warning) 26%, var(--color-surface-elevated))}.loft-step-viewer__restore-chip:focus-visible{outline:2px solid var(--color-warning);outline-offset:2px}@media (width<=480px){.loft-step-viewer__ctxbar{display:none}}.loft-step-viewer__refining-chip{color:var(--color-text-muted);align-items:center;gap:6px;font-size:.8125rem;display:inline-flex}.loft-step-viewer__refining-chip .ph-circle-notch{animation:1s linear infinite loft-spin}.loft-step-viewer__fastener-chip{background:var(--color-surface-elevated);border:1px solid var(--color-accent-action);border-radius:var(--radius-pill);color:var(--color-accent-action);pointer-events:none;z-index:20;white-space:nowrap;align-items:center;gap:6px;padding:4px 10px 4px 8px;font-size:.8rem;font-weight:500;display:inline-flex;position:absolute;bottom:72px;left:50%;transform:translate(-50%);box-shadow:0 2px 8px #00000059}.loft-step-viewer__fastener-chip i{font-size:1rem}.loft-thickness-legend{font-family:var(--font-ui);flex-direction:column;gap:.625rem;display:flex}.loft-thickness-legend__header{color:var(--color-text-heading);align-items:center;gap:.4rem;display:flex}.loft-thickness-legend__header i{color:var(--color-accent-primary);font-size:1.05rem}.loft-thickness-legend__title{font-size:.85rem;font-weight:600}.loft-thickness-legend__variants{border-radius:var(--radius-sm);background:var(--color-surface-primary);border:1px solid var(--color-border-subtle);gap:.25rem;padding:.2rem;display:flex}.loft-thickness-legend__variant{font-family:var(--font-ui);color:var(--color-text-muted);border-radius:var(--radius-sm);cursor:pointer;background:0 0;border:1px solid #0000;flex:1;padding:.3rem .45rem;font-size:.74rem;font-weight:600;transition:color .15s,background .15s,border-color .15s}.loft-thickness-legend__variant:hover{color:var(--color-text-body);background:var(--color-surface-card-hover)}.loft-thickness-legend__variant[aria-pressed=true]{color:var(--color-text-heading);background:var(--color-surface-elevated);border-color:var(--color-accent-primary)}.loft-thickness-legend__bar{border-radius:var(--radius-sm);border:1px solid var(--color-border-subtle);height:.75rem}.loft-thickness-legend__labels{font-family:var(--font-mono);color:var(--color-text-muted);justify-content:space-between;margin-top:.35rem;font-size:.72rem;display:flex}.loft-thickness-legend__threshold{flex-direction:column;gap:.3rem;display:flex}.loft-thickness-legend__threshold-label{color:var(--color-text-muted);font-size:.75rem}.loft-thickness-legend__slider{width:100%;accent-color:var(--color-accent-primary)}.loft-thickness-legend__hint{color:var(--color-text-muted);margin:0;font-size:.72rem;line-height:1.4}.loft-vsettings__scrim{z-index:60;background:color-mix(in srgb, var(--color-surface-primary) 60%, transparent);backdrop-filter:blur(4px);justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.loft-vsettings{background:var(--elev-surface-4);border:1px solid var(--color-border-subtle);border-radius:var(--radius-lg,14px);width:min(560px,100%);max-height:min(86vh,820px);box-shadow:var(--elev-4);flex-direction:column;display:flex;overflow:hidden}.loft-vsettings__head{border-bottom:1px solid var(--color-border-subtle);justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.loft-vsettings__title{font:600 1.15rem var(--font-ui);color:var(--color-text-heading);margin:0}.loft-vsettings__close{border-radius:var(--radius-sm);width:30px;height:30px;color:var(--color-text-muted);cursor:pointer;background:0 0;border:1px solid #0000;justify-content:center;align-items:center;font-size:1.1rem;display:inline-flex}.loft-vsettings__close:hover{background:var(--color-surface-card-hover);color:var(--color-text-heading)}.loft-vsettings__tabs{border-bottom:1px solid var(--color-border-subtle);gap:4px;padding:8px 14px 0;display:flex}.loft-vsettings__tab{color:var(--color-text-muted);font:600 .88rem var(--font-ui);cursor:pointer;background:0 0;border:0;padding:8px 14px 12px;position:relative}.loft-vsettings__tab:hover{color:var(--color-text-body)}.loft-vsettings__tab.is-active{color:var(--color-accent-primary)}.loft-vsettings__tab.is-active:after{content:"";border-radius:var(--radius-full);background:var(--color-accent-primary);height:2px;position:absolute;bottom:-1px;left:8px;right:8px}.loft-vsettings__body{scrollbar-width:thin;flex:1;padding:8px 20px 16px;overflow-y:auto}.loft-vsettings__group{font:700 .72rem var(--font-ui);letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-muted);margin:18px 0 4px}.loft-vsettings__group:first-child{margin-top:6px}.loft-vsettings__row{border-bottom:1px solid var(--color-border-subtle);align-items:center;gap:16px;padding:12px 0;display:flex}.loft-vsettings__row:last-child{border-bottom:0}.loft-vsettings__row.is-soon{opacity:.62}.loft-vsettings__row-text{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.loft-vsettings__row-label{font:600 .88rem var(--font-ui);color:var(--color-text-heading);align-items:center;gap:8px;display:inline-flex}.loft-vsettings__row-desc{color:var(--color-text-muted);font-size:.78rem;line-height:1.4}.loft-vsettings__soon{border-radius:var(--radius-full);background:var(--color-overlay-faint);border:1px solid var(--color-border-subtle);letter-spacing:.04em;text-transform:uppercase;color:var(--color-text-muted);padding:1px 7px;font-size:.64rem;font-weight:600}.loft-vsettings__row-control{flex-shrink:0}.loft-vsettings__switch{border:1px solid var(--color-border-subtle);border-radius:var(--radius-full);background:var(--elev-surface-1);cursor:pointer;width:42px;height:24px;box-shadow:var(--elev-1);padding:0;transition:background .14s,border-color .14s;position:relative}.loft-vsettings__switch-knob{background:var(--color-text-muted);border-radius:50%;width:18px;height:18px;transition:transform .14s,background .14s;position:absolute;top:2px;left:2px}.loft-vsettings__switch.is-on{background:color-mix(in oklab, var(--color-accent-primary) 26%, var(--elev-surface-1));border-color:var(--color-accent-primary)}.loft-vsettings__switch.is-on .loft-vsettings__switch-knob{background:var(--color-accent-primary);transform:translate(18px)}.loft-vsettings__switch:disabled{cursor:not-allowed}.loft-vsettings__switch:focus-visible{outline:2px solid var(--color-accent-primary);outline-offset:2px}.loft-vsettings__select{background:var(--elev-surface-1);min-width:168px;color:var(--color-text-body);border:1px solid var(--color-border-subtle);border-radius:var(--radius-sm);font:.84rem var(--font-ui);cursor:pointer;box-shadow:var(--elev-1);padding:7px 10px}.loft-vsettings__select:disabled{cursor:not-allowed}.loft-vsettings__select:focus-visible{outline:2px solid var(--color-accent-primary);outline-offset:1px}.loft-vsettings__rowbtn{background:var(--elev-surface-1);color:var(--color-text-body);border:1px solid var(--color-border-subtle);border-radius:var(--radius-sm);font:600 .82rem var(--font-ui);cursor:pointer;box-shadow:var(--elev-1);padding:7px 16px;transition:background .12s,box-shadow .12s}.loft-vsettings__rowbtn:hover{background:var(--elev-surface-2);box-shadow:var(--elev-2)}.loft-vsettings__slider{width:168px;accent-color:var(--color-accent-primary);cursor:pointer}.loft-vsettings__slider:disabled{cursor:not-allowed}.loft-vsettings__foot{border-top:1px solid var(--color-border-subtle);justify-content:center;padding:14px 20px;display:flex}.loft-vsettings__restore{background:var(--elev-surface-1);color:var(--color-text-body);border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);font:600 .84rem var(--font-ui);cursor:pointer;box-shadow:var(--elev-1);padding:9px 18px;transition:background .12s,box-shadow .12s,transform .12s}.loft-vsettings__restore:hover{background:var(--elev-surface-2);box-shadow:var(--elev-2);transform:translateY(-1px)}@media (prefers-reduced-motion:reduce){.loft-vsettings__switch,.loft-vsettings__switch-knob,.loft-vsettings__restore{transition:none}}
