:root{--bg-0:#101216;--bg-1:#16181e;--bg-2:#1c1f27;--bg-3:#22262f;--border:#2a2e38;--border-soft:#23262e;--text-0:#eef0f4;--text-1:#aab0bd;--text-2:#6b7281;--accent:#29d398;--accent-dim:#1a8f68;--accent-soft:#29d3981f;--warn:#f5a623;--danger:#ff6161;--focus:#5b8cff;--radius:8px;--font-display:"Space Grotesk",sans-serif;--font-body:"Inter",sans-serif;--font-mono:"IBM Plex Mono",monospace}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg-0);color:var(--text-0);font-family:var(--font-body);-webkit-font-smoothing:antialiased;font-size:13px;overflow:hidden}button,input,select,textarea{font-family:inherit}::selection{background:var(--accent);color:#062018}::-webkit-scrollbar{width:9px;height:9px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#33384299;border-radius:6px}::-webkit-scrollbar-thumb:hover{background:#454b58}#app{flex-direction:column;height:100vh;display:flex}#topbar{background:var(--bg-1);border-bottom:1px solid var(--border);z-index:50;flex:0 0 50px;align-items:center;gap:14px;height:50px;padding:0 14px;display:flex}.brand{flex:none;align-items:center;gap:8px;display:flex}.brand-mark{background:linear-gradient(135deg,var(--accent),#1a8fbf);width:22px;height:22px;font-family:var(--font-display);color:#06231a;border-radius:6px;justify-content:center;align-items:center;font-size:12px;font-weight:700;display:flex}.brand-name{font-family:var(--font-display);letter-spacing:.2px;font-size:14.5px;font-weight:600}#project-name{color:var(--text-0);background:0 0;border:1px solid #0000;border-radius:6px;min-width:140px;max-width:240px;padding:5px 8px;font-size:13px;font-weight:500}#project-name:hover{border-color:var(--border)}#project-name:focus{border-color:var(--focus);background:var(--bg-2);outline:none}.topbar-sep{background:var(--border);width:1px;height:24px}.tb-group{align-items:center;gap:4px;display:flex}.icon-btn{width:30px;height:30px;color:var(--text-1);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;justify-content:center;align-items:center;transition:background .12s,color .12s;display:flex}.icon-btn:hover{background:var(--bg-3);color:var(--text-0)}.icon-btn:disabled{opacity:.3;cursor:default}.icon-btn:disabled:hover{color:var(--text-1);background:0 0}.icon-btn svg{width:16px;height:16px}#topbar .spacer{flex:1}.save-indicator{color:var(--text-2);align-items:center;gap:5px;font-size:11.5px;display:flex}.save-dot{background:var(--accent);border-radius:50%;width:6px;height:6px}.btn{border:1px solid var(--border);background:var(--bg-2);color:var(--text-0);cursor:pointer;border-radius:7px;align-items:center;gap:6px;padding:7px 13px;font-size:12.5px;font-weight:500;transition:all .12s;display:flex}.btn:hover{background:var(--bg-3);border-color:#3a3f4a}.btn.primary{background:var(--accent);border-color:var(--accent);color:#062018;font-weight:600}.btn.primary:hover{background:#3adfa8}.btn svg{width:14px;height:14px}.btn:disabled{opacity:.5;cursor:default}#main{flex:1;min-height:0;display:flex}#left{background:var(--bg-1);border-right:1px solid var(--border);flex:0 0 250px;width:250px;min-height:0;display:flex}#left-tabs{border-right:1px solid var(--border-soft);flex-direction:column;flex:0 0 46px;align-items:center;gap:2px;width:46px;padding-top:8px;display:flex}.ltab{width:36px;height:36px;color:var(--text-2);cursor:pointer;background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;display:flex;position:relative}.ltab svg{width:17px;height:17px}.ltab:hover{color:var(--text-0);background:var(--bg-2)}.ltab.active{color:var(--accent);background:var(--accent-soft)}#left-panel{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.panel-scroll{flex:1;padding:12px 12px 16px;overflow-y:auto}.grid-2{grid-template-columns:1fr 1fr;gap:8px;display:grid}.grid-3{grid-template-columns:1fr 1fr 1fr;gap:8px;display:grid}.asset-btn{border:1px solid var(--border);background:var(--bg-2);cursor:pointer;color:var(--text-1);border-radius:8px;flex-direction:column;align-items:center;gap:6px;padding:10px 6px;transition:all .12s;display:flex}.asset-btn:hover{border-color:var(--accent-dim);color:var(--text-0);background:var(--bg-3)}.asset-btn svg{width:22px;height:22px}.asset-btn span{font-size:10.5px}.section-title{color:var(--text-2);letter-spacing:.3px;text-transform:uppercase;margin:14px 0 8px;font-size:11px;font-weight:600}.section-title:first-child{margin-top:2px}.upload-zone{border:1.5px dashed var(--border);text-align:center;color:var(--text-2);cursor:pointer;border-radius:10px;padding:20px 10px;font-size:11.5px;transition:all .12s}.upload-zone:hover{border-color:var(--accent-dim);color:var(--text-1);background:var(--accent-soft)}.upload-thumb-grid{grid-template-columns:1fr 1fr;gap:8px;margin-top:10px;display:grid}.upload-thumb{aspect-ratio:1;border:1px solid var(--border);cursor:pointer;background:var(--bg-2);border-radius:7px;position:relative;overflow:hidden}.upload-thumb img{object-fit:cover;width:100%;height:100%;display:block}.tpl-card{border:1px solid var(--border);cursor:pointer;background:var(--bg-2);border-radius:9px;margin-bottom:8px;padding:12px;transition:all .12s}.tpl-card:hover{border-color:var(--accent-dim);background:var(--bg-3)}.tpl-swatch{border-radius:6px;height:44px;margin-bottom:8px}.tpl-name{font-size:12px;font-weight:600}.tpl-desc{color:var(--text-2);margin-top:2px;font-size:10.5px}.color-swatch-row{flex-wrap:wrap;gap:7px;margin-top:8px;display:flex}.swatch{cursor:pointer;border:1px solid #ffffff1f;border-radius:6px;width:24px;height:24px}.grad-preset{cursor:pointer;border:1px solid var(--border);border-radius:7px;height:34px}.grad-preset:hover{border-color:var(--accent-dim)}.proj-item{border:1px solid var(--border);cursor:pointer;background:var(--bg-2);border-radius:7px;justify-content:space-between;align-items:center;margin-bottom:6px;padding:8px 10px;display:flex}.proj-item:hover{border-color:var(--accent-dim)}.proj-item .pname{font-size:12px;font-weight:500}.proj-item .pmeta{color:var(--text-2);font-size:10px}#center{background:var(--bg-0);flex-direction:column;flex:1;min-width:0;display:flex;position:relative}#canvas-toolbar{border-bottom:1px solid var(--border-soft);background:var(--bg-1);flex:0 0 38px;align-items:center;gap:6px;height:38px;padding:0 12px;display:flex}.zoom-readout{font-family:var(--font-mono);color:var(--text-1);text-align:center;width:44px;font-size:11px}#canvas-toolbar .spacer{flex:1}.pill-toggle{color:var(--text-1);cursor:pointer;border:1px solid var(--border);background:var(--bg-2);border-radius:20px;align-items:center;gap:6px;padding:5px 9px;font-size:11.5px;display:flex}.pill-toggle.on{color:var(--accent);border-color:var(--accent-dim);background:var(--accent-soft)}.switch{background:var(--border);border-radius:9px;flex:0 0 26px;width:26px;height:15px;transition:all .15s;position:relative}.switch:after{content:"";background:var(--text-1);border-radius:50%;width:11px;height:11px;transition:all .15s;position:absolute;top:2px;left:2px}.pill-toggle.on .switch{background:var(--accent-dim)}.pill-toggle.on .switch:after{background:#06231a;left:13px}#stage-scroll{flex:1;justify-content:center;align-items:center;display:flex;position:relative;overflow:auto}#stage-wrap{position:relative;box-shadow:0 0 0 1px #ffffff0f,0 20px 60px -20px #000000b3}.canvas-label{color:var(--text-2);font-size:11px;font-family:var(--font-mono);position:absolute;top:-24px;left:0}#filmstrip-bar{border-top:1px solid var(--border);background:var(--bg-1);flex:0 0 118px;align-items:center;gap:14px;padding:0 14px;display:flex;overflow-x:auto}.flow-toggle{border:1px solid var(--border);cursor:pointer;background:var(--bg-2);border-radius:10px;flex-direction:column;flex:none;align-items:center;gap:6px;padding:10px 12px;transition:all .15s;display:flex}.flow-toggle.on{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset,0 0 18px -4px var(--accent);background:var(--accent-soft)}.flow-toggle .ft-label{color:var(--text-1);letter-spacing:.3px;text-transform:uppercase;font-size:10px;font-weight:600}.flow-toggle.on .ft-label{color:var(--accent)}.flow-dots{gap:3px;display:flex}.flow-dots span{background:var(--text-2);border-radius:50%;width:5px;height:5px}.flow-toggle.on .flow-dots span{background:var(--accent)}#filmstrip{flex:1;align-items:center;gap:2px;height:100%;padding:12px 0;display:flex;overflow-x:auto}.fs-item{cursor:pointer;flex-direction:column;flex:none;align-items:center;gap:5px;display:flex;position:relative}.fs-thumb{border:2px solid var(--border);background:#fff;border-radius:6px;width:56px;height:94px;transition:all .12s;position:relative;overflow:hidden}.fs-item.active .fs-thumb{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.fs-name{color:var(--text-2);text-overflow:ellipsis;white-space:nowrap;max-width:60px;font-size:9.5px;overflow:hidden}.fs-item.active .fs-name{color:var(--text-0)}.fs-connector{background:var(--border);flex:0 0 14px;width:14px;height:2px;position:relative}.fs-connector.on{background:var(--accent)}.fs-connector.on:after{content:"";border-top:3px solid #0000;border-bottom:3px solid #0000;border-left:5px solid var(--accent);width:0;height:0;position:absolute;top:-2px;right:-3px}.fs-add{border:1.5px dashed var(--border);width:56px;height:94px;color:var(--text-2);cursor:pointer;background:0 0;border-radius:6px;flex:0 0 56px;justify-content:center;align-items:center;font-size:20px;display:flex}.fs-add:hover{border-color:var(--accent-dim);color:var(--accent)}.fs-del{background:var(--danger);color:#fff;cursor:pointer;border:none;border-radius:50%;justify-content:center;align-items:center;width:16px;height:16px;font-size:10px;display:none;position:absolute;top:-5px;right:-5px}.fs-dup{background:var(--accent);color:#062018;cursor:pointer;border:none;border-radius:50%;justify-content:center;align-items:center;width:16px;height:16px;padding:0;font-size:10px;line-height:1;display:none;position:absolute;top:-5px;left:-5px}.fs-item:hover .fs-del,.fs-item:hover .fs-dup{display:flex}#right{background:var(--bg-1);border-left:1px solid var(--border);flex-direction:column;flex:0 0 272px;width:272px;min-height:0;display:flex}#props-scroll{border-bottom:1px solid var(--border-soft);flex:0 auto;max-height:62%;padding:12px 14px;overflow-y:auto}.field-row{gap:8px;margin-bottom:9px;display:flex}.field{flex:1;min-width:0}.field label{color:var(--text-2);letter-spacing:.2px;margin-bottom:4px;font-size:10.5px;font-weight:600;display:block}.field input[type=text],.field input[type=number],.field select,.field textarea{background:var(--bg-2);border:1px solid var(--border);width:100%;color:var(--text-0);font-size:12px;font-family:var(--font-mono);border-radius:6px;padding:6px 8px}.field select{font-family:var(--font-body)}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--focus);outline:none}.field input[type=color]{border:1px solid var(--border);background:var(--bg-2);cursor:pointer;border-radius:6px;width:32px;height:28px;padding:2px}.color-field{align-items:center;gap:6px;display:flex}.color-field input[type=text]{flex:1}.range-row{align-items:center;gap:8px;display:flex}.range-row input[type=range]{accent-color:var(--accent);flex:1}.range-val{font-family:var(--font-mono);color:var(--text-1);text-align:right;width:34px;font-size:11px}.seg{border:1px solid var(--border);border-radius:6px;display:flex;overflow:hidden}.seg button{background:var(--bg-2);color:var(--text-1);cursor:pointer;border:none;border-right:1px solid var(--border);flex:1;padding:6px 4px;font-size:11px}.seg button:last-child{border-right:none}.seg button.active{background:var(--accent);color:#062018;font-weight:600}.toggle-row{justify-content:space-between;align-items:center;margin-bottom:9px;display:flex}.toggle-row label{color:var(--text-1);font-size:11px;font-weight:600}.chk-switch{background:var(--border);cursor:pointer;border-radius:10px;flex:0 0 30px;width:30px;height:17px;transition:all .15s;position:relative}.chk-switch:after{content:"";background:var(--text-1);border-radius:50%;width:13px;height:13px;transition:all .15s;position:absolute;top:2px;left:2px}.chk-switch.on{background:var(--accent-dim)}.chk-switch.on:after{background:#eafff5;left:15px}.divider{background:var(--border-soft);height:1px;margin:12px 0}.mini-label{color:var(--text-2);letter-spacing:.2px;margin-bottom:6px;font-size:10.5px;font-weight:600}#layers-head{align-items:center;padding:10px 14px 6px;display:flex}.panel-head{font-family:var(--font-display);color:var(--text-2);letter-spacing:.2px;text-transform:uppercase;flex:1;font-size:11px;font-weight:600}#layers-scroll{flex:1;padding:4px 8px 12px;overflow-y:auto}.layer-row{cursor:pointer;border:1px solid #0000;border-radius:6px;align-items:center;gap:6px;margin-bottom:2px;padding:6px;display:flex}.layer-row:hover{background:var(--bg-2)}.layer-row.selected{background:var(--accent-soft);border-color:var(--accent-dim)}.layer-icon{width:15px;height:15px;color:var(--text-2);flex:none;display:flex}.layer-name{color:var(--text-1);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:11.5px;overflow:hidden}.layer-row.selected .layer-name{color:var(--text-0)}.layer-btn{width:20px;height:20px;color:var(--text-2);cursor:pointer;background:0 0;border:none;border-radius:4px;flex:0 0 20px;justify-content:center;align-items:center;display:flex}.layer-btn:hover{background:var(--bg-3);color:var(--text-0)}.layer-btn.active-state{color:var(--accent)}.size-preset{border:1px solid var(--border);cursor:pointer;background:var(--bg-2);border-radius:7px;justify-content:space-between;align-items:center;margin-bottom:6px;padding:8px 9px;font-size:11.5px;display:flex}.size-preset:hover{border-color:var(--accent-dim)}.size-preset .sp-dim{color:var(--text-2);font-family:var(--font-mono);font-size:10.5px}.modal-overlay{z-index:200;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#05060899;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--bg-1);border:1px solid var(--border);border-radius:12px;width:340px;padding:20px;box-shadow:0 30px 80px -20px #0009}.modal h3{font-family:var(--font-display);margin:0 0 14px;font-size:15px}.modal-actions{justify-content:flex-end;gap:8px;margin-top:16px;display:flex}.toast{background:var(--bg-3);border:1px solid var(--border);color:var(--text-0);z-index:300;opacity:0;pointer-events:none;border-radius:8px;padding:9px 16px;font-size:12px;transition:opacity .2s,transform .2s;position:fixed;bottom:130px;left:50%;transform:translate(-50%);box-shadow:0 10px 30px -10px #0009}.toast.show{opacity:1;transform:translate(-50%)translateY(-4px)}
