/* A4 designer canvas — screen only. Print styles arrive in Phase 4. */ .a4-canvas-container { flex: 1; overflow: auto; background: var(--desk); padding: var(--space-6); display: flex; justify-content: center; align-items: flex-start; } .a4-page { position: relative; background: #fff; color: #000; box-shadow: 0 2px 12px rgba(0, 0, 0, 0.35); flex: none; } .a4-page.crosshair { cursor: crosshair; } /* Margin and page-centre overlay — purely visual, never intercepts the mouse */ .a4-overlay { position: absolute; inset: 0; pointer-events: none; z-index: 1; } .a4-margin-line { position: absolute; border: 0 dashed #59a2e0; } .a4-margin-line.vertical { top: 0; bottom: 0; border-left-width: 1px; } .a4-margin-line.horizontal { left: 0; right: 0; border-top-width: 1px; } .a4-center-line { position: absolute; border: 0 dashed #e08db5; } .a4-center-line.vertical { top: 0; bottom: 0; border-left-width: 1px; } .a4-center-line.horizontal { left: 0; right: 0; border-top-width: 1px; } /* Smart alignment guides — shown only while dragging. A magenta accent, as Figma and PowerPoint use: it reads as UI chrome rather than as page content, which matters on a page that is otherwise black on white. Stays 1px at every zoom for the same reason — a guide marks a position, it does not have a width on the paper. */ .a4-guide-overlay { position: absolute; inset: 0; pointer-events: none; z-index: 20; } .a4-guide { position: absolute; background: #ff00c8; } .a4-guide--v { top: 0; bottom: 0; width: 1px; } .a4-guide--h { left: 0; right: 0; height: 1px; } /* Centre alignments get a distinct cyan so "centres match" is readable at a glance from "edges match" — the two look identical otherwise. */ .a4-guide--element-center, .a4-guide--page-center { background: #00b8d4; } /* Rubber-band selection rectangle */ .a4-selection-rectangle { position: absolute; border: 1px dashed var(--accent); background: var(--accent-soft); pointer-events: none; z-index: 15; } /* Preview mode — the pages layout() produced, stacked with a visible break. Same array the print path consumes, which is what makes "preview page count equals printed page count" structural rather than coincidental. */ .a4-preview-pages { display: flex; flex-direction: column; align-items: center; gap: 0; } .a4-preview-page-wrapper { display: flex; flex-direction: column; align-items: center; } .a4-preview-page-break { width: 100%; padding: var(--space-1-5) 0 var(--space-4); text-align: center; font-family: var(--font-sans); font-size: var(--fs-xs); color: var(--desk-text); border-top: 1px dashed color-mix(in srgb, var(--desk-text) 40%, transparent); margin-top: var(--space-4); } .a4-preview-el { position: absolute; box-sizing: border-box; overflow: hidden; white-space: pre-wrap; word-break: break-word; line-height: 1.2; }