     :root {
            --main-color: #8080FF;
            --line: #7878784d;
            --main-bg: #222228;
            --panel-bg: #2E2E33;
            --bt-gradient: linear-gradient(to left, #6450ff, #8f56fa);
            --add-gradient: linear-gradient(to left, #50c878, #56fa8f);
            --octagon-gradient: linear-gradient(to left, #ff7e5f, #feb47b);
            --text1: #ffffff;
            --text2: #c7d1e2;
            --text3: #969dbb;
            --input-bg: #3a3a42;
            --scrollbar-thumb: #4a4a5a;
            --scrollbar-track: #2a2a33;
            --success: #50c878;
            --warning: #ff7e5f;
        }
        * { 
            box-sizing: border-box;
        }
        body {
            font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
            margin: 0; 
            background-color: var(--main-bg); 
            color: var(--text2);
            display: flex; 
            justify-content: center; 
            align-items: flex-start; 
            min-height: 100vh; 
            overflow: hidden;
        }
        .icon {
    display: inline-block;
    width: 1.2em;
    height: 1.2em;
    fill: currentColor;
}
.upload-button {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 5px;
    position: absolute;
    bottom: 0;
    z-index: 10;
    width: -webkit-fill-available;
    border-radius: 4px;
    margin: 10px;
    background: #343451;
    border: 1px dashed var(--main-color);
    color: var(--text1);
    padding: 10px 20px;
    cursor: pointer;
    transition: all 0.2s ease;
}
.upload-button:hover {
    background-color: #444462;
    scale: 1.05;
    transition: all 0.2s ease;
}
.import-model-button.active {
            border-color: var(--main-color);
            color: var(--main-color);
            background: #8080ff30;
        }

        .import-model-button:disabled {
            opacity: 0.4;
            cursor: not-allowed;
            border-color: var(--line);
            color: var(--text3);
            background: var(--input-bg);
        }
        .scripts {
            margin-left: 10px; 
            font-size: 14px; 
            font-weight: 400; 
            color: var(--text3);
        }
        #resizeHandle {
            position: relative;
            height: 10px;
            background: #00000000;
            cursor: ns-resize;
            z-index: 50;
            transition: background .2s;
        }
        .editor-container { 
            display: flex; 
            gap: 10px; 
            width: 100%; 
            height: calc(100vh - 40px); 
            position: relative; 
            margin: 20px 20px 20px 60px;
        }
        .controls-panel {
            width: 400px; 
            background-color: var(--panel-bg); 
            border: 1px solid var(--line); 
            border-radius: 8px;
            padding: 20px; 
            box-shadow: 0 4px 12px rgba(0,0,0,0.3); 
            flex-shrink: 0; 
            display: flex; 
            flex-direction: column; 
            height: 100%;
        }
        .controls-header {
            position: sticky;
            top: 0;
            background-color: var(--panel-bg);
            z-index: 10;
        }

        .controls-content {
            overflow-y: auto;
            flex-grow: 1;
        }
/* 新增右侧面板样式（上下对半分） */
        .right-panel {
            width: 380px; 
            background-color: var(--panel-bg); 
            border: 1px solid var(--line); 
            border-radius: 8px;
            flex-shrink: 0; 
            display: flex; 
            flex-direction: column; 
            height: 100%;
            overflow: hidden;
        }
        .right-section {
            display: flex; 
    flex-direction: column; 
    flex: 1; /* 这个值会在JS拖拽时被覆盖，保留作为默认 */
    overflow: hidden; 
        }
        .right-header {
            padding: 12px 15px;
            background-color: var(--panel-bg);
            flex-shrink: 0;
            display: flex;
            justify-content: space-between;
            align-items: center;
        }
        .right-header h3 {
            margin: 0;
            color: var(--text2);
            font-size: 14px;
            font-weight: 500;
            display: flex;
            align-items: center;
            gap: 8px;
        }
        .right-divider {
            height: 10px;
            background-color: var(--main-bg);
            border-top: 1px solid var(--line);
            border-bottom: 1px solid var(--line);
            flex-shrink: 0;
            cursor: ns-resize; /* 预留未来可能加拖拽条的空间 */
        }
        .right-content {
            flex: 1;
            overflow-y: auto;
            padding: 10px;
        }
        .right-content::-webkit-scrollbar {
            width: 8px;
        }
        .right-content::-webkit-scrollbar-track {
            background: var(--scrollbar-track);
        }
        .right-content::-webkit-scrollbar-thumb {
            background: var(--scrollbar-thumb);
            border-radius: 4px;
        }
        .preset-grid {
            display: grid;
            grid-template-columns: repeat(3, 1fr);
            gap: 10px;
            margin-bottom: 50px;
        }
        .preset-item {
            cursor: pointer;
            border: 2px solid var(--line);
            border-radius: 6px;
            overflow: hidden;
            transition: border-color .2s;
            background: #000;
        }
        .preset-item:hover {
            border-color: var(--main-color);
        }
        .preset-item img {
            width: 100%;
            aspect-ratio: 1/1;
            object-fit: cover;
            display: block;
        }
        .preset-name {
            font-size: 12px;
            text-align: center;
            padding: 4px;
            color: var(--text2);
            background: var(--input-bg);
        }
        .preview-panel {
            flex-grow: 1;
            display: flex;
            flex-direction: column;
            height: 100%;
            position: relative;
        }

        .preview-box {
            background-color: var(--panel-bg);
            border: 1px solid var(--line);
            border-radius: 8px;
            box-shadow: 0 4px 12px rgba(0,0,0,0.2);
            padding: 15px;
            overflow: hidden;
            position: relative;
            display: flex;
            flex-direction: column;
        }

        .top-preview {
            height: 50%;
        }
        .bottom-preview {   
            height: 50%;
        }
        .top-preview-content {
            display: flex;
            flex-grow: 1;
        }
        
        #hdr-canvas-wrapper {
            position: relative;
            min-width: 200px;
        }
        #hdrCanvas {
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            object-fit: contain;
        }
        #vertical-resize-handle {
            width: 10px;
            background: #00000000;
            cursor: ew-resize;
            flex-shrink: 0;
            transition: background .2s;
        }
        #vertical-resize-handle:hover {
            background: #ffffff1a;
        }
        
        #light-list-panel {
            flex: 0.25 1 0%;
            min-width: 200px;
            height: 100%;
            display: flex;
            flex-direction: column;
            border-left: 1px solid var(--line);
            padding-left: 10px;
            overflow: hidden;
        }
        
        .light-list-header h4 {
            margin: 0 0 10px 0;
            font-size: 14px;
            color: var(--text2);
            font-weight: 500;
            padding-bottom: 5px;
            border-bottom: 1px solid var(--line);
        }

        #light-list-items {
            list-style: none;
            padding: 0;
            margin: 0;
            overflow-y: auto;
            flex-grow: 1;
            background: var(--main-bg);
            border-radius: 4px;
            padding: 8px;
            height: -webkit-fill-available;
        }
        
        .light-item {
            display: flex;
            align-items: center;
            padding: 5px;
            border-radius: 4px;
            margin-bottom: 4px;
            cursor: pointer;
            transition: background-color .2s;
            font-size: 13px;
            border: 1px solid #00000000;
        }
 
        .light-item:nth-child(even) {
            background: var(--panel-bg)
        }
        .light-item:hover {
            background-color: #8080ff1a;
        }

        .light-item.active {
            background-color: #8080ff30;
            border: 1px solid var(--main-color);
        }
        
        .light-item .icon {
            margin-right: 6px;
            width: 16px;
            text-align: center;
        }

        .light-item .name {
            flex-grow: 1;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }
        
        .light-item .actions {
            display: flex;
            gap: 8px;
        }

        .light-item .actions button {
            background: none;
            border: none;
            color: var(--text3);
            cursor: pointer;
            padding: 2px;
            font-size: 14px;
            line-height: 1;
            transition: color .2s;
        }
        
        .light-item .actions button:hover {
            color: var(--text1);
        }


        .preview-header {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-bottom: 10px;
            font-size: 14px;
            color: var(--text3);
            flex-shrink: 0;
            flex-wrap: wrap;
            gap: 10px;
        }

        .preview-header h3 {
            margin: 0;
            color: var(--text2);
            font-weight: 500;
            display: flex;
            align-items: center;
            gap: 8px;
    flex-wrap: wrap;
        }

        .import-model-button {
            padding: 4px 12px;
            border: 1px solid var(--line);
            border-radius: 5px;
            background: var(--input-bg);
            color: var(--text2);
            cursor: pointer;
            transition: all .2s ease;
            font-size: 12px;
            margin-left: auto;
            display: flex;
    align-items: center;
    gap: 4px;
        }
        .import-model-button:hover {
            border-color: var(--main-color);
            color: var(--main-color);
        }

        canvas { 
            display:block; 
            background-color:#000; 
            border-radius:4px; 
            height:100%; 
            margin:0 auto; 
            width:100%; 
            border: 1px solid var(--main-bg);
        }
        canvas:hover {
            border: 1px solid #8080ff75;
        } 
        h2.main-title { 
            margin-top:0; 
            border-bottom:1px solid var(--line); 
            padding-bottom:15px; 
            font-size:22px; 
            color: var(--main-color); 
            font-weight:600; 
            display:flex; 
            align-items:center; 
            gap:10px; 
            justify-content:space-between; 
        }
        .button-group {
            display: grid;
            grid-template-columns: repeat(4,1fr);
            gap: 10px;
        }
        .button-group button {
            padding:7px 12px; 
            border:none; 
            border-radius:5px; 
            color: var(--text1); 
            cursor:pointer; 
            transition:all .2s ease;
            font-size:14px; 
            display:flex; 
            align-items:center; 
            justify-content:center; 
            gap:8px; 
            background:var(--line); 
            border:1px solid #969dbb00;
            flex-direction: column;
        }
        .button-group button.active {
            border:1px solid var(--main-color); 
            color: var(--main-color); 
            background:#8080ff30;
            box-shadow: 0 0 10px rgba(128, 128, 255, 0.5);
        }
        .button-group button:hover {
            border: 1px solid var(--main-color);
            color: var(--main-color);
            background: #8080ff30;
        }

        .export-button {
            padding: 10px 22px;
            border: none;
            border-radius: 25px;
            background: var(--bt-gradient);
            color: var(--text1);
            cursor: pointer;
            transition: all .2s ease-in-out;
            font-size: 14px;
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 8px;
        }

        .export-button:hover {
            transform: scale(1.05);
            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3);
        }

        .control-section {
            background-color: rgba(0,0,0,0.1);
            border: 1px solid var(--line);
            border-radius: 6px;
            padding: 15px;
            margin-top: 10px;
        }

        #modelControls {
            display: none; 
        }

        .control-group {
            margin: 10px 0;
            display: flex;
            align-items: center;
            justify-content: space-between;
        }
        .control-group label { 
            display:flex;  
            font-size:14px; 
            color: var(--text2); 
            width: 100px;
            gap: 4px;
        }
        .control-group input[type="range"], .gradient-stop-item input[type="range"] {
            -webkit-appearance: none;
            width: 100%;
            height: 4px;
            background:var(--line);
            border-radius: 2px;
            outline: none;
        }
        
        .control-group input[type="range"]::-webkit-slider-thumb {
            -webkit-appearance: none;
            appearance: none;
            width: 16px;
            height: 16px;
            border-radius: 50%;
            background: var(--main-color);
            cursor: pointer;
            border: 2px solid var(--panel-bg);
        }

        .control-group input[type="range"]::-moz-range-thumb {
            width: 14px;
            height: 14px;
            border-radius: 50%;
            background: var(--main-color);
            cursor: pointer;
            border: 2px solid var(--panel-bg);
        }

        .color-input-wrapper {
            display: flex;
            align-items: center;
            gap: 10px;
        }
        /* ===== 新增：渐变节点控制样式 ===== */
