.ox-ed-tools { display: flex; flex-wrap: wrap; gap: 8px; margin: 10px 0; }
.ox-ed-tools .ox-chip { min-height: 44px; }
.ox-ed-opts { display: grid; grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); gap: 10px 14px; }
.ox-ed-color { padding: 4px; min-height: 48px; }
.ox-ed-wrap { padding: 8px; overflow: auto; }
.ox-ed-stage { position: relative; display: inline-block; max-width: none; line-height: 0; text-align: left; }
.ox-ed-canvas { display: block; background: #fff; max-width: none !important; }
.ox-ed-layer { position: absolute; inset: 0; touch-action: pan-y; }
.ox-ed-layer[data-tool="text"] { cursor: text; }
.ox-ed-layer[data-tool="rect"], .ox-ed-layer[data-tool="highlight"], .ox-ed-layer[data-tool="erase"] { cursor: crosshair; touch-action: none; }
.ox-ed-block { position: absolute; white-space: pre; line-height: normal; padding: 0; margin: 0; outline: none; color: transparent; cursor: text; border-radius: 1px; }
.ox-ed-layer[data-tool="edit"] .ox-ed-block:hover { outline: 1.5px dashed var(--accent); outline-offset: 1px; }
.ox-ed-block:focus { outline: 2px solid var(--accent); outline-offset: 2px; }
.ox-ed-block.is-changed { box-shadow: 0 0 0 2px rgba(255, 255, 255, .0); }
.ox-ed-layer:not([data-tool="edit"]) .ox-ed-block { pointer-events: none; }
.ox-ed-obj { position: absolute; line-height: normal; }
.ox-ed-obj.is-sel { outline: 2px solid var(--accent); }
.ox-ed-text { white-space: pre; outline: none; min-width: 20px; cursor: text; padding: 0 2px; font-weight: 500; }
.ox-ed-obj img { width: 100%; height: 100%; display: block; pointer-events: none; }
.ox-ed-ghost { position: absolute; border: 2px dashed var(--accent); background: color-mix(in srgb, var(--accent) 12%, transparent); pointer-events: none; }
.ox-ed-x, .ox-ed-move, .ox-ed-resize { position: absolute; display: none; font-size: 14px; }
.ox-ed-obj:hover .ox-ed-x, .ox-ed-obj:hover .ox-ed-move, .ox-ed-obj:hover .ox-ed-resize, .ox-ed-obj.is-sel .ox-ed-x, .ox-ed-obj.is-sel .ox-ed-move, .ox-ed-obj.is-sel .ox-ed-resize, .ox-ed-obj:focus-within .ox-ed-x, .ox-ed-obj:focus-within .ox-ed-move { display: grid; }
.ox-ed-x { top: -16px; right: -16px; width: 32px; height: 32px; min-height: 0; border-radius: 50%; border: 0; background: var(--err); color: #fff; font-weight: 900; place-items: center; cursor: pointer; z-index: 3; }
.ox-ed-move { top: -16px; left: -16px; width: 32px; height: 32px; border-radius: 50%; background: var(--accent); color: #fff; place-items: center; cursor: grab; touch-action: none; z-index: 3; }
.ox-ed-resize { right: -10px; bottom: -10px; width: 22px; height: 22px; border-radius: 6px; background: var(--accent); border: 2px solid #fff; cursor: nwse-resize; touch-action: none; z-index: 3; }
.ox-ed-page { font-weight: 800; min-width: 90px; text-align: center; }
.ox-ed-prevcanvas { max-width: 100%; height: auto; background: #fff; }
