:root{--primary-color: #4a90e2;--bg-color: #f0f2f5;--panel-bg: #ffffff;--border-color: #e1e4e8;--text-color: #2c3e50;--error-color: #ff0000}*{box-sizing:border-box}body{margin:0;overflow:hidden;font-family:Inter,Segoe UI,sans-serif;background-color:var(--bg-color);color:var(--text-color)}.app-container{display:flex;width:100vw;height:100vh}@media (max-width: 768px){.app-container{flex-direction:column}.editor-panel{width:100%!important;height:60%!important;border-right:none;border-bottom:1px solid var(--border-color)}.preview-panel{width:100%!important;height:40%!important}.view-controls{bottom:10px!important}}.editor-panel{width:50%;background:var(--panel-bg);border-right:1px solid var(--border-color);display:flex;flex-direction:column;z-index:10;position:relative}.editor-header{padding:10px 15px;border-bottom:1px solid var(--border-color);display:flex;justify-content:space-between;align-items:center;background:#fff}.editor-header h2{margin:0;font-size:1.1rem}.header-actions{display:flex;gap:5px}.toolbar{padding:10px 15px;display:flex;gap:8px;width:100%;justify-content:flex-start;border-bottom:1px solid var(--border-color);background:#f8f9fa}.tool-btn{background:#fff;border:1px solid #ddd;border-radius:6px;padding:8px 12px;cursor:pointer;font-size:.9rem;display:flex;align-items:center;justify-content:center;gap:5px;font-weight:500}.tool-btn:hover{background:#f1f3f5}.tool-btn.primary{background:var(--primary-color);color:#fff;border:none}.tool-btn.small{padding:5px 10px;font-size:.8rem}.tool-btn.active{background:#e3f2fd;border-color:var(--primary-color);color:var(--primary-color)}.full-width{width:100%}.upload-btn-wrapper{position:relative;overflow:hidden}.upload-btn-wrapper input[type=file]{position:absolute;left:0;top:0;opacity:0;width:100%;height:100%;cursor:pointer}.canvas-workspace{flex:1;background:#e9ecef;display:flex;justify-content:center;align-items:center;position:relative;overflow:hidden}#workspace-container{width:100%;height:100%;position:relative;cursor:grab;display:flex;justify-content:center;align-items:center}#workspace-container.panning{cursor:grabbing}#canvas-viewport{position:absolute;transform-origin:center center}#canvas-wrapper{position:relative;box-shadow:0 0 20px #0000001a;background:#fff;transition:border .2s ease}#canvas-wrapper.canvas-overflow{border:3px solid var(--error-color)!important;box-shadow:0 0 20px #ff00004d}.zoom-controls{position:absolute;bottom:20px;left:20px;background:#fff;padding:5px;border-radius:8px;box-shadow:0 2px 10px #0000001a;display:flex;gap:5px;align-items:center;z-index:20}#zoom-level{font-size:.8rem;min-width:40px;text-align:center}.grid-line{position:absolute;top:0;bottom:0;border-left:1px dashed rgba(74,144,226,.4);pointer-events:none;z-index:1}.grid-40{left:20%}.grid-100{left:50%;border-left-color:#4a90e299;border-left-width:2px}.grid-160{left:80%}.snap-guide{position:absolute;background:#f0f;pointer-events:none;z-index:100;opacity:0;transition:opacity .1s ease}.snap-guide.visible{opacity:1}.snap-v{top:0;bottom:0;width:2px}.snap-h{left:0;right:0;height:2px}#gizmo-overlay{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.gizmo-box{position:absolute;border:2px dashed var(--primary-color);pointer-events:none}.gizmo-handle{position:absolute;width:12px;height:12px;background:#fff;border:2px solid var(--primary-color);border-radius:50%;pointer-events:auto;cursor:pointer}.handle-tl{top:-6px;left:-6px;cursor:nwse-resize}.handle-tr{top:-6px;right:-6px;cursor:nesw-resize}.handle-bl{bottom:-6px;left:-6px;cursor:nesw-resize}.handle-br{bottom:-6px;right:-6px;cursor:nwse-resize}.handle-rot{top:-25px;left:50%;transform:translate(-50%);cursor:grab;background:var(--primary-color)}.rot-line{position:absolute;top:-25px;left:50%;height:25px;border-left:1px solid var(--primary-color)}.layer-properties{padding:10px 15px;background:#f8f9fa;border-top:1px solid var(--border-color);display:none;max-height:45%;overflow-y:auto}.layer-properties.active{display:block}.prop-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.prop-header h3{margin:0;font-size:.9rem}.icon-btn{background:none;border:1px solid transparent;cursor:pointer;color:#666;padding:6px;border-radius:4px}.icon-btn:hover{background:#e9ecef}.icon-btn.active{background:#e3f2fd;color:var(--primary-color);border-color:#b6d4fe}.props-group{margin-bottom:15px;border-bottom:1px solid #e9ecef;padding-bottom:10px}.props-group:last-child{border-bottom:none}.props-group label{display:block;font-size:.75rem;color:#888;margin-bottom:5px;text-transform:uppercase;font-weight:600}.transform-row{display:flex;align-items:center;gap:5px}.input-wrapper{position:relative;flex:1;display:flex;align-items:center}.input-wrapper input{width:100%;padding:6px 6px 6px 20px;border:1px solid #ddd;border-radius:4px;font-size:.9rem}.input-wrapper .unit{position:absolute;left:6px;top:50%;transform:translateY(-50%);font-size:.7rem;color:#999;font-weight:700}.link-btn{padding:4px 8px;font-size:.8rem}.reset-btn{position:absolute;right:2px;top:50%;transform:translateY(-50%);background:none;border:none;color:#ccc;cursor:pointer;padding:4px;font-size:.7rem;opacity:.5;transition:opacity .2s}.reset-btn:hover{opacity:1;color:var(--primary-color)}.input-wrapper input{padding-right:20px}.align-controls{display:flex;gap:5px;margin-bottom:5px}.align-controls button{flex:1;padding:4px;font-size:.75rem;background:#fff;border:1px solid #ddd;border-radius:4px;cursor:pointer}.align-controls button:hover{background:#f1f3f5}.prop-row{display:flex;align-items:center;gap:10px;margin-bottom:8px}.prop-row textarea,.prop-row select{flex:1;padding:5px;border:1px solid #ddd;border-radius:4px}.prop-row input[type=color]{width:40px;height:30px;border:none;padding:0;cursor:pointer}.prop-row input[type=range]{flex:1}.word-colors-list{display:flex;flex-wrap:wrap;gap:8px;max-height:100px;overflow-y:auto}.word-color-item{display:flex;align-items:center;gap:5px;background:#fff;padding:3px 6px;border:1px solid #ddd;border-radius:4px;font-size:.8rem}.word-color-item span{max-width:80px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.word-color-item input[type=color]{width:20px;height:20px;border:none;padding:0;cursor:pointer}.quick-dims-grid{display:flex;gap:5px;margin-bottom:10px}.quick-dims-grid button{flex:1;font-size:.75rem}.crop-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:10px}.crop-item{display:flex;flex-direction:column;gap:2px}.crop-item span{font-size:.75rem;color:#666}.crop-item input{width:100%}.layers-drawer{position:absolute;left:0;top:0;bottom:0;width:280px;background:#fff;border-right:1px solid var(--border-color);z-index:50;transform:translate(-100%);transition:transform .3s ease;display:flex;flex-direction:column;box-shadow:2px 0 10px #0000001a}.layers-drawer.open{transform:translate(0)}.drawer-header{padding:15px;border-bottom:1px solid var(--border-color);display:flex;justify-content:space-between;align-items:center}.drawer-header h3{margin:0}.layers-list{flex:1;overflow-y:auto}.layer-item{padding:10px 15px;border-bottom:1px solid #f0f0f0;cursor:pointer;display:flex;align-items:center;gap:10px;font-size:.9rem}.layer-item:hover{background:#f8f9fa}.layer-item.active{background:#e3f2fd;color:var(--primary-color);font-weight:600;border-left:3px solid var(--primary-color)}.layer-actions{margin-left:auto;display:flex;gap:5px;opacity:0}.layer-item:hover .layer-actions{opacity:1}.layer-btn{background:none;border:none;cursor:pointer;color:#999;padding:4px}.layer-btn:hover{color:#333}.layer-btn.del:hover{color:#dc3545}.preview-panel{width:50%;position:relative;background:radial-gradient(circle at center,#f8f9fa,#e9ecef)}#canvas-container{width:100%;height:100%}.view-controls{position:absolute;bottom:40px;left:50%;transform:translate(-50%);display:flex;gap:10px;background:#fffc;padding:5px 10px;border-radius:20px;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.view-btn{border:none;background:transparent;cursor:pointer;font-size:.8rem;font-weight:600;color:#555;padding:5px 10px;border-radius:15px}.view-btn:hover{background:#eee;color:var(--primary-color)}.view-btn.active{background:var(--primary-color);color:#fff}.hidden{display:none}
