:root{--font-hand: "Handlee", "Comic Sans MS", cursive;--font-sans: "Inter", system-ui, sans-serif;--font-mono: "Source Code Pro", "Cascadia Code", monospace;--font-caveat: "Caveat", cursive;--font-poppins: "Poppins", sans-serif;--font-serif: "Merriweather", serif;--font-marker: "Permanent Marker", cursive;--font-code: "JetBrains Mono", monospace;font-family:var(--font-sans);line-height:1.5;font-weight:400;--bg-canvas: #e2e8f0;--bg-panel: #ffffff;--bg-secondary: #f9fafb;--text-primary: #111827;--text-secondary: #6b7280;--border-color: #e5e7eb;--btn-bg: #ffffff;--btn-hover: #f3f4f6;--btn-active: #e5e7eb;--primary-color: #3b82f6;--danger-color: #ef4444;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);color-scheme:light dark;color:var(--text-primary);background-color:var(--bg-canvas);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}[data-theme=dark]{--bg-canvas: #1a1a2e;--bg-panel: #1e1e1e;--bg-secondary: #2d2d2d;--text-primary: #e5e7eb;--text-secondary: #9ca3af;--border-color: #404040;--btn-bg: #2d2d2d;--btn-hover: #3d3d3d;--btn-active: #4d4d4d;--primary-color: #60a5fa;--danger-color: #f87171;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .5)}[data-theme=light]{color-scheme:light}[data-theme=dark],[data-theme=focus]{color-scheme:dark}[data-theme=focus]{--bg-canvas: #1a1a2e;--bg-panel: #1e1e1e;--bg-secondary: #2d2d2d;--text-primary: #e5e7eb;--text-secondary: #9ca3af;--border-color: #404040;--btn-bg: #2d2d2d;--btn-hover: #3d3d3d;--btn-active: #4d4d4d;--primary-color: #60a5fa;--danger-color: #f87171;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .5)}html,body{-webkit-touch-callout:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;user-select:none;overscroll-behavior:none}body{margin:0;padding:0;overflow:hidden;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background-color:var(--bg-canvas);color:var(--text-primary)}input,textarea,[contenteditable=true],[contenteditable=""]{-webkit-user-select:text;user-select:text;-webkit-touch-callout:default}button{border-radius:6px;border:1px solid var(--border-color);padding:8px 12px;font-size:14px;font-weight:500;font-family:inherit;background-color:var(--btn-bg);color:var(--text-primary);cursor:pointer;transition:all .2s;box-shadow:var(--shadow-sm)}button:hover{background-color:var(--btn-hover);border-color:var(--border-color)}button:active{background-color:var(--btn-active);transform:translateY(1px)}button.active{background-color:#3b82f61a;border-color:var(--primary-color);color:var(--primary-color)}input[type=text]{border-radius:6px;border:1px solid var(--border-color);padding:8px 12px;font-family:inherit;font-size:14px;outline:none;background-color:var(--bg-panel);color:var(--text-primary);transition:border-color .2s}input[type=text]:focus{border-color:var(--primary-color);box-shadow:0 0 0 2px #3b82f633}input[type=checkbox]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:16px;height:16px;border:1.5px solid var(--border-color, #d1d5db);border-radius:4px;background:var(--bg-panel, #ffffff);cursor:pointer;position:relative;flex-shrink:0;transition:background .15s,border-color .15s}input[type=checkbox]:checked{background:var(--primary-color, #3b82f6);border-color:var(--primary-color, #3b82f6)}input[type=checkbox]:checked:after{content:"";position:absolute;left:4.5px;top:1.5px;width:5px;height:9px;border:solid white;border-width:0 2px 2px 0;transform:rotate(45deg)}input[type=checkbox]:disabled{opacity:.4;cursor:not-allowed}input[type=checkbox]:focus-visible{outline:2px solid var(--primary-color, #3b82f6);outline-offset:1px}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;padding:0;overflow:hidden;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}button{border-radius:6px;border:1px solid #ccc;padding:8px 12px;font-size:14px;font-weight:500;font-family:inherit;background-color:#fff;cursor:pointer;transition:all .2s;box-shadow:0 1px 2px #0000000d}button:hover{background-color:#f9f9f9;border-color:#bbb}button:active{background-color:#f0f0f0;transform:translateY(1px)}button.active{background-color:#e0efff;border-color:#007acc;color:#007acc}input[type=text]{border-radius:6px;border:1px solid #ccc;padding:8px 12px;font-family:inherit;font-size:14px;outline:none;transition:border-color .2s}input[type=text]:focus{border-color:#007acc;box-shadow:0 0 0 2px #007acc33}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:var(--btn-bg);color:var(--text-primary);cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media(prefers-color-scheme:light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}}.unselectable{user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.minimap-container{position:fixed;bottom:48px;right:20px;z-index:1000;background:var(--bg-panel);border:1px solid var(--border-color);border-radius:8px;box-shadow:0 4px 12px #00000026;padding:8px;-webkit-user-select:none;user-select:none}.minimap-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px;padding:0 4px}.minimap-title{font-size:11px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.minimap-close{background:transparent;border:none;padding:2px;cursor:pointer;color:var(--text-secondary);display:flex;align-items:center;justify-content:center;border-radius:4px;transition:background-color .2s,color .2s;box-shadow:none}.minimap-close:hover{background-color:var(--btn-hover);color:var(--text-primary)}.minimap-canvas{display:block;border-radius:4px;cursor:pointer;border:1px solid var(--border-color)}.minimap-canvas:active{cursor:grabbing}.floating-tools-cluster{position:fixed;bottom:34px;left:12px;display:flex;gap:8px;z-index:1000}.floating-settings-btn{width:36px;height:36px;padding:0;box-sizing:border-box;border-radius:50%;border:none;background:var(--bg-panel, #ffffff);color:var(--text-secondary, #4b5563);box-shadow:0 2px 8px #0000001f;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.floating-settings-btn.help-btn{font-weight:700;font-size:16px}.floating-settings-btn:hover{transform:scale(1.1)}.floating-settings-btn.active{background:#3b82f6!important;color:#fff!important}@media(max-width:600px){.floating-tools-cluster{bottom:auto;left:auto;top:calc(66px + env(safe-area-inset-top,0px));right:10px;flex-direction:column;gap:8px;z-index:10003}.floating-settings-btn{width:42px;height:42px}}.zen-exit-btn{position:fixed;bottom:12px;right:12px;padding:6px 14px;border:none;border-radius:6px;background:var(--bg-panel, #ffffff);color:var(--text-secondary, #6b7280);font-size:11px;font-weight:500;box-shadow:0 2px 8px #0000001f;cursor:pointer;z-index:1000;opacity:.5;transition:opacity .2s,background .2s}.zen-exit-btn:hover{opacity:1;background:var(--primary-color, #3b82f6);color:#fff}.pen-cursor{position:fixed;z-index:2147483647;width:14px;height:14px;margin:-7px 0 0 -7px;border-radius:50%;background:radial-gradient(circle at center,#fff 0 2px,transparent 3px),radial-gradient(circle at center,rgba(0,0,0,.9) 0 3.5px,transparent 4px);box-shadow:0 0 0 1px #000000e6,0 0 0 2px #ffffffe6;pointer-events:none}*{scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb, rgba(120, 120, 135, .45)) transparent}*::-webkit-scrollbar{width:8px;height:8px}*::-webkit-scrollbar-track{background:transparent}*::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb, rgba(120, 120, 135, .45));border-radius:8px;border:2px solid transparent;background-clip:content-box}*::-webkit-scrollbar-thumb:hover{background-color:var(--scrollbar-thumb-hover, rgba(100, 100, 120, .7))}*::-webkit-scrollbar-corner{background:transparent}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%);background:var(--bg-panel);color:var(--text-primary);padding:12px 16px;border-radius:8px;box-shadow:0 4px 20px #00000026;display:flex;align-items:center;gap:12px;z-index:10010;-webkit-user-select:none;user-select:none;font-size:14px;font-weight:500;border:1px solid var(--border-color);animation:slideUp .3s cubic-bezier(.16,1,.3,1);min-width:300px;max-width:90vw}.toast-success{border-left:4px solid #10b981}.toast-error{border-left:4px solid #ef4444}.toast-info{border-left:4px solid #3b82f6}.toast-icon{display:flex;align-items:center;justify-content:center}.toast-success .toast-icon{color:#10b981}.toast-error .toast-icon{color:#ef4444}.toast-info .toast-icon{color:#3b82f6}.toast-message{flex:1}.toast-close{background:none;border:none;cursor:pointer;color:var(--text-secondary);padding:4px;border-radius:4px;display:flex;align-items:center;justify-content:center;transition:background .2s}.toast-close:hover{background:var(--bg-hover);color:var(--text-primary)}@keyframes slideUp{0%{opacity:0;transform:translate(-50%,20px)}to{opacity:1;transform:translate(-50%)}}.toast-loading{border-left:4px solid #f59e0b}.toast-loading .toast-icon{color:#f59e0b}.spin{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.settings-modal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#00000080;display:flex;justify-content:center;align-items:center;z-index:2000}.settings-modal{background:var(--bg-panel);color:var(--text-primary);padding:24px;border-radius:12px;width:420px;max-width:92vw;max-height:80vh;overflow-y:auto;box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:20px}.settings-header{display:flex;justify-content:space-between;align-items:center}.settings-header h3{margin:0;font-size:1.2rem}.settings-section{display:flex;flex-direction:column;gap:12px}.settings-section-title{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary);margin:0}.settings-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.settings-row label{font-size:.85rem;color:var(--text-primary);white-space:nowrap}.settings-row select,.settings-row input[type=number]{padding:6px 10px;border:1px solid var(--border-color);border-radius:6px;background:var(--bg-panel);color:var(--text-primary);font-size:.85rem;min-width:160px}.settings-row select:focus,.settings-row input[type=number]:focus{outline:none;border-color:var(--primary-color)}.settings-row input[type=color]{width:36px;height:30px;border:1px solid var(--border-color);border-radius:6px;padding:2px;cursor:pointer;background:var(--bg-panel)}.settings-color-group{display:flex;align-items:center;gap:8px;min-width:160px}.settings-color-group span{font-size:.8rem;color:var(--text-secondary)}.settings-row input[type=range]{min-width:120px;accent-color:var(--primary-color)}.settings-range-group{display:flex;align-items:center;gap:8px;min-width:160px}.settings-range-group span{font-size:.8rem;color:var(--text-secondary);min-width:30px;text-align:right}.settings-footer{display:flex;justify-content:space-between;align-items:center;padding-top:8px;border-top:1px solid var(--border-color)}.settings-reset-btn{padding:6px 14px;border:1px solid var(--border-color);border-radius:6px;background:transparent;color:var(--text-secondary);cursor:pointer;font-size:.8rem}.settings-reset-btn:hover{background:var(--btn-hover);color:var(--text-primary)}.settings-close-btn{padding:6px 18px;border:none;border-radius:6px;background:var(--primary-color);color:#fff;cursor:pointer;font-size:.85rem}.settings-close-btn:hover{opacity:.9}.settings-toggle{position:relative;display:inline-block;width:40px;height:22px;cursor:pointer}.settings-toggle input{opacity:0;width:0;height:0}.settings-toggle-slider{position:absolute;inset:0;background:var(--border-color, #d1d5db);border-radius:11px;transition:background .2s}.settings-toggle-slider:before{content:"";position:absolute;width:16px;height:16px;left:3px;bottom:3px;background:#fff;border-radius:50%;transition:transform .2s}.settings-toggle input:checked+.settings-toggle-slider{background:var(--primary-color, #3b82f6)}.settings-toggle input:checked+.settings-toggle-slider:before{transform:translate(18px)}.ai-settings-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#00000080;display:flex;justify-content:center;align-items:center;z-index:2000}.ai-settings-modal{background:var(--bg-panel);color:var(--text-primary);padding:24px;border-radius:12px;width:480px;max-height:80vh;overflow-y:auto;box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:20px}.ai-settings-header{display:flex;justify-content:space-between;align-items:center}.ai-settings-header h3{margin:0;font-size:1.2rem}.ai-settings-header .close-btn{background:none;border:none;color:var(--text-secondary);cursor:pointer;padding:4px;border-radius:4px;display:flex;align-items:center}.ai-settings-header .close-btn:hover{background:var(--btn-hover);color:var(--text-primary)}.ai-settings-section{display:flex;flex-direction:column;gap:10px}.ai-settings-section-title{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary);margin:0}.ai-settings-provider-select{display:flex;gap:6px}.ai-settings-provider-btn{flex:1;padding:8px 12px;border:1px solid var(--border-color);border-radius:6px;background:transparent;color:var(--text-secondary);cursor:pointer;font-size:.8rem;font-weight:500;transition:all .15s}.ai-settings-provider-btn:hover{background:var(--btn-hover);color:var(--text-primary)}.ai-settings-provider-btn.active{background:var(--primary-color);color:#fff;border-color:var(--primary-color)}.ai-settings-provider-btn.active:hover{background:var(--primary-color);color:#fff;opacity:.9}.ai-settings-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.ai-settings-row label{font-size:.85rem;color:var(--text-primary);white-space:nowrap;min-width:60px}.ai-settings-row select{padding:6px 10px;border:1px solid var(--border-color);border-radius:6px;background:var(--bg-panel);color:var(--text-primary);font-size:.85rem;min-width:200px}.ai-settings-row select:focus{outline:none;border-color:var(--primary-color)}.ai-settings-key-input{display:flex;align-items:center;flex:1;border:1px solid var(--border-color);border-radius:6px;overflow:hidden;min-width:200px}.ai-settings-key-input input{flex:1;padding:6px 10px;border:none;background:var(--bg-panel);color:var(--text-primary);font-size:.82rem;font-family:monospace;outline:none}.ai-settings-key-input input::placeholder{color:var(--text-secondary);opacity:.6;font-family:inherit}.ai-settings-eye-btn{background:none;border:none;border-left:1px solid var(--border-color);color:var(--text-secondary);cursor:pointer;padding:6px 8px;display:flex;align-items:center}.ai-settings-eye-btn:hover{color:var(--text-primary);background:var(--btn-hover)}.ai-settings-note{font-size:.75rem;color:var(--text-secondary);margin:0;line-height:1.4}.ai-settings-footer{display:flex;justify-content:flex-end;padding-top:8px;border-top:1px solid var(--border-color)}.ai-settings-done-btn{padding:6px 18px;border:none;border-radius:6px;background:var(--primary-color);color:#fff;cursor:pointer;font-size:.85rem}.ai-settings-done-btn:hover{background:var(--primary-color);color:#fff;opacity:.9}.rocket-settings-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#00000080;display:flex;justify-content:center;align-items:center;z-index:2000}.rocket-settings-modal{background:var(--bg-panel);color:var(--text-primary);padding:24px;border-radius:12px;width:440px;max-height:80vh;overflow-y:auto;box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:16px}.rocket-settings-header{display:flex;justify-content:space-between;align-items:center}.rocket-settings-header h3{margin:0;font-size:1.1rem}.rocket-settings-header .close-btn{background:none;border:none;color:var(--text-secondary);cursor:pointer;padding:4px;border-radius:4px;display:flex;align-items:center}.rocket-settings-header .close-btn:hover{background:var(--btn-hover);color:var(--text-primary)}.rocket-settings-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.rocket-settings-row label{font-size:.85rem;color:var(--text-primary);white-space:nowrap;min-width:80px}.rocket-settings-row input{flex:1;padding:6px 10px;border:1px solid var(--border-color);border-radius:6px;background:var(--bg-panel);color:var(--text-primary);font-size:.85rem;outline:none}.rocket-settings-row input:focus{border-color:var(--primary-color)}.rocket-settings-key-input{display:flex;align-items:center;flex:1;border:1px solid var(--border-color);border-radius:6px;overflow:hidden}.rocket-settings-key-input input{flex:1;padding:6px 10px;border:none;background:var(--bg-panel);color:var(--text-primary);font-size:.85rem;outline:none}.rocket-settings-eye-btn{background:none;border:none;border-left:1px solid var(--border-color);color:var(--text-secondary);cursor:pointer;padding:6px 8px;display:flex;align-items:center}.rocket-settings-eye-btn:hover{color:var(--text-primary);background:var(--btn-hover)}.rocket-settings-test-btn{padding:6px 14px;border:1px solid var(--border-color);border-radius:6px;background:transparent;color:var(--text-primary);cursor:pointer;font-size:.82rem;font-weight:500;transition:all .15s}.rocket-settings-test-btn:hover{background:var(--btn-hover)}.rocket-settings-test-btn:disabled{opacity:.5;cursor:not-allowed}.rocket-settings-test-result{font-size:.8rem;padding:6px 10px;border-radius:6px;line-height:1.4}.rocket-settings-test-result.success{color:#16a34a;background:#16a34a14}.rocket-settings-test-result.error{color:#dc2626;background:#dc262614}.rocket-settings-note{font-size:.75rem;color:var(--text-secondary);margin:0;line-height:1.4}.rocket-settings-footer{display:flex;justify-content:flex-end;padding-top:8px;border-top:1px solid var(--border-color)}.rocket-settings-done-btn{padding:6px 18px;border:none;border-radius:6px;background:var(--primary-color);color:#fff;cursor:pointer;font-size:.85rem}.rocket-settings-done-btn:hover{opacity:.9}.dsd-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:2200;animation:dsd-fade .15s ease-out}@keyframes dsd-fade{0%{opacity:0}to{opacity:1}}.dsd-modal{width:min(560px,94vw);max-height:84vh;display:flex;flex-direction:column;background:var(--bg-panel);color:var(--text-primary);border:1px solid var(--border-color);border-radius:12px;box-shadow:var(--shadow-lg);overflow:hidden}.dsd-header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--border-color)}.dsd-header h2{margin:0;font-size:16px;font-weight:600}.dsd-close{border:none;background:transparent;cursor:pointer;color:var(--text-secondary);padding:2px}.dsd-close:hover{color:var(--text-primary)}.dsd-body{overflow-y:auto;padding:12px 16px 16px}.dsd-category{margin-bottom:14px}.dsd-category-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-secondary);margin:6px 0 8px}.dsd-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(115px,1fr));gap:8px}.dsd-card{display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 6px 8px;border:1px solid var(--border-color);border-radius:8px;background:transparent;color:var(--text-primary);cursor:pointer;transition:border-color .12s,background .12s}.dsd-card:hover{border-color:var(--accent-color, #6366f1);background:#6366f10f}.dsd-preview-wrap{height:48px;display:flex;align-items:center;justify-content:center}.dsd-preview{border:1.5px solid var(--text-secondary);border-radius:3px;background:var(--bg-canvas, transparent)}.dsd-card-name{font-size:12px;font-weight:500;text-align:center}.dsd-card-size{font-size:10.5px;color:var(--text-secondary)}.dsd-custom-row{display:flex;align-items:center;gap:8px}.dsd-custom-row input{width:90px;padding:6px 8px;border:1px solid var(--border-color);border-radius:6px;background:transparent;color:var(--text-primary);font-size:13px}.dsd-x,.dsd-unit{color:var(--text-secondary);font-size:13px}.dsd-create{margin-left:auto;padding:6px 16px;border:none;border-radius:6px;background:var(--accent-color, #6366f1);color:#fff;font-size:13px;font-weight:500;cursor:pointer}.dsd-create:hover{filter:brightness(1.08)}.menu-container{display:flex;align-items:center;background:var(--bg-panel);padding:6px;border-radius:8px;box-shadow:var(--shadow-sm);gap:4px;border:1px solid var(--border-color);-webkit-user-select:none;user-select:none;transition:box-shadow .2s;position:relative;z-index:10060}.text-logo{display:flex;align-items:center;gap:4px;font-size:14px;font-weight:700;letter-spacing:-.3px;line-height:1;flex-shrink:0;padding:0 2px}.text-logo-yappy{color:var(--text-primary)}.text-logo-draw{color:var(--logo-accent, #4f6df5)}.menu-container:hover{box-shadow:0 4px 12px #0000001a}.drag-handle{width:12px;height:32px;cursor:grab;display:flex;align-items:center;justify-content:center;padding:0 2px;opacity:.3;transition:opacity .2s}.drag-handle.sm{height:24px}.menu-container:hover .drag-handle,.app-title:hover .drag-handle{opacity:.7}.drag-dots{width:4px;height:16px;background-image:radial-gradient(var(--text-secondary) 1px,transparent 1px);background-size:4px 4px}.title-input{background:transparent;border:1px solid transparent;padding:4px 8px;font-size:14px;font-weight:500;width:150px;color:var(--text-primary);border-radius:4px}.title-input:hover{border-color:var(--border-color)}.title-input:focus{border-color:var(--primary-color);background:var(--bg-canvas)}.menu-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:none;background:transparent;color:var(--text-secondary);border-radius:6px;cursor:pointer;transition:all .2s}.menu-btn:hover{background:var(--btn-hover);color:var(--text-primary)}.menu-btn:disabled{opacity:.5;cursor:not-allowed}.menu-btn.primary{background:var(--primary-color);color:#fff;width:auto;padding:0 12px}.menu-btn.primary:hover{opacity:.9}.menu-dropdown{position:absolute;top:60px;left:0;background:var(--bg-panel);border:1px solid var(--border-color);border-radius:8px;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;padding:8px 0;width:300px;z-index:10050;display:flex;flex-direction:column;gap:1px;max-height:80vh;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--border-color) transparent}.menu-dropdown::-webkit-scrollbar{width:8px}.menu-dropdown::-webkit-scrollbar-track{background:transparent}.menu-dropdown::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:4px;border:2px solid var(--bg-panel)}.menu-dropdown::-webkit-scrollbar-thumb:hover{background:var(--text-secondary)}@media(max-width:480px){.menu-dropdown{width:280px;left:0}}@media(max-width:768px){.menu-container .drag-handle{display:none}.menu-container{padding:4px}}.menu-item{display:grid;grid-template-columns:20px 1fr auto;align-items:center;gap:12px;padding:10px 16px;border:none;background:transparent;color:var(--text-primary);cursor:pointer;text-align:left;width:100%;box-sizing:border-box;transition:background .2s}.menu-item:hover{background:var(--btn-hover)}.menu-item svg{color:var(--text-secondary)}.menu-item .label{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:14px}.menu-item-right{display:flex;align-items:center;gap:12px;flex-shrink:0;justify-content:flex-end;min-width:70px}.menu-item .shortcut{font-size:11px;color:var(--text-secondary);opacity:.6;white-space:nowrap;min-width:40px;text-align:right}.check-icon{color:var(--primary-color)}.menu-separator{height:1px;background:var(--border-color);margin:4px 0}.menu-group .menu-group-chevron{margin-left:auto;transition:transform .15s ease;opacity:.7}.menu-group.expanded .menu-group-chevron{transform:rotate(180deg)}.menu-item.menu-sub{padding-left:34px;font-size:.92em}.menu-item.menu-sub .label{color:var(--text-secondary)}.menu-item.menu-sub:hover .label{color:var(--text-primary)}.menu-backdrop{position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:999;cursor:default}.app-title{position:fixed;top:12px;left:50%;transform:translate(-50%);background:var(--bg-panel);padding:4px 12px;border-radius:6px;border:1px solid var(--border-color);box-shadow:var(--shadow-sm);font-weight:500;color:var(--text-secondary);opacity:.6;z-index:100;font-size:13px;pointer-events:none;-webkit-user-select:none;user-select:none}.context-menu{position:fixed;background:var(--bg-panel);border:1px solid var(--border-color);border-radius:8px;box-shadow:0 4px 20px #00000026;padding:4px;min-width:220px;max-height:80vh;overflow-y:auto;overflow-x:visible;z-index:10000;-webkit-user-select:none;user-select:none;font-size:14px}.menu-item-wrapper{position:relative}.context-menu-item{width:100%;display:flex;align-items:center;gap:8px;padding:8px 12px;border:none;background:transparent;color:var(--text-primary);cursor:pointer;border-radius:4px;text-align:left;transition:background .15s;font-size:13px}.context-menu-item:hover:not(.disabled){background:var(--btn-hover)}.context-menu-item.disabled{opacity:.4;cursor:not-allowed}.menu-item-check{width:16px;flex-shrink:0;font-size:12px;color:#3b82f6}.menu-item-label{flex:1}.menu-item-shortcut{font-size:11px;color:var(--text-secondary);opacity:.6;font-family:monospace}.context-menu-separator{height:1px;background:var(--border-color);margin:4px 8px}[data-theme=dark] .context-menu,[data-theme=focus] .context-menu{box-shadow:0 4px 20px #0006}.pen-options-bar{position:fixed;top:68px;left:50%;transform:translate(-50%);z-index:9000;display:flex;gap:6px;padding:5px;border-radius:10px;background:var(--panel-bg, rgba(32, 32, 36, .92));border:1px solid var(--panel-border, rgba(255, 255, 255, .12));box-shadow:0 4px 16px #00000047;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.pen-opt-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;min-height:34px;border-radius:7px;border:1px solid transparent;background:transparent;color:var(--text-color, #e6e6e6);font-size:13px;font-weight:600;cursor:pointer;user-select:none;-webkit-user-select:none;touch-action:manipulation}.pen-opt-btn:hover{background:var(--hover-bg, rgba(255, 255, 255, .08))}.pen-opt-btn.active{background:var(--accent-color, #3b82f6);border-color:var(--accent-color, #3b82f6);color:#fff}.pen-opt-icon{font-size:16px;line-height:1}.pen-opt-label{line-height:1}@media(max-width:768px){.pen-opt-label{display:none}.pen-opt-btn{padding:8px 12px;min-height:40px}}.recording-overlay{position:fixed;top:20px;left:50%;transform:translate(-50%);background:#000000d9;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);padding:8px 16px;border-radius:24px;display:flex;align-items:center;gap:16px;z-index:99999;box-shadow:0 4px 12px #0003;border:1px solid rgba(255,255,255,.1);color:#fff;font-family:Inter,sans-serif;animation:slideDown .3s cubic-bezier(.16,1,.3,1)}@keyframes slideDown{0%{transform:translate(-50%,-20px);opacity:0}to{transform:translate(-50%);opacity:1}}.recording-indicator{display:flex;align-items:center;gap:6px}.pulse-dot{width:10px;height:10px;background-color:#ff3b30;border-radius:50%;animation:pulse 1.5s infinite}@keyframes pulse{0%{transform:scale(.95);box-shadow:0 0 #ff3b30b3}70%{transform:scale(1);box-shadow:0 0 0 6px #ff3b3000}to{transform:scale(.95);box-shadow:0 0 #ff3b3000}}.recording-text{font-weight:700;font-size:12px;letter-spacing:.5px;color:#ff3b30}.recording-timer{font-variant-numeric:tabular-nums;font-size:14px;font-weight:500;min-width:36px}.stop-btn{display:flex;align-items:center;gap:6px;background:#ffffff1a;border:none;padding:6px 12px;border-radius:16px;color:#fff;font-size:13px;font-weight:600;cursor:pointer;transition:all .2s}.stop-btn:hover{background:#fff3;transform:translateY(-1px)}.stop-btn:active{transform:translateY(0)}.timelapse-overlay{position:fixed;top:20px;left:20px;background:#140c28d9;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);padding:8px 14px;border-radius:24px;display:flex;align-items:center;gap:14px;z-index:99999;box-shadow:0 4px 12px #00000040;border:1px solid rgba(167,139,250,.35);color:#fff;font-family:Inter,sans-serif;animation:tlSlideDown .3s cubic-bezier(.16,1,.3,1)}@keyframes tlSlideDown{0%{transform:translateY(-20px);opacity:0}to{transform:translateY(0);opacity:1}}.timelapse-indicator{display:flex;align-items:center;gap:6px;color:#a78bfa}.timelapse-text{font-weight:700;font-size:11px;letter-spacing:.5px;color:#a78bfa;animation:tlPulse 1.6s infinite}@keyframes tlPulse{0%,to{opacity:1}50%{opacity:.45}}.timelapse-count{font-variant-numeric:tabular-nums;font-size:13px;font-weight:500;min-width:60px;opacity:.9}.timelapse-stop-btn{display:flex;align-items:center;gap:6px;background:#ffffff1f;border:none;padding:5px 12px;border-radius:16px;color:#fff;font-size:13px;font-weight:600;cursor:pointer;transition:all .2s}.timelapse-stop-btn:hover{background:#ffffff38;transform:translateY(-1px)}.timelapse-stop-btn:active{transform:translateY(0)}.tl-player-backdrop{position:fixed;inset:0;background:#0009;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:100000;display:flex;align-items:center;justify-content:center;animation:tlpFade .2s ease}@keyframes tlpFade{0%{opacity:0}to{opacity:1}}.tl-player{width:min(80vw,1000px);max-height:86vh;background:#14110f;border:1px solid rgba(167,139,250,.3);border-radius:12px;box-shadow:0 12px 40px #00000080;display:flex;flex-direction:column;overflow:hidden;color:#f5f5f5;font-family:Inter,sans-serif}.tl-player-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid rgba(255,255,255,.08)}.tl-player-title{display:flex;align-items:center;gap:8px;font-weight:600;font-size:14px;color:#c4b5fd}.tl-player-close{background:transparent;border:none;color:#aaa;cursor:pointer;padding:4px;border-radius:6px;display:flex;transition:all .15s}.tl-player-close:hover{background:#ffffff1a;color:#fff}.tl-player-stage{flex:1;min-height:280px;display:flex;align-items:center;justify-content:center;background:repeating-conic-gradient(#1c1916 0% 25%,#161310 0% 50%) 50% / 24px 24px;overflow:hidden}.tl-player-frame{max-width:100%;max-height:64vh;object-fit:contain;display:block}.tl-player-msg{color:#999;font-size:14px;padding:40px}.tl-player-controls{display:flex;align-items:center;gap:12px;padding:12px 16px;border-top:1px solid rgba(255,255,255,.08)}.tl-player-btn{background:#7c3aed;border:none;color:#fff;width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .15s;flex-shrink:0}.tl-player-btn:hover{background:#8b5cf6}.tl-player-scrub{flex:1;accent-color:#a78bfa;cursor:pointer}.tl-player-counter{font-variant-numeric:tabular-nums;font-size:13px;color:#ccc;min-width:64px;text-align:center}.tl-player-speed{background:#ffffff14;color:#f5f5f5;border:1px solid rgba(255,255,255,.12);border-radius:6px;padding:5px 8px;font-size:13px;cursor:pointer}.tl-player-export{display:flex;align-items:center;gap:6px;background:#7c3aed2e;color:#d8caff;border:1px solid rgba(167,139,250,.4);border-radius:8px;padding:6px 12px;font-size:13px;font-weight:600;cursor:pointer;transition:all .15s;flex-shrink:0;min-width:110px;justify-content:center}.tl-player-export:hover:not(:disabled){background:#7c3aed52}.tl-player-export:disabled{opacity:.7;cursor:progress}.video-overlay-container{position:fixed;z-index:1500;background:#000;border-radius:8px;overflow:hidden;box-shadow:0 8px 32px #00000080;min-width:320px}.video-overlay-container.dragging{cursor:grabbing;-webkit-user-select:none;user-select:none}.video-overlay-titlebar{display:flex;align-items:center;gap:2px;padding:3px 4px;background:#000000bf;-webkit-user-select:none;user-select:none}.video-overlay-drag-hint{color:#ffffff73;display:flex;align-items:center;padding:0 2px}.video-overlay-titlebar-spacer{flex:1}.video-overlay-titlebar-btn{width:24px;height:24px;border-radius:4px;border:none;background:transparent;color:#ffffffa6;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s,color .15s}.video-overlay-titlebar-btn:hover{background:#ffffff26;color:#fff}.video-overlay-content{width:100%}.video-overlay-iframe{width:100%;height:100%;border:none}.video-overlay-player{width:100%;height:100%;object-fit:contain}.rt-overlay-wrapper{z-index:10000;pointer-events:auto;background:var(--bg-panel, #ffffff);border:1px dashed var(--primary-color, #3b82f6);border-radius:6px;box-shadow:0 2px 8px #00000026;padding:4px}.rt-toolbar{display:flex;align-items:center;gap:2px;padding:4px 6px;background:var(--bg-panel, #ffffff);border:none;border-bottom:1px solid var(--border-color, #e5e7eb);border-radius:0;box-shadow:none;margin-bottom:4px;width:100%;margin-left:auto;margin-right:auto}.rt-toolbar-btn{width:26px;height:26px;background:transparent;border:1px solid transparent;border-radius:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:13px;color:var(--text-secondary, #6b7280);transition:all .15s;padding:0}.rt-toolbar-btn:hover{background:var(--btn-hover, #f3f4f6);color:var(--text-primary, #374151)}.rt-toolbar-btn.active{background:var(--primary-color, #3b82f6);color:#fff;border-color:var(--primary-color, #3b82f6)}.rt-toolbar-divider{width:1px;height:20px;background:var(--border-color, #e5e7eb);margin:0 2px;flex-shrink:0}.rt-color-wrapper{position:relative}.rt-color-icon{font-weight:700;font-size:14px;border-bottom:3px solid var(--primary-color, #3b82f6);line-height:1;padding-bottom:1px}.rt-color-popover{position:absolute;top:calc(100% + 6px);left:50%;transform:translate(-50%);background:var(--bg-panel, #ffffff);border:1px solid var(--border-color, #e5e7eb);border-radius:6px;padding:6px;box-shadow:0 4px 12px #0003;z-index:10003;display:grid;grid-template-columns:repeat(4,1fr);gap:4px}.rt-color-swatch{width:20px;height:20px;border-radius:4px;cursor:pointer;transition:transform .1s;padding:0}.rt-color-swatch:hover{transform:scale(1.2)}.rt-font-wrapper{position:relative}.rt-font-icon{font-weight:700;font-size:14px;font-family:serif;line-height:1}.rt-font-popover{position:absolute;top:calc(100% + 6px);left:50%;transform:translate(-50%);background:var(--bg-panel, #ffffff);border:1px solid var(--border-color, #e5e7eb);border-radius:6px;padding:4px;box-shadow:0 4px 12px #0003;z-index:10003;display:flex;flex-direction:column;gap:1px;min-width:130px}.rt-font-option{background:transparent;border:none;border-radius:4px;cursor:pointer;padding:4px 8px;text-align:left;font-size:13px;color:var(--text-primary, #374151);transition:background .1s;white-space:nowrap}.rt-font-option:hover{background:var(--btn-hover, #f3f4f6)}.rt-editor{box-sizing:border-box;border:none;background:transparent;outline:none;padding:4px;overflow-wrap:break-word;word-break:break-word;white-space:pre-wrap}.rt-editor ul,.rt-editor ol{margin:0;padding-left:20px}.rt-editor li{margin:0;padding:0}.rt-editor ul{list-style-type:disc}.rt-editor ol{list-style-type:decimal}.text-editor-modal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#00000080;display:flex;justify-content:center;align-items:center;z-index:2000;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.text-editor-modal{background:var(--bg-panel, #ffffff);color:var(--text-primary, #1f2937);border-radius:12px;width:700px;max-width:90vw;max-height:70vh;box-shadow:0 20px 25px -5px #0000001a;display:flex;flex-direction:column;overflow:hidden;border:1px solid var(--border-color, #e5e7eb)}.text-editor-modal-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid var(--border-color, #e5e7eb);flex-shrink:0}.text-editor-modal-header h3{margin:0;font-size:1rem;font-weight:600}.text-editor-modal-toolbar{display:flex;align-items:center;gap:2px;padding:8px 20px;border-bottom:1px solid var(--border-color, #e5e7eb);flex-shrink:0}.text-editor-modal-toolbar .rt-toolbar-btn{width:28px;height:28px}.text-editor-modal-toolbar .rt-color-popover{z-index:2010}.text-editor-modal-body{flex:1;overflow-y:auto;padding:0;min-height:200px}.text-editor-modal-editor{box-sizing:border-box;width:100%;min-height:100%;padding:16px 20px;outline:none;overflow-wrap:break-word;word-break:break-word;white-space:pre-wrap;line-height:1.6}.text-editor-modal-textarea{box-sizing:border-box;width:100%;min-height:100%;padding:16px 20px;border:none;outline:none;background:transparent;color:inherit;resize:none;line-height:1.6;font-size:16px}.text-editor-modal-footer{display:flex;justify-content:flex-end;padding:12px 20px;border-top:1px solid var(--border-color, #e5e7eb);flex-shrink:0}.text-editor-modal-done-btn{padding:6px 20px;background:var(--primary-color, #3b82f6);color:#fff;border:none;border-radius:6px;font-size:14px;cursor:pointer;font-weight:500;transition:background .15s}.text-editor-modal-done-btn:hover{background:var(--primary-hover, #2563eb)}.text-editor-modal-editor ul,.text-editor-modal-editor ol{margin:0;padding-left:20px}.text-editor-modal-editor li{margin:0;padding:0}.text-editor-modal-editor ul{list-style-type:disc}.text-editor-modal-editor ol{list-style-type:decimal}.mesh-overlay{position:fixed;inset:0;pointer-events:none;z-index:38}.mesh-overlay-svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}.mesh-node{position:absolute;width:14px;height:14px;margin:-7px 0 0 -7px;box-sizing:border-box;border:2px solid #fff;border-radius:50%;box-shadow:0 0 0 1px #6366f1e6,0 1px 3px #0006;cursor:grab;pointer-events:auto;touch-action:none}.mesh-node:hover{transform:scale(1.25);box-shadow:0 0 0 2px #6366f1,0 1px 4px #00000080}.mesh-node:active{cursor:grabbing}.mesh-color-input{position:absolute;width:0;height:0;opacity:0;pointer-events:none}.artboard-overlay{position:fixed;inset:0;pointer-events:none;z-index:36}.ab-chip{position:absolute;display:inline-flex;align-items:center;gap:2px;font-size:11px;line-height:16px;color:var(--text-secondary, #888);background:var(--bg-panel, #fff);border:1px solid var(--border-color, #ddd);border-radius:4px;pointer-events:auto;-webkit-user-select:none;user-select:none;overflow:hidden}.ab-chip-name{padding:2px 6px;max-width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:grab}.ab-chip-name:active{cursor:grabbing}.ab-chip.active{color:#fff;background:var(--primary-color, #3b82f6);border-color:var(--primary-color, #3b82f6)}.ab-chip-del{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;margin:0;padding:0;flex:0 0 auto;font-size:11px;line-height:1;color:#fff;background:var(--danger-color, #ef4444);border:none;border-radius:3px;cursor:pointer}.ab-chip-del:hover{background:var(--danger-color, #ef4444);color:#fff;filter:brightness(1.1)}.ab-frame{position:absolute;box-sizing:border-box;border:1.5px solid var(--primary-color, #3b82f6);pointer-events:none;background:transparent}.ab-handle{position:absolute;width:10px;height:10px;margin:-5px 0 0 -5px;background:#fff;border:1.5px solid var(--primary-color, #3b82f6);border-radius:2px;pointer-events:auto;box-shadow:0 1px 2px #0000004d}.ab-nw,.ab-se{cursor:nwse-resize}.ab-ne,.ab-sw{cursor:nesw-resize}.ab-n,.ab-s{cursor:ns-resize}.ab-e,.ab-w{cursor:ew-resize}.measure-overlay{position:fixed;inset:0;z-index:39;cursor:crosshair;pointer-events:auto;touch-action:none}.measure-svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}.measure-label{position:absolute;transform:translate(-50%,-140%);padding:2px 7px;font-size:11px;font-weight:600;white-space:nowrap;color:#fff;background:#e11d48;border-radius:5px;pointer-events:none;box-shadow:0 1px 4px #0000004d}.measure-leg{position:absolute;transform:translate(-50%,-50%);padding:1px 5px;font-size:10px;font-weight:600;white-space:nowrap;color:#e11d48;background:#ffffffeb;border:1px solid #e11d48;border-radius:4px;pointer-events:none}.measure-metrics{position:absolute;transform:translateY(-100%) translateY(-8px);padding:5px 9px;font-size:11px;line-height:1.5;white-space:nowrap;color:var(--text-primary, #111);background:var(--bg-panel, #fff);border:1px solid #e11d48;border-radius:7px;box-shadow:0 3px 10px #0000002e;pointer-events:none}.measure-metrics span{color:var(--text-secondary, #888);font-weight:600;margin-right:2px}.measure-hint{position:absolute;top:64px;left:50%;transform:translate(-50%);padding:5px 12px;font-size:12px;color:var(--text-primary, #111);background:var(--bg-panel, #fff);border:1px solid var(--border-color, #ddd);border-radius:8px;box-shadow:0 4px 14px #00000026;pointer-events:none}.transform-hud-layer{position:fixed;inset:0;z-index:40;pointer-events:none}.transform-hud{position:absolute;transform:translate(-50%,8px);display:flex;flex-direction:column;align-items:center;gap:1px;padding:3px 8px;font-size:11px;font-weight:600;line-height:1.25;white-space:nowrap;color:#fff;background:var(--accent-color, #6366f1);background:color-mix(in srgb,var(--accent-color, #6366f1) 82%,transparent);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);border-radius:5px;box-shadow:0 1px 4px #0000004d;pointer-events:none}.thud-dim{font-variant-numeric:tabular-nums}.thud-sub{font-size:10px;font-weight:500;opacity:.85;font-variant-numeric:tabular-nums}.sb-overlay{position:fixed;inset:0;z-index:39;cursor:crosshair;pointer-events:auto;touch-action:none}.sb-svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}.sb-hit{fill:#3b82f62e;stroke:#3b82f6;stroke-width:1.5}.sb-hit.sb-del{fill:#ef44442e;stroke:#ef4444}.sb-stroke{fill:none;stroke:#3b82f6;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;opacity:.85}.sb-stroke-del{stroke:#ef4444}.sb-hint{position:absolute;top:64px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:8px;padding:5px 8px;font-size:12px;color:var(--text-primary, #111);background:var(--bg-panel, #fff);border:1px solid var(--border-color, #ddd);border-radius:8px;box-shadow:0 4px 14px #00000026;pointer-events:none;white-space:nowrap}.sb-mode{pointer-events:auto;cursor:pointer;font-size:11px;font-weight:600;color:var(--text-primary, #111);background:var(--bg-subtle, #f3f4f6);border:1px solid var(--border-color, #ddd);border-radius:6px;padding:2px 8px}.sb-mode-del{color:#ef4444;border-color:#ef4444;background:#ef444414}.sb-done{color:#ef4444;border-color:#ef4444}.sb-mode:hover{filter:brightness(.97)}.cut-overlay{position:fixed;inset:0;z-index:39;cursor:crosshair;pointer-events:auto;touch-action:none}.cut-svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}.cut-line{stroke:#ef4444;stroke-width:1.5;stroke-dasharray:6 4}.cut-hint{position:absolute;top:64px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:10px;padding:5px 8px 5px 12px;font-size:12px;color:var(--text-primary, #111);background:var(--bg-panel, #fff);border:1px solid var(--border-color, #ddd);border-radius:8px;box-shadow:0 4px 14px #00000026;pointer-events:none;white-space:nowrap}.cut-done{pointer-events:auto;cursor:pointer;font-size:11px;font-weight:600;color:#ef4444;background:transparent;border:1px solid #ef4444;border-radius:6px;padding:2px 8px}.cut-done:hover{background:#ef44441a}.spray-overlay{position:fixed;inset:0;z-index:39;cursor:crosshair;pointer-events:auto;touch-action:none}.spray-svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}.spray-dot{fill:#8b5cf68c}.spray-brush{fill:#8b5cf614;stroke:#8b5cf6;stroke-width:1.5;stroke-dasharray:4 3}.spray-hint{position:absolute;top:64px;left:50%;transform:translate(-50%);padding:5px 12px;font-size:12px;color:var(--text-primary, #111);background:var(--bg-panel, #fff);border:1px solid var(--border-color, #ddd);border-radius:8px;box-shadow:0 4px 14px #00000026;pointer-events:none}.lp-overlay{position:fixed;inset:0;z-index:39;cursor:crosshair;pointer-events:auto;touch-action:none}.lp-svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}.lp-face{fill:#3b82f638;stroke:#3b82f6;stroke-width:1.5}.lp-face-del{fill:#ef444438;stroke:#ef4444}.lp-hint{position:absolute;top:64px;left:50%;transform:translate(-50%);padding:5px 12px;font-size:12px;color:var(--text-primary, #111);background:var(--bg-panel, #fff);border:1px solid var(--border-color, #ddd);border-radius:8px;box-shadow:0 4px 14px #00000026;pointer-events:none}.wt-overlay{position:fixed;inset:0;z-index:39;cursor:crosshair;pointer-events:auto;touch-action:none}.wt-svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}.wt-guide{stroke:#0ea5e9;stroke-width:1.5;stroke-dasharray:4 3}.wt-dot{fill:#0ea5e9}.wt-hint{position:absolute;top:64px;left:50%;transform:translate(-50%);padding:5px 12px;font-size:12px;color:var(--text-primary, #111);background:var(--bg-panel, #fff);border:1px solid var(--border-color, #ddd);border-radius:8px;box-shadow:0 4px 14px #00000026;pointer-events:none}.cv-overlay{position:fixed;inset:0;z-index:39;cursor:crosshair;pointer-events:auto;touch-action:none}.cv-svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}.cv-path{fill:none;stroke:#6366f1;stroke-width:2;stroke-dasharray:5 3}.cv-dot{fill:#6366f1}.cv-dot-first{fill:#fff;stroke:#6366f1;stroke-width:2}.cv-hint{position:absolute;top:64px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:10px;padding:5px 8px 5px 12px;font-size:12px;white-space:nowrap;color:var(--text-primary, #111);background:var(--bg-panel, #fff);border:1px solid var(--border-color, #ddd);border-radius:8px;box-shadow:0 4px 14px #00000026;pointer-events:none}.cv-done{pointer-events:auto;cursor:pointer;font-size:11px;font-weight:600;color:#6366f1;background:transparent;border:1px solid #6366f1;border-radius:6px;padding:2px 8px}.cv-done:hover{background:#6366f11a}.rs-overlay{position:fixed;inset:0;z-index:39;cursor:crosshair;pointer-events:auto;touch-action:none}.rs-svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}.rs-anchor{fill:#10b98140;stroke:#10b981;stroke-width:2}.rs-hint{position:absolute;top:64px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:10px;padding:5px 8px 5px 12px;font-size:12px;white-space:nowrap;color:var(--text-primary, #111);background:var(--bg-panel, #fff);border:1px solid var(--border-color, #ddd);border-radius:8px;box-shadow:0 4px 14px #00000026;pointer-events:none}.rs-done{pointer-events:auto;cursor:pointer;font-size:11px;font-weight:600;color:#10b981;background:transparent;border:1px solid #10b981;border-radius:6px;padding:2px 8px}.rs-done:hover{background:#10b9811a}.bb-overlay{position:fixed;inset:0;z-index:39;cursor:crosshair;pointer-events:auto;touch-action:none}.bb-svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}.bb-stroke{fill:none;stroke:#6366f166;stroke-linecap:round;stroke-linejoin:round}.bb-cursor{fill:#6366f11a;stroke:#6366f1;stroke-width:1.5}.bb-hint{position:absolute;top:64px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:10px;padding:5px 8px 5px 12px;font-size:12px;white-space:nowrap;color:var(--text-primary, #111);background:var(--bg-panel, #fff);border:1px solid var(--border-color, #ddd);border-radius:8px;box-shadow:0 4px 14px #00000026;pointer-events:none}.bb-done{pointer-events:auto;cursor:pointer;font-size:11px;font-weight:600;color:#6366f1;background:transparent;border:1px solid #6366f1;border-radius:6px;padding:2px 8px}.bb-done:hover{background:#6366f11a}.pe-overlay{position:fixed;inset:0;z-index:39;cursor:crosshair;pointer-events:auto;touch-action:none}.pe-svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}.pe-stroke{fill:none;stroke:#ef444459;stroke-linecap:round;stroke-linejoin:round}.pe-cursor{fill:#ef44441a;stroke:#ef4444;stroke-width:1.5}.pe-hint{position:absolute;top:64px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:10px;padding:5px 8px 5px 12px;font-size:12px;white-space:nowrap;color:var(--text-primary, #111);background:var(--bg-panel, #fff);border:1px solid var(--border-color, #ddd);border-radius:8px;box-shadow:0 4px 14px #00000026;pointer-events:none}.pe-done{pointer-events:auto;cursor:pointer;font-size:11px;font-weight:600;color:#ef4444;background:transparent;border:1px solid #ef4444;border-radius:6px;padding:2px 8px}.pe-done:hover{background:#ef44441a}.pw-overlay{position:fixed;inset:0;z-index:39;cursor:crosshair;pointer-events:auto;touch-action:none}.pw-svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}.pw-pin{fill:#ec489940;stroke:#ec4899;stroke-width:2}.pw-pin-active{fill:#ec489980}.pw-pin-core{fill:#ec4899}.pw-hint{position:absolute;top:64px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:10px;padding:5px 8px 5px 12px;font-size:12px;white-space:nowrap;color:var(--text-primary, #111);background:var(--bg-panel, #fff);border:1px solid var(--border-color, #ddd);border-radius:8px;box-shadow:0 4px 14px #00000026;pointer-events:none}.pw-notice{position:fixed;top:64px;left:50%;transform:translate(-50%);z-index:1200;display:flex;align-items:center;gap:10px;padding:6px 8px 6px 12px;font-size:12px;white-space:nowrap;color:var(--text-primary, #111);background:var(--bg-panel, #fff);border:1px solid var(--border-color, #ddd);border-radius:8px;box-shadow:0 4px 14px #00000026;pointer-events:none}.pw-done{pointer-events:auto;cursor:pointer;font-size:11px;font-weight:600;color:#ec4899;background:transparent;border:1px solid #ec4899;border-radius:6px;padding:2px 8px}.pw-done:hover{background:#ec48991a}.pg-overlay{position:fixed;inset:0;z-index:38;pointer-events:none}.pg-svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}.pg-line{stroke:#3b82f62e;stroke-width:1}.pg-left{stroke:#3b82f638}.pg-right{stroke:#10b98138}.pg-faint{stroke:#7878781a}.pg-horizon{stroke:#f97316;stroke-width:1.5;pointer-events:auto;cursor:ns-resize}.pg-vp{fill:#f97316;stroke:#fff;stroke-width:2;pointer-events:auto;cursor:move}.pg-dragging{cursor:grabbing}.pg-hint{position:absolute;top:64px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:8px;padding:5px 8px 5px 12px;font-size:12px;white-space:nowrap;color:var(--text-primary, #111);background:var(--bg-panel, #fff);border:1px solid var(--border-color, #ddd);border-radius:8px;box-shadow:0 4px 14px #00000026;pointer-events:none}.pg-sep{opacity:.4}.pg-btn,.pg-done{pointer-events:auto;cursor:pointer;font-size:11px;font-weight:600;color:var(--text-primary, #111);background:var(--bg-subtle, #f3f4f6);border:1px solid var(--border-color, #ddd);border-radius:6px;padding:2px 8px}.pg-done{color:#f97316;border-color:#f97316}.pg-btn:hover{filter:brightness(.97)}.fp-trigger{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:6px 10px;border:1px solid var(--border-color);border-radius:6px;font-size:13px;color:var(--text-primary);background:var(--bg-panel);cursor:pointer;min-width:120px;max-width:160px}.fp-trigger:focus{outline:2px solid #3b82f6;border-color:#3b82f6}.fp-trigger-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fp-popup{position:fixed;z-index:10000;display:flex;flex-direction:column;background:var(--bg-panel);border:1px solid var(--border-color);border-radius:8px;box-shadow:0 8px 24px #0000002e;overflow:hidden}.fp-search{margin:6px;padding:5px 8px;border:1px solid var(--border-color);border-radius:6px;font-size:12px;background:var(--bg-secondary);color:var(--text-primary);flex:0 0 auto}.fp-list{overflow-y:auto;flex:1 1 auto;padding:2px 4px}.fp-item{display:flex;align-items:center;justify-content:space-between;gap:6px;width:100%;padding:6px 8px;border:none;border-radius:5px;background:transparent;color:var(--text-primary);font-size:13px;text-align:left;cursor:pointer}.fp-item.focused{background:var(--bg-secondary)}.fp-item.selected{color:#3b82f6}.fp-item-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fp-empty{padding:10px;font-size:12px;color:var(--text-secondary);text-align:center}.fp-actions{flex:0 0 auto;border-top:1px solid var(--border-color);padding:4px;display:flex;flex-direction:column}.fp-action{padding:6px 8px;border:none;border-radius:5px;background:transparent;color:var(--text-primary);font-size:12px;text-align:left;cursor:pointer}.fp-action:hover{background:var(--bg-secondary)}@keyframes gf-fade{0%{opacity:0}to{opacity:1}}.gf-modal{width:min(440px,92vw);max-height:80vh;display:flex;flex-direction:column;background:var(--bg-panel);color:var(--text-primary);border:1px solid var(--border-color);border-radius:12px;box-shadow:var(--shadow-lg);overflow:hidden}.gf-modal.gf-docked{position:fixed;top:64px;right:16px;bottom:16px;z-index:2200;width:min(340px,88vw);max-height:none;animation:gf-fade .15s ease-out}.gf-header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--border-color)}.gf-header h2{margin:0;font-size:16px;font-weight:600}.gf-close{border:none;background:transparent;cursor:pointer;color:var(--text-secondary);padding:2px}.gf-close:hover{color:var(--text-primary)}.gf-search{display:flex;align-items:center;gap:6px;padding:10px 14px;border-bottom:1px solid var(--border-color);color:var(--text-secondary)}.gf-search input{flex:1;border:none;outline:none;background:transparent;font-size:14px;color:var(--text-primary)}.gf-clear{border:none;background:transparent;cursor:pointer;font-size:16px;color:var(--text-secondary)}.gf-list{overflow-y:auto;padding:6px;display:flex;flex-direction:column;gap:2px}.gf-item{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:8px 10px;border:1px solid transparent;border-radius:8px;background:transparent;cursor:pointer;text-align:left;color:var(--text-primary)}.gf-item:hover,.gf-item.focused{background:#6366f124;border-color:#6366f1}.gf-item.applied{border-color:var(--accent-color, #6366f1);background:#6366f114}.gf-name{font-size:13px;font-weight:500}.gf-sample{font-size:18px;color:var(--text-secondary);white-space:nowrap}.gf-applied{font-size:12px;font-weight:600;color:var(--accent-color, #6366f1);white-space:nowrap}.gf-empty{padding:16px;text-align:center;color:var(--text-secondary);font-size:13px}.gf-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 14px;border-top:1px solid var(--border-color);font-size:11px;color:var(--text-secondary)}.gf-done{padding:5px 16px;border:none;border-radius:6px;background:#6366f1;color:#fff;font-size:12px;font-weight:600;cursor:pointer}.gf-done:hover{background:#4f46e5;color:#fff}.tt-overlay{position:fixed;inset:0;z-index:39;cursor:crosshair;pointer-events:auto;touch-action:none}.tt-svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}.tt-sel{fill:#3b82f61f;stroke:#3b82f6;stroke-width:2;stroke-dasharray:3 2}.tt-hint{position:absolute;top:64px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:10px;padding:5px 8px 5px 12px;font-size:12px;white-space:nowrap;color:var(--text-primary, #111);background:var(--bg-panel, #fff);border:1px solid var(--border-color, #ddd);border-radius:8px;box-shadow:0 4px 14px #00000026;pointer-events:none}.tt-done{pointer-events:auto;cursor:pointer;font-size:11px;font-weight:600;color:#3b82f6;background:transparent;border:1px solid #3b82f6;border-radius:6px;padding:2px 8px}.tt-done:hover{background:#3b82f61a}.tt-controls{position:absolute;transform:translate(-50%);display:flex;gap:4px;padding:4px;background:var(--bg-panel, #fff);border:1px solid var(--border-color, #ddd);border-radius:9px;box-shadow:0 4px 14px #0000002e;pointer-events:auto;touch-action:none}.tt-controls button{pointer-events:auto;cursor:pointer;min-width:30px;height:30px;font-size:14px;font-weight:600;line-height:1;color:var(--text-primary, #111);background:var(--bg-secondary, #f3f4f6);border:1px solid var(--border-color, #ddd);border-radius:6px}.tt-controls button:hover{background:#3b82f6;border-color:#3b82f6;color:#fff}.tt-controls button:active{transform:scale(.94)}.tt-controls .tt-color{pointer-events:auto;cursor:pointer;width:30px;height:30px;padding:2px;background:var(--bg-secondary, #f3f4f6);border:1px solid var(--border-color, #ddd);border-radius:6px}.tt-marquee{position:absolute;pointer-events:none;border:1px solid #3b82f6;background:#3b82f61f;border-radius:2px;z-index:2}.tt-fontpicker{pointer-events:auto}.tt-controls .fp-trigger{height:30px;min-width:90px;max-width:110px;padding:0 6px;font-size:12px;background:var(--bg-secondary, #f3f4f6)}.game-overlay{position:fixed;inset:0;z-index:6000;touch-action:none;background:transparent;user-select:none;-webkit-user-select:none;cursor:crosshair}.game-stop{position:absolute;top:12px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:8px;padding:10px 22px;border:none;border-radius:999px;background:#dc2626eb;color:#fff;font-size:14px;font-weight:700;cursor:pointer;box-shadow:0 4px 14px #0000004d}.game-stop:hover{background:#b91c1c}.game-ended{position:absolute;left:50%;top:62%;transform:translate(-50%);display:flex;gap:14px}.game-replay,.game-exit{display:flex;align-items:center;gap:10px;padding:14px 30px;border:none;border-radius:999px;font-size:16px;font-weight:800;cursor:pointer;box-shadow:0 6px 18px #0000004d}.game-replay{background:#16a34a;color:#fff}.game-replay:hover{background:#15803d}.game-exit{background:#334155;color:#fff}.game-exit:hover{background:#1e293b}.gp-dpad{position:absolute;left:22px;bottom:26px;display:grid;grid-template-columns:64px 64px 64px;grid-template-rows:64px 64px;grid-template-areas:". up ." "left down right";gap:6px}.gp-up{grid-area:up}.gp-left{grid-area:left}.gp-right{grid-area:right}.gp-down{grid-area:down}.gp-actions{position:absolute;right:22px;bottom:34px;display:flex;align-items:flex-end;gap:14px}.gp-btn{width:64px;height:64px;border:2px solid rgba(255,255,255,.65);border-radius:16px;background:#11182773;color:#fff;font-size:22px;font-weight:700;cursor:pointer;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center}.gp-btn:active{background:#6366f1bf;border-color:#fff}.gp-a,.gp-b{border-radius:50%;width:72px;height:72px;font-size:24px}.gp-a{background:#dc26268c}.gp-b{background:#2563eb8c;margin-bottom:26px}.sl-overlay{position:fixed;inset:0;z-index:39;cursor:crosshair;pointer-events:auto;touch-action:none}.sl-svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}.sl-rect{fill:#0ea5e91a;stroke:#0ea5e9;stroke-width:1.5;stroke-dasharray:5 3}.sl-hint{position:absolute;top:64px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:10px;padding:5px 8px 5px 12px;font-size:12px;white-space:nowrap;color:var(--text-primary, #111);background:var(--bg-panel, #fff);border:1px solid var(--border-color, #ddd);border-radius:8px;box-shadow:0 4px 14px #00000026;pointer-events:none}.sl-done{pointer-events:auto;cursor:pointer;font-size:11px;font-weight:600;color:#0ea5e9;background:transparent;border:1px solid #0ea5e9;border-radius:6px;padding:2px 8px}.sl-done:hover{background:#0ea5e91a}.sy-overlay{position:fixed;inset:0;z-index:39;cursor:crosshair;pointer-events:auto;touch-action:none}.sy-svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}.sy-cursor{fill:#8b5cf614;stroke:#8b5cf6;stroke-width:1.5;stroke-dasharray:4 3}.sy-hint{position:absolute;top:64px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:5px;padding:5px 8px;font-size:11px;white-space:nowrap;background:var(--bg-panel, #fff);border:1px solid var(--border-color, #ddd);border-radius:8px;box-shadow:0 4px 14px #00000026;pointer-events:none}.sy-mode{pointer-events:auto;cursor:pointer;font-size:11px;font-weight:600;color:var(--text-primary, #111);background:var(--bg-subtle, #f3f4f6);border:1px solid var(--border-color, #ddd);border-radius:6px;padding:2px 7px}.sy-mode-on{color:#8b5cf6;border-color:#8b5cf6;background:#8b5cf61a}.sy-done{pointer-events:auto;cursor:pointer;font-size:11px;font-weight:600;color:#ef4444;background:transparent;border:1px solid #ef4444;border-radius:6px;padding:2px 8px;margin-left:4px}.top-overlay{position:fixed;inset:0;z-index:39;cursor:text;pointer-events:auto;touch-action:none}.top-svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}.top-hl{fill:#6366f114;stroke:#6366f1;stroke-width:1.5;stroke-dasharray:4 3}.top-hint{position:absolute;top:64px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:10px;padding:5px 8px 5px 12px;font-size:12px;white-space:nowrap;color:var(--text-primary, #111);background:var(--bg-panel, #fff);border:1px solid var(--border-color, #ddd);border-radius:8px;box-shadow:0 4px 14px #00000026;pointer-events:none}.top-done{pointer-events:auto;cursor:pointer;font-size:11px;font-weight:600;color:#6366f1;background:transparent;border:1px solid #6366f1;border-radius:6px;padding:2px 8px}.top-done:hover{background:#6366f11a}.symbol-edit-banner{position:fixed;top:64px;left:50%;transform:translate(-50%);z-index:60;display:flex;align-items:center;gap:8px;padding:6px 10px;background:var(--bg-panel, #fff);border:1px solid var(--border-color, #ddd);border-radius:8px;box-shadow:0 4px 14px #00000026;font-size:12px;color:var(--text-primary, #111);-webkit-user-select:none;user-select:none}.symbol-edit-banner>svg{color:var(--primary-color, #3b82f6)}.seb-label{color:var(--text-secondary, #888)}.seb-name{font-weight:600;max-width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.seb-btn{display:inline-flex;align-items:center;gap:3px;padding:3px 9px;margin-left:2px;border:1px solid var(--border-color, #ddd);border-radius:5px;background:var(--bg-secondary, #f6f7f9);color:var(--text-primary, #111);font-size:11px;cursor:pointer}.seb-done{background:var(--primary-color, #3b82f6);border-color:var(--primary-color, #3b82f6);color:#fff}.seb-done:hover{filter:brightness(1.08)}.seb-cancel:hover{background:var(--bg-hover, #eee)}.pen-tool-group,.tool-icon-wrapper{position:relative;display:flex;align-items:center;justify-content:center}.dropdown-indicator{font-size:8px;margin-left:2px;opacity:.6}.pen-tool-dropdown{position:fixed;min-width:200px;background:var(--bg-panel);border:1px solid var(--border-color);border-radius:8px;box-shadow:var(--shadow-sm);z-index:10003;padding:8px;display:grid;grid-template-columns:repeat(4,1fr);gap:10px;max-height:70vh;overflow-y:auto;-webkit-overflow-scrolling:touch;scrollbar-width:thin}.pen-tool-dropdown::-webkit-scrollbar{width:6px}.pen-tool-dropdown::-webkit-scrollbar-thumb{background-color:var(--border-color);border-radius:3px}.dropdown-item{display:flex;align-items:center;justify-content:center;padding:10px;width:40px;height:40px;border:none;background:transparent;border-radius:4px;cursor:pointer;color:inherit;transition:background .2s;touch-action:manipulation}.dropdown-item:hover{background:var(--btn-hover)}.dropdown-item.active{background:var(--primary-color);color:#fff}.tool-label{flex:1}.submenu-indicator{font-size:14px;margin-left:4px;opacity:1;color:var(--primary-color);fill:var(--primary-color);vertical-align:middle}.toolbar-btn:hover .submenu-indicator{transform:rotate(180deg)}.toolbar-btn.tool-locked:after{content:"";position:absolute;top:4px;right:4px;width:6px;height:6px;background:var(--primary-color);border-radius:50%;box-shadow:0 0 2px #0000004d}.arch-dropdown{display:flex;flex-direction:column;gap:6px;padding:8px;max-height:min(70vh,560px);overflow-y:auto;width:max-content}.arch-dropdown-title{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:var(--text-primary);padding:2px 2px 4px;border-bottom:1px solid var(--border-color)}.arch-section{display:flex;flex-direction:column;gap:4px}.arch-section-title{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--text-secondary);padding:2px 2px 0}.arch-section-grid{display:grid;grid-template-columns:repeat(5,auto);gap:2px}@media(max-width:768px){.arch-section-grid{grid-template-columns:repeat(4,auto)}}.connector-tool-group{position:relative;display:flex;align-items:center;justify-content:center}.connector-tool-dropdown{position:fixed;min-width:200px;background:var(--bg-panel);border:1px solid var(--border-color);border-radius:8px;box-shadow:var(--shadow-sm);z-index:10003;padding:8px;display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.video-dialog-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:2000;animation:video-dialog-fade-in .15s ease-out}@keyframes video-dialog-fade-in{0%{opacity:0}to{opacity:1}}.video-dialog-modal{background:var(--bg-panel);border:1px solid var(--border-color);border-radius:12px;padding:24px;width:min(440px,90vw);box-shadow:var(--shadow-lg);color:var(--text-primary);animation:video-dialog-slide-up .15s ease-out}@keyframes video-dialog-slide-up{0%{transform:translateY(10px);opacity:0}to{transform:translateY(0);opacity:1}}.video-dialog-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.video-dialog-header h2{margin:0;font-size:18px;font-weight:600;display:flex;align-items:center;gap:8px}.video-dialog-body{margin-bottom:20px}.video-dialog-label{display:block;font-size:12px;font-weight:500;color:var(--text-secondary);margin-bottom:6px;text-transform:uppercase;letter-spacing:.5px}.video-dialog-input-wrap{position:relative}.video-dialog-input{width:100%;padding:10px 12px;border-radius:8px;border:1px solid var(--border-color);background:var(--bg-surface);color:var(--text-primary);font-size:14px;outline:none;transition:border-color .15s;box-sizing:border-box}.video-dialog-input:focus{border-color:var(--primary-color)}.video-dialog-input.valid{border-color:#22c55e}.video-dialog-input.invalid{border-color:#ef4444}.video-dialog-provider{position:absolute;right:10px;top:50%;transform:translateY(-50%);font-size:11px;font-weight:500;color:#22c55e;text-transform:uppercase;letter-spacing:.5px}.video-dialog-preview{margin-top:12px;position:relative;border-radius:8px;overflow:hidden;aspect-ratio:16/9;background:#0a0a0a}.video-dialog-preview img{width:100%;height:100%;object-fit:cover}.video-dialog-preview-play{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:44px;height:44px;border-radius:50%;background:#0000008c;display:flex;align-items:center;justify-content:center;color:#fff;pointer-events:none}.video-dialog-hint{margin-top:8px;font-size:12px;color:var(--text-secondary)}.video-dialog-actions{display:flex;justify-content:flex-end;gap:8px}.video-dialog-btn{padding:8px 16px;border-radius:6px;font-size:13px;font-weight:500;cursor:pointer;transition:background .15s,opacity .15s}.video-dialog-btn-cancel{border:1px solid var(--border-color);background:var(--bg-panel);color:var(--text-secondary)}.video-dialog-btn-cancel:hover{background:var(--btn-hover);color:var(--text-primary)}.video-dialog-btn-submit{border:none;background:var(--primary-color);color:#fff}.video-dialog-btn-submit:hover:not(:disabled){opacity:.9}.video-dialog-btn-submit:disabled{opacity:.4;cursor:not-allowed}.toolbar-container{position:fixed;top:12px;left:50%;right:auto;margin:0;width:fit-content;display:flex;align-items:center;gap:4px;padding:4px;background:var(--bg-panel);border-radius:8px;box-shadow:var(--shadow-sm);z-index:10002;border:1px solid var(--border-color);-webkit-user-select:none;user-select:none;transition:box-shadow .2s,background .2s}.toolbar-container.dragging{cursor:grabbing;box-shadow:0 8px 16px #0003}.toolbar-container.wrap{flex-flow:row wrap;align-items:flex-start;align-content:flex-start;justify-content:flex-start;width:max-content;top:12px;bottom:auto;max-height:calc(100vh - 24px);overflow-y:auto;overflow-x:hidden;padding-bottom:12px}.toolbar-container.vertical.wrap{flex-flow:row wrap;top:12px;left:12px}.toolbar-container.resizing{cursor:nwse-resize;box-shadow:0 8px 16px #0003}.toolbar-resize-handle{position:absolute;right:2px;bottom:2px;width:12px;height:12px;cursor:nwse-resize;border-radius:0 0 6px;opacity:0;transition:opacity .15s;background:linear-gradient(135deg,transparent 0 50%,var(--text-secondary, #94a3b8) 50% 60%,transparent 60% 70%,var(--text-secondary, #94a3b8) 70% 80%,transparent 80%)}.toolbar-container:hover .toolbar-resize-handle{opacity:.7}.toolbar-resize-handle:hover{opacity:1!important}.toolbar-container.vertical{flex-direction:column;top:50%;left:12px;right:auto;max-height:calc(100vh - 24px);overflow-y:auto;overflow-x:visible}.toolbar-container.vertical .drag-handle{width:36px;height:12px}.toolbar-container.vertical .drag-dots{width:18px;height:4px}.drag-handle{width:12px;height:36px;cursor:grab;display:flex;align-items:center;justify-content:center;padding:0 2px;opacity:.4;transition:opacity .2s}.toolbar-container:hover .drag-handle{opacity:.8}.drag-dots{width:4px;height:18px;background-image:radial-gradient(var(--text-secondary) 1px,transparent 1px);background-size:4px 4px}@media(pointer:coarse){.drag-handle{opacity:.85;width:22px;touch-action:none}.toolbar-container.vertical .drag-handle{width:44px;height:22px}.toolbar-resize-handle{opacity:.85;width:22px;height:22px;touch-action:none}}@media(max-width:600px){.toolbar-container{inset:auto 0 36px;width:100%;max-width:100%;transform:none;border-radius:0;border-left:none;border-right:none;border-bottom:none;padding:8px 12px;padding-bottom:calc(8px + env(safe-area-inset-bottom,0px));gap:4px;justify-content:flex-start;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;-ms-overflow-style:none;box-shadow:0 -2px 10px #0000001a}.toolbar-container::-webkit-scrollbar{display:none}.toolbar-container .drag-handle{display:none}.toolbar-btn{width:40px;height:40px;flex-shrink:0;touch-action:manipulation}.toolbar-container>*{flex-shrink:0}.pen-tool-dropdown{width:calc(100vw - 40px);max-width:320px;grid-template-columns:repeat(5,1fr)}}.toolbar-btn{position:relative;display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border-radius:6px;border:1px solid transparent;background-color:transparent;color:var(--text-secondary);cursor:pointer;transition:all .2s;-webkit-user-select:none;user-select:none}.hotkey-badge{position:absolute;bottom:1px;right:1px;font-size:8px;line-height:1;color:var(--text-secondary);opacity:.45;pointer-events:none;font-family:system-ui,sans-serif}.toolbar-btn:hover{background-color:var(--btn-hover);color:var(--text-primary)}.brainstorm-toggle{opacity:.5;transition:opacity .2s,background-color .2s}.brainstorm-toggle:hover{opacity:1}.toolbar-btn.active{background-color:var(--primary-light);color:var(--primary-color);border-color:var(--primary-color)}.mobile-property-toggle{margin-left:4px;border-left:1px solid #e5e7eb;padding-left:8px}.tour-overlay{position:fixed;inset:0;z-index:4000;pointer-events:none}.tour-mask{position:absolute;inset:0;width:100%;height:100%;pointer-events:auto}.tour-spotlight-ring{position:absolute;border:2px solid var(--primary-color, #3b82f6);border-radius:10px;box-shadow:0 0 0 4px color-mix(in srgb,var(--primary-color, #3b82f6) 25%,transparent);pointer-events:none;animation:tour-pulse 2s ease-in-out infinite}@keyframes tour-pulse{0%,to{box-shadow:0 0 0 4px color-mix(in srgb,var(--primary-color, #3b82f6) 25%,transparent)}50%{box-shadow:0 0 0 8px color-mix(in srgb,var(--primary-color, #3b82f6) 15%,transparent)}}.tour-tooltip{position:absolute;width:340px;max-width:calc(100vw - 32px);background:var(--bg-panel, #1e1e1e);color:var(--text-primary, #f2f2f2);border:1px solid var(--border-color, #444);border-radius:12px;padding:18px 18px 14px;box-shadow:0 12px 40px #00000059;pointer-events:auto;animation:tour-appear .18s ease-out}@keyframes tour-appear{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.tour-tooltip-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.tour-step-count{font-size:11px;letter-spacing:.5px;text-transform:uppercase;color:var(--text-secondary, #999)}.tour-skip{padding:4px 8px;background:transparent;border:none;border-radius:4px;color:var(--text-secondary, #999);font-size:12px;cursor:pointer;transition:background .1s,color .1s}.tour-skip:hover{background:var(--bg-secondary, #333);color:var(--text-primary, #fff)}.tour-title{margin:0 0 6px;font-size:17px;font-weight:600;color:var(--text-primary, #fff)}.tour-content{margin:0 0 16px;font-size:13.5px;line-height:1.5;color:var(--text-secondary, #bbb)}.tour-nav{display:flex;gap:10px}.tour-btn{flex:1;padding:9px 14px;border:none;border-radius:7px;font-size:13.5px;font-weight:500;cursor:pointer;transition:background .1s,opacity .1s}.tour-btn-primary{background:#2563eb;color:#fff}.tour-btn-primary:hover{background:#1d4ed8}.tour-btn-secondary{background:var(--bg-secondary, #333);color:var(--text-primary, #ddd);border:1px solid var(--border-color, #444)}.tour-btn-secondary:hover{background:color-mix(in srgb,var(--bg-secondary, #333) 88%,var(--text-primary, #ddd))}.tour-btn-secondary:disabled{opacity:.45;cursor:default}.tour-btn-secondary:disabled:hover{background:var(--bg-secondary, #333)}.tour-dots{display:flex;justify-content:center;gap:6px;margin-top:14px;padding-top:12px;border-top:1px solid var(--border-color, #333)}.tour-dot{width:8px;height:8px;padding:0;background:var(--border-color, #555);border:none;border-radius:50%;cursor:pointer;transition:background .1s,transform .1s}.tour-dot:hover{transform:scale(1.25)}.tour-dot.active{background:var(--primary-color, #3b82f6)}@media(max-width:768px){.tour-tooltip{left:50%!important;top:auto!important;bottom:20px;transform:translate(-50%);width:calc(100vw - 24px)}.tour-title{font-size:16px}.tour-content{font-size:13px}}.whatsnew-overlay{position:fixed;inset:0;z-index:3500;background:#00000080;display:flex;align-items:center;justify-content:center;padding:20px;animation:whatsnew-fade .15s ease-out}@keyframes whatsnew-fade{0%{opacity:0}to{opacity:1}}.whatsnew-modal{width:460px;max-width:100%;max-height:80vh;display:flex;flex-direction:column;background:var(--bg-panel, #1e1e1e);color:var(--text-primary, #f2f2f2);border:1px solid var(--border-color, #444);border-radius:14px;box-shadow:0 16px 48px #0006;overflow:hidden;animation:whatsnew-pop .18s ease-out}@keyframes whatsnew-pop{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.whatsnew-head{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--border-color, #444)}.whatsnew-title{display:flex;align-items:center;gap:8px;font-size:15px;font-weight:600;color:var(--text-primary, #fff)}.whatsnew-title svg{color:var(--primary-color, #3b82f6)}.whatsnew-ver{font-size:11px;font-weight:500;color:var(--text-secondary, #999);background:var(--bg-secondary, #2d2d2d);border:1px solid var(--border-color, #444);padding:1px 6px;border-radius:999px}.whatsnew-close{display:inline-flex;padding:5px;background:transparent;border:none;border-radius:6px;color:var(--text-secondary, #999);cursor:pointer;transition:background .1s,color .1s}.whatsnew-close:hover{background:var(--bg-secondary, #333);color:var(--text-primary, #fff)}.whatsnew-body{overflow-y:auto;padding:8px 16px 4px}.whatsnew-entry{padding:12px 0;border-bottom:1px solid var(--border-color, #333)}.whatsnew-entry:last-child{border-bottom:none}.whatsnew-entry-head{display:flex;align-items:center;gap:8px;margin-bottom:6px}.whatsnew-badge{font-size:11px;font-weight:600;color:var(--text-secondary, #aaa);background:var(--bg-secondary, #2d2d2d);border:1px solid var(--border-color, #444);padding:1px 7px;border-radius:999px}.whatsnew-badge.current{color:#fff;background:#2563eb;border-color:#2563eb}.whatsnew-date{font-size:11px;color:var(--text-secondary, #888)}.whatsnew-list{margin:0;padding-left:18px}.whatsnew-list li{font-size:13.5px;line-height:1.5;color:var(--text-primary, #e5e7eb);margin:2px 0}.whatsnew-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 16px;border-top:1px solid var(--border-color, #444)}.whatsnew-foot-note{font-size:12px;color:var(--text-secondary, #999)}.whatsnew-refresh{display:inline-flex;align-items:center;gap:6px;padding:7px 12px;background:var(--bg-secondary, #2d2d2d);color:var(--text-primary, #e5e7eb);border:1px solid var(--border-color, #444);border-radius:7px;font-size:12.5px;cursor:pointer;transition:background .1s}.whatsnew-refresh:hover{background:color-mix(in srgb,var(--bg-secondary, #2d2d2d) 88%,var(--text-primary, #e5e7eb))}@media(max-width:520px){.whatsnew-modal{width:100%;max-height:88vh}}.status-bar{position:fixed;bottom:0;left:0;width:100%;height:28px;background:var(--bg-panel, white);border-top:1px solid var(--border-color, #e5e7eb);display:flex;align-items:center;padding:0 4px;font-size:11px;color:var(--text-secondary, #6b7280);z-index:100;-webkit-user-select:none;user-select:none;gap:0}.status-section{display:flex;align-items:center;gap:4px;padding:0 8px;height:100%;border-right:1px solid var(--border-color, #e5e7eb);white-space:nowrap}.status-section:last-child{border-right:none}.status-spacer{flex:1}.status-label{opacity:.6;font-size:10px}.status-value{font-variant-numeric:tabular-nums}.status-bar .status-btn{display:flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;border:none;border-radius:3px;background:transparent;color:var(--text-secondary, #6b7280);cursor:pointer;transition:background .15s}.status-bar .status-btn:hover:not(:disabled){background:var(--btn-hover, #f3f4f6);color:var(--text-primary, #111827)}.status-bar .status-btn:disabled{opacity:.3;cursor:not-allowed}.status-bar .status-btn.text-btn{width:auto;padding:0 4px;font-size:11px;font-variant-numeric:tabular-nums}.status-bar .status-btn.rotation-compass{width:auto;gap:3px;padding:0 4px}.status-bar .status-btn.rotation-compass .rotation-deg{font-size:11px;font-variant-numeric:tabular-nums}.status-doc-name{font-weight:500;color:var(--text-primary, #111827);opacity:.6;font-size:11px}.status-tool-name{font-weight:500;color:var(--text-primary, #111827)}.status-coords{font-family:SF Mono,Cascadia Code,Consolas,monospace;font-size:10px;letter-spacing:-.3px}.status-bar .present-btn:hover:not(:disabled){background:var(--primary-color, #3b82f6);color:#fff}.status-attribution{font-size:10px;opacity:.7}.status-attribution a{color:var(--text-secondary, #6b7280);text-decoration:none;font-weight:500}.status-attribution a:hover{color:var(--primary-color, #3b82f6);text-decoration:underline}.status-heart{color:#e25555;font-size:12px}.status-hints{gap:8px;font-size:10px;opacity:.8;border-right:none!important}.status-hint{display:inline-flex;align-items:center;gap:3px}.status-hint kbd{display:inline-block;padding:0 4px;font-family:SF Mono,Cascadia Code,Consolas,monospace;font-size:9px;line-height:16px;color:var(--text-primary, #111827);background:var(--btn-hover, #f3f4f6);border:1px solid var(--border-color, #e5e7eb);border-radius:3px}@media(max-width:768px){.status-bar{height:36px;padding:0 2px;gap:0;justify-content:space-between}.status-section{padding:0 4px;border-right:none}.status-doc-name,.status-coords,.status-hints,.status-attribution{display:none}.status-bar .status-btn{width:32px;height:32px;touch-action:manipulation}.status-bar .status-btn.text-btn{font-size:12px}}.version-btn{position:relative}.version-news-dot{display:inline-block;width:6px;height:6px;margin-left:4px;border-radius:50%;background:var(--primary-color, #3b82f6);vertical-align:middle}
