@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap";.app-notifications{position:fixed;right:18px;bottom:72px;z-index:3200;display:flex;flex-direction:column;gap:10px;max-width:min(440px,calc(100vw - 24px));pointer-events:none}.app-notification{pointer-events:auto;display:flex;align-items:center;gap:10px;padding:12px 14px;border-radius:12px;color:#f8fafc;backdrop-filter:blur(10px);border:1px solid rgba(148,163,184,.25);background:linear-gradient(160deg,#121725f0,#0a0e1af5);box-shadow:0 14px 34px #0206177a;animation:app-notification-in .22s ease-out}.app-notification-icon{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}.app-notification-text{flex:1;font-size:13px;line-height:1.35}.app-notification-close{flex:0 0 auto;border:0;width:22px;height:22px;border-radius:6px;color:#f8fafccc;background:#94a3b81f;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.app-notification-close:hover{background:#94a3b83d;color:#f8fafc}.app-notification-warning .app-notification-icon{color:#f59e0b}.app-notification-error .app-notification-icon{color:#ef4444}.app-notification-success .app-notification-icon{color:#22c55e}.app-notification-info .app-notification-icon{color:#60a5fa}@keyframes app-notification-in{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@media(max-width:900px){.app-notifications{right:10px;left:10px;bottom:62px;max-width:none}}.dimension-overlay{position:absolute;inset:0;pointer-events:none;z-index:50}.dimension-label{position:absolute;transform:translate(-50%,-50%);display:flex;align-items:center;gap:4px;background:#000000d9;padding:3px 8px;border-radius:4px;font-family:var(--font-mono);font-size:11px;white-space:nowrap;border:1px solid;box-shadow:0 2px 8px #0006}.dimension-length{border-color:var(--accent-primary);color:var(--accent-primary)}.dimension-radius{border-color:var(--accent-sketch);color:var(--accent-sketch)}.dimension-angle{border-color:var(--success);color:var(--success)}.dim-icon{font-size:12px;opacity:.8}.dim-value{font-weight:600}.point-handles-overlay{position:absolute;inset:0;pointer-events:none;z-index:60}.point-handle{position:absolute;transform:translate(-50%,-50%);width:10px;height:10px;border-radius:50%;background:var(--bg-primary);border:2px solid var(--accent-primary);cursor:pointer;pointer-events:auto;transition:all .15s ease;box-shadow:0 0 4px #00000080}.point-handle:hover,.point-handle.hovered{width:14px;height:14px;background:var(--accent-primary);border-color:#fff;box-shadow:0 0 8px var(--accent-primary-glow)}.point-handle.selected{background:var(--accent-sketch);border-color:var(--accent-sketch)}.point-handle.selected:hover{background:#fff;border-color:var(--accent-sketch)}.point-handle.point-selected{width:14px;height:14px;background:#0f8;border-color:#fff;box-shadow:0 0 12px #0f8c;z-index:1}.point-handle.entity-selected{background:var(--accent-sketch);border-color:var(--accent-sketch)}.point-handle.origin-point{width:12px;height:12px;background:#f66;border:2px solid #ffaaaa;box-shadow:0 0 8px #f669}.point-handle.origin-point:hover,.point-handle.origin-point.hovered{width:16px;height:16px;background:#f44;border-color:#fff;box-shadow:0 0 12px #ff4444e6}.point-handle.origin-point.point-selected{width:16px;height:16px;background:#0f8;border-color:#fff;box-shadow:0 0 14px #00ff88e6}.point-tooltip{position:absolute;bottom:100%;left:50%;transform:translate(-50%);margin-bottom:8px;background:#000000e6;color:var(--accent-primary);font-family:var(--font-mono);font-size:10px;padding:3px 6px;border-radius:4px;white-space:nowrap;pointer-events:none;border:1px solid var(--accent-primary)}.snap-indicator-overlay{position:absolute;inset:0;pointer-events:none;z-index:70}.snap-indicator{position:absolute;transform:translate(-50%,-50%);width:20px;height:20px}.snap-indicator--endpoint .snap-ring{position:absolute;inset:0;border:2px solid var(--success);border-radius:50%;animation:snap-pulse .8s ease-in-out infinite}.snap-indicator--endpoint .snap-crosshair-h,.snap-indicator--endpoint .snap-crosshair-v{position:absolute;background:var(--success)}.snap-indicator--endpoint .snap-crosshair-h{width:100%;height:2px;top:50%;left:0;transform:translateY(-50%)}.snap-indicator--endpoint .snap-crosshair-v{width:2px;height:100%;top:0;left:50%;transform:translate(-50%)}.snap-indicator--midpoint{--midpoint-color: #f4c268}.snap-indicator--midpoint .snap-triangle{position:absolute;inset:2px;clip-path:polygon(50% 0%,0% 100%,100% 100%);background:var(--midpoint-color);animation:snap-pulse .8s ease-in-out infinite}.snap-indicator--midpoint .snap-triangle-rounded{position:absolute;inset:1px;width:calc(100% - 2px);height:calc(100% - 2px);animation:snap-pulse .8s ease-in-out infinite}.snap-indicator--midpoint .snap-triangle-rounded path{fill:var(--midpoint-color)}.snap-indicator--center .snap-ring--center{position:absolute;inset:0;border:2px solid #d946ef;border-radius:50%;animation:snap-pulse .8s ease-in-out infinite}.snap-indicator--center .snap-crosshair--center{position:absolute;background:#d946ef}.snap-indicator--center .snap-crosshair-h{width:100%;height:2px;top:50%;left:0;transform:translateY(-50%)}.snap-indicator--center .snap-crosshair-v{width:2px;height:100%;top:0;left:50%;transform:translate(-50%)}.snap-indicator--quadrant .snap-diamond{position:absolute;inset:2px;background:#22d3ee;transform:rotate(45deg);animation:snap-pulse .8s ease-in-out infinite}.snap-indicator--perpendicular .snap-perpendicular{position:absolute;inset:4px;border:2px solid #60a5fa;border-radius:0;animation:snap-pulse .8s ease-in-out infinite}.snap-ring{position:absolute;inset:0;border:2px solid var(--success);border-radius:50%;animation:snap-pulse .8s ease-in-out infinite}.snap-crosshair-h,.snap-crosshair-v{position:absolute;background:var(--success)}.snap-crosshair-h{width:100%;height:2px;top:50%;left:0;transform:translateY(-50%)}.snap-crosshair-v{width:2px;height:100%;top:0;left:50%;transform:translate(-50%)}@keyframes snap-pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.3);opacity:.7}}.dimension-dialog{position:fixed;z-index:10000;background:linear-gradient(135deg,#1e1e2dfa,#141423fa);border:1px solid rgba(96,165,250,.4);border-radius:8px;box-shadow:0 8px 32px #00000080,0 0 20px #60a5fa26;backdrop-filter:blur(10px);padding:8px;min-width:160px;animation:dimension-dialog-appear .15s ease-out}@keyframes dimension-dialog-appear{0%{opacity:0;transform:scale(.9) translateY(-5px)}to{opacity:1;transform:scale(1) translateY(0)}}.dimension-dialog-header{display:flex;align-items:center;gap:6px;padding-bottom:6px;border-bottom:1px solid rgba(255,255,255,.1);margin-bottom:8px}.dimension-type-icon{font-size:14px}.dimension-type-label{font-size:12px;font-weight:600;color:#94a3b8;text-transform:uppercase;letter-spacing:.5px}.dimension-dialog-content{display:flex;gap:6px;align-items:center}.dimension-input{flex:1;background:#0000004d;border:1px solid rgba(96,165,250,.3);border-radius:4px;padding:8px 10px;color:#fff;font-size:14px;font-weight:500;min-width:80px;outline:none;transition:border-color .2s,box-shadow .2s}.dimension-input:focus{border-color:#60a5fab3;box-shadow:0 0 8px #60a5fa4d}.dimension-input::-webkit-inner-spin-button,.dimension-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.dimension-dialog-buttons{display:flex;gap:4px}.dimension-btn{width:28px;height:28px;border-radius:4px;border:none;cursor:pointer;font-size:12px;font-weight:600;display:flex;align-items:center;justify-content:center;transition:all .15s}.dimension-btn-apply{background:#4ade8033;color:#4ade80;border:1px solid rgba(74,222,128,.3)}.dimension-btn-apply:hover{background:#4ade804d;border-color:#4ade8080;transform:scale(1.05)}.dimension-btn-cancel{background:#ef444433;color:#ef4444;border:1px solid rgba(239,68,68,.3)}.dimension-btn-cancel:hover{background:#ef44444d;border-color:#ef444480;transform:scale(1.05)}.inline-dimension-input-container{position:absolute;z-index:10000;pointer-events:auto;transform:translate(-50%,-50%);animation:inline-input-appear .1s ease-out}@keyframes inline-input-appear{0%{opacity:0;transform:translate(-50%,-50%) scale(.8)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}.inline-dimension-input{background:#141423f2;border:2px solid #3b82f6;border-radius:4px;padding:4px 8px;color:#fff;font-size:14px;font-weight:600;font-family:Segoe UI,-apple-system,BlinkMacSystemFont,sans-serif;width:70px;text-align:center;outline:none;box-shadow:0 2px 10px #00000080,0 0 15px #3b82f64d}.inline-dimension-input:focus{border-color:#60a5fa;box-shadow:0 2px 12px #0009,0 0 20px #60a5fa66}.inline-dimension-input::-webkit-inner-spin-button,.inline-dimension-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.inline-dimension-input::placeholder{color:#fff6}.view-cube{position:absolute;bottom:20px;right:20px;width:110px;height:130px;pointer-events:auto;z-index:330}.view-cube-home{position:absolute;bottom:0;left:50%;width:28px;height:24px;display:flex;align-items:center;justify-content:center;transform:translate(-50%);background:var(--surface-floating-muted);border:1px solid var(--border-glow);border-radius:var(--radius-sm);color:var(--text-secondary);box-shadow:var(--shadow-sm);cursor:pointer;font-size:0}.view-cube-home:hover{color:var(--accent-primary);background:var(--surface-floating);border-color:var(--accent-primary)}@media(max-width:800px),(max-height:500px)and (max-width:900px){.app.mobile-beta .view-cube{top:8px;right:8px;bottom:auto;transform:scale(.78);transform-origin:top right}.app.mobile-beta .view-cube-home{width:44px;height:44px}}.sketch-view-rotation{position:absolute;top:16px;right:16px;z-index:120;display:flex;flex-direction:column;gap:8px;padding:10px;background:var(--bg-elevated);border:1px solid var(--border-default);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);color:var(--text-primary);pointer-events:auto;width:170px}.sketch-view-rotation.minimized{padding:6px 8px;width:auto}.svr-header{display:flex;align-items:center;justify-content:space-between;gap:8px}.svr-title{font-size:var(--font-size-xs);color:var(--text-secondary);letter-spacing:.08em;text-transform:uppercase}.svr-actions{display:flex;gap:6px}.svr-action,.svr-toggle{border:1px solid var(--border-default);background:var(--bg-surface);color:var(--text-primary);border-radius:var(--radius-sm);padding:4px 6px;font-size:var(--font-size-xs);cursor:pointer;transition:border-color var(--transition-fast),background var(--transition-fast)}.svr-action:hover,.svr-toggle:hover{border-color:var(--border-strong);background:var(--bg-hover)}.svr-visual{display:flex;align-items:center;justify-content:center}.svr-ring{stroke:var(--accent-sketch);opacity:.35}.svr-handle{fill:var(--accent-sketch);transform-box:fill-box;transform-origin:center;transition:transform var(--transition-fast)}.svr-handle.active{transform:scale(1.1)}.svr-center{fill:#ffffff80}.svr-input-row{display:grid;grid-template-columns:auto 1fr auto;gap:6px;align-items:center;font-size:var(--font-size-xs)}.svr-label{color:var(--text-secondary)}.svr-input{width:70px;border:1px solid var(--border-default);background:var(--bg-surface);color:var(--text-primary);border-radius:var(--radius-sm);padding:4px 6px;font-size:var(--font-size-xs)}.svr-input:focus{outline:none;border-color:var(--accent-sketch);box-shadow:0 0 0 2px var(--accent-sketch-dim)}.svr-unit{color:var(--text-muted);font-size:var(--font-size-xs)}.section-plane-panel{position:absolute;top:80px;right:16px;background:#1e1e28f2;border:1px solid rgba(255,255,255,.1);border-radius:8px;padding:0;min-width:200px;box-shadow:0 4px 20px #0006;z-index:100;backdrop-filter:blur(10px)}.section-plane-header{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;border-bottom:1px solid rgba(255,255,255,.1)}.section-plane-title{font-size:13px;font-weight:600;color:#fff}.section-plane-close{background:none;border:none;color:#fff9;font-size:18px;cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all .15s ease}.section-plane-close:hover{background:#ffffff1a;color:#fff}.section-plane-content{padding:12px;display:flex;flex-direction:column;gap:12px}.section-plane-axis{display:flex;flex-direction:column;gap:6px}.section-plane-axis label,.section-plane-position label{font-size:11px;color:#fff9;text-transform:uppercase;letter-spacing:.5px}.axis-buttons{display:flex;gap:4px}.axis-btn{flex:1;padding:8px 12px;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:4px;color:#ffffffb3;font-size:12px;font-weight:600;cursor:pointer;transition:all .15s ease}.axis-btn:hover{background:#ffffff1a;color:#fff}.axis-btn.active{background:#3b82f6;border-color:#3b82f6;color:#fff}.section-plane-position{display:flex;flex-direction:column;gap:6px}.position-slider{width:100%;height:6px;-webkit-appearance:none;appearance:none;background:#ffffff1a;border-radius:3px;outline:none;cursor:pointer}.position-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:16px;height:16px;background:#3b82f6;border-radius:50%;cursor:pointer;transition:transform .15s ease}.position-slider::-webkit-slider-thumb:hover{transform:scale(1.2)}.position-slider::-moz-range-thumb{width:16px;height:16px;background:#3b82f6;border:none;border-radius:50%;cursor:pointer}.section-plane-row{padding-bottom:8px;margin-bottom:8px;border-bottom:1px solid rgba(255,255,255,.08)}.section-plane-row:last-of-type{border-bottom:none;margin-bottom:0}.section-plane-ref-select{flex:1;background:#ffffff14;border:1px solid rgba(255,255,255,.15);border-radius:4px;color:#fff;font-size:12px;padding:4px 6px}.section-plane-ref-select option{background:#1e1e28;color:#fff}.section-plane-add{width:100%;margin-top:4px}.context-menu{position:fixed;z-index:1000;background:#1e1e23fa;border:1px solid rgba(79,195,247,.3);border-radius:8px;padding:4px 0;min-width:150px;box-shadow:0 4px 20px #00000080;backdrop-filter:blur(10px)}.context-menu-item{display:flex;align-items:center;gap:8px;width:100%;padding:8px 12px;background:none;border:none;color:#e0e0e0;font-size:13px;text-align:left;cursor:pointer;transition:background .15s ease}.context-menu-item:hover{background:#4fc3f733}.context-menu-item.delete:hover{background:#f4433633;color:#ef5350}.viewport-context-menu{min-width:170px}.viewport-context-menu-title{padding:6px 12px 4px;font-size:11px;color:#9aa4b0;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-bottom:1px solid rgba(255,255,255,.08);margin-bottom:4px}.viewport-context-menu-color{justify-content:space-between}.viewport-context-menu-color input[type=color]{width:34px;height:20px;padding:0;border:1px solid rgba(255,255,255,.2);border-radius:4px;background:none;cursor:pointer}.viewport{flex:1;width:100%;height:100%;min-height:400px;background:var(--bg-void);cursor:grab;outline:none;position:relative;box-shadow:inset 0 0 100px #0000004d}.viewport-container>.viewport{position:absolute;inset:0;width:100%;height:100%;min-height:0}.viewport>canvas{position:absolute!important;inset:0;z-index:0;width:100%!important;height:100%!important;display:block;touch-action:none}@media(pointer:coarse){.viewport,.viewport>canvas{touch-action:none;overscroll-behavior:contain}}.viewport:active{cursor:grabbing}.viewport-edge-mode{cursor:crosshair;box-shadow:inset 0 0 100px #0000004d,inset 0 0 30px var(--accent-edge-dim)}.viewport-edge-mode:after{content:"";position:absolute;inset:0;border:2px solid var(--accent-edge);border-radius:0;opacity:.5;pointer-events:none;animation:glow-green 2s ease-in-out infinite}@keyframes glow-green{0%,to{box-shadow:inset 0 0 20px var(--accent-edge-dim);border-color:var(--accent-edge)}50%{box-shadow:inset 0 0 40px #10b98133;border-color:#10b981b3}}.viewport-sketch-mode{cursor:crosshair;box-shadow:inset 0 0 100px #0000004d,inset 0 0 40px var(--accent-sketch-dim)}.viewport-sketch-mode:after{content:"";position:absolute;inset:0;border:2px solid var(--accent-sketch);border-radius:0;opacity:.6;pointer-events:none;animation:glow-purple 2s ease-in-out infinite}.viewport-trim-mode{cursor:crosshair}.viewport-trim-ready{cursor:pointer}@keyframes glow-purple{0%,to{box-shadow:inset 0 0 20px var(--accent-sketch-dim);border-color:var(--accent-sketch)}50%{box-shadow:inset 0 0 50px #a855f733;border-color:#a855f7cc}}.selection-box{position:absolute;border:1px dashed var(--accent-primary);background:#00d9ff1a;pointer-events:none;z-index:100}.constraint-hint{position:absolute;width:16px;height:16px;border-radius:4px;display:flex;align-items:center;justify-content:center;background:#0c122299;border:1px solid rgba(96,165,250,.6);pointer-events:none;z-index:120}.constraint-hint-line{display:block;background:#cfe6ff;border-radius:1px}.constraint-hint-horizontal .constraint-hint-line{width:10px;height:2px}.constraint-hint-vertical .constraint-hint-line{width:2px;height:10px}.constraint-hint-parallel .constraint-hint-line{width:2px;height:10px;box-shadow:6px 0 #cfe6ff}.constraint-hint-coincident .constraint-hint-line{width:7px;height:7px;border:2px solid #cfe6ff;border-radius:50%;background:transparent;box-shadow:4px 0 0 -1px #0c1222,4px 0 0 1px #cfe6ff}.constraint-hint-midpoint .constraint-hint-line{width:0;height:0;background:transparent;border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:9px solid #cfe6ff}.constraint-hint-tangent .constraint-hint-line{width:8px;height:8px;border:2px solid #cfe6ff;border-radius:50%;background:transparent;position:relative;transform:translateY(-2px)}.constraint-hint-tangent .constraint-hint-line:after{content:"";position:absolute;width:12px;height:2px;left:-4px;top:8px;border-radius:1px;background:#cfe6ff;transform:rotate(-24deg)}.sketch-measure-hint{position:absolute;padding:4px 8px;font-size:12px;line-height:1;color:#dbeafe;background:#0c1222b3;border:1px solid rgba(96,165,250,.45);border-radius:6px;pointer-events:none;z-index:120;white-space:nowrap;font-variant-numeric:tabular-nums}.viewport-memory-hud{position:absolute;top:14px;right:14px;z-index:140;min-width:220px;max-width:260px;padding:10px 12px;color:#dbeafe;background:#080f1ce0;border:1px solid rgba(96,165,250,.28);border-radius:12px;box-shadow:0 10px 28px #00000047;backdrop-filter:blur(10px);font-size:12px;line-height:1.35;font-variant-numeric:tabular-nums}.viewport-memory-hud.collapsed{min-width:0;max-width:none}.viewport-memory-hud-header{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#eff6ff}.viewport-memory-hud.collapsed .viewport-memory-hud-header{margin-bottom:0}.viewport-memory-hud-toggle{padding:4px 8px;border:1px solid rgba(96,165,250,.3);border-radius:999px;background:#2563eb24;color:#bfdbfe;font-size:11px;font-weight:600;cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease}.viewport-memory-hud-toggle:hover{background:#3b82f638;border-color:#93c5fd70;color:#eff6ff}.viewport-memory-hud-grid{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:5px 10px}.viewport-memory-hud-grid span:nth-child(odd){color:#bfdbfecc}.viewport-memory-hud-grid span:nth-child(2n){text-align:right;color:#eff6ff}.viewport-memory-hud-note{margin-top:8px;color:#bfdbfeb3;font-size:11px;line-height:1.4}.viewport-ecad-fit-button{position:absolute;right:28px;bottom:92px;z-index:340;display:inline-flex;align-items:center;gap:8px;height:34px;padding:0 11px 0 9px;color:#e6fffb;background:#08141ceb;border:1px solid rgba(103,232,249,.45);border-radius:7px;box-shadow:0 12px 28px #00000057,0 0 18px #22d3ee2e;cursor:pointer;font:inherit;font-size:11px;font-weight:800;letter-spacing:.02em;pointer-events:auto;user-select:none}.viewport-ecad-fit-button:hover{border-color:#67e8f9db;background:#0c202af5;color:#fff}.viewport-ecad-fit-button-cube{position:relative;width:16px;height:16px;flex:0 0 auto;border:2px solid #67e8f9;border-radius:3px;box-shadow:inset -4px -4px #facc1547;transform:rotateX(58deg) rotate(45deg)}.viewport-ecad-fit-button-cube:before,.viewport-ecad-fit-button-cube:after{content:"";position:absolute;inset:2px;border-top:2px solid rgba(250,204,21,.72);border-left:2px solid rgba(250,204,21,.72);border-radius:2px}.axis-indicator{bottom:20px;left:20px}@media(max-width:800px),(max-height:500px)and (max-width:900px){.axis-indicator{bottom:calc(112px + env(safe-area-inset-bottom,0px));left:10px}}.confirm-modal-overlay{position:fixed;inset:0;background:#0009;backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;padding:16px;box-sizing:border-box;z-index:10000;animation:fadeIn .15s ease-out}.confirm-modal{background:linear-gradient(135deg,#1e1e2e,#252535);border:1px solid rgba(255,255,255,.1);border-radius:16px;padding:32px;max-height:calc(100vh - 32px);overflow-y:auto;max-width:400px;width:90%;text-align:center;box-shadow:0 20px 60px #00000080;animation:slideUp .2s ease-out}@keyframes slideUp{0%{opacity:0;transform:translateY(20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.confirm-modal-icon{width:56px;height:56px;margin:0 auto 16px;color:#ff6b6b;background:#ff6b6b26;border-radius:50%;display:flex;align-items:center;justify-content:center}.confirm-modal-icon svg{width:28px;height:28px}.confirm-modal-title{margin:0 0 8px;font-size:20px;font-weight:600;color:#fff}.confirm-modal-message{margin:0 0 24px;font-size:14px;color:#fff9;line-height:1.5}.confirm-modal-actions{display:flex;gap:12px;justify-content:center}.confirm-modal-btn{padding:12px 24px;font-size:14px;font-weight:500;border:none;border-radius:8px;cursor:pointer;transition:all .2s}.confirm-modal-btn.cancel{background:#ffffff1a;color:#fffc}.confirm-modal-btn.cancel:hover{background:#ffffff26;color:#fff}.confirm-modal-btn.confirm{background:linear-gradient(135deg,#ff6b6b,#ee5a5a);color:#fff}.confirm-modal-btn.confirm:hover{background:linear-gradient(135deg,#f55,#dd4a4a);transform:translateY(-1px);box-shadow:0 4px 12px #ff6b6b66}.confirm-modal-btn.primary{background:linear-gradient(135deg,#2563eb,#3b82f6);color:#fff}.confirm-modal-btn.primary:hover{background:linear-gradient(135deg,#1d4ed8,#2563eb);transform:translateY(-1px);box-shadow:0 4px 12px #2563eb66}.workplane-selector-backdrop{position:fixed;inset:0;background:#000000b3;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .2s ease-out}.workplane-selector{background:var(--bg-secondary);border-radius:var(--radius-xl);border:1px solid var(--accent-sketch);box-shadow:var(--shadow-xl),0 0 60px var(--accent-sketch-dim);width:380px;max-width:90vw;overflow:hidden;animation:fadeInUp .3s ease-out}.ws-header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-lg) var(--spacing-xl);border-bottom:1px solid var(--border-default);background:var(--bg-elevated)}.ws-header h3{margin:0;font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--text-primary)}.ws-close{width:28px;height:28px;border-radius:var(--radius-md);background:var(--bg-surface);border:1px solid var(--border-default);color:var(--text-muted);cursor:pointer;font-size:14px;transition:all var(--transition-fast);display:flex;align-items:center;justify-content:center}.ws-close:hover{background:var(--error-dim);border-color:var(--error);color:var(--error)}.ws-content{padding:var(--spacing-xl);display:flex;flex-direction:column;gap:var(--spacing-xl)}.ws-section{display:flex;flex-direction:column;gap:var(--spacing-sm)}.ws-label{font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.ws-name-input{padding:var(--spacing-md);background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-md);color:var(--text-primary);font-size:var(--font-size-md);transition:all var(--transition-fast)}.ws-name-input:focus{outline:none;border-color:var(--accent-sketch);box-shadow:0 0 0 3px var(--accent-sketch-dim)}.ws-name-input::placeholder{color:var(--text-disabled)}.ws-planes{display:flex;flex-direction:column;gap:var(--spacing-sm)}.ws-plane-btn{display:flex;align-items:center;gap:var(--spacing-md);padding:var(--spacing-md) var(--spacing-lg);background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-lg);cursor:pointer;transition:all var(--transition-fast)}.ws-plane-btn:hover{background:var(--bg-hover);border-color:var(--border-strong);transform:translate(4px)}.ws-plane-icon{width:44px;height:44px;border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;font-weight:var(--font-weight-bold);font-size:var(--font-size-md);color:var(--bg-primary);flex-shrink:0}.ws-plane-info{display:flex;flex-direction:column;align-items:flex-start;gap:2px}.ws-plane-name{font-size:var(--font-size-md);font-weight:var(--font-weight-medium);color:var(--text-primary)}.ws-plane-desc{font-size:var(--font-size-sm);color:var(--text-muted)}.ws-hint{padding:var(--spacing-md);background:var(--warning-dim);border:1px solid rgba(245,158,11,.3);border-radius:var(--radius-md);font-size:var(--font-size-sm);color:var(--warning);text-align:center}.revolve-panel-backdrop{position:fixed;inset:0;background:transparent;display:flex;justify-content:flex-end;align-items:flex-start;padding:80px 20px 20px;z-index:9999;pointer-events:none}.revolve-panel{background:#0f1219f2;border-radius:12px;box-shadow:0 8px 32px #0000004d;min-width:320px;max-width:400px;border:1px solid var(--border);pointer-events:auto}.rp-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid var(--border)}.rp-header h3{margin:0;font-size:16px;font-weight:600;color:var(--text)}.rp-close{background:none;border:none;color:var(--text-muted);font-size:18px;cursor:pointer;padding:4px;line-height:1}.rp-close:hover{color:var(--text)}.rp-content{padding:16px 20px}.rp-section{margin-bottom:16px}.rp-section:last-child{margin-bottom:0}.rp-label{display:block;font-size:12px;font-weight:500;color:var(--text-muted);margin-bottom:8px;text-transform:uppercase;letter-spacing:.5px}.rp-sketch-info{display:flex;justify-content:space-between;align-items:center}.rp-sketch-name{font-weight:500;color:var(--text)}.rp-status{font-size:12px;padding:4px 8px;border-radius:4px}.rp-status.closed{background:#4caf5026;color:#4caf50}.rp-status.open{background:#f4433626;color:#f44336}.rp-input{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--text);font-size:14px;box-sizing:border-box}.rp-input:focus{outline:none;border-color:var(--accent)}.rp-axis-btns{display:flex;gap:8px}.rp-axis-btn{flex:1;padding:10px 16px;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--text-muted);font-size:13px;cursor:pointer;transition:all .15s ease}.rp-axis-btn:hover{background:var(--surface);color:var(--text)}.rp-axis-btn.active{background:var(--accent);border-color:var(--accent);color:#fff}.rp-angle-presets{display:flex;gap:6px;margin-top:8px}.rp-angle-presets button{flex:1;padding:6px;border:1px solid var(--border);border-radius:4px;background:var(--bg);color:var(--text-muted);font-size:11px;cursor:pointer;transition:all .15s ease}.rp-angle-presets button:hover{background:var(--surface);color:var(--text);border-color:var(--accent)}.rp-op-btns{display:flex;gap:8px}.rp-op-btn{flex:1;padding:10px 16px;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--text-muted);font-size:13px;cursor:pointer;transition:all .15s ease}.rp-op-btn:hover{background:var(--surface);color:var(--text)}.rp-op-btn.add.active{background:#4caf5026;border-color:#4caf50;color:#4caf50}.rp-op-btn.cut.active{background:#f4433626;border-color:#f44336;color:#f44336}.rp-select{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--text);font-size:14px;box-sizing:border-box;cursor:pointer}.rp-select:focus{outline:none;border-color:var(--accent)}.rp-error{background:#f443361a;border:1px solid rgba(244,67,54,.3);color:#f44336;padding:10px 12px;border-radius:6px;font-size:13px;margin-bottom:16px}.rp-actions{display:flex;gap:12px;margin-top:20px;padding-top:16px;border-top:1px solid var(--border)}.rp-btn{flex:1;padding:10px 20px;border:none;border-radius:6px;font-size:14px;font-weight:500;cursor:pointer;transition:all .15s ease}.rp-btn.cancel{background:var(--bg);color:var(--text-muted);border:1px solid var(--border)}.rp-btn.cancel:hover{background:var(--surface);color:var(--text)}.rp-btn.confirm{background:var(--accent);color:#fff}.rp-btn.confirm:hover:not(:disabled){filter:brightness(1.1)}.rp-btn.confirm:disabled{opacity:.5;cursor:not-allowed}.rp-warning{background:#ffc1071a;border:1px solid rgba(255,193,7,.3);color:#ffc107;padding:10px 12px;border-radius:6px;font-size:13px}.rp-hint{font-size:11px;color:var(--text-disabled);margin-top:6px;font-style:italic}.shell-panel-backdrop{position:fixed;inset:0;background:transparent;display:flex;justify-content:flex-end;align-items:flex-start;padding:80px 20px 20px;z-index:9999;pointer-events:none}.shell-panel{background:#0f1219f2;border-radius:12px;box-shadow:0 8px 32px #0000004d;min-width:320px;max-width:400px;border:1px solid var(--border);pointer-events:auto}.sp-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid var(--border)}.sp-header h3{margin:0;font-size:16px;font-weight:600;color:var(--text)}.sp-close{background:none;border:none;color:var(--text-muted);font-size:18px;cursor:pointer;padding:4px;line-height:1}.sp-close:hover{color:var(--text)}.sp-content{padding:16px 20px}.sp-section{margin-bottom:16px}.sp-label{display:block;font-size:12px;font-weight:500;color:var(--text-muted);margin-bottom:8px;text-transform:uppercase;letter-spacing:.5px}.sp-input,.sp-select{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--text);font-size:14px;box-sizing:border-box}.sp-input:focus,.sp-select:focus{outline:none;border-color:var(--accent)}.sp-select{cursor:pointer}.sp-info{background:#6495ed1a;border:1px solid rgba(100,149,237,.3);border-radius:6px;padding:12px;margin-bottom:16px}.sp-info p{margin:0 0 8px;font-size:13px;color:var(--text-muted)}.sp-info p:last-child{margin-bottom:0}.sp-info .sp-note{font-style:italic;color:#6495edcc}.sp-error{background:#f443361a;border:1px solid rgba(244,67,54,.3);color:#f44336;padding:10px 12px;border-radius:6px;font-size:13px;margin-bottom:16px}.sp-actions{display:flex;gap:12px;margin-top:20px;padding-top:16px;border-top:1px solid var(--border)}.sp-btn{flex:1;padding:10px 20px;border:none;border-radius:6px;font-size:14px;font-weight:500;cursor:pointer;transition:all .15s ease}.sp-btn.cancel{background:var(--bg);color:var(--text-muted);border:1px solid var(--border)}.sp-btn.cancel:hover{background:var(--surface);color:var(--text)}.sp-btn.confirm{background:var(--accent);color:#fff}.sp-btn.confirm:hover:not(:disabled){filter:brightness(1.1)}.sp-btn.confirm:disabled{opacity:.5;cursor:not-allowed}.sweep-panel-backdrop{position:fixed;inset:0;background:transparent;display:flex;justify-content:flex-end;align-items:flex-start;padding:80px 20px 20px;z-index:9999;pointer-events:none}.sweep-panel{background:#0f1219f2;border-radius:12px;box-shadow:0 8px 32px #0000004d;min-width:340px;max-width:420px;border:1px solid var(--border);pointer-events:auto}.swp-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid var(--border)}.swp-header h3{margin:0;font-size:16px;font-weight:600;color:var(--text)}.swp-close{background:none;border:none;color:var(--text-muted);font-size:18px;cursor:pointer;padding:4px;line-height:1}.swp-close:hover{color:var(--text)}.swp-content{padding:16px 20px}.swp-section{margin-bottom:16px}.swp-label{display:block;font-size:12px;font-weight:500;color:var(--text-muted);margin-bottom:8px;text-transform:uppercase;letter-spacing:.5px}.swp-select{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--text);font-size:14px;box-sizing:border-box;cursor:pointer}.swp-select:focus{outline:none;border-color:var(--accent)}.swp-warning{display:block;color:#ff9800;font-size:12px;margin-top:4px}.swp-op-btns{display:flex;gap:8px}.swp-op-btn{flex:1;padding:10px 16px;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--text-muted);font-size:13px;cursor:pointer;transition:all .15s ease}.swp-op-btn:hover{background:var(--surface);color:var(--text)}.swp-op-btn.add.active{background:#4caf5026;border-color:#4caf50;color:#4caf50}.swp-op-btn.cut.active{background:#f4433626;border-color:#f44336;color:#f44336}.swp-error{background:#f443361a;border:1px solid rgba(244,67,54,.3);color:#f44336;padding:10px 12px;border-radius:6px;font-size:13px;margin-bottom:16px}.swp-actions{display:flex;gap:12px;margin-top:20px;padding-top:16px;border-top:1px solid var(--border)}.swp-btn{flex:1;padding:10px 20px;border:none;border-radius:6px;font-size:14px;font-weight:500;cursor:pointer;transition:all .15s ease}.swp-btn.cancel{background:var(--bg);color:var(--text-muted);border:1px solid var(--border)}.swp-btn.cancel:hover{background:var(--surface);color:var(--text)}.swp-btn.confirm{background:var(--accent);color:#fff}.swp-btn.confirm:hover:not(:disabled){filter:brightness(1.1)}.swp-btn.confirm:disabled{opacity:.5;cursor:not-allowed}.loft-panel-backdrop{position:fixed;inset:0;background:transparent;display:flex;justify-content:flex-end;align-items:flex-start;padding:80px 20px 20px;z-index:9999;pointer-events:none}.loft-panel{background:#0f1219f2;border-radius:12px;box-shadow:0 8px 32px #0000004d;min-width:360px;max-width:450px;border:1px solid var(--border);pointer-events:auto}.lp-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid var(--border)}.lp-header h3{margin:0;font-size:16px;font-weight:600;color:var(--text)}.lp-close{background:none;border:none;color:var(--text-muted);font-size:18px;cursor:pointer;padding:4px;line-height:1}.lp-close:hover{color:var(--text)}.lp-content{padding:16px 20px}.lp-section{margin-bottom:16px}.lp-label{display:block;font-size:12px;font-weight:500;color:var(--text-muted);margin-bottom:8px;text-transform:uppercase;letter-spacing:.5px}.lp-sketch-list{border:1px solid var(--border);border-radius:6px;background:var(--bg);max-height:180px;overflow-y:auto;margin-bottom:8px}.lp-empty{padding:16px;text-align:center;color:var(--text-muted);font-size:13px}.lp-sketch-item{display:flex;align-items:center;padding:8px 12px;border-bottom:1px solid var(--border)}.lp-sketch-item:last-child{border-bottom:none}.lp-sketch-num{width:24px;height:24px;background:var(--accent);color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;margin-right:10px}.lp-sketch-name{flex:1;color:var(--text);font-size:14px}.lp-sketch-actions{display:flex;gap:4px}.lp-sketch-actions button{width:24px;height:24px;border:none;background:var(--surface);color:var(--text-muted);border-radius:4px;cursor:pointer;font-size:12px;display:flex;align-items:center;justify-content:center}.lp-sketch-actions button:hover:not(:disabled){background:var(--border);color:var(--text)}.lp-sketch-actions button:disabled{opacity:.3;cursor:not-allowed}.lp-add-select{width:100%;padding:8px 12px;border:1px dashed var(--border);border-radius:6px;background:transparent;color:var(--text-muted);font-size:13px;cursor:pointer}.lp-add-select:hover{border-color:var(--accent);color:var(--accent)}.lp-options{display:flex;flex-direction:column;gap:8px}.lp-checkbox{display:flex;align-items:center;gap:8px;cursor:pointer;color:var(--text);font-size:14px}.lp-checkbox input{width:16px;height:16px;cursor:pointer}.lp-select{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--text);font-size:14px;box-sizing:border-box;cursor:pointer}.lp-select:focus{outline:none;border-color:var(--accent)}.lp-op-btns{display:flex;gap:8px}.lp-op-btn{flex:1;padding:10px 16px;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--text-muted);font-size:13px;cursor:pointer;transition:all .15s ease}.lp-op-btn:hover{background:var(--surface);color:var(--text)}.lp-op-btn.add.active{background:#4caf5026;border-color:#4caf50;color:#4caf50}.lp-op-btn.cut.active{background:#f4433626;border-color:#f44336;color:#f44336}.lp-error{background:#f443361a;border:1px solid rgba(244,67,54,.3);color:#f44336;padding:10px 12px;border-radius:6px;font-size:13px;margin-bottom:16px}.lp-actions{display:flex;gap:12px;margin-top:20px;padding-top:16px;border-top:1px solid var(--border)}.lp-btn{flex:1;padding:10px 20px;border:none;border-radius:6px;font-size:14px;font-weight:500;cursor:pointer;transition:all .15s ease}.lp-btn.cancel{background:var(--bg);color:var(--text-muted);border:1px solid var(--border)}.lp-btn.cancel:hover{background:var(--surface);color:var(--text)}.lp-btn.confirm{background:var(--accent);color:#fff}.lp-btn.confirm:hover:not(:disabled){filter:brightness(1.1)}.lp-btn.confirm:disabled{opacity:.5;cursor:not-allowed}.draft-panel-backdrop{position:fixed;inset:0;background:transparent;display:flex;justify-content:flex-end;align-items:flex-start;padding:80px 20px 20px;z-index:9999;pointer-events:none}.draft-panel{background:#0f1219f2;border-radius:12px;box-shadow:0 8px 32px #0000004d;min-width:320px;max-width:400px;border:1px solid var(--border);pointer-events:auto}.dp-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid var(--border)}.dp-header h3{margin:0;font-size:16px;font-weight:600;color:var(--text)}.dp-close{background:none;border:none;color:var(--text-muted);font-size:18px;cursor:pointer;padding:4px;line-height:1}.dp-close:hover{color:var(--text)}.dp-content{padding:16px 20px}.dp-section{margin-bottom:16px}.dp-label{display:block;font-size:12px;font-weight:500;color:var(--text-muted);margin-bottom:8px;text-transform:uppercase;letter-spacing:.5px}.dp-input,.dp-select{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--text);font-size:14px;box-sizing:border-box}.dp-input:focus,.dp-select:focus{outline:none;border-color:var(--accent)}.dp-select{cursor:pointer}.dp-angle-presets{display:flex;gap:6px;margin-top:8px}.dp-angle-presets button{flex:1;padding:6px;border:1px solid var(--border);border-radius:4px;background:var(--bg);color:var(--text-muted);font-size:11px;cursor:pointer;transition:all .15s ease}.dp-angle-presets button:hover{background:var(--surface);color:var(--text);border-color:var(--accent)}.dp-dir-btns{display:flex;gap:8px}.dp-dir-btn{flex:1;padding:10px 16px;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--text-muted);font-size:13px;cursor:pointer;transition:all .15s ease}.dp-dir-btn:hover{background:var(--surface);color:var(--text)}.dp-dir-btn.active{background:var(--accent);border-color:var(--accent);color:#fff}.dp-info{background:#6495ed1a;border:1px solid rgba(100,149,237,.3);border-radius:6px;padding:12px;margin-bottom:16px}.dp-info p{margin:0 0 8px;font-size:13px;color:var(--text-muted)}.dp-info p:last-child{margin-bottom:0}.dp-info .dp-note{font-style:italic;color:#6495edcc}.dp-error{background:#f443361a;border:1px solid rgba(244,67,54,.3);color:#f44336;padding:10px 12px;border-radius:6px;font-size:13px;margin-bottom:16px}.dp-actions{display:flex;gap:12px;margin-top:20px;padding-top:16px;border-top:1px solid var(--border)}.dp-btn{flex:1;padding:10px 20px;border:none;border-radius:6px;font-size:14px;font-weight:500;cursor:pointer;transition:all .15s ease}.dp-btn.cancel{background:var(--bg);color:var(--text-muted);border:1px solid var(--border)}.dp-btn.cancel:hover{background:var(--surface);color:var(--text)}.dp-btn.confirm{background:var(--accent);color:#fff}.dp-btn.confirm:hover:not(:disabled){filter:brightness(1.1)}.dp-btn.confirm:disabled{opacity:.5;cursor:not-allowed}.multi-cut-modal-overlay{position:fixed;inset:0;z-index:10000;display:flex;align-items:center;justify-content:center;padding:16px;box-sizing:border-box;background:#0009;backdrop-filter:blur(4px)}.multi-cut-modal{width:min(520px,92vw);max-height:calc(100vh - 32px);overflow-y:auto;padding:24px;border-radius:8px;border:1px solid rgba(255,255,255,.1);background:#1e1e2e;box-shadow:0 20px 60px #00000080}.multi-cut-modal-header{margin-bottom:14px}.multi-cut-modal-title{margin:0 0 6px;color:#fff;font-size:20px;font-weight:600}.multi-cut-modal-subtitle{margin:0;color:#ffffffad;font-size:13px;line-height:1.5}.multi-cut-modal-summary{display:flex;gap:8px;margin-bottom:16px;color:#ffffffb8;font-size:12px;font-weight:600}.multi-cut-modal-summary span{padding:4px 10px;border-radius:8px;border:1px solid rgba(255,255,255,.1);background:#ffffff0d}.multi-cut-modal-list{display:flex;flex-direction:column;gap:8px}.multi-cut-modal-option{display:flex;align-items:flex-start;gap:12px;padding:12px 14px;border-radius:8px;border:1px solid rgba(255,255,255,.08);background:#ffffff08;cursor:pointer;transition:border-color .2s ease,background .2s ease}.multi-cut-modal-option:hover{background:#ffffff0f;border-color:#ffffff29}.multi-cut-modal-option.is-selected{background:#2563eb29;border-color:#3b82f68c}.multi-cut-modal-option input{margin-top:2px}.multi-cut-modal-option-copy{display:flex;flex-direction:column;min-width:0}.multi-cut-modal-option-name{color:#fff;font-size:14px;font-weight:600;word-break:break-word}.multi-cut-modal-option-meta{margin-top:2px;color:#ffffff9e;font-size:12px}.multi-cut-modal-checkbox{display:flex;align-items:center;gap:10px;margin-top:16px;color:#ffffffd1;font-size:13px}.multi-cut-progress{margin-top:16px;padding:12px;border-radius:8px;border:1px solid rgba(255,255,255,.08);background:#ffffff0a}.multi-cut-progress-row{display:flex;justify-content:space-between;gap:12px;color:#ffffffc7;font-size:12px}.multi-cut-progress-track{height:6px;margin-top:10px;overflow:hidden;border-radius:6px;background:#ffffff1f}.multi-cut-progress-bar{height:100%;border-radius:inherit;background:#3b82f6;transition:width .2s ease}.multi-cut-progress-current{margin-top:8px;color:#ffffff94;font-size:12px;word-break:break-word}.multi-cut-modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.multi-cut-modal-btn{min-width:96px;border:none;border-radius:8px;padding:11px 16px;font-size:13px;font-weight:600;cursor:pointer;transition:background .2s ease,opacity .2s ease}.multi-cut-modal-btn:disabled{opacity:.45;cursor:not-allowed}.multi-cut-modal-btn.primary{background:#2563eb;color:#fff}.multi-cut-modal-btn.primary:hover:not(:disabled){background:#1d4ed8}.multi-cut-modal-btn.secondary{background:#ffffff1a;color:#ffffffdb}.multi-cut-modal-btn.secondary:hover{background:#ffffff26}.animate-spin{animation:spin 1s linear infinite}.toolbar{display:flex;flex-wrap:nowrap;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-xs) var(--spacing-md);background:var(--surface-panel);border-bottom:1px solid var(--border-subtle);min-height:44px;max-height:44px;position:relative;z-index:50;overflow-x:auto;overflow-y:hidden;flex-shrink:0}.toolbar-section{display:flex;align-items:center;gap:2px;padding:2px var(--spacing-xs);background:transparent;border:none}.toolbar-label{font-size:7px;font-weight:var(--font-weight-semibold);text-transform:uppercase;letter-spacing:.5px;color:var(--text-disabled);padding:0 2px;white-space:nowrap}.toolbar-section>div{display:flex;align-items:center;gap:var(--spacing-xs)}.toolbar-btn{display:flex;flex-direction:row;align-items:center;justify-content:center;gap:4px;padding:4px 8px;min-width:auto;background:transparent;border:1px solid transparent;border-radius:var(--radius-md);color:var(--text-secondary);font-size:9px;font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--transition-fast);position:relative}.toolbar-btn svg{width:16px;height:16px}.toolbar-btn span{font-size:10px;white-space:nowrap}.toolbar-btn:hover:not(:disabled){background:var(--surface-control-hover);border-color:var(--border-default);color:var(--text-primary)}.toolbar-btn:active:not(:disabled){transform:scale(.96)}.toolbar-btn:disabled{opacity:.35;cursor:not-allowed}.toolbar-btn-primary{background:transparent;border-color:var(--border-subtle);color:var(--text-secondary)}.toolbar-btn-primary:hover:not(:disabled){background:var(--bg-hover);border-color:var(--accent-primary);color:var(--accent-primary)}.toolbar-btn-electronics{background:#14b8a61f;border-color:#2dd4bf52;color:#5eead4}.toolbar-btn-electronics:hover:not(:disabled){background:#14b8a638;border-color:#5eead4;color:#ccfbf1;box-shadow:0 0 8px #2dd4bf3d}.toolbar-divider{width:1px;height:48px;background:linear-gradient(180deg,transparent,var(--border-strong),transparent);margin:0 var(--spacing-xs)}.toolbar-status{margin-left:auto;font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);color:var(--accent-primary);padding:var(--spacing-xs) var(--spacing-md);background:var(--accent-primary-dim);border:1px solid var(--border-glow);border-radius:var(--radius-full)}.toolbar-export-status{font-size:9px;font-weight:var(--font-weight-medium);color:var(--text-muted);background:var(--surface-control);border:1px solid var(--border-default);border-radius:var(--radius-full);padding:2px 8px;white-space:nowrap}.toolbar-export-cta{margin-left:6px;padding:2px 8px;background:#3b82f62e;border:1px solid rgba(59,130,246,.45);border-radius:var(--radius-full);color:#dbeafe;font-size:9px;font-weight:600;cursor:pointer;transition:all .2s ease}.toolbar-export-cta:hover{background:#3b82f64d;border-color:#3b82f6b3}.toolbar-btn-active{background:#10b98126!important;border-color:var(--accent-edge)!important;color:var(--accent-edge)!important}.toolbar-btn-active:hover:not(:disabled){background:#10b98140!important}.toolbar-input{padding:var(--spacing-xs) var(--spacing-sm);background:var(--surface-input);border:1px solid var(--border-default);border-radius:var(--radius-md);color:var(--text-primary);font-size:var(--font-size-sm);font-family:var(--font-mono);width:50px;text-align:center;transition:all var(--transition-fast)}.toolbar-input:focus{outline:none;border-color:var(--accent-primary);box-shadow:0 0 0 2px var(--accent-primary-dim)}.toolbar-btn-sketch{background:var(--accent-sketch-dim);border-color:#8b5cf64d;color:var(--accent-sketch)}.toolbar-btn-sketch:hover:not(:disabled){background:#8b5cf633;border-color:var(--accent-sketch);color:var(--accent-sketch);box-shadow:0 0 8px #8b5cf64d}.toolbar-btn-feature{background:#f59e0b1a;border-color:#f59e0b4d;color:#f59e0b}.toolbar-btn-feature:hover:not(:disabled){background:#f59e0b33;border-color:#f59e0b;color:#fbbf24;box-shadow:0 0 8px #f59e0b4d}.sketch-active-badge{font-size:9px;font-weight:var(--font-weight-medium);color:var(--accent-sketch);background:#a855f726;padding:2px var(--spacing-sm);border-radius:var(--radius-full);border:1px solid rgba(168,85,247,.3)}.toolbar-btn-boolean{background:var(--accent-boolean-dim);border-color:#ec48994d;color:var(--accent-boolean)}.toolbar-btn-boolean:hover:not(:disabled){background:#ec489933;border-color:var(--accent-boolean);color:var(--accent-boolean);box-shadow:0 0 8px #ec48994d}.toolbar-btn-primitive{background:var(--accent-primitive-dim);border-color:#f59e0b4d;color:var(--accent-primitive)}.toolbar-btn-primitive:hover:not(:disabled){background:#f59e0b33;border-color:var(--accent-primitive);color:var(--accent-primitive);box-shadow:0 0 8px #f59e0b4d}.toolbar-btn-loading{pointer-events:none}.toolbar-btn-measure{background:#00d9ff1a;border-color:#00d9ff4d;color:#00d9ff}.toolbar-btn-measure:hover:not(:disabled){background:#00d9ff33;border-color:#00d9ff;color:#00d9ff;box-shadow:0 0 8px #00d9ff4d}.toolbar-btn:disabled,.toolbar-btn-sketch:disabled,.toolbar-btn-feature:disabled,.toolbar-btn-boolean:disabled,.toolbar-btn-primitive:disabled,.toolbar-btn-measure:disabled,.toolbar-btn-electronics:disabled{color:var(--text-disabled);background:transparent;border-color:transparent;box-shadow:none}[data-theme=light] .toolbar-btn:disabled{opacity:.58}.object-list{display:flex;flex-direction:column;width:187px;min-width:155px;background:var(--surface-panel);border-right:1px solid var(--border-subtle);overflow:hidden}.object-list-header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-sm) var(--spacing-md);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);background:var(--surface-panel-muted);border-bottom:1px solid var(--border-subtle)}.object-count{background:var(--accent-primary-dim);color:var(--accent-primary);padding:2px 6px;border-radius:var(--radius-full);font-size:9px;font-weight:var(--font-weight-semibold)}.object-list-items{flex:1;overflow-y:auto;padding:var(--spacing-xs)}.object-list-empty{padding:var(--spacing-xl) var(--spacing-md);text-align:center;color:var(--text-muted);font-size:var(--font-size-sm);line-height:1.6}.hint{font-size:var(--font-size-xs);color:var(--text-disabled);margin-top:var(--spacing-sm)}.object-item{display:flex;align-items:center;gap:var(--spacing-sm);min-width:0;padding:6px var(--spacing-sm);margin-bottom:1px;background:transparent;border:1px solid transparent;border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast);position:relative;margin-left:8px}.tree-node-group{display:block}.tree-toggle{width:16px;height:16px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border-default);background:var(--surface-control);color:var(--text-muted);font-size:10px;border-radius:var(--radius-sm);cursor:pointer;padding:0;flex-shrink:0}.tree-toggle:hover{background:var(--surface-control-hover);color:var(--text-primary)}.tree-toggle.spacer{border:none;background:transparent;cursor:default;visibility:hidden}.child-item{margin-left:24px}.object-item:before{content:"";position:absolute;left:-8px;top:50%;width:8px;height:1px;background:#ffffff26}.object-item:after{content:"";position:absolute;left:-8px;top:0;bottom:0;width:1px;background:#ffffff1a}.object-item:first-child:after{top:50%}.object-item:last-child:after{bottom:50%}.object-item:only-child:after{display:none}.object-item:hover{background:var(--bg-hover)}.object-group-item{background:var(--surface-panel-muted);border-color:var(--border-subtle);cursor:default}.object-group-item:hover{background:var(--bg-hover)}.object-group-icon{box-shadow:0 0 12px #7dd3fc1f}.object-group-meta{font-size:9px;color:var(--text-disabled);background:var(--surface-control);padding:1px 5px;border-radius:var(--radius-full);flex-shrink:0;max-width:48px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.object-item.selected{background:var(--accent-primary-dim);border-color:var(--border-glow)}.object-item.selected .object-name{color:var(--accent-primary)}.object-icon{width:20px;height:20px;display:flex;align-items:center;justify-content:center;background:var(--surface-control);border:1px solid var(--border-default);border-radius:var(--radius-sm);flex-shrink:0;color:var(--text-secondary);box-shadow:inset 0 1px 0 var(--border-subtle)}.object-icon svg{width:13px;height:13px;stroke-width:2.25}.object-icon-cad{color:#a9b8c8;background:linear-gradient(180deg,#94a3b824,#47556914);border-color:#94a3b82e}.object-icon-feature{color:#f6c65b;background:linear-gradient(180deg,#f59e0b29,#78350f14);border-color:#f59e0b40}.object-icon-sketch{color:#c4b5fd;background:linear-gradient(180deg,#8b5cf62e,#4c1d951a);border-color:#a78bfa47}.object-icon-import,.object-icon-group{color:#93c5fd;background:linear-gradient(180deg,#3b82f62e,#1e40af14);border-color:#60a5fa47}.object-icon-board{color:#86efac;background:linear-gradient(180deg,#22c55e33,#15803d14);border-color:#4ade804d}.object-icon-component{color:#a5b4fc;background:linear-gradient(180deg,#6366f12e,#312e8114);border-color:#818cf847}.object-icon-connector{color:#67e8f9;background:linear-gradient(180deg,#06b6d42e,#155e7514);border-color:#67e8f94d}.object-icon-copper{color:#facc15;background:linear-gradient(180deg,#eab30833,#713f1214);border-color:#facc1552}.object-icon-mount{color:#fbbf24;background:linear-gradient(180deg,#fbbf2429,#92400e14);border-color:#fbbf2447}.object-icon-thermal{color:#fb7185;background:linear-gradient(180deg,#f43f5e2e,#88133714);border-color:#fb71854d}.object-icon-guide,.object-icon-ink{color:#d8e1ea;background:linear-gradient(180deg,#e2e8f01f,#47556914);border-color:#e2e8f02e}.object-name{flex:1;min-width:0;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.object-rename-input{flex:1;min-width:0;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--text-primary);padding:2px 6px;border-radius:var(--radius-sm);border:1px solid rgba(255,255,255,.15);background:#00000059}.object-rename-input:focus{outline:none;border-color:#00d9ff80;box-shadow:0 0 0 1px #00d9ff40}.object-delete{opacity:0;width:18px;height:18px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;border-radius:var(--radius-sm);color:var(--text-muted);font-size:12px;cursor:pointer;transition:all var(--transition-fast);flex-shrink:0}.object-item:hover .object-delete{opacity:1}.object-delete:hover{color:var(--error);background:#ef44441a}.object-list-footer{padding:var(--spacing-xs) var(--spacing-md);border-top:1px solid rgba(255,255,255,.06);text-align:center;font-size:9px;color:var(--text-disabled)}.object-list-items::-webkit-scrollbar{width:4px}.object-list-items::-webkit-scrollbar-track{background:transparent}.object-list-items::-webkit-scrollbar-thumb{background:#ffffff26;border-radius:var(--radius-full)}.object-list-items::-webkit-scrollbar-thumb:hover{background:#ffffff40}.object-list.collapsed{width:32px;min-width:32px;max-width:32px;padding-top:var(--spacing-md)}.header-right{display:flex;align-items:center;gap:var(--spacing-sm)}.collapse-toggle{width:18px;height:18px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;color:var(--text-muted);font-size:10px;cursor:pointer;border-radius:var(--radius-sm);transition:all var(--transition-fast)}.collapse-toggle:hover{color:var(--accent-primary);background:#ffffff0d}.object-item.hidden-object{opacity:.4}.object-item.hidden-object .object-name{font-style:italic;color:var(--text-disabled)}.object-list-section-header{font-size:9px;font-weight:var(--font-weight-semibold);text-transform:uppercase;letter-spacing:.5px;color:var(--text-disabled);padding:var(--spacing-sm) var(--spacing-sm);margin-top:var(--spacing-xs);border-bottom:1px solid rgba(255,255,255,.05)}.object-list-section-header:first-child{margin-top:0}.sketch-item{border-left:2px solid rgba(139,92,246,.3);margin-left:0}.sketch-item.child-item{margin-left:24px}.sketch-item:before,.sketch-item:after{display:none}.sketch-item:hover{border-left-color:#8b5cf699;background:#8b5cf614}.sketch-item.active-sketch{background:#8b5cf626;border-left-color:var(--accent-sketch)}.sketch-item.active-sketch .object-name{color:var(--accent-sketch)}.sketch-role{font-size:8px;text-transform:uppercase;letter-spacing:.4px;color:var(--text-disabled);background:#ffffff0f;padding:1px 5px;border-radius:var(--radius-sm);flex-shrink:0}.sketch-entity-count{font-size:9px;color:var(--text-disabled);background:#ffffff0d;padding:1px 5px;border-radius:var(--radius-full)}.editing-badge{font-size:8px;font-weight:var(--font-weight-semibold);text-transform:uppercase;color:var(--accent-sketch);background:#8b5cf633;padding:2px 6px;border-radius:var(--radius-sm);animation:pulse 2s infinite}.assembly-panel{display:flex;flex-direction:column;width:187px;min-width:155px;background:linear-gradient(180deg,#1a1f28,#13171e);border-right:1px solid rgba(255,255,255,.06);overflow:hidden}[data-theme=light] .assembly-panel{--text-primary: #e5edf7;--text-secondary: #cbd5e1;--text-muted: #94a3b8;--text-disabled: #64748b}.assembly-panel-header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-sm) var(--spacing-md);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);background:#ffffff05;border-bottom:1px solid rgba(255,255,255,.06)}.assembly-count{background:#22c55e26;color:#86efac;padding:2px 6px;border-radius:var(--radius-full);font-size:9px;font-weight:var(--font-weight-semibold)}.assembly-panel-items{flex:1;overflow-y:auto;padding:var(--spacing-xs)}.assembly-panel-section-title{margin:var(--spacing-sm) var(--spacing-sm) var(--spacing-xs);font-size:10px;text-transform:uppercase;letter-spacing:.6px;color:var(--text-disabled)}.assembly-panel-section-title-toggle{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-xs)}.assembly-view-mode{margin:4px 4px 8px;padding:8px;border:1px solid rgba(96,165,250,.22);border-radius:var(--radius-sm);background:#3b82f612}.assembly-view-toggle{display:flex;align-items:flex-start;gap:7px;color:var(--text-primary);cursor:pointer;user-select:none}.assembly-view-toggle input{width:13px;height:13px;margin-top:1px;accent-color:#60a5fa}.assembly-view-toggle span{display:flex;flex-direction:column;gap:2px}.assembly-view-toggle strong{font-size:11px;font-weight:600}.assembly-view-toggle small,.assembly-view-note{color:var(--text-muted);font-size:9px;line-height:1.35}.assembly-view-note{margin:6px 0 0 20px;color:#93c5fd}.assembly-connector-visibility{margin:0 8px 8px}.assembly-connector-toggle{display:flex;align-items:center;gap:6px;font-size:10px;color:var(--text-muted);cursor:pointer;user-select:none}.assembly-connector-toggle input{width:12px;height:12px;accent-color:#60a5fa}.assembly-topology-status{margin:0 8px 8px;padding:6px 8px;border-radius:var(--radius-sm);border:1px solid rgba(56,189,248,.35);background:#38bdf814;color:#bae6fd;font-size:10px;line-height:1.35}.assembly-topology-status.warning{border-color:#f8717166;background:#f871711a;color:#fecaca}.assembly-empty{padding:var(--spacing-xl) var(--spacing-md);text-align:center;color:var(--text-muted);font-size:var(--font-size-sm);line-height:1.6}.assembly-empty-constraints{padding-top:var(--spacing-md)}.assembly-hint{font-size:var(--font-size-xs);color:var(--text-disabled);margin-top:var(--spacing-sm)}.assembly-item{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-sm);padding:6px var(--spacing-sm);margin-bottom:2px;border-radius:var(--radius-sm);background:#ffffff05;border:1px solid transparent;color:var(--text-primary);cursor:grab;user-select:none;transition:all var(--transition-fast)}.assembly-item:hover{border-color:#60a5fa80;background:#60a5fa14}.assembly-item.grounded{border-color:#22c55e59;background:#22c55e14}.assembly-component-group{margin:0 0 6px;padding:4px;border-radius:var(--radius-sm);border:1px solid rgba(96,165,250,.18);background:#60a5fa0a}.assembly-component-title{display:flex;align-items:center;justify-content:space-between;padding:2px 4px 5px;font-size:10px;color:#bfdbfe;text-transform:uppercase;letter-spacing:.4px}.assembly-component-title span:last-child{color:var(--text-disabled)}.assembly-item-name{font-size:var(--font-size-sm);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100px}.assembly-contact{display:flex;flex-direction:column;gap:7px;margin:0 4px 10px;padding:8px;border:1px solid rgba(148,163,184,.22);border-radius:var(--radius-sm);background:#0f172a}.assembly-contact-header,.assembly-contact-result-title{display:flex;align-items:center;justify-content:space-between;gap:6px}.assembly-contact-header>div{display:grid;gap:1px;min-width:0}.assembly-contact-header span,.assembly-contact-summary,.assembly-contact-empty,.assembly-contact-result-metric{color:#94a3b8;font-size:9px;line-height:1.35}.assembly-contact-header strong{color:#e2e8f0;font-size:11px;text-transform:capitalize}.assembly-contact-status{max-width:72px;padding:2px 6px;border:1px solid rgba(148,163,184,.3);border-radius:999px;color:#cbd5e1;font-size:8px;font-weight:800;letter-spacing:.35px;text-transform:uppercase;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.assembly-contact-status.clear,.assembly-contact-status.near,.assembly-contact-status.interference{border-color:#2563ebb8;background:#2563eb29;color:#bfdbfe}.assembly-contact-check{display:flex;align-items:center;justify-content:center;gap:6px;width:100%;min-height:28px;padding:5px 7px;border:1px solid #2563eb;border-radius:5px;background:#2563eb29;color:#dbeafe;font-size:10px;font-weight:700;cursor:pointer}.assembly-contact-check:hover:not(:disabled){background:#2563eb47}.assembly-contact-check:disabled{cursor:not-allowed;opacity:.55}.assembly-contact-spinner{width:11px;height:11px;border:2px solid rgba(219,234,254,.35);border-top-color:#dbeafe;border-radius:999px;animation:assembly-contact-spin .75s linear infinite}@keyframes assembly-contact-spin{to{transform:rotate(360deg)}}.assembly-contact-results{display:flex;flex-direction:column;gap:5px}.assembly-contact-result,.assembly-contact-empty{padding:6px;border:1px solid rgba(148,163,184,.2);border-radius:5px;background:#0f172ab8}.assembly-contact-result.near,.assembly-contact-result.interference{border-color:#2563ebad}.assembly-contact-result-title span{min-width:0;color:#e2e8f0;font-size:9px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.assembly-contact-result-title strong{flex:none;color:#93c5fd;font-size:8px;font-weight:800;text-transform:uppercase}.assembly-contact-summary{text-align:right}.ground-toggle{font-size:10px;padding:2px 6px;border-radius:999px;border:1px solid rgba(255,255,255,.1);background:#ffffff0a;color:var(--text-muted);cursor:pointer}.ground-toggle.active{border-color:#22c55e99;background:#22c55e26;color:#bbf7d0}.ground-toggle:hover{color:var(--text-primary);border-color:#ffffff40}.mate-builder{margin:0 4px 10px;padding:8px;border-radius:var(--radius-sm);border:1px solid rgba(255,255,255,.05);background:#0f172a99;display:flex;flex-direction:column;gap:8px}.mate-builder-row{display:flex;flex-direction:column;gap:4px;font-size:10px}.mate-label{color:var(--text-disabled);text-transform:uppercase;letter-spacing:.4px}.mate-select{width:100%;font-size:11px;padding:4px 6px;border-radius:var(--radius-sm);border:1px solid rgba(148,163,184,.35);background:#1e2a3a;color:#e6edf7;color-scheme:dark}.mate-select option{color:#e6edf7;background:#243246}.mate-select option:disabled{color:#93a4ba}.mate-input{width:100%;font-size:11px;padding:4px 6px;border-radius:var(--radius-sm);border:1px solid rgba(255,255,255,.1);background:#ffffff0a;color:var(--text-primary)}.mate-selected{display:flex;align-items:center;gap:6px;font-size:10px;color:var(--text-muted)}.mate-selected span{max-width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mate-arrow{color:var(--text-disabled)}.mate-builder-actions{display:flex;gap:6px}.mate-apply,.mate-cancel{flex:1;font-size:10px;padding:4px 6px;border-radius:999px;border:1px solid rgba(255,255,255,.1);background:#ffffff0a;color:var(--text-muted);cursor:pointer;transition:all var(--transition-fast)}.mate-apply:disabled,.mate-cancel:disabled{opacity:.5;cursor:not-allowed}.mate-apply:hover:not(:disabled),.mate-cancel:hover:not(:disabled){color:var(--text-primary);border-color:#ffffff4d}.constraint-item{display:flex;flex-direction:column;gap:6px;padding:8px;margin:0 4px 6px;border-radius:var(--radius-sm);background:#ffffff08;border:1px solid rgba(255,255,255,.05);transition:border-color var(--transition-fast),background var(--transition-fast)}.named-connector-item{display:flex;flex-direction:column;gap:6px;padding:8px;margin:0 4px 6px;border-radius:var(--radius-sm);background:#ffffff08;border:1px solid rgba(96,165,250,.25)}.named-connector-title{font-size:10px;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.named-connector-actions{display:flex;gap:6px}.joint-pose-list{display:flex;flex-direction:column;gap:6px;margin:0 4px 8px}.joint-pose-item{display:flex;flex-direction:column;gap:6px;padding:8px;border-radius:var(--radius-sm);border:1px solid rgba(56,189,248,.22);background:#08122094}.joint-pose-item.disabled{opacity:.6}.joint-pose-title,.joint-pose-row,.joint-pose-actions{display:flex;align-items:center;gap:6px}.joint-pose-title{justify-content:space-between;font-size:11px;color:var(--text-primary)}.joint-pose-title span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.joint-pose-title span:last-child{flex:none;color:#7dd3fc;font-size:10px}.joint-pose-refs{display:flex;align-items:center;gap:5px;color:var(--text-disabled);font-size:9px}.joint-pose-refs span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.joint-pose-param{color:#bfdbfe;font-size:10px}.joint-pose-range{width:100%;accent-color:#38bdf8}.joint-pose-row{justify-content:space-between;color:var(--text-disabled);font-size:9px}.joint-pose-input{width:56px;flex:none;font-size:10px;padding:3px 5px;border-radius:var(--radius-sm);border:1px solid rgba(125,211,252,.28);background:#ffffff0a;color:var(--text-primary)}.joint-pose-actions{flex-wrap:wrap}.constraint-item.constraint-ok{border-color:#22c55e66}.constraint-item.constraint-warn{border-color:#eab30866}.constraint-item.constraint-bad{border-color:#f8717166}.constraint-item.disabled{opacity:.6}.constraint-main{display:flex;flex-direction:column;gap:4px}.constraint-title{font-size:11px;font-weight:var(--font-weight-semibold);color:var(--text-primary)}.constraint-type{font-size:10px;font-weight:var(--font-weight-regular);color:var(--text-muted);margin-left:4px;text-transform:uppercase;letter-spacing:.4px}.constraint-refs{display:flex;align-items:center;gap:6px;font-size:10px;color:var(--text-muted)}.constraint-ref{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.constraint-arrow{color:var(--text-disabled)}.constraint-meta{display:flex;gap:8px;font-size:10px;color:var(--text-muted);flex-wrap:wrap}.constraint-metric{padding:2px 6px;border-radius:999px;background:#ffffff0f}.constraint-axis-actions{display:flex;gap:6px;flex-wrap:wrap}.constraint-editor{display:flex;flex-direction:column;gap:6px;padding:8px;border-radius:var(--radius-sm);border:1px solid rgba(96,165,250,.2);background:#0f172a8c}.constraint-editor-row{display:flex;flex-direction:column;gap:4px;font-size:10px}.constraint-actions{display:flex;gap:6px;flex-wrap:wrap}.constraint-actions-compact{justify-content:flex-start}.constraint-toggle,.constraint-delete,.assembly-solve{font-size:10px;padding:4px 8px;border-radius:999px;border:1px solid rgba(255,255,255,.1);background:#ffffff0a;color:var(--text-muted);cursor:pointer;transition:all var(--transition-fast)}.constraint-toggle.active{border-color:#22c55e80;color:#bbf7d0;background:#22c55e26}.constraint-delete{border-color:#f8717166;color:#fecaca}.constraint-toggle:hover,.constraint-delete:hover,.assembly-solve:hover{color:var(--text-primary);border-color:#ffffff4d}.constraint-toggle:disabled{opacity:.5;cursor:not-allowed}.assembly-solve-summary{margin:0 4px 8px;padding:6px 8px;border-radius:var(--radius-sm);border:1px solid rgba(34,197,94,.25);background:#22c55e14;color:#bbf7d0;font-size:10px;line-height:1.35}.assembly-solve-summary.warning{border-color:#eab30859;background:#eab30814;color:#fde68a}.assembly-solve-summary.error{border-color:#ef444473;background:#ef44441a;color:#fecaca}.assembly-solve{margin:var(--spacing-sm) 4px var(--spacing-md);width:calc(100% - 8px);text-transform:uppercase;letter-spacing:.5px;font-weight:var(--font-weight-semibold)}.mechanisms-panel{--mechanisms-accent: #38bdf8;--mechanisms-accent-muted: rgba(56, 189, 248, .16);--mechanisms-surface: rgba(15, 23, 42, .64);--mechanisms-surface-hover: rgba(56, 189, 248, .08);--mechanisms-border: rgba(148, 163, 184, .18);display:flex;flex-direction:column;width:232px;max-width:100%;height:100%;background:linear-gradient(180deg,#171d27,#111721);border-right:1px solid rgba(255,255,255,.06);color:var(--text-primary);overflow:hidden}[data-theme=light] .mechanisms-panel{--mechanisms-surface: rgba(241, 245, 249, .92);--mechanisms-surface-hover: rgba(14, 165, 233, .08);--mechanisms-border: rgba(15, 23, 42, .14);background:linear-gradient(180deg,#f8fafc,#eef2f7);border-right-color:#0f172a1a}.mechanisms-panel-header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:9px 10px;border-bottom:1px solid rgba(255,255,255,.06);background:#ffffff06}.mechanisms-panel-header div{min-width:0;display:flex;flex-direction:column;gap:2px}.mechanisms-panel-header span{font-size:11px;font-weight:800;letter-spacing:.45px;text-transform:uppercase}.mechanisms-panel-header strong{font-size:10px;font-weight:600;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mechanisms-playback{display:grid;grid-template-columns:minmax(0,1fr) 30px;gap:6px;padding:8px;border-bottom:1px solid rgba(255,255,255,.06)}.mechanisms-play-btn,.mechanisms-icon-btn,.mechanisms-coordinate-actions button,.mechanisms-contact-actions button,.mechanisms-contact-result-actions button{min-height:28px;display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid var(--mechanisms-border);border-radius:6px;background:#ffffff0a;color:var(--text-primary);font-size:10px;font-weight:700;cursor:pointer}.mechanisms-icon-btn{width:30px;flex:0 0 30px;padding:0}.mechanisms-play-btn:hover:not(:disabled),.mechanisms-icon-btn:hover:not(:disabled),.mechanisms-coordinate-actions button:hover:not(:disabled),.mechanisms-contact-actions button:hover:not(:disabled),.mechanisms-contact-result-actions button:hover:not(:disabled){border-color:#38bdf875;background:var(--mechanisms-surface-hover)}.mechanisms-play-btn.active{border-color:#38bdf88c;background:var(--mechanisms-accent-muted);color:#bae6fd}.mechanisms-play-btn:disabled,.mechanisms-icon-btn:disabled,.mechanisms-coordinate-actions button:disabled,.mechanisms-contact-actions button:disabled,.mechanisms-contact-result-actions button:disabled,.mechanisms-angle-range:disabled,.mechanisms-angle-input:disabled,.mechanisms-speed-input:disabled{opacity:.48;cursor:not-allowed}.mechanisms-contact-diagnostics{display:flex;flex-direction:column;gap:7px;padding:8px;border-bottom:1px solid rgba(255,255,255,.06);background:#ffffff05}.mechanisms-contact-header{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.mechanisms-contact-header div{min-width:0;display:flex;flex-direction:column;gap:2px}.mechanisms-contact-header span,.mechanisms-contact-threshold span{color:var(--text-disabled);font-size:9px;font-weight:800;letter-spacing:.35px;text-transform:uppercase}.mechanisms-contact-header strong{color:var(--text-primary);font-size:11px;font-weight:800}.mechanisms-contact-pill{flex:0 0 auto;max-width:82px;padding:2px 6px;border-radius:999px;font-size:9px;font-weight:800;letter-spacing:.35px;text-transform:uppercase;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mechanisms-contact-pill-idle,.mechanisms-contact-pill-clear{border:1px solid rgba(34,197,94,.35);background:#22c55e1a;color:#bbf7d0}.mechanisms-contact-pill-near{border:1px solid rgba(234,179,8,.38);background:#eab3081a;color:#fde68a}.mechanisms-contact-pill-interference{border:1px solid rgba(248,113,113,.4);background:#f871711a;color:#fecaca}.mechanisms-contact-status-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px}.mechanisms-contact-status{min-width:0;padding:4px 3px;border:1px solid rgba(148,163,184,.18);border-radius:5px;color:var(--text-muted);font-size:9px;font-weight:800;text-align:center;text-transform:uppercase;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mechanisms-contact-status.active.mechanisms-contact-status-clear{border-color:#22c55e66;background:#22c55e1a;color:#bbf7d0}.mechanisms-contact-status.active.mechanisms-contact-status-near{border-color:#eab30866;background:#eab3081a;color:#fde68a}.mechanisms-contact-status.active.mechanisms-contact-status-interference{border-color:#f871716b;background:#f871711a;color:#fecaca}.mechanisms-contact-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.mechanisms-contact-actions button span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mechanisms-contact-threshold{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:5px 7px;border:1px solid rgba(148,163,184,.16);border-radius:6px;background:var(--mechanisms-surface)}.mechanisms-contact-threshold strong{color:var(--text-primary);font-family:var(--font-mono);font-size:10px;font-weight:800}.mechanisms-contact-results{display:flex;flex-direction:column;gap:5px}.mechanisms-contact-empty{padding:6px 7px;border:1px dashed rgba(148,163,184,.22);border-radius:6px;color:var(--text-muted);font-size:10px;line-height:1.35}.mechanisms-contact-result{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:6px;padding:6px;border:1px solid rgba(148,163,184,.18);border-radius:6px;background:var(--mechanisms-surface)}.mechanisms-contact-result.near{border-color:#eab30852}.mechanisms-contact-result.interference{border-color:#f8717157}.mechanisms-contact-result>div:first-child{min-width:0;display:grid;gap:1px}.mechanisms-contact-result span{color:var(--text-primary);font-size:10px;font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mechanisms-contact-result strong,.mechanisms-contact-result em{color:var(--text-muted);font-size:9px;font-style:normal;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mechanisms-contact-result-actions{display:flex;gap:4px}.mechanisms-contact-result-actions button{width:26px;min-height:24px;padding:0}.mechanisms-speed-field{grid-column:1 / -1;display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:8px;color:var(--text-muted);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.35px}.mechanisms-speed-input,.mechanisms-angle-input{width:100%;min-height:26px;padding:0 7px;border:1px solid rgba(125,211,252,.26);border-radius:6px;background:#ffffff0b;color:var(--text-primary);font-size:10px}.mechanisms-speed-input:focus,.mechanisms-angle-input:focus{outline:none;border-color:#38bdf899;box-shadow:0 0 0 2px #38bdf81f}.mechanisms-empty{flex:1;display:flex;align-items:center;justify-content:center;padding:22px 14px;color:var(--text-muted);font-size:11px;line-height:1.45;text-align:center}.mechanisms-coordinate-list{flex:1;display:flex;flex-direction:column;gap:8px;padding:8px;overflow-y:auto}.mechanisms-coordinate{display:flex;flex-direction:column;gap:7px;padding:8px;border:1px solid rgba(56,189,248,.2);border-radius:7px;background:var(--mechanisms-surface)}.mechanisms-coordinate.disabled{opacity:.6}.mechanisms-coordinate.active{border-color:#38bdf880;background:linear-gradient(180deg,rgba(56,189,248,.09) 0%,var(--mechanisms-surface) 100%)}.mechanisms-coordinate-title{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.mechanisms-coordinate-title div{min-width:0;display:flex;flex-direction:column;gap:3px}.mechanisms-coordinate-title strong{min-width:0;font-size:11px;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mechanisms-coordinate-title div>span{min-width:0;color:#bfdbfe;font-size:10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mechanisms-residual{flex:0 0 auto;max-width:74px;padding:2px 6px;border-radius:999px;font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.35px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mechanisms-residual-ok{border:1px solid rgba(34,197,94,.35);background:#22c55e1a;color:#bbf7d0}.mechanisms-residual-warn{border:1px solid rgba(234,179,8,.38);background:#eab3081a;color:#fde68a}.mechanisms-residual-bad{border:1px solid rgba(248,113,113,.4);background:#f871711a;color:#fecaca}.mechanisms-residual-idle{border:1px solid rgba(148,163,184,.24);background:#94a3b814;color:var(--text-muted)}.mechanisms-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.mechanisms-metrics div{min-width:0;display:flex;flex-direction:column;gap:2px}.mechanisms-metrics span{color:var(--text-disabled);font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.35px}.mechanisms-metrics strong{color:var(--text-primary);font-size:11px;font-family:var(--font-mono);font-weight:700}.mechanisms-angle-range{width:100%;height:18px;accent-color:var(--mechanisms-accent)}.mechanisms-angle-row{display:grid;grid-template-columns:minmax(44px,1fr) 68px minmax(44px,1fr);align-items:center;gap:6px;color:var(--text-disabled);font-size:9px}.mechanisms-angle-row span:last-child{text-align:right}.mechanisms-coordinate-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.mechanisms-write-btn{color:#bae6fd!important}.mechanisms-write-btn span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mechanisms-contact-joints em{white-space:normal;overflow:visible;text-overflow:clip}.transform-panel{display:flex;flex-direction:column;background:var(--bg-secondary);overflow:hidden}.transform-header{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-md) var(--spacing-lg);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);background:var(--bg-elevated);border-bottom:1px solid var(--border-default);box-shadow:inset 0 1px #ffffff08;cursor:pointer;user-select:none}.transform-header:hover{background:#ffffff08}.panel-collapse-btn{margin-left:auto;display:flex;align-items:center;justify-content:center;width:20px;height:20px;background:transparent;border:none;color:var(--text-muted);cursor:pointer;border-radius:var(--radius-sm);transition:all var(--transition-fast)}.panel-collapse-btn:hover{color:var(--text-primary);background:#ffffff1a}.transform-object-name{font-weight:var(--font-weight-medium);text-transform:none;color:var(--accent-primary);font-size:var(--font-size-sm);max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:var(--accent-primary-dim);padding:2px var(--spacing-sm);border-radius:var(--radius-sm)}.transform-empty{padding:var(--spacing-xl) var(--spacing-lg);text-align:center;color:var(--text-muted);font-size:var(--font-size-md);line-height:1.6}.transform-section{padding:var(--spacing-md) var(--spacing-lg);border-bottom:1px solid var(--border-subtle)}.transform-section:last-child{border-bottom:none}.transform-section-label{font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);color:var(--text-muted);margin-bottom:var(--spacing-sm);text-transform:uppercase;letter-spacing:.3px;display:flex;align-items:center;gap:var(--spacing-sm)}.transform-inputs{display:flex;flex-direction:column;gap:var(--spacing-sm)}.transform-input-group{display:flex;align-items:center;gap:var(--spacing-sm)}.transform-input-label{width:20px;height:20px;display:flex;align-items:center;justify-content:center;font-size:var(--font-size-sm);font-weight:var(--font-weight-bold);border-radius:var(--radius-sm);flex-shrink:0}.transform-input-group:nth-child(1) .transform-input-label{color:#ff6b6b;background:#ff6b6b26}.transform-input-group:nth-child(2) .transform-input-label{color:#51cf66;background:#51cf6626}.transform-input-group:nth-child(3) .transform-input-label{color:#4dabf7;background:#4dabf726}.transform-input{flex:1;padding:var(--spacing-sm) var(--spacing-md);background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-md);color:var(--text-primary);font-size:var(--font-size-md);font-family:var(--font-mono);outline:none;transition:all var(--transition-fast);min-width:0}.transform-input:focus{border-color:var(--accent-primary);box-shadow:0 0 0 3px var(--accent-primary-dim);background:var(--bg-elevated)}.transform-input:hover:not(:focus){border-color:var(--border-strong)}.transform-input::-webkit-outer-spin-button,.transform-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.transform-input[type=number]{-moz-appearance:textfield}.parametric-input{font-family:var(--font-mono)}.parametric-input.is-variable{border-color:var(--accent-primary);background:var(--accent-primary-dim);color:var(--accent-primary)}.parametric-resolved{font-size:var(--font-size-xs);color:var(--text-muted);font-family:var(--font-mono);white-space:nowrap;margin-left:var(--spacing-xs);padding:2px var(--spacing-xs);background:var(--bg-surface);border-radius:var(--radius-sm)}.param-hint{font-size:var(--font-size-xs);color:var(--text-disabled);font-weight:var(--font-weight-normal);text-transform:none;margin-left:var(--spacing-sm);font-style:italic}.transform-input-group .transform-input.parametric-input{min-width:80px}.parameter-panel{background:var(--bg-secondary);border-top:1px solid var(--border-default);display:flex;flex-direction:column;min-height:150px;max-height:300px;overflow:hidden}.parameter-header{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-md) var(--spacing-lg);background:var(--bg-elevated);border-bottom:1px solid var(--border-default);font-weight:var(--font-weight-semibold);font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);box-shadow:inset 0 1px #ffffff08;cursor:pointer;user-select:none}.parameter-header:hover{background:#ffffff08}.parameter-add-btn{width:24px;height:24px;border:none;border-radius:var(--radius-md);background:linear-gradient(135deg,var(--accent-primary) 0%,var(--accent-secondary) 100%);color:var(--bg-primary);font-size:16px;font-weight:var(--font-weight-bold);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--transition-fast);box-shadow:0 2px 6px var(--accent-primary-dim)}.parameter-add-btn:hover:not(:disabled){transform:scale(1.1);box-shadow:0 4px 12px var(--accent-primary-glow)}.parameter-add-btn:disabled{opacity:.4;cursor:not-allowed;transform:none}.parameter-empty{padding:var(--spacing-lg);color:var(--text-muted);font-size:var(--font-size-sm);text-align:center}.parameter-list{flex:1;overflow-y:auto;padding:var(--spacing-sm)}.parameter-item{background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-md);padding:var(--spacing-sm) var(--spacing-md);margin-bottom:var(--spacing-sm);transition:all var(--transition-fast)}.parameter-item:hover{border-color:var(--accent-primary);box-shadow:0 0 0 1px var(--accent-primary-dim)}.parameter-item.has-error{border-color:var(--error);box-shadow:0 0 0 1px var(--error-dim)}.parameter-item-new{border-color:var(--accent-primary);background:var(--accent-primary-dim);animation:fadeInUp .2s ease-out}.parameter-item-row{display:flex;align-items:center;gap:var(--spacing-xs);flex-wrap:wrap}.parameter-name{font-family:var(--font-mono);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--accent-primary);min-width:60px}.parameter-name-input{font-family:var(--font-mono);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--accent-primary);background:var(--bg-primary);border:1px solid var(--border-default);border-radius:var(--radius-sm);padding:2px var(--spacing-sm);width:80px}.parameter-name-input:focus{outline:none;border-color:var(--accent-primary);box-shadow:0 0 0 2px var(--accent-primary-dim)}.parameter-name-input.has-error{border-color:var(--error)}.parameter-equals{color:var(--text-disabled);font-family:var(--font-mono);font-size:var(--font-size-sm)}.parameter-expression{font-family:var(--font-mono);font-size:var(--font-size-sm);color:var(--text-primary);cursor:pointer;padding:2px var(--spacing-sm);border-radius:var(--radius-sm);flex:1;min-width:60px;transition:background var(--transition-fast)}.parameter-expression:hover{background:var(--bg-hover)}.parameter-expression-input{font-family:var(--font-mono);font-size:var(--font-size-sm);color:var(--text-primary);background:var(--bg-primary);border:1px solid var(--border-default);border-radius:var(--radius-sm);padding:2px var(--spacing-sm);flex:1;min-width:60px}.parameter-expression-input:focus{border-color:var(--accent-primary);outline:none;box-shadow:0 0 0 2px var(--accent-primary-dim)}.parameter-value{font-family:var(--font-mono);font-size:var(--font-size-xs);color:var(--text-muted);margin-left:auto;background:var(--bg-elevated);padding:2px var(--spacing-sm);border-radius:var(--radius-sm)}.parameter-error{font-size:var(--font-size-xs);color:var(--error);margin-top:var(--spacing-xs);padding-left:var(--spacing-xs)}.parameter-deps{font-size:var(--font-size-xs);color:var(--text-disabled);margin-top:var(--spacing-xs);padding-left:var(--spacing-xs);font-style:italic}.parameter-item-actions{display:flex;gap:var(--spacing-xs);margin-top:var(--spacing-xs);justify-content:flex-end}.parameter-btn{width:24px;height:24px;border:none;border-radius:var(--radius-sm);background:var(--bg-elevated);color:var(--text-secondary);font-size:12px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--transition-fast)}.parameter-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.parameter-btn-confirm{background:var(--success);color:#fff}.parameter-btn-confirm:hover{background:#0ea271;transform:scale(1.1)}.parameter-btn-confirm:disabled{opacity:.5;cursor:not-allowed;transform:none}.parameter-btn-cancel{background:var(--error);color:#fff}.parameter-btn-cancel:hover{background:#dc2626;transform:scale(1.1)}.parameter-btn-danger:hover{background:var(--error);color:#fff}.pattern-panel{display:flex;flex-direction:column;background:var(--bg-secondary);border-top:1px solid var(--border-default);overflow-y:auto}.pattern-header{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-md) var(--spacing-lg);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);background:var(--bg-elevated);border-bottom:1px solid var(--border-default);box-shadow:inset 0 1px #ffffff08;cursor:pointer;user-select:none}.pattern-header:hover{background:#ffffff08}.pattern-object-name{font-weight:var(--font-weight-medium);text-transform:none;color:var(--accent-primary);font-size:var(--font-size-sm);max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:var(--accent-primary-dim);padding:2px var(--spacing-sm);border-radius:var(--radius-sm)}.pattern-empty{padding:var(--spacing-xl) var(--spacing-lg);text-align:center;color:var(--text-muted);font-size:var(--font-size-md);line-height:1.6}.pattern-content{display:flex;flex-direction:column}.pattern-section{padding:var(--spacing-md) var(--spacing-lg);border-bottom:1px solid var(--border-subtle)}.pattern-section:last-child{border-bottom:none}.pattern-section-label{font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);color:var(--text-muted);margin-bottom:var(--spacing-sm);text-transform:uppercase;letter-spacing:.3px;display:block}.pattern-select{width:100%;padding:var(--spacing-sm) var(--spacing-md);background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-md);color:var(--text-primary);font-size:var(--font-size-md);cursor:pointer;outline:none;transition:all var(--transition-fast)}.pattern-select:hover{border-color:var(--border-strong)}.pattern-select:focus{border-color:var(--accent-primary);box-shadow:0 0 0 3px var(--accent-primary-dim)}.pattern-inputs{display:flex;flex-direction:column;gap:var(--spacing-sm)}.pattern-input-group{display:flex;align-items:center;gap:var(--spacing-sm)}.pattern-input-label{width:20px;height:20px;display:flex;align-items:center;justify-content:center;font-size:var(--font-size-sm);font-weight:var(--font-weight-bold);color:var(--text-muted);background:var(--bg-surface);border-radius:var(--radius-sm);flex-shrink:0}.pattern-input{flex:1;padding:var(--spacing-sm) var(--spacing-md);background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-md);color:var(--text-primary);font-size:var(--font-size-md);font-family:var(--font-mono);outline:none;transition:all var(--transition-fast)}.pattern-input:focus{border-color:var(--accent-primary);box-shadow:0 0 0 3px var(--accent-primary-dim);background:var(--bg-elevated)}.pattern-input:hover:not(:focus){border-color:var(--border-strong)}.pattern-input::-webkit-outer-spin-button,.pattern-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.pattern-input[type=number]{-moz-appearance:textfield}.pattern-apply-btn{width:100%;padding:var(--spacing-md) var(--spacing-lg);background:linear-gradient(135deg,var(--accent-primary) 0%,var(--accent-secondary) 100%);border:none;border-radius:var(--radius-md);color:var(--bg-primary);font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);cursor:pointer;transition:all var(--transition-fast);box-shadow:0 2px 8px var(--accent-primary-dim)}.pattern-apply-btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 16px var(--accent-primary-glow)}.pattern-apply-btn:active:not(:disabled){transform:translateY(0)}.pattern-apply-btn:disabled{opacity:.4;cursor:not-allowed;transform:none}.wires-panel{display:flex;flex-direction:column;background:var(--bg-secondary);border-top:1px solid var(--border-default);overflow-y:auto}.wires-header{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-md) var(--spacing-lg);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);background:var(--bg-elevated);border-bottom:1px solid var(--border-default);cursor:pointer;user-select:none}.wires-header:hover{background:#ffffff08}.wires-header-count{margin-left:auto;text-transform:none;letter-spacing:0;font-weight:var(--font-weight-medium);color:var(--text-secondary)}.wires-body{display:flex;flex-direction:column;gap:var(--spacing-sm);padding:var(--spacing-md) var(--spacing-lg)}.wires-toolbar{display:flex;align-items:center;gap:var(--spacing-sm);flex-wrap:wrap}.wires-level-group{display:flex;gap:2px}.wires-chip{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;font-size:11px;line-height:1.4;color:var(--text-secondary);background:var(--bg-elevated);border:1px solid var(--border-default);border-radius:4px;cursor:pointer;white-space:nowrap}.wires-chip:hover{background:#ffffff0f;color:var(--text-primary)}.wires-chip.active{background:var(--accent-primary, #2563eb);border-color:var(--accent-primary, #2563eb);color:#fff}.wires-chip.overridden{opacity:.55}.wires-level-group.small .wires-chip{padding:2px 7px;font-size:10px}.wires-empty{display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding:6px 0;font-size:11px;color:var(--text-muted)}.wires-empty p{margin:0}.wires-hint{font-size:10px;color:var(--text-muted)}.wires-hint code{font-size:10px;background:#ffffff0f;padding:1px 4px;border-radius:3px}.wires-action{padding:4px 10px;font-size:11px;color:var(--text-primary);background:var(--bg-elevated);border:1px solid var(--border-default);border-radius:4px;cursor:pointer}.wires-action:hover{background:#ffffff14}.wires-summary{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:11px;color:var(--text-secondary)}.wires-list{display:flex;flex-direction:column;gap:6px}.wires-row{display:flex;flex-direction:column;gap:4px;padding:6px 8px;background:var(--bg-elevated);border:1px solid var(--border-default);border-radius:5px}.wires-row.dimmed{opacity:.5}.wires-row-top,.wires-row-mid,.wires-row-bottom{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.wires-swatch{width:10px;height:10px;border-radius:50%;border:1px solid rgba(255,255,255,.35);flex:none}.wires-net{font-size:11px;font-weight:var(--font-weight-medium);color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:130px}.wires-select{font-size:10px;padding:1px 3px;color:var(--text-secondary);background:var(--bg-secondary);border:1px solid var(--border-default);border-radius:3px}.wires-icon{display:inline-flex;align-items:center;justify-content:center;width:20px;height:18px;color:var(--text-muted);background:none;border:none;border-radius:3px;cursor:pointer}.wires-icon:hover{background:#ffffff14;color:var(--text-primary)}.wires-row-top .wires-icon:last-child{margin-left:auto}.wires-field{display:inline-flex;align-items:center;gap:4px;font-size:10px;color:var(--text-muted)}.wires-number{width:52px;font-size:10px;padding:2px 4px;color:var(--text-primary);background:var(--bg-secondary);border:1px solid var(--border-default);border-radius:3px}.wires-metric{margin-left:auto;font-size:11px;font-variant-numeric:tabular-nums;color:var(--text-primary)}.wires-badge{font-size:10px;padding:1px 6px;border-radius:3px;white-space:nowrap}.wires-badge.ok{color:#86efac;background:#22c55e24}.wires-badge.tight{color:#fcd34d;background:#f59e0b29}.wires-badge.violation{color:#fca5a5;background:#ef44442e}.wires-meta{font-size:10px;color:var(--text-muted)}.wires-meta.warn{color:#fcd34d}.wires-footer{display:flex;gap:6px}.loading-overlay{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:var(--bg-void);z-index:1000;animation:fadeIn .3s ease-out}.loading-overlay:before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse 60% 40% at 50% 40%,rgba(0,217,255,.08) 0%,transparent 60%),radial-gradient(ellipse 80% 60% at 30% 70%,rgba(168,85,247,.05) 0%,transparent 50%);animation:pulse 4s ease-in-out infinite}.loading-content{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-xl);padding:var(--spacing-2xl);position:relative;z-index:1;animation:fadeInUp .5s ease-out .2s backwards}.loading-spinner{position:relative;width:100px;height:100px}.spinner-ring{position:absolute;inset:0;border:2px solid transparent;border-radius:50%}.spinner-ring:nth-child(1){border-top-color:var(--accent-primary);border-right-color:#00d9ff4d;animation:spinSlow 2s linear infinite;filter:drop-shadow(0 0 8px var(--accent-primary-glow))}.spinner-ring:nth-child(2){inset:12px;border-left-color:var(--accent-sketch);border-bottom-color:#a855f74d;animation:spinFast 1.5s linear infinite reverse;filter:drop-shadow(0 0 6px var(--accent-sketch-dim))}.spinner-ring:nth-child(3){inset:24px;border-top-color:var(--success);border-right-color:#10b9814d;animation:spinSlow 2.5s linear infinite;filter:drop-shadow(0 0 4px var(--success-dim))}.loading-spinner:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:12px;height:12px;background:var(--accent-primary);border-radius:50%;animation:glow 2s ease-in-out infinite;box-shadow:0 0 20px var(--accent-primary-glow)}@keyframes spinSlow{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes spinFast{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.loading-title{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);color:var(--text-primary);letter-spacing:-.5px;text-align:center;background:linear-gradient(135deg,var(--text-primary) 0%,var(--accent-primary) 50%,var(--text-primary) 100%);background-size:200% auto;-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;animation:shimmer 3s ease-in-out infinite}.loading-subtitle{font-size:var(--font-size-md);color:var(--text-muted);font-family:var(--font-mono);text-align:center;animation:pulse 2s ease-in-out infinite}.loading-error-icon{font-size:56px;filter:drop-shadow(0 0 20px var(--error-dim))}.loading-error{font-size:var(--font-size-md);color:var(--error);text-align:center;max-width:320px;line-height:1.6;background:var(--error-dim);padding:var(--spacing-md) var(--spacing-lg);border-radius:var(--radius-lg);border:1px solid rgba(239,68,68,.3)}.loading-retry{margin-top:var(--spacing-sm);padding:var(--spacing-md) var(--spacing-xl);background:linear-gradient(135deg,var(--accent-primary) 0%,var(--accent-secondary) 100%);border:none;border-radius:var(--radius-lg);color:var(--bg-primary);font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);cursor:pointer;transition:all var(--transition-fast);box-shadow:0 4px 16px var(--accent-primary-dim)}.loading-retry:hover{transform:translateY(-2px);box-shadow:0 8px 24px var(--accent-primary-glow)}.loading-retry:active{transform:translateY(0)}.loading-overlay.fade-out{animation:fadeOut .4s ease-out forwards}@keyframes fadeOut{0%{opacity:1}to{opacity:0;visibility:hidden}}.extrude-panel-backdrop{position:fixed;inset:0;background:transparent;pointer-events:none;display:flex;align-items:flex-start;justify-content:flex-end;padding:80px 20px 20px;z-index:9999;animation:fadeIn .2s ease-out}.extrude-panel{background:#0f1219f2;border-radius:var(--radius-xl);border:1px solid var(--accent-sketch);box-shadow:var(--shadow-xl),0 0 60px var(--accent-sketch-dim);width:340px;max-width:90vw;overflow:hidden;animation:fadeInUp .3s ease-out;pointer-events:auto}.ep-header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-lg) var(--spacing-xl);border-bottom:1px solid var(--border-default);background:var(--bg-elevated)}.ep-header h3{margin:0;font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--text-primary)}.ep-close{width:28px;height:28px;border-radius:var(--radius-md);background:var(--bg-surface);border:1px solid var(--border-default);color:var(--text-muted);cursor:pointer;font-size:14px;transition:all var(--transition-fast);display:flex;align-items:center;justify-content:center}.ep-close:hover{background:var(--error-dim);border-color:var(--error);color:var(--error)}.ep-content{padding:var(--spacing-xl);display:flex;flex-direction:column;gap:var(--spacing-lg)}.ep-section{display:flex;flex-direction:column;gap:var(--spacing-sm)}.ep-label{font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.ep-sketch-info{display:flex;align-items:center;justify-content:space-between}.ep-sketch-name{font-weight:var(--font-weight-medium);color:var(--text-primary)}.ep-status{font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);padding:var(--spacing-xs) var(--spacing-md);border-radius:var(--radius-full)}.ep-status.closed{background:var(--success-dim);color:var(--success);border:1px solid rgba(16,185,129,.3)}.ep-status.open{background:var(--error-dim);color:var(--error);border:1px solid rgba(239,68,68,.3)}.ep-input{padding:var(--spacing-md);background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-md);color:var(--text-primary);font-size:var(--font-size-md);font-family:var(--font-mono);transition:all var(--transition-fast)}.ep-input:focus{outline:none;border-color:var(--accent-sketch);box-shadow:0 0 0 3px var(--accent-sketch-dim)}.ep-direction-btns{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--spacing-sm)}.ep-dir-btn{padding:var(--spacing-sm) var(--spacing-xs);background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-md);color:var(--text-secondary);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--transition-fast)}.ep-dir-btn:hover{background:var(--bg-hover);border-color:var(--border-strong)}.ep-dir-btn.active{background:var(--accent-sketch-dim);border-color:var(--accent-sketch);color:var(--accent-sketch)}.ep-op-btns{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--spacing-sm)}.ep-op-btn{padding:var(--spacing-md);border-radius:var(--radius-md);font-size:var(--font-size-md);font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--transition-fast)}.ep-op-btn.merge{background:var(--accent-sketch-dim);border:1px solid rgba(96,165,250,.35);color:var(--accent-sketch)}.ep-op-btn.merge:hover{background:#60a5fa33}.ep-op-btn.merge.active{background:#60a5fa47;border-color:var(--accent-sketch);box-shadow:0 0 12px var(--accent-sketch-dim)}.ep-op-btn.add{background:var(--success-dim);border:1px solid rgba(16,185,129,.3);color:var(--success)}.ep-op-btn.add:hover{background:#10b98140}.ep-op-btn.add.active{background:#10b9814d;border-color:var(--success);box-shadow:0 0 12px var(--success-dim)}.ep-op-btn.cut{background:var(--error-dim);border:1px solid rgba(239,68,68,.3);color:var(--error)}.ep-op-btn.cut:hover{background:#ef444440}.ep-op-btn.cut.active{background:#ef44444d;border-color:var(--error);box-shadow:0 0 12px var(--error-dim)}.ep-select{padding:var(--spacing-md);background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-md);color:var(--text-primary);font-size:var(--font-size-md);cursor:pointer;transition:all var(--transition-fast)}.ep-select:focus{outline:none;border-color:var(--accent-sketch);box-shadow:0 0 0 3px var(--accent-sketch-dim)}.ep-error{padding:var(--spacing-md);background:var(--error-dim);border:1px solid rgba(239,68,68,.3);border-radius:var(--radius-md);color:var(--error);font-size:var(--font-size-md)}.ep-actions{display:flex;gap:var(--spacing-md);padding-top:var(--spacing-md);border-top:1px solid var(--border-default)}.ep-btn{flex:1;padding:var(--spacing-md);border-radius:var(--radius-md);font-size:var(--font-size-md);font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--transition-fast)}.ep-btn.cancel{background:var(--bg-surface);border:1px solid var(--border-default);color:var(--text-secondary)}.ep-btn.cancel:hover{background:var(--bg-hover);border-color:var(--border-strong);color:var(--text-primary)}.ep-btn.confirm{background:linear-gradient(135deg,var(--accent-primary) 0%,var(--accent-secondary) 100%);border:none;color:var(--bg-primary);box-shadow:0 2px 8px var(--accent-primary-dim)}.ep-btn.confirm:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 16px var(--accent-primary-glow)}.ep-btn.confirm:disabled{opacity:.4;cursor:not-allowed;transform:none}.ep-body-list{max-height:150px;overflow-y:auto;background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-md);padding:var(--spacing-sm)}.ep-body-item{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-sm);cursor:pointer;transition:background var(--transition-fast)}.ep-body-item:hover{background:var(--bg-hover)}.ep-body-item input[type=checkbox]{width:16px;height:16px;accent-color:var(--accent-sketch);cursor:pointer}.ep-body-name{font-size:var(--font-size-md);color:var(--text-primary)}.ep-no-bodies{padding:var(--spacing-md);text-align:center;color:var(--text-muted);font-size:var(--font-size-sm)}.sketch-toolbar{position:absolute;top:16px;left:16px;width:200px;max-height:calc(100vh - 120px);overflow-y:auto;background:var(--glass-bg);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border-radius:var(--radius-xl);border:1px solid var(--accent-sketch);box-shadow:var(--shadow-xl),0 0 30px var(--accent-sketch-dim),inset 0 1px #ffffff0d;padding:var(--spacing-md);z-index:100;display:flex;flex-direction:column;gap:var(--spacing-md);animation:fadeInUp .2s ease-out}.sketch-toolbar-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:var(--spacing-sm);border-bottom:1px solid var(--border-default)}.sketch-name{font-weight:var(--font-weight-semibold);font-size:var(--font-size-md);color:var(--text-primary)}.workplane-badge{background:var(--accent-sketch-dim);color:var(--accent-sketch);padding:2px var(--spacing-sm);border-radius:var(--radius-sm);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);border:1px solid rgba(168,85,247,.3)}.sketch-toolbar-section{display:flex;flex-direction:column;gap:var(--spacing-sm)}.section-label{font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);font-weight:var(--font-weight-medium)}.tool-group{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--spacing-xs)}.sketch-tool-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--spacing-sm) var(--spacing-xs);background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-md);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast)}.sketch-tool-btn:hover{background:var(--bg-hover);border-color:var(--border-strong);color:var(--text-primary);transform:translateY(-1px)}.sketch-tool-btn.active{background:var(--accent-sketch-dim);border-color:var(--accent-sketch);color:var(--accent-sketch);box-shadow:0 0 12px var(--accent-sketch-dim)}.tool-icon{font-size:18px;line-height:1}.tool-label{font-size:var(--font-size-xs);margin-top:2px;font-weight:var(--font-weight-medium)}.drawing-status{background:var(--success-dim);color:var(--success);padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-md);font-size:var(--font-size-sm);text-align:center;font-weight:var(--font-weight-medium);border:1px solid rgba(16,185,129,.3);animation:pulse 2s ease-in-out infinite}.checkbox-option{display:flex;align-items:center;gap:var(--spacing-sm);font-size:var(--font-size-sm);color:var(--text-secondary);cursor:pointer;padding:var(--spacing-xs) 0}.checkbox-option:hover{color:var(--text-primary)}.checkbox-option input{accent-color:var(--accent-sketch);width:14px;height:14px}.grid-size-input{display:flex;align-items:center;gap:var(--spacing-sm);font-size:var(--font-size-sm);color:var(--text-secondary)}.grid-size-input input{width:60px;padding:var(--spacing-xs) var(--spacing-sm);background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-sm);color:var(--text-primary);font-size:var(--font-size-sm);font-family:var(--font-mono)}.grid-size-input input:focus{outline:none;border-color:var(--accent-sketch);box-shadow:0 0 0 2px var(--accent-sketch-dim)}.coord-input-form{display:flex;flex-direction:column;gap:var(--spacing-sm)}.coord-inputs{display:flex;align-items:center;gap:var(--spacing-xs)}.coord-field{flex:1;padding:var(--spacing-sm);background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-sm);color:var(--text-primary);font-size:var(--font-size-sm);font-family:var(--font-mono)}.coord-field:focus{outline:none;border-color:var(--accent-sketch);box-shadow:0 0 0 2px var(--accent-sketch-dim)}.coord-separator{color:var(--text-disabled);font-weight:var(--font-weight-bold)}.coord-submit{padding:var(--spacing-sm) var(--spacing-md);background:var(--accent-sketch-dim);border:1px solid rgba(168,85,247,.3);border-radius:var(--radius-sm);color:var(--accent-sketch);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--transition-fast)}.coord-submit:hover{background:#a855f740;border-color:var(--accent-sketch)}.coord-disabled{font-size:var(--font-size-xs);color:var(--text-disabled);font-style:italic;text-align:center}.action-btn{width:100%;padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--transition-fast)}.view-btn{background:var(--bg-surface);border:1px solid var(--border-default);color:var(--text-primary)}.view-btn:hover{background:var(--bg-hover);border-color:var(--border-strong)}.delete-btn{background:var(--error-dim);border:1px solid rgba(239,68,68,.3);color:var(--error)}.delete-btn:hover:not(:disabled){background:#ef444440;border-color:var(--error)}.delete-btn:disabled{opacity:.4;cursor:not-allowed}.exit-btn{background:var(--success-dim);border:1px solid rgba(16,185,129,.3);color:var(--success)}.exit-btn:hover{background:#10b98140;border-color:var(--success)}.extrude-btn{background:linear-gradient(135deg,var(--accent-sketch-dim) 0%,rgba(168,85,247,.1) 100%);border:1px solid rgba(168,85,247,.4);color:#c084fc}.extrude-btn:hover:not(:disabled){background:linear-gradient(135deg,#a855f74d,#a855f733);border-color:var(--accent-sketch);box-shadow:0 0 16px var(--accent-sketch-dim)}.extrude-btn:disabled{opacity:.4;cursor:not-allowed}.sketch-stats{text-align:center;font-size:var(--font-size-xs);color:var(--text-disabled);padding-top:var(--spacing-sm);border-top:1px solid var(--border-subtle);font-family:var(--font-mono)}.modification-hint{animation:none;text-align:left;line-height:1.35}.modification-controls{padding:var(--spacing-sm);border:1px solid var(--border-default);border-radius:var(--radius-md);background:var(--bg-surface)}.modification-controls label{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-sm);color:var(--text-secondary);font-size:var(--font-size-xs)}.modification-controls input{width:70px;min-width:0;padding:var(--spacing-xs) var(--spacing-sm);border:1px solid var(--border-default);border-radius:var(--radius-sm);background:var(--bg-elevated);color:var(--text-primary);font-family:var(--font-mono)}.parameter-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--spacing-xs)}.parameter-row label{flex-direction:column;align-items:stretch;gap:2px}.parameter-row input{width:100%;box-sizing:border-box}.sketch-panel{background:var(--bg-surface);border-radius:var(--radius-lg);border:1px solid var(--border-default);padding:var(--spacing-md);display:flex;flex-direction:column;gap:var(--spacing-md)}.sketch-panel-header{display:flex;justify-content:space-between;align-items:center;padding-bottom:var(--spacing-sm);border-bottom:1px solid var(--border-default)}.panel-title{font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);color:var(--text-primary)}.status-badge{font-size:var(--font-size-xs);font-family:var(--font-mono);padding:2px 8px;border-radius:var(--radius-md)}.status-green{background:var(--success-dim);color:var(--success)}.status-blue{background:var(--accent-primary-dim);color:var(--accent-primary)}.status-red{background:var(--error-dim);color:var(--error)}.sketch-panel-section{display:flex;flex-direction:column;gap:var(--spacing-sm)}.section-header{font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted)}.no-selection{font-size:var(--font-size-sm);color:var(--text-muted);font-style:italic}.entity-info{display:flex;flex-direction:column;gap:var(--spacing-xs)}.entity-type{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--accent-sketch)}.entity-prop{display:flex;justify-content:space-between;font-size:var(--font-size-xs)}.prop-label{color:var(--text-muted)}.prop-value{font-family:var(--font-mono);color:var(--text-secondary)}.constraint-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--spacing-xs)}.constraint-btn-large{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--spacing-sm);background:var(--bg-elevated);border:1px solid var(--border-default);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);min-height:50px}.constraint-btn-large:hover:not(:disabled){background:var(--bg-hover);border-color:var(--accent-primary)}.constraint-btn-large:active:not(:disabled){transform:scale(.96)}.constraint-btn-large:disabled{opacity:.4;cursor:not-allowed}.constraint-btn-large .btn-icon{font-size:var(--font-size-lg);line-height:1;color:var(--text-primary)}.constraint-btn-large .btn-label{font-size:9px;font-weight:var(--font-weight-medium);color:var(--text-secondary);margin-top:2px}.dimension-input-row{display:flex;gap:var(--spacing-xs)}.dimension-input{flex:1;font-family:var(--font-mono);font-size:var(--font-size-md);padding:var(--spacing-sm);background:var(--bg-elevated);border:1px solid var(--border-default);border-radius:var(--radius-md);color:var(--text-primary)}.dimension-input:focus{border-color:var(--accent-primary);outline:none}.dimension-buttons{display:flex;gap:var(--spacing-xs)}.dimension-btn{flex:1;padding:var(--spacing-sm);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);background:var(--bg-elevated);border:1px solid var(--border-default);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);color:var(--text-secondary)}.dimension-btn:hover:not(:disabled){background:var(--accent-primary-dim);border-color:var(--accent-primary);color:var(--accent-primary)}.dimension-btn:disabled{opacity:.4;cursor:not-allowed}.constraint-list{display:flex;flex-direction:column;gap:2px;max-height:120px;overflow-y:auto}.no-constraints{font-size:var(--font-size-xs);color:var(--text-muted);font-style:italic}.constraint-item{font-size:var(--font-size-xs);padding:2px 6px;background:var(--bg-elevated);border-radius:var(--radius-sm);color:var(--text-secondary);text-transform:capitalize;display:flex;align-items:center;justify-content:space-between;gap:6px}.constraint-item.conflicting{color:var(--error, #ef4444);outline:1px solid color-mix(in srgb,var(--error, #ef4444) 60%,transparent)}.constraint-remove{border:0;background:transparent;color:inherit;cursor:pointer;line-height:1;padding:1px 3px}.constraint-conflict-alert{margin:6px 8px 0;padding:6px 8px;border:1px solid color-mix(in srgb,var(--error, #ef4444) 55%,transparent);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--error, #ef4444) 12%,var(--bg-panel));color:var(--error, #ef4444);font-size:var(--font-size-xs);line-height:1.35}.more-constraints{font-size:var(--font-size-xs);color:var(--text-muted);font-style:italic;padding:2px 6px}.language-selector{display:flex;flex-direction:column;gap:8px}.language-selector.compact{gap:6px}.language-selector-label{font-size:10px;font-weight:600;color:var(--text-secondary);letter-spacing:.04em;text-transform:uppercase}.language-selector-options{display:flex;flex-wrap:wrap;gap:6px}.language-selector-option{min-width:72px;padding:6px 10px;background:var(--bg-tertiary);border:1px solid var(--border-default);border-radius:999px;color:var(--text-secondary);font-size:11px;cursor:pointer;transition:all .15s ease}.language-selector-option:hover{color:var(--text-primary);background:var(--bg-hover);border-color:var(--border-subtle)}.language-selector-option.active{color:var(--accent-primary);background:var(--accent-primary-dim);border-color:var(--accent-primary-dim);box-shadow:0 0 12px #06b6d426}.signin-modal-overlay{position:fixed;inset:0;background:#03060e99;display:flex;align-items:center;justify-content:center;z-index:2000}.signin-modal{width:min(360px,90vw);background:var(--bg-secondary);border:1px solid var(--border-default);border-radius:var(--radius-lg);padding:20px;box-shadow:var(--shadow-lg);text-align:center}.signin-modal-language{margin-bottom:14px;text-align:left}.signin-modal-title{font-size:var(--font-size-md);font-weight:600;color:var(--text-primary);margin-bottom:8px}.signin-modal-message{font-size:var(--font-size-sm);color:var(--text-muted);margin:0 0 12px}.signin-google-btn{width:100%;min-height:40px;display:flex;align-items:center;justify-content:center;gap:10px;padding:9px 12px;border:1px solid #dadce0;border-radius:var(--radius-md);background:#fff;color:#202124;font-size:var(--font-size-sm);font-weight:500;cursor:pointer;transition:background var(--transition-fast),box-shadow var(--transition-fast)}.signin-google-btn:hover:not(:disabled){background:#f8faff;box-shadow:0 1px 2px #00000029}.signin-google-btn:focus-visible{outline:3px solid rgba(66,133,244,.3);outline-offset:2px}.signin-google-btn:disabled{opacity:.65;cursor:not-allowed}.signin-google-icon{width:18px;height:18px;flex:0 0 auto}.signin-divider{display:flex;align-items:center;gap:10px;margin:14px 0;color:var(--text-muted);font-size:var(--font-size-xs)}.signin-divider:before,.signin-divider:after{content:"";height:1px;flex:1;background:var(--border-default)}.signin-modal-input{width:100%;padding:10px 12px;background:var(--bg-tertiary);border:1px solid var(--border-default);border-radius:var(--radius-md);color:var(--text-primary);font-size:var(--font-size-sm);margin-bottom:10px}.signin-modal-input:focus{outline:none;border-color:var(--accent-primary);box-shadow:0 0 0 3px #00d9ff26}.signin-modal-error{margin-top:8px;font-size:var(--font-size-xs);color:#fca5a5}.signin-modal-toggle{display:flex;justify-content:center;gap:6px;font-size:var(--font-size-xs);color:var(--text-muted);margin-top:4px}.signin-modal-forgot{display:flex;justify-content:flex-end;margin-top:4px}.signin-modal-link{background:none;border:none;color:#93c5fd;cursor:pointer;font-size:var(--font-size-xs);padding:0}.signin-modal-link:hover{color:#bfdbfe}.signin-modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}.signin-modal-btn{padding:6px 12px;background:transparent;border:1px solid var(--border-default);border-radius:var(--radius-md);color:var(--text-secondary);font-size:var(--font-size-xs);cursor:pointer;transition:all var(--transition-fast)}.signin-modal-btn:hover:not(:disabled){color:var(--text-primary);background:var(--bg-hover);border-color:var(--border-subtle)}.signin-modal-btn.primary{background:#2563eb;border-color:#2563eb66;color:#fff}.signin-modal-btn.primary:hover:not(:disabled){background:#1d4ed8}.signin-modal-btn:disabled{opacity:.6;cursor:not-allowed}.signin-modal-wide{width:min(480px,90vw)}.signin-terms-container{max-height:280px;overflow-y:auto;background:var(--bg-tertiary);border:1px solid var(--border-default);border-radius:var(--radius-md);padding:16px;margin:12px 0;text-align:left}.signin-terms-container::-webkit-scrollbar{width:8px}.signin-terms-container::-webkit-scrollbar-track{background:var(--bg-tertiary);border-radius:4px}.signin-terms-container::-webkit-scrollbar-thumb{background:var(--border-default);border-radius:4px}.signin-terms-container::-webkit-scrollbar-thumb:hover{background:var(--border-subtle)}.signin-terms-content h1{font-size:var(--font-size-md);font-weight:600;color:var(--text-primary);margin:0 0 12px}.signin-terms-content h2{font-size:var(--font-size-sm);font-weight:600;color:var(--text-primary);margin:16px 0 8px}.signin-terms-content p{font-size:var(--font-size-xs);color:var(--text-muted);margin:4px 0;line-height:1.5}.signin-terms-content li{font-size:var(--font-size-xs);color:var(--text-muted);margin:2px 0 2px 16px;line-height:1.5}.signin-terms-content hr{border:none;border-top:1px solid var(--border-default);margin:16px 0}.signin-scroll-hint{font-size:var(--font-size-xs);color:#fbbf24;text-align:center;margin:0;animation:bounce-hint 1s ease-in-out infinite}.signin-terms-note{margin:0 0 10px;font-size:var(--font-size-xs);color:var(--text-muted);text-align:left}@keyframes bounce-hint{0%,to{transform:translateY(0)}50%{transform:translateY(3px)}}.signin-terms-checkbox{display:flex;align-items:center;gap:8px;font-size:var(--font-size-xs);color:var(--text-secondary);margin:12px 0;cursor:pointer;user-select:none}.signin-terms-checkbox.disabled{opacity:.5;cursor:not-allowed}.signin-terms-checkbox input[type=checkbox]{width:16px;height:16px;accent-color:#2563eb;cursor:inherit}.signin-terms-checkbox span{flex:1}.signin-legal-links{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:12px;color:var(--text-muted);font-size:var(--font-size-xs)}.signin-legal-links a{color:var(--text-secondary);text-decoration:none}.signin-legal-links a:hover{color:var(--text-primary);text-decoration:underline}.chat-panel-toggle{position:fixed;right:20px;bottom:20px;display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-md) var(--spacing-lg);background:linear-gradient(135deg,#2563eb,#3b82f6);color:#fff;border:none;border-radius:var(--radius-xl);cursor:pointer;font-weight:var(--font-weight-semibold);box-shadow:0 4px 20px #3b82f666,0 0 40px #3b82f626;transition:all var(--transition-normal);z-index:100}.chat-panel-toggle:hover{transform:translateY(-2px);box-shadow:0 6px 30px #3b82f680,0 0 60px #3b82f640}.chat-panel{position:fixed;right:20px;bottom:20px;width:266px;height:500px;background:var(--bg-secondary);border:1px solid var(--border-default);border-radius:var(--radius-lg);display:flex;flex-direction:column;box-shadow:var(--shadow-lg);z-index:100;overflow:hidden}.chat-panel-header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-md) var(--spacing-lg);background:var(--bg-surface);border-bottom:1px solid var(--border-default)}.chat-panel-title{display:flex;align-items:center;gap:var(--spacing-sm);font-weight:var(--font-weight-semibold);color:#3b82f6}.chat-panel-actions{display:flex;gap:var(--spacing-xs)}.chat-panel-settings-wrap{position:relative}.chat-panel-btn{background:transparent;border:none;color:var(--text-muted);padding:var(--spacing-xs);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast)}.chat-panel-btn:hover{color:var(--text-primary);background:var(--bg-surface)}.chat-panel-btn.active{color:#bfdbfe;background:#3b82f629}.chat-panel-settings-popover{position:absolute;top:30px;right:0;width:190px;padding:10px;border:1px solid var(--border-default);border-radius:var(--radius-md);background:var(--bg-secondary);box-shadow:var(--shadow-lg);z-index:2}.chat-panel-settings-title{margin-bottom:8px;color:var(--text-muted);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);text-transform:uppercase;letter-spacing:.04em}.chat-panel-setting-row{display:flex;width:100%;align-items:center;justify-content:space-between;gap:10px;padding:8px 9px;border:1px solid var(--border-subtle);border-radius:var(--radius-sm);background:var(--bg-surface);color:var(--text-secondary);cursor:pointer;font-size:var(--font-size-xs);text-align:left}.chat-panel-setting-row.active{border-color:#3b82f680;background:#3b82f624;color:#dbeafe}.chat-panel-setting-row strong{color:#93c5fd;font-size:var(--font-size-xs)}.chat-panel-credits{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-sm);padding:var(--spacing-xs) var(--spacing-md);background:var(--bg-tertiary);border-bottom:1px solid var(--border-default);color:var(--text-muted);font-size:var(--font-size-xs)}.chat-panel-upgrade-btn{padding:4px 10px;background:#2563eb;border:1px solid rgba(37,99,235,.4);border-radius:var(--radius-md);color:#fff;cursor:pointer;font-size:var(--font-size-xs);transition:all var(--transition-fast)}.chat-panel-upgrade-btn:hover:not(:disabled){background:#1d4ed8}.chat-panel-upgrade-btn:disabled{opacity:.5;cursor:not-allowed}.chat-panel-messages{flex:1;overflow-y:auto;padding:var(--spacing-md);display:flex;flex-direction:column;gap:var(--spacing-md)}.chat-panel-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;text-align:center;color:var(--text-muted);gap:var(--spacing-md)}.chat-panel-empty p{margin:0;font-size:var(--font-size-base)}.chat-panel-examples{display:flex;flex-direction:column;gap:var(--spacing-xs);width:100%;margin-top:var(--spacing-md)}.chat-panel-examples button{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-md);color:var(--text-secondary);cursor:pointer;font-size:var(--font-size-sm);text-align:left;transition:all var(--transition-fast)}.chat-panel-examples button:hover{background:var(--bg-tertiary);color:var(--text-primary);border-color:var(--accent-primary)}.chat-message{max-width:85%;min-width:0;padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-md);font-size:var(--font-size-sm);line-height:1.5}.chat-message-user{align-self:flex-end;background:var(--accent-primary);color:var(--text-inverse);border-bottom-right-radius:var(--radius-xs)}.chat-message-assistant{align-self:flex-start;background:var(--bg-surface);color:var(--text-primary);border:1px solid var(--border-subtle);border-bottom-left-radius:var(--radius-xs)}.chat-message-loading{align-self:flex-start;display:flex;align-items:center;gap:var(--spacing-sm);background:var(--bg-surface);color:var(--text-muted);border:1px solid var(--border-subtle)}.chat-message-content{white-space:pre-wrap;word-wrap:break-word}.chat-archscript-card{display:flex;flex-direction:column;gap:8px;margin-top:var(--spacing-sm);padding:10px;border:1px solid rgba(96,165,250,.32);border-radius:var(--radius-sm);background:#0f172a57}.chat-archscript-card.has-errors{border-color:#f59e0b6b;background:#f59e0b14}.chat-archscript-card-header{display:flex;align-items:center;justify-content:space-between;gap:8px}.chat-archscript-title,.chat-archscript-status{display:inline-flex;align-items:center;gap:5px;min-width:0;font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold)}.chat-archscript-title{color:#bfdbfe}.chat-archscript-status{color:var(--text-muted);white-space:nowrap}.chat-archscript-preview{max-height:128px;margin:0;padding:8px;overflow:auto;border:1px solid rgba(148,163,184,.22);border-radius:var(--radius-xs);background:#02061757;color:var(--text-secondary);font-family:var(--font-mono);font-size:11px;line-height:1.45;white-space:pre}.chat-archscript-diagnostic{color:#fbbf24;font-size:var(--font-size-xs);line-height:1.35}.chat-archscript-use{display:inline-flex;align-items:center;justify-content:center;gap:6px;align-self:flex-start;min-height:28px;max-width:100%;padding:0 10px;border:1px solid rgba(96,165,250,.42);border-radius:var(--radius-sm);background:#2563eb2e;color:#dbeafe;font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);cursor:pointer;transition:background var(--transition-fast),border-color var(--transition-fast),color var(--transition-fast)}.chat-archscript-use:hover{background:#2563eb47;border-color:#93c5fd94;color:#eff6ff}.chat-message-ops{display:flex;flex-wrap:wrap;gap:var(--spacing-xs);min-width:0;max-width:100%;margin-top:var(--spacing-sm);padding-top:var(--spacing-sm);border-top:1px solid var(--border-subtle)}.chat-op-badge{display:inline-flex;max-width:100%;min-width:0;padding:2px 8px;background:#3b82f626;color:#3b82f6;border-radius:var(--radius-sm);font-size:var(--font-size-xs);font-family:var(--font-mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-message-attention-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:var(--spacing-sm)}.chat-receipt-show{display:inline-flex;align-items:center;gap:5px;height:24px;padding:0 8px;border:1px solid rgba(96,165,250,.34);border-radius:var(--radius-sm);background:#2563eb24;color:#bfdbfe;font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);cursor:pointer;transition:background var(--transition-fast),border-color var(--transition-fast),color var(--transition-fast)}.chat-receipt-show:hover{background:#2563eb3d;border-color:#93c5fd8c;color:#eff6ff}.chat-receipt-show.issue{border-color:#f59e0b66;background:#f59e0b1f;color:#fde68a}.chat-message-error{display:flex;align-items:center;gap:var(--spacing-xs);margin-top:var(--spacing-sm);padding:var(--spacing-xs) var(--spacing-sm);background:#ff6b9d1a;color:var(--accent-secondary);border-radius:var(--radius-sm);font-size:var(--font-size-xs)}.chat-message-error span{white-space:pre-wrap}.chat-panel-input{display:flex;flex-direction:column;gap:8px;padding:var(--spacing-md);background:var(--bg-surface);border-top:1px solid var(--border-default)}@media(max-width:800px),(max-height:500px)and (max-width:900px){.app.mobile-beta .chat-panel-toggle{display:none}.app.mobile-beta .chat-panel{right:max(8px,env(safe-area-inset-right));bottom:max(8px,env(safe-area-inset-bottom));left:max(8px,env(safe-area-inset-left));width:auto;height:min(78dvh,680px);max-height:calc(100dvh - 64px - env(safe-area-inset-top));border-radius:var(--radius-xl) var(--radius-xl) var(--radius-lg) var(--radius-lg);z-index:900}.app.mobile-beta .chat-panel-btn{min-width:44px;min-height:44px}.chat-panel-input textarea{font-size:16px}}.chat-panel-input.dragging-image{background:#3b82f614}.chat-image-preview{display:flex;align-items:center;gap:8px;width:100%;min-width:0;padding:6px;border:1px solid rgba(96,165,250,.34);border-radius:var(--radius-md);background:#3b82f61a;color:var(--text-secondary);font-size:var(--font-size-xs)}.chat-image-preview img{width:38px;height:38px;flex:0 0 auto;object-fit:cover;border:1px solid var(--border-subtle);border-radius:var(--radius-sm);background:var(--bg-tertiary)}.chat-image-preview span{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-image-preview button{display:flex;align-items:center;justify-content:center;width:24px;height:24px;flex:0 0 auto;border:none;border-radius:var(--radius-full);background:transparent;color:var(--text-muted);cursor:pointer;transition:all var(--transition-fast)}.chat-image-preview button:hover{color:var(--text-primary);background:#94a3b824}.chat-image-error{color:var(--accent-secondary);font-size:var(--font-size-xs);line-height:1.35}.chat-input-row{display:flex;align-items:flex-end;gap:6px;width:100%}.chat-panel-input textarea{flex:1;min-width:0;min-height:40px;max-height:128px;background:var(--bg-tertiary);border:1px solid var(--border-default);border-radius:var(--radius-md);padding:var(--spacing-sm) var(--spacing-md);color:var(--text-primary);font-size:var(--font-size-sm);font-family:inherit;line-height:1.35;resize:vertical;transition:border-color var(--transition-fast)}.chat-panel-input textarea:focus{outline:none;border-color:var(--accent-primary)}.chat-panel-input.dragging-image textarea{border-color:var(--accent-primary)}.chat-panel-input textarea::placeholder{color:var(--text-muted)}.chat-attach-btn{display:flex;align-items:center;justify-content:center;width:34px;height:40px;flex:0 0 auto;background:var(--bg-tertiary);border:1px solid var(--border-default);border-radius:var(--radius-md);color:var(--text-muted);cursor:pointer;transition:all var(--transition-fast)}.chat-attach-btn:hover:not(:disabled),.chat-attach-btn.active{color:var(--accent-primary);border-color:#3b82f680;background:#3b82f624}.chat-attach-btn:disabled{opacity:.5;cursor:not-allowed}.chat-image-upload-input{display:none}.chat-send-btn{display:flex;align-items:center;justify-content:center;width:40px;height:40px;background:#3b82f6;border:none;border-radius:var(--radius-md);color:#fff;cursor:pointer;transition:all var(--transition-fast)}.chat-send-btn:hover:not(:disabled){background:#2563eb;transform:scale(1.05)}.chat-send-btn:disabled{opacity:.5;cursor:not-allowed}.admin-access-overlay{position:fixed;inset:0;z-index:10000;display:flex;align-items:center;justify-content:center;padding:20px;background:#020617b8;backdrop-filter:blur(6px)}.admin-access-modal{width:min(860px,100%);max-height:min(80vh,920px);overflow:hidden;display:flex;flex-direction:column;border-radius:18px;border:1px solid rgba(148,163,184,.2);background:radial-gradient(circle at top left,rgba(56,189,248,.12),transparent 28%),linear-gradient(160deg,#0f172afa,#111827fa);box-shadow:0 28px 80px #02061799;color:#e2e8f0}.admin-access-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:24px 24px 18px;border-bottom:1px solid rgba(148,163,184,.14)}.admin-access-header h3{margin:0 0 6px;font-size:22px;color:#f8fafc}.admin-access-header p{margin:0;font-size:14px;color:#e2e8f0b8}.admin-access-close,.admin-access-refresh,.admin-access-btn{border:1px solid transparent;border-radius:10px;cursor:pointer;transition:transform .15s ease,opacity .15s ease,box-shadow .15s ease}.admin-access-close,.admin-access-refresh{padding:10px 14px;background:#1e293beb;color:#dbeafe;border-color:#94a3b82e}.admin-access-body{overflow:auto;padding:18px 24px 24px}.admin-access-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:18px}.admin-access-panel{padding:16px;border-radius:14px;border:1px solid rgba(148,163,184,.16);background:#0f172abd}.admin-access-direct-grid{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(0,1.3fr) minmax(180px,1fr);gap:12px;margin-top:12px}.admin-access-field{display:flex;flex-direction:column;gap:8px}.admin-access-field label{font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#bfdbfed1}.admin-access-field input,.admin-access-field select{padding:11px 12px;border-radius:10px;border:1px solid rgba(148,163,184,.16);background:#1e293beb;color:#f8fafc}.admin-access-field input::placeholder{color:#e2e8f061}.admin-access-field input:focus,.admin-access-field select:focus{outline:none;border-color:#38bdf8b3;box-shadow:0 0 0 3px #38bdf829}.admin-access-helper{font-size:12px;line-height:1.5;color:#bfdbfec2}.admin-access-helper.warning{color:#fdba74}.admin-access-count{font-size:13px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#7dd3fc}.admin-access-section+.admin-access-section{margin-top:22px}.admin-access-section-title{margin-bottom:12px;font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#bfdbfed1}.admin-access-card{padding:16px;border-radius:14px;border:1px solid rgba(148,163,184,.16);background:#0f172abd}.admin-access-card+.admin-access-card{margin-top:12px}.admin-access-card.muted{opacity:.82}.admin-access-card-top,.admin-access-footer{display:flex;align-items:center;justify-content:space-between;gap:12px}.admin-access-email{font-size:15px;font-weight:700;color:#f8fafc}.admin-access-meta,.admin-access-footer,.admin-access-note{font-size:12px;color:#e2e8f0ad}.admin-access-note,.admin-access-use-case{margin-top:10px}.admin-access-use-case{font-size:13px;line-height:1.5;color:#dbeafe}.admin-access-warning{margin-top:10px;padding:10px 12px;border-radius:12px;font-size:12px;line-height:1.5;color:#fde68a;background:#f59e0b24;border:1px solid rgba(245,158,11,.24)}.admin-access-status{padding:4px 10px;border-radius:999px;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.admin-access-status.pending{color:#fbbf24;background:#f59e0b1f}.admin-access-status.approved{color:#34d399;background:#34d3991f}.admin-access-status.rejected{color:#fda4af;background:#f43f5e1f}.admin-access-actions{display:flex;gap:10px}.admin-access-btn{padding:9px 12px;font-size:12px;font-weight:700}.admin-access-btn.approve{color:#082f49;background:linear-gradient(135deg,#7dd3fc,#38bdf8)}.admin-access-btn.trust{color:#dcfce7;background:#16a34a2e;border-color:#22c55e42}.admin-access-btn.reject{color:#fecaca;background:#7f1d1d57;border-color:#f8717138}.admin-access-empty,.admin-access-error{margin:24px;padding:18px;border-radius:14px;font-size:14px;line-height:1.6}.admin-access-empty{background:#1e293b8f;border:1px solid rgba(148,163,184,.14)}.admin-access-empty.compact{margin:0}.admin-access-error{background:#7f1d1d52;border:1px solid rgba(248,113,113,.22);color:#fecaca}.admin-access-close:hover,.admin-access-refresh:hover,.admin-access-btn:hover:not(:disabled){transform:translateY(-1px)}.admin-access-btn:disabled{opacity:.55;cursor:not-allowed}@media(max-width:720px){.admin-access-header,.admin-access-card-top,.admin-access-footer,.admin-access-toolbar{flex-direction:column;align-items:stretch}.admin-access-direct-grid{grid-template-columns:1fr}.admin-access-actions{width:100%;flex-direction:column}.admin-access-btn,.admin-access-close,.admin-access-refresh{width:100%}}.bug-report-overlay{position:fixed;inset:0;background:#0009;backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:10000;animation:bugReportFadeIn .15s ease-out}@keyframes bugReportFadeIn{0%{opacity:0}to{opacity:1}}.bug-report-modal{background:linear-gradient(135deg,#1e1e2e,#252535);border:1px solid rgba(255,255,255,.1);border-radius:16px;padding:32px;max-width:480px;width:90%;box-shadow:0 20px 60px #00000080;animation:bugReportSlideUp .2s ease-out}@keyframes bugReportSlideUp{0%{opacity:0;transform:translateY(20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.bug-report-icon{width:56px;height:56px;margin:0 auto 16px;color:#ef4444;background:#ef444426;border-radius:50%;display:flex;align-items:center;justify-content:center}.bug-report-icon.success{color:#10b981;background:#10b98126}.bug-report-icon svg{width:28px;height:28px}.bug-report-title{margin:0 0 8px;font-size:20px;font-weight:600;color:#fff;text-align:center}.bug-report-message{margin:0 0 24px;font-size:14px;color:#fff9;line-height:1.5;text-align:center}.bug-report-form{display:flex;flex-direction:column;gap:16px;margin-bottom:24px}.bug-report-field{display:flex;flex-direction:column;gap:6px}.bug-report-field label{font-size:12px;font-weight:500;color:#ffffffb3;text-transform:uppercase;letter-spacing:.5px}.bug-report-field input,.bug-report-field textarea{width:100%;padding:12px 14px;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:8px;color:#fff;font-size:14px;font-family:inherit;transition:all .2s;resize:vertical}.bug-report-field input:focus,.bug-report-field textarea:focus{outline:none;border-color:#f59e0b;background:#ffffff14;box-shadow:0 0 0 3px #f59e0b26}.bug-report-field input::placeholder,.bug-report-field textarea::placeholder{color:#ffffff4d}.bug-report-actions{display:flex;gap:12px;justify-content:flex-end}.bug-report-btn{padding:12px 24px;font-size:14px;font-weight:500;border:none;border-radius:8px;cursor:pointer;transition:all .2s}.bug-report-btn.cancel{background:#ffffff1a;color:#fffc}.bug-report-btn.cancel:hover{background:#ffffff26;color:#fff}.bug-report-btn.submit{background:linear-gradient(135deg,#f59e0b,#d97706);color:#fff}.bug-report-btn.submit:hover:not(:disabled){background:linear-gradient(135deg,#fbbf24,#f59e0b);transform:translateY(-1px);box-shadow:0 4px 12px #f59e0b66}.bug-report-btn.submit:disabled{opacity:.5;cursor:not-allowed}.bug-report-error{margin-top:12px;padding:10px 14px;background:#ef444426;border:1px solid rgba(239,68,68,.3);border-radius:8px;color:#fca5a5;font-size:13px;text-align:center}.pro-access-overlay{position:fixed;inset:0;z-index:10000;display:flex;align-items:center;justify-content:center;padding:20px;background:#030712b8;backdrop-filter:blur(6px)}.pro-access-modal{width:min(560px,100%);padding:28px;border:1px solid rgba(125,211,252,.16);border-radius:18px;background:radial-gradient(circle at top right,rgba(14,165,233,.18),transparent 34%),linear-gradient(160deg,#0f172afa,#111827fa);box-shadow:0 28px 80px #0206178c;color:#e5eef7}.pro-access-icon{width:58px;height:58px;margin:0 auto 16px;display:flex;align-items:center;justify-content:center;border-radius:50%;color:#7dd3fc;background:#0ea5e91f;border:1px solid rgba(125,211,252,.2)}.pro-access-icon.success{color:#34d399;background:#34d3991f;border-color:#34d39938}.pro-access-icon svg{width:28px;height:28px}.pro-access-title{margin:0 0 8px;font-size:22px;font-weight:600;text-align:center;color:#f8fafc}.pro-access-message{margin:0 0 24px;font-size:14px;line-height:1.6;text-align:center;color:#e2e8f0c2}.pro-access-form{display:flex;flex-direction:column;gap:16px}.pro-access-grid{display:grid;grid-template-columns:1fr 180px;gap:12px}.pro-access-field{display:flex;flex-direction:column;gap:6px}.pro-access-field label{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#bfdbfec7}.pro-access-field input,.pro-access-field select,.pro-access-field textarea{width:100%;padding:12px 14px;border:1px solid rgba(148,163,184,.2);border-radius:10px;background:#0f172ac7;color:#f8fafc;font-size:14px;font-family:inherit;transition:border-color .2s ease,box-shadow .2s ease,background .2s ease}.pro-access-field input:focus,.pro-access-field select:focus,.pro-access-field textarea:focus{outline:none;border-color:#38bdf8cc;background:#0f172af0;box-shadow:0 0 0 3px #38bdf824}.pro-access-field input::placeholder,.pro-access-field textarea::placeholder{color:#94a3b88c}.pro-access-helper{min-height:18px;font-size:12px;color:#7dd3fcc7}.pro-access-helper.warning{color:#fbbf24}.pro-access-note,.pro-access-error{padding:10px 12px;border-radius:10px;font-size:12px;line-height:1.5}.pro-access-note{color:#e2e8f0d1;background:#1e293ba6;border:1px solid rgba(148,163,184,.18)}.pro-access-error{color:#fecaca;background:#7f1d1d57;border:1px solid rgba(248,113,113,.32)}.pro-access-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:24px}.pro-access-btn{padding:12px 20px;border-radius:10px;font-size:14px;font-weight:600;border:1px solid transparent;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease,opacity .15s ease}.pro-access-btn:disabled{opacity:.55;cursor:not-allowed}.pro-access-btn.cancel{color:#dbeafe;background:#1e293be6;border-color:#94a3b82e}.pro-access-btn.submit{color:#082f49;background:linear-gradient(135deg,#7dd3fc,#38bdf8)}.pro-access-btn:not(:disabled):hover{transform:translateY(-1px)}.pro-access-btn.submit:not(:disabled):hover{box-shadow:0 12px 26px #0ea5e940}@media(max-width:640px){.pro-access-modal{padding:22px}.pro-access-grid{grid-template-columns:1fr}.pro-access-actions{flex-direction:column-reverse}.pro-access-btn{width:100%}}.app-header{display:flex;align-items:center;justify-content:space-between;height:29px;padding:0 var(--spacing-md);flex-shrink:0;background:var(--bg-secondary);border-bottom:1px solid var(--border-subtle);position:relative;z-index:1000;transition:transform .3s cubic-bezier(.4,0,.2,1)}.app-header.collapsed{transform:translateY(-100%)}.header-collapse-handle{position:absolute;bottom:-12px;left:50%;transform:translate(-50%);width:60px;height:12px;background:var(--bg-secondary);border:1px solid var(--border-subtle);border-top:none;border-bottom-left-radius:6px;border-bottom-right-radius:6px;display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:1001;transition:all .2s ease}.header-collapse-handle:hover{background:var(--bg-elevated);border-color:var(--accent-primary-dim);height:14px;bottom:-14px}.handle-bar{width:24px;height:2px;background:var(--text-muted);border-radius:2px;transition:background .2s ease}.header-collapse-handle:hover .handle-bar{background:var(--accent-primary);box-shadow:0 0 6px var(--accent-primary-glow)}.app-header-left{display:flex;align-items:center;gap:var(--spacing-lg)}.app-logo{display:flex;align-items:center;gap:var(--spacing-sm)}.app-logo-icon{position:relative;width:32px;height:18px;flex:0 0 auto;overflow:hidden;filter:drop-shadow(0 0 4px var(--accent-primary-glow))}.app-logo-icon img{position:absolute;left:0;top:50%;width:32px;height:32px;object-fit:contain;transform:translateY(-50%)}.app-logo-text{font-size:var(--font-size-md);font-weight:700;color:var(--text-primary);letter-spacing:-.2px;text-transform:uppercase;font-size:11px;letter-spacing:1px;text-decoration:none}.app-logo-text:hover{text-decoration:none}.app-user-name{max-width:140px;font-size:10px;font-weight:600;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.app-version-badge{font-size:9px;font-weight:600;color:var(--accent-primary);background:var(--accent-primary-dim);padding:1px 4px;border-radius:2px;border:1px solid var(--accent-primary-dim)}.app-header-tabs{display:flex;align-items:center;gap:2px;position:absolute;left:50%;transform:translate(-50%)}.app-header-tab{position:relative;padding:4px 12px;background:transparent;border:1px solid transparent;border-radius:var(--radius-sm);color:var(--text-secondary);font-size:11px;font-weight:500;text-transform:uppercase;cursor:pointer;transition:all .2s ease}.app-header-tab-label{display:inline-flex;align-items:center}.app-header-tab:hover:not(:disabled){color:var(--text-primary);background:var(--bg-hover)}.app-header-tab.active{color:var(--accent-primary);background:var(--accent-primary-dim);border-color:var(--accent-primary-dim);box-shadow:0 0 10px #06b6d41a}.app-header-tab.disabled{color:var(--text-disabled);cursor:not-allowed;opacity:.5}[data-theme=light] .app-header-tab.disabled{opacity:.72}.coming-soon-dot{position:absolute;top:4px;right:4px;width:4px;height:4px;background:var(--border-default);border-radius:50%}.app-header-right{display:flex;align-items:center;gap:var(--spacing-md)}.header-controls{display:flex;align-items:center;gap:2px}.header-pro-btn{padding:3px 8px;background:var(--accent-primary-dim);color:var(--accent-primary);font-size:10px;font-weight:700;text-transform:uppercase;border-radius:var(--radius-sm);border:2px solid rgba(248,113,113,.35);box-shadow:0 0 0 1px #38bdf840 inset;cursor:pointer;transition:all .2s ease}.header-pro-btn:hover{background:#06b6d433;border-color:#06b6d480}.header-icon-btn{width:28px;height:28px;display:flex;align-items:center;justify-content:center;background:transparent;border:1px solid transparent;border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;transition:all .2s ease}.header-icon-btn:hover{color:var(--text-primary);background:var(--bg-hover);border-color:var(--border-subtle)}.header-icon-btn.active{color:var(--accent-primary);background:var(--accent-primary-dim);border-color:var(--accent-primary-dim)}.header-icon-btn svg{width:14px;height:14px}.view-settings-wrapper{position:relative}.view-settings-popover{position:absolute;top:32px;right:0;min-width:250px;padding:10px;background:var(--surface-popover);border:1px solid var(--border-subtle);border-radius:8px;box-shadow:var(--shadow-popover);z-index:1200}.view-settings-section+.view-settings-section{margin-top:10px;padding-top:10px;border-top:1px solid var(--border-subtle)}.view-settings-title{font-size:10px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;margin-bottom:6px;letter-spacing:.6px}.view-settings-options{display:flex;flex-direction:column;gap:4px}.view-settings-options-row{flex-direction:row}.view-settings-option{width:100%;padding:6px 8px;background:var(--bg-surface);color:var(--text-primary);border:1px solid var(--border-subtle);border-radius:6px;font-size:11px;text-align:left;cursor:pointer;transition:all .15s ease}.theme-settings-option{display:inline-flex;align-items:center;justify-content:center;gap:5px;min-width:0;white-space:nowrap}.theme-settings-option svg{flex:0 0 auto}.view-settings-option:hover{background:var(--bg-hover);border-color:var(--accent-primary-dim)}.view-settings-option.active{background:var(--accent-primary-dim);color:var(--accent-primary);border-color:var(--accent-primary-dim);box-shadow:0 0 10px #06b6d41f}.header-badge{padding:2px 8px;background:var(--bg-surface);color:var(--text-secondary);font-size:10px;font-weight:600;text-transform:uppercase;border-radius:var(--radius-sm);border:1px solid var(--border-subtle)}.header-badge.private{color:var(--text-secondary)}.header-badge.free{color:#cbd5e1;border-color:#94a3b83d}.header-badge.pro{color:#fbbf24;background:#f59e0b1f;border-color:#f59e0b42}.header-badge.verified{color:#7dd3fc;background:#0ea5e91f;border-color:#7dd3fc42}.header-badge.dev{color:#a78bfa;background:#8b5cf61f;border-color:#a78bfa42}.header-signout-btn{padding:2px 8px;background:#ef44441f;color:#fca5a5;font-size:10px;font-weight:600;text-transform:uppercase;border-radius:var(--radius-sm);border:1px solid rgba(239,68,68,.3);cursor:pointer;transition:all .2s ease}.header-signout-btn:hover{color:#fee2e2;background:#ef444433;border-color:#ef444480}.header-icon-btn.bug-report-btn{color:#ef4444}.header-icon-btn.bug-report-btn:hover{color:#f87171;background:#ef44441a;border-color:#ef44444d}.header-icon-btn.clear-all-btn:hover{color:#ef4444;background:#ef44441a;border-color:#ef44444d}.mobile-workbench-trigger,.mobile-workbench-menu,.mobile-workbench-backdrop{display:none}@media(max-width:800px),(max-height:500px)and (max-width:900px){.app-header.compact{height:48px;min-height:48px;padding:env(safe-area-inset-top) 8px 0;gap:8px;justify-content:flex-start}.app-header.compact .app-header-left{flex:0 0 auto}.app-header.compact .app-logo{gap:0}.app-header.compact .app-logo-icon{width:30px;height:20px}.app-header.compact .app-logo-icon img{width:30px;height:30px}.app-header.compact .app-logo-text,.app-header.compact .app-user-name,.app-header.compact>.app-header-tabs,.app-header.compact .app-header-right{display:none}.app-header.compact .mobile-workbench-trigger{display:flex;height:44px;min-width:0;flex:1;align-items:center;justify-content:center;gap:8px;padding:0 12px;border:1px solid var(--border-default);border-radius:var(--radius-lg);background:var(--surface-control);color:var(--text-primary);font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.app-header.compact .mobile-workbench-trigger span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app-header.compact .mobile-workbench-backdrop{display:block;position:fixed;inset:0;z-index:1001;width:100vw;height:100dvh;background:var(--overlay-scrim);border:0}.app-header.compact .mobile-workbench-menu{display:flex;position:fixed;top:calc(52px + env(safe-area-inset-top));left:max(8px,env(safe-area-inset-left));right:max(8px,env(safe-area-inset-right));z-index:1002;max-height:calc(100dvh - 64px - env(safe-area-inset-top));flex-direction:column;gap:4px;padding:8px;overflow-y:auto;border:1px solid var(--border-default);border-radius:var(--radius-xl);background:var(--surface-popover);box-shadow:var(--shadow-xl)}.mobile-workbench-menu-header{display:flex;position:sticky;top:-8px;z-index:1;min-height:44px;align-items:center;justify-content:space-between;padding:8px 0 4px 10px;background:var(--surface-popover);color:var(--text-secondary);font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.mobile-workbench-menu-header button{display:inline-flex;width:44px;height:44px;align-items:center;justify-content:center;border-radius:var(--radius-lg)}.mobile-workbench-option{display:flex;min-height:44px;align-items:center;justify-content:space-between;padding:0 12px;border:1px solid transparent;border-radius:var(--radius-lg);background:var(--surface-control);color:var(--text-secondary);font-size:12px;font-weight:650;text-align:left}.mobile-workbench-option.active{border-color:var(--border-glow);background:var(--accent-primary-dim);color:var(--accent-primary)}.mobile-workbench-option>span:last-child:not(:first-child){color:var(--text-muted);font-size:10px;font-weight:500}.mobile-workbench-utilities{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:6px;padding-top:10px;border-top:1px solid var(--border-subtle)}.mobile-workbench-utility{display:inline-flex;min-height:48px;align-items:center;justify-content:center;gap:8px;padding:0 12px;border:1px solid var(--border-default);border-radius:var(--radius-lg);background:var(--surface-control);color:var(--text-primary);font-size:12px;font-weight:700}.mobile-workbench-utility.danger{border-color:#ef444447;background:#ef444414;color:var(--danger, #ef4444)}.mobile-view-settings{padding:2px 4px 8px}.mobile-view-settings .view-settings-title{font-size:11px}.mobile-view-settings .view-settings-option{min-height:44px;padding:10px 12px;font-size:12px}}.floating-action-bar{position:absolute;bottom:16px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:var(--spacing-sm);z-index:320}.fab-actions{display:flex;align-items:center;gap:var(--spacing-xs);padding:var(--spacing-sm);background:var(--surface-floating);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--surface-floating-border);border-radius:var(--radius-xl);box-shadow:var(--surface-floating-shadow)}.fab-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:var(--spacing-md);min-width:64px;background:transparent;border:1px solid transparent;border-radius:var(--radius-lg);color:var(--text-secondary);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--transition-fast)}.fab-btn:hover:not(:disabled){color:var(--text-primary);background:var(--surface-floating-hover);border-color:var(--surface-floating-border)}.fab-btn:active:not(:disabled){transform:scale(.96)}.fab-btn.active{color:var(--accent-sketch);background:var(--accent-sketch-dim);border-color:var(--accent-sketch)}.fab-btn:disabled,.fab-btn-disabled{opacity:.46;cursor:not-allowed}.fab-btn-genie{color:var(--accent-primary);background:var(--accent-primary-dim);border-color:var(--border-glow)}.fab-btn-genie:hover:not(:disabled){color:#fff;background:linear-gradient(135deg,#2563eb,#3b82f6);border-color:var(--accent-primary);box-shadow:0 12px 28px var(--accent-primary-glow)}.fab-divider{width:1px;height:40px;background:linear-gradient(180deg,transparent,var(--border-strong),transparent);margin:0 var(--spacing-xs)}.fab-command-input{width:280px;position:relative;display:flex;align-items:center}.fab-image-preview{display:flex;align-items:center;gap:8px;width:280px;max-width:calc(100vw - 32px);padding:6px 8px;background:var(--surface-floating);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--surface-floating-border);border-radius:var(--radius-lg);box-shadow:var(--surface-floating-shadow);color:var(--text-secondary);font-size:var(--font-size-xs)}.fab-image-preview img{width:34px;height:34px;flex:0 0 auto;object-fit:cover;border:1px solid var(--border-subtle);border-radius:var(--radius-md);background:var(--bg-tertiary)}.fab-image-preview span{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fab-image-preview button{display:flex;align-items:center;justify-content:center;width:22px;height:22px;flex:0 0 auto;background:transparent;border:none;border-radius:var(--radius-full);color:var(--text-muted);cursor:pointer;transition:all var(--transition-fast)}.fab-image-preview button:hover{color:var(--text-primary);background:var(--surface-floating-hover)}.fab-ai-remaining{display:inline-flex;align-items:center;gap:8px;font-size:10px;color:var(--text-muted);background:var(--surface-floating-muted);border:1px solid var(--surface-floating-border);border-radius:var(--radius-full);padding:4px 10px;margin-top:6px}.fab-signin-btn{padding:2px 8px;background:var(--accent-primary-dim);border:1px solid var(--border-glow);border-radius:var(--radius-full);color:var(--accent-primary);font-size:10px;cursor:pointer;transition:all var(--transition-fast)}.fab-signin-btn:hover{background:var(--surface-control-active);border-color:var(--accent-primary)}.fab-command-input input{width:100%;padding:var(--spacing-sm) 40px var(--spacing-sm) 42px;background:var(--surface-floating-input);backdrop-filter:blur(16px);border:1px solid var(--surface-floating-border);border-radius:var(--radius-full);color:var(--text-primary);font-size:var(--font-size-sm);text-align:center;transition:all var(--transition-fast)}.fab-command-input input::placeholder{color:var(--text-muted)}.fab-command-input input:focus{outline:none;border-color:var(--accent-primary);box-shadow:var(--focus-ring);background:var(--surface-popover)}.mobile-rail-restore{display:none}@media(max-width:800px),(max-height:500px)and (max-width:900px){.floating-action-bar.compact{right:0;bottom:max(8px,env(safe-area-inset-bottom));left:0;width:100%;max-width:none;transform:none;gap:6px;padding:0 8px;pointer-events:none}.floating-action-bar.compact>*{pointer-events:auto}.floating-action-bar.compact>*:not(.mobile-rail-restore){transition:opacity .16s ease,transform .16s ease,visibility 0s linear 0s}.floating-action-bar.compact .mobile-rail-restore{position:absolute;bottom:0;left:50%;display:flex;width:48px;height:32px;align-items:center;justify-content:center;transform:translate(-50%,12px);opacity:0;visibility:hidden;pointer-events:none;border:1px solid var(--surface-floating-border);border-radius:var(--radius-full);background:var(--surface-floating);color:var(--accent-primary);box-shadow:var(--surface-floating-shadow);transition:opacity .14s ease,transform .14s ease,visibility 0s linear .14s}.floating-action-bar.compact.minimized{height:32px}.floating-action-bar.compact.minimized>*:not(.mobile-rail-restore){transform:translateY(40px);opacity:0;visibility:hidden;pointer-events:none;transition:opacity .16s ease,transform .16s ease,visibility 0s linear .16s}.floating-action-bar.compact.minimized .mobile-rail-restore{transform:translate(-50%);opacity:1;visibility:visible;pointer-events:auto;transition:opacity .14s ease,transform .14s ease,visibility 0s linear 0s}.floating-action-bar.compact .fab-actions{width:min(100%,374px);min-height:52px;justify-content:center;gap:2px;padding:4px;border-radius:var(--radius-xl)}.floating-action-bar.compact .fab-btn{min-width:52px;min-height:44px;flex:1 1 0;gap:1px;padding:4px 2px;border-radius:var(--radius-md);font-size:9px}.floating-action-bar.compact .fab-btn-revolve,.floating-action-bar.compact .fab-divider,.floating-action-bar.compact .fab-ai-remaining{display:none}.floating-action-bar.compact .fab-command-input,.floating-action-bar.compact .fab-image-preview{width:min(100%,374px);max-width:100%}.floating-action-bar.compact .fab-command-input{min-height:44px}.floating-action-bar.compact .fab-command-input input{font-size:16px}.floating-action-bar.compact .fab-image-btn,.floating-action-bar.compact .stt-btn{min-width:44px;min-height:44px}.floating-action-bar.compact .fab-sub-menu{bottom:108px;width:min(calc(100vw - 16px),360px)}}.fab-command-input.dragging-image input{border-color:var(--accent-primary);background:var(--surface-popover);box-shadow:0 0 0 3px var(--accent-primary-glow)}.fab-command-input.focused input{text-align:left}.fab-command-input.focused input::placeholder{opacity:.5}.fab-command-input.processing{position:relative}.fab-command-input.processing input{padding-left:36px;color:var(--text-muted);border-color:var(--accent-primary);box-shadow:0 0 8px var(--accent-primary-glow);animation:pulseGlow 1.5s ease-in-out infinite}.fab-command-input.processing .fab-image-btn.spinning{opacity:1;color:var(--accent-primary);pointer-events:none}.fab-command-input.listening input{border-color:#ef4444;box-shadow:0 0 8px #ef444466;animation:pulseListening 1.5s ease-in-out infinite}@keyframes pulseListening{0%,to{box-shadow:0 0 8px #ef44444d}50%{box-shadow:0 0 16px #ef444499}}@keyframes pulseGlow{0%,to{box-shadow:0 0 8px #3b82f64d}50%{box-shadow:0 0 16px #3b82f699}}.fab-image-btn{position:absolute;left:7px;top:50%;transform:translateY(-50%);width:30px;height:30px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;border-radius:var(--radius-full);color:var(--text-muted);cursor:pointer;transition:all var(--transition-fast);z-index:1}.fab-image-btn:hover:not(:disabled),.fab-image-btn.active{color:var(--accent-primary);background:var(--accent-primary-dim)}.fab-image-btn:disabled{opacity:.5;cursor:not-allowed}.fab-image-upload-input{display:none}.fab-image-spin{animation:fabIconSpin 1s linear infinite}@keyframes fabIconSpin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.stt-btn{position:absolute;right:8px;top:50%;transform:translateY(-50%);width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;border-radius:var(--radius-full);color:var(--text-muted);cursor:pointer;transition:all var(--transition-fast)}.stt-btn:hover:not(:disabled){color:var(--text-primary);background:var(--surface-floating-hover)}.stt-btn.active{color:#ef4444!important;background:#ef44441a!important;animation:micPulse 2s ease-in-out infinite}@keyframes micPulse{0%,to{transform:translateY(-50%) scale(1)}50%{transform:translateY(-50%) scale(1.1)}}.fab-sub-menu{position:absolute;bottom:calc(100% + 12px);left:20px;display:flex;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);background:var(--surface-floating);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--surface-floating-border);border-radius:var(--radius-xl);box-shadow:var(--surface-floating-shadow);animation:subMenuPop .3s cubic-bezier(.34,1.56,.64,1);transform-origin:bottom left;z-index:100}@keyframes subMenuPop{0%{opacity:0;transform:translateY(10px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.sub-menu-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:var(--spacing-sm) var(--spacing-md);min-width:80px;background:transparent;border:1px solid transparent;border-radius:var(--radius-lg);color:var(--text-secondary);font-size:10px;font-weight:var(--font-weight-medium);white-space:nowrap;cursor:pointer;transition:all var(--transition-fast)}.sub-menu-item:hover:not(:disabled){color:var(--text-primary);background:var(--surface-floating-hover);border-color:var(--surface-floating-border)}.sub-menu-item.active{color:var(--accent-sketch);background:var(--accent-sketch-dim);border-color:var(--accent-sketch)}.sub-menu-item:disabled{opacity:.3;cursor:not-allowed}.fab-command-input.success input{border-color:var(--accent-primary);box-shadow:0 0 12px var(--accent-primary-glow);animation:successPulse .6s ease-out}@keyframes successPulse{0%{box-shadow:0 0 20px #3b82f6cc}to{box-shadow:0 0 #3b82f600}}.fab-error-toast{position:absolute;bottom:100%;left:50%;transform:translate(-50%);margin-bottom:12px;display:flex;align-items:center;gap:12px;padding:12px 16px;background:#ef4444f2;backdrop-filter:blur(8px);border:1px solid rgba(255,100,100,.3);border-radius:var(--radius-lg);color:#fff;font-size:13px;font-weight:500;box-shadow:0 4px 24px #ef444466;animation:toastSlideIn .3s ease-out;cursor:pointer;white-space:nowrap}.fab-error-toast .toast-close{background:transparent;border:none;color:#ffffffb3;font-size:18px;cursor:pointer;padding:0 4px;line-height:1}.fab-error-toast .toast-close:hover{color:#fff}@keyframes toastSlideIn{0%{opacity:0;transform:translate(-50%) translateY(10px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.status-bar{display:flex;align-items:center;justify-content:space-between;height:18px;padding:0 var(--spacing-sm);background:var(--surface-panel);border-top:1px solid var(--border-subtle);font-size:10px;color:var(--text-muted);flex-shrink:0}.status-bar-left,.status-bar-center,.status-bar-right{display:flex;align-items:center;gap:var(--spacing-md)}.status-bar-left{flex:1;min-width:0}.status-bar-center{flex:0 0 auto}.status-bar-right{flex:1;justify-content:flex-end}.status-item{color:var(--text-secondary);display:block;max-width:min(46vw,620px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.status-coords{display:flex;align-items:center;gap:var(--spacing-lg);font-family:var(--font-mono)}.coord{color:var(--text-muted)}.coord-value{color:var(--text-secondary);min-width:60px;display:inline-block}.status-badge{padding:2px var(--spacing-sm);background:var(--surface-control);border-radius:var(--radius-sm);color:var(--text-muted)}.status-units{padding:2px var(--spacing-sm);background:var(--accent-primary-dim);border-radius:var(--radius-sm);color:var(--accent-primary);font-weight:var(--font-weight-semibold)}.task-pane{display:flex;flex-direction:column;background:var(--surface-popover);border-left:1px solid var(--border-default);box-shadow:inset 1px 0 0 var(--border-subtle);transition:width var(--transition-normal)}.task-pane.collapsed{width:40px;min-width:40px}.task-pane.expanded{width:182px;min-width:182px}.task-pane.expanded.electronics-active{width:260px;min-width:260px}.task-pane.expanded.properties-active{width:224px;min-width:224px}.task-pane.expanded.appearances-active{width:248px;min-width:248px}.task-pane-tabs-vertical{display:flex;flex-direction:column;gap:2px;padding:var(--spacing-sm)}.task-pane-tab-vertical{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:var(--spacing-sm);background:transparent;border:1px solid transparent;border-radius:var(--radius-md);color:var(--text-muted);cursor:pointer;transition:all var(--transition-fast);writing-mode:vertical-lr;text-orientation:mixed}.task-pane-tab-vertical:hover{color:var(--text-primary);background:var(--surface-control-hover);border-color:var(--border-subtle)}.task-pane-tab-vertical.active{color:var(--accent-primary);background:var(--accent-primary-dim);border-color:var(--border-glow)}.tab-label-vertical{font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);margin-top:var(--spacing-xs)}.task-pane-toggle{margin-top:auto;margin-bottom:var(--spacing-md);align-self:center;width:24px;height:24px;display:flex;align-items:center;justify-content:center;background:var(--surface-control);border:1px solid var(--border-default);border-radius:var(--radius-sm);color:var(--text-muted);cursor:pointer;transition:all var(--transition-fast)}.task-pane-toggle:hover{color:var(--text-primary);background:var(--surface-control-hover);border-color:var(--accent-primary)}.task-pane-header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-sm) var(--spacing-md);background:var(--surface-popover);border-bottom:1px solid var(--border-default)}.task-pane-title{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--text-secondary)}.task-pane-close{display:flex;align-items:center;justify-content:center;width:24px;height:24px;background:transparent;border:none;border-radius:var(--radius-sm);color:var(--text-muted);cursor:pointer;transition:all var(--transition-fast)}.task-pane-close:hover{color:var(--text-primary);background:var(--bg-surface)}.task-pane-tabs-horizontal{display:flex;gap:2px;padding:var(--spacing-xs);background:var(--surface-panel-muted);border-bottom:1px solid var(--border-default)}.task-pane-tab{flex:1;display:flex;align-items:center;justify-content:center;padding:var(--spacing-sm);background:transparent;border:1px solid transparent;border-radius:var(--radius-sm);color:var(--text-muted);cursor:pointer;transition:all var(--transition-fast)}.task-pane-tab:hover{color:var(--text-primary);background:var(--bg-hover);border-color:var(--border-subtle)}.task-pane-tab.active{color:var(--accent-primary);background:var(--accent-primary-dim);border-color:var(--border-glow)}.task-pane-content{flex:1;display:flex;align-items:center;justify-content:center;padding:var(--spacing-lg);min-width:0;overflow:auto}.task-pane.electronics-active .task-pane-content{align-items:stretch;justify-content:flex-start;padding:10px}.task-pane.properties-active .task-pane-content{align-items:stretch;justify-content:flex-start;padding:12px}.task-pane.appearances-active .task-pane-content{align-items:stretch;justify-content:flex-start;padding:0;overflow-y:auto;overflow-x:hidden}.properties-panel{display:flex;width:100%;flex-direction:column;gap:16px;color:#0f172a}.properties-section{display:flex;flex-direction:column;gap:8px}.properties-section+.properties-section{border-top:1px solid #cbd5e1;padding-top:14px}.properties-section h3{margin:0;color:#0f172a;font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.properties-section p{margin:0;color:#475569;font-size:11px;line-height:1.45}.display-unit-toggle{display:grid;grid-template-columns:1fr 1fr;overflow:hidden;border:1px solid #94a3b8;border-radius:5px}.display-unit-toggle button{border:0;background:#f8fafc;color:#334155;cursor:pointer;font-size:11px;font-weight:600;padding:7px 5px}.display-unit-toggle button+button{border-left:1px solid #94a3b8}.display-unit-toggle button.active{background:#2563eb;color:#fff}.properties-object-name{overflow:hidden;color:#0f172a;font-size:12px;font-weight:700;text-overflow:ellipsis;white-space:nowrap}.properties-readouts{display:flex;flex-direction:column;gap:5px;margin:0}.properties-readout{display:flex;align-items:baseline;justify-content:space-between;gap:8px;font-size:11px}.properties-readout dt{color:#64748b}.properties-readout dd{margin:0;color:#0f172a;font-variant-numeric:tabular-nums;font-weight:600}.task-pane-placeholder{display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--spacing-md);color:var(--text-muted)}.placeholder-icon{width:48px;height:48px;display:flex;align-items:center;justify-content:center;background:var(--surface-control);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);color:var(--text-disabled)}.placeholder-icon svg{width:24px;height:24px}.task-pane-placeholder h3{font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);color:var(--text-secondary);margin:0}.task-pane-placeholder p{font-size:var(--font-size-sm);color:var(--text-muted);margin:0}.placeholder-hint{font-size:var(--font-size-xs);color:var(--text-disabled);margin-top:var(--spacing-sm)}.material-picker select,.material-field input,.material-field select{width:100%;box-sizing:border-box;border:1px solid #94a3b8;border-radius:5px;background:#f8fafc;color:#0f172a;font:inherit;font-size:12px;padding:6px 8px}.material-picker select:disabled{color:#94a3b8;background:#f1f5f9}.material-summary{color:#334155!important;font-variant-numeric:tabular-nums}.material-actions,.material-editor-actions{display:flex;flex-wrap:wrap;gap:6px}.material-editor-actions{justify-content:flex-end;margin-top:4px}.material-btn{border:1px solid #94a3b8;border-radius:5px;background:#f8fafc;color:#334155;cursor:pointer;font-size:11px;font-weight:600;padding:5px 10px}.material-btn:hover{background:#e2e8f0}.material-btn.primary{border-color:#2563eb;background:#2563eb;color:#fff}.material-btn.primary:disabled{opacity:.5;cursor:default}.material-btn.danger{color:#b91c1c;border-color:#fca5a5}.material-editor{display:flex;flex-direction:column;gap:6px}.material-editor-title{color:#0f172a;font-size:12px;font-weight:700}.material-field{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);align-items:center;gap:8px;font-size:11px;color:#64748b}.material-field-input{display:flex;align-items:center;gap:6px;min-width:0}.material-field-input input{flex:1;min-width:0}.material-field-input em{flex:none;font-style:normal;color:#94a3b8;font-size:10px;min-width:34px}.appearances-panel{padding:10px 12px 84px;display:flex;flex-direction:column;gap:10px;font-size:12px;width:100%;min-width:0;box-sizing:border-box}.appearances-hint{color:#64748b;font-size:11px;line-height:1.4}.appearance-group-title{font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:#64748b;margin:2px 0}.appearance-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.appearance-swatch{display:flex;flex-direction:column;align-items:center;gap:4px;background:none;border:1px solid transparent;border-radius:8px;padding:6px 2px;cursor:pointer;color:inherit;min-width:0}.appearance-swatch:hover:not(:disabled){border-color:#cbd5e1}.appearance-swatch:disabled{opacity:.45;cursor:default}.appearance-swatch.active{border-color:#2563eb;background:#2563eb14}.appearance-swatch-ball{width:32px;height:32px;border-radius:50%;box-shadow:inset -4px -6px 10px #00000038,0 1px 2px #00000040}.appearance-swatch-label{font-size:10px;text-align:center;line-height:1.15;overflow-wrap:anywhere}.appearance-finish{display:flex;flex-direction:column;gap:6px}.appearance-finish label{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:11px}.appearance-finish label>span{min-width:60px}.appearance-finish input[type=range]{flex:1;min-width:0}.appearance-finish em{font-style:normal;font-variant-numeric:tabular-nums;min-width:30px;text-align:right;color:#64748b}.plane-rotation-widget{display:flex;flex-direction:column;gap:8px;padding:10px;background:#1e1e23f2;border-radius:8px;border:1px solid rgba(255,255,255,.1)}.plane-rotation-widget.compact{padding:6px;gap:4px}.prw-header{display:flex;align-items:center;gap:6px;font-size:11px;font-weight:500;color:#ffffffb3;text-transform:uppercase;letter-spacing:.5px}.prw-reset-btn{margin-left:auto;padding:3px;background:transparent;border:1px solid rgba(255,255,255,.2);border-radius:4px;color:#ffffff80;cursor:pointer;transition:all .15s ease}.prw-reset-btn:hover{background:#ffffff1a;color:#fff;border-color:#fff6}.prw-visual{display:flex;justify-content:center;padding:8px 0}.prw-visual svg{filter:drop-shadow(0 2px 4px rgba(0,0,0,.3))}.prw-ring{transition:stroke .2s ease}.prw-ring:hover{stroke-opacity:.6}.prw-handle{cursor:grab;transition:all .15s ease;filter:drop-shadow(0 1px 3px rgba(0,0,0,.5))}.prw-handle:hover{r:10;filter:drop-shadow(0 0 8px currentColor)}.prw-handle.active{cursor:grabbing;r:12}.prw-inputs{display:flex;flex-direction:column;gap:4px}.prw-input-row{display:flex;align-items:center;gap:6px}.prw-label{width:16px;height:16px;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;border-radius:3px;color:#fff}.prw-label-x{background:#ff6464}.prw-label-y{background:#64ff64;color:#1a1a1a}.prw-label-z{background:#64c8ff}.prw-input{width:50px;min-width:50px;max-width:50px;padding:4px 6px;background:#0000004d;border:1px solid rgba(255,255,255,.15);border-radius:4px;color:#fff;font-size:12px;font-family:SF Mono,Monaco,monospace;text-align:right;transition:border-color .15s ease}.prw-input:focus{outline:none;border-color:#3b82f6}.prw-input:hover{border-color:#ffffff4d}.prw-input::-webkit-inner-spin-button,.prw-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.prw-input{appearance:textfield;-moz-appearance:textfield}.prw-unit{font-size:11px;color:#fff6;width:12px}.plane-rotation-widget.compact .prw-header{font-size:10px}.plane-rotation-widget.compact .prw-input{padding:3px 5px;font-size:11px}.plane-rotation-widget.compact .prw-label{width:14px;height:14px;font-size:9px}.plane-navigator{position:fixed;top:75px;right:calc(var(--task-pane-width, 182px) + var(--right-panels-width, 260px) + 8px);z-index:9999;display:flex;flex-direction:column;gap:6px;background:#0f1219f2;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid rgba(255,255,255,.12);border-top-left-radius:var(--radius-md);border-bottom-left-radius:var(--radius-md);border-top-right-radius:0;border-bottom-right-radius:0;border-right:none;padding:10px;box-shadow:-4px 4px 16px #0006,0 0 0 1px #ffffff0d inset;min-width:240px;width:240px;transition:right .2s ease-out}.pn-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:var(--spacing-xs);border-bottom:1px solid rgba(255,255,255,.08)}.pn-title{display:flex;align-items:center;gap:6px;color:var(--text-primary);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold)}.pn-close{display:flex;align-items:center;justify-content:center;width:20px;height:20px;background:transparent;border:none;border-radius:var(--radius-sm);color:var(--text-muted);cursor:pointer;transition:all var(--transition-fast)}.pn-close:hover{background:#ffffff1a;color:var(--text-primary)}.pn-current-plane{display:flex;align-items:center;gap:var(--spacing-md)}.pn-base-selector{position:relative}.pn-base-btn{display:flex;align-items:center;justify-content:center;padding:var(--spacing-sm) var(--spacing-md);background:#ffffff14;border:2px solid var(--plane-color, #64c8ff);border-radius:var(--radius-md);color:var(--plane-color, #64c8ff);font-size:var(--font-size-md);font-weight:var(--font-weight-bold);cursor:pointer;transition:all var(--transition-fast);min-width:48px}.pn-base-btn:hover{background:#ffffff26}.pn-base-dropdown{position:absolute;top:100%;left:0;margin-top:4px;display:flex;flex-direction:column;gap:2px;background:var(--bg-elevated);border:1px solid rgba(255,255,255,.1);border-radius:var(--radius-md);padding:4px;z-index:10}.pn-base-dropdown button{padding:var(--spacing-sm) var(--spacing-md);border:none;border-radius:var(--radius-sm);font-weight:var(--font-weight-semibold);cursor:pointer;transition:all var(--transition-fast)}.pn-base-dropdown button.xy{background:#64c8ff26;color:#64c8ff}.pn-base-dropdown button.xz{background:#64ff6426;color:#64ff64}.pn-base-dropdown button.yz{background:#ff646426;color:#ff6464}.pn-base-dropdown button:hover{filter:brightness(1.2)}.pn-offset{display:flex;align-items:center;gap:var(--spacing-sm);flex:1}.pn-offset-label{color:var(--text-muted);font-size:var(--font-size-sm)}.pn-offset-input{width:80px;padding:var(--spacing-xs) var(--spacing-sm);background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-sm);color:var(--text-primary);font-family:var(--font-mono);font-size:var(--font-size-md);text-align:center}.pn-offset-input:focus{outline:none;border-color:var(--accent-primary)}.pn-nav{display:flex;align-items:center;justify-content:center;gap:8px;padding:4px 0}.pn-nav-btn{display:flex;flex-direction:column;align-items:center;gap:1px;padding:4px 10px;background:#3b82f626;border:1px solid rgba(59,130,246,.3);border-radius:var(--radius-sm);color:#60a5fa;font-size:10px;cursor:pointer;transition:all var(--transition-fast)}.pn-nav-btn:hover{background:#3b82f64d;border-color:#3b82f680}.pn-nav-btn:active{transform:scale(.95)}.pn-offset-display{padding:4px 8px;background:#ffffff0d;border-radius:var(--radius-sm);color:var(--text-primary);font-family:var(--font-mono);font-size:var(--font-size-sm);font-weight:var(--font-weight-bold);min-width:80px;max-width:80px;overflow:hidden;text-overflow:ellipsis;text-align:center}.pn-step-section{display:flex;align-items:center;gap:var(--spacing-sm);padding-top:var(--spacing-xs);border-top:1px solid rgba(255,255,255,.08)}.pn-step-label{color:var(--text-muted);font-size:var(--font-size-sm)}.pn-step-presets{display:flex;gap:4px;flex:1}.pn-step-btn{padding:var(--spacing-xs) var(--spacing-sm);background:#ffffff0d;border:1px solid var(--border-default);border-radius:var(--radius-sm);color:var(--text-secondary);font-size:var(--font-size-sm);cursor:pointer;transition:all var(--transition-fast);min-width:32px}.pn-step-btn:hover{background:#ffffff1a;color:var(--text-primary)}.pn-step-btn.active{background:#3b82f633;border-color:#3b82f666;color:#60a5fa}.pn-step-custom{width:50px;padding:var(--spacing-xs) var(--spacing-sm);background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-sm);color:var(--text-primary);font-family:var(--font-mono);font-size:var(--font-size-sm);text-align:center}.pn-step-custom:focus{outline:none;border-color:var(--accent-primary)}.pn-actions{padding-top:4px}.pn-sketch-btn{width:100%;padding:6px 10px;background:linear-gradient(135deg,#2563eb,#3b82f6);border:none;border-radius:var(--radius-sm);color:#fff;font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);cursor:pointer;transition:all var(--transition-fast)}.pn-sketch-btn:hover{filter:brightness(1.1);box-shadow:0 4px 12px #3b82f64d}.pn-sketch-btn:active{transform:scale(.98)}.pn-hint{text-align:center;color:var(--text-muted);font-size:var(--font-size-xs);padding-top:var(--spacing-xs)}.evaluate-panel{position:absolute;top:80px;right:280px;background:#1a1f28f2;backdrop-filter:blur(10px);border:1px solid rgba(0,217,255,.3);border-radius:6px;padding:20px 8px 8px;min-width:160px;max-width:180px;z-index:100;box-shadow:0 4px 16px #0006;cursor:default;user-select:none}.evaluate-panel.dragging{cursor:grabbing;opacity:.9}.evaluate-panel-drag-handle{position:absolute;top:0;left:0;right:0;height:18px;display:flex;align-items:center;justify-content:center;cursor:grab;color:#ffffff4d;border-radius:6px 6px 0 0;transition:all .2s}.evaluate-panel-drag-handle:hover{background:#ffffff0d;color:#00d9ff99}.evaluate-panel-header{display:flex;align-items:center;gap:5px;font-size:10px;font-weight:600;color:#00d9ff;margin-bottom:6px;padding-bottom:4px;border-bottom:1px solid rgba(255,255,255,.1)}.evaluate-panel-header svg{width:12px;height:12px}.evaluate-result{margin-bottom:8px}.evaluate-distance{background:#00d9ff1a;border:1px solid rgba(0,217,255,.3);border-radius:4px;padding:4px 6px;text-align:center}.distance-value{font-size:13px;font-weight:600;color:#00d9ff;font-family:var(--font-mono, "JetBrains Mono", monospace)}.evaluate-hint{color:var(--text-secondary, #a0a0a0);font-size:9px;text-align:center;padding:4px;background:#ffffff08;border-radius:3px}.evaluate-circle-result{background:#ff00ff1a;border:1px solid rgba(255,0,255,.3);border-radius:4px;padding:6px}.circle-type{display:flex;align-items:center;gap:4px;font-size:10px;color:#f0f;margin-bottom:4px}.circle-values{display:flex;flex-direction:column;gap:2px}.circle-value{display:flex;align-items:center;gap:4px;font-size:10px;font-family:var(--font-mono, "JetBrains Mono", monospace)}.circle-value .label{color:#ff00ffb3;min-width:24px}.circle-value .value{color:#f0f;font-weight:600}.evaluate-setting-row.circle-mode label{color:#f0f}.evaluate-settings{display:flex;flex-direction:column;gap:4px;margin-bottom:6px}.evaluate-setting-row{display:flex;justify-content:space-between;align-items:center;gap:6px}.evaluate-setting-row label{font-size:9px;color:var(--text-secondary, #a0a0a0)}.evaluate-select{padding:2px 4px;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:3px;color:var(--text-primary, #fff);font-size:9px;cursor:pointer;min-width:45px}.evaluate-select:focus{outline:none;border-color:#00d9ff}.evaluate-checkbox{width:12px;height:12px;cursor:pointer;accent-color:#00d9ff}.evaluate-components{display:flex;gap:4px;margin-bottom:6px;padding:4px;background:#ffffff05;border-radius:3px}.component-item{flex:1;font-size:8px;font-family:var(--font-mono, "JetBrains Mono", monospace);padding:2px 3px;border-radius:2px;text-align:center}.component-item.dx{background:#ff646426;color:#ff6b6b}.component-item.dy{background:#64ff6426;color:#6bff6b}.component-item.dz{background:#6464ff26;color:#6b6bff}.precision-control{display:flex;flex-direction:column;gap:3px}.precision-slider{flex:1;-webkit-appearance:none;appearance:none;height:3px;background:#ffffff1a;border-radius:2px;cursor:pointer}.precision-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:10px;height:10px;background:#00d9ff;border-radius:50%;cursor:pointer;transition:transform .2s}.precision-slider::-webkit-slider-thumb:hover{transform:scale(1.2)}.precision-value{font-size:9px;color:var(--text-secondary, #a0a0a0);text-align:left}.evaluate-points{border-top:1px solid rgba(255,255,255,.1);padding-top:6px}.points-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}.points-header span{font-size:8px;color:var(--text-secondary, #a0a0a0)}.clear-btn{display:flex;align-items:center;justify-content:center;width:18px;height:18px;background:#ef44441a;border:1px solid rgba(239,68,68,.3);border-radius:3px;color:#ef4444;cursor:pointer;transition:all .2s}.clear-btn svg{width:10px;height:10px}.clear-btn:hover{background:#ef444433;border-color:#ef4444}.points-list{display:flex;flex-direction:column;gap:2px}.point-item{font-size:8px;font-family:var(--font-mono, "JetBrains Mono", monospace);color:var(--text-secondary, #a0a0a0);padding:2px 4px;background:#ffffff08;border-radius:2px}[data-theme=light] .evaluate-panel{min-width:190px;max-width:210px;padding:22px 10px 10px;color:var(--text-primary);background:#fffffff7;border-color:#0f172a2e;box-shadow:0 14px 34px #0f172a29,0 1px 2px #0f172a14}[data-theme=light] .evaluate-panel-drag-handle{color:#64748b}[data-theme=light] .evaluate-panel-drag-handle:hover{color:#0369a1;background:#0f172a0e}[data-theme=light] .evaluate-panel-header{color:#0369a1;font-size:11px;border-bottom-color:#0f172a1f}[data-theme=light] .evaluate-distance{background:#f0f9ff;border-color:#7dd3fc}[data-theme=light] .distance-value{color:#0369a1}[data-theme=light] .evaluate-hint{color:#475569;background:#f8fafc;border:1px solid #e2e8f0}[data-theme=light] .evaluate-circle-result{background:#fdf2f8;border-color:#f9a8d4}[data-theme=light] .circle-type,[data-theme=light] .circle-value .value,[data-theme=light] .evaluate-setting-row.circle-mode label{color:#9d174d}[data-theme=light] .circle-value .label{color:#be185d}[data-theme=light] .evaluate-setting-row label{color:#334155;font-size:10px;font-weight:500}[data-theme=light] .evaluate-select{color:#0f172a;font-size:10px;background:#fff;border-color:#cbd5e1}[data-theme=light] .evaluate-select:focus{border-color:#0284c7;box-shadow:0 0 0 2px #0284c724}[data-theme=light] .evaluate-select option{color:#0f172a;background:#fff}[data-theme=light] .evaluate-components{background:#f8fafc;border:1px solid #e2e8f0}[data-theme=light] .component-item{font-size:9px;font-weight:600}[data-theme=light] .component-item.dx{color:#b91c1c;background:#fee2e2}[data-theme=light] .component-item.dy{color:#15803d;background:#dcfce7}[data-theme=light] .component-item.dz{color:#4338ca;background:#e0e7ff}[data-theme=light] .evaluate-points{border-top-color:#e2e8f0}[data-theme=light] .points-header span,[data-theme=light] .point-item{color:#475569;font-size:9px}[data-theme=light] .point-item{background:#f1f5f9;border:1px solid #e2e8f0}[data-theme=light] .clear-btn{color:#b91c1c;background:#fff1f2;border-color:#fecdd3}[data-theme=light] .clear-btn:hover{color:#991b1b;background:#ffe4e6;border-color:#fda4af}@media(max-width:720px){[data-theme=light] .evaluate-panel{position:fixed;top:80px;right:auto;left:0;transform:none!important;min-width:min(190px,calc(100vw - 24px));max-width:calc(100vw - 24px)}}.auth-callback{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at top,rgba(59,130,246,.15),transparent 60%),linear-gradient(180deg,#111827,#0b0f14);color:#fff}.auth-callback-card{padding:32px 40px;border-radius:16px;border:1px solid rgba(255,255,255,.08);background:#111827d9;box-shadow:0 20px 60px #00000073;text-align:center;min-width:280px}.auth-callback-title{font-size:20px;font-weight:600;margin-bottom:10px}.auth-callback-status{font-size:13px;color:#ffffffb3}.auth-callback-action{margin-top:20px;padding:9px 16px;border:1px solid rgba(96,165,250,.45);border-radius:8px;background:#2563eb;color:#fff;font:inherit;cursor:pointer}.auth-callback-action:hover{background:#1d4ed8}.auth-callback-action:focus-visible{outline:3px solid rgba(96,165,250,.4);outline-offset:2px}.auth-confirm{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:radial-gradient(circle at 50% -10%,rgba(37,99,235,.24),transparent 46%),linear-gradient(180deg,#101827,#080d16);color:#f8fafc}.auth-confirm-card{width:min(420px,100%);padding:28px;border:1px solid rgba(148,163,184,.2);border-radius:18px;background:#0f172aeb;box-shadow:0 24px 70px #0000006b;text-align:center}.auth-confirm-language{margin-bottom:14px;text-align:left}.auth-confirm-brand{margin-bottom:22px;color:#93c5fd;font-size:14px;font-weight:700;letter-spacing:.16em;text-transform:uppercase}.auth-confirm-icon{width:54px;height:54px;display:inline-flex;align-items:center;justify-content:center;margin-bottom:16px;border-radius:999px}.auth-confirm-icon--verifying{color:#93c5fd;background:#2563eb29}.auth-confirm-icon--success{color:#86efac;background:#22c55e24}.auth-confirm-icon--error{color:#fca5a5;background:#ef444424}.auth-confirm-spinner{animation:auth-confirm-spin .85s linear infinite}.auth-confirm-title{margin:0 0 10px;font-size:23px;line-height:1.25}.auth-confirm-message{margin:0;color:#cbd5e1;font-size:14px;line-height:1.55}.auth-confirm-button{display:inline-flex;align-items:center;justify-content:center;min-height:40px;margin-top:20px;padding:0 18px;border-radius:9px;background:#2563eb;color:#fff;font-size:14px;font-weight:600;text-decoration:none;transition:background .18s ease,transform .18s ease}.auth-confirm-button:hover{background:#1d4ed8;transform:translateY(-1px)}.auth-confirm-help{margin:22px 0 0;color:#64748b;font-size:12px}@keyframes auth-confirm-spin{to{transform:rotate(360deg)}}@media(max-width:520px){.auth-confirm{padding:16px;align-items:flex-start;padding-top:12vh}.auth-confirm-card{padding:22px 18px}}@media(prefers-reduced-motion:reduce){.auth-confirm-spinner{animation-duration:1.8s}.auth-confirm-button{transition:none}}.password-reset{min-height:100vh;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at top,rgba(29,78,216,.18),transparent 55%),#0b1220;color:var(--text-primary)}.password-reset-card{width:min(360px,90vw);background:var(--bg-secondary);border:1px solid var(--border-default);border-radius:var(--radius-lg);padding:24px;text-align:center;box-shadow:var(--shadow-lg)}.password-reset-language{margin-bottom:16px;text-align:left}.password-reset-title{font-size:var(--font-size-md);font-weight:600;margin-bottom:8px}.password-reset-message{font-size:var(--font-size-sm);color:var(--text-muted);margin-bottom:16px}.password-reset-form{display:flex;flex-direction:column;gap:10px}.password-reset-input{width:100%;padding:10px 12px;background:var(--bg-tertiary);border:1px solid var(--border-default);border-radius:var(--radius-md);color:var(--text-primary);font-size:var(--font-size-sm)}.password-reset-input:focus{outline:none;border-color:var(--accent-primary);box-shadow:0 0 0 3px #00d9ff26}.password-reset-error{font-size:var(--font-size-xs);color:#fca5a5}.password-reset-btn{margin-top:6px;padding:8px 12px;background:#2563eb;border:1px solid rgba(37,99,235,.4);border-radius:var(--radius-md);color:#fff;font-size:var(--font-size-sm);cursor:pointer;transition:all .2s ease}.password-reset-btn:hover{background:#1d4ed8}.attention-layer{position:fixed;inset:0;z-index:1800;pointer-events:none}.attention-label{position:fixed;transform:translate(-50%,-100%);max-width:min(260px,calc(100vw - 24px));padding:6px 9px;color:#fff7ed;background:#0f172af0;border:1px solid rgba(251,191,36,.72);border-radius:6px;box-shadow:0 10px 30px #00000059,0 0 24px #fbbf2433;font-size:11px;font-weight:650;line-height:1.25;text-align:center;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical}.webcad-attention-target{outline:2px solid rgba(251,191,36,.95)!important;outline-offset:3px;box-shadow:0 0 0 1px #fbbf2442,0 0 22px #fbbf2470!important;animation:webcad-attention-pulse 1.15s ease-in-out infinite}@keyframes webcad-attention-pulse{0%,to{outline-color:#fbbf24f2;box-shadow:0 0 0 1px #fbbf243d,0 0 18px #fbbf245c}50%{outline-color:#22d3eef2;box-shadow:0 0 0 1px #22d3ee3d,0 0 28px #22d3ee6b}}.whats-new-notice{position:fixed;right:20px;bottom:76px;z-index:1200;width:min(380px,calc(100vw - 40px));display:flex;align-items:flex-start;gap:8px;padding:14px 14px 12px 16px;border:1px solid var(--border-color, #dfe7f2);border-left:3px solid #2563eb;border-radius:12px;background:var(--bg-secondary, #fff);color:var(--text-primary, #0f172a);box-shadow:0 18px 40px #0f172a2e;animation:whats-new-slide-in .26s ease-out}@keyframes whats-new-slide-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.whats-new-notice-body{flex:1;min-width:0}.whats-new-notice-title{font-size:var(--font-size-sm, 13px);font-weight:600;margin-bottom:4px}.whats-new-notice-text{margin:0 0 6px;font-size:var(--font-size-xs, 12px);line-height:1.45;color:var(--text-secondary, #475569)}.whats-new-notice-terms{color:var(--text-muted, #64748b)}.whats-new-notice-actions{display:flex;align-items:center;gap:14px;margin-top:6px}.whats-new-notice-link{font-size:var(--font-size-xs, 12px);font-weight:600;color:#2563eb;text-decoration:none}.whats-new-notice-link:hover{text-decoration:underline}.whats-new-notice-dismiss{border:0;background:none;padding:0;font:inherit;font-size:var(--font-size-xs, 12px);color:var(--text-muted, #64748b);cursor:pointer}.whats-new-notice-dismiss:hover{color:var(--text-primary, #0f172a)}.whats-new-notice-close{flex:none;display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border:0;border-radius:6px;background:none;color:var(--text-muted, #64748b);cursor:pointer}.whats-new-notice-close:hover{background:var(--bg-tertiary, #f1f5f9);color:var(--text-primary, #0f172a)}@media(max-width:767px){.whats-new-notice{right:12px;left:12px;bottom:96px;width:auto}}:root{color-scheme:dark;--bg-void: #09090b;--bg-primary: #0c0e12;--bg-secondary: #14161b;--bg-elevated: #1a1d23;--bg-surface: #22252c;--bg-tertiary: #181b22;--bg-hover: rgba(255, 255, 255, .05);--bg-active: rgba(59, 130, 246, .08);--border-subtle: rgba(255, 255, 255, .05);--border-default: rgba(255, 255, 255, .08);--border-strong: rgba(255, 255, 255, .12);--border-glow: rgba(59, 130, 246, .25);--text-primary: #e2e8f0;--text-secondary: #94a3b8;--text-muted: #64748b;--text-disabled: #475569;--text-inverse: #020617;--accent-primary: #3b82f6;--accent-primary-dim: rgba(59, 130, 246, .15);--accent-primary-glow: rgba(59, 130, 246, .3);--accent-secondary: #60a5fa;--accent-primitive: #f59e0b;--accent-primitive-dim: rgba(245, 158, 11, .1);--accent-boolean: #ec4899;--accent-boolean-dim: rgba(236, 72, 153, .1);--accent-sketch: #8b5cf6;--accent-sketch-dim: rgba(139, 92, 246, .1);--accent-edge: #10b981;--accent-edge-dim: rgba(16, 185, 129, .1);--success: #10b981;--success-dim: rgba(16, 185, 129, .1);--warning: #f59e0b;--warning-dim: rgba(245, 158, 11, .1);--error: #ef4444;--error-dim: rgba(239, 68, 68, .1);--surface-panel: linear-gradient(180deg, #1a1f28 0%, #13171e 100%);--surface-panel-muted: rgba(255, 255, 255, .02);--surface-popover: var(--bg-elevated);--surface-input: rgba(255, 255, 255, .05);--surface-control: rgba(255, 255, 255, .04);--surface-control-hover: rgba(255, 255, 255, .08);--surface-control-active: rgba(59, 130, 246, .12);--surface-floating: rgba(23, 28, 36, .95);--surface-floating-muted: rgba(23, 28, 36, .85);--surface-floating-input: rgba(23, 28, 36, .9);--surface-floating-border: rgba(255, 255, 255, .1);--surface-floating-hover: rgba(255, 255, 255, .08);--surface-floating-shadow: 0 8px 32px rgba(0, 0, 0, .4), 0 0 0 1px rgba(255, 255, 255, .05) inset;--overlay-scrim: rgba(0, 0, 0, .7);--focus-ring: 0 0 0 3px var(--accent-primary-dim);--viewport-bg: #1a1a2e;--viewport-grid-major: #444444;--viewport-grid-minor: #222222;--viewport-object-default: #90a4ae;--viewport-object-selected: #4fc3f7;--viewport-object-selected-emissive: #1565c0;--viewport-edge: #94a3b8;--viewport-edge-muted: #64748b;--viewport-light-hemi-sky: #f4f8ff;--viewport-light-hemi-ground: #253044;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono: "JetBrains Mono", "Fira Code", "SF Mono", Consolas, monospace;--font-size-xs: 10px;--font-size-sm: 11px;--font-size-md: 13px;--font-size-lg: 15px;--font-size-xl: 18px;--font-size-2xl: 24px;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 12px;--spacing-lg: 16px;--spacing-xl: 24px;--spacing-2xl: 32px;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px;--radius-xl: 12px;--radius-2xl: 16px;--radius-full: 9999px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 4px 12px rgba(0, 0, 0, .4);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .5);--shadow-xl: 0 16px 48px rgba(0, 0, 0, .6);--shadow-glow: 0 0 20px var(--accent-primary-glow);--shadow-inner: inset 0 1px 2px rgba(0, 0, 0, .3);--shadow-panel: 0 8px 24px rgba(0, 0, 0, .35);--shadow-popover: 0 8px 24px rgba(0, 0, 0, .35);--transition-fast: .1s ease-out;--transition-normal: .15s ease-out;--transition-slow: .3s ease-out;--transition-spring: .4s cubic-bezier(.34, 1.56, .64, 1);--glass-bg: rgba(15, 15, 26, .8);--glass-border: rgba(255, 255, 255, .08);--glass-blur: blur(12px)}[data-theme=light]{color-scheme:light;--bg-void: #e9eef5;--bg-primary: #f5f7fb;--bg-secondary: #ffffff;--bg-elevated: #ffffff;--bg-surface: #eef2f7;--bg-tertiary: #f8fafc;--bg-hover: rgba(15, 23, 42, .055);--bg-active: rgba(37, 99, 235, .09);--border-subtle: rgba(15, 23, 42, .06);--border-default: rgba(15, 23, 42, .1);--border-strong: rgba(15, 23, 42, .16);--border-glow: rgba(37, 99, 235, .22);--text-primary: #0f172a;--text-secondary: #475569;--text-muted: #64748b;--text-disabled: #94a3b8;--text-inverse: #ffffff;--accent-primary: #2563eb;--accent-primary-dim: rgba(37, 99, 235, .11);--accent-primary-glow: rgba(37, 99, 235, .18);--accent-secondary: #0ea5e9;--accent-primitive: #b45309;--accent-primitive-dim: rgba(180, 83, 9, .1);--accent-boolean: #be185d;--accent-boolean-dim: rgba(190, 24, 93, .09);--accent-sketch: #7c3aed;--accent-sketch-dim: rgba(124, 58, 237, .09);--accent-edge: #047857;--accent-edge-dim: rgba(4, 120, 87, .1);--success: #047857;--success-dim: rgba(4, 120, 87, .1);--warning: #b45309;--warning-dim: rgba(180, 83, 9, .1);--error: #dc2626;--error-dim: rgba(220, 38, 38, .09);--surface-panel: linear-gradient(180deg, #ffffff 0%, #f6f8fb 100%);--surface-panel-muted: rgba(15, 23, 42, .025);--surface-popover: #ffffff;--surface-input: rgba(15, 23, 42, .035);--surface-control: rgba(15, 23, 42, .035);--surface-control-hover: rgba(15, 23, 42, .07);--surface-control-active: rgba(37, 99, 235, .11);--surface-floating: rgba(255, 255, 255, .92);--surface-floating-muted: rgba(248, 250, 252, .92);--surface-floating-input: rgba(255, 255, 255, .96);--surface-floating-border: rgba(15, 23, 42, .12);--surface-floating-hover: rgba(15, 23, 42, .06);--surface-floating-shadow: 0 16px 36px rgba(15, 23, 42, .14), 0 1px 0 rgba(255, 255, 255, .9) inset;--overlay-scrim: rgba(15, 23, 42, .32);--focus-ring: 0 0 0 3px rgba(37, 99, 235, .16);--viewport-bg: #edf3f9;--viewport-grid-major: #b7c4d3;--viewport-grid-minor: #d8e1ec;--viewport-object-default: #8b98a7;--viewport-object-selected: #2563eb;--viewport-object-selected-emissive: #93c5fd;--viewport-edge: #243244;--viewport-edge-muted: #64748b;--viewport-light-hemi-sky: #ffffff;--viewport-light-hemi-ground: #cbd5e1;--shadow-sm: 0 1px 2px rgba(15, 23, 42, .08);--shadow-md: 0 6px 16px rgba(15, 23, 42, .1);--shadow-lg: 0 12px 28px rgba(15, 23, 42, .12);--shadow-xl: 0 20px 48px rgba(15, 23, 42, .16);--shadow-glow: 0 0 0 3px var(--accent-primary-glow);--shadow-inner: inset 0 1px 2px rgba(15, 23, 42, .08);--shadow-panel: 0 8px 24px rgba(15, 23, 42, .08);--shadow-popover: 0 18px 45px rgba(15, 23, 42, .14);--glass-bg: rgba(255, 255, 255, .82);--glass-border: rgba(15, 23, 42, .08)}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;width:100%;overflow:hidden}body{font-family:var(--font-sans);font-size:var(--font-size-md);font-weight:var(--font-weight-normal);background:var(--bg-void);color:var(--text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.5}.app{display:flex;flex-direction:column;height:100%;width:100%;background:var(--bg-primary);color:var(--text-primary)}.app-top-section{display:flex;flex-direction:column;flex-shrink:0;position:relative;transition:max-height .3s ease,opacity .2s ease;max-height:200px;overflow:visible}.app-top-section.collapsed{max-height:16px;overflow:hidden}.app-top-section.collapsed .app-header,.app-top-section.collapsed .toolbar{opacity:0;pointer-events:none;visibility:hidden}.top-section-toggle{position:absolute;bottom:0;left:50%;transform:translate(-50%);width:60px;height:6px;background:transparent;display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:100;transition:all .15s ease;border-radius:0 0 3px 3px}.app-top-section:not(.collapsed) .top-section-toggle{opacity:.2}.app-top-section:not(.collapsed) .top-section-toggle:hover{opacity:1;height:12px;background:var(--overlay-scrim)}.top-section-toggle:hover{background:var(--bg-elevated)}.toggle-label{display:none}.toggle-bar{width:24px;height:2px;background:var(--text-muted);border-radius:1px}.top-section-toggle:hover .toggle-bar{background:var(--accent-primary)}.app-main{display:flex;flex:1;overflow:hidden;min-height:0;min-width:0}.viewport-container{flex:1;position:relative;overflow:hidden;min-height:0;min-width:0;background:var(--viewport-bg);border:1px solid var(--border-subtle);border-radius:2px;margin:2px}.app-main.ecad-mode,.app-main.ecad-mode .viewport-container{overflow:hidden;min-height:0}.app-main.ecad-mode .viewport-container{z-index:6}.app-main.ecad-mode .app-right-panels{z-index:2}.app-right-panels{display:flex;flex-direction:column;width:260px;min-width:220px;max-width:300px;background:var(--surface-panel);border-left:1px solid var(--border-subtle);box-shadow:inset 1px 0 0 var(--border-subtle);overflow-y:auto;overflow-x:hidden;position:relative;transition:width .2s ease,min-width .2s ease,max-width .2s ease}.app-right-panels.fea-mode{width:299px;min-width:253px;max-width:345px}.app-right-panels.cfd-mode{width:360px;min-width:320px;max-width:420px}.app-right-panels.thermal-mode{width:340px;min-width:300px;max-width:390px}.app-right-panels.ecad-mode{width:332px;min-width:292px;max-width:380px}.app-right-panels.views-mode{width:300px;min-width:253px;max-width:345px}.app-right-panels.collapsed{width:32px;min-width:32px;max-width:32px;overflow:hidden}.right-panel-toggle{position:absolute;top:8px;left:8px;width:20px;height:20px;display:flex;align-items:center;justify-content:center;background:var(--surface-control-hover);border:1px solid var(--border-default);border-radius:var(--radius-sm);color:var(--text-muted);cursor:pointer;z-index:10;transition:all var(--transition-fast)}.right-panel-toggle:hover{background:var(--surface-control-active);color:var(--text-primary);border-color:var(--border-strong)}.app-right-panels.collapsed .right-panel-toggle{left:6px}.app-right-panels>*{border-left:none;flex-shrink:0}::selection{background:var(--accent-primary);color:var(--bg-primary)}:focus-visible{outline:2px solid var(--accent-primary);outline-offset:2px}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:var(--radius-full);transition:background var(--transition-fast)}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}::-webkit-scrollbar-corner{background:transparent}button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit;font-size:inherit;transition:all var(--transition-fast)}button:disabled{cursor:not-allowed;opacity:.4}input{font-family:inherit;color:inherit;background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-md);padding:var(--spacing-sm) var(--spacing-md);font-size:var(--font-size-md);transition:all var(--transition-fast)}input:focus{outline:none;border-color:var(--accent-primary);box-shadow:0 0 0 3px var(--accent-primary-dim)}input:hover:not(:focus):not(:disabled){border-color:var(--border-strong)}input[type=number]{font-family:var(--font-mono)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}select{font-family:inherit;color:var(--text-primary);background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-md);padding:var(--spacing-sm) var(--spacing-md);font-size:var(--font-size-md);cursor:pointer;transition:all var(--transition-fast)}select:focus{outline:none;border-color:var(--accent-primary);box-shadow:0 0 0 3px var(--accent-primary-dim)}select:hover:not(:focus):not(:disabled){border-color:var(--border-strong)}.glass{background:var(--glass-bg);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--glass-border)}.glow-accent{box-shadow:var(--shadow-glow)}.mobile-drawer,.mobile-drawer-scrim,.mobile-drawer-header,.views-mobile-rail{display:none}@media(max-width:800px),(max-height:500px)and (max-width:900px){.app.mobile-beta{height:100dvh;min-height:100dvh;padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}.app.mobile-beta .app-top-section{max-height:48px;overflow:visible}.app.mobile-beta .toolbar,.app.mobile-beta .cfd-toolbar,.app.mobile-beta .top-section-toggle,.app.mobile-beta .status-bar,.app.mobile-beta .plane-navigator{display:none}.app.mobile-beta .app-main{position:relative;display:block;flex:1 1 auto;width:100%;min-width:0;min-height:0;overflow:hidden}.app.mobile-beta .viewport-container,.app.mobile-beta .app-main.ecad-mode .viewport-container{position:absolute;inset:0;width:100%;height:100%;min-width:0;min-height:0;margin:0;border-radius:0}.app.mobile-beta .mobile-drawer,.app.mobile-beta .app-right-panels{display:flex;position:absolute;top:0;bottom:0;z-index:710;width:min(88vw,360px);min-width:0;max-width:min(88vw,360px);height:100%;background:var(--surface-panel);box-shadow:var(--shadow-xl);transition:transform .18s ease,visibility .18s ease}.app.mobile-beta .mobile-left-drawer{left:0;flex-direction:column;border-right:1px solid var(--border-default);transform:translate(-102%);visibility:hidden}.app.mobile-beta .mobile-left-drawer.open{transform:translate(0);visibility:visible}.app.mobile-beta .app-right-panels,.app.mobile-beta .app-right-panels.fea-mode,.app.mobile-beta .app-right-panels.cfd-mode,.app.mobile-beta .app-right-panels.thermal-mode,.app.mobile-beta .app-right-panels.ecad-mode,.app.mobile-beta .app-right-panels.views-mode{right:0;flex-direction:column;transform:translate(102%);visibility:hidden;border-left:1px solid var(--border-default)}.app.mobile-beta .app-right-panels.mobile-drawer-open{transform:translate(0);visibility:visible}.app.mobile-beta .mobile-drawer-header{display:flex;min-height:48px;flex:0 0 48px;align-items:center;justify-content:space-between;padding:0 10px 0 14px;border-bottom:1px solid var(--border-default);background:var(--surface-popover);color:var(--text-primary);font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.app.mobile-beta .mobile-drawer-header button{display:inline-flex;width:44px;height:44px;align-items:center;justify-content:center;border-radius:var(--radius-lg)}.app.mobile-beta .mobile-drawer-content{display:flex;flex:1;min-height:0;overflow:hidden}.app.mobile-beta .mobile-drawer-content>*,.app.mobile-beta .mobile-left-drawer .object-list,.app.mobile-beta .mobile-left-drawer .assembly-panel,.app.mobile-beta .mobile-left-drawer .fea-boundary-panel,.app.mobile-beta .mobile-left-drawer .thermal-sidebar{width:100%;min-width:0;max-width:none;height:100%}.app.mobile-beta .right-panel-toggle{display:none}.app.mobile-beta .views-mobile-rail{position:absolute;top:94px;right:8px;z-index:650;display:flex;flex-direction:column;gap:6px;padding:5px;border:1px solid var(--border-default);border-radius:var(--radius-xl);background:var(--surface-floating);box-shadow:var(--surface-floating-shadow);backdrop-filter:blur(12px)}.app.mobile-beta .views-mobile-rail button{min-width:62px;min-height:44px;display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border-radius:var(--radius-lg);color:var(--text-secondary);font-size:10px;font-weight:700}.app.mobile-beta .views-mobile-rail button[aria-pressed=true]{color:var(--accent-primary);background:var(--surface-control-active)}.app.mobile-beta .mobile-drawer-scrim{display:block;position:absolute;inset:0;z-index:700;width:100%;height:100%;background:var(--overlay-scrim);border:0}}@media(max-width:800px)and (pointer:coarse),(max-height:500px)and (max-width:900px)and (pointer:coarse){.app.mobile-beta .mobile-drawer .object-item{min-height:44px}.app.mobile-beta .mobile-drawer .tree-toggle,.app.mobile-beta .mobile-drawer .collapse-toggle{min-width:32px;min-height:32px}}.label{font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted)}.mono{font-family:var(--font-mono)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.6}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes glow{0%,to{box-shadow:0 0 5px var(--accent-primary-glow)}50%{box-shadow:0 0 20px var(--accent-primary-glow),0 0 40px var(--accent-primary-dim)}}
