*{margin:0;padding:0;box-sizing:border-box}body{height:100vh;overflow:hidden;font-family:sans-serif;background:#1a1a1a}#app{display:flex;flex-direction:row;height:100%}#main-area{flex:1;display:flex;flex-direction:column;min-width:0}#canvas-area{flex:1;overflow-y:auto;min-height:0;position:relative}#floating-toolbar{position:absolute;top:12px;left:12px;display:flex;gap:6px;z-index:10}#canvas{display:block;background:#fff;cursor:crosshair;touch-action:none;width:100%;aspect-ratio:2 / 3}#canvas.no-draw{cursor:not-allowed}#panel{width:240px;background:#222;border-left:1px solid #333;display:flex;flex-direction:column;color:#ccc}body.panel-left #panel{order:-1;border-left:none;border-right:1px solid #333}#controls{display:flex;flex-wrap:wrap;gap:8px;padding:12px;border-bottom:1px solid #333}#bottom-bar{display:flex;align-items:center;gap:8px;padding:8px 12px;background:#222;border-top:1px solid #333}button{padding:6px 14px;border:none;border-radius:6px;font-size:13px;font-weight:600;cursor:pointer;transition:opacity .1s}button:hover{opacity:.85}button:disabled{opacity:.4;cursor:default}#btn-undo,#btn-redo{background:#333;color:#ccc;box-shadow:0 1px 4px #0006;padding:6px 8px;display:flex;align-items:center}#btn-play{background:#4f8ef7;color:#fff}#btn-clear{background:#e55;color:#fff}#btn-export,#btn-import{background:#555;color:#fff}#scrubber{flex:1;accent-color:#4f8ef7;cursor:pointer}#scrubber:disabled{opacity:.4;cursor:default}#btn-smooth,#btn-cap-dt,#btn-align,#btn-align-apply,#btn-settings{background:#555;color:#fff}#btn-settings{flex:0 0 auto;padding:6px 8px;display:flex;align-items:center}#btn-smooth.active,#btn-cap-dt.active,#btn-align.active{background:#4f8ef7}.check-row{width:100%;display:flex;align-items:center;gap:7px;font-size:13px;font-weight:600;color:#ccc;cursor:pointer;accent-color:#4f8ef7}.section-label{width:100%;font-size:11px;font-weight:600;color:#666;text-transform:uppercase;letter-spacing:.06em}.btn-row button,.btn-row input[type=number]{flex:1;min-width:0}.btn-row input[type=number]{background:#1a1a1a;border:1px solid #444;border-radius:4px;color:#eee;font-size:13px;padding:4px 6px;outline:none}.btn-row{display:flex;gap:8px;width:100%}.btn-row button{flex:1}dialog{background:#2a2a2a;border:1px solid #444;border-radius:8px;color:#ccc;padding:20px;min-width:260px;position:fixed;top:50%;left:50%;translate:-50% -50%;margin:0}dialog::backdrop{background:#00000080}.dialog-field{display:flex;flex-direction:column;gap:4px;margin-bottom:14px;font-size:13px}.dialog-field label{color:#888;display:flex;align-items:center;gap:6px}.dialog-field input[type=text]{background:#1a1a1a;border:1px solid #444;border-radius:4px;color:#eee;font-size:13px;padding:5px 8px;outline:none}.dialog-field input[type=text]:focus{border-color:#4f8ef7}.dialog-actions{display:flex;gap:8px;justify-content:flex-end}#export-confirm{background:#4f8ef7;color:#fff}#export-cancel,#settings-close,#btn-settings-reset{background:#555;color:#fff}#status{font-size:12px;color:#888;align-self:center}#stroke-list{flex:1;overflow-y:auto;padding:10px}.stroke-row{background:#2a2a2a;border:1px solid #383838;border-radius:6px;padding:8px 10px;cursor:pointer}.stroke-row.selected{border-color:#4f8ef7;background:#1e2d3d}.stroke-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.stroke-label{font-size:11px;font-weight:600;color:#888;text-transform:uppercase;letter-spacing:.05em}.stroke-actions{display:flex;gap:2px;align-items:center}.btn-delete,.btn-move-up,.btn-move-down{background:none;border:none;color:#666;font-size:14px;line-height:1;padding:0 2px;cursor:pointer;border-radius:3px}.btn-delete{font-size:16px}.btn-delete:hover{color:#e55}.btn-move-up:hover:not(:disabled),.btn-move-down:hover:not(:disabled){color:#4f8ef7}.stroke-fields{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px}.stroke-fields label{display:flex;flex-direction:column;gap:2px;font-size:11px;color:#777}.stroke-fields input{width:100%;background:#1a1a1a;border:1px solid #444;border-radius:4px;color:#eee;font-size:12px;padding:3px 5px;outline:none}.stroke-fields input:focus{border-color:#4f8ef7}#no-strokes{font-size:12px;color:#555;text-align:center;margin-top:20px}.stroke-cursor{height:22px;cursor:pointer;position:relative;display:flex;align-items:center}.stroke-cursor:before{content:"";position:absolute;left:0;right:0;height:2px;border-radius:1px;background:#4f8ef7;opacity:0;transition:opacity .1s}.stroke-cursor:hover:before{opacity:.4}.stroke-cursor.active:before{opacity:1}
