.view-gizmo{top:76px;right:max(16px, env(safe-area-inset-right));z-index:40;pointer-events:none;user-select:none;border-radius:50%;width:120px;height:120px;position:absolute}.view-gizmo[hidden]{display:none}.view-gizmo:hover,.view-gizmo:focus-within{background:#8080801f}.view-gizmo svg{width:100%;height:100%;position:absolute;inset:0;overflow:visible}.view-gizmo-x{--axis-color:#ff5269}.view-gizmo-y{--axis-color:#99d83b}.view-gizmo-z{--axis-color:#429bff}.view-gizmo-line{stroke:var(--axis-color);stroke-width:1.6px;stroke-linecap:round}.view-gizmo-axis{cursor:pointer;pointer-events:auto;touch-action:manipulation;-webkit-tap-highlight-color:transparent;background:0 0;border:0;border-radius:50%;place-items:center;width:32px;height:32px;padding:0;font:600 11px/1 system-ui,sans-serif;display:grid;position:absolute;transform:translate(-50%,-50%)}.view-gizmo-axis span{box-sizing:border-box;border:1.5px solid var(--axis-color);background:var(--axis-color);color:#17212c;border-radius:50%;place-items:center;width:22px;height:22px;transition:box-shadow .12s,opacity .12s;display:grid}.view-gizmo-axis.is-negative span{background:var(--bg-primary);color:#0000}.view-gizmo-axis.is-back span{opacity:.5}.view-gizmo-axis:hover span,.view-gizmo-axis:focus-visible span,.view-gizmo-axis[aria-pressed=true] span{opacity:1;box-shadow:0 0 0 2px var(--text-primary)}.view-gizmo-axis.is-negative:hover span,.view-gizmo-axis.is-negative:focus-visible span,.view-gizmo-axis.is-negative[aria-pressed=true] span{color:var(--axis-color)}.view-gizmo-axis:focus-visible{outline:2px solid var(--text-primary);outline-offset:1px;z-index:250!important}@media (width<=1023px){.view-gizmo{top:4px;right:max(4px, env(safe-area-inset-right))}}.viewer-page{--viewer-canvas:#edf0f4;--viewer-panel:#ffffffd6;--viewer-panel-border:#14181e1a;--viewer-panel-text:#14181eb8;min-height:calc(100svh - 4rem)}:root[data-theme=dark] .viewer-page{--viewer-canvas:#24262b;--viewer-panel:#2d2f35e0;--viewer-panel-border:#ffffff24;--viewer-panel-text:#ffffffc2}.viewer-workbench{--viewer-workbench-height:clamp(38rem, calc(100svh - 8rem), 55rem);--viewer-top-panel-height:clamp(20rem, calc(var(--viewer-workbench-height) * .42), 24rem);grid-template-rows:var(--viewer-workbench-height);grid-template-columns:clamp(15rem,20vw,18rem) minmax(0,1fr) clamp(22rem,27vw,28rem);gap:1rem;width:100%;margin-inline:auto;display:grid}.viewer-models,.viewer-inspector{min-width:0;min-height:0}.viewer-models{overscroll-behavior-y:contain;scrollbar-width:thin;grid-area:1/1;padding:2px;overflow:hidden auto}.viewer-model-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;display:grid}.viewer-model-list>.dui-alert{grid-column:1/-1}.viewer-folder-input{display:none}.viewer-local-model{text-align:center;border-style:dashed;flex-direction:column;grid-column:1/-1;justify-content:center;align-items:center;gap:5px;min-height:0;padding:14px 11px;transition:border-color .12s,background .12s,transform .12s;display:flex}.viewer-local-model:hover:not(:disabled){border-color:color-mix(in oklab, var(--color-primary) 54%, transparent);background:color-mix(in oklab, var(--color-primary) 7%, var(--color-base-200));transform:translateY(-1px)}.viewer-local-model strong{font-size:.72rem}.viewer-local-model small{color:color-mix(in oklab, var(--color-base-content) 48%, transparent);font-size:.6rem;line-height:1.4}.viewer-local-model-icon{background:color-mix(in oklab, var(--color-primary) 12%, transparent);width:28px;height:28px;color:var(--color-primary);border-radius:9px;place-items:center;display:grid}.viewer-local-model-icon svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7px;width:16px;height:16px}.viewer-inspector{flex-direction:column;grid-area:1/3;gap:.75rem;padding:2px;display:flex;overflow:hidden}.viewer-structure{box-sizing:border-box;height:var(--viewer-top-panel-height);flex:0 0 var(--viewer-top-panel-height);min-height:0;overflow:hidden}.viewer-structure>.dui-card-body{min-height:0}.viewer-structure-heading{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.viewer-structure-heading h2,.joint-heading h2{font-size:1rem}.viewer-measurement-instruction{color:color-mix(in oklab, var(--color-base-content) 52%, transparent);margin:.2rem 0 0;font-size:.72rem;line-height:1.35}.viewer-structure-content{height:100%;min-height:0;position:relative;overflow:hidden}.viewer-structure-graph-shell{width:100%;height:100%;min-height:0;position:relative}.viewer-structure-viewport{background:color-mix(in oklab, var(--color-base-100) 52%, transparent);cursor:grab;touch-action:none;border-radius:.8rem;width:100%;height:100%;min-height:108px;display:block;position:relative;overflow:hidden}.viewer-structure-viewport:active{cursor:grabbing}.viewer-structure-graph{max-width:none;color:var(--color-base-content);user-select:none}.viewer-structure-edges path{fill:none;stroke:color-mix(in oklab, var(--color-base-content) 27%, transparent);stroke-linecap:round;stroke-width:1.4px}.viewer-structure-node{color:color-mix(in oklab, var(--color-base-content) 72%, transparent);cursor:pointer;outline:none}.viewer-structure-node rect{fill:#fff;stroke:color-mix(in oklab, var(--color-base-content) 20%, transparent);stroke-width:1.2px;transition:fill .12s,stroke .12s,filter .12s}.viewer-structure-node--joint rect{fill:color-mix(in oklab, var(--color-base-300) 70%, var(--color-base-100))}.viewer-structure-node:hover rect,.viewer-structure-node:focus-visible rect{stroke:#77b9f3;filter:drop-shadow(0 4px 7px #3f90de33)}.viewer-structure-node.is-selected rect{fill:#dceeff;stroke:#77b9f3;filter:drop-shadow(0 4px 7px #3f90de33)}.viewer-structure-node.is-measured rect{fill:#0b5cad;stroke:#07447f;stroke-width:1.8px;filter:drop-shadow(0 4px 7px #0b5cad4d)}.viewer-structure-node.is-measured{color:#fff}[data-theme=dark] .viewer-structure-node:not(.is-selected):not(.is-measured) rect{fill:var(--color-base-100)}.viewer-structure-node text{fill:currentColor;font-family:var(--brand-font-current);text-anchor:middle;dominant-baseline:middle;pointer-events:none;font-size:16px;font-weight:500}.viewer-structure-node-type{fill:color-mix(in oklab, currentColor 52%, transparent)!important;font-size:11px!important;font-weight:500!important}.viewer-measurement-hint,.viewer-measurement-result{color:color-mix(in oklab, var(--color-base-content) 52%, transparent);margin:0;font-size:.72rem;line-height:1.4}.viewer-measurement-hint{pointer-events:none}.viewer-measurement-result{background:color-mix(in oklab, var(--color-primary) 10%, transparent);border-radius:.7rem;gap:.2rem;padding:.65rem .75rem;display:grid}.viewer-measurement-result strong{color:var(--color-base-content);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.viewer-joints{flex:1;min-height:0;overflow:hidden}.viewer-hover-info{z-index:3;border:1px solid var(--viewer-panel-border);background:var(--viewer-panel);max-width:min(280px,100% - 28px);color:var(--viewer-panel-text);backdrop-filter:saturate(150%)blur(16px);pointer-events:none;border-radius:.8rem;gap:3px;padding:10px 12px;font-size:.62rem;display:grid;position:absolute;bottom:60px;left:50%;right:auto;transform:translate(-50%);box-shadow:0 10px 28px #00000029}.viewer-hover-info strong{color:color-mix(in oklab, var(--viewer-panel-text) 85%, white);font-size:.68rem}.viewer-joints>.dui-card-body{min-height:0}.viewer-joints .joint-list{overflow-y:auto}.viewer-stage{border-radius:var(--radius-box);background:var(--viewer-canvas);flex:1;min-width:0;min-height:0;position:relative;overflow:hidden;box-shadow:0 20px 55px #00000024}.viewer-stage-column{flex-direction:column;grid-area:1/2;gap:.5rem;min-width:0;min-height:0;display:flex}.viewer-stage canvas{touch-action:none;width:100%;height:100%;display:block;position:absolute;inset:0}.viewer-drop-overlay{z-index:10;border:2px dashed color-mix(in oklab, var(--color-primary) 64%, transparent);border-radius:calc(var(--radius-box) - 4px);background:color-mix(in oklab, var(--viewer-panel) 92%, transparent);color:var(--viewer-panel-text);text-align:center;backdrop-filter:blur(18px);pointer-events:none;place-content:center;justify-items:center;gap:8px;display:grid;position:absolute;inset:12px}.viewer-drop-overlay strong{color:var(--color-base-content);margin-top:3px;font-size:.95rem}.viewer-drop-overlay>span:last-child{font-size:.7rem}.viewer-display-bar{z-index:2;width:max-content;max-width:calc(100% - 28px);color:var(--viewer-panel-text);border:1px solid var(--viewer-panel-border);background:var(--viewer-panel);backdrop-filter:saturate(160%)blur(16px);scrollbar-width:none;border-radius:1rem;padding:5px 7px;position:absolute;top:14px;left:50%;overflow-x:auto;transform:translate(-50%);box-shadow:0 12px 32px #0003}.viewer-display-bar::-webkit-scrollbar{display:none}.viewer-display-options{align-items:center;gap:4px;display:flex}.viewer-display-toggle{white-space:nowrap;border-color:#0000;height:30px;min-height:30px;padding-inline:10px;font-size:.68rem;font-weight:550}.viewer-display-toggle:not(.dui-btn-primary){color:var(--viewer-panel-text)}.viewer-display-link{height:30px;min-height:30px;color:var(--viewer-panel-text);white-space:nowrap;border-color:#0000;padding-inline:.35rem;font-size:.64rem;font-weight:600}.viewer-display-link:hover,.viewer-display-link:focus-visible{color:var(--color-primary)}.viewer-display-link svg{fill:currentColor;width:.82rem;height:.82rem}.viewer-github-link svg{width:1rem;height:1rem}.viewer-license-link svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8px}.viewer-display-divider{background:var(--viewer-panel-border);flex:none;width:1px;height:24px;margin-inline:2px}.viewer-axis-select{width:62px;height:30px;min-height:30px;color:var(--viewer-panel-text);border:0;flex:none}.viewer-help-bar{z-index:2;max-width:calc(100% - 28px);color:var(--viewer-panel-text);border:1px solid var(--viewer-panel-border);background:var(--viewer-panel);backdrop-filter:saturate(160%)blur(16px);pointer-events:none;scrollbar-width:none;border-radius:.8rem;align-items:center;gap:9px;padding:7px 11px;font-size:.66rem;display:flex;position:absolute;bottom:14px;left:50%;overflow-x:auto;transform:translate(-50%);box-shadow:0 10px 28px #00000029}.viewer-help-bar span{white-space:nowrap;gap:4px;display:flex}.viewer-help-bar strong{color:var(--color-primary);font-weight:650}.viewer-help-bar i{background:var(--viewer-panel-border);flex:none;width:1px;height:12px}.viewer-load-state,.viewer-load-error{z-index:3;color:#f5f5f7;backdrop-filter:blur(16px);background:#141417d6;border:1px solid #ffffff24;border-radius:1rem;gap:10px;width:min(340px,100% - 36px);padding:14px 16px;font-size:.75rem;display:grid;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 14px 40px #00000040}.viewer-load-state i{background:#ffffff24;border-radius:999px;height:3px;position:relative;overflow:hidden}.viewer-load-state i:after{width:var(--viewer-progress);border-radius:inherit;content:"";background:#1978ff;transition:width .22s;position:absolute;inset:0}.viewer-load-error{border-color:#ff696173}.viewer-load-error strong{color:#ff6961}.viewer-load-error span{color:#ffffffb8}.viewer-stage__fallback{color:var(--color-base-content);background:var(--viewer-canvas);text-align:center;place-content:center;gap:8px;padding:32px;display:grid;position:absolute;inset:0}.viewer-stage__fallback span{max-width:460px;color:color-mix(in oklab, var(--color-base-content) 62%, transparent);font-size:.8rem}.viewer-empty-state{color:color-mix(in oklab, var(--color-base-content) 48%, transparent);text-align:center;padding:22px 8px;font-size:.75rem}.joint-heading,.joint-control>span{justify-content:space-between;align-items:center;gap:12px;display:flex}.viewer-joint-toolbar{white-space:nowrap;flex:none}.viewer-joint-toolbar .dui-btn{padding-inline:.55rem;font-size:.62rem}.joint-list{gap:16px;margin-top:14px;display:grid}.joint-control{gap:8px;min-width:0;display:grid}.joint-control input[type=range]{width:100%;min-width:0}.viewer-constraint-status{color:color-mix(in oklab, var(--color-base-content) 60%, transparent);margin:0;font-size:.75rem}.viewer-constraint-status[data-state=partial],.viewer-constraint-status[data-state=unreachable]{color:var(--color-warning)}.viewer-joint-name{flex:1;align-items:center;gap:6px;min-width:0;display:flex}.viewer-joint-name strong{min-width:0}.viewer-joint-badge{color:color-mix(in oklab, var(--color-base-content) 55%, transparent);white-space:nowrap;flex:none;font-size:.62rem}.viewer-joint-badge--drive{color:var(--color-primary)}.joint-control strong,.joint-control output{color:color-mix(in oklab, var(--color-base-content) 70%, transparent);text-overflow:ellipsis;white-space:nowrap;font-size:.7rem;font-weight:550;overflow:hidden}.viewer-joint-value-field{flex:none;align-items:center;gap:.28rem;display:inline-flex}.viewer-joint-value-field input{width:5.5rem;min-width:0;color:var(--color-base-content);border:1px solid color-mix(in oklab, var(--color-base-content) 16%, transparent);background:color-mix(in oklab, var(--color-base-100) 72%, transparent);font:inherit;text-align:right;border-radius:.4rem;padding:.18rem .35rem;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.viewer-joint-value-field input:focus-visible{outline:2px solid color-mix(in oklab, var(--color-primary) 70%, transparent);outline-offset:1px}.viewer-joint-value-field>span{min-width:1.7rem;color:color-mix(in oklab, var(--color-base-content) 48%, transparent);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.68rem}.joint-control output{color:color-mix(in oklab, var(--color-base-content) 48%, transparent);flex:none;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}@media (width<=1160px){.viewer-workbench{--viewer-top-panel-height:clamp(18rem, calc(var(--viewer-workbench-height) * .4), 22rem);grid-template-columns:14rem minmax(0,1fr) 22rem}}@media (width<=960px){.viewer-workbench{--viewer-workbench-height:38rem;--viewer-top-panel-height:18rem;grid-template-columns:14rem minmax(0,1fr);grid-template-rows:var(--viewer-workbench-height) auto}.viewer-stage{min-height:38rem}.viewer-stage-column{grid-area:1/2}.viewer-inspector{grid-area:2/1/auto/-1;overflow:visible}.viewer-joints .joint-list{max-height:360px}}@media (width<=760px){.viewer-workbench{--viewer-top-panel-height:13.75rem;flex-direction:column;grid-template-rows:none;max-height:none;display:flex}.viewer-models{max-height:22rem}.viewer-model-list{gap:.45rem;padding:2px}.viewer-model-list button:not(.viewer-local-model) figure{aspect-ratio:1/.56}.viewer-model-list button:not(.viewer-local-model) .dui-card-body{padding:.45rem .55rem}.viewer-model-list button:not(.viewer-local-model) p{display:none}.viewer-model-list button:not(.viewer-local-model) h3{font-size:.72rem;line-height:1.35}.viewer-local-model{gap:.15rem;min-height:76px;padding:.35rem}.viewer-local-model-icon{border-radius:7px;width:22px;height:22px}.viewer-local-model-icon svg{width:13px;height:13px}.viewer-local-model strong{font-size:.72rem}.viewer-local-model small{display:none}.viewer-stage{height:min(70svh,560px);min-height:430px}.viewer-inspector{display:block}.viewer-joints{min-height:auto}.viewer-joints .joint-list{max-height:none;overflow:visible}.viewer-display-bar,.viewer-help-bar{max-width:calc(100% - 20px);left:10px;transform:none}}@media (prefers-reduced-transparency:reduce){.viewer-display-bar,.viewer-help-bar,.viewer-hover-info,.viewer-load-state,.viewer-load-error{background:var(--color-base-100);backdrop-filter:none}}@media (prefers-reduced-motion:reduce){.viewer-load-state i:after{transition-duration:.01ms}}.viewer-local-model.is-drop-target{outline:2px dashed var(--color-primary);outline-offset:-5px;background:color-mix(in oklab, var(--color-primary) 12%, var(--color-base-200))}.viewer-models{flex-direction:column;gap:1rem;display:flex;overflow:hidden}.viewer-file-browser{box-sizing:border-box;height:var(--viewer-top-panel-height);flex-direction:column;flex:0 0 var(--viewer-top-panel-height);border:1px solid var(--viewer-panel-border);background:var(--viewer-panel);border-radius:.85rem;min-height:0;display:flex;overflow:hidden}.viewer-file-browser>header{border-bottom:1px solid var(--viewer-panel-border);justify-content:space-between;align-items:center;gap:.5rem;padding:.75rem;display:flex}.viewer-file-browser h2,.viewer-official-models>h2{margin:0;font-size:.8rem;font-weight:650}.viewer-file-import-actions{gap:.5rem;display:flex}.viewer-file-import-actions button{color:var(--color-base-content);cursor:pointer;align-items:center;gap:.2rem;font-size:.65rem;display:inline-flex}.viewer-file-browser svg{fill:none;stroke:currentColor;stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:1rem;height:1rem}.viewer-file-empty{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:.8rem;padding:1.5rem 1rem;display:flex}.viewer-file-empty>svg{width:2rem;height:2rem;color:var(--color-primary)}.viewer-file-empty p{color:var(--viewer-panel-text);font-size:.7rem}.viewer-file-tree{scrollbar-width:thin;min-height:0;padding:.5rem;overflow:auto}.viewer-file-tree,.viewer-file-tree ul{margin:0;list-style:none}.viewer-file-tree ul{padding-inline-start:.8rem}.viewer-file-row{text-align:left;cursor:pointer;border-radius:.35rem;align-items:center;gap:.35rem;width:100%;min-height:1.9rem;padding:.25rem;font-size:.7rem;display:flex}.viewer-file-row:hover:not(:disabled),.viewer-file-row.is-selected{background:color-mix(in oklab, var(--color-primary) 12%, transparent);color:var(--color-primary)}.viewer-file-row:disabled{opacity:.65;cursor:default}.viewer-file-chevron{flex:none;width:.6rem}.viewer-file-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.viewer-file-row small{color:var(--viewer-panel-text);margin-left:auto;font-size:.5rem}.viewer-file-browser.is-drop-target{border-color:var(--color-primary);background:color-mix(in oklab, var(--color-primary) 10%, var(--color-base-100))}.viewer-official-models{scrollbar-width:thin;flex:1;min-height:0;padding:2px;overflow:auto}.viewer-official-models>h2{margin:0 0 .75rem}.viewer-stage .view-gizmo{z-index:4;width:100px;height:100px;top:4rem;right:.5rem}.viewer-stage .view-gizmo-axis{width:28px;height:28px}@media (width<=760px){.viewer-models{max-height:none;overflow:visible}.viewer-official-models{flex:0 auto;max-height:20rem}}
