:root{--bg: #0d0f14;--panel: #161a22;--panel-2: #1d222c;--line: #2a303c;--text: #e6e9ef;--muted: #8b93a3;--accent: #4f8cff;--danger: #ff5d5d;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);font-size:13px}.app{display:flex;flex-direction:column;height:100%}.toolbar{display:flex;align-items:center;gap:16px;padding:8px 14px;background:var(--panel);border-bottom:1px solid var(--line);flex-wrap:wrap}.brand{font-weight:700;letter-spacing:.3px;color:var(--accent)}.tb-group{display:flex;align-items:center;gap:6px}.tb-group.right{margin-left:auto}.tb-group label{color:var(--muted);font-size:11px;text-transform:uppercase}.workspace{display:flex;flex:1;min-height:0}.left,.right{width:280px;background:var(--panel);border-right:1px solid var(--line);overflow:hidden;display:flex;flex-direction:column}.right{border-right:none;border-left:1px solid var(--line)}.center{flex:1;min-width:0}.canvas-wrap{height:100%;display:flex;align-items:center;justify-content:center;background:repeating-conic-gradient(#1a1d24 0% 25%,#14171d 0% 50%) 50% / 32px 32px}.canvas-shadow{box-shadow:0 12px 40px #0009}.panel{display:flex;flex-direction:column;height:100%}.panel.scroll{display:block;overflow-y:auto}.panel-head{padding:10px 14px;font-weight:600;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--panel);z-index:1}.section-head{padding:10px 14px 4px;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.5px}.empty{padding:16px 14px;color:var(--muted);line-height:1.5}.layer-list{flex:1;overflow-y:auto}.layer-row{display:flex;align-items:center;gap:8px;padding:8px 12px;cursor:pointer;border-bottom:1px solid var(--line)}.layer-row:hover{background:var(--panel-2)}.layer-row.sel{background:color-mix(in srgb,var(--accent) 22%,transparent)}.layer-row.dragging{opacity:.4}.layer-row.drop-target{box-shadow:inset 0 2px 0 var(--accent)}.drag-grip{color:var(--muted);cursor:grab;font-size:12px;-webkit-user-select:none;user-select:none}.layer-row .icon-btn{font-size:12px;line-height:1}.layer-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.layer-type{color:var(--muted);font-size:10px;text-transform:uppercase}.layer-actions{display:flex;gap:6px;padding:10px;border-top:1px solid var(--line)}.layer-actions button{flex:1}.ctrl{display:flex;flex-direction:column;gap:4px;padding:8px 14px}.ctrl.inline{flex-direction:row;align-items:center;gap:8px}.ctrl-label{display:flex;justify-content:space-between;color:var(--muted);font-size:11px}.ctrl-label em{color:var(--text);font-style:normal}.ctrl input[type=range]{width:100%;accent-color:var(--accent)}.color-row{display:flex;align-items:center;gap:8px}.color-row input[type=range]{flex:1;accent-color:var(--accent)}.align-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;padding:4px 14px 8px}.align-btn{padding:6px 0;font-size:16px;line-height:1}.canvas-wrap.drag-over{outline:2px dashed var(--accent);outline-offset:-10px}input,select,textarea,button{font:inherit;color:var(--text);background:var(--panel-2);border:1px solid var(--line);border-radius:6px;padding:5px 8px}input[type=color]{padding:2px;height:30px;width:40px}textarea{resize:vertical}button{cursor:pointer}button:hover{border-color:var(--accent)}button:disabled{opacity:.4;cursor:not-allowed}button.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}button.danger:hover{border-color:var(--danger);color:var(--danger)}.icon-btn{background:transparent;border:none;padding:2px 4px}.section{border-bottom:1px solid var(--line)}.section-toggle{display:flex;align-items:center;gap:6px;width:100%;background:transparent;border:none;border-radius:0;padding:9px 14px;text-align:left;color:var(--muted);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;cursor:pointer}.section-toggle:hover{color:var(--text);background:var(--panel-2)}.chev{display:inline-block;width:10px;color:var(--muted);font-size:10px}.section-body{padding-bottom:6px}.fx-card{margin:6px 10px;border:1px solid var(--line);border-radius:8px;background:var(--panel-2);overflow:hidden}.fx-card.off{opacity:.5}.fx-head{display:flex;align-items:center;gap:4px;padding:6px 8px;background:#ffffff08;border-bottom:1px solid var(--line)}.fx-name{flex:1;font-weight:600}.fx-name-btn,.fx-head-btn{background:transparent;border:none;color:var(--text);text-align:left;cursor:pointer;padding:2px 0;display:flex;align-items:center;gap:4px}.fx-head-btn{width:100%}.fx-name-btn:hover{color:var(--accent)}.fx-head .icon-btn.danger:hover{color:var(--danger)}.fx-card .ctrl{padding:6px 10px}.fx-body{padding-bottom:4px}.modal-backdrop{position:fixed;inset:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:50}.modal{background:var(--panel);border:1px solid var(--line);border-radius:10px;width:min(900px,92vw);max-height:86vh;display:flex;flex-direction:column;overflow:hidden}.modal-head{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid var(--line);font-weight:600}.cover-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px;padding:14px;overflow-y:auto}.cover-cell{padding:0;border-radius:8px;overflow:hidden;aspect-ratio:1;border:1px solid var(--line)}.cover-cell img{width:100%;height:100%;object-fit:cover;display:block}.cover-cell:hover{border-color:var(--accent)}.restore-modal{width:min(560px,92vw)}.restore-bulk{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:6px 16px 10px}.restore-bulk .muted{color:var(--muted);font-size:12px}.restore-list{overflow-y:auto;padding:0 16px}.restore-row{display:flex;align-items:center;gap:10px;padding:8px 0;border-top:1px solid var(--line)}.restore-row.done{opacity:.7}.restore-status{width:16px;text-align:center;color:var(--muted)}.restore-row.done .restore-status{color:#57d977}.restore-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.restore-actions{display:flex;justify-content:flex-end;gap:8px;padding:12px 16px;border-top:1px solid var(--line)}