.gradient-stop-item {
    display: flex;
    align-items: center;
    gap: 8px;
    background: var(--main-bg);
    padding: 10px;
}
.gradient-stop-item input[type="color"] {
    min-width: 30px !important;
    height: 26px !important;
    padding: 0 !important;
    border: 1px solid var(--line);
    border-radius: 4px;
    background:var(--line);
}
.gradient-stop-item input[type="range"] {
    flex-grow: 1;
}
.gradient-stop-item .position-text {
    width: 35px;
    text-align: right;
    font-size: 12px;
    color: var(--text3);
}
.gradient-stop-item .delete-stop {
    background: none;
    border: none;
    color: var(--warning);
    cursor: pointer;
    padding: 2px 4px;
    font-size: 14px;
}
.gradient-stop-item .delete-stop:disabled {
    color: #4a4a5a;
    cursor: not-allowed;
}
        .control-group input[type="color"] {
            min-width: 40px;
            height: 30px;
            border: 1px solid var(--line);
            border-radius: 4px;
            padding: 2px;
            cursor: pointer;
            background: none;
        }

        .control-group input[type="text"], .control-group input[type="number"], #resolutionSelector {
            flex-grow: 1;
            background-color: var(--main-bg);
            color: var(--text1);
            border: 1px solid var(--line);
            border-radius: 4px;
            padding: 6px 8px;
            min-width: 70px;
        }

        .value-display {
            display: flex;
            align-items: center;
            gap: 10px;
            flex: 1;
        }

        .control-header {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-bottom: 10px;
            padding-bottom: 10px;
            border-bottom: 1px solid var(--line);
        }

        .control-header h3 {
            margin: 0;
            font-size: 16px;
            color: #f59e0b;
            font-weight: 500;
            display: flex;
            align-items: center;
            gap: 8px;
        }

        .delete-button {
            background: none;
            border: none;
            color: #fff;
            cursor: pointer;
            font-size: 14px;
            display: flex;
            align-items: center;
            gap: 4px;
        }

        .delete-button:hover {
            color: #ff4757;
        }

        .tab-buttons {
            display: flex;
            background-color: var(--line);
            border-radius: 6px;
            padding: 4px;
            margin-bottom: 15px;
            gap: 4px;
        }

        .tab-button {
            flex: 1;
            padding: 6px 0;
            background: none;
            border: none;
            color: var(--text1);
            cursor: pointer;
            border-radius: 4px;
            transition: all .2s ease;
        }
        .tab-button:hover {
            background: var(--line);
            box-shadow: 0 2px 4px #27272b3d;
        }
        .tab-button.active {
            background: #babac5;
            color: var(--main-bg);
            font-weight: 600;
        }

        .tab-content {
            display: none;
        }

        .tab-content.active {
            display: block;
        }
        #imageUploadLabel { 
            display:block; 
            padding:10px; 
            text-align:center; 
            background-color: var(--input-bg); 
            border:1px dashed var(--line); 
            border-radius:4px; 
            cursor:pointer;    
            flex: 1;
            display: flex;
    align-items: center;
    justify-content: center;
    gap: 4px;
        }
        #imageUploadLabel:hover {
            background-color: #44444c;
        }

        #imageUpload {
            display: none;
        }
        #modelUpload {
            display: none;
        }

        .status-indicator {
            position: absolute;
            top: 15px;
            right: 15px;
            padding: 5px 10px;
            border-radius: 4px;
            font-size: 12px;
            z-index: 100;
            background: rgba(0,0,0,0.7);
        }

        .status-ok {
            color: var(--success);
            border: 1px solid var(--success);
        }

        .status-error {
            color: var(--warning);
            border: 1px solid var(--warning);
        }

        .cursor-dashed {
            cursor: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><circle cx="12" cy="12" r="10" fill="none" stroke="white" stroke-width="1" stroke-dasharray="4,4"/></svg>') 12 12, auto;
        }

        .cursor-ring {
            cursor: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><circle cx="12" cy="12" r="10" fill="none" stroke="white" stroke-width="1"/><circle cx="12" cy="12" r="6" fill="none" stroke="white" stroke-width="1" stroke-dasharray="4,4"/></svg>') 12 12, auto;
        }

        .cursor-square {
            cursor: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><rect x="4" y="4" width="16" height="16" fill="none" stroke="white" stroke-width="1" stroke-dasharray="4,4"/></svg>') 12 12, auto;
        }

        .cursor-octagon {
            cursor: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><polygon points="8.5,4 15.5,4 20,8.5 20,15.5 15.5,20 8.5,20 4,15.5 4,8.5" fill="none" stroke="white" stroke-width="1" stroke-dasharray="4,4"/></svg>') 12 12, auto;
        }
        
        .controls-content::-webkit-scrollbar, #light-list-items::-webkit-scrollbar {
            width: 8px;
        }

        .controls-content::-webkit-scrollbar-track, #light-list-items::-webkit-scrollbar-track {
            background: var(--scrollbar-track);
        }

        .controls-content::-webkit-scrollbar-thumb, #light-list-items::-webkit-scrollbar-thumb {
            background: var(--scrollbar-thumb);
            border-radius: 4px;
        }
