handler-playable-sdk 0.3.2 → 0.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/AssetEditorModal-DBAGQINC.js +1 -0
  2. package/dist/AssetTextures-AZY5VKWH.js +1 -0
  3. package/dist/ConfigOverride-DFTDUTRQ.js +1 -0
  4. package/dist/chunk-C2CEUBBT.js +1325 -0
  5. package/dist/chunk-DEUORFXE.js +1 -0
  6. package/dist/chunk-DHSGG7NF.js +1 -0
  7. package/dist/chunk-E6WJCS24.js +46 -0
  8. package/dist/chunk-PWGHKK3J.js +1 -0
  9. package/dist/chunk-Q7FPWOA3.js +1 -0
  10. package/dist/config-7DI6U2YD.js +1 -0
  11. package/dist/index.cjs +1360 -0
  12. package/dist/index.css +4537 -1
  13. package/dist/index.d.cts +892 -0
  14. package/dist/index.d.ts +494 -39
  15. package/dist/index.js +1 -1
  16. package/dist/{loader-object-centric-C1QteFfG.d.mts → loader-object-centric-Ce6MVkQw.d.cts} +1 -1
  17. package/dist/{loader-object-centric-C1QteFfG.d.ts → loader-object-centric-Ce6MVkQw.d.ts} +1 -1
  18. package/dist/pixi/index.cjs +256 -0
  19. package/dist/pixi/index.css +4537 -1
  20. package/dist/pixi/{index.d.mts → index.d.cts} +156 -144
  21. package/dist/pixi/index.d.ts +156 -144
  22. package/dist/pixi/index.js +1 -27
  23. package/dist/three/index.cjs +363 -0
  24. package/dist/three/index.css +4537 -1
  25. package/dist/three/index.js +1 -134
  26. package/package.json +29 -18
  27. package/dist/ConfigOverride-6YH2ILBJ.mjs +0 -1
  28. package/dist/chunk-BDZGKN5O.mjs +0 -1
  29. package/dist/chunk-GYW3GFXA.mjs +0 -830
  30. package/dist/chunk-HN7I4BLB.mjs +0 -1
  31. package/dist/config-QLS2MDB6.mjs +0 -1
  32. package/dist/index.d.mts +0 -437
  33. package/dist/index.mjs +0 -1
  34. package/dist/pixi/index.mjs +0 -1
  35. package/dist/three/index.mjs +0 -118
  36. /package/dist/three/{index.d.mts → index.d.cts} +0 -0
