:root{--pd-color-bg-app:#eef2f8;--pd-color-bg-panel:#fff;--pd-color-bg-muted:#f6f8fc;--pd-color-border:#d7dfec;--pd-color-text:#172033;--pd-color-text-muted:#657086;--pd-color-accent:#3157d5;--pd-color-accent-soft:#e7ecff;--pd-space-1:.25rem;--pd-space-2:.5rem;--pd-space-3:.75rem;--pd-space-4:1rem;--pd-space-5:1.5rem;--pd-radius-panel:.75rem;--pd-shadow-panel:0 12px 32px #24345414;--pd-toolbar-height:3rem;--pd-font-title:1.125rem;--pd-font-body:.875rem;--pd-font-section:.8125rem;--pd-font-secondary:.75rem;--pd-line-body:1.25rem;--pd-control-height:1.75rem;--pd-hit-size:2rem;--pd-sidebar-width:16rem;--pd-inspector-width:22.5rem;color:var(--pd-color-text);background:var(--pd-color-bg-app);font-synthesis:none;text-rendering:optimizelegibility;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}button,input,textarea,select{font:inherit}:root{--pd-color-bg-canvas:#fbfcff;--pd-color-border-strong:#aab6ca;--pd-color-focus:#0b57d0;--pd-color-status:#274060;--pd-color-status-bg:#edf4ff;--pd-color-warning:#7c2d12;--pd-color-warning-bg:#fff7ed;--pd-color-warning-border:#fb923c;--pd-color-danger:#991b1b;--pd-color-danger-bg:#fff1f2;--pd-color-danger-border:#fda4af;--pd-radius-control:.5rem;--pd-shadow-focus:0 0 0 4px #0b57d038;--pd-canvas-min-width:0px}body{background:var(--pd-color-bg-app);min-width:320px;min-height:100vh;margin:0}button{min-height:2rem;padding:0 var(--pd-space-3);border:1px solid var(--pd-color-border);color:var(--pd-color-text);background:var(--pd-color-bg-panel);border-radius:.5rem}button:disabled{color:var(--pd-color-text-muted);background:var(--pd-color-bg-muted);cursor:not-allowed}code{overflow-wrap:anywhere;font-size:.78rem}.physdraw-app{grid-template-rows:auto var(--pd-toolbar-height) minmax(32rem, 1fr) auto;background:var(--pd-color-border);gap:1px;min-height:100vh;display:grid}.app-header,.editor-toolbar,.problem-footer{background:var(--pd-color-bg-panel)}.app-header{padding:var(--pd-space-3) var(--pd-space-5);justify-content:space-between;align-items:center;display:flex}.app-header h1,.app-header p,.problem-footer p{margin:0}.app-eyebrow,.panel-label,.panel-description,.document-status{color:var(--pd-color-text-muted);font-size:.78rem}.editor-toolbar{align-items:center;gap:var(--pd-space-2);padding:var(--pd-space-2) var(--pd-space-5);display:flex}.editor-command-status{margin:0 0 0 var(--pd-space-2);color:var(--pd-color-text-muted);text-align:right;flex:1;font-size:.78rem}.editor-workspace{grid-template-columns:var(--pd-sidebar-width) minmax(28rem, 1fr) var(--pd-inspector-width);background:var(--pd-color-border);gap:1px;min-width:0;display:grid}.component-library,.scene-workspace,.diagnostics-panel{min-width:0;padding:var(--pd-space-4);background:var(--pd-color-bg-panel)}.component-library h2,.diagnostics-panel h2,.scene-card h2{margin-top:0}.component-library ul{gap:var(--pd-space-2);padding:0;list-style:none;display:grid}.component-library li{gap:var(--pd-space-1);padding:var(--pd-space-3);border:1px solid var(--pd-color-border);background:var(--pd-color-bg-muted);border-radius:.5rem;display:grid}.scene-workspace{background:var(--pd-color-bg-app)}.inspector-stack{background:var(--pd-color-bg-panel);border-inline-start:1px solid var(--pd-color-border);grid-area:properties;align-content:start;min-width:0;display:grid;overflow:auto}.inspector-stack .diagnostics-panel{border-inline-start:0;grid-area:auto;overflow:visible}.property-field-groups{gap:var(--pd-space-3);margin-top:var(--pd-space-3);display:grid}.physical-property-fields,.entity-property-section{gap:var(--pd-space-3);margin:var(--pd-space-3) 0 0;padding:var(--pd-space-3);border:1px solid var(--pd-color-border);border-radius:var(--pd-radius-control);display:grid}.property-field-groups .physical-property-fields,.entity-property-section dl{margin:0}.entity-appearance-section{gap:var(--pd-space-2)}.appearance-source-status,.appearance-template-status{color:var(--pd-color-text-muted);margin:0;font-size:.78rem}.appearance-control-grid{gap:var(--pd-space-2);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.appearance-control-grid label,.appearance-control-grid .color-picker-field{gap:var(--pd-space-1);min-width:0;font-size:.78rem;display:grid}.appearance-control-grid input:not([type=checkbox]),.appearance-control-grid select{width:100%;min-width:0}.color-picker-field{gap:var(--pd-space-1);min-width:0;color:var(--pd-color-text-muted);font-size:var(--pd-font-secondary);display:grid}.color-picker-trigger{align-items:center;gap:var(--pd-space-2);min-width:0;min-height:2rem;padding:0 var(--pd-space-2);text-align:start;grid-template-columns:1.35rem minmax(0,1fr) auto;display:grid}.color-picker-trigger code{min-width:0;color:var(--pd-color-text);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.color-picker-trigger-swatch,.color-picker-current-swatch{box-sizing:border-box;border:1px solid var(--pd-color-border-strong);border-radius:.2rem;display:block}.color-picker-trigger-swatch{width:1.35rem;height:1.35rem}.color-picker-popover{z-index:1000;box-sizing:border-box;gap:var(--pd-space-3);width:17.25rem;padding:var(--pd-space-3);border:1px solid var(--pd-color-border-strong);border-radius:var(--pd-radius-panel);color:var(--pd-color-text);background:var(--pd-color-bg-panel);box-shadow:var(--pd-shadow-panel);display:grid;position:fixed}.color-picker-current-row{align-items:center;gap:var(--pd-space-2);grid-template-columns:2rem minmax(0,1fr);display:grid}.color-picker-current-row>div{justify-content:space-between;align-items:baseline;gap:var(--pd-space-2);min-width:0;display:flex}.color-picker-current-swatch{width:2rem;height:2rem}.color-picker-palette{grid-template-columns:repeat(8,1fr);gap:.3rem;display:grid}.color-picker-swatch{aspect-ratio:1;border:1px solid var(--pd-color-border-strong);border-radius:.2rem;width:100%;min-height:0;padding:0}.color-picker-swatch:hover,.color-picker-swatch[aria-pressed=true]{outline:2px solid var(--pd-color-accent);outline-offset:1px}.color-picker-recent{gap:var(--pd-space-1);color:var(--pd-color-text-muted);font-size:var(--pd-font-secondary);display:grid}.color-picker-recent-grid{grid-template-columns:repeat(8,1fr);gap:.3rem;display:grid}.color-picker-custom{gap:var(--pd-space-1);font-size:var(--pd-font-secondary);display:grid}.color-picker-custom-row{gap:var(--pd-space-2);grid-template-columns:minmax(0,1fr) auto;display:grid}.color-picker-custom-row input{width:100%;min-width:0}.color-picker-custom-row button,.color-picker-clear{min-height:2rem;padding-inline:var(--pd-space-2)}.color-picker-custom p{color:var(--pd-color-danger);margin:0}.color-picker-clear{justify-content:center;align-items:center;gap:var(--pd-space-2);display:flex}.color-picker-no-color{border:1px solid var(--pd-color-border-strong);background:linear-gradient(45deg, transparent 44%, var(--pd-color-danger) 45% 55%, transparent 56%), var(--pd-color-bg-panel);width:1rem;height:1rem}.appearance-checkbox-control{grid-template-columns:auto 1fr;align-content:end;align-items:center}.appearance-layer-actions,.appearance-action-row{gap:var(--pd-space-2);flex-wrap:wrap;display:flex}.appearance-layer-actions{align-items:end}.appearance-layer-actions button,.appearance-action-row button{padding-inline:var(--pd-space-2);flex:auto;font-size:.78rem}.hidden-entities-section{gap:var(--pd-space-2)}.hidden-entities-section ul{gap:var(--pd-space-1);margin:0;padding:0;list-style:none;display:grid}.hidden-entities-section li{justify-content:space-between;align-items:center;gap:var(--pd-space-2);min-width:0;display:flex}.hidden-entities-section li span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.hidden-entities-section button{flex:none}.machine-details{padding-top:var(--pd-space-1);border-top:1px solid var(--pd-color-border)}.machine-details summary{cursor:pointer;color:var(--pd-color-text-muted);font-size:.78rem}.machine-details[open] dl{margin-top:var(--pd-space-3)}.physical-property-field{gap:var(--pd-space-1);display:grid}.physical-property-field input,.physical-property-field select{width:100%;min-width:0}.segmented-surface-panel,.open-annular-track-panel,.mechanism-panel{gap:var(--pd-space-3);padding:0 var(--pd-space-4) var(--pd-space-4);display:grid}.segmented-surface-panel h2,.open-annular-track-panel h2,.mechanism-panel h2{margin:var(--pd-space-3) 0 0}.segmented-surface-panel fieldset,.mechanism-panel fieldset{gap:var(--pd-space-2);padding:var(--pd-space-3);border:1px solid var(--pd-color-border);border-radius:var(--pd-radius-control);margin:0;display:grid}.mechanism-panel dl{gap:var(--pd-space-2);margin:0;display:grid}.mechanism-panel dl div{gap:var(--pd-space-1);display:grid}.mechanism-panel dt{color:var(--pd-color-text-muted);font-size:.78rem}.mechanism-panel dd{overflow-wrap:anywhere;margin:0}.mechanism-actions{gap:var(--pd-space-2);display:grid}.mechanism-actions p{margin:0}.segmented-surface-panel input[type=number]{width:100%;min-width:0}.open-annular-track-panel label{gap:var(--pd-space-1);display:grid}.open-annular-track-panel select{width:100%;min-width:0}.open-annular-track-panel p{margin:0}.assembly-selection-grid{gap:6px;display:grid}.assembly-selection-grid button[aria-pressed=true]{border-color:var(--pd-color-accent);background:var(--pd-color-accent-soft);color:var(--pd-color-accent)}.composition-invalid{color:var(--pd-color-danger)}.checkbox-field,.composition-summary,.composition-actions{align-items:center;gap:var(--pd-space-2);flex-wrap:wrap;display:flex}.composition-summary{color:var(--pd-color-text-muted);font-size:.875rem}.relation-panel{min-width:0;padding:0 var(--pd-space-4) var(--pd-space-4)}.relation-panel h2,.relation-panel h3{margin-block:var(--pd-space-3) var(--pd-space-2)}.relation-panel ul{gap:var(--pd-space-2);margin:0;padding:0;list-style:none;display:grid}.relation-panel li{gap:var(--pd-space-1);padding:var(--pd-space-3);border:1px solid var(--pd-color-border);border-radius:var(--pd-radius-control);display:grid}.relation-panel li[data-status=rejected]{color:var(--pd-color-text-muted)}.relation-actions{gap:var(--pd-space-2);flex-wrap:wrap;display:flex}.scene-card{min-height:100%;padding:var(--pd-space-5);border:1px solid var(--pd-color-border);border-radius:var(--pd-radius-panel);background:var(--pd-color-bg-panel);box-shadow:var(--pd-shadow-panel)}.canvas-surface{min-width:0;min-height:24rem}.editor-canvas{display:block}.scene-card-header,.problem-footer{justify-content:space-between;align-items:center;gap:var(--pd-space-4);display:flex}.entity-count{padding:var(--pd-space-2) var(--pd-space-3);color:var(--pd-color-accent);background:var(--pd-color-accent-soft);border-radius:999px}.scene-card-summary{justify-content:flex-end;align-items:center;gap:var(--pd-space-2);flex-wrap:wrap;min-width:0;display:flex}.scene-component-labels{justify-content:flex-end;gap:var(--pd-space-1);flex-wrap:wrap;min-width:0;display:flex}.scene-component-label{min-height:1.65rem;color:var(--pd-color-text-muted);background:var(--pd-color-bg-subtle);cursor:pointer;border:1px solid #0000;border-radius:999px;padding:.2rem .48rem;font-size:.78rem;font-weight:400;line-height:1.3;transition:color .12s,background-color .12s,border-color .12s}.scene-component-label:is(:hover,.is-hovered,.is-selected){border-color:var(--pd-color-accent);color:var(--pd-color-accent);background:var(--pd-color-accent-soft);font-weight:700}.empty-scene{place-content:center;gap:var(--pd-space-2);text-align:center;min-height:24rem;color:var(--pd-color-text-muted);display:grid}.empty-scene p{color:var(--pd-color-text);margin:0;font-size:1.1rem;font-weight:600}.diagnostics-panel dl{gap:var(--pd-space-3);display:grid}.diagnostics-panel dl div{gap:var(--pd-space-1);padding-bottom:var(--pd-space-3);border-bottom:1px solid var(--pd-color-border);display:grid}.diagnostics-panel dt{color:var(--pd-color-text-muted);font-size:.78rem}.diagnostics-panel dd{margin:0}.problem-footer{padding:var(--pd-space-3) var(--pd-space-5)}.startup-error{max-width:42rem;padding:var(--pd-space-5);border-radius:var(--pd-radius-panel);background:#fff7f7;border:1px solid #d9a7a7;margin:10vh auto}html{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}body{min-width:320px}.sr-only{clip:rect(0, 0, 0, 0)!important;clip-path:inset(50%)!important;white-space:nowrap!important;border:0!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;position:absolute!important;overflow:hidden!important}.physdraw-app{grid-template-rows:auto auto minmax(32rem,1fr) auto}.app-header{gap:var(--pd-space-5);border-bottom:1px solid var(--pd-color-border);min-height:4.75rem}.app-header>div:last-child{align-items:end;gap:var(--pd-space-3);grid-template-columns:minmax(16rem,28rem) auto;min-width:0;display:grid}.problem-title-editor{gap:var(--pd-space-1);min-width:0;display:grid}.problem-title-editor label{color:var(--pd-color-text-muted);font-size:.78rem;font-weight:600}.problem-title-editor input{width:100%;min-height:2.25rem;padding:0 var(--pd-space-3);border:1px solid var(--pd-color-border-strong);border-radius:var(--pd-radius-control);color:var(--pd-color-text);background:var(--pd-color-bg-panel)}.document-status{align-items:center;gap:var(--pd-space-2);min-height:2.25rem;padding:var(--pd-space-2) var(--pd-space-3);border:1px solid var(--pd-color-border-strong);border-inline-start:.25rem solid var(--pd-color-status);border-radius:var(--pd-radius-control);color:var(--pd-color-status);background:var(--pd-color-status-bg);white-space:nowrap;font-weight:700;display:inline-flex}.document-status:before{content:"文档状态";color:var(--pd-color-text-muted);font-weight:500}.document-status[data-dirty=true]{border-color:var(--pd-color-warning-border);border-inline-start-color:var(--pd-color-warning);color:var(--pd-color-warning);background:var(--pd-color-warning-bg)}.editor-toolbar{min-height:var(--pd-toolbar-height);align-content:center;column-gap:.375rem;row-gap:var(--pd-space-2);border-bottom:1px solid var(--pd-color-border);flex-wrap:wrap}.editor-toolbar button{white-space:nowrap}.editor-toolbar-group{flex-wrap:wrap;align-items:center;gap:.375rem;display:inline-flex}.editor-toolbar-group+.editor-toolbar-group{border-inline-start:1px solid var(--pd-color-border-strong);margin-inline-start:var(--pd-space-3);padding-inline-start:var(--pd-space-3)}.export-feedback{z-index:20;top:8.5rem;right:var(--pd-space-5);max-width:32rem;padding:var(--pd-space-3) var(--pd-space-4);border:1px solid var(--pd-color-border-strong);border-radius:var(--pd-radius-control);color:var(--pd-color-text);background:var(--pd-color-bg-panel);box-shadow:var(--pd-shadow-panel);margin:0;position:fixed}.export-feedback-error{align-items:center;gap:var(--pd-space-2);border-color:var(--pd-color-danger-border);background:var(--pd-color-danger-bg);flex-wrap:wrap;display:flex}.export-feedback p{margin:0}.editor-workspace{grid-template-areas:"library canvas properties";grid-template-columns:var(--pd-sidebar-width) minmax(var(--pd-canvas-min-width), 1fr) var(--pd-inspector-width);align-items:stretch;min-height:0}.component-library-region{background:var(--pd-color-bg-panel);border-inline-end:1px solid var(--pd-color-border);grid-area:library;grid-template-rows:auto minmax(0,1fr);min-width:0;display:grid}.component-library-region>button{margin:var(--pd-space-3) var(--pd-space-4) 0}.component-library{overflow:auto}.scene-workspace{min-width:var(--pd-canvas-min-width);grid-area:canvas}.diagnostics-panel{border-inline-start:1px solid var(--pd-color-border);grid-area:properties;overflow:auto}.scene-card{min-width:var(--pd-canvas-min-width);gap:var(--pd-space-4);grid-template-rows:auto minmax(24rem,1fr);display:grid}.canvas-surface{min-width:var(--pd-canvas-min-width);border:1px solid var(--pd-color-border-strong);border-radius:var(--pd-radius-control);background:var(--pd-color-bg-canvas);position:relative;overflow:auto}.editor-canvas{background:var(--pd-color-bg-canvas);min-width:100%}.canvas-diagnostic-hint{z-index:3;top:var(--pd-space-3);right:var(--pd-space-3);padding:var(--pd-space-2) var(--pd-space-3);border:1px solid var(--pd-color-warning-border);border-radius:var(--pd-radius-control);background:var(--pd-color-warning-bg);color:var(--pd-color-text-strong);font-size:.82rem;font-weight:700;position:absolute}.port-overlap-chooser{z-index:4;width:max-content;max-width:min(22rem, calc(100% - var(--pd-space-4)));gap:var(--pd-space-2);padding:var(--pd-space-3);border:1px solid var(--pd-color-border-strong);border-radius:var(--pd-radius-control);background:var(--pd-color-bg-panel);box-shadow:var(--pd-shadow-panel);transform:translate(var(--pd-space-2), var(--pd-space-2));display:grid;position:absolute}.port-overlap-chooser strong{color:var(--pd-color-text-strong)}.port-overlap-chooser button{text-align:left;justify-content:flex-start}.canvas-surface [role=alert]{place-content:center;gap:var(--pd-space-2);min-height:24rem;padding:var(--pd-space-5);border:2px dashed var(--pd-color-danger-border);color:var(--pd-color-danger);background:var(--pd-color-danger-bg);text-align:center;font-weight:700;display:grid}.canvas-surface [role=alert]:before{content:"画布错误";text-transform:uppercase;font-size:.78rem}.problem-footer{border-top:1px solid var(--pd-color-border);min-height:2.75rem}.editor-status-content{align-items:center;gap:var(--pd-space-2) var(--pd-space-3);width:100%;color:var(--pd-color-text-muted);flex-wrap:wrap;font-size:.82rem;display:flex}.editor-status-content span{align-items:center;gap:var(--pd-space-2);white-space:nowrap;display:inline-flex}.editor-status-content span+span:before{content:"•";color:var(--pd-color-border-strong)}[aria-invalid=true]{box-shadow:inset 0 -3px 0 var(--pd-color-danger);border-width:2px!important;border-color:var(--pd-color-danger)!important}[role=alert]{color:var(--pd-color-danger);font-weight:700}button:not(:disabled):hover{border-color:var(--pd-color-accent);background:var(--pd-color-accent-soft)}:where(button,input,textarea,select,.editor-canvas):focus-visible{outline:3px solid var(--pd-color-focus);outline-offset:2px;box-shadow:var(--pd-shadow-focus)}.editor-canvas:focus-visible{outline-offset:-6px;outline-width:4px;outline-style:double}@media (prefers-reduced-motion:no-preference){button,input,textarea,select{transition:border-color .12s,background-color .12s,box-shadow .12s}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (width<=1279px){.app-header>div:last-child{grid-template-columns:minmax(16rem,24rem) auto}.editor-workspace{grid-template-areas:"library canvas""properties properties";grid-template-columns:15rem minmax(var(--pd-canvas-min-width), 1fr)}.diagnostics-panel{border-top:1px solid var(--pd-color-border);border-inline-start:0;grid-column:auto;max-height:24rem}}.custom-assembly-panel{background:#fff;border:1px solid #d8deea;border-radius:.75rem;gap:.55rem;padding:.8rem;display:grid}.custom-assembly-panel h2,.custom-assembly-panel p{margin:0}.custom-assembly-panel label{color:#334155;gap:.25rem;font-size:.75rem;font-weight:600;display:grid}.custom-assembly-panel input,.custom-assembly-panel select,.custom-assembly-panel textarea{box-sizing:border-box;color:#0f172a;width:100%;font:inherit;background:#fff;border:1px solid #cbd5e1;border-radius:.45rem;padding:.42rem .5rem;font-weight:400}.custom-assembly-panel textarea{resize:vertical;min-height:4.8rem}.custom-assembly-members,.custom-assembly-status{color:#475569;font-size:var(--pd-font-secondary);line-height:1.45}body{font-size:var(--pd-font-body);line-height:var(--pd-line-body)}button,input,textarea,select{font-size:var(--pd-font-section)}.app-header h1,.scene-card h2{font-size:var(--pd-font-title);line-height:1.5rem}button{min-height:var(--pd-hit-size)}input:not([type=checkbox]):not([type=radio]),select{min-height:var(--pd-control-height)}.panel-description,.panel-label,.machine-details,code,small{font-size:var(--pd-font-secondary)}.component-library h2,.component-library h3,.diagnostics-panel h2,.diagnostics-panel h3{font-size:var(--pd-font-section);font-weight:600;line-height:var(--pd-line-body)}.physdraw-app{grid-template-rows:auto auto minmax(0,1fr) auto;min-height:max(100vh,720px)}.editor-workspace,.scene-workspace,.scene-card,.canvas-surface{min-width:0;min-height:0}.scene-card{padding:var(--pd-space-3);grid-template-rows:auto minmax(0,1fr)}.component-library{padding:var(--pd-space-3)}.component-library ul{gap:var(--pd-space-2)}.component-library .library-card{align-items:center;gap:var(--pd-space-2);padding:var(--pd-space-2);background:var(--pd-color-bg-panel);grid-template-columns:4.5rem minmax(0,1fr)}.library-card-preview{width:4.5rem;height:2.5rem;color:var(--pd-color-accent);border:1px solid var(--pd-color-border);border-radius:var(--pd-radius-control);background:var(--pd-color-bg-muted)}.library-card-copy{gap:.125rem;min-width:0;display:grid}.library-card-copy span{color:var(--pd-color-text-muted);font-size:var(--pd-font-secondary);line-height:1rem}.library-card>button,.library-card>.machine-details,.library-status-badge{grid-column:1/-1}.library-status-badge,.semantic-status-badge{width:max-content;padding:.125rem var(--pd-space-2);border:1px solid var(--pd-color-border-strong);color:var(--pd-color-status);background:var(--pd-color-status-bg);font-size:var(--pd-font-secondary);border-radius:999px;font-weight:700}.library-card-unavailable{opacity:.72}.canvas-context-menu{z-index:30;border:1px solid var(--pd-color-border-strong);border-radius:var(--pd-radius-control);min-width:8.5rem;max-width:calc(100% - 1rem);max-height:calc(100% - 1rem);color:var(--pd-color-text);box-shadow:var(--pd-shadow-panel);background:#fffffffa;gap:.2rem;padding:.3rem;display:grid;position:absolute;overflow:auto}.canvas-context-menu>span{color:var(--pd-color-text-muted);font-size:var(--pd-font-secondary);text-overflow:ellipsis;white-space:nowrap;padding:.35rem .45rem .25rem;font-weight:600;overflow:hidden}.canvas-context-menu>button{text-align:left;background:0 0;border:0;justify-content:flex-start;padding-inline:.55rem}.canvas-context-menu>button:hover,.canvas-context-menu>button:focus-visible{background:var(--pd-color-bg-muted)}.canvas-text-editor{z-index:8;box-sizing:border-box;color:#0f172a;background:#fff;border:2px solid #2563eb;border-radius:3px;outline:none;min-height:28px;padding:2px 5px;font-family:system-ui,sans-serif;line-height:1.2;position:absolute;box-shadow:0 2px 8px #0f172a2e}.canvas-context-attachment{border-top:1px solid var(--pd-color-border);gap:.2rem;padding-top:.25rem;display:grid}.canvas-context-attachment>span{max-width:18rem;color:var(--pd-color-text-muted);font-size:var(--pd-font-secondary);text-overflow:ellipsis;white-space:nowrap;padding:.25rem .45rem;overflow:hidden}.canvas-context-attachment>button{text-align:left;background:0 0;border:0;justify-content:flex-start;padding-inline:.55rem}.canvas-context-attachment>button:hover,.canvas-context-attachment>button:focus-visible{background:var(--pd-color-bg-muted)}.placement-preview{z-index:6;min-width:8rem;padding:var(--pd-space-2) var(--pd-space-3);border:1px dashed var(--pd-color-accent);border-radius:var(--pd-radius-control);color:var(--pd-color-accent);box-shadow:var(--pd-shadow-panel);pointer-events:none;background:#ffffffeb;gap:.125rem;display:grid;position:absolute;transform:translate(.75rem,.75rem)}.editor-workspace:has(.component-library-region>button[aria-expanded=false]){grid-template-columns:3rem minmax(0, 1fr) var(--pd-inspector-width)}.component-library-region:has(>button[aria-expanded=false])>button{margin:var(--pd-space-2);padding-inline:var(--pd-space-1);writing-mode:vertical-rl}@media (width<=1199px){.editor-workspace{grid-template-areas:"library canvas properties";grid-template-columns:3rem minmax(0, 1fr) var(--pd-inspector-width);position:relative}.component-library-region:not(:has(>button[aria-expanded=false])){z-index:9;width:var(--pd-sidebar-width);box-shadow:var(--pd-shadow-panel);position:absolute;inset:0 auto 0 0}}@media (width<=1100px){:is(.editor-workspace,.editor-workspace:has(.component-library-region>button[aria-expanded=false])){grid-template-columns:3rem minmax(0,1fr);grid-template-areas:"library canvas"}.inspector-stack{z-index:8;width:min(var(--pd-inspector-width), calc(100% - 3rem));max-height:100%;box-shadow:var(--pd-shadow-panel);position:absolute;inset:0 0 0 auto}}@media (width<=767px){.physdraw-app{min-height:100vh}.app-header{flex-direction:column;align-items:stretch}.app-header>div:last-child{grid-template-columns:minmax(0,1fr)}.editor-toolbar{max-height:7rem;overflow:auto}}html,body,#root{height:100%;min-height:0;overflow:hidden}.physdraw-app{grid-template-rows:auto auto minmax(0,1fr) auto;height:100dvh;min-height:0;overflow:hidden}@media (height<=420px){.physdraw-app{height:auto;min-height:45rem;overflow:visible}}.editor-workspace,.component-library-region,.scene-workspace,.scene-card,.canvas-surface,.inspector-stack{min-height:0}.entity-deletion-dialog,.model-semantic-export-dialog{z-index:100;width:min(30rem, calc(100vw - 2 * var(--pd-space-5)));max-height:calc(100dvh - 2 * var(--pd-space-5));box-sizing:border-box;padding:var(--pd-space-5);border:1px solid var(--pd-color-border-strong);border-radius:var(--pd-radius-control);background:var(--pd-color-bg-panel);box-shadow:var(--pd-shadow-panel);position:fixed;inset-block-start:50%;inset-inline-start:50%;overflow:auto;transform:translate(-50%,-50%)}.entity-deletion-dialog h2,.model-semantic-export-dialog h2{margin-block:0 var(--pd-space-3);font-size:var(--pd-font-section)}.entity-deletion-dialog p,.model-semantic-export-dialog p{margin-block:0 var(--pd-space-4);line-height:var(--pd-line-body)}.entity-deletion-dialog button+button,.model-semantic-export-dialog button+button{margin-inline-start:var(--pd-space-2)}.model-semantic-export-dialog dl{gap:var(--pd-space-3);margin-block:0 var(--pd-space-4);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.model-semantic-export-dialog dd{margin:var(--pd-space-1) 0 0}.editor-workspace,.component-library-region,.inspector-stack{overflow:hidden}.inspector-stack>*{min-height:0;overflow:visible}.inspector-stack .diagnostics-panel{max-height:none}.component-library{min-height:0;overflow:auto}.inspector-stack{background:var(--pd-color-bg-panel);overscroll-behavior:contain;grid-auto-rows:max-content;overflow:hidden auto}.inspector-panel-shell{padding:0;display:block;overflow:visible}.inspector-panel-header{z-index:3;justify-content:space-between;align-items:center;gap:var(--pd-space-2);min-height:2.75rem;padding:var(--pd-space-2) var(--pd-space-4);border-bottom:1px solid var(--pd-color-border);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#fffffff5;display:flex;position:sticky;top:0}.inspector-panel-header h2,.inspector-panel-header span{min-width:0;margin:0}.inspector-panel-header span{color:var(--pd-color-text-muted);font-size:var(--pd-font-secondary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.inspector-tab-group{min-width:0}.inspector-tab-list{z-index:2;border-bottom:1px solid var(--pd-color-border);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#fffffff7;grid-template-columns:repeat(4,minmax(0,1fr));display:grid;position:sticky;top:2.75rem}.inspector-tab-list button{justify-content:center;align-items:center;gap:var(--pd-space-1);min-width:0;min-height:2.45rem;padding:var(--pd-space-1);border:0;color:var(--pd-color-text-muted);text-align:center;background:0 0;border-bottom:2px solid #0000;border-radius:0;font-size:.72rem;font-weight:700;line-height:1.15;display:flex}.inspector-tab-list button:hover{background:var(--pd-color-bg-muted)}.inspector-tab-list button[aria-selected=true]{border-bottom-color:var(--pd-color-accent);color:var(--pd-color-accent);background:var(--pd-color-accent-soft)}.inspector-tab-list button:focus-visible{z-index:1;position:relative}.inspector-tab-list button>span:first-child{min-width:0}.inspector-tab-list .inspector-disclosure-badge{min-width:1rem;margin:0;padding-inline:.25rem;font-size:.65rem;line-height:1rem}.inspector-tab-panel{min-width:0}.inspector-disclosure{border-bottom:1px solid var(--pd-color-border)}.inspector-disclosure>summary{align-items:center;gap:var(--pd-space-2);min-height:2.5rem;padding:var(--pd-space-2) var(--pd-space-3);color:var(--pd-color-text);background:var(--pd-color-bg-panel);cursor:pointer;font-size:var(--pd-font-section);-webkit-user-select:none;user-select:none;font-weight:700;list-style:none;display:flex}.inspector-disclosure>summary::-webkit-details-marker{display:none}.inspector-disclosure>summary:before{width:1rem;color:var(--pd-color-text-muted);content:"›";text-align:center;font-size:1.1rem;line-height:1;transition:transform .12s}.inspector-disclosure[open]>summary:before{transform:rotate(90deg)}.inspector-disclosure>summary:hover{background:var(--pd-color-bg-muted)}.inspector-disclosure-badge{min-width:1.25rem;color:var(--pd-color-accent);background:var(--pd-color-accent-soft);font-size:var(--pd-font-secondary);text-align:center;border-radius:999px;margin-inline-start:auto;padding:0 .35rem;line-height:1.25rem}.inspector-disclosure-content{gap:var(--pd-space-2);padding:0 var(--pd-space-3) var(--pd-space-3);background:var(--pd-color-bg-muted);display:grid}.inspector-disclosure-content>.diagnostics-panel,.inspector-disclosure-content>section{background:0 0;border:0;padding:0}.inspector-disclosure-content .scene-inspector{gap:var(--pd-space-2);display:grid}.inspector-disclosure-content .scene-inspector>h2{display:none}.scene-inspector>.panel-helper{margin:var(--pd-space-2) 0 0}.scene-inspector fieldset{gap:var(--pd-space-2);min-width:0;margin:var(--pd-space-2) 0 0;padding:var(--pd-space-2);border:1px solid var(--pd-color-border);border-radius:var(--pd-radius-control);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.scene-inspector fieldset legend{padding-inline:var(--pd-space-1);color:var(--pd-color-text-muted);font-size:var(--pd-font-secondary);font-weight:700}.scene-inspector .inspector-number-setting,.scene-inspector .inspector-color-setting{align-content:end;gap:var(--pd-space-1);min-width:0;color:var(--pd-color-text-muted);font-size:var(--pd-font-secondary);display:grid}.scene-inspector .inspector-wide-setting{grid-column:1/-1}.scene-inspector .inspector-check-setting{align-items:center;gap:var(--pd-space-1);min-width:0;font-size:var(--pd-font-secondary);grid-template-columns:auto minmax(0,1fr);display:grid}.scene-inspector input:not([type=checkbox]),.scene-inspector select{width:100%;min-width:0}.scene-inspector>section{gap:var(--pd-space-2);min-width:0;display:grid}.scene-inspector>section h3{margin:var(--pd-space-2) 0 0}.scene-inspector .button-row{gap:var(--pd-space-2);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.scene-inspector .button-row button{min-width:0;padding-inline:var(--pd-space-2)}.graphic-inspector{padding:0;display:block}.graphic-inspector h2,.graphic-inspector p{margin:0}.graphic-inspector fieldset{gap:var(--pd-space-2);min-width:0;padding:var(--pd-space-3);border:1px solid var(--pd-color-border);border-radius:var(--pd-radius-control);margin:0;display:grid}.graphic-inspector label:not(.appearance-checkbox-control),.graphic-point-fields label{gap:var(--pd-space-1);min-width:0;font-size:var(--pd-font-section);display:grid}.inspector-inline-options{gap:var(--pd-space-2);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.inspector-disclosure-content .entity-property-section,.inspector-disclosure-content .physical-property-fields{margin-top:var(--pd-space-2);padding:var(--pd-space-2)}.inspector-disclosure-content .physical-property-fields{gap:var(--pd-space-2);grid-template-columns:repeat(2,minmax(0,1fr))}.inspector-disclosure-content .physical-property-fields>legend,.inspector-disclosure-content .physical-property-fields>[role=alert]{grid-column:1/-1}.inspector-disclosure-content .entity-basic-section dl{gap:var(--pd-space-2);grid-template-columns:minmax(0,1fr)}.inspector-disclosure-content .entity-basic-section dl>div{align-items:start;gap:var(--pd-space-2);min-width:0;padding-bottom:var(--pd-space-2);grid-template-columns:4.75rem minmax(0,1fr)}.inspector-disclosure-content .entity-basic-section dt,.inspector-disclosure-content .entity-basic-section dd{min-width:0}.inspector-disclosure-content .entity-basic-section input,.graphic-inspector input:not([type=checkbox]),.graphic-inspector select{box-sizing:border-box;width:100%;min-width:0}.graphic-point-list{gap:var(--pd-space-3);display:grid}.graphic-point-fields{gap:var(--pd-space-2);grid-template-columns:repeat(2,minmax(0,1fr));min-width:0;display:grid}.graphic-point-fields strong{font-size:var(--pd-font-section);grid-column:1/-1}.scene-workspace{min-width:0;overflow:hidden}.scene-card{grid-template-rows:auto minmax(0,1fr);min-width:0;height:100%;overflow:hidden}.canvas-surface{min-width:0;min-height:0;overflow:hidden}.editor-canvas{min-width:0}.component-library ul{gap:var(--pd-space-2);grid-template-columns:repeat(3,minmax(0,1fr))}.component-library .library-icon-card{background:0 0;border:0;min-width:0;padding:0;display:block;position:relative}.library-icon-button{width:100%;min-height:3.25rem;padding:var(--pd-space-1);border:1px solid var(--pd-color-border);border-radius:var(--pd-radius-control);color:var(--pd-color-accent);background:var(--pd-color-bg-muted);cursor:pointer;place-items:center;display:grid}span.library-icon-button{cursor:default}.library-icon-button .library-card-preview{background:0 0;border:0;width:100%;height:2.5rem}.library-hover-card{z-index:20;left:calc(var(--pd-sidebar-width) + var(--pd-space-2));gap:var(--pd-space-1);width:13.5rem;max-height:calc(100dvh - 2rem);padding:var(--pd-space-3);border:1px solid var(--pd-color-border-strong);border-radius:var(--pd-radius-control);color:var(--pd-color-text);background:var(--pd-color-bg-panel);box-shadow:var(--pd-shadow-panel);pointer-events:none;display:none;position:fixed;top:50%;overflow:hidden;transform:translateY(-50%)}.library-hover-card .library-card-preview{width:100%;height:4rem}.library-hover-card>span:not(.library-status-badge){color:var(--pd-color-text-muted);font-size:var(--pd-font-secondary)}.library-icon-card:hover .library-hover-card,.library-icon-button:focus-visible+.library-hover-card{display:grid}.port-selection-fieldset{gap:var(--pd-space-2);min-width:0;margin:var(--pd-space-2) 0 0;padding:var(--pd-space-2);border:1px solid var(--pd-color-border);border-radius:var(--pd-radius-control);display:grid}.port-selection-fieldset label{gap:var(--pd-space-1);min-width:0;display:grid}.port-selection-fieldset select{box-sizing:border-box;width:100%;min-width:0}.port-picker-label{color:var(--pd-color-text-muted);font-size:var(--pd-font-secondary)}.port-picker{min-width:0;position:relative}.port-picker-trigger{border:1px solid var(--pd-color-border);border-radius:var(--pd-radius-control);width:100%;min-width:0;color:var(--pd-color-text);background:var(--pd-color-bg-panel);text-align:left;padding:.38rem .5rem}.port-picker-options{z-index:20;border:1px solid var(--pd-color-border);border-radius:var(--pd-radius-control);background:var(--pd-color-bg-panel);max-height:13rem;box-shadow:var(--pd-shadow-panel);padding:.25rem;display:grid;position:absolute;top:calc(100% + .2rem);left:0;right:0;overflow-y:auto}.port-picker-options>button{border-radius:calc(var(--pd-radius-control) - 2px);min-width:0;color:var(--pd-color-text);text-align:left;white-space:normal;background:0 0;border:0;padding:.38rem .45rem}.port-picker-options>button:hover,.port-picker-options>button:focus-visible{background:#16a34a1f;outline:1px solid #16a34a73}.port-picker-options>button.is-selected{color:#14532d;background:#16a34a2e;font-weight:600}.manual-snap-panel{gap:var(--pd-space-3);padding:var(--pd-space-3);border:1px solid var(--pd-color-border);border-radius:var(--pd-radius-control);background:var(--pd-color-bg-muted);display:grid}.manual-snap-panel-header{justify-content:space-between;align-items:flex-start;gap:var(--pd-space-2);display:flex}.manual-snap-panel-header>div{gap:.125rem;min-width:0;display:grid}.manual-snap-panel-header span,.manual-snap-summary{color:var(--pd-color-text-muted);font-size:var(--pd-font-secondary)}.manual-snap-field{gap:var(--pd-space-1);min-width:0;display:grid}.manual-snap-field>span{color:var(--pd-color-text-muted);font-size:var(--pd-font-secondary)}.manual-snap-summary{margin:0}.manual-snap-actions{gap:var(--pd-space-2);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.port-selection-fieldset p{color:var(--pd-color-text-muted);font-size:var(--pd-font-secondary);margin:0}.linear-circle-relation-editor{gap:var(--pd-space-2);min-width:0;margin-bottom:var(--pd-space-3);padding:var(--pd-space-3);border:1px solid var(--pd-color-border);border-radius:var(--pd-radius-control);background:var(--pd-color-bg-muted);display:grid}.linear-circle-relation-editor>label,.linear-circle-relation-actions{gap:var(--pd-space-1);min-width:0;display:grid}.linear-circle-relation-actions button{width:100%}.linear-circle-relation-actions small{margin-bottom:var(--pd-space-1);color:var(--pd-color-text-muted);line-height:var(--pd-line-body)}.linear-circle-relation-editor [role=status]{margin:0}.direction-relation-fields{gap:var(--pd-space-2);grid-template-columns:minmax(0,1fr);min-width:0;display:grid}.direction-relation-fields>label,.direction-relation-fields>button{box-sizing:border-box;width:100%;min-width:0}.direction-relation-fields>label{gap:var(--pd-space-1);display:grid}.direction-relation-fields select,.direction-relation-fields input{box-sizing:border-box;width:100%;min-width:0}.constraint-list{gap:var(--pd-space-1);margin:0;padding:0;list-style:none;display:grid}.constraint-list>li{min-width:0}.constraint-list>li>button{width:100%;padding-inline:var(--pd-space-2);color:var(--pd-color-text-muted);text-align:start}.constraint-list>li>button[aria-pressed=true]{color:var(--pd-color-text);font-weight:700}.constraint-lifecycle-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:.4rem;padding:.4rem 0 .15rem;display:grid}.constraint-lifecycle-actions button{min-width:0;padding-inline:var(--pd-space-2)}.constraint-lifecycle-actions p{grid-column:1/-1;margin:0}.sphere-markings-panel{gap:.5rem;display:grid}.sphere-marking-checkbox,.sphere-marking-visibility label{align-items:center;gap:.35rem;display:flex}.sphere-marking-list-heading,.sphere-marking-row{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.sphere-marking-list{gap:.55rem;margin:0;padding-left:1.25rem;display:grid}.sphere-marking-list>li{border:1px solid var(--panel-border,#d1d5db);border-radius:.35rem;gap:.4rem;padding:.55rem;display:grid}.sphere-marking-visibility{flex-wrap:wrap;gap:.35rem .7rem;display:flex}.symmetry-tool-panel{border:1px solid var(--panel-border,#d1d5db);background:var(--panel-background,#fff);border-radius:.5rem;gap:.75rem;padding:.75rem;display:grid}.symmetry-tool-panel>h3,.symmetry-tool-panel>p{margin:0}.symmetry-tool-panel>label,.symmetry-tool-slots{gap:.45rem;display:grid}.symmetry-tool-slots>button{text-align:left;border:1px solid var(--panel-border,#d1d5db);background:0 0;border-radius:.35rem;gap:.2rem;padding:.55rem;display:grid}.symmetry-tool-slots>button[aria-pressed=true]{border-color:var(--accent,#2563eb);box-shadow:0 0 0 1px var(--accent,#2563eb)}.symmetry-tool-actions{gap:.5rem;display:flex}.mirror-symmetry-fields{display:none}