/* 新增拖拽悬浮状态样式 */
.drag-over {
    background-color: #8080ff30 !important;
    border: 1px solid var(--main-color) !important;
    transform: scale(1.02);
    transition: all 0.2s ease;
}
        @media (max-width: 768px) {
            .editor-container { flex-direction: column;         overflow-y: auto; margin: 0;}
            .controls-panel { width: 100%; padding: 10px;        height: auto; }
            .button-group button {
                padding: 5px;
                font-size: 12px;
            }
            .right-panel {
                width: auto;
            }
            .preview-panel {
                min-height: 568px;
            }
            h2.main-title {
                flex-direction: column;
            }
            .top-preview-content {
                flex-direction: column;
            }
            #hdr-canvas-wrapper, #light-list-panel {
                width: 100%;
            }
            #hdr-canvas-wrapper {
                flex: 1;
            }
            #light-list-panel {
                height: 150px;
                border-left: none;
                border-top: 1px solid var(--line);
                padding-left: 0;
                margin-top: 10px;
                display: none;
            }
            #vertical-resize-handle {
                display: none;
            }
        }
        
        .temperature-control { 
            display: none; 
        }
        .temperature-control.active {
            display: block;
        }
        .temperature-toggle {
            display: flex;
            align-items: center;
            gap: 8px;
        }
        .temperature-toggle label {
            margin-bottom: 0;
            cursor: pointer;
            width: auto;
        }
        .disabled-color {
            opacity: 0.6;
            pointer-events: none;
        }
        .material-info {
            padding: 10px;
            background: rgba(0,0,0,0.2);
            border-radius: 4px;
            margin-top: 10px;
            font-size: 12px;
        }