:root{color-scheme:light;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:#eef2f7;color:#172033}*{box-sizing:border-box}html,body,#root{width:100%;height:100%;margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer}.designer{display:grid;grid-template-columns:auto 1fr auto;width:100vw;height:100vh;overflow:hidden;background:#e8edf4}.side-panel{z-index:10;display:flex;flex-direction:column;height:100vh;background:#f8fafc;border-color:#d8e0eb;border-style:solid;color:#1e293b;transition:width .18s ease}.side-panel.floating{position:absolute;box-shadow:0 18px 48px #0f172a2e}.left-panel.floating{left:0}.right-panel.floating{right:0}.left-panel{border-width:0 1px 0 0}.right-panel{border-width:0 0 0 1px}.side-panel.open{width:clamp(248px,20vw,332px)}.side-panel.closed{width:48px}.side-panel.closed .panel-header{grid-template-columns:32px;justify-content:center}.panel-header{display:grid;grid-template-columns:32px 1fr 32px;align-items:center;min-height:52px;gap:8px;padding:10px 8px;border-bottom:1px solid #d8e0eb}.panel-header h1,.panel-header h2{margin:0;overflow:hidden;font-size:15px;font-weight:760;line-height:1.2;text-overflow:ellipsis;white-space:nowrap}.panel-content{display:flex;flex:1;flex-direction:column;gap:10px;min-height:0;overflow-y:auto;padding:10px}.concertina{display:flex;flex-direction:column;gap:8px;padding-bottom:10px;border-bottom:1px solid #d8e0eb}.concertina h2,.concertina h3{margin:0;color:#475569;font-size:12px;font-weight:760;letter-spacing:0;text-transform:uppercase}.object-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.object-tool,.action-button,.icon-button,.mode-pill,.toggle{border:1px solid #cbd5e1;background:#fff;color:#1e293b}.object-tool{display:grid;min-height:58px;place-items:center;gap:4px;padding:7px 4px;border-radius:8px;text-align:center}.object-tool span{max-width:100%;overflow-wrap:anywhere;font-size:11px;font-weight:650}.button-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}.action-button,.icon-text-button,.mode-pill,.toggle{display:inline-flex;align-items:center;justify-content:center;min-height:34px;gap:7px;padding:0 10px;border-radius:8px;font-size:13px;font-weight:680}.icon-text-button{min-height:30px;gap:5px;padding:0 7px;border-radius:8px;font-size:12px;font-weight:720}.icon-button{display:grid;width:32px;height:32px;place-items:center;padding:0;border-radius:8px}.workspace{position:relative;min-width:0;min-height:0;overflow:hidden}.topbar{position:absolute;z-index:8;top:12px;left:50%;display:flex;max-width:calc(100% - 32px);align-items:center;gap:8px;overflow-x:auto;padding:6px;border:1px solid #d8e0eb;border-radius:8px;background:#f8fafceb;box-shadow:0 12px 32px #0f172a1f;transform:translate(-50%)}.toggle input{width:14px;height:14px;margin:0}.canvas{position:absolute;inset:0;overflow:hidden;-webkit-user-select:none;user-select:none;touch-action:none}.canvas.grid-visible:before{position:absolute;inset:0;content:"";background-image:linear-gradient(rgb(15 23 42 / 8%) 1px,transparent 1px),linear-gradient(90deg,rgb(15 23 42 / 8%) 1px,transparent 1px);background-size:5% 5%;pointer-events:none}.bleed-margin{position:absolute;inset:3%;border:1px dashed rgb(220 38 38 / 70%);pointer-events:none}.guide{position:absolute;z-index:4;background:#0ea5e9;pointer-events:none}.guide.vertical{top:0;width:1px;height:100%}.guide.horizontal{left:0;width:100%;height:1px}.canvas-object{position:absolute;z-index:2;display:grid;place-items:center;box-shadow:0 10px 24px #0f172a1f;touch-action:none}.canvas-object.vector-object{box-shadow:none}.canvas-object.selected{outline:2px solid #0ea5e9;outline-offset:2px}.canvas-object img{width:100%;height:100%;border-radius:inherit;pointer-events:none}.shape-svg{width:100%;height:100%;overflow:visible;pointer-events:none}.line-end-handle{position:absolute;z-index:5;width:14px;height:14px;padding:0;border:2px solid #ffffff;border-radius:999px;background:#0ea5e9;box-shadow:0 2px 8px #0f172a47;transform:translate(-50%,-50%);touch-action:none}.line-end-handle:hover{background:#0284c7}.bubble-svg{position:absolute;inset:0}.bubble-text{z-index:1;display:flex;width:82%;height:62%;align-items:center;justify-content:center;padding:4%;line-height:1.15;overflow-wrap:anywhere;pointer-events:none;text-align:center}.text-object{display:flex;width:100%;height:100%;align-items:center;justify-content:center;padding:4%;line-height:1.05;overflow-wrap:anywhere;text-align:center}.auto-fit-text-content{display:block;max-width:100%;overflow-wrap:anywhere;white-space:pre-wrap}.image-placeholder{display:grid;width:100%;height:100%;place-items:center;color:#64748b;font-size:14px;font-weight:760}.code-object,.barcode-object{display:grid;width:100%;height:100%;place-items:center;overflow:hidden;padding:5%;pointer-events:none}.code-object svg,.barcode-object svg{display:block;max-width:100%;max-height:100%;width:100%;height:100%}.progress-object{width:100%;height:100%;overflow:hidden;border-radius:inherit;background:#ffffffb8;pointer-events:none}.progress-fill{height:100%}.context-menu{position:fixed;z-index:30;display:grid;min-width:178px;overflow:hidden;padding:5px;border:1px solid #cbd5e1;border-radius:8px;background:#fff;box-shadow:0 18px 46px #0f172a38}.context-menu button{display:flex;width:100%;min-height:30px;align-items:center;gap:8px;border:0;border-radius:6px;background:transparent;color:#1e293b;padding:0 8px;font-size:13px;font-weight:650;text-align:left}.context-menu button:hover{background:#eef2f7}.context-menu button.danger{color:#b91c1c}.context-menu button.danger:hover{background:#fee2e2}.context-divider{height:1px;margin:5px 2px;background:#e2e8f0}.resize-handle{position:absolute;z-index:5;width:14px;height:14px;padding:0;border:2px solid #ffffff;border-radius:999px;background:#0ea5e9;box-shadow:0 4px 12px #0f172a3d}.resize-handle.nw{top:-8px;left:-8px;cursor:nwse-resize}.resize-handle.n{top:-8px;left:calc(50% - 7px);cursor:ns-resize}.resize-handle.ne{top:-8px;right:-8px;cursor:nesw-resize}.resize-handle.e{top:calc(50% - 7px);right:-8px;cursor:ew-resize}.resize-handle.se{right:-8px;bottom:-8px;cursor:nwse-resize}.resize-handle.s{bottom:-8px;left:calc(50% - 7px);cursor:ns-resize}.resize-handle.sw{bottom:-8px;left:-8px;cursor:nesw-resize}.resize-handle.w{top:calc(50% - 7px);left:-8px;cursor:ew-resize}label{display:grid;gap:4px;color:#475569;font-size:12px;font-weight:720}input,select,textarea{width:100%;min-height:30px;border:1px solid #cbd5e1;border-radius:8px;background:#fff;color:#0f172a;padding:4px 7px}input[type=color]{padding:3px;min-height:30px}textarea{min-height:62px;resize:vertical}.field-grid{display:grid;grid-template-columns:repeat(4,minmax(48px,1fr));gap:6px}.field-grid input[type=number]{min-width:0;text-align:center;padding-inline:3px}.compact-grid{display:grid;gap:6px;align-items:end}.compact-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.stroke-grid{grid-template-columns:minmax(52px,.75fr) minmax(64px,1fr)}.compact-grid input[type=color]{width:100%}.compact-grid input[type=number]{min-width:0;text-align:center}.z-order-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.z-order-grid .icon-text-button{min-width:0}.gradient-colours{display:grid;grid-template-columns:1fr 64px 1fr;align-items:end;gap:8px}.swap-button{min-height:34px;border:1px solid #cbd5e1;border-radius:8px;background:#fff;color:#1e293b;font-size:12px;font-weight:720}.gradient-preview{height:42px;border:1px solid #cbd5e1;border-radius:8px}.binding-panel{display:grid;gap:7px;padding:8px;border:1px solid #d8e0eb;border-radius:8px;background:#f8fafc}.inline-toggle{display:flex;align-items:center;gap:7px}.inline-toggle input{width:14px;min-height:14px;margin:0}.binding-preview{min-height:28px;overflow:hidden;border:1px solid #cbd5e1;border-radius:8px;background:#fff;color:#334155;padding:5px 7px;font-size:12px;line-height:1.35;overflow-wrap:anywhere}.binding-preview.error{border-color:#fecaca;background:#fef2f2;color:#991b1b}.empty-state{margin:0;color:#64748b;font-size:13px;line-height:1.4}@media(max-width:820px){.designer{grid-template-columns:48px 1fr 48px}.side-panel.open{position:absolute;width:min(82vw,320px)}.right-panel.open{right:0}.topbar{top:8px}}
