:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;min-width:320px;min-height:100vh}#root{width:100%;height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media(prefers-color-scheme:light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}.left-side-menu{width:280px;height:100%;background:#fff;border-right:1px solid #e0e0e0;display:flex;flex-direction:column;box-shadow:2px 0 4px #0000001a}.left-side-menu-header{padding:1rem;border-bottom:1px solid #e0e0e0;background:#f8f9fa}.left-side-menu-header h2{margin:0;font-size:1.25rem;font-weight:600;color:#333}.left-side-menu-content{flex:1;overflow-y:auto;padding:1rem}.control-section{margin-bottom:1.5rem;padding:1rem;background:#f8f9fa;border-radius:8px;border:1px solid #e0e0e0}.control-section h3{margin:0 0 .5rem;font-size:1rem;font-weight:600;color:#333}.control-section p{margin:0;font-size:.875rem;color:#666}.left-side-menu-content::-webkit-scrollbar{width:8px}.left-side-menu-content::-webkit-scrollbar-track{background:#f1f1f1}.left-side-menu-content::-webkit-scrollbar-thumb{background:#ccc;border-radius:4px}.left-side-menu-content::-webkit-scrollbar-thumb:hover{background:#aaa}.control-row{margin-bottom:1rem}.control-row:last-child{margin-bottom:0}.control-row>label{display:block;font-size:.875rem;font-weight:500;color:#555;margin-bottom:.5rem}.radio-group{display:flex;gap:1rem}.radio-label{display:flex;align-items:center;gap:.375rem;font-size:.875rem;color:#333;cursor:pointer}.radio-label input[type=radio]{cursor:pointer;accent-color:#646cff}.size-slider{width:100%;height:6px;cursor:pointer;accent-color:#646cff}.size-slider::-webkit-slider-thumb{cursor:pointer}.size-slider::-moz-range-thumb{cursor:pointer}.color-picker{width:100%;height:36px;padding:2px;border:1px solid #ccc;border-radius:4px;cursor:pointer;background:transparent}.color-picker::-webkit-color-swatch-wrapper{padding:2px}.color-picker::-webkit-color-swatch{border:none;border-radius:2px}.severity-group{display:flex;flex-direction:column;gap:.5rem}.severity-label{display:flex;align-items:center;gap:.5rem;font-size:.875rem;color:#333;cursor:pointer;padding:.25rem 0}.severity-label input[type=radio]{cursor:pointer;accent-color:#646cff}.severity-indicator{width:12px;height:12px;border-radius:50%;display:inline-block}.regions-list{display:flex;flex-direction:column;gap:.5rem;max-height:300px;overflow-y:auto}.region-item{display:flex;align-items:center;justify-content:space-between;padding:.5rem;background:#fff;border:1px solid #e0e0e0;border-radius:4px;gap:.5rem}.region-item-content{display:flex;align-items:center;gap:.5rem;flex:1;min-width:0}.region-severity-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.region-item-label{font-size:.875rem;font-weight:500;color:#333;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.region-item-severity{font-size:.75rem;color:#666;flex-shrink:0}.region-item-actions{display:flex;gap:.25rem;flex-shrink:0}.region-action-btn{width:24px;height:24px;border:none;border-radius:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:1rem;transition:background-color .15s}.region-delete-btn{background:#ffebee;color:#c62828}.region-delete-btn:hover{background:#ffcdd2}.region-action-btn:disabled{opacity:.5;cursor:not-allowed}.region-item.editing{flex-direction:column;align-items:stretch;padding:.75rem}.region-edit-form{display:flex;flex-direction:column;gap:.75rem}.edit-form-row{display:flex;flex-direction:column;gap:.25rem}.edit-form-row>label{font-size:.75rem;font-weight:500;color:#666}.edit-form-row input[type=text]{padding:.5rem;border:1px solid #ddd;border-radius:4px;font-size:.875rem}.edit-form-row input[type=text].input-error{border-color:#e53935}.error-text{font-size:.75rem;color:#e53935}.severity-group-compact,.type-group-compact{display:flex;gap:.75rem}.severity-option,.type-option{display:flex;align-items:center;gap:.25rem;font-size:.75rem;cursor:pointer}.edit-form-actions{display:flex;gap:.5rem;margin-top:.5rem;flex-wrap:wrap;align-items:center}.edit-btn{padding:.375rem .75rem;border:none;border-radius:4px;font-size:.75rem;font-weight:500;cursor:pointer;transition:background-color .15s}.move-btn{background:#e3f2fd;color:#1976d2}.move-btn:hover{background:#bbdefb}.cancel-btn{background:#f5f5f5;color:#666}.cancel-btn:hover{background:#e0e0e0}.save-btn{background:#4caf50;color:#fff}.save-btn:hover{background:#43a047}.move-hint{font-size:.75rem;color:#1976d2;font-style:italic}.region-edit-btn{background:#e3f2fd;color:#1976d2}.region-edit-btn:hover{background:#bbdefb}.new-label-input{width:100%;padding:.5rem;border:1px solid #ddd;border-radius:4px;font-size:.875rem;box-sizing:border-box}.new-label-input:focus{outline:none;border-color:#646cff}.new-label-input:disabled{background:#f5f5f5;cursor:not-allowed}.new-label-input.input-error{border-color:#e53935}.regions-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.regions-header h3{margin:0}.regions-header-actions{display:flex;gap:.5rem}.export-btn,.import-btn{padding:4px 8px;font-size:.75rem;border:1px solid #ccc;border-radius:4px;background:#fff;cursor:pointer;transition:background-color .2s,border-color .2s}.export-btn:hover:not(:disabled),.import-btn:hover:not(:disabled){background:#f0f0f0;border-color:#999}.export-btn:disabled,.import-btn:disabled{opacity:.5;cursor:not-allowed}.import-error{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;margin-top:.5rem;background:#ffebee;border:1px solid #ef5350;border-radius:4px;color:#c62828;font-size:.8rem}.import-error button{background:none;border:none;color:#c62828;font-size:1rem;cursor:pointer;padding:0 4px}.import-error button:hover{color:#b71c1c}.toast{position:fixed;top:1rem;right:1rem;padding:.75rem 1rem;border-radius:4px;display:flex;align-items:center;gap:1rem;z-index:1000;pointer-events:all;box-shadow:0 4px 12px #00000026;animation:toastSlideIn .3s ease-out;max-width:400px}@keyframes toastSlideIn{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}.toast-error{background:#f44;color:#fff}.toast-info{background:#646cff;color:#fff}.toast-message{flex:1;font-size:.875rem;font-weight:500}.toast-close{background:transparent;border:none;color:#fff;font-size:1.5rem;cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:background .2s;flex-shrink:0}.toast-close:hover{background:#fff3}.model3d-preview-wrapper{display:flex;width:100%;height:100%;min-height:500px}.model3d-preview-container{position:relative;flex:1;height:100%;min-height:500px;background:#f5f5f5;border:2px dashed transparent;border-radius:8px;overflow:hidden;transition:border-color .2s}.model3d-preview-container.dragging{border-color:#646cff;background:#e8e8e8}.model3d-canvas{display:block;width:100%;height:100%;outline:none}.model3d-overlay{position:absolute;inset:0;pointer-events:none;display:flex;align-items:center;justify-content:center;background:#f5f5f5b3;transition:opacity .2s;z-index:1}.model3d-instructions{text-align:center;color:#333;pointer-events:all}.model3d-instructions p{margin:0 0 1rem;font-size:1.1rem;font-weight:500}.model3d-file-input-label{display:inline-block;padding:.5rem 1rem;background:#646cff;color:#fff;border-radius:4px;cursor:pointer;transition:background .2s}.model3d-file-input-label:hover{background:#535bf2}.model3d-error{position:absolute;top:1rem;left:50%;transform:translate(-50%);background:#f44;color:#fff;padding:.75rem 1rem;border-radius:4px;display:flex;align-items:center;gap:1rem;z-index:10;pointer-events:all}.model3d-error button{background:transparent;border:none;color:#fff;font-size:1.5rem;cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:background .2s}.model3d-error button:hover{background:#fff3}.labels-container{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;overflow:hidden;z-index:5}.region-label{position:absolute;transform:translate(-50%,-100%) translateY(-10px);padding:6px 12px;border-radius:4px;color:#fff;font-size:13px;font-weight:500;white-space:nowrap;transition:opacity .15s ease-out;pointer-events:none}.region-label.visible{opacity:1}.region-label.hidden{opacity:0}.label-text{position:relative;z-index:1}.label-text strong{font-weight:600}.label-severity{font-weight:400;opacity:.9}.label-pointer{position:absolute;bottom:-8px;left:50%;transform:translate(-50%);width:0;height:0;border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid}.region-label.preview-label{opacity:.85;border:1px dashed rgba(255,255,255,.5)}.region-label.hint-label{opacity:.7;font-style:italic;font-size:12px}.region-label.hint-label .label-text{font-weight:400}.delete-confirm-overlay{position:absolute;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:100}.delete-confirm-dialog{background:#fff;padding:1.5rem;border-radius:8px;box-shadow:0 4px 20px #00000026;max-width:300px;text-align:center}.delete-confirm-dialog p{margin:0 0 1rem;font-size:1rem;color:#333}.delete-confirm-actions{display:flex;gap:.75rem;justify-content:center}.delete-confirm-btn{padding:.5rem 1rem;border:none;border-radius:4px;cursor:pointer;font-size:.875rem;font-weight:500;transition:background-color .15s}.delete-confirm-cancel{background:#e0e0e0;color:#333}.delete-confirm-cancel:hover{background:#d0d0d0}.delete-confirm-delete{background:#e53935;color:#fff}.delete-confirm-delete:hover{background:#c62828}.app-container{width:100%;height:100vh;display:flex;flex-direction:column}.app-main{flex:1;padding:0;display:flex;min-height:0}
