*{box-sizing:border-box}:root{--navbar-height: 40px}body{margin:0;padding:0;overflow:hidden;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif}#canvas{position:fixed;top:var(--navbar-height);left:0;width:100%;height:calc(100% - var(--navbar-height));z-index:1}#topNavbar{position:fixed;top:0;left:0;width:100%;background:#fffffff2;box-shadow:none;border-bottom:1px solid #ddd;z-index:1000;display:flex;justify-content:space-between;align-items:center;height:var(--navbar-height);box-sizing:border-box;padding:0 6px}.brand{margin-left:4px;flex:0 0 auto;display:flex;align-items:center;gap:4px;height:var(--navbar-height)}.app-icon{width:22px;height:22px;margin-left:6px;-webkit-user-select:none;user-select:none}.app-name{font-weight:600;font-size:15px;color:#222;letter-spacing:.2px;margin-right:8px;-webkit-user-select:none;user-select:none}.brand-divider{height:24px;width:1px;background-color:#e0e0e0;margin:0 5px}.navbar-buttons{display:flex;flex:0 0 auto;align-items:center;height:var(--navbar-height)}.navbar-right{margin-right:4px;flex:0 0 auto;display:flex;align-items:center;height:var(--navbar-height)}.toolbar-separator{width:1px;height:20px;background:#ddd;margin:0 6px;flex:0 0 auto}#controls{position:fixed;top:50px;left:20px;background:#fff;padding:15px;border-radius:5px;box-shadow:none;border:1px solid #ddd;z-index:1000;border-top:3px solid #4a90e2}#shapeControls{margin-top:10px;padding-top:10px;border-top:1px solid #ccc}button{margin:0;padding:4px 12px;border:none;border-radius:4px;background-color:transparent;transition:background-color .2s ease;font-size:14px;color:#333;cursor:pointer;height:32px;box-sizing:border-box;display:flex;align-items:center}button:hover{background-color:#0000000d}.navbar-buttons button:disabled{color:#b0b0b0;cursor:default;background-color:transparent}button.active{background-color:#4a90e2;color:#fff;border-radius:4px}input[type=number]{width:60px;margin:2px 0}.dropdown{position:relative;display:inline-block}.dropdown-content{display:none;position:absolute;top:100%;left:0;background-color:#fff;min-width:160px;box-shadow:0 4px 8px #0000001a;z-index:1001;border-radius:0 0 4px 4px;margin-top:0;overflow:hidden}.dropdown-content.dropdown-right{left:auto;right:0}.dropdown-content a{color:#333;padding:10px 16px;text-decoration:none;display:block;transition:background-color .2s ease}.dropdown-content a:hover{background-color:#0000000d}.edit-menu{min-width:200px}.dropdown-content .menu-item{display:flex;justify-content:space-between;align-items:center;gap:24px;width:100%;height:auto;padding:10px 16px;border-radius:0;color:#333;font-size:14px;text-align:left}.dropdown-content .menu-item kbd{font-family:inherit;font-size:12px;color:#888}.menu-separator{height:1px;background:#e5e5e5;margin:4px 0}.dropdown-content .menu-item.scene-entry.current{font-weight:600}.dialog-row .dialog-link{width:260px;font-size:12px}.dialog-row .secondary-button{margin-left:6px;padding:4px 10px;font-size:12px}.dropdown-content .menu-item[hidden]{display:none}.dropdown-content .menu-item:disabled{color:#b0b0b0;cursor:default;background-color:transparent}.dropdown-content .menu-item:disabled kbd{color:#c8c8c8}.dropdown.open>.dropdown-content{display:block}.dropdown.open>button{background-color:#00000014}.tools-trigger{display:none}.tools .tools-content{display:flex;align-items:center;position:static;min-width:0;box-shadow:none;background:transparent;overflow:visible;border-radius:0}.tools.collapsed .tools-trigger{display:flex}.tools.collapsed .tools-content{display:none;position:absolute;flex-direction:column;align-items:stretch;background-color:#fff;box-shadow:0 4px 8px #0000001a;border-radius:0 0 4px 4px;min-width:160px}.tools.collapsed.open .tools-content{display:flex}.tools.collapsed .tools-content .toolbar-separator{width:auto;height:1px;margin:4px 0}.tools.collapsed .tools-content button{justify-content:flex-start;height:auto;padding:10px 16px;border-radius:0}#primitiveDropdown:hover,#editDropdown:hover,#toolsDropdown:hover,#annotateDropdown:hover{background-color:#0000000d}#explorerPanel{position:fixed;top:var(--navbar-height);left:-300px;width:280px;height:calc(100% - var(--navbar-height));background:#fffffffa;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);box-shadow:none;border-right:1px solid #ddd;z-index:999;display:flex;flex-direction:column;transition:left .3s ease;padding:0;margin:0}#explorerPanel.visible{left:0}.explorer-header{padding:10px;font-weight:700;border-bottom:1px solid #eee;box-sizing:border-box}.explorer-content{flex:1 1 auto;display:flex;flex-direction:column;padding:10px;box-sizing:border-box;overflow:hidden}.shape-item{padding:8px 10px;margin-bottom:5px;background-color:#f5f5f5;border-radius:4px;cursor:pointer;transition:background-color .2s ease}.shape-item .rename-input{width:100%;padding:2px 4px;font:inherit;border:1px solid #4a90e2;border-radius:3px;box-sizing:border-box}.shape-item:hover{background-color:#e5e5e5}.shape-item.selected{background-color:#e3f2fd;border-left:3px solid #4a90e2}#explorerButton{position:relative;padding:4px 12px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:background-color .2s ease;height:32px;box-sizing:border-box}#explorerButton img{vertical-align:middle}#explorerButton:hover{background-color:#0000000d}.keyboard-tip{font-size:12px;color:#666;margin-left:10px;opacity:.7}#viewHelper{position:absolute;right:0;bottom:0;width:128px;height:128px;pointer-events:auto;z-index:2}.shapes-list{overflow-y:auto;max-height:100%}.explorer-content.with-editor{gap:12px}.explorer-content.with-editor .shapes-list{flex:0 0 auto;max-height:40%}.property-editor-container{flex:1 1 0;min-height:0;overflow-y:auto;border-top:1px solid #ddd;padding:10px}.property-editor{display:flex;flex-direction:column;gap:12px}.prop-row{display:flex;align-items:center;width:100%}.prop-label{min-width:64px;font-size:13px}.prop-header{margin-bottom:-6px}.prop-axis{flex:1 1 0;text-align:center;font-size:11px;color:#888}.prop-check{display:flex;align-items:flex-start;gap:8px;font-size:12px;color:#444;line-height:1.3}.prop-check input{margin:1px 0 0}.prop-inputs{display:flex;flex:1 1 0;min-width:0;gap:5px}.prop-inputs .prop-input,.prop-row .prop-select{flex:1 1 0;width:auto;min-width:0;padding:5px 4px;font-size:13px;text-align:right;border:1px solid #ccc;border-radius:4px;margin:0}.prop-inputs .prop-input::-webkit-inner-spin-button,.prop-inputs .prop-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.prop-inputs .prop-input{-moz-appearance:textfield}.secondary-button,.update-button{align-self:flex-start;padding:6px 12px;border:none;border-radius:4px;cursor:pointer;font-size:14px;height:auto}.update-button{background-color:#4285f4;color:#fff;margin-top:10px}.update-button:hover{background-color:#1a73e8}.secondary-button{background-color:#eee;color:#333}.topology summary,.code-section summary{cursor:pointer;font-size:13px;font-weight:700}.topology-list{display:flex;flex-direction:column;row-gap:4px;margin-top:6px}.topology-item{display:flex;align-items:center;column-gap:8px;font-size:12px}.topology-empty{font-size:12px;color:#666;margin-top:6px}.topology-clear{margin-top:6px;padding:3px 10px;font-size:12px}.code-editor{display:block;width:100%;height:150px;margin-top:5px;padding:10px;box-sizing:border-box;background-color:#f5f5f5;border:1px solid #ddd;border-radius:4px;font-family:monospace;font-size:12px;resize:vertical}.status-indicator{font-size:12px;margin-top:5px;min-height:1em}.status-indicator.ok{color:#4caf50}.status-indicator.error{color:#d32f2f}#notifications{position:fixed;top:calc(var(--navbar-height) + 10px);left:50%;transform:translate(-50%);display:flex;flex-direction:column;gap:8px;z-index:2000;pointer-events:none}.toast{pointer-events:auto;max-width:480px;padding:10px 14px;border-radius:6px;background:#333;color:#fff;font-size:13px;box-shadow:0 4px 12px #0003;cursor:pointer}.toast-warning{background:#b26a00}.toast-error{background:#c62828}.finishing-steps{display:flex;flex-direction:column;gap:6px}.finishing-title{font-size:13px;font-weight:700}.finishing-step{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12px}.finishing-amount{display:flex;align-items:center;gap:6px;font-size:12px;color:#555}.finishing-amount .prop-input{width:64px;flex:0 0 auto;padding:3px 4px;font-size:12px;text-align:right;border:1px solid #ccc;border-radius:4px;-moz-appearance:textfield}.finishing-amount .prop-input::-webkit-inner-spin-button,.finishing-amount .prop-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.dialog-input.dialog-text{width:220px}.dialog-status[hidden]{display:none}.dialog-status.warning{color:#8a5a00}.finishing-step .secondary-button{align-self:auto;padding:4px 8px;font-size:12px;white-space:nowrap}#sketchHint{position:fixed;bottom:16px;left:50%;transform:translate(-50%);max-width:640px;padding:8px 14px;border-radius:6px;background:#1a73e8eb;color:#fff;font-size:13px;z-index:1500;pointer-events:none}#canvas.sketching{cursor:crosshair}.point-editor summary{cursor:pointer;font-size:13px;font-weight:700}.point-row{display:flex;align-items:center;gap:6px;margin-top:4px}.point-label{min-width:28px;font-size:12px}.icon-button{flex:0 0 auto;width:22px;height:22px;padding:0;justify-content:center;border-radius:4px;background:#eee;color:#333;font-size:14px}.icon-button:disabled{opacity:.4;cursor:default}.point-editor .secondary-button{margin-top:8px}.dialog-overlay{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:3000}.dialog{position:fixed;top:44px;right:16px;width:min(340px,calc(100% - 32px));min-width:220px;max-height:calc(100% - 60px);display:flex;flex-direction:column;overflow:visible;pointer-events:auto;background:#fff;border-radius:8px;box-shadow:0 12px 32px #00000040;font-size:12px}.dialog.collapsed{height:auto!important;width:220px!important}.dialog.collapsed .resize-handle{display:none}.resize-handle{position:absolute;z-index:1}.resize-n,.resize-s{left:8px;right:8px;height:6px}.resize-e,.resize-w{top:8px;bottom:8px;width:6px}.resize-n{top:0}.resize-s{bottom:0}.resize-e{right:0}.resize-w{left:0}.resize-ne,.resize-nw,.resize-se,.resize-sw{width:12px;height:12px}.resize-ne{top:0;right:0}.resize-nw{top:0;left:0}.resize-se{bottom:0;right:0}.resize-sw{bottom:0;left:0}.dialog.collapsed .dialog-body{display:none}.dialog-body{flex:1 1 auto;min-height:0;overflow:auto;padding:0 14px 12px}.dialog-title{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;padding:6px 8px 6px 14px;background:#f3f6fb;border-radius:8px 8px 0 0;cursor:move;-webkit-user-select:none;user-select:none}.dialog-title h3{margin:0;font-size:14px}.dialog-minimise{width:22px;height:22px;padding:0;justify-content:center;border-radius:4px;background:#fff;color:#333;font-size:14px;line-height:1;cursor:pointer}.dialog-minimise:hover{background:#e3e8f0}.dialog h4{margin:10px 0 4px;font-size:12px}.dialog-lead{margin:0;color:#555}.dialog-options{display:flex;flex-direction:column;gap:4px}.dialog-option{display:flex;align-items:flex-start;gap:8px;padding:4px 6px;border-radius:4px;cursor:pointer}.dialog-option:hover{background:#f3f6fb}.dialog-option input{margin-top:3px}.dialog-option span{display:flex;flex-direction:column}.dialog-option small{color:#666}.dialog-row{display:flex;align-items:center;gap:10px;margin-top:10px}.dialog-input{width:90px;padding:5px;border:1px solid #ccc;border-radius:4px}.dialog-buttons{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}.dialog-buttons .update-button,.dialog-buttons .secondary-button{margin-top:0}.revolve-settings summary{cursor:pointer;font-size:13px;font-weight:700}.revolve-settings .prop-row{margin-top:6px}.dialog-status{margin-top:8px;font-size:11px;color:#1a73e8}.dialog-status.error{color:#c62828}.dialog-buttons .update-button:disabled{opacity:.5;cursor:default}