package/dist/index.css CHANGED
@@ -1 +1,4537 @@
1
- :root{--ui-bg: #0f1218;--ui-bg-2: #101520;--ui-surface: #171c25;--ui-surface-2: #1f2530;--ui-border: #2b3544;--ui-text: #e8edf3;--ui-muted: #9aa7b4;--ui-accent: #3dd6c6;--ui-accent-2: #ff9f43;--ui-accent-3: #6f8cff;--ui-danger: #ff5c70;--ui-shadow: 0 18px 40px rgba(5, 10, 18, .45)}.preview-shell{height:100vh;width:100vw;background:radial-gradient(circle at top left,#182033 0%,var(--ui-bg) 45%,#0c1018 100%);color:var(--ui-text);font-family:Avenir Next,Avenir,Futura,Gill Sans,Trebuchet MS,sans-serif;display:flex;flex-direction:column;box-sizing:border-box}.preview-stage{height:100%;display:flex;flex-direction:column}.preview-toolbar{height:54px;background:linear-gradient(135deg,var(--ui-bg-2),#121926 50%,#141b28 100%);border-bottom:1px solid var(--ui-border);display:flex;align-items:center;justify-content:flex-start;padding:0 12px;z-index:10;gap:10px;width:100%;box-sizing:border-box;overflow:hidden;flex-shrink:0}.zoom-controls{display:flex;align-items:center;gap:2px;margin-left:auto;flex-shrink:0}.device-dropdown{flex-shrink:1;min-width:0;max-width:100%}.preview-btn{flex-shrink:0;white-space:nowrap}@media(max-width:768px){.preview-toolbar{padding:0 4px;height:50px;gap:4px}.device-dropdown{font-size:11px;padding:2px 4px;min-width:100px}.preview-btn{padding:3px 6px;font-size:11px}.zoom-label{font-size:11px;min-width:30px}@media(max-width:480px){#refresh-btn,#debug-toggle,#console-toggle{display:none}}}.device-frame{box-shadow:0 0 0 1px #ffffff14,0 18px 40px #0000008c;border-radius:14px;background-color:#000;transition:width .3s ease,height .3s ease;overflow:hidden;position:relative}.console-panel{position:absolute;bottom:0;left:0;right:0;height:200px;background:#10141cf5;border-top:1px solid var(--ui-border);display:flex;flex-direction:column;transition:opacity .3s ease,visibility .3s ease;z-index:100}.console-panel.closed{opacity:0;visibility:hidden;pointer-events:none}.console-msg{font-family:Consolas,Monaco,monospace;font-size:12px;padding:4px 8px;border-bottom:1px solid #333}.console-msg.type-warn{color:#feca57}.preview-toolbar-left{display:flex;align-items:center}.preview-logo{font-weight:700;font-size:13px;color:var(--ui-text);letter-spacing:1.2px;text-transform:uppercase}.preview-toolbar-center,.preview-toolbar-right{display:flex;align-items:center;gap:8px}.view-toggle{display:flex;align-items:center;gap:6px;padding:2px;background:#121826;border:1px solid var(--ui-border);border-radius:999px}.view-toggle-btn{border:none;background:transparent;color:var(--ui-muted);font-size:11px;padding:6px 12px;border-radius:999px;cursor:pointer;transition:all .2s ease}.view-toggle-btn.active{color:var(--ui-text);background:#263146;box-shadow:inset 0 0 0 1px #6f8cff66}.device-selector-wrapper{position:relative}.device-dropdown{background-color:#1d2430;color:var(--ui-text);border:1px solid var(--ui-border);border-radius:8px;padding:6px 10px;font-size:12px;min-width:150px;max-width:100%;cursor:pointer;overflow:hidden;text-overflow:ellipsis}.device-dropdown:focus{outline:none;border-color:var(--ui-accent-3)}.preview-btn{background-color:#202836;color:var(--ui-text);border:1px solid var(--ui-border);border-radius:8px;padding:6px 10px;font-size:12px;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;gap:6px}.preview-btn:hover{background-color:#2a3446;border-color:#3b475c}.preview-btn:active{background-color:#343f55}.preview-btn:disabled,.device-dropdown:disabled{opacity:.5;cursor:not-allowed}.icon-btn{padding:6px;width:30px;height:30px;justify-content:center}@media(max-width:768px){.icon-btn{padding:3px;width:24px;height:24px}.icon-btn svg{width:12px;height:12px}}.icon-btn svg{width:16px;height:16px}.toolbar-divider{width:1px;height:20px;background-color:#555;margin:0 4px}.zoom-label{font-size:12px;color:var(--ui-muted);min-width:35px;text-align:center}.console-toggle{position:relative}.console-badge{background-color:#ff6b6b;color:#fff;font-size:10px;padding:2px 4px;border-radius:8px;margin-left:4px;display:none}.console-badge.has-errors{display:inline-block}.preview-main{flex:1;position:relative;overflow:hidden;background:radial-gradient(circle at 30% 20%,rgba(61,214,198,.1),transparent 45%),radial-gradient(circle at 70% 80%,rgba(111,140,255,.14),transparent 50%),#0e1118}.preview-container{width:100%;height:100%;display:flex;align-items:center;justify-content:center;padding:16px;box-sizing:border-box}.frame-wrapper{display:flex;justify-content:center;align-items:center;transform-origin:center center;transition:transform .2s cubic-bezier(.25,.46,.45,.94);filter:drop-shadow(0 12px 24px rgba(0,0,0,.45))}.game-container{width:100%;height:100%;position:relative}.console-header{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-bottom:1px solid var(--ui-border);background-color:#141a24}.console-title{font-weight:600;font-size:14px;color:var(--ui-text)}.console-actions{display:flex;gap:8px}.console-action-btn{background-color:transparent;color:var(--ui-muted);border:1px solid var(--ui-border);border-radius:3px;padding:4px 8px;font-size:11px;cursor:pointer;transition:all .2s ease}.console-action-btn:hover{background-color:#243041;color:var(--ui-text)}.console-messages{flex:1;overflow-y:auto;padding:4px 0}.console-msg{font-family:Consolas,Monaco,monospace;font-size:12px;padding:4px 12px;border-bottom:1px solid #333;word-wrap:break-word}.console-msg .time{color:#888;margin-right:8px;font-size:11px}.console-msg.type-log{color:#fff}.console-msg.type-info{color:#74c0fc}.console-msg.type-error{color:#ff6b6b;background:#ff00001a}.console-msg.type-warn{color:#feca57;background:#ffc1071a}.debug-overlay{position:absolute;inset:0;z-index:200;pointer-events:none}.debug-overlay.hidden{display:none}.scene-panel{position:absolute;width:320px;max-height:78vh;background:#12161ef5;border:1px solid var(--ui-border);border-radius:14px;box-shadow:var(--ui-shadow);pointer-events:auto;overflow:hidden;box-sizing:border-box}.scene-panel.scene-objects{width:300px}.scene-panel.scene-tools{max-height:46vh}.scene-panel.scene-tools .scene-panel-body{max-height:calc(46vh - 44px)}.customize-panel{width:320px}.customize-list{display:flex;flex-direction:column;gap:8px}.customize-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.customize-row{display:flex;align-items:center;gap:8px;background:#141a24b3;border:1px solid rgba(255,255,255,.05);border-radius:8px;padding:6px 8px}.customize-key{flex:0 0 120px;font-size:11px;color:var(--ui-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.customize-input{flex:1;background-color:#1d2430;color:var(--ui-text);border:1px solid var(--ui-border);border-radius:6px;padding:4px 6px;font-size:11px;font-family:JetBrains Mono,SF Mono,Consolas,Monaco,monospace}.customize-actions{display:flex;align-items:center;gap:6px}.customize-icon-btn{width:28px;height:28px;border-radius:8px;border:1px solid rgba(111,140,255,.4);background:#19202ccc;color:var(--ui-text);display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.customize-icon-btn svg{width:14px;height:14px;fill:currentColor}.customize-icon-btn.ai{font-size:10px;font-weight:700;letter-spacing:.05em;padding:4px 6px}.customize-file{display:none}.customize-color-field{display:flex;flex-direction:column;gap:6px;padding:8px;border-radius:8px;background:#141a24b3;border:1px solid rgba(255,255,255,.05);font-size:11px;color:var(--ui-muted)}.customize-color-field input[type=color]{width:100%;height:28px;padding:0;border:none;background:transparent}.customize-color-text{background-color:#1d2430;color:var(--ui-text);border:1px solid var(--ui-border);border-radius:6px;padding:4px 6px;font-size:11px;font-family:JetBrains Mono,SF Mono,Consolas,Monaco,monospace}.customize-help{margin-top:6px;font-size:10px;color:var(--ui-muted)}.customize-empty{font-size:11px;color:var(--ui-muted);padding:6px 0}.batch-ai-label{font-size:11px;color:var(--ui-muted)}.batch-ai-input,.batch-ai-textarea,.batch-ai-select{width:100%;padding:6px 8px;border-radius:8px;border:1px solid rgba(255,255,255,.08);background:#0a0e14d9;color:var(--ui-text);font-size:12px}.batch-ai-textarea{min-height:70px;resize:vertical}.batch-ai-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.batch-ai-actions{margin-top:6px}.batch-ai-btn{border:1px solid var(--ui-border);background:#19202ccc;color:var(--ui-text);border-radius:8px;padding:4px 10px;font-size:11px;cursor:pointer}.batch-ai-btn.primary{border-color:#bf7eff99;background:#bf7eff33}.batch-ai-file{display:none}.batch-ai-file-name,.batch-ai-status{font-size:11px;color:var(--ui-muted)}.batch-ai-dna{margin-top:8px;padding:8px;border-radius:10px;border:1px solid rgba(255,255,255,.06);background:#10141c99}.batch-ai-palette{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.batch-ai-swatch{width:22px;height:22px;border-radius:6px;border:1px solid rgba(255,255,255,.2)}.batch-ai-muted{font-size:11px;color:var(--ui-muted)}.batch-ai-asset-list{margin-top:10px;display:flex;flex-direction:column;gap:10px}.batch-ai-item{border-radius:10px;border:1px solid rgba(255,255,255,.06);background:#0c1016b3;padding:8px;display:flex;flex-direction:column;gap:8px}.batch-ai-item-header{display:flex;align-items:center;justify-content:space-between;gap:8px}.batch-ai-toggle{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:var(--ui-text)}.batch-ai-item-body{display:flex;flex-direction:column;gap:8px}.batch-ai-thumb{width:100%;max-height:140px;object-fit:contain;border-radius:8px;border:1px solid rgba(255,255,255,.08);background:#080a0e99}.batch-ai-thumb.hidden{display:none}.batch-ai-item-status{font-size:11px;color:var(--ui-muted)}.batch-ai-item-actions{display:flex;gap:8px;flex-wrap:wrap}.batch-ai-empty{font-size:11px;color:var(--ui-muted);padding:6px 0}.brand-dna-label{font-size:11px;color:var(--ui-muted)}.brand-dna-input,.brand-dna-textarea,.brand-dna-select{width:100%;padding:6px 8px;border-radius:8px;border:1px solid rgba(255,255,255,.08);background:#0a0e14d9;color:var(--ui-text);font-size:12px}.brand-dna-textarea{min-height:70px;resize:vertical}.brand-dna-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.brand-dna-btn{border:1px solid var(--ui-border);background:#19202ccc;color:var(--ui-text);border-radius:8px;padding:4px 10px;font-size:11px;cursor:pointer}.brand-dna-btn.primary{border-color:#6f8cff99;background:#6f8cff33}.brand-dna-file{display:none}.brand-dna-file-name,.brand-dna-status{font-size:11px;color:var(--ui-muted)}.brand-dna-meta{margin-top:8px}.brand-dna-prompt{margin:6px 0 0;padding:8px;border-radius:10px;border:1px solid rgba(255,255,255,.06);background:#0c1016b3;color:var(--ui-text);font-size:11px;white-space:pre-wrap}.brand-dna-output{margin-top:8px;padding:8px;border-radius:10px;border:1px solid rgba(255,255,255,.06);background:#10141c99}.brand-dna-palette{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.brand-dna-swatch{width:22px;height:22px;border-radius:6px;border:1px solid rgba(255,255,255,.2)}.brand-dna-muted{font-size:11px;color:var(--ui-muted)}.brand-dna-object-list{margin-top:10px;display:flex;flex-direction:column;gap:10px}.brand-dna-object{border-radius:10px;border:1px solid rgba(255,255,255,.06);background:#0c1016b3;padding:8px;display:flex;flex-direction:column;gap:8px}.brand-dna-object-header{display:flex;align-items:center;justify-content:space-between;gap:8px}.brand-dna-object-title{font-size:11px;color:var(--ui-text);word-break:break-all}.brand-dna-object-status{font-size:11px;color:var(--ui-muted)}.brand-dna-empty{font-size:11px;color:var(--ui-muted);padding:6px 0}.ai-panel{display:flex;flex-direction:column;gap:10px;padding:8px;border-radius:10px;border:1px solid rgba(255,255,255,.06);background:#10141c99}.ai-modal{position:fixed;inset:0;background:#060a10d1;display:flex;align-items:center;justify-content:center;z-index:10080}.ai-modal-card{width:min(760px,92vw);max-height:90vh;overflow:auto;background:#10141cfa;border:1px solid var(--ui-border);border-radius:16px;box-shadow:0 20px 50px #00000073}.ai-modal-header{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid rgba(255,255,255,.06)}.ai-modal-actions{display:inline-flex;align-items:center;gap:8px}.ai-modal-title{font-size:14px;font-weight:700;color:var(--ui-text)}.ai-modal-subtitle{font-size:11px;color:var(--ui-muted);margin-top:3px}.ai-modal-close,.ai-modal-gallery{border:1px solid var(--ui-border);background:#19202ccc;color:var(--ui-text);border-radius:8px;padding:4px 12px;font-size:11px;cursor:pointer}.ai-loading{display:none;align-items:center;gap:12px;padding:10px 12px;border-radius:10px;background:linear-gradient(120deg,#58a3ff1a,#ff639424);border:1px solid rgba(88,163,255,.25)}.ai-loading.active{display:flex}.ai-loading-ring{width:26px;height:26px;border-radius:50%;border:3px solid rgba(255,255,255,.15);border-top-color:#58a3ffe6;animation:ai-spin .9s linear infinite}.ai-loading-bar{flex:1;height:8px;border-radius:999px;background:linear-gradient(90deg,#58a3ff33,#ff6394b3,#58a3ff33);background-size:200% 100%;animation:ai-bar 1.4s ease infinite}.ai-loading-text{font-size:11px;color:var(--ui-text)}@keyframes ai-spin{to{transform:rotate(360deg)}}@keyframes ai-bar{0%{background-position:0% 50%}to{background-position:100% 50%}}.ai-label{font-size:11px;color:var(--ui-muted)}.ai-input,.ai-select,.ai-textarea{width:100%;padding:6px 8px;border-radius:8px;border:1px solid rgba(255,255,255,.08);background:#0a0e14d9;color:var(--ui-text);font-size:12px}.ai-textarea{min-height:70px;resize:vertical}.ai-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.ai-strength{gap:10px}.ai-strength input[type=range]{flex:1;min-width:160px}.ai-strength-value{font-size:11px;color:var(--ui-text);min-width:20px;text-align:right}.ai-gallery{border-radius:10px;border:1px solid rgba(255,255,255,.06);background:#0c1016a6;padding:8px}.ai-gallery.hidden{display:none}.ai-gallery-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(90px,1fr));gap:8px}.ai-gallery-item{border:1px solid rgba(255,255,255,.08);background:#080a0eb3;border-radius:10px;padding:6px;display:flex;flex-direction:column;gap:6px;cursor:pointer;text-align:left}.ai-gallery-item.active{border-color:#6f8cff99;box-shadow:0 0 0 1px #6f8cff40}.ai-gallery-thumb{width:100%;height:70px;object-fit:contain;border-radius:6px;background:#06080cb3;border:1px solid rgba(255,255,255,.08)}.ai-gallery-label{font-size:10px;color:var(--ui-text);word-break:break-all}.ai-gallery-empty{font-size:11px;color:var(--ui-muted)}.ai-btn{border:1px solid var(--ui-border);background:#19202ccc;color:var(--ui-text);border-radius:8px;padding:4px 10px;font-size:11px;cursor:pointer}.ai-file{display:none}.ai-file-name{font-size:11px;color:var(--ui-muted)}.ai-toggles label{font-size:11px;color:var(--ui-text);display:inline-flex;align-items:center;gap:6px}.ai-actions .debug-btn{flex:1}.ai-status{font-size:11px;color:var(--ui-muted)}.ai-preview{width:100%;border-radius:10px;border:1px solid rgba(255,255,255,.08);background:#080a0e99;padding:8px;display:flex;justify-content:center;align-items:center;min-height:140px}.ai-preview img{max-width:100%;max-height:220px;object-fit:contain}.asset-preview-modal{position:fixed;inset:0;background:#080a0eb8;display:flex;align-items:center;justify-content:center;z-index:10050}.asset-preview-card{width:min(720px,92vw);max-height:82vh;background:#10141cfa;border:1px solid var(--ui-border);border-radius:14px;box-shadow:var(--ui-shadow);display:flex;flex-direction:column}.asset-preview-header{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid rgba(255,255,255,.06);color:var(--ui-text)}.asset-preview-title{font-size:12px;font-weight:600;word-break:break-all}.asset-preview-close{border:1px solid var(--ui-border);background:#19202ccc;color:var(--ui-text);border-radius:8px;padding:4px 10px;font-size:11px;cursor:pointer}.asset-preview-meta{padding:0 14px 10px;color:var(--ui-muted);font-size:11px;word-break:break-all;border-bottom:1px solid rgba(255,255,255,.06)}.asset-preview-actions{display:flex;align-items:center;gap:8px}.asset-preview-change,.asset-preview-ai{border:1px solid var(--ui-border);background:#19202ccc;color:var(--ui-text);border-radius:8px;padding:4px 10px;font-size:11px;cursor:pointer}.asset-preview-body{padding:12px;overflow:auto;display:flex;align-items:center;justify-content:center}.asset-preview-ai-output{border-top:1px solid rgba(255,255,255,.06);padding:10px 12px 14px}.asset-preview-ai-output.hidden{display:none}.asset-preview-ai-label{font-size:11px;color:var(--ui-muted);margin-bottom:6px}.asset-preview-ai-image{width:100%;max-height:200px;object-fit:contain;border-radius:10px;border:1px solid rgba(255,255,255,.08);background:#080a0e99}.asset-preview-body img{max-width:100%;max-height:60vh;object-fit:contain}.asset-preview-body audio{width:100%}.asset-preview-body pre{width:100%;white-space:pre-wrap;color:var(--ui-text);font-family:JetBrains Mono,SF Mono,Consolas,Monaco,monospace;font-size:12px}.asset-crop-modal{position:fixed;inset:0;background:#080a0ec7;display:flex;align-items:center;justify-content:center;z-index:10060}.asset-crop-card{width:min(860px,96vw);background:#10141cfa;border:1px solid var(--ui-border);border-radius:14px;box-shadow:var(--ui-shadow);display:flex;flex-direction:column}.asset-crop-header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 16px;border-bottom:1px solid rgba(255,255,255,.06);color:var(--ui-text)}.asset-crop-title{font-size:13px;font-weight:600}.asset-crop-subtitle{font-size:11px;color:var(--ui-muted);margin-top:2px}.asset-crop-close{border:1px solid var(--ui-border);background:#19202ccc;color:var(--ui-text);border-radius:8px;padding:4px 10px;font-size:11px;cursor:pointer}.asset-crop-body{padding:16px;display:flex;justify-content:center;gap:16px;flex-wrap:nowrap;align-items:flex-start}.asset-crop-column{display:flex;flex-direction:column;gap:8px;align-items:center;min-width:0}.asset-crop-label{font-size:11px;color:var(--ui-muted);text-transform:uppercase;letter-spacing:.08em}.asset-crop-canvas{border-radius:12px;border:1px solid rgba(255,255,255,.08);background:#080a0e8c;cursor:grab}.asset-crop-preview{border-radius:12px;border:1px solid rgba(255,255,255,.08);background:#080a0e8c}.asset-crop-canvas:active{cursor:grabbing}.asset-crop-controls{display:flex;align-items:center;gap:12px;padding:0 16px 12px;color:var(--ui-text);font-size:12px}.asset-crop-controls label{min-width:42px}.asset-crop-zoom{flex:1}.asset-crop-zoom-value{min-width:50px;text-align:right;color:var(--ui-muted)}.asset-crop-reset{border:1px solid var(--ui-border);background:#19202ccc;color:var(--ui-text);border-radius:8px;padding:4px 10px;font-size:11px;cursor:pointer}.asset-crop-actions{display:flex;justify-content:flex-end;gap:10px;padding:0 16px 16px}.asset-crop-actions button{border-radius:10px;padding:6px 14px;font-size:12px;border:1px solid var(--ui-border);background:#1c2432d9;color:var(--ui-text);cursor:pointer}.asset-crop-apply{background:var(--ui-accent);border-color:transparent;color:#10151f;font-weight:600}@media(max-width:720px){.customize-grid{grid-template-columns:1fr}}.scene-panel-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;background-color:#181c26f2;color:var(--ui-text);font-size:12px;user-select:none;cursor:move;border-bottom:1px solid rgba(255,255,255,.05)}.scene-panel-actions{display:flex;align-items:center;gap:8px}.scene-panel-action{border:1px solid var(--ui-border);border-radius:6px;background:#1f2633;color:var(--ui-muted);font-size:11px;padding:4px 8px;cursor:pointer}.scene-panel-action:hover{border-color:#ff9f4399;color:var(--ui-text)}.scene-panel-toggle{border:none;background:transparent;color:var(--ui-muted);font-size:14px;cursor:pointer;transition:transform .2s ease}.panel-title{display:flex;align-items:center;gap:8px}.panel-pill{padding:2px 8px;border-radius:999px;background:#3dd6c61f;color:var(--ui-accent);font-size:10px;text-transform:uppercase;letter-spacing:.6px}.panel-accent-blue .panel-pill{background:#6f8cff24;color:var(--ui-accent-3)}.panel-accent-amber .panel-pill{background:#ff9f4329;color:var(--ui-accent-2)}.panel-accent-violet .panel-pill{background:#bf7eff2e;color:#d6b7ff}.panel-title-text{font-weight:700;font-size:12px;letter-spacing:.4px}.panel-accent-teal{border-color:#3dd6c659}.panel-accent-blue{border-color:#6f8cff59}.panel-accent-amber{border-color:#ff9f4366}.panel-accent-violet{border-color:#bf7eff59}.scene-panel-body{padding:12px 14px 16px;overflow-y:auto;max-height:calc(78vh - 44px)}.scene-panel.collapsed .scene-panel-body{display:none}.scene-panel.collapsed .scene-panel-toggle{transform:rotate(-90deg)}.scene-panel-search input{width:100%;background-color:#1d2430;color:var(--ui-text);border:1px solid var(--ui-border);border-radius:6px;padding:6px 8px;font-size:12px}.scene-panel-search input:focus{outline:none;border-color:var(--ui-accent);box-shadow:0 0 0 2px #3dd6c633}.scene-panel-filters{display:flex;gap:6px;margin-top:10px}.filter-chip{border:1px solid rgba(111,140,255,.3);background:#131822b3;color:var(--ui-muted);font-size:11px;border-radius:999px;padding:4px 10px;cursor:pointer;transition:all .2s ease}.filter-chip.active{color:var(--ui-text);border-color:#3dd6c680;background:#3dd6c626}.scene-object-list{margin-top:12px;display:flex;flex-direction:column;gap:12px}.scene-object-group-title{font-size:11px;color:var(--ui-muted);text-transform:uppercase;letter-spacing:.6px;margin-bottom:6px}.scene-object-count{margin-left:6px;padding:2px 6px;border-radius:999px;background:#ffffff14;color:var(--ui-text);font-size:10px}.scene-object-group-items{display:flex;flex-direction:column;gap:6px}.scene-object-item{width:100%;text-align:left;border:1px solid rgba(255,255,255,.06);border-radius:6px;background-color:#191e28e6;color:var(--ui-text);font-size:12px;padding:6px 8px;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:8px}.scene-object-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.scene-object-badge{font-size:10px;padding:2px 6px;border-radius:999px;text-transform:uppercase;letter-spacing:.4px;border:1px solid rgba(255,255,255,.1)}.scene-object-badge.ui{background:#3dd6c61f;color:var(--ui-accent)}.scene-object-badge.scene{background:#6f8cff1f;color:var(--ui-accent-3)}.scene-object-item:hover{border-color:#3dd6c680;color:var(--ui-text)}.scene-object-item.selected{border-color:#3dd6c6b3;color:var(--ui-text);box-shadow:inset 0 0 0 1px #3dd6c666}.scene-edit-selected{font-size:12px;color:var(--ui-muted);margin-bottom:10px}.debug-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid #444;background-color:#252525;border-radius:8px 8px 0 0;cursor:move;user-select:none}.debug-tabs{display:flex;gap:6px;padding:8px 12px;border-bottom:1px solid #333;background-color:#1f1f1f}.debug-tab{flex:1;border:1px solid #444;border-radius:6px;background-color:#262626;color:#bfc3c7;font-size:12px;padding:6px 10px;cursor:pointer;transition:all .2s ease}.debug-tab.active{background-color:#323232;color:#fff;border-color:#ffb43b;box-shadow:inset 0 0 0 1px #ffb43b59}.debug-hint{font-size:11px;color:#9aa0a6;margin-bottom:10px}.debug-tab-panel{display:none}.debug-tab-panel.active{display:block}.debug-collapsible{border:1px solid rgba(255,255,255,.08);border-radius:10px;background-color:#151a24d9;overflow:hidden;margin-bottom:12px}.debug-collapsible-header{width:100%;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;background-color:#181e2ae6;border:none;color:var(--ui-text);font-size:12px;cursor:pointer}.debug-collapsible-body{padding:10px 12px}.debug-collapsible-icon{transition:transform .2s ease}.debug-collapsible.collapsed .debug-collapsible-body{display:none}.debug-collapsible.collapsed .debug-collapsible-icon{transform:rotate(-90deg)}.debug-nudge.hidden{display:none}.debug-arrow-pad{display:grid;grid-template-columns:repeat(3,36px);grid-auto-rows:32px;gap:6px;justify-content:center;margin-top:8px}.debug-arrow-btn{border:1px solid #444;border-radius:6px;background-color:#2b2b2b;color:#e7e7e7;font-size:14px;cursor:pointer;transition:all .15s ease}.debug-arrow-btn:hover{border-color:#ffb43b;color:#fff}.debug-arrow-btn:active{transform:translateY(1px)}.debug-arrow-btn[data-nudge=up]{grid-column:2}.debug-arrow-btn[data-nudge=left]{grid-column:1}.debug-arrow-btn[data-nudge=down]{grid-column:2}.debug-arrow-btn[data-nudge=right]{grid-column:3}.debug-info-grid{display:flex;flex-direction:column;gap:8px;padding:8px;border-radius:6px;background-color:#191e28cc;border:1px solid rgba(255,255,255,.08)}.debug-info-row{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:11px}.debug-info-label{color:#9aa0a6}.debug-info-value{color:#f1f3f5;font-weight:600}.debug-title{font-weight:600;font-size:14px;color:#fff}.debug-actions{display:flex;gap:8px}.debug-action-btn{background-color:transparent;color:#ccc;border:1px solid #555;border-radius:3px;padding:4px 8px;font-size:11px;cursor:pointer;transition:all .2s ease}.debug-action-btn:hover{background-color:#444;color:#fff}.debug-content{flex:1;overflow-y:auto;padding:12px 16px}.debug-section{margin-bottom:20px}.panel-section{margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid rgba(255,255,255,.06)}.panel-section:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}.panel-section-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--ui-muted);margin-bottom:8px}.field-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}@media(max-width:520px){.field-grid{grid-template-columns:1fr}}.debug-section-title{font-size:12px;font-weight:600;color:var(--ui-muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:8px;border-bottom:1px solid rgba(255,255,255,.08);padding-bottom:4px}.debug-field{margin-bottom:12px}.debug-field label{display:block;font-size:11px;color:#aaa;margin-bottom:4px;font-weight:500}.debug-field input,.debug-field select{width:100%;background-color:#1d2430;color:var(--ui-text);border:1px solid var(--ui-border);border-radius:4px;padding:6px 8px;font-size:12px;font-family:JetBrains Mono,SF Mono,Consolas,Monaco,monospace;transition:border-color .2s ease}.debug-field input:focus,.debug-field select:focus{outline:none;border-color:var(--ui-accent-3);box-shadow:0 0 0 2px #6f8cff33}.debug-field input[type=range]{-webkit-appearance:none;appearance:none;height:6px;background:#555;border-radius:3px;outline:none}.debug-field input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:16px;height:16px;border-radius:50%;background:var(--ui-accent-3);cursor:pointer}.debug-field input[type=range]::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:var(--ui-accent-3);cursor:pointer;border:none}.debug-field input[type=checkbox]{width:auto;margin-right:8px}.debug-field.checkbox-field{display:flex;align-items:center;gap:8px}.debug-field.checkbox-field label{margin-bottom:0;flex:1}.debug-value-display{display:inline-block;margin-left:8px;font-size:11px;color:var(--ui-muted);font-family:JetBrains Mono,SF Mono,Consolas,Monaco,monospace}.debug-btn-group{display:flex;gap:6px;margin-top:8px}.debug-btn{flex:1;background-color:#444;color:#fff;border:1px solid #666;border-radius:4px;padding:6px 8px;font-size:11px;cursor:pointer;transition:all .2s ease}.debug-btn:hover{background-color:#555;border-color:#888}.debug-btn.primary{background-color:#2a5bd7;border-color:#2a5bd7}.debug-btn.primary:hover{background-color:#2147a7;border-color:#2147a7}.debug-btn.danger{background-color:#dc3545;border-color:#dc3545}.debug-btn.danger:hover{background-color:#c82333;border-color:#c82333}.debug-btn.secondary{background-color:#3dd6c61a;border-color:#3dd6c64d;color:#3dd6c6}.debug-btn.secondary:hover{background-color:#3dd6c633;border-color:#3dd6c666}.config-editor{border:1px solid rgba(255,255,255,.08);border-radius:10px;padding:12px;margin-top:8px;background-color:#191e28d9}.debug-select{width:100%;background-color:#1d2430;color:var(--ui-text);border:1px solid var(--ui-border);border-radius:4px;padding:6px 8px;font-size:11px}.debug-select:focus{outline:none;border-color:var(--ui-accent-3);box-shadow:0 0 0 2px #6f8cff33}.debug-select option{background-color:#333;color:#fff}.json-modal{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#000c;z-index:10000;display:flex;align-items:center;justify-content:center}.json-modal-content{background-color:#1e1e1e;border:1px solid #555;border-radius:8px;width:80%;max-width:800px;max-height:80%;display:flex;flex-direction:column}.json-modal-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid #444}.json-modal-header h3{margin:0;color:#fff;font-size:16px;font-weight:600}.json-modal-body{flex:1;padding:16px 20px;overflow-y:auto}.json-modal-body pre{margin:0;color:#fff;font-family:Consolas,Monaco,monospace;font-size:12px;line-height:1.4;white-space:pre-wrap;word-wrap:break-word}.debug-toggle{position:relative}.debug-toggle-badge{background-color:#28a745;color:#fff;font-size:10px;padding:2px 4px;border-radius:8px;margin-left:4px;display:none}.debug-toggle-badge.active{display:inline-block}.preview-stage{width:100%;height:100%;display:flex;align-items:center;justify-content:center;position:relative}.preview-stage.hidden{display:none}.compare-grid{width:100%;height:100%;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;padding:8px;box-sizing:border-box}.compare-viewport{display:flex;flex-direction:column;background:#141820e6;border:1px solid rgba(111,140,255,.2);border-radius:14px;box-shadow:var(--ui-shadow);overflow:hidden;position:relative}.compare-viewport.is-active{border-color:#3dd6c699;box-shadow:0 0 0 1px #3dd6c666,var(--ui-shadow)}.compare-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;background:#121720e6;border-bottom:1px solid rgba(255,255,255,.06);color:var(--ui-text)}.compare-title{display:flex;flex-direction:column;gap:2px}.compare-title-text{font-size:12px;font-weight:700;letter-spacing:.6px;text-transform:uppercase}.compare-meta{font-size:11px;color:var(--ui-muted)}.compare-focus{border:1px solid rgba(111,140,255,.5);background:#1e2638b3;color:var(--ui-text);border-radius:999px;padding:4px 10px;font-size:11px;cursor:pointer}.compare-viewport.is-active .compare-focus{border-color:#3dd6c699;background:#3dd6c62e;color:#e9fff9}.compare-body{position:relative;flex:1;display:flex;align-items:center;justify-content:center;padding:10px;box-sizing:border-box}.compare-slot,.compare-ghost{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}.compare-ghost.hidden{display:none}.compare-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:11px;color:var(--ui-muted);background:#0a0d1259;opacity:0;transition:opacity .2s ease;pointer-events:none}.compare-viewport:not(.is-active) .compare-overlay{opacity:1}.snapshot-canvas{width:100%;height:100%;display:block;background:#000}@media(max-width:1100px){.compare-grid{grid-template-columns:1fr;grid-auto-rows:minmax(0,1fr)}}@media(max-width:720px){.scene-panel.scene-tools{width:calc(100% - 32px);left:16px!important;right:auto}}.panel-resize-handle{position:absolute;top:0;right:0;width:10px;height:100%;cursor:ew-resize}.panel-resize-handle:after{content:"";position:absolute;top:30%;right:3px;width:2px;height:40%;border-radius:2px;background:#ffffff1f}.debug-workbench{position:absolute;width:350px;height:600px;min-width:250px;min-height:200px;background:#12161ef5;border:1px solid var(--ui-border);border-radius:14px;box-shadow:var(--ui-shadow);pointer-events:auto;display:flex;flex-direction:column;overflow:hidden;z-index:1000}.workbench-header{display:flex;align-items:center;justify-content:space-between;padding:8px 14px;background-color:#181c26f2;border-bottom:1px solid rgba(255,255,255,.05);cursor:move;flex-shrink:0}.workbench-tabs{display:flex;background:#0c1018e6;padding:4px;gap:4px;border-bottom:1px solid var(--ui-border);flex-shrink:0;overflow-x:auto}.workbench-tab{flex:1;padding:6px 10px;font-size:11px;font-weight:600;color:var(--ui-muted);background:transparent;border:1px solid transparent;border-radius:6px;cursor:pointer;white-space:nowrap;transition:all .2s ease;text-align:center}.workbench-tab:hover{background:#ffffff0d;color:var(--ui-text)}.workbench-tab.active{background:#3dd6c61f;color:var(--ui-accent);border-color:#3dd6c64d}.workbench-content{flex:1;overflow-y:auto;padding:0}.workbench-tab-panel{display:none}.workbench-tab-panel.active{display:block}.workbench-resize-handle{position:absolute;bottom:0;right:0;width:16px;height:16px;cursor:nwse-resize;background:linear-gradient(135deg,transparent 50%,var(--ui-border) 50%,var(--ui-border) 75%,transparent 75%,transparent 85%,var(--ui-border) 85%);z-index:10}.workbench-content .scene-panel{position:static;width:100%!important;max-height:none!important;border:none;background:transparent;box-shadow:none;border-radius:0}.workbench-content .scene-panel-header{display:none}.workbench-content .scene-panel-body{max-height:none;padding:12px}.library-panel{border-color:#3dd6c659}.library-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(80px,1fr));gap:8px;margin-top:12px}.library-item{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px;border:2px solid transparent;border-radius:8px;cursor:pointer;transition:all .2s ease;background:#191e28cc}.library-item:hover{border-color:#3dd6c680;background:#3dd6c61a}.library-item.selected{border-color:#3dd6c6cc;background:#3dd6c626;box-shadow:0 0 0 1px #3dd6c666}.library-thumbnail{width:60px;height:40px;object-fit:cover;border-radius:4px;border:1px solid rgba(255,255,255,.1)}.library-label{font-size:11px;color:var(--ui-muted);text-align:center;word-break:break-all}.library-selected{font-size:12px;color:var(--ui-text);margin:12px 0;padding:8px;background:#191e28cc;border-radius:6px;border:1px solid rgba(255,255,255,.08)}.library-empty{font-size:11px;color:var(--ui-muted);padding:20px;text-align:center;grid-column:1 / -1}.library-category-tabs{display:flex;background:#0c1018e6;padding:4px;gap:2px;border-bottom:1px solid var(--ui-border);margin-bottom:12px}.library-category-tab{flex:1;padding:6px 8px;font-size:11px;font-weight:600;color:var(--ui-muted);background:transparent;border:1px solid transparent;border-radius:6px;cursor:pointer;white-space:nowrap;text-align:center;transition:all .2s ease}.library-category-tab:hover{background:#ffffff0d;color:var(--ui-text)}.library-category-tab.active{background:#3dd6c61f;color:var(--ui-accent);border-color:#3dd6c64d}
1
+ /* Auto-generated from CSS modules - DO NOT EDIT DIRECTLY */
2
+ /* Edit files in css-modules/ directory instead */
3
+
4
+ /* Import Inter Font - Main Site Typography */
5
+ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap');
6
+
7
+ /* ========== 01-variables.css ========== */
8
+ /* 01 Variables */
9
+ /* Auto-generated from preview.css */
10
+ /* Updated to HANDLER Design System v1.0 */
11
+
12
+ /* preview.css - Scene editor preview UI */
13
+
14
+ :root {
15
+ /* HANDLER Base Colors - LOCKED */
16
+ --ui-bg: #F6F3EF;
17
+ --ui-bg-2: #EFEAE5;
18
+ --ui-surface: #FFFFFF;
19
+ --ui-surface-2: #F9F7F5;
20
+ --ui-border: #D4CFC8;
21
+ --ui-text: #1E1E1E;
22
+ --ui-text-white: #FFFFFF;
23
+ --ui-muted: #8E8A84;
24
+
25
+ /* HANDLER Accent Colors - LOCKED */
26
+ --ui-accent: #E38A5A;
27
+ --ui-accent-2: #C9A28C;
28
+ --ui-accent-3: #E38A5A;
29
+ /* No purple - using primary accent */
30
+ --ui-danger: #D97558;
31
+ /* Muted danger color */
32
+ --ui-success: #5F8F6B;
33
+ /* Status green */
34
+
35
+ /* Terracotta Button System - Main Site Style */
36
+ --ui-terracotta: #E38A5A;
37
+ --ui-terracotta-hover: #D77A4A;
38
+ --ui-terracotta-active: #C66A3A;
39
+
40
+ /* Dark Panel - For code/inspector */
41
+ --ui-dark-panel: #1A1A1A;
42
+ --ui-dark-text: #E8E8E8;
43
+
44
+ /* HANDLER Shadow System */
45
+ --ui-shadow: 0 2px 8px rgba(30, 30, 30, 0.08);
46
+ --ui-shadow-hover: 0 4px 12px rgba(30, 30, 30, 0.12);
47
+
48
+ /* Background Texture */
49
+ --ui-noise-opacity: 0.05;
50
+
51
+ /* Animation Timing - HANDLER Approved */
52
+ --ui-ease: ease-in-out;
53
+ --ui-duration-fast: 150ms;
54
+ --ui-duration-normal: 300ms;
55
+ --ui-duration-slow: 600ms;
56
+
57
+ /* Spacing - Main Site Style (generous) */
58
+ --ui-space-xs: 4px;
59
+ --ui-space-sm: 8px;
60
+ --ui-space-md: 16px;
61
+ --ui-space-lg: 24px;
62
+ --ui-space-xl: 32px;
63
+ --ui-space-2xl: 48px;
64
+
65
+ /* Typography - Main Site Style */
66
+ --font-primary: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
67
+ --font-weight-normal: 400;
68
+ --font-weight-medium: 500;
69
+ --font-weight-semibold: 600;
70
+ --font-weight-bold: 700;
71
+
72
+ /* Icon Stroke */
73
+ --ui-icon-stroke: 1.25px;
74
+
75
+ /* Hover States - HANDLER Approved */
76
+ --ui-hover-darken: 0.92;
77
+ --ui-hover-lift: -2px;
78
+ --ui-hover-shadow-increase: 0.04;
79
+ }
80
+
81
+ .preview-shell {
82
+ height: 100vh;
83
+ width: 100vw;
84
+ background: var(--ui-bg);
85
+ color: var(--ui-text);
86
+ font-family: var(--font-primary);
87
+ font-weight: var(--font-weight-normal);
88
+ display: flex;
89
+ flex-direction: column;
90
+ box-sizing: border-box;
91
+ position: relative;
92
+ -webkit-font-smoothing: antialiased;
93
+ -moz-osx-font-smoothing: grayscale;
94
+ }
95
+
96
+ /* Subtle noise texture overlay - HANDLER industrial aesthetic */
97
+ .preview-shell::before {
98
+ content: '';
99
+ position: absolute;
100
+ inset: 0;
101
+ background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.05'/%3E%3C/svg%3E");
102
+ pointer-events: none;
103
+ opacity: var(--ui-noise-opacity);
104
+ z-index: 0;
105
+ }
106
+
107
+ .preview-shell>* {
108
+ position: relative;
109
+ z-index: 1;
110
+ }
111
+
112
+ .preview-stage {
113
+ height: 100%;
114
+ display: flex;
115
+ flex-direction: column;
116
+ }
117
+
118
+ .preview-toolbar {
119
+ height: 54px;
120
+ background: var(--ui-bg-2);
121
+ border-bottom: 1px solid var(--ui-border);
122
+ display: flex;
123
+ align-items: center;
124
+ justify-content: flex-start;
125
+ padding: 0 12px;
126
+ z-index: 10;
127
+ gap: 10px;
128
+ width: 100%;
129
+ box-sizing: border-box;
130
+ overflow: hidden;
131
+ flex-shrink: 0;
132
+ }
133
+
134
+ .zoom-controls {
135
+ display: flex;
136
+ align-items: center;
137
+ gap: 2px;
138
+ margin-left: auto;
139
+ flex-shrink: 0;
140
+ }
141
+
142
+ .device-dropdown {
143
+ flex-shrink: 1;
144
+ min-width: 0;
145
+ max-width: 100%;
146
+ }
147
+
148
+ .preview-btn {
149
+ flex-shrink: 0;
150
+ white-space: nowrap;
151
+ }
152
+
153
+ /* ========== 02-base.css ========== */
154
+ /* 02 Base */
155
+ /* Auto-generated from preview.css */
156
+ /* Updated to HANDLER Design System v1.0 */
157
+
158
+ /* Main Content Area */
159
+ .preview-main {
160
+ flex: 1;
161
+ position: relative;
162
+ overflow: hidden;
163
+ background: var(--ui-bg);
164
+ }
165
+
166
+ .preview-container {
167
+ width: 100%;
168
+ height: 100%;
169
+ display: flex;
170
+ align-items: center;
171
+ justify-content: center;
172
+ padding: 16px;
173
+ box-sizing: border-box;
174
+ }
175
+
176
+ /* Preview Stage Layouts */
177
+ .preview-stage {
178
+ width: 100%;
179
+ height: 100%;
180
+ display: flex;
181
+ align-items: center;
182
+ justify-content: center;
183
+ position: relative;
184
+ }
185
+
186
+ .preview-stage.hidden {
187
+ display: none;
188
+ }
189
+
190
+ .hidden {
191
+ display: none !important;
192
+ }
193
+
194
+ .compare-grid {
195
+ width: 100%;
196
+ height: 100%;
197
+ display: grid;
198
+ grid-template-columns: repeat(3, minmax(0, 1fr));
199
+ gap: 14px;
200
+ padding: 8px;
201
+ box-sizing: border-box;
202
+ }
203
+
204
+ .compare-viewport {
205
+ display: flex;
206
+ flex-direction: column;
207
+ background: var(--ui-surface);
208
+ border: 1px solid var(--ui-border);
209
+ border-radius: 14px;
210
+ box-shadow: var(--ui-shadow);
211
+ overflow: hidden;
212
+ position: relative;
213
+ }
214
+
215
+ .compare-viewport.is-active {
216
+ border-color: var(--ui-accent);
217
+ box-shadow: 0 0 0 1px rgba(227, 138, 90, 0.3), var(--ui-shadow);
218
+ }
219
+
220
+ .compare-header {
221
+ display: flex;
222
+ align-items: center;
223
+ justify-content: space-between;
224
+ gap: 12px;
225
+ padding: 10px 12px;
226
+ background: var(--ui-bg-2);
227
+ border-bottom: 1px solid var(--ui-border);
228
+ color: var(--ui-text);
229
+ }
230
+
231
+ .compare-title {
232
+ display: flex;
233
+ flex-direction: column;
234
+ gap: 2px;
235
+ }
236
+
237
+ .compare-title-text {
238
+ font-size: 12px;
239
+ font-weight: 700;
240
+ letter-spacing: 0.6px;
241
+ text-transform: uppercase;
242
+ }
243
+
244
+ .compare-meta {
245
+ font-size: 11px;
246
+ color: var(--ui-muted);
247
+ }
248
+
249
+ .compare-focus {
250
+ border: 1px solid var(--ui-border);
251
+ background: var(--ui-bg);
252
+ color: var(--ui-text);
253
+ border-radius: 999px;
254
+ padding: 4px 10px;
255
+ font-size: 11px;
256
+ cursor: pointer;
257
+ transition: background var(--ui-duration-fast) var(--ui-ease);
258
+ }
259
+
260
+ .compare-focus:hover {
261
+ background: var(--ui-bg-2);
262
+ }
263
+
264
+ .compare-viewport.is-active .compare-focus {
265
+ border-color: var(--ui-accent);
266
+ background: rgba(227, 138, 90, 0.12);
267
+ color: var(--ui-text);
268
+ }
269
+
270
+ .compare-body {
271
+ position: relative;
272
+ flex: 1;
273
+ display: flex;
274
+ align-items: center;
275
+ justify-content: center;
276
+ padding: 10px;
277
+ box-sizing: border-box;
278
+ }
279
+
280
+ .compare-slot,
281
+ .compare-ghost {
282
+ position: absolute;
283
+ inset: 0;
284
+ display: flex;
285
+ align-items: center;
286
+ justify-content: center;
287
+ }
288
+
289
+ .compare-ghost.hidden {
290
+ display: none;
291
+ }
292
+
293
+ .compare-overlay {
294
+ position: absolute;
295
+ inset: 0;
296
+ display: flex;
297
+ align-items: center;
298
+ justify-content: center;
299
+ font-size: 11px;
300
+ color: var(--ui-muted);
301
+ background: rgba(246, 243, 239, 0.5);
302
+ opacity: 0;
303
+ transition: opacity var(--ui-duration-normal) var(--ui-ease);
304
+ pointer-events: none;
305
+ }
306
+
307
+ .compare-viewport:not(.is-active) .compare-overlay {
308
+ opacity: 1;
309
+ }
310
+
311
+ .snapshot-canvas {
312
+ width: 100%;
313
+ height: 100%;
314
+ display: block;
315
+ background: #000;
316
+ }
317
+
318
+ @media (max-width: 1100px) {
319
+ .compare-grid {
320
+ grid-template-columns: 1fr;
321
+ grid-auto-rows: minmax(0, 1fr);
322
+ }
323
+ }
324
+
325
+ @media (max-width: 720px) {
326
+ .scene-panel.scene-tools {
327
+ width: calc(100% - 32px);
328
+ left: 16px !important;
329
+ right: auto;
330
+ }
331
+ }
332
+
333
+ .panel-resize-handle {
334
+ position: absolute;
335
+ bottom: 0;
336
+ right: 0;
337
+ width: 16px;
338
+ height: 16px;
339
+ cursor: nwse-resize;
340
+ z-index: 10;
341
+ opacity: 0.4;
342
+ transition: opacity var(--ui-duration-normal) var(--ui-ease);
343
+ }
344
+
345
+ .panel-resize-handle:hover {
346
+ opacity: 1;
347
+ }
348
+
349
+ .panel-resize-handle::after {
350
+ content: '';
351
+ position: absolute;
352
+ bottom: 3px;
353
+ right: 3px;
354
+ width: 8px;
355
+ height: 8px;
356
+ border-right: 2px solid var(--ui-muted);
357
+ border-bottom: 2px solid var(--ui-muted);
358
+ border-radius: 0 0 2px 0;
359
+ }
360
+
361
+
362
+ /* ========== 03-toolbar.css ========== */
363
+ /* 03 Toolbar */
364
+ /* Auto-generated from preview.css */
365
+ /* Updated to HANDLER Design System v1.0 */
366
+
367
+ /* Toolbar Layout - MUST BE OUTSIDE MEDIA QUERY */
368
+ .preview-toolbar-left {
369
+ display: flex;
370
+ align-items: center;
371
+ }
372
+
373
+ .preview-logo {
374
+ font-weight: 700;
375
+ font-size: 13px;
376
+ color: var(--ui-text);
377
+ letter-spacing: 1.2px;
378
+ text-transform: uppercase;
379
+ }
380
+
381
+ .preview-toolbar-center {
382
+ display: flex;
383
+ align-items: center;
384
+ gap: 8px;
385
+ }
386
+
387
+ .preview-toolbar-right {
388
+ display: flex;
389
+ align-items: center;
390
+ gap: 8px;
391
+ }
392
+
393
+ .view-toggle {
394
+ display: flex;
395
+ flex-direction: row;
396
+ /* Ensure horizontal alignment */
397
+ align-items: center;
398
+ gap: 6px;
399
+ padding: 2px;
400
+ background: var(--ui-bg-2);
401
+ border: 1px solid var(--ui-border);
402
+ border-radius: 999px;
403
+ }
404
+
405
+ .view-toggle-btn {
406
+ border: none;
407
+ background: transparent;
408
+ color: var(--ui-muted);
409
+ font-size: 11px;
410
+ font-weight: var(--font-weight-medium);
411
+ padding: 6px 12px;
412
+ border-radius: 999px;
413
+ cursor: pointer;
414
+ transition: all var(--ui-duration-fast) var(--ui-ease);
415
+ }
416
+
417
+ /* Terracotta active state - Main Site Style */
418
+ .view-toggle-btn.active {
419
+ color: var(--ui-text-white);
420
+ background: var(--ui-terracotta);
421
+ }
422
+
423
+ /* Responsive toolbar - width responsive, height fixed */
424
+ /* Scene Panel Styles - MUST BE OUTSIDE MEDIA QUERY */
425
+ .scene-panel.collapsed .scene-panel-toggle {
426
+ transform: rotate(-90deg);
427
+ }
428
+
429
+ .scene-panel-search input {
430
+ width: 100%;
431
+ background-color: var(--ui-surface);
432
+ color: var(--ui-text);
433
+ border: 1px solid var(--ui-border);
434
+ border-radius: 6px;
435
+ padding: 6px 8px;
436
+ font-size: 12px;
437
+ }
438
+
439
+ .scene-panel-search input:focus {
440
+ outline: none;
441
+ border-color: var(--ui-accent);
442
+ box-shadow: 0 0 0 2px rgba(61, 214, 198, 0.2);
443
+ }
444
+
445
+ .scene-panel-filters {
446
+ display: flex;
447
+ gap: 6px;
448
+ margin-top: 10px;
449
+ }
450
+
451
+ .filter-chip {
452
+ border: 1px solid rgba(111, 140, 255, 0.3);
453
+ background: rgba(19, 24, 34, 0.7);
454
+ color: var(--ui-muted);
455
+ font-size: 11px;
456
+ border-radius: 999px;
457
+ padding: 4px 10px;
458
+ cursor: pointer;
459
+ transition: all var(--ui-duration-fast) var(--ui-ease);
460
+ }
461
+
462
+ .filter-chip.active {
463
+ color: var(--ui-text-white);
464
+ border-color: var(--ui-terracotta);
465
+ background: var(--ui-terracotta);
466
+ font-weight: var(--font-weight-semibold);
467
+ }
468
+
469
+ .scene-object-list {
470
+ margin-top: 12px;
471
+ display: flex;
472
+ flex-direction: column;
473
+ gap: 12px;
474
+ }
475
+
476
+ .scene-object-group-title {
477
+ font-size: 11px;
478
+ color: var(--ui-muted);
479
+ text-transform: uppercase;
480
+ letter-spacing: 0.6px;
481
+ margin-bottom: 6px;
482
+ }
483
+
484
+ .scene-object-count {
485
+ margin-left: 6px;
486
+ padding: 2px 6px;
487
+ border-radius: 999px;
488
+ background: rgba(255, 255, 255, 0.08);
489
+ color: var(--ui-text);
490
+ font-size: 10px;
491
+ }
492
+
493
+ .scene-object-group-items {
494
+ display: flex;
495
+ flex-direction: column;
496
+ gap: 2px;
497
+ }
498
+
499
+ .scene-object-item {
500
+ width: 100%;
501
+ text-align: left;
502
+ border: 1px solid var(--ui-border);
503
+ border-radius: 4px;
504
+ background-color: var(--ui-surface-2);
505
+ /* Warm surface */
506
+ color: var(--ui-text);
507
+ font-size: 11px;
508
+ font-weight: var(--font-weight-medium);
509
+ padding: 6px 8px;
510
+ cursor: pointer;
511
+ display: flex;
512
+ align-items: center;
513
+ justify-content: space-between;
514
+ gap: 6px;
515
+ transition: all var(--ui-duration-fast) var(--ui-ease);
516
+ }
517
+
518
+ .scene-object-label {
519
+ white-space: nowrap;
520
+ overflow: hidden;
521
+ text-overflow: ellipsis;
522
+ }
523
+
524
+ .scene-object-badge {
525
+ font-size: 10px;
526
+ padding: 2px 6px;
527
+ border-radius: 999px;
528
+ text-transform: uppercase;
529
+ letter-spacing: 0.4px;
530
+ border: 1px solid rgba(255, 255, 255, 0.1);
531
+ }
532
+
533
+ .scene-object-badge.ui {
534
+ background: rgba(227, 138, 90, 0.12);
535
+ /* Terracotta tint */
536
+ color: var(--ui-terracotta);
537
+ }
538
+
539
+ .scene-object-badge.scene {
540
+ background: rgba(201, 162, 140, 0.12);
541
+ /* Dusty clay tint */
542
+ color: var(--ui-accent-2);
543
+ }
544
+
545
+ .scene-object-item:hover {
546
+ border-color: var(--ui-terracotta);
547
+ background: rgba(227, 138, 90, 0.08);
548
+ /* Light terracotta wash */
549
+ }
550
+
551
+ .scene-object-item.selected {
552
+ border-color: var(--ui-terracotta);
553
+ background: rgba(227, 138, 90, 0.15);
554
+ box-shadow: 0 0 0 1px rgba(227, 138, 90, 0.3);
555
+ }
556
+
557
+ /* Debug Toggle Button in Toolbar */
558
+ .debug-toggle {
559
+ position: relative;
560
+ }
561
+
562
+ .debug-toggle-badge {
563
+ background-color: #28a745;
564
+ color: var(--ui-text);
565
+ font-size: 10px;
566
+ padding: 2px 4px;
567
+ border-radius: 8px;
568
+ margin-left: 4px;
569
+ display: none;
570
+ }
571
+
572
+ .debug-toggle-badge.active {
573
+ display: inline-block;
574
+ }
575
+
576
+ /* Inspector Image Property - Premium Layout */
577
+ .inspector-property-image {
578
+ margin-bottom: 16px;
579
+ background: rgba(255, 255, 255, 0.02);
580
+ border-radius: 10px;
581
+ padding: 12px;
582
+ border: 1px solid rgba(255, 255, 255, 0.05);
583
+ }
584
+
585
+ .inspector-property-image .property-header {
586
+ display: flex;
587
+ justify-content: space-between;
588
+ align-items: center;
589
+ margin-bottom: 10px;
590
+ }
591
+
592
+ .inspector-image-container {
593
+ display: flex;
594
+ gap: 14px;
595
+ }
596
+
597
+ .inspector-image-preview {
598
+ position: relative;
599
+ width: 100px;
600
+ height: 80px;
601
+ background: #0d1117;
602
+ border-radius: 8px;
603
+ border: 1px solid rgba(255, 255, 255, 0.1);
604
+ overflow: hidden;
605
+ cursor: zoom-in;
606
+ flex-shrink: 0;
607
+ }
608
+
609
+ .inspector-image-preview img {
610
+ width: 100%;
611
+ height: 100%;
612
+ object-fit: contain;
613
+ transition: transform var(--ui-duration-fast);
614
+ }
615
+
616
+ .inspector-image-preview:hover img {
617
+ transform: scale(1.1);
618
+ }
619
+
620
+ .inspector-image-details {
621
+ flex: 1;
622
+ display: flex;
623
+ flex-direction: column;
624
+ justify-content: space-between;
625
+ gap: var(--space-md);
626
+ }
627
+
628
+ .inspector-input-path {
629
+ font-family: inherit;
630
+ font-size: 11px !important;
631
+ color: var(--ui-muted) !important;
632
+ background: rgba(0, 0, 0, 0.2) !important;
633
+ border-color: rgba(255, 255, 255, 0.05) !important;
634
+ }
635
+
636
+ .inspector-image-actions {
637
+ display: flex;
638
+ gap: 6px;
639
+ flex-wrap: wrap;
640
+ }
641
+
642
+ .inspector-image-actions .inspector-btn {
643
+ padding: 6px 10px;
644
+ font-size: 11px;
645
+ }
646
+
647
+ .inspector-image-actions .inspector-btn.primary {
648
+ background: #6d5dfc;
649
+ color: white;
650
+ font-weight: 600;
651
+ }
652
+
653
+ .highlight-pulse {
654
+ animation: pulse-border 1s infinite alternate;
655
+ border-color: #6d5dfc !important;
656
+ /* Removed glow effect - HANDLER forbids glows */
657
+ }
658
+
659
+ @keyframes pulse-border {
660
+ from {
661
+ border-color: rgba(109, 93, 252, 0.3);
662
+ }
663
+
664
+ to {
665
+ border-color: rgba(109, 93, 252, 1);
666
+ }
667
+ }
668
+
669
+ .property-badge {
670
+ font-size: 9px;
671
+ font-weight: 800;
672
+ background: rgba(61, 214, 198, 0.15);
673
+ color: var(--ui-accent);
674
+ padding: 2px 5px;
675
+ border-radius: 4px;
676
+ text-transform: uppercase;
677
+ }
678
+
679
+
680
+ @media (max-width: 768px) {
681
+ .preview-toolbar {
682
+ padding: 0 4px;
683
+ height: 50px;
684
+ gap: 4px;
685
+ }
686
+
687
+ .device-dropdown {
688
+ font-size: 11px;
689
+ padding: 2px 4px;
690
+ min-width: 100px;
691
+ }
692
+
693
+ .preview-btn {
694
+ padding: 3px 6px;
695
+ font-size: 11px;
696
+ }
697
+
698
+ .zoom-label {
699
+ font-size: 11px;
700
+ min-width: 30px;
701
+ }
702
+ }
703
+
704
+ /* Toolbar Elements */
705
+ .toolbar-divider {
706
+ width: 1px;
707
+ height: 20px;
708
+ background-color: #555;
709
+ margin: 0 4px;
710
+ }
711
+
712
+ .zoom-label {
713
+ font-size: 12px;
714
+ color: var(--ui-muted);
715
+ min-width: 35px;
716
+ text-align: center;
717
+ }
718
+
719
+ /* 2D Debug Overlay Panel */
720
+ .debug-overlay {
721
+ position: absolute;
722
+ inset: 0;
723
+ z-index: 200;
724
+ pointer-events: none;
725
+ }
726
+
727
+ .debug-overlay.hidden {
728
+ display: none;
729
+ }
730
+
731
+ .scene-panel {
732
+ position: absolute;
733
+ width: 320px;
734
+ max-height: 78vh;
735
+ background: var(--ui-surface);
736
+ border: 1px solid var(--ui-border);
737
+ border-radius: 14px;
738
+ box-shadow: var(--ui-shadow);
739
+ pointer-events: auto;
740
+ overflow: hidden;
741
+ box-sizing: border-box;
742
+ display: flex;
743
+ flex-direction: column;
744
+ z-index: 100;
745
+ }
746
+
747
+ .scene-panel.scene-objects {
748
+ width: 300px;
749
+ }
750
+
751
+ .scene-panel.scene-objects {
752
+ left: 16px;
753
+ top: 72px;
754
+ }
755
+
756
+ /* Higher z-index during drag to stay above everything */
757
+ .scene-panel.dragging {
758
+ z-index: 9999 !important;
759
+ box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
760
+ opacity: 0.95;
761
+ }
762
+
763
+ .scene-panel.scene-tools {
764
+ max-height: 46vh;
765
+ }
766
+
767
+ .scene-panel.scene-tools .scene-panel-body {
768
+ max-height: calc(46vh - 44px);
769
+ }
770
+
771
+ .customize-panel {
772
+ width: 320px;
773
+ }
774
+
775
+ .customize-list {
776
+ display: flex;
777
+ flex-direction: column;
778
+ gap: 8px;
779
+ }
780
+
781
+ .customize-grid {
782
+ display: grid;
783
+ grid-template-columns: repeat(2, minmax(0, 1fr));
784
+ gap: var(--space-md);
785
+ }
786
+
787
+ .customize-row {
788
+ display: flex;
789
+ align-items: center;
790
+ gap: 8px;
791
+ background: var(--ui-surface-2);
792
+ border: 1px solid var(--ui-border);
793
+ border-radius: 8px;
794
+ padding: 6px 8px;
795
+ }
796
+
797
+ .customize-key {
798
+ flex: 0 0 120px;
799
+ font-size: 11px;
800
+ color: var(--ui-muted);
801
+ white-space: nowrap;
802
+ overflow: hidden;
803
+ text-overflow: ellipsis;
804
+ }
805
+
806
+ .customize-input {
807
+ flex: 1;
808
+ background-color: var(--ui-surface);
809
+ color: var(--ui-text);
810
+ border: 1px solid var(--ui-border);
811
+ border-radius: 6px;
812
+ padding: 4px 6px;
813
+ font-size: 11px;
814
+ font-family: "JetBrains Mono", "SF Mono", "Consolas", "Monaco", monospace;
815
+ }
816
+
817
+ .customize-actions {
818
+ display: flex;
819
+ align-items: center;
820
+ gap: 6px;
821
+ }
822
+
823
+ .customize-icon-btn {
824
+ width: 28px;
825
+ height: 28px;
826
+ border-radius: 8px;
827
+ border: 1px solid var(--ui-border);
828
+ background: var(--ui-surface);
829
+ color: var(--ui-text);
830
+ display: inline-flex;
831
+ align-items: center;
832
+ justify-content: center;
833
+ cursor: pointer;
834
+ }
835
+
836
+ .customize-icon-btn:hover {
837
+ border-color: rgba(227, 138, 90, 0.55);
838
+ background: rgba(227, 138, 90, 0.08);
839
+ }
840
+
841
+ .customize-icon-btn svg {
842
+ width: 14px;
843
+ height: 14px;
844
+ fill: currentColor;
845
+ }
846
+
847
+ .customize-icon-btn.ai {
848
+ font-size: 10px;
849
+ font-weight: 700;
850
+ letter-spacing: 0.05em;
851
+ padding: 4px 6px;
852
+ }
853
+
854
+ .customize-file {
855
+ display: none;
856
+ }
857
+
858
+ .customize-color-field {
859
+ display: flex;
860
+ flex-direction: column;
861
+ gap: 6px;
862
+ padding: 8px;
863
+ border-radius: 8px;
864
+ background: rgba(20, 26, 36, 0.7);
865
+ border: 1px solid rgba(255, 255, 255, 0.05);
866
+ font-size: 11px;
867
+ color: var(--ui-muted);
868
+ }
869
+
870
+ .customize-color-field input[type="color"] {
871
+ width: 100%;
872
+ height: 28px;
873
+ padding: 0;
874
+ border: none;
875
+ background: transparent;
876
+ }
877
+
878
+ .customize-color-text {
879
+ background-color: var(--ui-surface);
880
+ color: var(--ui-text);
881
+ border: 1px solid var(--ui-border);
882
+ border-radius: 6px;
883
+ padding: 4px 6px;
884
+ font-size: 11px;
885
+ font-family: "JetBrains Mono", "SF Mono", "Consolas", "Monaco", monospace;
886
+ }
887
+
888
+ .customize-help {
889
+ margin-top: 6px;
890
+ font-size: 10px;
891
+ color: var(--ui-muted);
892
+ }
893
+
894
+ .customize-empty {
895
+ font-size: 11px;
896
+ color: var(--ui-muted);
897
+ padding: 6px 0;
898
+ }
899
+
900
+ .batch-ai-label {
901
+ font-size: 11px;
902
+ color: var(--ui-muted);
903
+ }
904
+
905
+ .batch-ai-input,
906
+ .batch-ai-textarea,
907
+ .batch-ai-select {
908
+ width: 100%;
909
+ padding: 6px 8px;
910
+ border-radius: 8px;
911
+ border: 1px solid rgba(255, 255, 255, 0.08);
912
+ background: rgba(10, 14, 20, 0.85);
913
+ color: var(--ui-text);
914
+ font-size: 12px;
915
+ }
916
+
917
+ .batch-ai-textarea {
918
+ min-height: 70px;
919
+ resize: vertical;
920
+ }
921
+
922
+ .batch-ai-row {
923
+ display: flex;
924
+ align-items: center;
925
+ gap: 8px;
926
+ flex-wrap: wrap;
927
+ }
928
+
929
+ .batch-ai-actions {
930
+ margin-top: 6px;
931
+ }
932
+
933
+ .batch-ai-btn {
934
+ border: 1px solid var(--ui-border);
935
+ background: rgba(25, 32, 44, 0.8);
936
+ color: var(--ui-text);
937
+ border-radius: 8px;
938
+ padding: 4px 10px;
939
+ font-size: 11px;
940
+ cursor: pointer;
941
+ }
942
+
943
+ .batch-ai-btn.primary {
944
+ border-color: rgba(191, 126, 255, 0.6);
945
+ background: rgba(191, 126, 255, 0.2);
946
+ }
947
+
948
+ .batch-ai-file {
949
+ display: none;
950
+ }
951
+
952
+ .batch-ai-file-name {
953
+ font-size: 11px;
954
+ color: var(--ui-muted);
955
+ }
956
+
957
+ .batch-ai-status {
958
+ font-size: 11px;
959
+ color: var(--ui-muted);
960
+ }
961
+
962
+ .batch-ai-dna {
963
+ margin-top: 8px;
964
+ padding: 8px;
965
+ border-radius: 10px;
966
+ border: 1px solid rgba(255, 255, 255, 0.06);
967
+ background: rgba(16, 20, 28, 0.6);
968
+ }
969
+
970
+ .batch-ai-palette {
971
+ display: flex;
972
+ flex-wrap: wrap;
973
+ gap: 6px;
974
+ margin-top: 6px;
975
+ }
976
+
977
+ .batch-ai-swatch {
978
+ width: 22px;
979
+ height: 22px;
980
+ border-radius: 6px;
981
+ border: 1px solid rgba(255, 255, 255, 0.2);
982
+ }
983
+
984
+ .batch-ai-muted {
985
+ font-size: 11px;
986
+ color: var(--ui-muted);
987
+ }
988
+
989
+ .batch-ai-asset-list {
990
+ margin-top: 10px;
991
+ display: flex;
992
+ flex-direction: column;
993
+ gap: var(--space-md);
994
+ }
995
+
996
+ .batch-ai-item {
997
+ border-radius: 10px;
998
+ border: 1px solid rgba(255, 255, 255, 0.06);
999
+ background: rgba(12, 16, 22, 0.7);
1000
+ padding: 8px;
1001
+ display: flex;
1002
+ flex-direction: column;
1003
+ gap: 8px;
1004
+ }
1005
+
1006
+ .batch-ai-item-header {
1007
+ display: flex;
1008
+ align-items: center;
1009
+ justify-content: space-between;
1010
+ gap: 8px;
1011
+ }
1012
+
1013
+ .batch-ai-toggle {
1014
+ display: inline-flex;
1015
+ align-items: center;
1016
+ gap: 6px;
1017
+ font-size: 11px;
1018
+ color: var(--ui-text);
1019
+ }
1020
+
1021
+ .batch-ai-item-body {
1022
+ display: flex;
1023
+ flex-direction: column;
1024
+ gap: 8px;
1025
+ }
1026
+
1027
+ .batch-ai-thumb {
1028
+ width: 100%;
1029
+ max-height: 140px;
1030
+ object-fit: contain;
1031
+ border-radius: 8px;
1032
+ border: 1px solid rgba(255, 255, 255, 0.08);
1033
+ background: rgba(8, 10, 14, 0.6);
1034
+ }
1035
+
1036
+ .batch-ai-thumb.hidden {
1037
+ display: none;
1038
+ }
1039
+
1040
+ .batch-ai-item-status {
1041
+ font-size: 11px;
1042
+ color: var(--ui-muted);
1043
+ }
1044
+
1045
+ .batch-ai-item-actions {
1046
+ display: flex;
1047
+ gap: 8px;
1048
+ flex-wrap: wrap;
1049
+ }
1050
+
1051
+ .batch-ai-empty {
1052
+ font-size: 11px;
1053
+ color: var(--ui-muted);
1054
+ padding: 6px 0;
1055
+ }
1056
+
1057
+ .brand-dna-label {
1058
+ font-size: 11px;
1059
+ color: var(--ui-muted);
1060
+ }
1061
+
1062
+ .brand-dna-input,
1063
+ .brand-dna-textarea,
1064
+ .brand-dna-select {
1065
+ width: 100%;
1066
+ padding: 6px 8px;
1067
+ border-radius: 8px;
1068
+ border: 1px solid rgba(255, 255, 255, 0.08);
1069
+ background: rgba(10, 14, 20, 0.85);
1070
+ color: var(--ui-text);
1071
+ font-size: 12px;
1072
+ }
1073
+
1074
+ .brand-dna-textarea {
1075
+ min-height: 70px;
1076
+ resize: vertical;
1077
+ }
1078
+
1079
+ .brand-dna-row {
1080
+ display: flex;
1081
+ align-items: center;
1082
+ gap: 8px;
1083
+ flex-wrap: wrap;
1084
+ }
1085
+
1086
+ .brand-dna-btn {
1087
+ border: 1px solid var(--ui-border);
1088
+ background: rgba(25, 32, 44, 0.8);
1089
+ color: var(--ui-text);
1090
+ border-radius: 8px;
1091
+ padding: 4px 10px;
1092
+ font-size: 11px;
1093
+ cursor: pointer;
1094
+ }
1095
+
1096
+ .brand-dna-btn.primary {
1097
+ border-color: rgba(111, 140, 255, 0.6);
1098
+ background: rgba(111, 140, 255, 0.2);
1099
+ }
1100
+
1101
+ .brand-dna-file {
1102
+ display: none;
1103
+ }
1104
+
1105
+ .brand-dna-file-name {
1106
+ font-size: 11px;
1107
+ color: var(--ui-muted);
1108
+ }
1109
+
1110
+ .brand-dna-status {
1111
+ font-size: 11px;
1112
+ color: var(--ui-muted);
1113
+ }
1114
+
1115
+ .brand-dna-meta {
1116
+ margin-top: 8px;
1117
+ }
1118
+
1119
+ .brand-dna-prompt {
1120
+ margin: 6px 0 0;
1121
+ padding: 8px;
1122
+ border-radius: 10px;
1123
+ border: 1px solid rgba(255, 255, 255, 0.06);
1124
+ background: rgba(12, 16, 22, 0.7);
1125
+ color: var(--ui-text);
1126
+ font-size: 11px;
1127
+ white-space: pre-wrap;
1128
+ }
1129
+
1130
+ .brand-dna-output {
1131
+ margin-top: 8px;
1132
+ padding: 8px;
1133
+ border-radius: 10px;
1134
+ border: 1px solid rgba(255, 255, 255, 0.06);
1135
+ background: rgba(16, 20, 28, 0.6);
1136
+ }
1137
+
1138
+ .brand-dna-palette {
1139
+ display: flex;
1140
+ flex-wrap: wrap;
1141
+ gap: 6px;
1142
+ margin-top: 6px;
1143
+ }
1144
+
1145
+ .brand-dna-swatch {
1146
+ width: 22px;
1147
+ height: 22px;
1148
+ border-radius: 6px;
1149
+ border: 1px solid rgba(255, 255, 255, 0.2);
1150
+ }
1151
+
1152
+ .brand-dna-muted {
1153
+ font-size: 11px;
1154
+ color: var(--ui-muted);
1155
+ }
1156
+
1157
+ .brand-dna-object-list {
1158
+ margin-top: 10px;
1159
+ display: flex;
1160
+ flex-direction: column;
1161
+ gap: var(--space-md);
1162
+ }
1163
+
1164
+ .brand-dna-object {
1165
+ border-radius: 10px;
1166
+ border: 1px solid rgba(255, 255, 255, 0.06);
1167
+ background: rgba(12, 16, 22, 0.7);
1168
+ padding: 8px;
1169
+ display: flex;
1170
+ flex-direction: column;
1171
+ gap: 8px;
1172
+ }
1173
+
1174
+ .brand-dna-object-header {
1175
+ display: flex;
1176
+ align-items: center;
1177
+ justify-content: space-between;
1178
+ gap: 8px;
1179
+ }
1180
+
1181
+ .brand-dna-object-title {
1182
+ font-size: 11px;
1183
+ color: var(--ui-text);
1184
+ word-break: break-all;
1185
+ }
1186
+
1187
+ .brand-dna-object-status {
1188
+ font-size: 11px;
1189
+ color: var(--ui-muted);
1190
+ }
1191
+
1192
+ .brand-dna-empty {
1193
+ font-size: 11px;
1194
+ color: var(--ui-muted);
1195
+ padding: 6px 0;
1196
+ }
1197
+
1198
+ .ai-panel {
1199
+ display: flex;
1200
+ flex-direction: column;
1201
+ gap: var(--space-md);
1202
+ padding: 8px;
1203
+ border-radius: 10px;
1204
+ border: 1px solid rgba(255, 255, 255, 0.06);
1205
+ background: rgba(16, 20, 28, 0.6);
1206
+ }
1207
+
1208
+ .ai-modal {
1209
+ position: fixed;
1210
+ inset: 0;
1211
+ background: rgba(6, 10, 16, 0.82);
1212
+ display: flex;
1213
+ align-items: center;
1214
+ justify-content: center;
1215
+ z-index: 10080;
1216
+ }
1217
+
1218
+ .ai-modal-card {
1219
+ width: min(760px, 92vw);
1220
+ max-height: 90vh;
1221
+ overflow: auto;
1222
+ background: rgba(16, 20, 28, 0.98);
1223
+ border: 1px solid var(--ui-border);
1224
+ border-radius: 16px;
1225
+ box-shadow: 0 20px 50px rgba(0, 0, 0, 0.45);
1226
+ }
1227
+
1228
+ .ai-modal-header {
1229
+ display: flex;
1230
+ align-items: center;
1231
+ justify-content: space-between;
1232
+ padding: 14px 18px;
1233
+ border-bottom: 1px solid rgba(255, 255, 255, 0.06);
1234
+ }
1235
+
1236
+ .ai-modal-actions {
1237
+ display: inline-flex;
1238
+ align-items: center;
1239
+ gap: 8px;
1240
+ }
1241
+
1242
+ .ai-modal-title {
1243
+ font-size: 14px;
1244
+ font-weight: 700;
1245
+ color: var(--ui-text);
1246
+ }
1247
+
1248
+ .ai-modal-subtitle {
1249
+ font-size: 11px;
1250
+ color: var(--ui-muted);
1251
+ margin-top: 3px;
1252
+ }
1253
+
1254
+ .ai-modal-close {
1255
+ border: 1px solid var(--ui-border);
1256
+ background: rgba(25, 32, 44, 0.8);
1257
+ color: var(--ui-text);
1258
+ border-radius: 8px;
1259
+ padding: 4px 12px;
1260
+ font-size: 11px;
1261
+ cursor: pointer;
1262
+ }
1263
+
1264
+ .ai-modal-gallery {
1265
+ border: 1px solid var(--ui-border);
1266
+ background: rgba(25, 32, 44, 0.8);
1267
+ color: var(--ui-text);
1268
+ border-radius: 8px;
1269
+ padding: 4px 12px;
1270
+ font-size: 11px;
1271
+ cursor: pointer;
1272
+ }
1273
+
1274
+ .ai-loading {
1275
+ display: none;
1276
+ align-items: center;
1277
+ gap: 12px;
1278
+ padding: 10px 12px;
1279
+ border-radius: 10px;
1280
+ background: linear-gradient(120deg, rgba(88, 163, 255, 0.1), rgba(255, 99, 148, 0.14));
1281
+ border: 1px solid rgba(88, 163, 255, 0.25);
1282
+ }
1283
+
1284
+ .ai-loading.active {
1285
+ display: flex;
1286
+ }
1287
+
1288
+ .ai-loading-ring {
1289
+ width: 26px;
1290
+ height: 26px;
1291
+ border-radius: 50%;
1292
+ border: 3px solid rgba(255, 255, 255, 0.15);
1293
+ border-top-color: rgba(88, 163, 255, 0.9);
1294
+ animation: ai-spin 0.9s linear infinite;
1295
+ }
1296
+
1297
+ .ai-loading-bar {
1298
+ flex: 1;
1299
+ height: 8px;
1300
+ border-radius: 999px;
1301
+ background: linear-gradient(90deg, rgba(88, 163, 255, 0.2), rgba(255, 99, 148, 0.7), rgba(88, 163, 255, 0.2));
1302
+ background-size: 200% 100%;
1303
+ animation: ai-bar 1.4s var(--ui-ease) infinite;
1304
+ }
1305
+
1306
+ .ai-loading-text {
1307
+ font-size: 11px;
1308
+ color: var(--ui-text);
1309
+ }
1310
+
1311
+ @keyframes ai-spin {
1312
+ to {
1313
+ transform: rotate(360deg);
1314
+ }
1315
+ }
1316
+
1317
+ @keyframes ai-bar {
1318
+ 0% {
1319
+ background-position: 0% 50%;
1320
+ }
1321
+
1322
+ 100% {
1323
+ background-position: 100% 50%;
1324
+ }
1325
+ }
1326
+
1327
+ .ai-label {
1328
+ font-size: 11px;
1329
+ color: var(--ui-muted);
1330
+ }
1331
+
1332
+ .ai-input,
1333
+ .ai-select,
1334
+ .ai-textarea {
1335
+ width: 100%;
1336
+ padding: 6px 8px;
1337
+ border-radius: 8px;
1338
+ border: 1px solid rgba(255, 255, 255, 0.08);
1339
+ background: rgba(10, 14, 20, 0.85);
1340
+ color: var(--ui-text);
1341
+ font-size: 12px;
1342
+ }
1343
+
1344
+ .ai-textarea {
1345
+ min-height: 70px;
1346
+ resize: vertical;
1347
+ }
1348
+
1349
+ .ai-row {
1350
+ display: flex;
1351
+ align-items: center;
1352
+ gap: 8px;
1353
+ flex-wrap: wrap;
1354
+ }
1355
+
1356
+ .ai-strength {
1357
+ gap: var(--space-md);
1358
+ }
1359
+
1360
+ .ai-strength input[type="range"] {
1361
+ flex: 1;
1362
+ min-width: 160px;
1363
+ }
1364
+
1365
+ .ai-strength-value {
1366
+ font-size: 11px;
1367
+ color: var(--ui-text);
1368
+ min-width: 20px;
1369
+ text-align: right;
1370
+ }
1371
+
1372
+ .ai-gallery {
1373
+ border-radius: 10px;
1374
+ border: 1px solid rgba(255, 255, 255, 0.06);
1375
+ background: rgba(12, 16, 22, 0.65);
1376
+ padding: 8px;
1377
+ }
1378
+
1379
+ .ai-gallery.hidden {
1380
+ display: none;
1381
+ }
1382
+
1383
+ .ai-gallery-grid {
1384
+ display: grid;
1385
+ grid-template-columns: repeat(auto-fit, minmax(90px, 1fr));
1386
+ gap: 8px;
1387
+ }
1388
+
1389
+ .ai-gallery-item {
1390
+ border: 1px solid rgba(255, 255, 255, 0.08);
1391
+ background: rgba(8, 10, 14, 0.7);
1392
+ border-radius: 10px;
1393
+ padding: 6px;
1394
+ display: flex;
1395
+ flex-direction: column;
1396
+ gap: 6px;
1397
+ cursor: pointer;
1398
+ text-align: left;
1399
+ }
1400
+
1401
+ .ai-gallery-item.active {
1402
+ border-color: rgba(111, 140, 255, 0.6);
1403
+ box-shadow: 0 0 0 1px rgba(111, 140, 255, 0.25);
1404
+ }
1405
+
1406
+ .ai-gallery-thumb {
1407
+ width: 100%;
1408
+ height: 70px;
1409
+ object-fit: contain;
1410
+ border-radius: 6px;
1411
+ background: rgba(6, 8, 12, 0.7);
1412
+ border: 1px solid rgba(255, 255, 255, 0.08);
1413
+ }
1414
+
1415
+ .ai-gallery-label {
1416
+ font-size: 10px;
1417
+ color: var(--ui-text);
1418
+ word-break: break-all;
1419
+ }
1420
+
1421
+ .ai-gallery-empty {
1422
+ font-size: 11px;
1423
+ color: var(--ui-muted);
1424
+ }
1425
+
1426
+ .ai-btn {
1427
+ border: 1px solid var(--ui-border);
1428
+ background: rgba(25, 32, 44, 0.8);
1429
+ color: var(--ui-text);
1430
+ border-radius: 8px;
1431
+ padding: 4px 10px;
1432
+ font-size: 11px;
1433
+ cursor: pointer;
1434
+ }
1435
+
1436
+ .ai-file {
1437
+ display: none;
1438
+ }
1439
+
1440
+ .ai-file-name {
1441
+ font-size: 11px;
1442
+ color: var(--ui-muted);
1443
+ }
1444
+
1445
+ .ai-toggles label {
1446
+ font-size: 11px;
1447
+ color: var(--ui-text);
1448
+ display: inline-flex;
1449
+ align-items: center;
1450
+ gap: 6px;
1451
+ }
1452
+
1453
+ .ai-actions .debug-btn {
1454
+ flex: 1;
1455
+ }
1456
+
1457
+ .ai-status {
1458
+ font-size: 11px;
1459
+ color: var(--ui-muted);
1460
+ }
1461
+
1462
+ .ai-preview {
1463
+ width: 100%;
1464
+ border-radius: 10px;
1465
+ border: 1px solid rgba(255, 255, 255, 0.08);
1466
+ background: rgba(8, 10, 14, 0.6);
1467
+ padding: 8px;
1468
+ display: flex;
1469
+ justify-content: center;
1470
+ align-items: center;
1471
+ min-height: 140px;
1472
+ }
1473
+
1474
+ .ai-preview img {
1475
+ max-width: 100%;
1476
+ max-height: 220px;
1477
+ object-fit: contain;
1478
+ }
1479
+
1480
+ /* Asset Editor Modal */
1481
+ .asset-editor-modal {
1482
+ position: fixed;
1483
+ inset: 0;
1484
+ background: rgba(6, 10, 16, 0.82);
1485
+ display: flex;
1486
+ align-items: center;
1487
+ justify-content: center;
1488
+ z-index: 10060;
1489
+ }
1490
+
1491
+ .asset-editor-card {
1492
+ width: min(680px, 90vw);
1493
+ max-height: 85vh;
1494
+ background: rgba(16, 20, 28, 0.98);
1495
+ border: 1px solid var(--ui-border);
1496
+ border-radius: 16px;
1497
+ box-shadow: 0 20px 50px rgba(0, 0, 0, 0.45);
1498
+ display: flex;
1499
+ flex-direction: column;
1500
+ overflow: hidden;
1501
+ }
1502
+
1503
+ .asset-editor-header {
1504
+ display: flex;
1505
+ align-items: center;
1506
+ justify-content: space-between;
1507
+ padding: 16px 20px;
1508
+ border-bottom: 1px solid rgba(255, 255, 255, 0.06);
1509
+ }
1510
+
1511
+ .asset-editor-title {
1512
+ font-size: 16px;
1513
+ font-weight: 700;
1514
+ color: var(--ui-text);
1515
+ }
1516
+
1517
+ .asset-editor-subtitle {
1518
+ font-size: 12px;
1519
+ color: var(--ui-muted);
1520
+ margin-top: 4px;
1521
+ }
1522
+
1523
+ .asset-editor-close {
1524
+ border: 1px solid var(--ui-border);
1525
+ background: rgba(25, 32, 44, 0.8);
1526
+ color: var(--ui-text);
1527
+ border-radius: 8px;
1528
+ padding: 6px 12px;
1529
+ font-size: 14px;
1530
+ cursor: pointer;
1531
+ transition: all 0.15s var(--ui-ease);
1532
+ }
1533
+
1534
+ .asset-editor-close:hover {
1535
+ background: rgba(25, 32, 44, 1);
1536
+ }
1537
+
1538
+ .asset-editor-tabs {
1539
+ display: flex;
1540
+ border-bottom: 1px solid rgba(255, 255, 255, 0.06);
1541
+ }
1542
+
1543
+ .asset-editor-tab {
1544
+ flex: 1;
1545
+ padding: 12px 16px;
1546
+ text-align: center;
1547
+ font-size: 12px;
1548
+ font-weight: 600;
1549
+ color: var(--ui-muted);
1550
+ cursor: pointer;
1551
+ border-bottom: 2px solid transparent;
1552
+ transition: all 0.15s var(--ui-ease);
1553
+ }
1554
+
1555
+ .asset-editor-tab.active {
1556
+ color: var(--ui-text);
1557
+ border-bottom-color: var(--ui-accent);
1558
+ }
1559
+
1560
+ .asset-editor-tab:hover:not(.active) {
1561
+ color: var(--ui-text);
1562
+ background: rgba(255, 255, 255, 0.02);
1563
+ }
1564
+
1565
+ .asset-editor-body {
1566
+ flex: 1;
1567
+ overflow-y: auto;
1568
+ padding: 20px;
1569
+ }
1570
+
1571
+ .asset-editor-tab-panel {
1572
+ display: none;
1573
+ }
1574
+
1575
+ .asset-editor-tab-panel.active {
1576
+ display: block;
1577
+ }
1578
+
1579
+ .asset-editor-hint {
1580
+ font-size: 12px;
1581
+ color: var(--ui-muted);
1582
+ text-align: center;
1583
+ padding: 20px;
1584
+ line-height: 1.5;
1585
+ }
1586
+
1587
+ .asset-editor-ai-controls {
1588
+ display: flex;
1589
+ gap: 12px;
1590
+ justify-content: center;
1591
+ padding: 20px;
1592
+ }
1593
+
1594
+ .asset-editor-actions {
1595
+ display: flex;
1596
+ align-items: center;
1597
+ justify-content: flex-end;
1598
+ gap: 12px;
1599
+ padding: 16px 20px;
1600
+ border-top: 1px solid rgba(255, 255, 255, 0.06);
1601
+ }
1602
+
1603
+ .asset-preview-modal {
1604
+ position: fixed;
1605
+ inset: 0;
1606
+ background: rgba(8, 10, 14, 0.72);
1607
+ display: flex;
1608
+ align-items: center;
1609
+ justify-content: center;
1610
+ z-index: 10050;
1611
+ }
1612
+
1613
+ .asset-preview-card {
1614
+ width: min(720px, 92vw);
1615
+ max-height: 82vh;
1616
+ background: rgba(16, 20, 28, 0.98);
1617
+ border: 1px solid var(--ui-border);
1618
+ border-radius: 14px;
1619
+ box-shadow: var(--ui-shadow);
1620
+ display: flex;
1621
+ flex-direction: column;
1622
+ }
1623
+
1624
+ .asset-preview-header {
1625
+ display: flex;
1626
+ align-items: center;
1627
+ justify-content: space-between;
1628
+ padding: 10px 14px;
1629
+ border-bottom: 1px solid rgba(255, 255, 255, 0.06);
1630
+ color: var(--ui-text);
1631
+ }
1632
+
1633
+ .asset-preview-title {
1634
+ font-size: 12px;
1635
+ font-weight: 600;
1636
+ word-break: break-all;
1637
+ }
1638
+
1639
+ .asset-preview-close {
1640
+ border: 1px solid var(--ui-border);
1641
+ background: rgba(25, 32, 44, 0.8);
1642
+ color: var(--ui-text);
1643
+ border-radius: 8px;
1644
+ padding: 4px 10px;
1645
+ font-size: 11px;
1646
+ cursor: pointer;
1647
+ }
1648
+
1649
+ .asset-preview-meta {
1650
+ padding: 0 14px 10px;
1651
+ color: var(--ui-muted);
1652
+ font-size: 11px;
1653
+ word-break: break-all;
1654
+ border-bottom: 1px solid rgba(255, 255, 255, 0.06);
1655
+ }
1656
+
1657
+ .asset-preview-actions {
1658
+ display: flex;
1659
+ align-items: center;
1660
+ gap: 8px;
1661
+ }
1662
+
1663
+ .asset-preview-change {
1664
+ border: 1px solid var(--ui-border);
1665
+ background: rgba(25, 32, 44, 0.8);
1666
+ color: var(--ui-text);
1667
+ border-radius: 8px;
1668
+ padding: 4px 10px;
1669
+ font-size: 11px;
1670
+ cursor: pointer;
1671
+ }
1672
+
1673
+ .asset-preview-ai {
1674
+ border: 1px solid var(--ui-border);
1675
+ background: rgba(25, 32, 44, 0.8);
1676
+ color: var(--ui-text);
1677
+ border-radius: 8px;
1678
+ padding: 4px 10px;
1679
+ font-size: 11px;
1680
+ cursor: pointer;
1681
+ }
1682
+
1683
+ .asset-preview-body {
1684
+ padding: 12px;
1685
+ overflow: auto;
1686
+ display: flex;
1687
+ align-items: center;
1688
+ justify-content: center;
1689
+ }
1690
+
1691
+ .asset-preview-ai-output {
1692
+ border-top: 1px solid rgba(255, 255, 255, 0.06);
1693
+ padding: 10px 12px 14px;
1694
+ }
1695
+
1696
+ .asset-preview-ai-output.hidden {
1697
+ display: none;
1698
+ }
1699
+
1700
+ .asset-preview-ai-label {
1701
+ font-size: 11px;
1702
+ color: var(--ui-muted);
1703
+ margin-bottom: 6px;
1704
+ }
1705
+
1706
+ .asset-preview-ai-image {
1707
+ width: 100%;
1708
+ max-height: 200px;
1709
+ object-fit: contain;
1710
+ border-radius: 10px;
1711
+ border: 1px solid rgba(255, 255, 255, 0.08);
1712
+ background: rgba(8, 10, 14, 0.6);
1713
+ }
1714
+
1715
+ .asset-preview-body img {
1716
+ max-width: 100%;
1717
+ max-height: 60vh;
1718
+ object-fit: contain;
1719
+ }
1720
+
1721
+ .asset-preview-body audio {
1722
+ width: 100%;
1723
+ }
1724
+
1725
+ .asset-preview-body pre {
1726
+ width: 100%;
1727
+ white-space: pre-wrap;
1728
+ color: var(--ui-text);
1729
+ font-family: "JetBrains Mono", "SF Mono", "Consolas", "Monaco", monospace;
1730
+ font-size: 12px;
1731
+ }
1732
+
1733
+ .asset-crop-modal {
1734
+ position: fixed;
1735
+ inset: 0;
1736
+ background: rgba(8, 10, 14, 0.78);
1737
+ display: flex;
1738
+ align-items: center;
1739
+ justify-content: center;
1740
+ z-index: 10060;
1741
+ }
1742
+
1743
+ .asset-crop-card {
1744
+ width: min(860px, 96vw);
1745
+ background: rgba(16, 20, 28, 0.98);
1746
+ border: 1px solid var(--ui-border);
1747
+ border-radius: 14px;
1748
+ box-shadow: var(--ui-shadow);
1749
+ display: flex;
1750
+ flex-direction: column;
1751
+ }
1752
+
1753
+ .asset-crop-header {
1754
+ display: flex;
1755
+ align-items: center;
1756
+ justify-content: space-between;
1757
+ gap: 16px;
1758
+ padding: 12px 16px;
1759
+ border-bottom: 1px solid rgba(255, 255, 255, 0.06);
1760
+ color: var(--ui-text);
1761
+ }
1762
+
1763
+ .asset-crop-title {
1764
+ font-size: 13px;
1765
+ font-weight: 600;
1766
+ }
1767
+
1768
+ .asset-crop-subtitle {
1769
+ font-size: 11px;
1770
+ color: var(--ui-muted);
1771
+ margin-top: 2px;
1772
+ }
1773
+
1774
+ .asset-crop-close {
1775
+ border: 1px solid var(--ui-border);
1776
+ background: rgba(25, 32, 44, 0.8);
1777
+ color: var(--ui-text);
1778
+ border-radius: 8px;
1779
+ padding: 4px 10px;
1780
+ font-size: 11px;
1781
+ cursor: pointer;
1782
+ }
1783
+
1784
+ .asset-crop-body {
1785
+ padding: 16px;
1786
+ display: flex;
1787
+ justify-content: center;
1788
+ gap: 16px;
1789
+ flex-wrap: nowrap;
1790
+ align-items: flex-start;
1791
+ }
1792
+
1793
+ .asset-crop-column {
1794
+ display: flex;
1795
+ flex-direction: column;
1796
+ gap: 8px;
1797
+ align-items: center;
1798
+ min-width: 0;
1799
+ }
1800
+
1801
+ .asset-crop-label {
1802
+ font-size: 11px;
1803
+ color: var(--ui-muted);
1804
+ text-transform: uppercase;
1805
+ letter-spacing: 0.08em;
1806
+ }
1807
+
1808
+ .asset-crop-canvas {
1809
+ border-radius: 12px;
1810
+ border: 1px solid rgba(255, 255, 255, 0.08);
1811
+ background: rgba(8, 10, 14, 0.55);
1812
+ cursor: grab;
1813
+ }
1814
+
1815
+ .asset-crop-preview {
1816
+ border-radius: 12px;
1817
+ border: 1px solid rgba(255, 255, 255, 0.08);
1818
+ background: rgba(8, 10, 14, 0.55);
1819
+ }
1820
+
1821
+ .asset-crop-canvas:active {
1822
+ cursor: grabbing;
1823
+ }
1824
+
1825
+ .asset-crop-controls {
1826
+ display: flex;
1827
+ align-items: center;
1828
+ gap: 12px;
1829
+ padding: 0 16px 12px;
1830
+ color: var(--ui-text);
1831
+ font-size: 12px;
1832
+ }
1833
+
1834
+ .asset-crop-controls label {
1835
+ min-width: 42px;
1836
+ }
1837
+
1838
+ .asset-crop-zoom {
1839
+ flex: 1;
1840
+ }
1841
+
1842
+ .asset-crop-zoom-value {
1843
+ min-width: 50px;
1844
+ text-align: right;
1845
+ color: var(--ui-muted);
1846
+ }
1847
+
1848
+ .asset-crop-reset {
1849
+ border: 1px solid var(--ui-border);
1850
+ background: rgba(25, 32, 44, 0.8);
1851
+ color: var(--ui-text);
1852
+ border-radius: 8px;
1853
+ padding: 4px 10px;
1854
+ font-size: 11px;
1855
+ cursor: pointer;
1856
+ }
1857
+
1858
+ .asset-crop-actions {
1859
+ display: flex;
1860
+ justify-content: flex-end;
1861
+ gap: var(--space-md);
1862
+ padding: 0 16px 16px;
1863
+ }
1864
+
1865
+ .asset-crop-actions button {
1866
+ border-radius: 10px;
1867
+ padding: 6px 14px;
1868
+ font-size: 12px;
1869
+ border: 1px solid var(--ui-border);
1870
+ background: rgba(28, 36, 50, 0.85);
1871
+ color: var(--ui-text);
1872
+ cursor: pointer;
1873
+ }
1874
+
1875
+ .asset-crop-apply {
1876
+ background: var(--ui-accent);
1877
+ border-color: transparent;
1878
+ color: #10151f;
1879
+ font-weight: 600;
1880
+ }
1881
+
1882
+ @media (max-width: 720px) {
1883
+ .customize-grid {
1884
+ grid-template-columns: 1fr;
1885
+ }
1886
+ }
1887
+
1888
+ .scene-panel-header {
1889
+ display: flex;
1890
+ align-items: center;
1891
+ justify-content: space-between;
1892
+ gap: 12px;
1893
+ padding: 10px 14px;
1894
+ background-color: rgba(24, 28, 38, 0.95);
1895
+ color: var(--ui-text);
1896
+ font-size: 12px;
1897
+ user-select: none;
1898
+ cursor: move;
1899
+ border-bottom: 1px solid rgba(255, 255, 255, 0.05);
1900
+ }
1901
+
1902
+ .scene-panel-actions {
1903
+ display: flex;
1904
+ align-items: center;
1905
+ gap: 8px;
1906
+ }
1907
+
1908
+ .scene-panel-action {
1909
+ border: 1px solid var(--ui-border);
1910
+ border-radius: 6px;
1911
+ background: #1f2633;
1912
+ color: var(--ui-muted);
1913
+ font-size: 11px;
1914
+ padding: 4px 8px;
1915
+ cursor: pointer;
1916
+ }
1917
+
1918
+ .scene-panel-action:hover {
1919
+ border-color: rgba(255, 159, 67, 0.6);
1920
+ color: var(--ui-text);
1921
+ }
1922
+
1923
+ .scene-panel-toggle {
1924
+ border: none;
1925
+ background: transparent;
1926
+ color: var(--ui-muted);
1927
+ font-size: 14px;
1928
+ cursor: pointer;
1929
+ padding: 4px 8px;
1930
+ border-radius: 6px;
1931
+ transition: all var(--ui-duration-fast) var(--ui-ease);
1932
+ }
1933
+
1934
+ /* Terracotta hover for close button */
1935
+ .scene-panel-toggle:hover {
1936
+ background: rgba(227, 138, 90, 0.15);
1937
+ color: var(--ui-terracotta);
1938
+ }
1939
+
1940
+ .panel-title {
1941
+ display: flex;
1942
+ align-items: center;
1943
+ gap: 8px;
1944
+ }
1945
+
1946
+ .panel-pill {
1947
+ padding: 2px 8px;
1948
+ border-radius: 999px;
1949
+ background: rgba(61, 214, 198, 0.12);
1950
+ color: var(--ui-accent);
1951
+ font-size: 10px;
1952
+ text-transform: uppercase;
1953
+ letter-spacing: 0.6px;
1954
+ }
1955
+
1956
+ .panel-accent-blue .panel-pill {
1957
+ background: rgba(111, 140, 255, 0.14);
1958
+ color: var(--ui-accent-3);
1959
+ }
1960
+
1961
+ .panel-accent-amber .panel-pill {
1962
+ background: rgba(255, 159, 67, 0.16);
1963
+ color: var(--ui-accent-2);
1964
+ }
1965
+
1966
+ .panel-accent-violet .panel-pill {
1967
+ background: rgba(191, 126, 255, 0.18);
1968
+ color: #d6b7ff;
1969
+ }
1970
+
1971
+ .panel-title-text {
1972
+ font-weight: 700;
1973
+ font-size: 12px;
1974
+ letter-spacing: 0.4px;
1975
+ }
1976
+
1977
+ .panel-accent-teal {
1978
+ border-color: rgba(61, 214, 198, 0.35);
1979
+ }
1980
+
1981
+ .panel-accent-blue {
1982
+ border-color: rgba(111, 140, 255, 0.35);
1983
+ }
1984
+
1985
+ .panel-accent-amber {
1986
+ border-color: rgba(255, 159, 67, 0.4);
1987
+ }
1988
+
1989
+ .panel-accent-violet {
1990
+ border-color: rgba(191, 126, 255, 0.35);
1991
+ }
1992
+
1993
+ .scene-panel-body {
1994
+ padding: 12px 14px 16px;
1995
+ overflow-y: auto;
1996
+ max-height: calc(78vh - 44px);
1997
+ }
1998
+
1999
+ .scene-panel.collapsed .scene-panel-body {
2000
+ display: none;
2001
+ }
2002
+
2003
+
2004
+ /* ========== 04-device-frame.css ========== */
2005
+ /* 04 Device Frame */
2006
+ /* Auto-generated from preview.css */
2007
+ /* Updated to HANDLER Design System v1.0 */
2008
+
2009
+ /* Device Frame Styling - The "Phone" Look */
2010
+ .device-frame {
2011
+ box-shadow: 0 0 0 1px rgba(30, 30, 30, 0.08), 0 8px 20px rgba(30, 30, 30, 0.15);
2012
+ border-radius: 14px;
2013
+ background-color: #000;
2014
+ transition: width var(--ui-duration-normal) var(--ui-ease), height var(--ui-duration-normal) var(--ui-ease);
2015
+ overflow: hidden;
2016
+ position: relative;
2017
+ }
2018
+
2019
+ /* Frame Wrapper */
2020
+ .frame-wrapper {
2021
+ display: flex;
2022
+ justify-content: center;
2023
+ align-items: center;
2024
+ transform-origin: center center;
2025
+ transition: transform var(--ui-duration-normal) cubic-bezier(0.25, 0.46, 0.45, 0.94);
2026
+ filter: drop-shadow(0 6px 16px rgba(30, 30, 30, 0.12));
2027
+ }
2028
+
2029
+ /* ========== 05-console.css ========== */
2030
+ /* 05 Console */
2031
+ /* Auto-generated from preview.css */
2032
+ /* Updated to HANDLER Design System v1.0 */
2033
+
2034
+ /* Hide less important buttons on very small screens */
2035
+ @media (max-width: 480px) {
2036
+
2037
+ #refresh-btn,
2038
+ #debug-toggle,
2039
+ #console-toggle {
2040
+ display: none;
2041
+ }
2042
+ }
2043
+
2044
+ /* Console Panel - Bottom Drawer Style */
2045
+ .console-panel {
2046
+ position: absolute;
2047
+ bottom: 0;
2048
+ left: 0;
2049
+ right: 0;
2050
+ height: 200px;
2051
+ background: var(--ui-surface);
2052
+ border-top: 1px solid var(--ui-border);
2053
+ display: flex;
2054
+ flex-direction: column;
2055
+ transition: opacity var(--ui-duration-normal) var(--ui-ease), visibility var(--ui-duration-normal) var(--ui-ease);
2056
+ z-index: 100;
2057
+ }
2058
+
2059
+ .console-panel.closed {
2060
+ opacity: 0;
2061
+ visibility: hidden;
2062
+ pointer-events: none;
2063
+ }
2064
+
2065
+ .console-msg {
2066
+ font-family: 'Consolas', 'Monaco', monospace;
2067
+ font-size: 12px;
2068
+ padding: 4px 8px;
2069
+ border-bottom: 1px solid var(--ui-border);
2070
+ }
2071
+
2072
+ .console-msg.type-error {
2073
+ color: var(--ui-danger);
2074
+ background: rgba(217, 117, 88, 0.1);
2075
+ }
2076
+
2077
+ .console-msg.type-warn {
2078
+ color: var(--ui-accent-2);
2079
+ }
2080
+
2081
+ /* Console Toggle */
2082
+ .console-toggle {
2083
+ position: relative;
2084
+ }
2085
+
2086
+ .console-badge {
2087
+ background-color: var(--ui-danger);
2088
+ color: var(--ui-surface);
2089
+ font-size: 10px;
2090
+ padding: 2px 4px;
2091
+ border-radius: 8px;
2092
+ margin-left: 4px;
2093
+ display: none;
2094
+ }
2095
+
2096
+ .console-badge.has-errors {
2097
+ display: inline-block;
2098
+ }
2099
+
2100
+ /* Console Panel Elements */
2101
+ .console-header {
2102
+ display: flex;
2103
+ align-items: center;
2104
+ justify-content: space-between;
2105
+ padding: 8px 12px;
2106
+ border-bottom: 1px solid var(--ui-border);
2107
+ background-color: var(--ui-bg-2);
2108
+ }
2109
+
2110
+ .console-title {
2111
+ font-weight: 600;
2112
+ font-size: 14px;
2113
+ color: var(--ui-text);
2114
+ }
2115
+
2116
+ .console-actions {
2117
+ display: flex;
2118
+ gap: 8px;
2119
+ }
2120
+
2121
+ .console-action-btn {
2122
+ background-color: transparent;
2123
+ color: var(--ui-muted);
2124
+ border: 1px solid var(--ui-border);
2125
+ border-radius: 3px;
2126
+ padding: 4px 8px;
2127
+ font-size: 11px;
2128
+ cursor: pointer;
2129
+ transition: background var(--ui-duration-fast) var(--ui-ease), color var(--ui-duration-fast) var(--ui-ease);
2130
+ }
2131
+
2132
+ .console-action-btn:hover {
2133
+ background-color: var(--ui-bg);
2134
+ color: var(--ui-text);
2135
+ }
2136
+
2137
+ .console-messages {
2138
+ flex: 1;
2139
+ overflow-y: auto;
2140
+ padding: 4px 0;
2141
+ }
2142
+
2143
+ .console-msg {
2144
+ font-family: 'Consolas', 'Monaco', monospace;
2145
+ font-size: 12px;
2146
+ padding: 4px 12px;
2147
+ border-bottom: 1px solid var(--ui-border);
2148
+ word-wrap: break-word;
2149
+ }
2150
+
2151
+ .console-msg .time {
2152
+ color: var(--ui-muted);
2153
+ margin-right: 8px;
2154
+ font-size: 11px;
2155
+ }
2156
+
2157
+ .console-msg.type-log {
2158
+ color: var(--ui-text);
2159
+ }
2160
+
2161
+ .console-msg.type-info {
2162
+ color: var(--ui-accent);
2163
+ }
2164
+
2165
+ .console-msg.type-error {
2166
+ color: var(--ui-danger);
2167
+ background: rgba(217, 117, 88, 0.1);
2168
+ }
2169
+
2170
+ .console-msg.type-warn {
2171
+ color: var(--ui-accent-2);
2172
+ background: rgba(201, 162, 140, 0.1);
2173
+ }
2174
+
2175
+ /* ========== 06-debug-overlay.css ========== */
2176
+ /* 06 Debug Overlay */
2177
+ /* Auto-generated from preview.css */
2178
+ /* Updated to HANDLER Design System v1.0 */
2179
+
2180
+ /* Debug Workbench */
2181
+ .debug-workbench {
2182
+ position: absolute;
2183
+ width: 350px;
2184
+ height: 600px;
2185
+ min-width: 250px;
2186
+ min-height: 200px;
2187
+ right: 16px;
2188
+ top: 72px;
2189
+ background: var(--ui-surface);
2190
+ border: 1px solid var(--ui-border);
2191
+ border-radius: 14px;
2192
+ box-shadow: var(--ui-shadow);
2193
+ pointer-events: auto;
2194
+ display: flex;
2195
+ flex-direction: column;
2196
+ overflow: hidden;
2197
+ z-index: 1000;
2198
+ }
2199
+
2200
+ .workbench-header {
2201
+ display: flex;
2202
+ align-items: center;
2203
+ justify-content: space-between;
2204
+ padding: var(--space-sm) var(--space-md);
2205
+ background-color: var(--ui-bg-2);
2206
+ border-bottom: 1px solid var(--ui-border);
2207
+ cursor: move;
2208
+ flex-shrink: 0;
2209
+ }
2210
+
2211
+ .workbench-tabs {
2212
+ display: flex;
2213
+ background: var(--ui-bg);
2214
+ padding: var(--space-xs);
2215
+ gap: var(--space-xs);
2216
+ border-bottom: 1px solid var(--ui-border);
2217
+ flex-shrink: 0;
2218
+ overflow-x: auto;
2219
+ }
2220
+
2221
+ .workbench-tab {
2222
+ flex: 1;
2223
+ padding: 8px 12px;
2224
+ font-size: 11px;
2225
+ font-weight: var(--font-weight-semibold);
2226
+ color: var(--ui-muted);
2227
+ background: transparent;
2228
+ border: none;
2229
+ border-radius: 6px;
2230
+ cursor: pointer;
2231
+ white-space: nowrap;
2232
+ transition: all var(--ui-duration-fast) var(--ui-ease);
2233
+ text-align: center;
2234
+ }
2235
+
2236
+ .workbench-tab:hover {
2237
+ background: var(--ui-surface-2);
2238
+ color: var(--ui-text);
2239
+ }
2240
+
2241
+ /* Terracotta Active Tab - Main Site Style */
2242
+ .workbench-tab.active {
2243
+ background: var(--ui-terracotta);
2244
+ color: var(--ui-text-white);
2245
+ font-weight: var(--font-weight-semibold);
2246
+ }
2247
+
2248
+ .workbench-content {
2249
+ flex: 1;
2250
+ overflow-y: auto;
2251
+ padding: var(--space-md);
2252
+ }
2253
+
2254
+ .workbench-tab-panel {
2255
+ display: none;
2256
+ }
2257
+
2258
+ .workbench-tab-panel.active {
2259
+ display: block;
2260
+ }
2261
+
2262
+ .workbench-resize-handle {
2263
+ position: absolute;
2264
+ bottom: 0;
2265
+ right: 0;
2266
+ width: 16px;
2267
+ height: 16px;
2268
+ cursor: nwse-resize;
2269
+ background: linear-gradient(135deg, transparent 50%, var(--ui-border) 50%, var(--ui-border) 75%, transparent 75%, transparent 85%, var(--ui-border) 85%);
2270
+ z-index: 10;
2271
+ }
2272
+
2273
+
2274
+ /* ========== 07-panels.css ========== */
2275
+ /* 07 Panels */
2276
+ /* Auto-generated from preview.css */
2277
+ /* Updated to HANDLER Design System v1.0 */
2278
+
2279
+ /* Text preview snippet */
2280
+ .scene-object-text-preview {
2281
+ font-size: 10px;
2282
+ color: var(--ui-muted);
2283
+ font-style: italic;
2284
+ max-width: 80px;
2285
+ overflow: hidden;
2286
+ text-overflow: ellipsis;
2287
+ white-space: nowrap;
2288
+ margin-left: 4px;
2289
+ }
2290
+
2291
+ .override-status {
2292
+ margin-bottom: 12px;
2293
+ padding: 6px 10px;
2294
+ border-radius: 8px;
2295
+ background: rgba(255, 255, 255, 0.04);
2296
+ border: 1px solid rgba(255, 255, 255, 0.08);
2297
+ }
2298
+
2299
+ .override-status[data-state="diff"] {
2300
+ color: #ffd36b;
2301
+ border-color: rgba(255, 211, 107, 0.4);
2302
+ }
2303
+
2304
+ .override-status[data-state="match"] {
2305
+ color: #9fe7c5;
2306
+ border-color: rgba(159, 231, 197, 0.4);
2307
+ }
2308
+
2309
+ .override-status[data-state="saved"] {
2310
+ color: #9fc4ff;
2311
+ border-color: rgba(159, 196, 255, 0.35);
2312
+ }
2313
+
2314
+ .debug-header {
2315
+ display: flex;
2316
+ align-items: center;
2317
+ justify-content: space-between;
2318
+ padding: 12px 16px;
2319
+ border-bottom: 1px solid #444;
2320
+ background-color: #252525;
2321
+ border-radius: 8px 8px 0 0;
2322
+ cursor: move;
2323
+ user-select: none;
2324
+ }
2325
+
2326
+ .debug-tabs {
2327
+ display: flex;
2328
+ gap: 6px;
2329
+ padding: 8px 12px;
2330
+ border-bottom: 1px solid #333;
2331
+ background-color: #1f1f1f;
2332
+ }
2333
+
2334
+ .debug-tab {
2335
+ flex: 1;
2336
+ border: 1px solid #444;
2337
+ border-radius: 6px;
2338
+ background-color: #262626;
2339
+ color: #bfc3c7;
2340
+ font-size: 12px;
2341
+ padding: 6px 10px;
2342
+ cursor: pointer;
2343
+ transition: all var(--ui-duration-fast) var(--ui-ease);
2344
+ }
2345
+
2346
+ .debug-tab.active {
2347
+ background-color: #323232;
2348
+ color: var(--ui-text);
2349
+ border-color: #ffb43b;
2350
+ box-shadow: inset 0 0 0 1px rgba(255, 180, 59, 0.35);
2351
+ }
2352
+
2353
+ .debug-hint {
2354
+ font-size: 11px;
2355
+ color: #9aa0a6;
2356
+ margin-bottom: 10px;
2357
+ }
2358
+
2359
+ .debug-tab-panel {
2360
+ display: none;
2361
+ }
2362
+
2363
+ .debug-tab-panel.active {
2364
+ display: block;
2365
+ }
2366
+
2367
+ .debug-collapsible {
2368
+ border: 1px solid rgba(255, 255, 255, 0.08);
2369
+ border-radius: 10px;
2370
+ background-color: rgba(21, 26, 36, 0.85);
2371
+ overflow: hidden;
2372
+ margin-bottom: 12px;
2373
+ }
2374
+
2375
+ .debug-collapsible-header {
2376
+ width: 100%;
2377
+ display: flex;
2378
+ align-items: center;
2379
+ justify-content: space-between;
2380
+ gap: 12px;
2381
+ padding: 10px 12px;
2382
+ background-color: rgba(24, 30, 42, 0.9);
2383
+ border: none;
2384
+ color: var(--ui-text);
2385
+ font-size: 12px;
2386
+ cursor: pointer;
2387
+ }
2388
+
2389
+ .debug-collapsible-body {
2390
+ padding: 10px 12px;
2391
+ }
2392
+
2393
+ .debug-collapsible-icon {
2394
+ transition: transform var(--ui-duration-fast) var(--ui-ease);
2395
+ }
2396
+
2397
+ .debug-collapsible.collapsed .debug-collapsible-body {
2398
+ display: none;
2399
+ }
2400
+
2401
+ .debug-collapsible.collapsed .debug-collapsible-icon {
2402
+ transform: rotate(-90deg);
2403
+ }
2404
+
2405
+ .debug-nudge.hidden {
2406
+ display: none;
2407
+ }
2408
+
2409
+ .debug-arrow-pad {
2410
+ display: grid;
2411
+ grid-template-columns: repeat(3, 36px);
2412
+ grid-auto-rows: 32px;
2413
+ gap: 6px;
2414
+ justify-content: center;
2415
+ margin-top: 8px;
2416
+ }
2417
+
2418
+ .debug-arrow-btn {
2419
+ border: 1px solid #444;
2420
+ border-radius: 6px;
2421
+ background-color: #2b2b2b;
2422
+ color: #e7e7e7;
2423
+ font-size: 14px;
2424
+ cursor: pointer;
2425
+ transition: all 0.15s var(--ui-ease);
2426
+ }
2427
+
2428
+ .debug-arrow-btn:hover {
2429
+ border-color: #ffb43b;
2430
+ color: var(--ui-text);
2431
+ }
2432
+
2433
+ .debug-arrow-btn:active {
2434
+ transform: translateY(1px);
2435
+ }
2436
+
2437
+ .debug-arrow-btn[data-nudge="up"] {
2438
+ grid-column: 2;
2439
+ }
2440
+
2441
+ .debug-arrow-btn[data-nudge="left"] {
2442
+ grid-column: 1;
2443
+ }
2444
+
2445
+ .debug-arrow-btn[data-nudge="down"] {
2446
+ grid-column: 2;
2447
+ }
2448
+
2449
+ .debug-arrow-btn[data-nudge="right"] {
2450
+ grid-column: 3;
2451
+ }
2452
+
2453
+ .debug-info-grid {
2454
+ display: flex;
2455
+ flex-direction: column;
2456
+ gap: 8px;
2457
+ padding: 8px;
2458
+ border-radius: 6px;
2459
+ background-color: rgba(25, 30, 40, 0.8);
2460
+ border: 1px solid rgba(255, 255, 255, 0.08);
2461
+ }
2462
+
2463
+ .debug-info-row {
2464
+ display: flex;
2465
+ align-items: center;
2466
+ justify-content: space-between;
2467
+ gap: 12px;
2468
+ font-size: 11px;
2469
+ }
2470
+
2471
+ .debug-info-label {
2472
+ color: #9aa0a6;
2473
+ }
2474
+
2475
+ .debug-info-value {
2476
+ color: #f1f3f5;
2477
+ font-weight: 600;
2478
+ }
2479
+
2480
+ .debug-title {
2481
+ font-weight: 600;
2482
+ font-size: 14px;
2483
+ color: var(--ui-text);
2484
+ }
2485
+
2486
+ .debug-actions {
2487
+ display: flex;
2488
+ gap: 8px;
2489
+ }
2490
+
2491
+ .debug-action-btn {
2492
+ background-color: transparent;
2493
+ color: #ccc;
2494
+ border: 1px solid #555;
2495
+ border-radius: 3px;
2496
+ padding: 4px 8px;
2497
+ font-size: 11px;
2498
+ cursor: pointer;
2499
+ transition: all var(--ui-duration-fast) var(--ui-ease);
2500
+ }
2501
+
2502
+ /* Brand Vision Mapper */
2503
+ .brand-vision-panel .inspector-row {
2504
+ gap: 10px;
2505
+ flex-wrap: wrap;
2506
+ }
2507
+
2508
+ .brand-vision-panel .vision-flat-preview img {
2509
+ max-width: 140px;
2510
+ max-height: 140px;
2511
+ border-radius: 10px;
2512
+ border: 1px solid rgba(255, 255, 255, 0.1);
2513
+ }
2514
+
2515
+ .brand-vision-panel .vision-raw-block {
2516
+ margin-bottom: 12px;
2517
+ }
2518
+
2519
+ .brand-vision-panel .vision-raw-textarea {
2520
+ height: 120px;
2521
+ font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
2522
+ }
2523
+
2524
+ .brand-vision-panel .vision-mapping-item {
2525
+ padding: 10px;
2526
+ border: 1px solid var(--ui-border);
2527
+ border-radius: 12px;
2528
+ margin-bottom: 10px;
2529
+ background: var(--ui-surface-2);
2530
+ }
2531
+
2532
+ .brand-vision-panel .vision-mapping-header {
2533
+ display: flex;
2534
+ justify-content: space-between;
2535
+ gap: 10px;
2536
+ align-items: center;
2537
+ }
2538
+
2539
+ .brand-vision-panel .vision-mapping-object {
2540
+ font-weight: 700;
2541
+ font-size: 12px;
2542
+ color: var(--ui-text);
2543
+ }
2544
+
2545
+ .brand-vision-panel .vision-mapping-select {
2546
+ max-width: 140px;
2547
+ }
2548
+
2549
+ .brand-vision-panel .vision-mapping-prompt {
2550
+ height: 72px;
2551
+ }
2552
+
2553
+ .brand-vision-panel .vision-mapping-row {
2554
+ display: flex;
2555
+ gap: 10px;
2556
+ align-items: flex-start;
2557
+ margin-top: 10px;
2558
+ }
2559
+
2560
+ .brand-vision-panel .vision-mapping-current {
2561
+ flex: 1;
2562
+ min-width: 0;
2563
+ }
2564
+
2565
+ .brand-vision-panel .vision-mapping-preview {
2566
+ width: 110px;
2567
+ flex: 0 0 110px;
2568
+ }
2569
+
2570
+ .brand-vision-panel .vision-mapping-preview img {
2571
+ width: 110px;
2572
+ height: 80px;
2573
+ object-fit: cover;
2574
+ border-radius: 10px;
2575
+ border: 1px solid rgba(255, 255, 255, 0.1);
2576
+ background: rgba(0, 0, 0, 0.2);
2577
+ }
2578
+
2579
+ .brand-vision-panel .vision-mapping-actions {
2580
+ display: flex;
2581
+ gap: 8px;
2582
+ align-items: center;
2583
+ margin-top: 10px;
2584
+ }
2585
+
2586
+ .brand-vision-panel .vision-mapping-status {
2587
+ margin-left: auto;
2588
+ opacity: 0.9;
2589
+ }
2590
+
2591
+ .debug-action-btn:hover {
2592
+ background-color: #444;
2593
+ color: var(--ui-text);
2594
+ }
2595
+
2596
+ .debug-content {
2597
+ flex: 1;
2598
+ overflow-y: auto;
2599
+ padding: 12px 16px;
2600
+ }
2601
+
2602
+ .debug-section {
2603
+ margin-bottom: 20px;
2604
+ }
2605
+
2606
+ .panel-section {
2607
+ margin-bottom: 16px;
2608
+ padding-bottom: 12px;
2609
+ border-bottom: 1px solid rgba(255, 255, 255, 0.06);
2610
+ }
2611
+
2612
+ .panel-section:last-child {
2613
+ border-bottom: none;
2614
+ margin-bottom: 0;
2615
+ padding-bottom: 0;
2616
+ }
2617
+
2618
+ .panel-section-title {
2619
+ font-size: 11px;
2620
+ font-weight: 700;
2621
+ text-transform: uppercase;
2622
+ letter-spacing: 0.6px;
2623
+ color: var(--ui-muted);
2624
+ margin-bottom: 8px;
2625
+ }
2626
+
2627
+ .field-grid {
2628
+ display: grid;
2629
+ grid-template-columns: repeat(2, minmax(0, 1fr));
2630
+ gap: 10px;
2631
+ }
2632
+
2633
+ @media (max-width: 520px) {
2634
+ .field-grid {
2635
+ grid-template-columns: 1fr;
2636
+ }
2637
+ }
2638
+
2639
+ .debug-section-title {
2640
+ font-size: 12px;
2641
+ font-weight: 600;
2642
+ color: var(--ui-muted);
2643
+ text-transform: uppercase;
2644
+ letter-spacing: 0.5px;
2645
+ margin-bottom: 8px;
2646
+ border-bottom: 1px solid rgba(255, 255, 255, 0.08);
2647
+ padding-bottom: 4px;
2648
+ }
2649
+
2650
+ .debug-field {
2651
+ margin-bottom: 12px;
2652
+ }
2653
+
2654
+ .debug-field label {
2655
+ display: block;
2656
+ font-size: 11px;
2657
+ color: #aaa;
2658
+ margin-bottom: 4px;
2659
+ font-weight: 500;
2660
+ }
2661
+
2662
+ .debug-field input,
2663
+ .debug-field select {
2664
+ width: 100%;
2665
+ background-color: var(--ui-surface);
2666
+ color: var(--ui-text);
2667
+ border: 1px solid var(--ui-border);
2668
+ border-radius: 4px;
2669
+ padding: 6px 8px;
2670
+ font-size: 12px;
2671
+ font-family: "JetBrains Mono", "SF Mono", "Consolas", "Monaco", monospace;
2672
+ transition: border-color var(--ui-duration-fast) var(--ui-ease);
2673
+ }
2674
+
2675
+ .debug-field input:focus,
2676
+ .debug-field select:focus {
2677
+ outline: none;
2678
+ border-color: var(--ui-accent-3);
2679
+ box-shadow: 0 0 0 2px rgba(111, 140, 255, 0.2);
2680
+ }
2681
+
2682
+ .debug-field input[type="range"] {
2683
+ -webkit-appearance: none;
2684
+ appearance: none;
2685
+ height: 6px;
2686
+ background: #555;
2687
+ border-radius: 3px;
2688
+ outline: none;
2689
+ }
2690
+
2691
+ .debug-field input[type="range"]::-webkit-slider-thumb {
2692
+ -webkit-appearance: none;
2693
+ appearance: none;
2694
+ width: 16px;
2695
+ height: 16px;
2696
+ border-radius: 50%;
2697
+ background: var(--ui-accent-3);
2698
+ cursor: pointer;
2699
+ }
2700
+
2701
+ .debug-field input[type="range"]::-moz-range-thumb {
2702
+ width: 16px;
2703
+ height: 16px;
2704
+ border-radius: 50%;
2705
+ background: var(--ui-accent-3);
2706
+ cursor: pointer;
2707
+ border: none;
2708
+ }
2709
+
2710
+ .debug-field input[type="checkbox"] {
2711
+ width: auto;
2712
+ margin-right: 8px;
2713
+ }
2714
+
2715
+ .debug-field.checkbox-field {
2716
+ display: flex;
2717
+ align-items: center;
2718
+ gap: 8px;
2719
+ }
2720
+
2721
+ .debug-field.checkbox-field label {
2722
+ margin-bottom: 0;
2723
+ flex: 1;
2724
+ }
2725
+
2726
+ .debug-value-display {
2727
+ display: inline-block;
2728
+ margin-left: 8px;
2729
+ font-size: 11px;
2730
+ color: var(--ui-muted);
2731
+ font-family: "JetBrains Mono", "SF Mono", "Consolas", "Monaco", monospace;
2732
+ }
2733
+
2734
+ .debug-btn-group {
2735
+ display: flex;
2736
+ gap: 6px;
2737
+ margin-top: 8px;
2738
+ }
2739
+
2740
+ .debug-btn {
2741
+ flex: 1;
2742
+ background-color: #444;
2743
+ color: var(--ui-text);
2744
+ border: 1px solid #666;
2745
+ border-radius: 4px;
2746
+ padding: 6px 8px;
2747
+ font-size: 11px;
2748
+ cursor: pointer;
2749
+ transition: all var(--ui-duration-fast) var(--ui-ease);
2750
+ }
2751
+
2752
+ .debug-btn:hover {
2753
+ background-color: #555;
2754
+ border-color: var(--ui-muted);
2755
+ }
2756
+
2757
+ .debug-btn.primary {
2758
+ background-color: #2a5bd7;
2759
+ border-color: #2a5bd7;
2760
+ }
2761
+
2762
+ .debug-btn.primary:hover {
2763
+ background-color: #2147a7;
2764
+ border-color: #2147a7;
2765
+ }
2766
+
2767
+ .debug-btn.danger {
2768
+ background-color: #dc3545;
2769
+ border-color: #dc3545;
2770
+ }
2771
+
2772
+ .debug-btn.danger:hover {
2773
+ background-color: #c82333;
2774
+ border-color: #c82333;
2775
+ }
2776
+
2777
+ .debug-btn.secondary {
2778
+ background-color: rgba(61, 214, 198, 0.1);
2779
+ border-color: rgba(61, 214, 198, 0.3);
2780
+ color: var(--ui-accent);
2781
+ }
2782
+
2783
+ .debug-btn.secondary:hover {
2784
+ background-color: rgba(61, 214, 198, 0.2);
2785
+ border-color: rgba(61, 214, 198, 0.4);
2786
+ }
2787
+
2788
+ /* -------------------------------------------------------------------------- */
2789
+ /* Workbench embedded panels */
2790
+ /* -------------------------------------------------------------------------- */
2791
+ /*
2792
+ Panels (like CustomizeSettingsPanel) are rendered inside the Workbench tab panels.
2793
+ The old override stripped ALL styling (border/background/shadow), which made the
2794
+ embedded panels look unstyled / invisible.
2795
+
2796
+ Keep the key change (static positioning + full width), but preserve panel visuals.
2797
+ */
2798
+ .workbench-content .scene-panel {
2799
+ position: static;
2800
+ width: 100% !important;
2801
+ max-height: none !important;
2802
+
2803
+ /* Preserve “card” styling so embedded panels don't look unstyled */
2804
+ background: var(--ui-surface);
2805
+ border: 1px solid var(--ui-border);
2806
+ border-radius: 12px;
2807
+ box-shadow: var(--ui-shadow);
2808
+ overflow: hidden;
2809
+ }
2810
+
2811
+ .workbench-content .scene-panel-header {
2812
+ display: none;
2813
+
2814
+ /* Hide individual panel headers */
2815
+ }
2816
+
2817
+ .workbench-content .scene-panel-body {
2818
+ max-height: none;
2819
+ padding: 12px;
2820
+ }
2821
+
2822
+ /* Resize handles don't make sense inside the workbench layout */
2823
+ .workbench-content .scene-panel .panel-resize-handle {
2824
+ display: none;
2825
+ }
2826
+
2827
+ /* Library Panel */
2828
+ .library-panel {
2829
+ border-color: rgba(61, 214, 198, 0.35);
2830
+ }
2831
+
2832
+ .library-grid {
2833
+ display: grid;
2834
+ grid-template-columns: repeat(auto-fill, minmax(80px, 1fr));
2835
+ gap: 8px;
2836
+ margin-top: 12px;
2837
+ }
2838
+
2839
+ .library-item {
2840
+ display: flex;
2841
+ flex-direction: column;
2842
+ align-items: center;
2843
+ gap: 4px;
2844
+ padding: 8px;
2845
+ border: 2px solid transparent;
2846
+ border-radius: 8px;
2847
+ cursor: pointer;
2848
+ transition: all var(--ui-duration-fast) var(--ui-ease);
2849
+ background: rgba(25, 30, 40, 0.8);
2850
+ }
2851
+
2852
+ .library-item:hover {
2853
+ border-color: rgba(61, 214, 198, 0.5);
2854
+ background: rgba(61, 214, 198, 0.1);
2855
+ }
2856
+
2857
+ .library-item.selected {
2858
+ border-color: rgba(61, 214, 198, 0.8);
2859
+ background: rgba(61, 214, 198, 0.15);
2860
+ box-shadow: 0 0 0 1px rgba(61, 214, 198, 0.4);
2861
+ }
2862
+
2863
+ .library-thumbnail {
2864
+ width: 60px;
2865
+ height: 40px;
2866
+ object-fit: cover;
2867
+ border-radius: 4px;
2868
+ border: 1px solid rgba(255, 255, 255, 0.1);
2869
+ }
2870
+
2871
+ .library-label {
2872
+ font-size: 11px;
2873
+ color: var(--ui-muted);
2874
+ text-align: center;
2875
+ word-break: break-all;
2876
+ }
2877
+
2878
+ .library-selected {
2879
+ font-size: 12px;
2880
+ color: var(--ui-text);
2881
+ margin: 12px 0;
2882
+ padding: 8px;
2883
+ background: rgba(25, 30, 40, 0.8);
2884
+ border-radius: 6px;
2885
+ border: 1px solid rgba(255, 255, 255, 0.08);
2886
+ }
2887
+
2888
+ .library-empty {
2889
+ font-size: 11px;
2890
+ color: var(--ui-muted);
2891
+ padding: 20px;
2892
+ text-align: center;
2893
+ grid-column: 1 / -1;
2894
+ }
2895
+
2896
+ /* ========================================
2897
+ Library Panel - Slot-Based UI
2898
+ ======================================== */
2899
+
2900
+ .library-panel {
2901
+ width: 340px;
2902
+ }
2903
+
2904
+ .library-subtitle {
2905
+ font-size: 11px;
2906
+ color: var(--ui-muted);
2907
+ margin-bottom: 12px;
2908
+ padding: 0 4px;
2909
+ }
2910
+
2911
+ .library-slots {
2912
+ display: flex;
2913
+ flex-direction: column;
2914
+ gap: 8px;
2915
+ }
2916
+
2917
+ .library-category {
2918
+ margin-bottom: 12px;
2919
+ }
2920
+
2921
+ .library-category-header {
2922
+ font-size: 11px;
2923
+ font-weight: 700;
2924
+ text-transform: uppercase;
2925
+ letter-spacing: 0.8px;
2926
+ color: var(--ui-accent);
2927
+ padding: 6px 8px;
2928
+ background: rgba(61, 214, 198, 0.08);
2929
+ border-radius: 6px;
2930
+ margin-bottom: 8px;
2931
+ }
2932
+
2933
+ .library-category-slots {
2934
+ display: flex;
2935
+ flex-direction: column;
2936
+ gap: 6px;
2937
+ }
2938
+
2939
+ /* Panel accent color */
2940
+ .panel-accent-purple {
2941
+ border-left: 3px solid #a855f7;
2942
+ }
2943
+
2944
+ /* ========================================
2945
+ Inspector Panel Styles
2946
+ ======================================== */
2947
+
2948
+ .inspector-panel {
2949
+ width: 340px;
2950
+ max-width: 90vw;
2951
+ }
2952
+
2953
+ .inspector-content {
2954
+ display: flex;
2955
+ flex-direction: column;
2956
+ gap: 12px;
2957
+ }
2958
+
2959
+ .inspector-empty {
2960
+ display: flex;
2961
+ flex-direction: column;
2962
+ align-items: center;
2963
+ justify-content: center;
2964
+ padding: 40px 20px;
2965
+ text-align: center;
2966
+ color: var(--ui-muted);
2967
+ }
2968
+
2969
+ .inspector-empty-icon {
2970
+ font-size: 48px;
2971
+ margin-bottom: 12px;
2972
+ opacity: 0.5;
2973
+ }
2974
+
2975
+ .inspector-empty-text {
2976
+ font-size: 13px;
2977
+ font-weight: 500;
2978
+ }
2979
+
2980
+ .inspector-header {
2981
+ padding: 12px;
2982
+ background: rgba(24, 30, 42, 0.9);
2983
+ border-radius: 8px;
2984
+ border: 1px solid rgba(191, 126, 255, 0.2);
2985
+ }
2986
+
2987
+ .inspector-object-name {
2988
+ font-size: 14px;
2989
+ font-weight: 700;
2990
+ color: var(--ui-text);
2991
+ margin-bottom: 4px;
2992
+ }
2993
+
2994
+ .inspector-object-category {
2995
+ font-size: 11px;
2996
+ color: var(--ui-muted);
2997
+ text-transform: uppercase;
2998
+ letter-spacing: 0.5px;
2999
+ }
3000
+
3001
+ .inspector-section {
3002
+ background: rgba(21, 26, 36, 0.85);
3003
+ border: 1px solid rgba(255, 255, 255, 0.06);
3004
+ border-radius: 8px;
3005
+ overflow: hidden;
3006
+ }
3007
+
3008
+ .inspector-section-header {
3009
+ display: flex;
3010
+ align-items: center;
3011
+ gap: 6px;
3012
+ padding: 6px 10px;
3013
+ background: rgba(24, 30, 42, 0.9);
3014
+ border-bottom: 1px solid rgba(255, 255, 255, 0.06);
3015
+ cursor: pointer;
3016
+ user-select: none;
3017
+ }
3018
+
3019
+ .inspector-section-icon {
3020
+ font-size: 16px;
3021
+ line-height: 1;
3022
+ }
3023
+
3024
+ .inspector-section-title {
3025
+ font-size: 12px;
3026
+ font-weight: 700;
3027
+ text-transform: uppercase;
3028
+ letter-spacing: 0.6px;
3029
+ color: var(--ui-text);
3030
+ }
3031
+
3032
+ .inspector-section-body {
3033
+ padding: 6px 8px;
3034
+ display: flex;
3035
+ flex-direction: column;
3036
+ gap: 4px;
3037
+ }
3038
+
3039
+ /* AI Tools Panel - Unified Suite */
3040
+ .ai-tools-panel {
3041
+ min-width: 420px;
3042
+ }
3043
+
3044
+ .ai-tabs {
3045
+ display: flex;
3046
+ background: rgba(0, 0, 0, 0.2);
3047
+ border-radius: 8px;
3048
+ padding: 4px;
3049
+ margin-bottom: 16px;
3050
+ gap: 4px;
3051
+ }
3052
+
3053
+ .ai-tab-btn {
3054
+ flex: 1;
3055
+ background: transparent;
3056
+ border: none;
3057
+ color: #a0a0a0;
3058
+ padding: 8px;
3059
+ border-radius: 6px;
3060
+ font-size: 13px;
3061
+ cursor: pointer;
3062
+ transition: all var(--ui-duration-fast);
3063
+ display: flex;
3064
+ align-items: center;
3065
+ justify-content: center;
3066
+ gap: 6px;
3067
+ }
3068
+
3069
+ .ai-tab-btn:hover {
3070
+ background: rgba(255, 255, 255, 0.05);
3071
+ }
3072
+
3073
+ .ai-tab-btn.active {
3074
+ background: #6d5dfc;
3075
+ color: white;
3076
+ box-shadow: 0 4px 12px rgba(109, 93, 252, 0.3);
3077
+ }
3078
+
3079
+ .ai-tab-content {
3080
+ display: none;
3081
+ }
3082
+
3083
+ .ai-tab-content.active {
3084
+ display: block;
3085
+ }
3086
+
3087
+ .ai-palette {
3088
+ display: flex;
3089
+ flex-wrap: wrap;
3090
+ gap: 6px;
3091
+ margin-top: 10px;
3092
+ }
3093
+
3094
+ .ai-swatch {
3095
+ width: 24px;
3096
+ height: 24px;
3097
+ border-radius: 4px;
3098
+ border: 1px solid rgba(255, 255, 255, 0.1);
3099
+ cursor: help;
3100
+ }
3101
+
3102
+ .ai-asset-list,
3103
+ .ai-object-list {
3104
+ margin-top: 12px;
3105
+ max-height: 400px;
3106
+ overflow-y: auto;
3107
+ padding-right: 4px;
3108
+ }
3109
+
3110
+ .ai-batch-item,
3111
+ .ai-obj-item {
3112
+ background: rgba(255, 255, 255, 0.03);
3113
+ border-radius: 8px;
3114
+ padding: 10px;
3115
+ margin-bottom: 8px;
3116
+ border: 1px solid rgba(255, 255, 255, 0.05);
3117
+ }
3118
+
3119
+ .ai-item-row {
3120
+ display: flex;
3121
+ align-items: center;
3122
+ gap: 10px;
3123
+ }
3124
+
3125
+ .ai-item-label,
3126
+ .ai-obj-title {
3127
+ flex: 1;
3128
+ font-weight: 500;
3129
+ color: #eee;
3130
+ font-size: 13px;
3131
+ white-space: nowrap;
3132
+ overflow: hidden;
3133
+ text-overflow: ellipsis;
3134
+ }
3135
+
3136
+ .ai-item-status,
3137
+ .ai-obj-status {
3138
+ font-size: 11px;
3139
+ color: var(--ui-muted);
3140
+ background: rgba(0, 0, 0, 0.3);
3141
+ padding: 2px 6px;
3142
+ border-radius: 4px;
3143
+ }
3144
+
3145
+ /* AI Creative Suite - Premium Styles */
3146
+ .ai-tools-panel {
3147
+ display: flex;
3148
+ flex-direction: column;
3149
+ height: 100%;
3150
+ }
3151
+
3152
+ .ai-tabs {
3153
+ display: flex;
3154
+ gap: 2px;
3155
+ background: rgba(0, 0, 0, 0.3);
3156
+ padding: 4px;
3157
+ border-radius: 12px;
3158
+ margin-bottom: 20px;
3159
+ }
3160
+
3161
+ .ai-tab-btn {
3162
+ flex: 1;
3163
+ padding: 10px 14px;
3164
+ border: none;
3165
+ background: transparent;
3166
+ color: var(--ui-muted);
3167
+ font-size: 12px;
3168
+ font-weight: 600;
3169
+ cursor: pointer;
3170
+ border-radius: 8px;
3171
+ transition: all var(--ui-duration-fast);
3172
+ display: flex;
3173
+ align-items: center;
3174
+ justify-content: center;
3175
+ gap: 8px;
3176
+ }
3177
+
3178
+ .ai-tab-btn:hover {
3179
+ background: rgba(255, 255, 255, 0.05);
3180
+ color: var(--ui-text);
3181
+ }
3182
+
3183
+ .ai-tab-btn.active {
3184
+ background: #6d5dfc;
3185
+ color: var(--ui-text);
3186
+ box-shadow: 0 4px 12px rgba(109, 93, 252, 0.3);
3187
+ }
3188
+
3189
+ .ai-tab-content {
3190
+ display: none;
3191
+ flex: 1;
3192
+ overflow-y: auto;
3193
+ padding-right: 4px;
3194
+ }
3195
+
3196
+ .ai-tab-content.active {
3197
+ display: block;
3198
+ }
3199
+
3200
+ .panel-section {
3201
+ background: rgba(255, 255, 255, 0.03);
3202
+ border-radius: 12px;
3203
+ padding: 16px;
3204
+ margin-bottom: 16px;
3205
+ border: 1px solid rgba(255, 255, 255, 0.05);
3206
+ }
3207
+
3208
+ .panel-section-title {
3209
+ font-size: 11px;
3210
+ font-weight: 800;
3211
+ text-transform: uppercase;
3212
+ color: #6d5dfc;
3213
+ letter-spacing: 0.05em;
3214
+ margin-bottom: 16px;
3215
+ display: flex;
3216
+ align-items: center;
3217
+ gap: 8px;
3218
+ }
3219
+
3220
+ .inspector-label {
3221
+ display: block;
3222
+ font-size: 12px;
3223
+ font-weight: 600;
3224
+ color: #aaa;
3225
+ margin-bottom: 8px;
3226
+ }
3227
+
3228
+ .inspector-input,
3229
+ .inspector-textarea {
3230
+ width: 100%;
3231
+ background: rgba(0, 0, 0, 0.4);
3232
+ border: 1px solid rgba(255, 255, 255, 0.1);
3233
+ border-radius: 8px;
3234
+ padding: 10px 12px;
3235
+ color: var(--ui-text);
3236
+ font-family: inherit;
3237
+ font-size: 13px;
3238
+ margin-bottom: 16px;
3239
+ transition: border-color var(--ui-duration-fast);
3240
+ }
3241
+
3242
+ .inspector-input:focus,
3243
+ .inspector-textarea:focus {
3244
+ outline: none;
3245
+ border-color: #6d5dfc;
3246
+ background: rgba(0, 0, 0, 0.5);
3247
+ }
3248
+
3249
+ .inspector-textarea {
3250
+ min-height: 80px;
3251
+ resize: vertical;
3252
+ }
3253
+
3254
+ .ai-swatch {
3255
+ width: 32px;
3256
+ height: 32px;
3257
+ border-radius: 6px;
3258
+ border: 2px solid rgba(255, 255, 255, 0.1);
3259
+ cursor: pointer;
3260
+ transition: transform var(--ui-duration-fast);
3261
+ }
3262
+
3263
+ .ai-batch-item,
3264
+ .ai-obj-item {
3265
+ background: rgba(0, 0, 0, 0.2);
3266
+ border-radius: 8px;
3267
+ padding: 10px 12px;
3268
+ border: 1px solid rgba(255, 255, 255, 0.05);
3269
+ margin-bottom: 8px;
3270
+ }
3271
+
3272
+ .ai-item-row {
3273
+ display: flex;
3274
+ align-items: center;
3275
+ gap: 10px;
3276
+ }
3277
+
3278
+ .ai-item-status {
3279
+ font-size: 10px;
3280
+ padding: 2px 8px;
3281
+ border-radius: 4px;
3282
+ background: rgba(255, 255, 255, 0.05);
3283
+ color: var(--ui-muted);
3284
+ font-weight: 700;
3285
+ text-transform: uppercase;
3286
+ }
3287
+
3288
+ /* Config Persistence Panel - Enhanced UI */
3289
+ .config-persistence-panel {
3290
+ display: flex;
3291
+ flex-direction: column;
3292
+ height: 100%;
3293
+ gap: 16px;
3294
+ padding: 16px;
3295
+ color: var(--ui-text);
3296
+ box-sizing: border-box;
3297
+ }
3298
+
3299
+ .persistence-status-bar {
3300
+ display: flex;
3301
+ flex-direction: column;
3302
+ gap: 4px;
3303
+ padding: 12px;
3304
+ border-radius: 10px;
3305
+ background: rgba(30, 35, 45, 0.4);
3306
+ border: 1px solid var(--ui-border);
3307
+ }
3308
+
3309
+ .persistence-status-bar.has-changes {
3310
+ background: rgba(255, 159, 67, 0.1);
3311
+ border-color: rgba(255, 159, 67, 0.3);
3312
+ }
3313
+
3314
+ .persistence-status-bar.no-changes {
3315
+ background: rgba(61, 214, 198, 0.05);
3316
+ border-color: rgba(61, 214, 198, 0.2);
3317
+ }
3318
+
3319
+ .status-box {
3320
+ display: flex;
3321
+ align-items: center;
3322
+ gap: 10px;
3323
+ }
3324
+
3325
+ .status-badge {
3326
+ padding: 2px 8px;
3327
+ border-radius: 999px;
3328
+ font-size: 10px;
3329
+ font-weight: 800;
3330
+ letter-spacing: 0.05em;
3331
+ background: var(--ui-accent-2);
3332
+ color: #000;
3333
+ }
3334
+
3335
+ .status-badge.success {
3336
+ background: var(--ui-accent);
3337
+ }
3338
+
3339
+ .status-text {
3340
+ font-size: 13px;
3341
+ font-weight: 600;
3342
+ }
3343
+
3344
+ .status-action-hint {
3345
+ font-size: 11px;
3346
+ color: var(--ui-muted);
3347
+ margin-top: 2px;
3348
+ }
3349
+
3350
+ .persistence-main-actions {
3351
+ display: flex;
3352
+ gap: 8px;
3353
+ }
3354
+
3355
+ .persistence-btn.primary-action {
3356
+ flex: 1;
3357
+ padding: 12px;
3358
+ background: linear-gradient(135deg, var(--ui-accent), #2eb0a3);
3359
+ color: #000;
3360
+ border: none;
3361
+ border-radius: 10px;
3362
+ font-weight: 800;
3363
+ font-size: 11px;
3364
+ letter-spacing: 0.03em;
3365
+ cursor: pointer;
3366
+ box-shadow: 0 4px 15px rgba(61, 214, 198, 0.25);
3367
+ transition: all var(--ui-duration-fast) var(--ui-ease);
3368
+ }
3369
+
3370
+ .persistence-btn.primary-action:hover:not(:disabled) {
3371
+ transform: translateY(-2px);
3372
+ box-shadow: 0 6px 20px rgba(61, 214, 198, 0.35);
3373
+ }
3374
+
3375
+ .persistence-btn.primary-action:active:not(:disabled) {
3376
+ transform: translateY(0);
3377
+ }
3378
+
3379
+ .persistence-btn.primary-action:disabled {
3380
+ background: var(--ui-border);
3381
+ color: var(--ui-muted);
3382
+ box-shadow: none;
3383
+ cursor: not-allowed;
3384
+ filter: grayscale(1);
3385
+ opacity: 0.5;
3386
+ }
3387
+
3388
+
3389
+ /* ========== 08-inspector.css ========== */
3390
+ /* 08 Inspector */
3391
+ /* Auto-generated from preview.css */
3392
+ /* Updated to HANDLER Design System v1.0 */
3393
+
3394
+ /* Config Editor */
3395
+ .config-editor {
3396
+ border: 1px solid rgba(255, 255, 255, 0.08);
3397
+ border-radius: 10px;
3398
+ padding: 12px;
3399
+ margin-top: 8px;
3400
+ background-color: rgba(25, 30, 40, 0.85);
3401
+ }
3402
+
3403
+ .debug-select {
3404
+ width: 100%;
3405
+ background-color: var(--ui-surface);
3406
+ color: var(--ui-text);
3407
+ border: 1px solid var(--ui-border);
3408
+ border-radius: 4px;
3409
+ padding: 6px 8px;
3410
+ font-size: 11px;
3411
+ }
3412
+
3413
+ .debug-select:focus {
3414
+ outline: none;
3415
+ border-color: var(--ui-accent-3);
3416
+ box-shadow: 0 0 0 2px rgba(111, 140, 255, 0.2);
3417
+ }
3418
+
3419
+ .debug-select option {
3420
+ background-color: #333;
3421
+ color: var(--ui-text);
3422
+ }
3423
+
3424
+ /* Simple subsection with title and inline row of children */
3425
+ .inspector-subsection {
3426
+ display: flex;
3427
+ align-items: center;
3428
+ gap: 6px;
3429
+ }
3430
+
3431
+ .inspector-subsection-title {
3432
+ font-size: 9px;
3433
+ font-weight: 700;
3434
+ color: var(--ui-muted);
3435
+ text-transform: uppercase;
3436
+ min-width: 50px;
3437
+ }
3438
+
3439
+ .inspector-subsection-content {
3440
+ display: flex;
3441
+ gap: 4px;
3442
+ flex: 1;
3443
+ }
3444
+
3445
+ .inspector-footer {
3446
+ margin-top: 20px;
3447
+ padding: 16px 12px;
3448
+ border-top: 1px solid var(--ui-border);
3449
+ background: rgba(0, 0, 0, 0.1);
3450
+ }
3451
+
3452
+ .inspector-add-component {
3453
+ display: flex;
3454
+ gap: 8px;
3455
+ align-items: center;
3456
+ }
3457
+
3458
+ .inspector-component-select {
3459
+ flex: 1;
3460
+ background: var(--ui-surface);
3461
+ border: 1px solid var(--ui-border);
3462
+ color: var(--ui-text);
3463
+ padding: 6px 10px;
3464
+ border-radius: 6px;
3465
+ font-size: 12px;
3466
+ outline: none;
3467
+ }
3468
+
3469
+ .inspector-component-select:focus {
3470
+ border-color: var(--ui-accent-3);
3471
+ }
3472
+
3473
+ .inspector-property {
3474
+ display: flex;
3475
+ flex-direction: row;
3476
+ align-items: center;
3477
+ gap: 4px;
3478
+ }
3479
+
3480
+ .inspector-property-label {
3481
+ font-size: 10px;
3482
+ font-weight: 600;
3483
+ color: var(--ui-muted);
3484
+ text-transform: capitalize;
3485
+ width: 80px;
3486
+ flex-shrink: 0;
3487
+ }
3488
+
3489
+ .inspector-input {
3490
+ flex: 1;
3491
+ background: var(--ui-surface);
3492
+ color: var(--ui-text);
3493
+ border: 1px solid var(--ui-border);
3494
+ border-radius: 4px;
3495
+ padding: 4px 6px;
3496
+ font-size: 11px;
3497
+ font-family: 'JetBrains Mono', 'SF Mono', monospace;
3498
+ transition: border-color var(--ui-duration-fast) var(--ui-ease);
3499
+ }
3500
+
3501
+ .inspector-input:focus {
3502
+ outline: none;
3503
+ border-color: rgba(227, 138, 90, 0.7);
3504
+ box-shadow: 0 0 0 2px rgba(227, 138, 90, 0.18);
3505
+ }
3506
+
3507
+ .inspector-checkbox {
3508
+ margin-right: 8px;
3509
+ }
3510
+
3511
+ .inspector-property-boolean label {
3512
+ display: flex;
3513
+ align-items: center;
3514
+ cursor: pointer;
3515
+ font-size: 12px;
3516
+ color: var(--ui-text);
3517
+ }
3518
+
3519
+ .inspector-image-preview {
3520
+ width: 100%;
3521
+ max-height: 120px;
3522
+ border-radius: 6px;
3523
+ border: 1px solid var(--ui-border);
3524
+ background: var(--ui-surface-2);
3525
+ overflow: hidden;
3526
+ display: flex;
3527
+ align-items: center;
3528
+ justify-content: center;
3529
+ }
3530
+
3531
+ .inspector-image-preview img {
3532
+ max-width: 100%;
3533
+ max-height: 120px;
3534
+ object-fit: contain;
3535
+ }
3536
+
3537
+ .inspector-image-actions {
3538
+ display: flex;
3539
+ gap: 6px;
3540
+ }
3541
+
3542
+ .inspector-btn {
3543
+ flex: 1;
3544
+ background: var(--ui-bg-2);
3545
+ color: var(--ui-text);
3546
+ border: 1px solid var(--ui-border);
3547
+ border-radius: 6px;
3548
+ padding: 6px 10px;
3549
+ font-size: 11px;
3550
+ cursor: pointer;
3551
+ transition: all var(--ui-duration-fast) var(--ui-ease);
3552
+ }
3553
+
3554
+ .inspector-btn:hover {
3555
+ border-color: rgba(227, 138, 90, 0.55);
3556
+ background: rgba(227, 138, 90, 0.08);
3557
+ }
3558
+
3559
+ .inspector-btn.primary {
3560
+ background: var(--ui-terracotta);
3561
+ border-color: transparent;
3562
+ color: var(--ui-text-white);
3563
+ font-weight: 700;
3564
+ }
3565
+
3566
+ .inspector-btn.primary:hover {
3567
+ background: var(--ui-terracotta-hover);
3568
+ }
3569
+
3570
+ .inspector-btn:disabled {
3571
+ opacity: 0.55;
3572
+ cursor: not-allowed;
3573
+ background: rgba(212, 207, 200, 0.55);
3574
+ }
3575
+
3576
+ .inspector-btn-sm {
3577
+ padding: 5px 8px;
3578
+ font-size: 10px;
3579
+ }
3580
+
3581
+ .inspector-color-group {
3582
+ display: flex;
3583
+ gap: 8px;
3584
+ align-items: center;
3585
+ }
3586
+
3587
+ .inspector-color-picker {
3588
+ width: 40px;
3589
+ height: 32px;
3590
+ border: 1px solid var(--ui-border);
3591
+ border-radius: 6px;
3592
+ cursor: pointer;
3593
+ background: transparent;
3594
+ }
3595
+
3596
+ .inspector-color-text {
3597
+ flex: 1;
3598
+ }
3599
+
3600
+ .inspector-object-header {
3601
+ font-size: 11px;
3602
+ font-weight: 700;
3603
+ color: var(--ui-text);
3604
+ text-transform: uppercase;
3605
+ letter-spacing: 0.5px;
3606
+ margin-bottom: 8px;
3607
+ padding-bottom: 6px;
3608
+ border-bottom: 1px solid rgba(255, 255, 255, 0.08);
3609
+ }
3610
+
3611
+ .inspector-object-body {
3612
+ padding-left: 12px;
3613
+ border-left: 2px solid rgba(191, 126, 255, 0.2);
3614
+ display: flex;
3615
+ flex-direction: column;
3616
+ gap: 10px;
3617
+ }
3618
+
3619
+ /* Collapsible Sections */
3620
+ .inspector-section-header {
3621
+ cursor: pointer;
3622
+ user-select: none;
3623
+ }
3624
+
3625
+ .inspector-section-arrow {
3626
+ display: inline-block;
3627
+ margin-right: 6px;
3628
+ transition: transform var(--ui-duration-fast) var(--ui-ease);
3629
+ font-size: 10px;
3630
+ color: var(--ui-muted);
3631
+ }
3632
+
3633
+ .inspector-section.collapsed .inspector-section-arrow {
3634
+ transform: rotate(-90deg);
3635
+ }
3636
+
3637
+ .inspector-section.collapsed .inspector-section-body {
3638
+ display: none;
3639
+ }
3640
+
3641
+ /* Array Properties */
3642
+ .inspector-array-list {
3643
+ padding: 8px 10px;
3644
+ background: rgba(8, 10, 14, 0.4);
3645
+ border-radius: 6px;
3646
+ border: 1px solid rgba(255, 255, 255, 0.05);
3647
+ }
3648
+
3649
+ .inspector-array-item {
3650
+ font-size: 11px;
3651
+ color: var(--ui-text);
3652
+ padding: 4px 0;
3653
+ font-family: 'JetBrains Mono', monospace;
3654
+ }
3655
+
3656
+ .inspector-array-empty {
3657
+ font-size: 11px;
3658
+ color: var(--ui-muted);
3659
+ font-style: italic;
3660
+ padding: 6px 10px;
3661
+ }
3662
+
3663
+ /* Inspector Input Group & Action Buttons */
3664
+ .inspector-input-group {
3665
+ display: flex;
3666
+ gap: 8px;
3667
+ align-items: center;
3668
+ width: 100%;
3669
+ }
3670
+
3671
+ .inspector-input-group .inspector-input {
3672
+ flex: 1;
3673
+ margin-bottom: 0 !important;
3674
+ }
3675
+
3676
+ .inspector-input-actions {
3677
+ display: flex;
3678
+ gap: 4px;
3679
+ flex-shrink: 0;
3680
+ }
3681
+
3682
+ .inspector-btn-icon {
3683
+ background: rgba(255, 255, 255, 0.05);
3684
+ border: 1px solid rgba(255, 255, 255, 0.1);
3685
+ color: var(--ui-text);
3686
+ width: 28px;
3687
+ height: 28px;
3688
+ border-radius: 6px;
3689
+ display: flex;
3690
+ align-items: center;
3691
+ justify-content: center;
3692
+ cursor: pointer;
3693
+ font-size: 14px;
3694
+ transition: all var(--ui-duration-fast);
3695
+ padding: 0;
3696
+ }
3697
+
3698
+ .inspector-btn-icon:hover {
3699
+ background: rgba(109, 93, 252, 0.2);
3700
+ border-color: #6d5dfc;
3701
+ transform: translateY(-1px);
3702
+ }
3703
+
3704
+ .inspector-property-actions-row {
3705
+ margin-top: 6px;
3706
+ display: flex;
3707
+ justify-content: flex-end;
3708
+ }
3709
+
3710
+ .ai-simple-btn {
3711
+ width: 100%;
3712
+ justify-content: center;
3713
+ gap: 6px;
3714
+ font-weight: 600;
3715
+ background: linear-gradient(135deg, rgba(82, 196, 26, 0.2), rgba(111, 140, 255, 0.2)) !important;
3716
+ border: 1px solid rgba(82, 196, 26, 0.4) !important;
3717
+ }
3718
+
3719
+ .ai-simple-btn:hover {
3720
+ background: linear-gradient(135deg, rgba(82, 196, 26, 0.3), rgba(111, 140, 255, 0.3)) !important;
3721
+ border-color: rgba(82, 196, 26, 0.6) !important;
3722
+ }
3723
+
3724
+
3725
+ /* ========== 09-library.css ========== */
3726
+ /* 09 Library */
3727
+ /* Auto-generated from preview.css */
3728
+ /* Updated to HANDLER Design System v1.0 */
3729
+
3730
+ /* Library Category Tabs */
3731
+ .library-category-tabs {
3732
+ display: flex;
3733
+ background: var(--ui-bg-2);
3734
+ padding: 4px;
3735
+ gap: 2px;
3736
+ border-bottom: 1px solid var(--ui-border);
3737
+ margin-bottom: 12px;
3738
+ }
3739
+
3740
+ .library-category-tab {
3741
+ flex: 1;
3742
+ padding: 6px 8px;
3743
+ font-size: 11px;
3744
+ font-weight: 600;
3745
+ color: var(--ui-muted);
3746
+ background: transparent;
3747
+ border: 1px solid transparent;
3748
+ border-radius: 6px;
3749
+ cursor: pointer;
3750
+ white-space: nowrap;
3751
+ text-align: center;
3752
+ transition: all var(--ui-duration-fast) var(--ui-ease);
3753
+ }
3754
+
3755
+ .library-category-tab:hover {
3756
+ background: rgba(227, 138, 90, 0.08);
3757
+ color: var(--ui-text);
3758
+ }
3759
+
3760
+ .library-category-tab.active {
3761
+ background: rgba(227, 138, 90, 0.12);
3762
+ color: var(--ui-accent);
3763
+ border-color: rgba(227, 138, 90, 0.35);
3764
+ }
3765
+
3766
+ /* Individual Slot */
3767
+ .library-slot {
3768
+ background: var(--ui-surface);
3769
+ border: 1px solid var(--ui-border);
3770
+ border-radius: 10px;
3771
+ overflow: hidden;
3772
+ transition: all var(--ui-duration-fast) var(--ui-ease);
3773
+ }
3774
+
3775
+ .library-slot:hover {
3776
+ border-color: rgba(227, 138, 90, 0.5);
3777
+ }
3778
+
3779
+ .library-slot.expanded {
3780
+ border-color: rgba(227, 138, 90, 0.55);
3781
+ background: var(--ui-surface-2);
3782
+ }
3783
+
3784
+ /* Library Items Grid */
3785
+ .slot-library {
3786
+ display: grid;
3787
+ grid-template-columns: repeat(auto-fill, minmax(60px, 1fr));
3788
+ gap: 8px;
3789
+ padding: 10px;
3790
+ background: var(--ui-bg);
3791
+ border-top: 1px solid var(--ui-border);
3792
+ }
3793
+
3794
+ .library-item {
3795
+ display: flex;
3796
+ flex-direction: column;
3797
+ align-items: center;
3798
+ gap: 4px;
3799
+ padding: 6px;
3800
+ border-radius: 8px;
3801
+ border: 1px solid rgba(212, 207, 200, 0.8);
3802
+ background: var(--ui-surface);
3803
+ cursor: pointer;
3804
+ transition: all 0.15s var(--ui-ease);
3805
+ }
3806
+
3807
+ .library-item:hover {
3808
+ background: rgba(227, 138, 90, 0.08);
3809
+ border-color: rgba(227, 138, 90, 0.45);
3810
+ }
3811
+
3812
+ .library-item:active {
3813
+ transform: scale(0.96);
3814
+ }
3815
+
3816
+ .library-thumbnail {
3817
+ width: 48px;
3818
+ height: 48px;
3819
+ object-fit: cover;
3820
+ border-radius: 6px;
3821
+ border: 1px solid var(--ui-border);
3822
+ background: var(--ui-bg-2);
3823
+ }
3824
+
3825
+ .library-label {
3826
+ font-size: 9px;
3827
+ color: var(--ui-muted);
3828
+ text-align: center;
3829
+ word-break: break-word;
3830
+ max-width: 100%;
3831
+ overflow: hidden;
3832
+ text-overflow: ellipsis;
3833
+ white-space: nowrap;
3834
+ }
3835
+
3836
+ .library-info {
3837
+ font-size: 11px;
3838
+ color: var(--ui-muted);
3839
+ padding: 16px;
3840
+ text-align: center;
3841
+ }
3842
+
3843
+
3844
+ /* ========== 10-ai-tools.css ========== */
3845
+ /* 10 Ai Tools */
3846
+ /* Auto-generated from preview.css */
3847
+ /* Updated to HANDLER Design System v1.0 */
3848
+
3849
+ /* Game Container */
3850
+ .game-container {
3851
+ width: 100%;
3852
+ height: 100%;
3853
+ position: relative;
3854
+ }
3855
+
3856
+ /* Enhanced Hierarchy Visual Elements */
3857
+ .scene-object-icon {
3858
+ font-size: 16px;
3859
+ line-height: 1;
3860
+ flex-shrink: 0;
3861
+ margin-right: 4px;
3862
+ }
3863
+
3864
+ .scene-object-thumbnail {
3865
+ width: 24px;
3866
+ height: 24px;
3867
+ object-fit: cover;
3868
+ border-radius: 4px;
3869
+ border: 1px solid rgba(255, 255, 255, 0.1);
3870
+ background: rgba(8, 10, 14, 0.6);
3871
+ flex-shrink: 0;
3872
+ margin-right: 6px;
3873
+ }
3874
+
3875
+ .scene-object-color-dot {
3876
+ width: 12px;
3877
+ height: 12px;
3878
+ border-radius: 50%;
3879
+ border: 1px solid rgba(255, 255, 255, 0.2);
3880
+ flex-shrink: 0;
3881
+ margin-left: 6px;
3882
+ box-shadow: 0 0 4px rgba(0, 0, 0, 0.3);
3883
+ }
3884
+
3885
+ .scene-object-meta {
3886
+ font-size: 9px;
3887
+ color: var(--ui-muted);
3888
+ opacity: 0.7;
3889
+ text-transform: uppercase;
3890
+ letter-spacing: 0.3px;
3891
+ margin-left: auto;
3892
+ white-space: nowrap;
3893
+ padding-left: 8px;
3894
+ }
3895
+
3896
+ .scene-object-item:hover .scene-object-meta {
3897
+ opacity: 1;
3898
+ }
3899
+
3900
+ .scene-edit-selected {
3901
+ font-size: 12px;
3902
+ color: var(--ui-muted);
3903
+ margin-bottom: 10px;
3904
+ }
3905
+
3906
+ /* Slot Header */
3907
+ .slot-header {
3908
+ display: flex;
3909
+ align-items: center;
3910
+ gap: 10px;
3911
+ padding: 8px 10px;
3912
+ cursor: pointer;
3913
+ transition: background 0.15s var(--ui-ease);
3914
+ }
3915
+
3916
+ .slot-header:hover {
3917
+ background: rgba(255, 255, 255, 0.03);
3918
+ }
3919
+
3920
+ .slot-current {
3921
+ width: 40px;
3922
+ height: 40px;
3923
+ flex-shrink: 0;
3924
+ border-radius: 6px;
3925
+ overflow: hidden;
3926
+ background: rgba(0, 0, 0, 0.3);
3927
+ border: 1px solid rgba(255, 255, 255, 0.08);
3928
+ }
3929
+
3930
+ .slot-thumbnail {
3931
+ width: 100%;
3932
+ height: 100%;
3933
+ object-fit: cover;
3934
+ }
3935
+
3936
+ .slot-info {
3937
+ flex: 1;
3938
+ min-width: 0;
3939
+ }
3940
+
3941
+ .slot-name {
3942
+ font-size: 12px;
3943
+ font-weight: 600;
3944
+ color: var(--ui-text);
3945
+ white-space: nowrap;
3946
+ overflow: hidden;
3947
+ text-overflow: ellipsis;
3948
+ }
3949
+
3950
+ .slot-asset {
3951
+ font-size: 10px;
3952
+ color: var(--ui-muted);
3953
+ white-space: nowrap;
3954
+ overflow: hidden;
3955
+ text-overflow: ellipsis;
3956
+ }
3957
+
3958
+ .slot-actions {
3959
+ display: flex;
3960
+ align-items: center;
3961
+ gap: 6px;
3962
+ }
3963
+
3964
+ .slot-reset {
3965
+ width: 24px;
3966
+ height: 24px;
3967
+ border-radius: 6px;
3968
+ border: 1px solid rgba(255, 255, 255, 0.1);
3969
+ background: rgba(255, 255, 255, 0.05);
3970
+ color: var(--ui-muted);
3971
+ font-size: 14px;
3972
+ cursor: pointer;
3973
+ display: flex;
3974
+ align-items: center;
3975
+ justify-content: center;
3976
+ transition: all 0.15s var(--ui-ease);
3977
+ }
3978
+
3979
+ .slot-reset:hover {
3980
+ background: rgba(255, 90, 90, 0.15);
3981
+ border-color: rgba(255, 90, 90, 0.4);
3982
+ color: var(--ui-danger);
3983
+ }
3984
+
3985
+ .slot-expand-icon {
3986
+ font-size: 10px;
3987
+ color: var(--ui-muted);
3988
+ width: 16px;
3989
+ text-align: center;
3990
+ }
3991
+
3992
+ /* Scrollbar for staging list */
3993
+ .staging-list::-webkit-scrollbar {
3994
+ width: 6px;
3995
+ }
3996
+
3997
+ .staging-list::-webkit-scrollbar-track {
3998
+ background: transparent;
3999
+ }
4000
+
4001
+ .staging-list::-webkit-scrollbar-thumb {
4002
+ background: var(--ui-border);
4003
+ border-radius: 10px;
4004
+ }
4005
+
4006
+ .staging-group {
4007
+ background: rgba(255, 255, 255, 0.02);
4008
+ border-radius: 10px;
4009
+ border: 1px solid rgba(255, 255, 255, 0.05);
4010
+ overflow: hidden;
4011
+ }
4012
+
4013
+ .staging-group-title {
4014
+ display: flex;
4015
+ align-items: center;
4016
+ gap: 8px;
4017
+ padding: 8px 12px;
4018
+ background: rgba(255, 255, 255, 0.03);
4019
+ border-bottom: 1px solid rgba(255, 255, 255, 0.05);
4020
+ font-size: 12px;
4021
+ font-weight: 700;
4022
+ }
4023
+
4024
+ .group-icon {
4025
+ font-size: 14px;
4026
+ }
4027
+
4028
+ .group-id {
4029
+ color: var(--ui-accent-3);
4030
+ font-family: 'JetBrains Mono', 'Consolas', monospace;
4031
+ }
4032
+
4033
+ .staging-items {
4034
+ padding: 4px 8px;
4035
+ }
4036
+
4037
+ .staging-item {
4038
+ display: flex;
4039
+ align-items: center;
4040
+ gap: 8px;
4041
+ padding: 6px 4px;
4042
+ border-bottom: 1px solid rgba(255, 255, 255, 0.02);
4043
+ }
4044
+
4045
+ .staging-item:last-child {
4046
+ border-bottom: none;
4047
+ }
4048
+
4049
+ .item-path {
4050
+ flex: 0 0 110px;
4051
+ font-size: 10px;
4052
+ color: var(--ui-muted);
4053
+ font-family: 'JetBrains Mono', 'Consolas', monospace;
4054
+ white-space: nowrap;
4055
+ overflow: hidden;
4056
+ text-overflow: ellipsis;
4057
+ }
4058
+
4059
+ .item-value {
4060
+ flex: 1;
4061
+ font-size: 11px;
4062
+ color: var(--ui-text);
4063
+ background: rgba(0, 0, 0, 0.2);
4064
+ padding: 2px 6px;
4065
+ border-radius: 4px;
4066
+ font-family: 'JetBrains Mono', 'Consolas', monospace;
4067
+ white-space: nowrap;
4068
+ overflow: hidden;
4069
+ text-overflow: ellipsis;
4070
+ }
4071
+
4072
+ .item-remove {
4073
+ background: transparent;
4074
+ border: none;
4075
+ color: var(--ui-muted);
4076
+ font-size: 16px;
4077
+ cursor: pointer;
4078
+ line-height: 1;
4079
+ padding: 0 4px;
4080
+ }
4081
+
4082
+ .item-remove:hover {
4083
+ color: var(--ui-danger);
4084
+ transform: scale(1.2);
4085
+ }
4086
+
4087
+
4088
+
4089
+ /* ========== 11-modals.css ========== */
4090
+ /* 11 Modals */
4091
+ /* Auto-generated from preview.css */
4092
+ /* Updated to HANDLER Design System v1.0 */
4093
+
4094
+ /* JSON Modal */
4095
+ .json-modal {
4096
+ position: fixed;
4097
+ top: 0;
4098
+ left: 0;
4099
+ width: 100%;
4100
+ height: 100%;
4101
+ background-color: rgba(0, 0, 0, 0.8);
4102
+ z-index: 10000;
4103
+ display: flex;
4104
+ align-items: center;
4105
+ justify-content: center;
4106
+ }
4107
+
4108
+ .json-modal-content {
4109
+ background-color: #1e1e1e;
4110
+ border: 1px solid #555;
4111
+ border-radius: 8px;
4112
+ width: 80%;
4113
+ max-width: 800px;
4114
+ max-height: 80%;
4115
+ display: flex;
4116
+ flex-direction: column;
4117
+ }
4118
+
4119
+ .json-modal-header {
4120
+ display: flex;
4121
+ align-items: center;
4122
+ justify-content: space-between;
4123
+ padding: 16px 20px;
4124
+ border-bottom: 1px solid #444;
4125
+ }
4126
+
4127
+ .json-modal-header h3 {
4128
+ margin: 0;
4129
+ color: var(--ui-text);
4130
+ font-size: 16px;
4131
+ font-weight: 600;
4132
+ }
4133
+
4134
+ .json-modal-body {
4135
+ flex: 1;
4136
+ padding: 16px 20px;
4137
+ overflow-y: auto;
4138
+ }
4139
+
4140
+ .json-modal-body pre {
4141
+ margin: 0;
4142
+ color: var(--ui-text);
4143
+ font-family: 'Consolas', 'Monaco', monospace;
4144
+ font-size: 12px;
4145
+ line-height: 1.4;
4146
+ white-space: pre-wrap;
4147
+ word-wrap: break-word;
4148
+ }
4149
+
4150
+
4151
+
4152
+ /* ========== 12-responsive.css ========== */
4153
+ /* 12 Responsive */
4154
+ /* Auto-generated from preview.css */
4155
+ /* Updated to HANDLER Design System v1.0 */
4156
+
4157
+ /* Responsive icon buttons */
4158
+ @media (max-width: 768px) {
4159
+ .icon-btn {
4160
+ padding: 3px;
4161
+ width: 24px;
4162
+ height: 24px;
4163
+ }
4164
+
4165
+ .icon-btn svg {
4166
+ width: 12px;
4167
+ height: 12px;
4168
+ }
4169
+ }
4170
+
4171
+ .icon-btn svg {
4172
+ width: 16px;
4173
+ height: 16px;
4174
+ }
4175
+
4176
+
4177
+
4178
+ /* ========== 99-misc.css ========== */
4179
+ /* 99 Misc */
4180
+ /* Auto-generated from preview.css */
4181
+ /* Updated to HANDLER Design System v1.0 */
4182
+
4183
+ /* Device Selector */
4184
+ .device-selector-wrapper {
4185
+ position: relative;
4186
+ }
4187
+
4188
+ .device-dropdown {
4189
+ background-color: var(--ui-surface);
4190
+ color: var(--ui-text);
4191
+ border: 1px solid var(--ui-border);
4192
+ border-radius: 8px;
4193
+ padding: 6px 10px;
4194
+ font-size: 12px;
4195
+ min-width: 150px;
4196
+ max-width: 100%;
4197
+ cursor: pointer;
4198
+ overflow: hidden;
4199
+ text-overflow: ellipsis;
4200
+ }
4201
+
4202
+ .device-dropdown:focus {
4203
+ outline: none;
4204
+ border-color: var(--ui-accent);
4205
+ }
4206
+
4207
+ /* Buttons */
4208
+ .preview-btn {
4209
+ background-color: var(--ui-surface);
4210
+ color: var(--ui-text);
4211
+ border: 1px solid var(--ui-border);
4212
+ border-radius: 8px;
4213
+ padding: 6px 12px;
4214
+ font-size: 12px;
4215
+ font-weight: var(--font-weight-medium);
4216
+ cursor: pointer;
4217
+ transition: background var(--ui-duration-fast) var(--ui-ease), border-color var(--ui-duration-fast) var(--ui-ease);
4218
+ display: flex;
4219
+ align-items: center;
4220
+ gap: 6px;
4221
+ }
4222
+
4223
+ .preview-btn:hover {
4224
+ background-color: var(--ui-bg);
4225
+ }
4226
+
4227
+ .preview-btn:active {
4228
+ background-color: var(--ui-bg-2);
4229
+ }
4230
+
4231
+ /* Primary Button - Solid Terracotta (Main Site Style) */
4232
+ .preview-btn-primary,
4233
+ .workbench-panel-apply-btn,
4234
+ .persistence-apply-btn,
4235
+ .ai-generate-btn,
4236
+ .debug-toggle
4237
+
4238
+ /* Scene Edit Panel button */
4239
+ {
4240
+ background: var(--ui-terracotta);
4241
+ color: var(--ui-text-white);
4242
+ border: none;
4243
+ font-weight: var(--font-weight-medium);
4244
+ }
4245
+
4246
+ .preview-btn-primary:hover,
4247
+ .workbench-panel-apply-btn:hover,
4248
+ .persistence-apply-btn:hover,
4249
+ .ai-generate-btn:hover,
4250
+ .debug-toggle:hover {
4251
+ background: var(--ui-terracotta-hover);
4252
+ }
4253
+
4254
+ .preview-btn-primary:active,
4255
+ .workbench-panel-apply-btn:active,
4256
+ .persistence-apply-btn:active,
4257
+ .ai-generate-btn:active,
4258
+ .debug-toggle:active {
4259
+ background: var(--ui-terracotta-active);
4260
+ }
4261
+
4262
+ .preview-btn:disabled,
4263
+ .device-dropdown:disabled {
4264
+ opacity: 0.4;
4265
+ cursor: not-allowed;
4266
+ }
4267
+
4268
+ .icon-btn {
4269
+ padding: 6px;
4270
+ width: 30px;
4271
+ height: 30px;
4272
+ justify-content: center;
4273
+ }
4274
+
4275
+ /* Unused/hidden objects styling */
4276
+ .scene-object-item.unused {
4277
+ opacity: 0.4;
4278
+ font-style: italic;
4279
+ }
4280
+
4281
+ .scene-object-item.unused:hover {
4282
+ opacity: 0.7;
4283
+ }
4284
+
4285
+ .unused-group {
4286
+ border-top: 1px dashed rgba(255, 255, 255, 0.1);
4287
+ margin-top: 8px;
4288
+ padding-top: 8px;
4289
+ }
4290
+
4291
+ .unused-group .scene-object-group-title {
4292
+ color: var(--ui-muted);
4293
+ font-style: italic;
4294
+ }
4295
+
4296
+ /* Staging Area */
4297
+ .staging-area {
4298
+ flex: 1;
4299
+ display: flex;
4300
+ flex-direction: column;
4301
+ min-height: 0;
4302
+ gap: 10px;
4303
+ }
4304
+
4305
+ .staging-header {
4306
+ display: flex;
4307
+ justify-content: space-between;
4308
+ align-items: center;
4309
+ font-size: 11px;
4310
+ color: var(--ui-muted);
4311
+ font-weight: 700;
4312
+ text-transform: uppercase;
4313
+ letter-spacing: 0.05em;
4314
+ }
4315
+
4316
+ .staging-clear-all {
4317
+ background: transparent;
4318
+ border: 1px solid rgba(217, 117, 88, 0.3);
4319
+ color: var(--ui-danger);
4320
+ font-size: 10px;
4321
+ padding: 2px 8px;
4322
+ border-radius: 6px;
4323
+ cursor: pointer;
4324
+ transition: background var(--ui-duration-fast) var(--ui-ease), border-color var(--ui-duration-fast) var(--ui-ease);
4325
+ }
4326
+
4327
+ .staging-clear-all:hover {
4328
+ background: rgba(217, 117, 88, 0.1);
4329
+ border-color: var(--ui-danger);
4330
+ }
4331
+
4332
+ .staging-list {
4333
+ flex: 1;
4334
+ overflow-y: auto;
4335
+ display: flex;
4336
+ flex-direction: column;
4337
+ gap: 12px;
4338
+ padding-right: 4px;
4339
+ }
4340
+
4341
+ /* Empty State */
4342
+ .persistence-empty-state {
4343
+ flex: 1;
4344
+ display: flex;
4345
+ flex-direction: column;
4346
+ align-items: center;
4347
+ justify-content: center;
4348
+ text-align: center;
4349
+ gap: 12px;
4350
+ opacity: 0.6;
4351
+ }
4352
+
4353
+ .empty-icon {
4354
+ font-size: 40px;
4355
+ filter: grayscale(1);
4356
+ }
4357
+
4358
+ .persistence-empty-state p {
4359
+ margin: 0;
4360
+ font-size: 13px;
4361
+ font-weight: 600;
4362
+ }
4363
+
4364
+ .empty-hint {
4365
+ font-size: 11px;
4366
+ color: var(--ui-muted);
4367
+ max-width: 200px;
4368
+ line-height: 1.4;
4369
+ }
4370
+
4371
+ /* Footer */
4372
+ .persistence-footer {
4373
+ padding-top: 12px;
4374
+ border-top: 1px solid var(--ui-border);
4375
+ display: flex;
4376
+ flex-direction: column;
4377
+ gap: 10px;
4378
+ }
4379
+
4380
+ .footer-row {
4381
+ display: flex;
4382
+ justify-content: space-between;
4383
+ font-size: 11px;
4384
+ }
4385
+
4386
+ .footer-label {
4387
+ color: var(--ui-muted);
4388
+ }
4389
+
4390
+ .footer-value {
4391
+ color: var(--ui-text);
4392
+ font-weight: 600;
4393
+ }
4394
+
4395
+ .footer-secondary-actions {
4396
+ display: flex;
4397
+ gap: 8px;
4398
+ }
4399
+
4400
+ .footer-btn {
4401
+ flex: 1;
4402
+ padding: 6px;
4403
+ font-size: 10px;
4404
+ background: rgba(255, 255, 255, 0.05);
4405
+ border: 1px solid var(--ui-border);
4406
+ border-radius: 6px;
4407
+ color: var(--ui-text);
4408
+ cursor: pointer;
4409
+ }
4410
+
4411
+ .footer-btn:hover:not(:disabled) {
4412
+ background: rgba(255, 255, 255, 0.1);
4413
+ }
4414
+
4415
+ .footer-btn.danger {
4416
+ color: var(--ui-danger);
4417
+ border-color: rgba(255, 92, 112, 0.3);
4418
+ }
4419
+
4420
+ .footer-btn.danger:hover {
4421
+ background: rgba(255, 92, 112, 0.1);
4422
+ border-color: var(--ui-danger);
4423
+ }
4424
+
4425
+ .footer-btn:disabled {
4426
+ opacity: 0.3;
4427
+ cursor: not-allowed;
4428
+ }
4429
+
4430
+ .persistence-info {
4431
+ font-size: 10px;
4432
+ color: var(--ui-muted);
4433
+ line-height: 1.4;
4434
+ background: rgba(227, 138, 90, 0.08);
4435
+ padding: 8px;
4436
+ border-radius: 8px;
4437
+ }
4438
+
4439
+ .persistence-info strong {
4440
+ color: var(--ui-accent);
4441
+ }
4442
+
4443
+ /* Notification Popup */
4444
+ .persistence-notification {
4445
+ position: fixed;
4446
+ top: 24px;
4447
+ left: 50%;
4448
+ transform: translateX(-50%);
4449
+ background: var(--ui-surface);
4450
+ border: 1px solid var(--ui-accent);
4451
+ box-shadow: var(--ui-shadow-hover);
4452
+ border-radius: 12px;
4453
+ padding: 12px 20px;
4454
+ display: flex;
4455
+ align-items: center;
4456
+ gap: 16px;
4457
+ z-index: 9999;
4458
+ animation: notify-in var(--ui-duration-slow) var(--ui-ease) forwards;
4459
+ }
4460
+
4461
+ .persistence-notification.out {
4462
+ animation: notify-out var(--ui-duration-slow) var(--ui-ease) forwards;
4463
+ }
4464
+
4465
+ .notify-icon {
4466
+ font-size: 24px;
4467
+ }
4468
+
4469
+ .notify-content {
4470
+ display: flex;
4471
+ flex-direction: column;
4472
+ }
4473
+
4474
+ .notify-content strong {
4475
+ color: var(--ui-accent);
4476
+ font-size: 14px;
4477
+ }
4478
+
4479
+ .notify-content span {
4480
+ color: var(--ui-muted);
4481
+ font-size: 12px;
4482
+ }
4483
+
4484
+ @keyframes notify-in {
4485
+ from {
4486
+ transform: translateX(-50%) translateY(-100px);
4487
+ opacity: 0;
4488
+ }
4489
+
4490
+ to {
4491
+ transform: translateX(-50%) translateY(0);
4492
+ opacity: 1;
4493
+ }
4494
+ }
4495
+
4496
+ @keyframes notify-out {
4497
+ from {
4498
+ transform: translateX(-50%) translateY(0);
4499
+ opacity: 1;
4500
+ }
4501
+
4502
+ to {
4503
+ transform: translateX(-50%) translateY(-100px);
4504
+ opacity: 0;
4505
+ }
4506
+ }
4507
+
4508
+ /* Tab Highlight */
4509
+ .workbench-tab.has-pending-changes::after {
4510
+ content: '';
4511
+ position: absolute;
4512
+ top: 6px;
4513
+ right: 6px;
4514
+ width: 8px;
4515
+ height: 8px;
4516
+ background: var(--ui-accent-2);
4517
+ border-radius: 50%;
4518
+ /* Removed glow - HANDLER forbids glow effects */
4519
+ animation: pulse-dot 2s var(--ui-ease) infinite;
4520
+ }
4521
+
4522
+ @keyframes pulse-dot {
4523
+ 0% {
4524
+ transform: scale(1);
4525
+ opacity: 1;
4526
+ }
4527
+
4528
+ 50% {
4529
+ transform: scale(1.4);
4530
+ opacity: 0.6;
4531
+ }
4532
+
4533
+ 100% {
4534
+ transform: scale(1);
4535
+ opacity: 1;
4536
+ }
4537
+ }