@font-face{font-family:Inter Variable;src:url(fonts/InterVariable.woff2) format("woff2-variations");font-weight:100 900;font-style:normal;font-display:swap}@font-face{font-family:JetBrains Mono;src:url(fonts/JetBrainsMono-Regular.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:JetBrains Mono;src:url(fonts/JetBrainsMono-Medium.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap}:root{--font-ui: "Inter Variable", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--s1: 4px;--s2: 8px;--s3: 12px;--s4: 16px;--s5: 24px;--s6: 32px;--s7: 48px;--r1: 4px;--r2: 6px;--r3: 8px;--r4: 12px;--t-fast: 80ms cubic-bezier(.2,0,0,1);--t-base: .14s cubic-bezier(.2,0,0,1);--t-slow: .24s cubic-bezier(.2,0,0,1);--bar-h: 44px;--status-h: 28px;--rail-w: 248px;--rail-w-collapsed: 36px;--props-w: 320px;--line: var(--border);--line-hi: var(--border-hi);--bg-stage: var(--canvas-stage);--paper: var(--label-paper);--paper-grid: var(--grid-line);--paper-grid-major: var(--grid-line-major);--ruler-bg: var(--bg-1);--ruler-ink: var(--ink-3);--ruler-tick: var(--ink-4);--guide: var(--accent);--focus-ring: 0 0 0 1px var(--bg-1), 0 0 0 3px var(--accent-edge)}:root,:root[data-theme=dark]{color-scheme:dark;--bg-0: #000;--bg-1: #0a0b0d;--bg-2: #13141a;--bg-3: #1a1c24;--bg-4: #232636;--surface-raised: #13141a;--control-bg: #1a1c24;--control-bg-focus: #232636;--control-subtle-bg: #13141a;--control-subtle-bg-focus: #1a1c24;--code-bg: #000;--toast-bg: #1a1c24;--floating-bg: rgba(20,22,30,.95);--row-hover: rgba(255,255,255,.025);--kbd-bg: rgba(255,255,255,.04);--border: #1f2230;--border-hi: #2a2e40;--control-border: #1f2230;--ink-1: #ffffff;--ink-2: #b8bbc7;--ink-3: #7c8094;--ink-4: #4a4e5b;--accent: #4f7cff;--accent-hi: #6a91ff;--accent-lo: #3d62d6;--accent-ink: #ffffff;--accent-soft: rgba(79,124,255,.12);--accent-edge: rgba(79,124,255,.35);--accent-glow: rgba(79,124,255,.3);--brand-grad-end: #6e9aff;--welcome-grad-end: #7d9eff;--inset-highlight: rgba(255,255,255,.12);--good: #10b981;--warn: #f59e0b;--bad: #ef4444;--good-soft: rgba(16,185,129,.15);--warn-soft: rgba(245,158,11,.15);--bad-soft: rgba(239,68,68,.15);--type-text-bg: rgba(180,188,215,.15);--type-text-ink: #c8d1e8;--type-date-bg: rgba(79,124,255,.18);--type-date-ink: #8aa9ff;--type-counter-bg: rgba(245,158,11,.16);--type-counter-ink: #fbbf24;--type-prompt-bg: rgba(6,182,212,.18);--type-prompt-ink: #67e8f9;--type-barcode-bg: rgba(16,185,129,.16);--type-barcode-ink: #6ee7b7;--type-shape-bg: rgba(168,85,247,.18);--type-shape-ink: #c4b5fd;--type-image-bg: rgba(236,72,153,.18);--type-image-ink: #f9a8d4;--canvas-stage: #16181f;--bg-stage-grid: rgba(255,255,255,.025);--stage-glow: rgba(255,255,255,.018);--label-paper: #ffffff;--label-ink: #111111;--label-shadow: 0 16px 48px rgba(0,0,0,.6), 0 0 0 1px rgba(255,255,255,.08);--grid-line: rgba(0,0,0,.045);--grid-line-major: rgba(0,0,0,.09);--selection: rgba(79,124,255,.08);--guide-hover: rgba(79,124,255,.5);--handle: #ffffff;--handle-shadow: rgba(0,0,0,.4);--overlay: rgba(0,0,0,.65);--drop-overlay: rgba(11,15,23,.92);--shadow: 0 12px 40px rgba(0,0,0,.5);--shadow-menu: 0 12px 40px rgba(0,0,0,.5), 0 1px 0 rgba(255,255,255,.04) inset;--shadow-ctx: 0 12px 40px rgba(0,0,0,.6);--shadow-float: 0 8px 32px rgba(0,0,0,.6);--shadow-modal: 0 20px 60px rgba(0,0,0,.7)}@media(prefers-color-scheme:light){:root:not([data-theme]){color-scheme:light;--bg-0: #f6f6f4;--bg-1: #ffffff;--bg-2: #f4f4f1;--bg-3: #ecece8;--bg-4: #e2e2dd;--surface-raised: #ffffff;--control-bg: #ffffff;--control-bg-focus: #ffffff;--control-subtle-bg: #f4f4f1;--control-subtle-bg-focus: #ffffff;--code-bg: #f1f1ed;--toast-bg: #ffffff;--floating-bg: rgba(255,255,255,.96);--row-hover: rgba(40,40,30,.045);--kbd-bg: rgba(40,40,30,.06);--border: #e4e4e0;--border-hi: #d3d3cd;--control-border: #d3d3cd;--ink-1: #1b1b18;--ink-2: #44443e;--ink-3: #66665e;--ink-4: #85857c;--accent: #2f5fdf;--accent-hi: #2549b8;--accent-lo: #1d3c99;--accent-ink: #ffffff;--accent-soft: rgba(47,95,223,.1);--accent-edge: rgba(47,95,223,.42);--accent-glow: rgba(47,95,223,.24);--brand-grad-end: #5b86f2;--welcome-grad-end: #6a92f5;--inset-highlight: rgba(255,255,255,.18);--good: #047857;--warn: #9e4807;--bad: #c42b2b;--good-soft: rgba(4,120,87,.1);--warn-soft: rgba(217,119,6,.12);--bad-soft: rgba(220,38,38,.09);--type-text-bg: rgba(90,98,125,.12);--type-text-ink: #4a526e;--type-date-bg: rgba(47,95,223,.12);--type-date-ink: #2549b8;--type-counter-bg: rgba(217,119,6,.14);--type-counter-ink: #92400e;--type-prompt-bg: rgba(8,145,178,.13);--type-prompt-ink: #0e6f86;--type-barcode-bg: rgba(5,150,105,.13);--type-barcode-ink: #046c4e;--type-shape-bg: rgba(147,51,234,.11);--type-shape-ink: #7424c2;--type-image-bg: rgba(219,39,119,.11);--type-image-ink: #b3175a;--canvas-stage: #e9e9e6;--bg-stage-grid: rgba(40,40,30,.03);--stage-glow: rgba(255,255,255,.45);--label-paper: #ffffff;--label-ink: #111111;--label-shadow: 0 1px 2px rgba(30,30,20,.1), 0 10px 30px rgba(30,30,20,.14), 0 0 0 1px rgba(30,30,20,.1);--grid-line: rgba(0,0,0,.045);--grid-line-major: rgba(0,0,0,.09);--selection: rgba(47,95,223,.09);--guide-hover: rgba(47,95,223,.55);--handle: #ffffff;--handle-shadow: rgba(30,30,20,.28);--overlay: rgba(36,36,30,.3);--drop-overlay: rgba(246,246,244,.92);--shadow: 0 12px 32px rgba(30,30,20,.14), 0 1px 3px rgba(30,30,20,.08);--shadow-menu: 0 12px 32px rgba(30,30,20,.14), 0 1px 3px rgba(30,30,20,.08);--shadow-ctx: 0 12px 32px rgba(30,30,20,.16), 0 1px 3px rgba(30,30,20,.08);--shadow-float: 0 8px 24px rgba(30,30,20,.14), 0 1px 3px rgba(30,30,20,.08);--shadow-modal: 0 24px 64px rgba(30,30,20,.2), 0 2px 6px rgba(30,30,20,.08)}}:root[data-theme=light]{color-scheme:light;--bg-0: #f6f6f4;--bg-1: #ffffff;--bg-2: #f4f4f1;--bg-3: #ecece8;--bg-4: #e2e2dd;--surface-raised: #ffffff;--control-bg: #ffffff;--control-bg-focus: #ffffff;--control-subtle-bg: #f4f4f1;--control-subtle-bg-focus: #ffffff;--code-bg: #f1f1ed;--toast-bg: #ffffff;--floating-bg: rgba(255,255,255,.96);--row-hover: rgba(40,40,30,.045);--kbd-bg: rgba(40,40,30,.06);--border: #e4e4e0;--border-hi: #d3d3cd;--control-border: #d3d3cd;--ink-1: #1b1b18;--ink-2: #44443e;--ink-3: #66665e;--ink-4: #85857c;--accent: #2f5fdf;--accent-hi: #2549b8;--accent-lo: #1d3c99;--accent-ink: #ffffff;--accent-soft: rgba(47,95,223,.1);--accent-edge: rgba(47,95,223,.42);--accent-glow: rgba(47,95,223,.24);--brand-grad-end: #5b86f2;--welcome-grad-end: #6a92f5;--inset-highlight: rgba(255,255,255,.18);--good: #047857;--warn: #9e4807;--bad: #c42b2b;--good-soft: rgba(4,120,87,.1);--warn-soft: rgba(217,119,6,.12);--bad-soft: rgba(220,38,38,.09);--type-text-bg: rgba(90,98,125,.12);--type-text-ink: #4a526e;--type-date-bg: rgba(47,95,223,.12);--type-date-ink: #2549b8;--type-counter-bg: rgba(217,119,6,.14);--type-counter-ink: #92400e;--type-prompt-bg: rgba(8,145,178,.13);--type-prompt-ink: #0e6f86;--type-barcode-bg: rgba(5,150,105,.13);--type-barcode-ink: #046c4e;--type-shape-bg: rgba(147,51,234,.11);--type-shape-ink: #7424c2;--type-image-bg: rgba(219,39,119,.11);--type-image-ink: #b3175a;--canvas-stage: #e9e9e6;--bg-stage-grid: rgba(40,40,30,.03);--stage-glow: rgba(255,255,255,.45);--label-paper: #ffffff;--label-ink: #111111;--label-shadow: 0 1px 2px rgba(30,30,20,.1), 0 10px 30px rgba(30,30,20,.14), 0 0 0 1px rgba(30,30,20,.1);--grid-line: rgba(0,0,0,.045);--grid-line-major: rgba(0,0,0,.09);--selection: rgba(47,95,223,.09);--guide-hover: rgba(47,95,223,.55);--handle: #ffffff;--handle-shadow: rgba(30,30,20,.28);--overlay: rgba(36,36,30,.3);--drop-overlay: rgba(246,246,244,.92);--shadow: 0 12px 32px rgba(30,30,20,.14), 0 1px 3px rgba(30,30,20,.08);--shadow-menu: 0 12px 32px rgba(30,30,20,.14), 0 1px 3px rgba(30,30,20,.08);--shadow-ctx: 0 12px 32px rgba(30,30,20,.16), 0 1px 3px rgba(30,30,20,.08);--shadow-float: 0 8px 24px rgba(30,30,20,.14), 0 1px 3px rgba(30,30,20,.08);--shadow-modal: 0 24px 64px rgba(30,30,20,.2), 0 2px 6px rgba(30,30,20,.08)}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;height:100%}body{background:var(--bg-0);color:var(--ink-1);font-family:var(--font-ui);font-size:13px;line-height:1.4;font-feature-settings:"cv11","ss03","tnum";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow:hidden;user-select:none}button{font:inherit;color:inherit;background:none;border:none;padding:0;cursor:pointer}input,textarea,select{font:inherit;color:inherit}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}svg{display:block}::selection{background:var(--accent-soft);color:var(--ink-1)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--bg-3);border-radius:5px;border:2px solid transparent;background-clip:padding-box}::-webkit-scrollbar-thumb:hover{background:var(--border-hi);background-clip:padding-box;border:2px solid transparent}@media(prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}}[hidden]{display:none!important}.app{display:grid;grid-template-rows:var(--bar-h) minmax(0,1fr) var(--status-h);grid-template-columns:minmax(0,1fr);height:100vh;background:var(--bg-1)}.app>.bar,.app>.workspace,.app>.status{min-width:0}.workspace{display:grid;grid-template-columns:var(--rail-w) minmax(0,1fr) var(--props-w);min-height:0;min-width:0;background:var(--bg-1)}.workspace.left-collapsed{grid-template-columns:var(--rail-w-collapsed) minmax(0,1fr) var(--props-w)}.workspace.right-collapsed{grid-template-columns:var(--rail-w) minmax(0,1fr) var(--rail-w-collapsed)}.workspace.left-collapsed.right-collapsed{grid-template-columns:var(--rail-w-collapsed) minmax(0,1fr) var(--rail-w-collapsed)}.bar{display:flex;align-items:center;gap:var(--s4);padding:0 var(--s4);background:var(--bg-1);border-bottom:1px solid var(--border);position:relative;z-index:50}.brand{display:flex;align-items:center;gap:var(--s2);padding-right:var(--s3);border-right:1px solid var(--border);height:24px}.brand-mark{width:18px;height:18px;border-radius:4px;background:linear-gradient(135deg,var(--accent) 0%,var(--brand-grad-end) 100%);position:relative;box-shadow:inset 0 0 0 1px var(--inset-highlight)}.brand-mark:after{content:"";position:absolute;inset:4px 5px;border-radius:1px;background:var(--bg-1)}.brand-name{font-weight:500;letter-spacing:-.01em;font-size:13px}.bar-section{display:flex;align-items:center;gap:2px}.bar-divider{width:1px;height:18px;background:var(--border)}.bar-spacer{flex:1 1 0;min-width:0}.bar>*{flex-shrink:0}.filename-pill{display:flex;align-items:center;gap:var(--s2);padding:0 var(--s2) 0 var(--s3);height:26px;border-radius:var(--r2);transition:background var(--t-fast);cursor:text}.bar>.filename-pill{flex:0 1 240px;min-width:0;max-width:320px}.filename-pill:hover{background:var(--bg-2)}.filename-pill input{background:transparent;border:none;outline:none;font-family:var(--font-mono);font-size:11.5px;color:var(--ink-2);flex:1 1 auto;width:100%;min-width:0;padding:2px 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.filename-pill input:focus{color:var(--ink-1)}.save-indicator{width:6px;height:6px;border-radius:50%;background:var(--good);transition:background var(--t-base);flex-shrink:0}.save-indicator.dirty{background:var(--accent);animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.45}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s2);height:28px;padding:0 var(--s3);border-radius:var(--r2);color:var(--ink-2);transition:background var(--t-fast),color var(--t-fast);white-space:nowrap;font-size:12.5px;font-weight:450}.btn:hover{background:var(--bg-2);color:var(--ink-1)}.btn:active{transform:translateY(.5px)}.btn[disabled]{opacity:.36;cursor:not-allowed}.btn[disabled]:hover{background:transparent;color:var(--ink-2)}.btn.icon{width:28px;padding:0}.btn.primary{background:var(--accent);color:var(--accent-ink);font-weight:500;box-shadow:inset 0 1px 0 var(--inset-highlight)}.btn.primary:hover{background:var(--accent-hi);color:var(--accent-ink)}.btn.primary[disabled]{background:var(--bg-3);color:var(--ink-3);box-shadow:none}.btn .kbd{font-family:var(--font-mono);font-size:10px;color:var(--ink-3);padding:1px 4px;border-radius:3px;background:var(--kbd-bg);margin-left:var(--s1)}.btn:hover .kbd{color:var(--ink-2)}.btn .icon-svg{width:14px;height:14px;flex-shrink:0}.btn.toggle{color:var(--ink-3)}.btn.toggle.on{background:var(--accent-soft);color:var(--accent-hi);box-shadow:inset 0 0 0 1px var(--accent-edge)}.btn:focus-visible,.tool:focus-visible,.field-act:focus-visible,.theme-toggle:focus-visible{outline:none;box-shadow:var(--focus-ring)}.theme-toggle{display:inline-grid;place-items:center;width:28px;height:28px;padding:0;border-radius:var(--r2);color:var(--ink-2);transition:background var(--t-fast),color var(--t-fast);flex-shrink:0}.theme-toggle:hover{background:var(--bg-2);color:var(--ink-1)}.theme-toggle:active{transform:translateY(.5px)}.theme-toggle svg{width:14px;height:14px}.theme-toggle .theme-icon-light{display:none}:root[data-theme=light] .theme-toggle .theme-icon-dark{display:none}:root[data-theme=light] .theme-toggle .theme-icon-light{display:block}@media(prefers-color-scheme:light){:root:not([data-theme]) .theme-toggle .theme-icon-dark{display:none}:root:not([data-theme]) .theme-toggle .theme-icon-light{display:block}}.tool-palette{display:flex;align-items:center;gap:2px;padding:3px;background:var(--bg-2);border-radius:var(--r2);border:1px solid var(--border)}.tool{width:24px;height:24px;display:grid;place-items:center;border-radius:var(--r1);color:var(--ink-3);transition:background var(--t-fast),color var(--t-fast)}.tool:hover{background:var(--bg-3);color:var(--ink-2)}.tool.active{background:var(--bg-4);color:var(--ink-1);box-shadow:inset 0 0 0 1px var(--border-hi)}.tool svg{width:14px;height:14px}.menu{position:absolute;min-width:220px;background:var(--surface-raised);border:1px solid var(--border-hi);border-radius:var(--r3);padding:var(--s1);box-shadow:var(--shadow-menu);z-index:1000;animation:menu-in .12s ease-out}@keyframes menu-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.menu-item{display:flex;align-items:center;gap:var(--s3);height:30px;padding:0 var(--s3);border-radius:var(--r1);color:var(--ink-2);cursor:pointer;font-size:12.5px}.menu-item:hover,.menu-item.focused{background:var(--accent-soft);color:var(--ink-1)}.menu-item .icon-svg{width:14px;height:14px;color:var(--ink-3)}.menu-item:hover .icon-svg,.menu-item.focused .icon-svg{color:var(--accent-hi)}.menu-item .kbd{margin-left:auto;font-family:var(--font-mono);font-size:10px;color:var(--ink-4)}.menu-section{padding:var(--s2) var(--s3) var(--s1);font-size:10px;font-weight:500;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-4)}.menu-sep{height:1px;background:var(--border);margin:var(--s1) 0}.rail{display:flex;flex-direction:column;min-height:0;background:var(--bg-1);position:relative}.rail.left{border-right:1px solid var(--border)}.rail.right{border-left:1px solid var(--border)}.rail-header{display:flex;align-items:center;justify-content:space-between;height:36px;padding:0 var(--s4);border-bottom:1px solid var(--border);flex-shrink:0}.rail-title{font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-3)}.rail-actions{display:flex;align-items:center;gap:2px}.rail-body{flex:1;overflow-y:auto;overflow-x:hidden}.rail-collapsed{display:none;flex-direction:column;align-items:center;padding-top:var(--s2);gap:var(--s1)}.workspace.left-collapsed .rail.left>.rail-header,.workspace.left-collapsed .rail.left>.rail-body{display:none}.workspace.left-collapsed .rail.left .rail-collapsed{display:flex}.workspace.right-collapsed .rail.right>.rail-header,.workspace.right-collapsed .rail.right>.rail-body{display:none}.workspace.right-collapsed .rail.right .rail-collapsed{display:flex}.chip-count{font-size:10px;font-family:var(--font-mono);color:var(--ink-3);padding:2px 6px;border-radius:999px;background:var(--bg-2);border:1px solid var(--border)}.field-search{margin:var(--s3) var(--s4) 0;position:relative}.field-search input{width:100%;height:28px;padding:0 var(--s2) 0 28px;background:var(--control-subtle-bg);border:1px solid var(--control-border);border-radius:var(--r2);font-size:12px;outline:none;transition:border-color var(--t-fast),background var(--t-fast)}.field-search input:focus{border-color:var(--accent-edge);background:var(--control-subtle-bg-focus)}.field-search input::placeholder{color:var(--ink-4)}.field-search svg{position:absolute;left:8px;top:7px;width:14px;height:14px;color:var(--ink-3);pointer-events:none}.field-list{padding:var(--s2) var(--s2);display:flex;flex-direction:column;gap:1px}.field-row{display:grid;grid-template-columns:22px 1fr auto;align-items:center;gap:var(--s2);padding:var(--s2);border-radius:var(--r2);cursor:pointer;transition:background var(--t-fast);position:relative}.field-row:hover{background:var(--row-hover)}.field-row.selected{background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent-edge)}.field-row.selected:before{content:"";position:absolute;left:-2px;top:4px;bottom:4px;width:3px;background:var(--accent);border-radius:0 3px 3px 0;box-shadow:0 0 10px var(--accent)}.field-row.selected .field-name{color:var(--ink-1);font-weight:500}.field-row.selected .field-icon{box-shadow:0 0 0 1px var(--accent-edge)}.field-row.locked .field-name{color:var(--ink-3)}.field-row.hidden{opacity:.45}.field-icon{width:22px;height:22px;display:grid;place-items:center;border-radius:var(--r1);font-family:var(--font-mono);font-size:10px;font-weight:500;flex-shrink:0}.field-icon.text{background:var(--type-text-bg);color:var(--type-text-ink)}.field-icon.date{background:var(--type-date-bg);color:var(--type-date-ink)}.field-icon.counter{background:var(--type-counter-bg);color:var(--type-counter-ink)}.field-icon.prompt{background:var(--type-prompt-bg);color:var(--type-prompt-ink)}.field-icon.barcode{background:var(--type-barcode-bg);color:var(--type-barcode-ink)}.field-icon.shape{background:var(--type-shape-bg);color:var(--type-shape-ink)}.field-icon.image{background:var(--type-image-bg);color:var(--type-image-ink)}.field-icon.unknown{background:var(--bg-3);color:var(--ink-3)}.field-meta{min-width:0}.field-name{font-size:12.5px;color:var(--ink-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.field-coord{font-size:10.5px;font-family:var(--font-mono);color:var(--ink-3);margin-top:1px}.field-actions{display:none;align-items:center;gap:2px}.field-row.selected .field-actions{display:flex}.field-act{width:20px;height:20px;display:grid;place-items:center;border-radius:var(--r1);color:var(--ink-3);transition:background var(--t-fast),color var(--t-fast)}.field-act:hover{background:var(--bg-3);color:var(--ink-1)}.field-act.on{color:var(--accent-hi)}.field-act svg{width:12px;height:12px}.empty{padding:var(--s6) var(--s4);text-align:center;color:var(--ink-3);font-size:12px}.empty-strong{color:var(--ink-2);font-weight:500;display:block;margin-bottom:var(--s1)}.canvas-area{display:grid;grid-template-rows:24px 1fr;grid-template-columns:24px 1fr;background:var(--canvas-stage);background-image:radial-gradient(ellipse at center,var(--stage-glow) 0%,transparent 70%);position:relative;min-width:0;min-height:0}.ruler-corner{background:var(--ruler-bg);border-right:1px solid var(--border);border-bottom:1px solid var(--border)}.ruler-h,.ruler-v{background:var(--ruler-bg);position:relative;overflow:hidden}.ruler-h{grid-column:2;grid-row:1;border-bottom:1px solid var(--border)}.ruler-v{grid-column:1;grid-row:2;border-right:1px solid var(--border)}.ruler-tick{position:absolute;color:var(--ruler-ink);font-size:9.5px;font-family:var(--font-mono);white-space:nowrap}.ruler-h .ruler-tick{top:4px;transform:translate(-50%)}.ruler-h .ruler-tick:after{content:"";position:absolute;top:12px;left:50%;width:1px;height:6px;background:var(--ruler-tick)}.ruler-v .ruler-tick{left:4px;transform:translateY(-50%);writing-mode:vertical-rl}.ruler-v .ruler-tick:after{content:"";position:absolute;left:14px;top:50%;width:6px;height:1px;background:var(--ruler-tick)}.ruler-cursor-h,.ruler-cursor-v{position:absolute;background:var(--accent);opacity:0;transition:opacity var(--t-fast);pointer-events:none}.ruler-cursor-h{top:0;bottom:0;width:1px}.ruler-cursor-v{left:0;right:0;height:1px}.canvas-area.tracking .ruler-cursor-h,.canvas-area.tracking .ruler-cursor-v{opacity:.8}.canvas-scroll{grid-column:2;grid-row:2;overflow:auto;position:relative}.canvas-stage{position:relative;padding:var(--s5) var(--s5) var(--s6);display:inline-block;min-width:100%;min-height:100%}.label-wrap{position:relative;transform-origin:top left}.label-surface{background:var(--label-paper);color:var(--label-ink);box-shadow:var(--label-shadow);position:relative;background-image:linear-gradient(to right,var(--grid-line) 1px,transparent 1px),linear-gradient(to bottom,var(--grid-line) 1px,transparent 1px);border-radius:1px}.label-surface.grid-off{background-image:none}.label-svg{display:block;pointer-events:auto}.label-svg text{dominant-baseline:text-before-edge}.field-hit{fill:transparent}.field-bbox{fill:none;stroke:transparent;stroke-width:1;vector-effect:non-scaling-stroke;pointer-events:none;transition:stroke var(--t-fast)}.field-bbox.hover{stroke:var(--guide-hover);stroke-dasharray:3 3}.field-bbox.selected{stroke:var(--accent);stroke-width:1.5;stroke-dasharray:none}.resize-handle{fill:var(--handle);stroke:var(--accent);stroke-width:2.5;vector-effect:non-scaling-stroke;cursor:nwse-resize;filter:drop-shadow(0 1px 2px var(--handle-shadow));transition:fill var(--t-fast)}.resize-handle:hover{fill:var(--accent)}.resize-handle.r-n,.resize-handle.r-s{cursor:ns-resize}.resize-handle.r-e,.resize-handle.r-w{cursor:ew-resize}.resize-handle.r-ne,.resize-handle.r-sw{cursor:nesw-resize}.rotation-handle{fill:var(--handle);stroke:var(--accent);stroke-width:2.5;vector-effect:non-scaling-stroke;cursor:grab;filter:drop-shadow(0 1px 2px var(--handle-shadow));transition:fill var(--t-fast)}.rotation-handle:hover{fill:var(--accent)}.rotation-stem{stroke:var(--accent);stroke-width:1;vector-effect:non-scaling-stroke}.smart-guide{stroke:var(--guide);stroke-width:1;stroke-dasharray:4 3;vector-effect:non-scaling-stroke;pointer-events:none}.smart-distance{font-family:var(--font-mono);font-size:10px;fill:var(--guide)}.marquee{fill:var(--selection);stroke:var(--accent);stroke-width:1;stroke-dasharray:4 2;vector-effect:non-scaling-stroke;pointer-events:none}.align-bar{position:absolute;display:none;gap:2px;padding:4px;background:var(--floating-bg);backdrop-filter:blur(12px);border:1px solid var(--border-hi);border-radius:var(--r3);box-shadow:var(--shadow-float);z-index:30}.align-bar.visible{display:flex}.align-bar .tool{background:transparent}.align-bar .tool:hover{background:var(--bg-3)}.props-body{padding:var(--s4)}.props-head{padding:var(--s3) var(--s4) var(--s4);border-bottom:1px solid var(--border)}.props-name{display:flex;align-items:center;gap:var(--s2);margin-bottom:var(--s2)}.props-name input{background:transparent;border:1px solid transparent;border-radius:var(--r1);padding:3px var(--s2);font-size:13.5px;font-weight:500;width:100%;outline:none;transition:background var(--t-fast),border-color var(--t-fast)}.props-name input:hover{background:var(--control-subtle-bg)}.props-name input:focus{background:var(--control-subtle-bg-focus);border-color:var(--accent-edge)}.props-type-badge{font-size:10px;font-family:var(--font-mono);padding:2px var(--s2);border-radius:var(--r1);background:var(--bg-3);color:var(--ink-3);white-space:nowrap}.props-section{padding:var(--s4) 0;border-bottom:1px solid var(--border)}.props-section:last-child{border-bottom:none}.props-section-head{display:flex;align-items:center;justify-content:space-between;cursor:pointer;user-select:none;margin-bottom:var(--s2)}.props-section-head h3{margin:0;font-size:10.5px;font-weight:500;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-3)}.props-section-head .chev{width:12px;height:12px;color:var(--ink-3);transition:transform var(--t-base)}.props-section.collapsed .chev{transform:rotate(-90deg)}.props-section.collapsed .props-section-body{display:none}.props-section-body{display:grid;gap:var(--s2)}.field-grid{display:grid;grid-template-columns:80px 1fr;gap:var(--s2) var(--s3);align-items:center}.field-grid .scrub-label{color:var(--ink-3);font-size:11px;cursor:ew-resize;user-select:none;transition:color var(--t-fast)}.field-grid .scrub-label:hover{color:var(--ink-2)}.field-grid .scrub-label:before{content:"\2194";color:var(--ink-4);margin-right:3px;opacity:0;transition:opacity var(--t-fast)}.field-grid .scrub-label:hover:before{opacity:1}.field-grid.full{grid-template-columns:1fr}.input{background:var(--control-bg);border:1px solid var(--control-border);color:var(--ink-1);padding:6px var(--s2);border-radius:var(--r1);width:100%;font-family:var(--font-mono);font-size:11.5px;font-feature-settings:"tnum";outline:none;transition:border-color var(--t-fast),background var(--t-fast)}.input:focus{border-color:var(--accent-edge);background:var(--control-bg-focus);box-shadow:0 0 0 3px var(--accent-soft)}.input::placeholder{color:var(--ink-4)}.textarea{resize:vertical;min-height:64px;font-family:var(--font-ui);font-size:12.5px;line-height:1.5}.select{background:var(--control-bg);border:1px solid var(--control-border);color:var(--ink-1);padding:6px var(--s2);border-radius:var(--r1);width:100%;font-size:12px;outline:none;-webkit-appearance:none;appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--ink-3) 50%),linear-gradient(135deg,var(--ink-3) 50%,transparent 50%);background-position:calc(100% - 14px) center,calc(100% - 10px) center;background-size:4px 4px;background-repeat:no-repeat;padding-right:24px;cursor:pointer}.select:focus{border-color:var(--accent-edge);background-color:var(--control-bg-focus);box-shadow:0 0 0 3px var(--accent-soft)}.with-unit{position:relative}.with-unit .input{padding-right:30px}.with-unit .unit{position:absolute;right:8px;top:50%;transform:translateY(-50%);color:var(--ink-3);font-family:var(--font-mono);font-size:10px;cursor:pointer;padding:2px 4px;border-radius:3px;transition:background var(--t-fast)}.with-unit .unit:hover{background:var(--bg-4);color:var(--ink-2)}.pair{display:grid;grid-template-columns:1fr 1fr;gap:var(--s2)}.toggle-row{display:flex;gap:var(--s1)}.tog{flex:1;height:26px;display:grid;place-items:center;background:var(--bg-3);border:1px solid var(--border);border-radius:var(--r1);color:var(--ink-3);font-weight:500;font-size:11px;cursor:pointer;transition:background var(--t-fast),color var(--t-fast)}.tog:hover{background:var(--bg-4);color:var(--ink-2)}.tog.on{background:var(--accent-soft);border-color:var(--accent-edge);color:var(--accent-hi)}.chip-row{display:flex;flex-wrap:wrap;gap:var(--s1)}.chip{padding:4px var(--s2);border-radius:var(--r1);background:var(--bg-3);border:1px solid var(--border);color:var(--ink-2);font-family:var(--font-mono);font-size:10.5px;cursor:pointer;transition:background var(--t-fast),color var(--t-fast)}.chip:hover{background:var(--bg-4);color:var(--ink-1)}.chip.on{background:var(--accent-soft);border-color:var(--accent-edge);color:var(--accent-hi)}.readout{font-family:var(--font-mono);font-size:11px;color:var(--ink-3);padding:4px 0}.pill-info{display:inline-flex;align-items:center;gap:var(--s1);padding:3px var(--s2);border-radius:var(--r1);background:var(--accent-soft);color:var(--accent-hi);font-size:11px;font-family:var(--font-mono)}.pill-warn{background:var(--warn-soft);color:var(--warn)}.pill-bad{background:var(--bad-soft);color:var(--bad)}.pill-good{background:var(--good-soft);color:var(--good)}.hint{font-size:11px;color:var(--ink-3);line-height:1.5}.hint code{font-family:var(--font-mono);font-size:10.5px;color:var(--ink-2);background:var(--bg-3);padding:1px 4px;border-radius:3px}details{background:var(--bg-2);border:1px solid var(--border);border-radius:var(--r2);padding:var(--s2)}details summary{cursor:pointer;color:var(--ink-3);font-size:11px;outline:none}details pre{margin:var(--s2) 0 0;padding:var(--s2);background:var(--code-bg);border-radius:var(--r1);font-family:var(--font-mono);font-size:10px;color:var(--ink-2);max-height:240px;overflow:auto;white-space:pre-wrap;word-break:break-all}.badge{display:inline-flex;align-items:center;gap:var(--s1);height:20px;padding:0 var(--s2);border-radius:999px;font-family:var(--font-mono);font-size:10.5px;font-weight:500;white-space:nowrap;background:var(--bg-3);color:var(--ink-2);border:1px solid transparent}.badge.info{background:var(--accent-soft);color:var(--accent-hi);border-color:var(--accent-edge)}.badge.good,.pill-info.good{background:var(--good-soft);color:var(--good)}.badge.warn,.pill-info.warn{background:var(--warn-soft);color:var(--warn)}.badge.bad,.pill-info.bad{background:var(--bad-soft);color:var(--bad)}.status-verified,.status-unverified{display:inline-flex;align-items:center;gap:6px;height:20px;padding:0 var(--s2);border-radius:999px;font-size:10.5px;font-weight:500;font-family:var(--font-mono);white-space:nowrap}.status-verified:before,.status-unverified:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;flex-shrink:0}.status-verified{background:var(--good-soft);color:var(--good)}.status-unverified{background:var(--warn-soft);color:var(--warn)}.status-unverified:before{background:transparent;box-shadow:inset 0 0 0 1.5px currentColor}.check-list{display:flex;flex-direction:column;gap:var(--s1);margin:0;padding:0;list-style:none}.check-item{display:grid;grid-template-columns:16px 1fr auto;align-items:start;gap:var(--s2);padding:var(--s2) var(--s2) var(--s2) calc(var(--s2) + 2px);border-radius:var(--r2);background:var(--bg-2);border:1px solid var(--border);border-left:2px solid var(--ink-4);font-size:12px;line-height:1.45;color:var(--ink-2);user-select:text}.check-item .check-icon{width:16px;height:16px;display:grid;place-items:center;margin-top:1px;color:var(--ink-3)}.check-item .check-icon svg{width:14px;height:14px}.check-item .check-msg{min-width:0;color:var(--ink-1);overflow-wrap:anywhere}.check-item .check-detail{display:block;margin-top:2px;font-family:var(--font-mono);font-size:10.5px;color:var(--ink-3)}.check-item .check-field{font-family:var(--font-mono);font-size:10.5px;color:var(--ink-3);white-space:nowrap}.check-item[role=button],.check-item.clickable{cursor:pointer;transition:background var(--t-fast)}.check-item[role=button]:hover,.check-item.clickable:hover{background:var(--bg-3)}.check-item.error{background:var(--bad-soft);border-color:transparent;border-left-color:var(--bad)}.check-item.error .check-icon{color:var(--bad)}.check-item.warning{background:var(--warn-soft);border-color:transparent;border-left-color:var(--warn)}.check-item.warning .check-icon{color:var(--warn)}.check-item.ok{background:var(--good-soft);border-color:transparent;border-left-color:var(--good)}.check-item.ok .check-icon{color:var(--good)}.status{display:flex;align-items:center;gap:var(--s5);padding:0 var(--s4);background:var(--bg-1);border-top:1px solid var(--border);font-family:var(--font-mono);font-size:10.5px;color:var(--ink-3);overflow:hidden;white-space:nowrap}.status>*{flex-shrink:0}.status .stat{display:inline-flex;align-items:center;gap:var(--s2)}.status .stat-shrink{flex:0 1 auto;min-width:0;overflow:hidden}.status .stat-shrink .v{overflow:hidden;text-overflow:ellipsis}.status .spacer{flex:1 1 0;min-width:0}.field-error{color:var(--bad)}.field-note{color:var(--ink-3)}.status .stat .k{color:var(--ink-4)}.status .stat .v{color:var(--ink-2);font-feature-settings:"tnum"}.status .spacer{flex:1}.status .dot{width:6px;height:6px;border-radius:50%;background:var(--good)}.status .dot.dirty{background:var(--accent)}.overlay{position:fixed;inset:0;background:var(--overlay);backdrop-filter:blur(10px);display:none;align-items:flex-start;justify-content:center;padding:12vh var(--s4) var(--s4);z-index:2000}.overlay.visible{display:flex;animation:fade-in .14s ease-out}.overlay-card{background:var(--surface-raised);border:1px solid var(--border-hi);border-radius:var(--r4);box-shadow:var(--shadow-modal);width:100%;max-width:580px;overflow:hidden;animation:slide-up .18s cubic-bezier(.2,0,0,1)}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes slide-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.overlay-card.large{max-width:720px}.cmdk-input-wrap{padding:var(--s4);border-bottom:1px solid var(--border);display:flex;align-items:center;gap:var(--s3)}.cmdk-input-wrap svg{width:16px;height:16px;color:var(--ink-3);flex-shrink:0}.cmdk-input{flex:1;background:transparent;border:none;outline:none;font-size:15px;color:var(--ink-1)}.cmdk-input::placeholder{color:var(--ink-4)}.cmdk-list{max-height:50vh;overflow-y:auto;padding:var(--s1)}.cmdk-group-label{padding:var(--s2) var(--s3) 2px;font-size:10px;font-weight:500;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-4)}.cmdk-item{display:grid;grid-template-columns:22px 1fr auto;gap:var(--s3);align-items:center;padding:var(--s2) var(--s3);border-radius:var(--r2);cursor:pointer}.cmdk-item.focused{background:var(--accent-soft)}.cmdk-item .icon-svg{color:var(--ink-3)}.cmdk-item.focused .icon-svg{color:var(--accent-hi)}.cmdk-item-label{color:var(--ink-1);font-size:13px}.cmdk-item-sub{font-size:10.5px;color:var(--ink-3);font-family:var(--font-mono);margin-top:1px}.cmdk-empty{padding:var(--s5);text-align:center;color:var(--ink-3)}.cmdk-foot{display:flex;align-items:center;gap:var(--s4);padding:var(--s2) var(--s3);border-top:1px solid var(--border);font-size:10.5px;color:var(--ink-4);font-family:var(--font-mono)}.cmdk-foot kbd{padding:1px 4px;border-radius:3px;background:var(--bg-3);color:var(--ink-3)}.shortcuts-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--s5);padding:var(--s5);max-height:70vh;overflow-y:auto}.shortcuts-col h3{margin:0 0 var(--s3);font-size:10.5px;font-weight:500;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-3)}.shortcut-row{display:grid;grid-template-columns:1fr auto;gap:var(--s3);padding:6px 0;align-items:center}.shortcut-row .label{font-size:12.5px;color:var(--ink-2)}.shortcut-row .keys{display:flex;gap:3px}.shortcut-row kbd{padding:1px 6px;background:var(--bg-3);border:1px solid var(--border);border-bottom-width:2px;border-radius:var(--r1);font-family:var(--font-mono);font-size:10.5px;color:var(--ink-2);min-width:16px;text-align:center}.dpi-ruler{padding:var(--s5)}.dpi-headline{font-size:14px;color:var(--ink-1);margin-bottom:var(--s2)}.dpi-sub{font-size:12px;color:var(--ink-3);margin-bottom:var(--s5);line-height:1.5}.dpi-bar-wrap{position:relative;height:80px;background:var(--bg-3);border-radius:var(--r2);margin-bottom:var(--s4);overflow:hidden}.dpi-bar-track{position:absolute;top:50%;left:0;right:0;height:4px;background:var(--bg-4);transform:translateY(-50%)}.dpi-bar-fill{position:absolute;top:50%;left:0;height:4px;background:var(--accent);transform:translateY(-50%);transition:width var(--t-fast)}.dpi-bar-handle{position:absolute;top:50%;width:16px;height:16px;background:var(--accent);border-radius:50%;transform:translate(-50%,-50%);cursor:grab;box-shadow:0 0 0 4px var(--accent-soft)}.dpi-bar-handle:active{cursor:grabbing}.dpi-bar-mark{position:absolute;top:8px;bottom:8px;width:1px;background:var(--ink-4)}.dpi-bar-card{position:absolute;top:14px;bottom:14px;left:12px;width:200px;border:1px dashed var(--ink-3);border-radius:6px;pointer-events:none}.dpi-bar-card:after{content:"85.6 mm \2014  credit card width";position:absolute;bottom:-22px;left:0;font-size:10px;color:var(--ink-3);font-family:var(--font-mono)}.dpi-readout{font-family:var(--font-mono);font-size:12px;color:var(--ink-2);margin:var(--s4) 0}.dpi-actions{display:flex;gap:var(--s2);justify-content:flex-end;padding:var(--s3) var(--s5) var(--s4);border-top:1px solid var(--border)}.welcome{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none;padding:var(--s5)}.welcome.hidden{display:none}.welcome-card{pointer-events:auto;background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--r4);padding:var(--s6) var(--s7);max-width:520px;width:100%;text-align:center}.welcome-mark{width:48px;height:48px;border-radius:12px;background:linear-gradient(135deg,var(--accent) 0%,var(--welcome-grad-end) 100%);color:var(--accent-ink);margin:0 auto var(--s4);display:grid;place-items:center;box-shadow:0 8px 32px var(--accent-glow)}.welcome-title{font-size:18px;font-weight:600;margin-bottom:var(--s2);letter-spacing:-.01em}.welcome-sub{color:var(--ink-3);font-size:13px;line-height:1.5;margin-bottom:var(--s5)}.welcome-actions{display:flex;flex-direction:column;gap:var(--s2);margin-bottom:var(--s4)}.welcome-btn{display:flex;align-items:center;gap:var(--s3);padding:var(--s3) var(--s4);background:var(--bg-3);border:1px solid var(--border);border-radius:var(--r2);text-align:left;cursor:pointer;transition:background var(--t-fast),border-color var(--t-fast)}.welcome-btn:hover{background:var(--bg-4);border-color:var(--border-hi)}.welcome-btn .icon-svg{width:18px;height:18px;color:var(--accent-hi)}.welcome-btn-main{font-size:13px;color:var(--ink-1)}.welcome-btn-sub{font-size:11px;color:var(--ink-3);font-family:var(--font-mono);margin-top:1px}.welcome-recent{text-align:left}.welcome-recent-title{font-size:10px;font-weight:500;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-4);margin-bottom:var(--s2)}.welcome-recent-item{display:flex;align-items:center;gap:var(--s2);padding:6px var(--s2);border-radius:var(--r1);cursor:pointer;font-size:12px;color:var(--ink-2)}.welcome-recent-item:hover{background:var(--bg-3);color:var(--ink-1)}.welcome-recent-item .when{margin-left:auto;font-size:10.5px;font-family:var(--font-mono);color:var(--ink-4)}.welcome-foot{margin-top:var(--s5);padding-top:var(--s4);border-top:1px solid var(--border);font-size:10.5px;color:var(--ink-4);font-family:var(--font-mono)}.welcome-foot a{color:var(--ink-3);text-decoration:none;transition:color var(--t-fast)}.welcome-foot a:hover{color:var(--accent-hi)}.drop-overlay{position:fixed;inset:0;background:var(--drop-overlay);backdrop-filter:blur(8px);display:none;place-items:center;z-index:5000;pointer-events:none}.drop-overlay.visible{display:grid;pointer-events:auto;animation:fade-in .1s}.drop-card{border:2px dashed var(--accent);border-radius:var(--r4);padding:var(--s7) calc(var(--s7) * 1.5);text-align:center}.drop-card .icon-svg{width:32px;height:32px;color:var(--accent);margin-bottom:var(--s3)}.drop-card h1{margin:0 0 var(--s1);color:var(--ink-1);font-size:18px;font-weight:500}.drop-card p{margin:0;color:var(--ink-3);font-size:12px}.toast-stack{position:fixed;bottom:var(--s5);left:50%;transform:translate(-50%);display:flex;flex-direction:column;gap:var(--s2);z-index:6000;pointer-events:none}.toast{background:var(--toast-bg);border:1px solid var(--border-hi);border-radius:var(--r3);padding:var(--s2) var(--s4);font-size:12.5px;color:var(--ink-1);display:flex;align-items:center;gap:var(--s2);box-shadow:var(--shadow);pointer-events:auto;animation:slide-up .16s ease-out}.toast.good{border-left:2px solid var(--good)}.toast.bad{border-left:2px solid var(--bad)}.toast.warn{border-left:2px solid var(--warn)}.toast.fade{opacity:0;transition:opacity .2s}.ctxmenu{position:fixed;min-width:180px;background:var(--surface-raised);border:1px solid var(--border-hi);border-radius:var(--r3);padding:var(--s1);box-shadow:var(--shadow-ctx);z-index:1500;animation:menu-in .1s}.ctxmenu .menu-item{font-size:12.5px}@media(max-width:1280px){.bar{gap:var(--s2);padding:0 var(--s3)}.brand-name,.bar .btn-label,.bar .btn .kbd{display:none}.bar .btn.has-label{padding:0 6px}.status{gap:var(--s4)}.status .stat-device{display:none}}@media(max-width:1100px){:root{--rail-w: 216px;--props-w: 296px}.bar .zoom-extra,.status .stat-cursor{display:none}}@media(max-width:900px){.app{grid-template-columns:minmax(0,1fr)}.bar{gap:var(--s2);padding:0 var(--s2);overflow-x:auto;overflow-y:hidden;scrollbar-width:none}.bar::-webkit-scrollbar{display:none}.bar>*{flex-shrink:0}.brand{padding-right:var(--s2)}.brand-name,.btn .kbd{display:none}.bar>.filename-pill{flex:0 1 140px}.workspace,.workspace.left-collapsed,.workspace.right-collapsed,.workspace.left-collapsed.right-collapsed{grid-template-columns:var(--rail-w-collapsed) 1fr var(--rail-w-collapsed);position:relative}.workspace>.rail.left{grid-column:1;grid-row:1}.workspace>.canvas-area{grid-column:2;grid-row:1}.workspace>.rail.right{grid-column:3;grid-row:1}.workspace:not(.left-collapsed)>.rail.left{position:absolute;top:0;bottom:0;left:0;width:min(var(--rail-w),calc(100vw - 48px));z-index:40;box-shadow:var(--shadow-float)}.workspace:not(.right-collapsed)>.rail.right{position:absolute;top:0;bottom:0;right:0;width:min(var(--props-w),calc(100vw - 48px));z-index:40;box-shadow:var(--shadow-float)}.status{gap:var(--s3);padding:0 var(--s2);overflow:hidden;white-space:nowrap}.welcome-card{padding:var(--s5) var(--s4)}.shortcuts-grid{grid-template-columns:1fr}.overlay{padding-top:6vh}}
/*# sourceMappingURL=app-ERZ6E6VH.css.map */
