*{box-sizing:border-box}html,body,#root{height:100%}body{color:#1c1c1e;background:#e9edf2;margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:14px}button{cursor:pointer;font-family:inherit}input,select,textarea{font-family:inherit;font-size:13px}.editor,.home,.print-view,.not-found{flex-direction:column;height:100%;display:flex}.toolbar{color:#fff;z-index:10;background:#1f2430;flex-wrap:nowrap;align-items:center;gap:12px;min-width:0;padding:8px 14px;display:flex;box-shadow:0 2px 8px #0003}a.brand{color:#fff;text-decoration:none}.brand{white-space:nowrap;flex-shrink:0;align-items:center;gap:8px;font-weight:700;display:flex}.logo{color:#fff;background:#4f7cff;border-radius:6px;justify-content:center;align-items:center;width:26px;height:26px;font-size:14px;display:inline-flex}.brand-name{font-size:15px}.name-input{color:#fff;background:#ffffff1f;border:1px solid #0000;border-radius:6px;flex:0 220px;min-width:130px;padding:7px 10px}.name-input:focus{background:#ffffff2e;border-color:#4f7cff;outline:none}.toolbar-actions{white-space:nowrap;scrollbar-width:thin;scrollbar-color:#ffffff4d transparent;flex-wrap:nowrap;flex-shrink:1;align-items:center;gap:6px;min-width:0;margin-left:auto;display:flex;overflow-x:auto}.toolbar-actions::-webkit-scrollbar{height:5px}.toolbar-actions::-webkit-scrollbar-thumb{background:#ffffff4d;border-radius:3px}.toolbar-actions::-webkit-scrollbar-track{background:0 0}.toolbar .btn{white-space:nowrap;padding:6px 10px;font-size:12.5px}.toolbar-actions .btn-row,.toolbar-actions .save-status,.toolbar-actions .user-chip{flex-shrink:0}@media (width<=1160px){.toolbar .brand-name{display:none}}@media (width<=960px){.toolbar .name-input{max-width:120px}.toolbar .save-label{display:none}}@media (width<=760px){.toolbar .user-chip{display:none}}.print-title{color:#fff;text-overflow:ellipsis;white-space:nowrap;flex:1;font-weight:600;overflow:hidden}.print-sub{color:#b6c0cf;font-weight:400}.btn{color:#1c1c1e;background:#fff;border:1px solid #c9d2de;border-radius:6px;padding:7px 12px;font-size:13px;text-decoration:none;display:inline-block}.btn:hover{background:#f3f6fa}.btn.primary{color:#fff;background:#4f7cff;border-color:#4f7cff}.btn.primary:hover{background:#3d6aef}.btn.danger{color:#c0392b;border-color:#e5b8b3}.btn.danger:hover{background:#fdecea}.btn.small{padding:4px 8px;font-size:12px}.btn.icon{padding:2px 7px;font-size:12px}.btn.active{color:#2f56cf;background:#e4ecff;border-color:#4f7cff}.btn:disabled{opacity:.5;cursor:not-allowed}.workspace{flex:1;grid-template-columns:210px 1fr 330px;min-height:0;display:grid}.palette{background:#f7f9fc;border-right:1px solid #dde3ec;padding:14px;overflow-y:auto}.palette h2{margin:0 0 4px;font-size:14px}.hint{color:#6b7480;margin:4px 0 12px;font-size:12px;line-height:1.5}.palette-list{flex-direction:column;gap:6px;display:flex}.palette-item{cursor:grab;-webkit-user-select:none;user-select:none;background:#fff;border:1px solid #d5dce6;border-radius:8px;align-items:center;gap:10px;padding:9px 10px;transition:border-color .15s,box-shadow .15s;display:flex}.palette-item:hover{border-color:#4f7cff;box-shadow:0 1px 4px #4f7cff40}.palette-item:active{cursor:grabbing}.palette-icon{color:#3d5bd9;background:#e8eefc;border-radius:6px;justify-content:center;align-items:center;width:24px;height:24px;font-size:13px;font-weight:700;display:inline-flex}.canvas-area{background:#e2e7ee;flex-direction:column;gap:10px;min-height:0;padding:12px;display:flex;overflow:hidden}.page-strip{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.page-chip{cursor:pointer;-webkit-user-select:none;user-select:none;background:#fff;border:1px solid #c5cfdd;border-radius:8px;align-items:center;gap:8px;padding:6px 10px;font-size:13px;font-weight:600;display:flex}.page-chip.active{background:#eef3ff;border-color:#4f7cff;box-shadow:0 0 0 2px #4f7cff33}.chip-actions{gap:2px;display:flex}.chip-actions button{color:#7c8694;background:0 0;border:none;border-radius:4px;padding:1px 4px;font-size:11px}.chip-actions button:hover:not(:disabled){color:#1c1c1e;background:#e6eaf1}.chip-actions button:disabled{opacity:.35;cursor:not-allowed}.chip-add{color:#3d5bd9;background:0 0;border:1px dashed #7c94c9;border-radius:8px;padding:6px 12px;font-size:13px;font-weight:600}.chip-add:hover{background:#eef3ff}.canvas-toolbar{justify-content:space-between;align-items:center;gap:12px;display:flex}.canvas-info{color:#5b6572;font-size:12px;font-weight:600}.zoom-controls{gap:4px;display:flex}.zoom-wrap{flex:1;align-items:center;min-height:0;padding:8px 12px;display:flex;overflow:auto}.zoom-canvas{margin:auto;position:relative}.sheet{background:#fff;border-radius:3px;flex-direction:column;display:flex;position:relative;box-shadow:0 2px 16px #0000002e}.editable-canvas{flex:auto;min-height:200px}.editable-canvas.dragging{outline-offset:-2px;outline:2px dashed #4f7cff}.editable-canvas.free-mode{position:relative}.free-el{box-sizing:border-box;cursor:move;touch-action:none;position:absolute}.free-el:hover{outline:1px dashed #8fb0ff}.free-el.selected{outline:2px solid #4f7cff}.free-el-body{pointer-events:none;width:100%;height:100%;overflow:hidden}.resize-handle{z-index:6;pointer-events:all;background:#fff;border:1px solid #4f7cff;border-radius:2px;width:9px;height:9px;position:absolute}.resize-handle.nw{cursor:nwse-resize;top:-5px;left:-5px}.resize-handle.n{cursor:ns-resize;margin-left:-5px;top:-5px;left:50%}.resize-handle.ne{cursor:nesw-resize;top:-5px;right:-5px}.resize-handle.e{cursor:ew-resize;margin-top:-5px;top:50%;right:-5px}.resize-handle.se{cursor:nwse-resize;bottom:-5px;right:-5px}.resize-handle.s{cursor:ns-resize;margin-left:-5px;bottom:-5px;left:50%}.resize-handle.sw{cursor:nesw-resize;bottom:-5px;left:-5px}.resize-handle.w{cursor:ew-resize;margin-top:-5px;top:50%;left:-5px}.guide-line-v{z-index:20;pointer-events:none;background:#ff2d87;width:1px;position:absolute;top:0;bottom:0}.guide-line-h{z-index:20;pointer-events:none;background:#ff2d87;height:1px;position:absolute;left:0;right:0}.free-el .node-toolbar{top:-34px;right:-1px}.canvas-empty{text-align:center;color:#98a1ad;border:2px dashed #cdd6e2;border-radius:8px;justify-content:center;align-items:center;width:100%;min-height:180px;padding:12px;font-size:13px;display:flex}.editable{cursor:pointer;border-radius:2px;transition:outline .1s;position:relative}.editable:hover{outline:1px dashed #8fb0ff}.editable.selected{outline:2px solid #4f7cff}.node-toolbar{z-index:5;opacity:0;visibility:hidden;background:#fffffff2;border:1px solid #c5cfdd;border-radius:6px;align-items:center;gap:2px;padding:2px;transition:opacity .12s,visibility 0s linear 1s;display:flex;position:absolute;top:4px;right:4px;box-shadow:0 1px 5px #0000002e}.editable:hover .node-toolbar,.free-el:hover .node-toolbar{opacity:1;visibility:visible;transition:opacity .12s,visibility}.node-type{color:#3d5bd9;white-space:nowrap;padding:0 4px;font-size:11px;font-weight:700}.node-toolbar button{color:#4b5563;cursor:pointer;background:0 0;border:none;border-radius:4px;padding:2px 6px;font-size:12px}.node-toolbar button:hover{color:#1c1c1e;background:#e6eaf1}.node-toolbar button:last-child:hover{color:#c0392b;background:#fdecea}.drop-line{background:#4f7cff;border-radius:2px;width:100%;height:3px}.editable-box{box-sizing:border-box;border-radius:4px;flex-wrap:wrap;align-items:flex-start;gap:8px;width:100%;transition:box-shadow .12s,outline .12s;display:flex}.editable-box.container-hover{outline-offset:-2px;background:#2563eb0d;outline:2px dashed #2563eb}.container-source{color:#0369a1;background:#0ea5e91a;border-radius:4px;width:100%;padding:2px 6px;font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:11px;font-weight:600}.container-empty{color:#94a3b8;text-align:center;border:1.5px dashed #cbd5e1;border-radius:6px;justify-content:center;align-items:center;width:100%;min-height:48px;padding:8px;font-size:12px;display:flex}.container-dropzone{color:#cbd5e1;cursor:pointer;border:1px dashed #0000;border-radius:4px;justify-content:center;align-items:center;width:100%;min-height:16px;font-size:13px;transition:all .12s;display:flex}.container-dropzone.active{color:#1d4ed8;background:#2563eb14;border-color:#93c5fd;min-height:28px;font-size:12px;font-weight:600}.right-panel{background:#f7f9fc;border-left:1px solid #dde3ec;flex-direction:column;min-height:0;display:flex}.tabs{border-bottom:1px solid #dde3ec;display:flex}.tabs button{color:#6b7480;background:0 0;border:none;border-bottom:2px solid #0000;flex:1;padding:11px 6px;font-size:13px;font-weight:600}.tabs button.active{color:#3d5bd9;background:#fff;border-bottom-color:#4f7cff}.tab-content{background:#fff;flex:1;padding:14px;overflow-y:auto}.panel-empty{color:#98a1ad;text-align:center;padding:24px 8px;font-size:13px}.props-panel,.page-panel{flex-direction:column;gap:12px;display:flex}.free-geometry{background:#f4f7fc;border:1px solid #dbe3ee;border-radius:8px;grid-template-columns:1fr 1fr;gap:8px;padding:10px;display:grid}.free-geometry .prop{gap:3px}.free-geometry .prop>span{font-size:11px}.img-preview{background:#f4f6fa;border:1px solid #d5dce6;border-radius:8px;justify-content:center;align-items:center;max-height:120px;padding:6px;display:flex;overflow:hidden}.img-preview img{object-fit:contain;border-radius:4px;max-width:100%;max-height:108px}.btn-row{gap:6px;display:flex}.pdf-image{display:block}.pdf-image-empty{color:#9aa3af;background:#f6f8fb;border:1px dashed #c7d0dc;border-radius:4px;justify-content:center;align-items:center;width:100%;font-size:12px;display:flex}.prop{flex-direction:column;gap:5px;display:flex}.prop>span{color:#4b5563;font-size:12px;font-weight:600}.prop input[type=text],.prop input[type=number],.prop select{border:1px solid #d5dce6;border-radius:6px;width:100%;padding:7px 9px}.prop input:focus,.prop select:focus{border-color:#4f7cff;outline:none}.prop.check{flex-direction:row;justify-content:space-between;align-items:center}.color-row{align-items:center;gap:8px;display:flex}.color-row input[type=color]{cursor:pointer;background:#fff;border:1px solid #d5dce6;border-radius:6px;width:42px;height:32px;padding:2px}.width-presets{flex-wrap:wrap;gap:4px;display:flex}.prop-block{border:1px solid #e3e8f0;border-radius:8px;flex-direction:column;gap:6px;padding:10px;display:flex}.prop-block-title{color:#4b5563;font-size:12px;font-weight:700}.col-row{grid-template-columns:1fr 1fr auto auto;align-items:center;gap:4px;display:grid}.col-row input,.col-row select{border:1px solid #d5dce6;border-radius:5px;min-width:0;padding:5px 7px}.data-panel{flex-direction:column;gap:10px;height:100%;display:flex}.data-panel textarea{resize:none;border:1px solid #d5dce6;border-radius:8px;flex:1;min-height:260px;padding:10px;font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:12px;line-height:1.5}.data-panel textarea:focus{border-color:#4f7cff;outline:none}.data-panel code{background:#eef1f6;border-radius:4px;padding:1px 5px;font-size:11px}.error{color:#c0392b;background:#fdecea;border:1px solid #f3c9c4;border-radius:6px;padding:8px 10px;font-size:12px}.panel-actions{gap:8px;display:flex}.modal-overlay{z-index:50;background:#1418208c;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.modal{background:#e9edf2;border-radius:12px;flex-direction:column;max-width:100%;max-height:100%;display:flex;box-shadow:0 10px 40px #0000004d}.modal-header{justify-content:space-between;align-items:center;gap:16px;padding:12px 18px;display:flex}.modal-header h2{margin:0;font-size:15px}.modal-actions{gap:8px;display:flex}.modal-body{padding:18px;overflow:auto}.modal-body .doc{flex-direction:column;align-items:center;gap:16px;display:flex}.modal-body .pdf-page{box-shadow:0 2px 14px #0000002e}.toast{color:#fff;z-index:100;background:#1f2430;border-radius:8px;padding:10px 18px;font-size:13px;animation:.2s toast-in;position:fixed;bottom:20px;left:50%;transform:translate(-50%);box-shadow:0 4px 16px #00000040}@keyframes toast-in{0%{opacity:0;transform:translate(-50%)translateY(8px)}to{opacity:1;transform:translate(-50%)translateY(0)}}.save-status{white-space:nowrap;align-items:center;gap:8px;display:inline-flex}.save-dot{background:#6b7280;border-radius:50%;width:10px;height:10px}.save-dot.saved{background:#34d399}.save-dot.dirty{background:#fbbf24}.save-dot.saving{background:#4f7cff;animation:.8s ease-in-out infinite pulse}.save-dot.error{background:#f87171}.save-dot.offline{background:#6b7280}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}.save-label{color:#ffffffd9;font-size:12px}.sync-toggle.active{color:#fff;background:#4f7cff;border-color:#4f7cff}.user-chip{color:#ffffffe6;align-items:center;gap:8px;font-size:13px;display:inline-flex}.home-banner{color:#33518f;background:#eef3ff;border:1px solid #c9d8ff;border-radius:8px;margin:0 0 18px;padding:10px 14px;font-size:13px}.home-banner.warn{color:#9a3412;background:#fff7ed;border-color:#fed7aa}.login{justify-content:center;align-items:flex-start;padding:60px 20px;display:flex}.login-card{background:#fff;border:1px solid #e5e7eb;border-radius:12px;flex-direction:column;gap:14px;width:100%;max-width:380px;padding:26px;display:flex;box-shadow:0 4px 20px #00000014}.login-card .brand{color:#1f2430}.login-card h1{margin:0;font-size:20px}.login-hint{color:#6b7280;margin:0;font-size:13px}.login-card label{color:#374151;flex-direction:column;gap:6px;font-size:13px;display:flex}.login-card input{border:1px solid #d1d5db;border-radius:8px;padding:9px 11px;font-size:14px}.login-card input:focus{border-color:#4f7cff;outline:none;box-shadow:0 0 0 3px #4f7cff26}.login-error{color:#b91c1c;background:#fef2f2;border:1px solid #fecaca;border-radius:8px;padding:9px 12px;font-size:13px}.login-foot{color:#6b7280;text-align:center;margin:0;font-size:12px}.home-main{flex:1;padding:26px 30px;overflow:auto}.home-main h1{margin:0 0 18px;font-size:20px}.home-empty{text-align:center;color:#6b7480;padding:60px 20px}.home-empty p{margin-bottom:16px}.tpl-grid{grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:14px;display:grid}.tpl-card{background:#fff;border:1px solid #dde3ec;border-radius:12px;flex-direction:column;gap:14px;padding:16px;display:flex;box-shadow:0 1px 4px #0000000f}.tpl-info h3{margin:0 0 4px;font-size:16px}.tpl-info p{color:#7c8694;margin:0;font-size:12px}.tpl-actions{flex-wrap:wrap;gap:8px;display:flex}.print-preview{background:#e2e7ee;flex:1;padding:28px;overflow:auto}.print-preview .doc{flex-direction:column;align-items:center;gap:18px;display:flex}.print-preview .pdf-page{box-shadow:0 2px 14px #0000002e}.print-empty{color:#6b7480;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:14px;display:flex}.not-found{text-align:center;justify-content:center;align-items:center;gap:8px;padding:24px}.fond-panel{gap:14px}.fond-panel input[type=range]{width:100%}.bg-preview{flex-direction:column;gap:8px;display:flex}.bg-preview img{object-fit:contain;background:#fff;border:1px solid #d5dce6;border-radius:8px;max-width:100%;max-height:160px}.bg-preview-actions{gap:6px;display:flex}.share-modal{width:min(720px,100%);max-height:min(90vh,680px)}.share-body{flex-direction:column;flex:auto;gap:12px;min-height:0;padding:6px 18px 18px;display:flex;overflow-y:auto}.share-row{align-items:center;gap:10px;display:flex}.share-toggle{color:#33518f;cursor:pointer;background:#eef3ff;border:1px solid #c9d8ff;border-radius:8px;align-items:flex-start;gap:10px;padding:10px 12px;font-size:13px;display:flex}.share-toggle input{accent-color:#4f7cff;margin-top:3px}.share-toggle strong{margin-bottom:2px;display:block}.share-row-main{flex:1;min-width:0}.share-label{color:#4b5563;margin-bottom:4px;font-size:12px;font-weight:600;display:block}.share-row-main input{color:#333;background:#f7f9fc;border:1px solid #d5dce6;border-radius:6px;width:100%;padding:8px 10px;font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:12px}.share-note{background:#fbfcfe;border:1px solid #e3e8f0;border-radius:8px;padding:10px 12px;font-size:13px}.share-note p{color:#4b5563;margin:0 0 6px;font-weight:600}.share-note pre{color:#d7e0ee;background:#1f2430;border-radius:8px;margin:0 0 10px;padding:10px 12px;font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:12px;line-height:1.5;overflow:auto}.share-note code{background:#eef1f6;border-radius:4px;padding:1px 5px;font-size:12px;font-weight:400}.share-warn{color:#b45309;background:#fffbeb;border:1px solid #fde68a;border-radius:6px;margin:6px 0 0;padding:6px 8px;font-size:12px;line-height:1.4}.docs-main{background:#f2f4f8;flex:1;padding:32px 16px;overflow-y:auto}.docs-container{background:#fff;border:1px solid #e3e8f0;border-radius:12px;max-width:860px;margin:0 auto;padding:28px 36px 40px;box-shadow:0 2px 12px #0f172a0d}.docs-container h1{color:#0f172a;margin:0 0 8px;font-size:26px}.docs-intro{color:#475569;margin:0 0 20px;font-size:15px;line-height:1.6}.docs-toc{background:#f8fafc;border:1px solid #e3e8f0;border-radius:10px;flex-direction:column;gap:4px;margin:0 0 28px;padding:12px 16px;display:flex}.docs-toc strong{color:#0f172a;margin-bottom:4px}.docs-toc a{color:#2563eb;font-size:14px;text-decoration:none}.docs-toc a:hover{text-decoration:underline}.docs-container section{margin-bottom:28px}.docs-container section:last-child{margin-bottom:0}.docs-container h2{color:#0f172a;border-bottom:2px solid #e3e8f0;margin:0 0 12px;padding-bottom:6px;font-size:20px}.docs-container h3{color:#334155;margin:16px 0 6px;font-size:15px}.docs-container p{color:#475569;margin:0 0 10px;font-size:14px;line-height:1.6}.docs-container ul{color:#475569;margin:0 0 10px;padding-left:22px;font-size:14px;line-height:1.7}.docs-container li{margin-bottom:4px}.docs-table{border-collapse:collapse;width:100%;margin:8px 0 16px;font-size:14px}.docs-table th,.docs-table td{text-align:left;color:#334155;border:1px solid #e3e8f0;padding:8px 12px}.docs-table th{color:#0f172a;background:#f8fafc;font-weight:600}.docs-container pre{color:#d7e0ee;background:#1f2430;border-radius:8px;margin:8px 0 14px;padding:12px 14px;font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:12.5px;line-height:1.6;overflow:auto}.docs-container code{color:#be185d;background:#eef1f6;border-radius:4px;padding:1px 5px;font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:12.5px}.docs-container pre code{color:inherit;font-size:inherit;background:0 0;padding:0}.docs-container strong{color:#0f172a}.doc{color:#111;background:#fff;font-family:Arial,Helvetica,sans-serif;line-height:1.45}.pdf-page{box-sizing:border-box;page-break-after:always;background:#fff;position:relative}.pdf-page.last{page-break-after:auto}.pdf-content{z-index:1;flex-wrap:wrap;align-items:flex-start;gap:6px 12px;display:flex;position:relative}.pdf-free{z-index:1;display:block;position:relative}.pdf-el-free{box-sizing:border-box;position:absolute}.pdf-el-free>.pdf-container{width:100%;height:100%}.pdf-el{min-width:0}.pdf-container{box-sizing:border-box;flex-wrap:wrap;align-items:flex-start;width:100%;display:flex;position:relative}.pdf-title,.pdf-text,.pdf-field{margin:0}.pdf-field{align-items:baseline;display:flex}.pdf-label{margin-right:5px}.pdf-table{border-collapse:collapse;width:100%;margin:0}.pdf-divider{border:0}.pdf-spacer{width:100%}.pdf-page-break{page-break-after:always}.page-backdrop{pointer-events:none;z-index:0;justify-content:center;align-items:center;display:flex;position:absolute;inset:0;overflow:hidden}.page-bg-color,.page-bg-image{position:absolute;inset:0}.page-wm{white-space:pre;color:#000;letter-spacing:2px;-webkit-user-select:none;user-select:none;font-family:Arial,Helvetica,sans-serif;font-weight:700}#print-root{display:none}@media print{#print-root{display:block;position:absolute;top:0;left:0}body{background:#fff}.toolbar,.workspace,.modal-overlay,.toast,.print-preview,.print-empty{display:none!important}}
