:root{--bg: #f4f3f0;--card: #ffffff;--border: #ddd9d2;--text: #222;--text-muted: #777;--accent: #222;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Arial,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}h1{font-size:18px;font-weight:600;margin:0}h3{font-size:13px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);margin:0 0 8px}button{font:inherit;cursor:pointer;border:1px solid var(--border);background:var(--card);border-radius:6px;padding:6px 12px}button:hover{background:#efece6}button.primary{background:var(--accent);color:#fff;border-color:var(--accent)}button.primary:hover{opacity:.9}button.danger{color:#b3261e;border-color:#b3261e}button.danger:hover{background:#b3261e;color:#fff}button:disabled{opacity:.5;cursor:default}input[type=password],input[type=number]{font:inherit;padding:6px 8px;border:1px solid var(--border);border-radius:6px}input[type=color]{width:40px;height:28px;padding:2px;border:1px solid var(--border);border-radius:6px;background:none;cursor:pointer}#background-hex{font-family:monospace;color:var(--text-muted)}#login-screen[hidden]{display:none}#login-screen{height:100vh;display:flex;align-items:center;justify-content:center}#login-form{display:flex;flex-direction:column;gap:10px;width:260px;background:var(--card);padding:24px;border-radius:10px;border:1px solid var(--border)}.error{color:#b3261e;font-size:13px;margin:0}header{display:flex;justify-content:space-between;align-items:center;padding:14px 20px;background:var(--card);border-bottom:1px solid var(--border)}.header-actions{display:flex;gap:8px}#app-body{display:flex;height:calc(100vh - 53px)}#scene-list{width:280px;overflow-y:auto;border-right:1px solid var(--border);padding:12px}#scene-list-header{margin-bottom:10px}#toggle-edit-mode-btn{width:100%;font-size:13px}#toggle-edit-mode-btn.active{background:var(--accent);color:#fff;border-color:var(--accent)}.group-label-row{display:flex;align-items:center;justify-content:space-between;margin:16px 0 6px}.group-label-row:first-child{margin-top:0}.group-label{font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted)}.group-delete-btn,.scene-delete-btn{border:none;background:none;color:var(--text-muted);font-size:13px;line-height:1;padding:2px 6px;border-radius:4px;cursor:pointer;flex-shrink:0}.group-delete-btn:hover,.scene-delete-btn:hover{background:#b3261e;color:#fff}.scene-item-row{display:flex;align-items:center;gap:4px;margin-bottom:2px}.scene-item{display:block;flex:1;min-width:0;text-align:left;padding:8px 10px;border-radius:6px;border:1px solid transparent;background:none}.scene-item:hover{background:var(--card)}.scene-item.active{background:var(--card);border-color:var(--border)}.scene-item .name{font-weight:500}.scene-item .meta{display:block;font-size:12px;color:var(--text-muted)}#upload-dialog,#confirm-delete-dialog{width:440px;max-width:calc(100vw - 40px);border:1px solid var(--border);border-radius:10px;padding:20px;background:var(--card)}#upload-dialog::backdrop,#confirm-delete-dialog::backdrop{background:#0006}#upload-dialog h2,#confirm-delete-dialog h2{margin:0 0 16px;font-size:18px}.mode-toggle{display:flex;gap:8px;margin-bottom:16px}.mode-btn{flex:1;font-size:13px;padding:8px 10px}.mode-btn.active{background:var(--accent);color:#fff;border-color:var(--accent)}.drop-zone{display:flex;align-items:center;justify-content:center;text-align:center;font-size:13px;font-weight:400;color:var(--text-muted);border:2px dashed var(--border);border-radius:8px;padding:20px 12px;margin-top:4px;cursor:pointer}.drop-zone.drag-over{border-color:var(--accent);background:#efece6}.drop-zone.has-files{color:var(--text);border-style:solid}.dialog-field{display:block;margin-bottom:14px;font-size:13px;font-weight:500}.dialog-field input[type=text]{display:block;font:inherit;font-weight:400;padding:6px 8px;border:1px solid var(--border);border-radius:6px;width:100%;margin-top:4px}.dialog-field input[type=file][hidden]{display:none}.dialog-field input[type=file]{display:block;font-size:13px;font-weight:400;margin-top:4px;width:100%}.field-hint{display:block;font-size:12px;font-weight:400;color:var(--text-muted);margin-top:3px}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}.upload-progress{font-size:13px;margin-top:12px}#detail-panel{flex:1;overflow-y:auto;padding:20px}.empty-hint{color:var(--text-muted)}.detail-header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:16px}.detail-header h2{margin:0;font-size:20px}.action-row{display:flex;gap:8px;margin-bottom:20px;flex-wrap:wrap}.detail-grid{display:grid;grid-template-columns:1fr 420px;gap:24px;align-items:start}.form-section{background:var(--card);border:1px solid var(--border);border-radius:8px;padding:14px;margin-bottom:14px}.checkbox{display:flex;align-items:center;gap:8px;padding:4px 0;cursor:pointer}.range-row{padding:6px 0}.range-inputs[hidden]{display:none}.range-inputs{display:flex;align-items:center;gap:8px;margin:6px 0 0 24px}.range-inputs input{width:80px}.readonly-info{background:var(--card);border:1px solid var(--border);border-radius:8px;padding:14px;font-size:13px;color:var(--text-muted);margin-bottom:14px}.readonly-info strong{color:var(--text)}.collision-section{background:var(--card);border:1px solid var(--border);border-radius:8px;padding:14px;margin-bottom:14px}.danger-zone{margin-top:24px;padding-top:14px;border-top:1px solid var(--border)}.collision-files{display:flex;flex-direction:column;gap:4px;margin-bottom:10px;font-size:13px}.collision-file{display:flex;align-items:center;gap:6px}.collision-file.missing{color:#b3261e}.collision-row{display:flex;align-items:center;gap:10px;font-size:13px}.collision-row input[type=file]{flex:1;font-size:12px}iframe.preview-frame{width:100%;height:420px;border:1px solid var(--border);border-radius:8px;background:#000}pre.iframe-code{background:var(--card);border:1px solid var(--border);border-radius:8px;padding:10px;font-size:12px;overflow-x:auto;white-space:pre-wrap;word-break:break-all}.status-message{font-size:13px;margin:8px 0}.status-message.ok{color:#1a7a1a}.status-message.error{color:#b3261e}
