*{box-sizing:border-box;margin:0;padding:0}
body{background:#0b0d11;color:#e7ebf3;font:12px/1.45 ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;padding:12px}
#app{width:100%;max-width:1400px;margin:0 auto;background:#12141a;border:1px solid #262b36;border-radius:14px;overflow:hidden;display:flex;flex-direction:column}
header{display:flex;align-items:center;gap:10px;padding:8px 10px;background:#171a22;border-bottom:1px solid #262b36;flex-wrap:wrap}
.brand{font-size:12px;font-weight:500;color:#cfd7e6;display:flex;align-items:center;gap:7px}
.brand b{color:#7aa2ff;font-weight:500}
.dot{width:8px;height:8px;border-radius:50%;background:#7aa2ff;display:inline-block}
.tools{display:flex;gap:4px}
.spacer{flex:1}
.tb{background:#232833;color:#cfd7e6;border:1px solid #303845;border-radius:7px;padding:5px 9px;font:inherit;font-size:11px;cursor:pointer}
.tb:hover{border-color:#4a5568;background:#2a3140}
.tb.on{background:#2b4a8f;border-color:#3f68c4;color:#eaf1ff}
.tb.primary{background:#2f66d6;border-color:#3f7ae8;color:#fff}
.tb.primary:hover{background:#3b74e6}
#main{display:flex;height:396px}
aside{width:170px;background:#171a22;padding:9px;overflow-y:auto;flex-shrink:0}
#left{border-right:1px solid #262b36}
#right{border-left:1px solid #262b36;width:186px}
aside h4{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:#7f8b9f;margin:10px 0 6px;font-weight:500}
aside h4:first-child{margin-top:0}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:4px}
.ps,.wide{background:#222834;color:#c8d2e2;border:1px solid #2e3745;border-radius:6px;padding:5px;font:inherit;font-size:11px;cursor:pointer;width:100%;margin-bottom:4px}
.ps:hover,.wide:hover{background:#2b3444;border-color:#43516a}
.row{display:flex;align-items:center;justify-content:space-between;gap:6px;color:#9aa6b8;font-size:11px;margin-bottom:5px}
input[type=color]{width:44px;height:20px;background:#222834;border:1px solid #303845;border-radius:5px;padding:1px;cursor:pointer}
input[type=number],input[type=range]{background:#222834;border:1px solid #303845;border-radius:5px;color:#dfe6f2;font:inherit;font-size:11px;padding:2px 4px}
input[type=number]{width:56px}
input[type=range]{width:100%;padding:0;accent-color:#3f7ae8}
.hint{font-size:10.5px;color:#75808f;line-height:1.4;margin-top:6px}
#stage{flex:1;position:relative;display:flex;align-items:center;justify-content:center;background:#0d0f13;padding:8px;min-width:0}
#canvasWrap{width:100%;aspect-ratio:16/9;max-height:100%;display:flex}
canvas{width:100%;height:100%;display:block;border-radius:8px;background:#171a21;cursor:crosshair;touch-action:none}
#hud{position:absolute;left:14px;bottom:12px;display:flex;gap:10px;font-size:10px;color:#7b8698;background:#11141aee;padding:3px 8px;border-radius:6px;border:1px solid #262b36}
#timeline{background:#171a22;border-top:1px solid #262b36;padding:7px 9px 9px}
#tlBar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:7px}
.sep{width:1px;height:16px;background:#2c333f;margin:0 3px}
#tc{font-size:10.5px;color:#7f8b9f;font-variant-numeric:tabular-nums}
#ruler{height:16px;border-bottom:1px solid #262b36;position:relative;cursor:pointer;background:repeating-linear-gradient(90deg,#1d222c 0 1px,transparent 1px 20px)}
#track{position:relative;height:30px;background:#141821;border-radius:6px;margin-top:4px;cursor:pointer}
#keys{position:absolute;inset:0}
.kf{position:absolute;top:8px;width:9px;height:9px;background:#f0b73f;border:1px solid #b8862a;border-radius:2px;transform:translateX(-4px) rotate(45deg)}
.kf.cur{background:#fff;border-color:#fff}
#ph{position:absolute;top:-4px;bottom:-4px;width:2px;background:#ff5a5a;pointer-events:none}
#ph::before{content:"";position:absolute;top:-1px;left:-4px;width:10px;height:8px;background:#ff5a5a;border-radius:2px}
.propRow{margin-bottom:7px}
.propRow label{display:block;font-size:10px;color:#8b97a9;margin-bottom:2px}
.swatch{display:flex;gap:4px;flex-wrap:wrap}
.swatch button{width:16px;height:16px;border-radius:4px;border:1px solid #00000055;cursor:pointer}
#selTag{font-size:10.5px;color:#9aa6b8;margin-bottom:8px}
#selTag b{color:#7aa2ff;font-weight:500}
@media (max-width:820px){
  aside{width:140px}
  #right{width:150px}
  #main{height:320px}
}
