:root{color-scheme:dark;--bg-base: #12121f;--bg-topbar: #16162a;--bg-surface: #1e1e30;--bg-surface-2: #252540;--bg-surface-3: #2a2a4e;--bg-hover: #333360;--border: #2d2d4e;--border-accent: #3d3d6e;--text-primary: #e2e8f0;--text-secondary:#94a3b8;--text-muted: #64748b;--text-faint: #4a4a7e;--accent: #6366f1;--accent-bg: #312e81;--accent-text: #c7d2fe;--brand-text: #a5b4fc;--input-bg: #252540;--input-border: #3d3d6e;--input-text: #e2e8f0;--solve-ok-bg: #052e16;--solve-ok-text: #4ade80;--solve-err-bg: #450a0a;--solve-err-text:#fca5a5;--solve-btn-bg: #1e3a5f;--solve-btn-border:#3b82f6;--solve-btn-text:#93c5fd;--solve-btn-hover:#1d4ed8;--danger-hover-bg: #450a0a;--danger-hover-border:#ef4444;--danger-hover-text: #fca5a5}[data-theme=light]{color-scheme:light;--bg-base: #f1f5f9;--bg-topbar: #ffffff;--bg-surface: #ffffff;--bg-surface-2: #f1f5f9;--bg-surface-3: #e8edf5;--bg-hover: #dde3ef;--border: #e2e8f0;--border-accent: #cbd5e1;--text-primary: #1e293b;--text-secondary:#475569;--text-muted: #64748b;--text-faint: #94a3b8;--accent: #4f46e5;--accent-bg: #e0e7ff;--accent-text: #3730a3;--brand-text: #4338ca;--input-bg: #f8fafc;--input-border: #cbd5e1;--input-text: #1e293b;--solve-ok-bg: #dcfce7;--solve-ok-text: #166534;--solve-err-bg: #fee2e2;--solve-err-text:#991b1b;--solve-btn-bg: #dbeafe;--solve-btn-border:#3b82f6;--solve-btn-text:#1d4ed8;--solve-btn-hover:#2563eb;--danger-hover-bg: #fee2e2;--danger-hover-border:#ef4444;--danger-hover-text: #991b1b}*{box-sizing:border-box}body{margin:0;padding:0;background:var(--bg-base);color:var(--text-primary);-webkit-font-smoothing:antialiased}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--bg-surface)}::-webkit-scrollbar-thumb{background:var(--border-accent);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--accent)}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{opacity:.5}.mode-strip{display:flex;align-items:center;gap:14px;height:52px;flex-shrink:0;padding:0 14px;background:linear-gradient(to bottom,color-mix(in srgb,var(--mode-accent, var(--accent)) 22%,var(--bg-topbar)),var(--bg-topbar) 78%);border-bottom:2px solid var(--mode-accent, var(--accent));transition:background .3s ease,border-color .3s ease}.mode-strip-lead{font-size:13px;font-weight:800;letter-spacing:.18em;text-transform:uppercase;color:var(--mode-accent, var(--accent));-webkit-user-select:none;user-select:none;transition:color .3s ease}.mode-tabs{display:flex;gap:3px;padding:3px;background:color-mix(in srgb,var(--bg-surface) 82%,transparent);border:1px solid var(--border);border-radius:10px;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.mode-tabs-in-topbar .mode-tabs{background:var(--bg-surface);-webkit-backdrop-filter:none;backdrop-filter:none}.mode-tab{position:relative;display:inline-flex;align-items:center;gap:7px;padding:6px 15px;border:0;border-radius:7px;background:transparent;color:var(--text-secondary);font:inherit;font-size:12.5px;font-weight:550;cursor:pointer;transition:color .15s,background .15s}.mode-tab:hover{color:var(--text-primary)}.mode-tab:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.mode-tab-dot{width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.45;flex-shrink:0;transition:background .15s,box-shadow .15s,opacity .15s}.mode-tab-label{line-height:1}.mode-tab-lock{display:block;margin-left:1px}.mode-tab.active{color:#fff;background:var(--mode-accent, var(--accent));box-shadow:0 2px 10px -2px color-mix(in srgb,var(--mode-accent, var(--accent)) 60%,transparent)}.mode-tab.active:hover{color:#fff}.mode-tab.active .mode-tab-dot{opacity:1;background:#fff;box-shadow:0 0 0 3px #ffffff47}.mode-tabs-in-topbar{display:none}@media (max-width: 760px){.mode-strip{display:none}.mode-tabs-in-topbar{display:flex}}.topbar{height:104px;background:var(--bg-topbar);border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 14px;gap:16px;flex-shrink:0;overflow:visible;position:relative;z-index:100}.topbar-brand{display:flex;align-items:flex-end;gap:6px;flex-shrink:0;padding-bottom:12px}.beta-badge{margin-bottom:4px;padding:2px 8px 1px;background:color-mix(in srgb,#f59e0b 16%,transparent);border:1px solid #f59e0b99;border-radius:10px;color:#f59e0b;font-size:10px;font-weight:800;letter-spacing:.08em;font-family:inherit;line-height:1.5;cursor:pointer}.beta-badge:hover{background:color-mix(in srgb,#f59e0b 28%,transparent)}.brand-logo{height:84px;width:auto;display:block;border-radius:6px}.topbar-meta{flex:1;display:flex;flex-direction:column;justify-content:center;min-width:0;padding:0 4px}.meta-title{font-size:14px;font-weight:600;color:var(--text-primary);cursor:text;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3}.meta-title:hover{color:var(--brand-text)}.meta-desc{font-size:11px;color:var(--text-muted);cursor:text;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3}.meta-desc:hover{color:var(--text-secondary)}.meta-input{background:var(--bg-surface-3);border:1px solid var(--accent);border-radius:4px;color:var(--text-primary);font-family:inherit;padding:2px 6px;outline:none}.title-input{font-size:14px;font-weight:600;width:100%}.desc-input{font-size:11px;width:100%;color:var(--text-secondary)}.topbar-actions{display:flex;align-items:center;gap:6px;flex-shrink:0}.action-btn{padding:5px 10px;background:var(--bg-surface-3);border:1px solid var(--border-accent);border-radius:6px;color:var(--text-secondary);font-size:12px;font-family:inherit;cursor:pointer;transition:all .12s;white-space:nowrap}.action-btn:hover{background:var(--bg-hover);color:var(--text-primary);border-color:var(--accent)}.action-btn:disabled{opacity:.35;cursor:not-allowed}.action-btn:disabled:hover{background:var(--bg-surface-3);color:var(--text-secondary);border-color:var(--border-accent)}.solve-btn{background:var(--solve-btn-bg);border-color:var(--solve-btn-border);color:var(--solve-btn-text);font-weight:600}.solve-btn:hover{background:var(--solve-btn-hover);color:#fff}.danger-btn:hover{background:var(--danger-hover-bg);border-color:var(--danger-hover-border);color:var(--danger-hover-text)}.solve-status{font-size:11px;font-weight:600;padding:3px 8px;border-radius:4px}.solve-status.ok{background:var(--solve-ok-bg);color:var(--solve-ok-text)}.solve-status.err{background:var(--solve-err-bg);color:var(--solve-err-text)}.action-divider{width:1px;height:20px;background:var(--border);margin:0 2px}.icon-btn{padding:5px 8px;display:flex;align-items:center;justify-content:center}.export-wrap{position:relative}.export-trigger{display:flex;align-items:center;gap:5px}.export-trigger.active{background:var(--bg-hover);color:var(--text-primary);border-color:var(--accent)}.export-dropdown{position:absolute;top:calc(100% + 6px);right:0;min-width:200px;background:var(--bg-surface);border:1px solid var(--border-accent);border-radius:10px;box-shadow:0 8px 28px #00000047,0 2px 8px #00000026;z-index:200;overflow:hidden;padding:6px;display:flex;flex-direction:column;gap:1px}.export-dropdown-group-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--text-muted);padding:4px 10px 6px}.export-dropdown-divider{height:1px;background:var(--border);margin:4px 0}.export-item{display:flex;align-items:center;gap:10px;padding:8px 10px;border:none;border-radius:7px;background:transparent;cursor:pointer;text-align:left;width:100%;transition:background .1s;font-family:inherit}.export-item:hover{background:var(--bg-hover)}.export-item-icon{width:28px;height:28px;display:flex;align-items:center;justify-content:center;background:var(--bg-surface-3);border:1px solid var(--border);border-radius:6px;color:var(--text-secondary);flex-shrink:0}.export-item:hover .export-item-icon{border-color:var(--accent);color:var(--accent)}.export-item-info{display:flex;flex-direction:column;gap:1px}.export-item-name{font-size:13px;font-weight:600;color:var(--text-primary);line-height:1.2}.export-item-desc{font-size:11px;color:var(--text-muted);line-height:1.2}.presets-dropdown{left:0;right:auto}.action-btn-accent{background:color-mix(in srgb,var(--accent) 15%,var(--bg-surface-3));border-color:color-mix(in srgb,var(--accent) 50%,var(--border));color:var(--accent);font-weight:600}.action-btn-accent:hover{background:var(--accent);color:#fff;border-color:var(--accent)}.hamburger-wrap{position:relative}.hamburger-dropdown{position:absolute;top:calc(100% + 6px);right:0;min-width:220px;background:var(--bg-surface);border:1px solid var(--border-accent);border-radius:10px;box-shadow:0 8px 28px #00000047,0 2px 8px #00000026;z-index:200;overflow:hidden;padding:6px;display:flex;flex-direction:column;gap:1px}.user-menu-wrap{position:relative;flex-shrink:0}.user-menu-signin{padding:5px 12px;background:var(--accent-bg);border:1px solid var(--accent);border-radius:6px;color:var(--accent-text);font-size:12px;font-weight:600;font-family:inherit;cursor:pointer;transition:all .12s;white-space:nowrap}.user-menu-signin:hover{background:var(--accent);color:#fff}.user-menu-spinner{width:24px;height:24px;border:2px solid var(--border-accent);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.user-menu-trigger{display:flex;align-items:center;gap:6px;background:none;border:1px solid transparent;border-radius:6px;cursor:pointer;padding:3px 6px;transition:all .12s}.user-menu-trigger:hover,.user-menu-trigger.open{background:var(--bg-surface-3);border-color:var(--border-accent)}.user-avatar-img{width:26px;height:26px;border-radius:50%;object-fit:cover}.user-avatar-initials{width:26px;height:26px;border-radius:50%;background:var(--accent-bg);border:1px solid var(--accent);color:var(--accent-text);font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center;text-transform:uppercase}.user-upgrade-badge{font-size:9px;font-weight:700;letter-spacing:.05em;padding:2px 6px;border-radius:10px;background:var(--bg-surface-2);border:1px solid var(--border-accent);color:var(--text-faint);text-transform:uppercase}.user-upgrade-badge.processing{background:#f59e0b1f;border-color:#f59e0b;color:#f59e0b}.user-dropdown{position:absolute;top:calc(100% + 6px);right:0;min-width:180px;background:var(--bg-surface);border:1px solid var(--border-accent);border-radius:8px;box-shadow:0 8px 24px #0000004d;z-index:200;overflow:hidden}.user-dropdown-email{padding:10px 14px 2px;font-size:11px;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-dropdown-plan{padding:0 14px 8px;font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.user-dropdown-plan.pro{color:#f59e0b}.user-dropdown-plan.free{color:var(--text-faint)}.user-dropdown-divider{height:1px;background:var(--border);margin:2px 0}.user-dropdown-item{display:block;width:100%;text-align:left;padding:9px 14px;background:none;border:none;font-size:13px;font-family:inherit;color:var(--text-secondary);cursor:pointer;transition:background .1s}.user-dropdown-item:hover{background:var(--bg-surface-3);color:var(--text-primary)}.user-dropdown-item.upgrade{color:#f59e0b}.user-dropdown-item.upgrade:hover{background:#f59e0b14}.user-dropdown-item.signout{color:var(--text-muted)}.user-dropdown-item.signout:hover{color:#ef4444;background:#ef44440f}.pro-action-btn{display:flex;align-items:center;gap:2px}.pro-action-btn.pro-saved{color:#34d399;border-color:#34d39966}.pro-action-btn.pro-error{color:#ef4444;border-color:#ef444466}.toolbar-wrap{position:relative;display:flex;flex-shrink:0;overflow:visible;transition:width .25s cubic-bezier(.4,0,.2,1);width:88px}.toolbar-wrap.toolbar-collapsed{width:48px}.toolbar{width:88px;background:var(--bg-surface);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:6px;gap:3px;overflow:visible;flex-shrink:0;transition:width .25s cubic-bezier(.4,0,.2,1)}.toolbar-collapsed .toolbar,.toolbar.toolbar-collapsed{width:48px}.toolbar-collapse-btn{position:absolute;top:8px;left:100%;width:14px;height:28px;background:var(--bg-surface);border:1px solid var(--border);border-left:none;border-radius:0 4px 4px 0;cursor:pointer;color:var(--text-muted);font-size:11px;line-height:1;padding:0;display:flex;align-items:center;justify-content:center;z-index:10}.toolbar-collapse-btn:hover{color:var(--text-primary);background:var(--bg-surface-3)}.toolbar-title{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-faint);padding:2px 4px 6px;font-weight:600}.tool-buttons{display:flex;flex-direction:column;gap:1px}.tool-btn{display:flex;flex-direction:column;align-items:center;gap:1px;padding:4px;background:transparent;border:1px solid transparent;border-radius:6px;cursor:pointer;color:var(--text-secondary);transition:all .12s;font-family:inherit}.tool-btn:hover{background:var(--bg-surface-3);color:var(--text-primary);border-color:var(--border-accent)}.tool-btn.active{background:var(--accent-bg);border-color:var(--accent);color:var(--accent-text)}.tool-btn:disabled{opacity:.4;cursor:not-allowed}.tool-btn:disabled:hover{background:transparent;color:var(--text-secondary);border-color:transparent}.tool-btn.preset-new-btn{color:var(--accent-text)}.tool-btn.preset-new-btn .tool-icon{font-size:17px;font-weight:700}.toolbar-section-hint{font-size:9px;line-height:1.4;color:var(--text-faint);text-align:center;padding:6px 4px}.tool-btn.solve-toggle{border-color:#f59e0b44;color:#f59e0b}.tool-btn.solve-toggle:hover{border-color:#f59e0b;color:#f59e0b}.tool-btn.solve-toggle.solved{background:#f59e0b22;border-color:#f59e0b;color:#f59e0b}.tool-btn.solve-toggle.solved:hover{background:#f59e0b33}.tool-btn.solve-toggle.solve-error{border-color:var(--danger-hover-border, #ef4444);color:var(--danger-hover-text, #ef4444)}.solve-error-panel{position:relative;margin:4px 0;padding:8px 28px 8px 10px;background:color-mix(in srgb,#ef4444 12%,var(--bg-surface));border:1px solid color-mix(in srgb,#ef4444 40%,var(--border));border-radius:6px;font-size:10px;line-height:1.5;color:var(--text-secondary)}.solve-error-title{font-weight:700;font-size:10px;color:#ef4444;margin-bottom:3px}.solve-error-body{white-space:pre-line;color:var(--text-secondary)}.solve-error-dismiss{position:absolute;top:4px;right:5px;background:none;border:none;cursor:pointer;font-size:10px;color:var(--text-muted);padding:2px;line-height:1}.solve-error-dismiss:hover{color:var(--text-primary)}.tool-icon{font-size:15px;line-height:1;font-style:normal}.tool-label{font-size:9px;text-transform:uppercase;letter-spacing:.06em;font-weight:600;text-align:center;white-space:normal;line-height:1.2;word-break:break-word}.undo-redo-row{display:flex;flex-direction:row;gap:2px;margin-top:6px}.undo-redo-row.stacked{flex-direction:column}.undo-redo-btn{flex:1;min-width:0;padding-left:2px;padding-right:2px}.undo-redo-btn .tool-label{white-space:nowrap}.undo-redo-btn:disabled{opacity:.35;cursor:default}.undo-redo-btn:disabled:hover{background:transparent;color:var(--text-secondary);border-color:transparent}.clear-btn{color:#f87171}.clear-btn:hover{background:var(--danger-hover-bg);border-color:var(--danger-hover-border);color:#f87171}.toolbar-divider{height:1px;background:var(--border);margin:3px 0}.toolbar-legend{padding-top:6px;display:flex;flex-direction:column;gap:4px}.legend-title{font-size:9px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint);font-weight:600;margin-top:2px}.legend-item{display:flex;align-items:center;gap:5px}.legend-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.legend-label{font-size:9px;color:var(--text-muted);line-height:1.2}.toolbar-presets-wrap{position:relative;display:flex;flex-direction:column}.toolbar-presets-wrap .tool-btn{width:100%}.toolbar-presets-dropdown{position:absolute;left:calc(100% + 6px);top:0;background:var(--bg-surface);border:1px solid var(--border-accent);border-radius:8px;box-shadow:0 8px 24px #00000040;min-width:180px;z-index:200;overflow:hidden}.toolbar-presets-label{font-size:10px;font-weight:600;color:var(--text-faint);text-transform:uppercase;letter-spacing:.08em;padding:8px 12px 4px}.toolbar-preset-item{display:flex;flex-direction:column;align-items:flex-start;gap:1px;width:100%;padding:8px 12px;background:none;border:none;cursor:pointer;text-align:left;transition:background .1s;font-family:inherit}.toolbar-preset-item:hover{background:var(--bg-surface-2)}.toolbar-preset-name{font-size:12px;font-weight:600;color:var(--text-primary)}.toolbar-preset-desc{font-size:11px;color:var(--text-faint)}.tool-btn.blueprint-btn{border-color:#818cf844;color:#818cf8}.tool-btn.blueprint-btn:hover{border-color:#818cf8;color:#818cf8;background:#818cf811}.canvas-container{flex:1;position:relative;overflow:hidden;background:#12121f}.bridge-canvas{display:block;width:100%;height:100%;cursor:default;-webkit-user-select:none;user-select:none}.bridge-canvas:focus{outline:none}.bridge-canvas:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.selection-marquee{position:absolute;pointer-events:none;z-index:5;border:1px solid #3b82f6;background:#3b82f61f}.selection-marquee.crossing{border-style:dashed;border-color:#22c55e;background:#22c55e1f}.selection-overlay{position:absolute;top:14px;right:14px;z-index:6;background:var(--bg-surface);border:1px solid var(--border-accent);border-radius:8px;box-shadow:0 6px 20px #00000040;padding:8px 10px 9px;display:flex;flex-direction:column;gap:5px;min-width:132px}.selection-overlay-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint);margin-bottom:1px}.selection-overlay-row{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--text-secondary);cursor:pointer}.selection-overlay-row:hover{color:var(--text-primary)}.selection-overlay-row input[type=checkbox]{accent-color:var(--accent);width:14px;height:14px;cursor:pointer}.selection-overlay-count{color:var(--text-faint)}.support-suggestion{position:absolute;transform:translate(-50%,-50%);z-index:6;background:none;border:none;padding:0;cursor:pointer}.support-suggestion-ring{display:block;width:28px;height:28px;border-radius:50%;border:2px dashed #f59e0b;animation:support-pulse 1.1s ease-in-out infinite}@keyframes support-pulse{0%,to{transform:scale(1);opacity:.55;box-shadow:0 0 #f59e0b80}50%{transform:scale(1.25);opacity:1;box-shadow:0 0 0 7px #f59e0b00}}.support-suggestion-label{position:absolute;top:100%;left:50%;transform:translate(-50%);margin-top:5px;font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;color:#f59e0b;background:var(--bg-surface);border:1px solid rgba(245,158,11,.5);border-radius:8px;padding:1px 6px}.support-suggestion:hover .support-suggestion-ring{background:#f59e0b26}.preset-overlay{position:absolute;top:14px;left:14px;z-index:6;width:210px;background:var(--bg-surface);border:1px solid var(--border-accent);border-radius:10px;box-shadow:0 6px 20px #00000040;padding:12px;display:flex;flex-direction:column;gap:10px}.preset-overlay-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint)}.preset-field{display:flex;flex-direction:column;gap:4px}.preset-field-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.preset-field-head label{font-size:12px;color:var(--text-secondary);font-weight:600}.preset-field-input{display:flex;align-items:center;gap:4px}.preset-field-input input{width:56px;background:var(--input-bg);border:1px solid var(--input-border);border-radius:4px;color:var(--input-text);font-size:12px;font-family:monospace;padding:2px 5px;outline:none;text-align:right}.preset-field-input input:focus{border-color:var(--accent)}.preset-unit{font-size:10px;color:var(--text-faint);min-width:16px}.preset-field input[type=range]{width:100%;accent-color:var(--accent);cursor:pointer}.preset-field input:disabled{opacity:.4;cursor:not-allowed}.zoom-fit-btn{position:absolute;bottom:14px;right:14px;display:flex;align-items:center;gap:5px;padding:6px 10px;background:var(--bg-surface);border:1px solid var(--border-accent);border-radius:6px;color:var(--text-secondary);font-size:12px;font-family:inherit;font-weight:500;cursor:pointer;box-shadow:0 2px 8px #00000040;transition:all .12s;pointer-events:all}.zoom-fit-btn:hover{background:var(--bg-hover);color:var(--text-primary);border-color:var(--accent)}.deflection-control{position:absolute;top:14px;left:14px;z-index:25;display:flex;align-items:center;gap:8px;padding:6px 12px;background:var(--bg-surface);border:1px solid var(--border-accent);border-radius:6px;box-shadow:0 2px 8px #00000040;pointer-events:all}.deflection-control-dot{width:10px;height:10px;border-radius:2px;background:#f97316;flex-shrink:0}.deflection-control-label{font-size:12px;font-weight:600;color:var(--text-secondary);white-space:nowrap}.deflection-control input[type=range]{width:110px;accent-color:#f97316;cursor:pointer}.solve-error-overlay{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);max-width:360px;width:calc(100% - 48px);background:var(--bg-surface);border:1px solid color-mix(in srgb,#ef4444 50%,var(--border));border-radius:10px;box-shadow:0 8px 32px #00000073;padding:20px 20px 16px;pointer-events:all}.solve-error-overlay-title{font-size:14px;font-weight:700;color:#ef4444;margin-bottom:10px}.solve-error-overlay-body{font-size:13px;line-height:1.6;color:var(--text-secondary);white-space:pre-line}.solve-error-overlay-dismiss{position:absolute;top:10px;right:12px;background:none;border:none;cursor:pointer;font-size:14px;color:var(--text-muted);padding:4px;line-height:1;border-radius:4px;transition:color .1s,background .1s}.solve-error-overlay-dismiss:hover{color:var(--text-primary);background:var(--bg-hover)}.animation-overlay-canvas{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.anim-controls{position:absolute;bottom:0;left:0;right:0;display:flex;flex-direction:column;gap:6px;padding:12px 16px 14px;background:linear-gradient(transparent,#000000c7);pointer-events:all;z-index:20}.anim-vehicle-row{display:flex;align-items:stretch;gap:6px}.anim-vehicle-btn{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;padding:5px 6px;background:#ffffff12;border:1px solid rgba(255,255,255,.15);border-radius:5px;color:#ffffffa6;font-family:inherit;cursor:pointer;transition:all .12s}.anim-vehicle-btn:hover{background:#ffffff21;border-color:#ffffff59;color:#ffffffe6}.anim-vehicle-btn.selected{background:#34d3992e;border-color:#34d399;color:#34d399}.anim-vehicle-name{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;line-height:1}.anim-vehicle-weight{font-size:9px;opacity:.8;line-height:1.3}.anim-playback-row{display:flex;align-items:center;gap:12px}.anim-pp-btn{width:32px;height:32px;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:#ffffff14;border:1px solid rgba(255,255,255,.25);border-radius:50%;color:#fff;font-size:11px;cursor:pointer;transition:background .12s,border-color .12s}.anim-pp-btn:hover{background:#ffffff2e;border-color:#ffffff8c}.anim-slider-group{display:flex;flex-direction:column;gap:2px}.anim-pos-group{flex:2}.anim-speed-group{flex:1;min-width:100px}.anim-slider-lbl{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:#ffffff73;-webkit-user-select:none;user-select:none}.anim-slider{width:100%;accent-color:#34d399;cursor:pointer;height:4px}.anim-pos-track{position:relative}.anim-pos-tick{position:absolute;top:100%;margin-top:1px;width:2px;height:6px;transform:translate(-50%);background:#fff6;border-radius:1px;pointer-events:none}.anim-pos-tick.active{background:#34d399;height:8px;box-shadow:0 0 4px #34d399cc}.preset-dock{position:absolute;left:12px;right:12px;bottom:12px;z-index:30;background:var(--bg-surface);border:1px solid var(--border-accent);border-radius:12px;box-shadow:0 10px 30px #00000047;padding:10px 12px 12px;pointer-events:all;animation:preset-dock-in .14s ease}@keyframes preset-dock-in{0%{transform:translateY(12px);opacity:0}to{transform:translateY(0);opacity:1}}@media (prefers-reduced-motion: reduce){.preset-dock{animation:none}}.preset-dock-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.preset-dock-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-faint)}.preset-dock-close{background:none;border:none;cursor:pointer;color:var(--text-muted);font-size:13px;line-height:1;padding:4px;border-radius:5px;transition:color .1s,background .1s}.preset-dock-close:hover{color:var(--text-primary);background:var(--bg-surface-3)}.preset-dock-row{display:flex;align-items:stretch;gap:14px;flex-wrap:wrap}.preset-dock-types{display:flex;gap:6px;flex-wrap:wrap}.preset-dock-card{display:flex;flex-direction:column;align-items:center;gap:5px;width:68px;padding:8px 4px;background:var(--bg-surface-2);border:1px solid var(--border);border-radius:8px;color:var(--text-secondary);cursor:pointer;transition:all .12s;font:inherit}.preset-dock-card:hover{border-color:var(--border-accent);color:var(--text-primary);background:var(--bg-surface-3)}.preset-dock-card.selected{border-color:var(--accent);background:var(--accent-bg);color:var(--accent-text)}.preset-dock-thumb{display:block;height:18px}.preset-dock-name{font-size:10px;font-weight:600}.preset-dock-divider{width:1px;background:var(--border);align-self:stretch}.preset-dock-params{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr));gap:6px 16px;flex:1;min-width:260px;align-content:center;transition:opacity .15s}.preset-dock-params.disabled{opacity:.4}.preset-dock-param{display:flex;flex-direction:column;gap:4px}.preset-dock-param-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.preset-dock-param-head label{font-size:11.5px;font-weight:600;color:var(--text-secondary)}.preset-dock-param-input{display:flex;align-items:center;gap:4px}.preset-dock-param-input input{width:52px;background:var(--input-bg);border:1px solid var(--input-border);border-radius:4px;color:var(--input-text);font-size:12px;font-family:monospace;padding:2px 5px;text-align:right;outline:none}.preset-dock-param-input input:focus{border-color:var(--accent)}.preset-dock-unit{font-size:10px;color:var(--text-faint);min-width:14px}.preset-dock-param input[type=range]{width:100%;accent-color:var(--accent);cursor:pointer}.preset-dock-param input:disabled{cursor:not-allowed}.preset-dock-actions{display:flex;align-items:center;gap:8px;align-self:center}.preset-dock-btn{padding:7px 14px;border:1px solid var(--border-accent);border-radius:7px;background:var(--bg-surface-2);color:var(--text-secondary);font:inherit;font-size:12.5px;font-weight:600;cursor:pointer;transition:all .12s;white-space:nowrap}.preset-dock-btn:hover{background:var(--bg-surface-3);color:var(--text-primary)}.preset-dock-btn.primary{background:var(--accent-bg);border-color:var(--accent);color:var(--accent-text)}.preset-dock-btn.primary:hover{background:var(--accent);color:#fff}.preset-dock-btn:disabled{opacity:.45;cursor:not-allowed}.preset-dock-btn:disabled:hover{background:var(--bg-surface-2);color:var(--text-secondary)}@media (max-width: 900px){.preset-dock-divider{display:none}.preset-dock-params{grid-template-columns:repeat(2,1fr)}}.preset-dock-shape-row{display:flex;gap:6px}.preset-dock-shape-btn{flex:1;padding:5px 8px;background:var(--bg-surface-3);border:1px solid var(--border);border-radius:6px;color:var(--text-secondary);font-family:inherit;font-size:12px;cursor:pointer}.preset-dock-shape-btn.selected{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 14%,var(--bg-surface-3));color:var(--accent-text, var(--accent));font-weight:600}.preset-dock-types-col{display:flex;flex-direction:column;gap:8px;min-width:0}.preset-dock-arch-toggle{display:flex;gap:6px}.preset-dock-shape-btn:disabled{opacity:.45;cursor:not-allowed}.blueprint-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:10;display:flex;flex-direction:column;background:#f8fafc}.blueprint-header{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;background:#1e293b;color:#f1f5f9;flex-shrink:0;gap:12px}.blueprint-header-left{display:flex;align-items:center;gap:10px}.blueprint-icon{font-size:18px}.blueprint-title{font-size:14px;font-weight:700;letter-spacing:.04em}.blueprint-subtitle{font-size:11px;color:#94a3b8;padding:2px 8px;border:1px solid #334155;border-radius:10px}.blueprint-header-right{display:flex;align-items:center;gap:14px}.blueprint-project-name{font-size:12px;color:#94a3b8;font-style:italic}.blueprint-toggle-btn{padding:6px 14px;background:#1e293b;border:1px solid #475569;border-radius:6px;color:#94a3b8;font-size:12px;font-family:inherit;cursor:pointer;transition:all .12s}.blueprint-toggle-btn:hover{background:#334155;color:#e2e8f0}.blueprint-toggle-btn.active{background:#1e40af;border-color:#3b82f6;color:#bfdbfe}.blueprint-exit-btn{padding:6px 14px;background:#334155;border:1px solid #475569;border-radius:6px;color:#e2e8f0;font-size:12px;font-family:inherit;cursor:pointer;transition:all .12s}.blueprint-exit-btn:hover{background:#ef4444;border-color:#ef4444;color:#fff}.blueprint-body{flex:1;display:flex;overflow:hidden}.blueprint-canvas-wrap{flex:1;position:relative;overflow:hidden}.blueprint-canvas{display:block;width:100%;height:100%;cursor:crosshair}.blueprint-props{width:220px;flex-shrink:0;background:#fff;border-left:1px solid #e2e8f0;display:flex;flex-direction:column;overflow-y:auto;padding:0 12px}.blueprint-empty{display:flex;flex-direction:column;align-items:center;gap:10px;padding:32px 16px;text-align:center}.blueprint-empty-icon{font-size:28px;opacity:.4}.blueprint-empty-text{font-size:12px;line-height:1.6;color:#94a3b8}.bp-select-group{display:flex;gap:6px;padding:10px 14px;border-bottom:1px solid #e2e8f0}.bp-select-btn{flex:1;padding:5px 4px;font-size:11px;font-weight:600;background:#f8fafc;border:1px solid #cbd5e1;border-radius:5px;color:#475569;cursor:pointer;transition:all .12s;white-space:nowrap}.bp-select-btn:hover{background:#e0e7ff;border-color:#6366f1;color:#4338ca}.bp-props-inner{padding:14px;display:flex;flex-direction:column}.bp-props-title{font-size:12px;font-weight:700;color:#1e293b;text-transform:uppercase;letter-spacing:.06em;padding-bottom:12px;border-bottom:1px solid #e2e8f0;margin-bottom:12px;display:flex;align-items:center;gap:6px}.bp-chip{background:#e0e7ff;color:#4338ca;padding:1px 7px;border-radius:10px;font-size:11px;text-transform:none;letter-spacing:normal}.bp-section-label{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:#94a3b8;font-weight:600;margin-bottom:6px}.bp-row{display:flex;align-items:center;gap:6px}.bp-input{flex:1;background:#f8fafc;border:1px solid #e2e8f0;border-radius:4px;color:#1e293b;font-size:13px;font-family:monospace;padding:5px 8px;outline:none;min-width:0}.bp-input:focus{border-color:#6366f1}.bp-unit{font-size:11px;color:#94a3b8;flex-shrink:0}.bp-ok-btn{padding:4px 8px;background:#e0e7ff;border:1px solid #6366f1;border-radius:4px;color:#4338ca;font-size:11px;font-weight:600;font-family:inherit;cursor:pointer;flex-shrink:0;transition:all .1s}.bp-ok-btn:hover{background:#6366f1;color:#fff}.bp-joint-buttons{display:grid;grid-template-columns:1fr 1fr 1fr;gap:4px}.bp-joint-btn{padding:6px 4px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:4px;color:#64748b;font-size:11px;font-family:inherit;cursor:pointer;transition:all .12s;text-align:center}.bp-joint-btn:hover:not(:disabled){background:#f1f5f9;color:#1e293b;border-color:#cbd5e1}.bp-joint-btn:disabled,.bp-joint-btn.disabled{opacity:.38;cursor:not-allowed;pointer-events:none}.bp-joint-btn.active{background:#e0e7ff;border-color:#6366f1;color:#4338ca;font-weight:600}.bp-hint{font-size:10px;color:#94a3b8;font-style:italic;margin-top:6px;line-height:1.5}.bp-instructions{font-size:11px;color:var(--text-secondary);background:var(--bg-surface-2);border:1px solid var(--border);border-radius:6px;padding:7px 10px;line-height:1.5;margin-bottom:8px}.bp-truss-count{font-size:10px;color:var(--text-faint);margin-top:6px}.bp-chord-buttons{display:flex;gap:6px;margin-bottom:6px}.bp-chord-btn{flex:1;padding:6px 4px;border-radius:5px;border:1.5px solid var(--border);background:transparent;font-size:11px;font-weight:600;cursor:pointer;color:var(--text-secondary);transition:all .12s}.bp-chord-btn:hover{border-color:var(--border-accent);color:var(--text-primary)}.bp-chord-btn.top.active{background:#fef3c722;border-color:#f59e0b;color:#b45309}.bp-chord-btn.bottom.active{background:#ccfbf122;border-color:#14b8a6;color:#0f766e}.bp-assign-hint{font-size:10px;color:var(--text-muted);font-style:italic;margin-bottom:8px;padding:4px 6px;background:var(--bg-surface-2);border-radius:4px}.bp-chord-lists{display:flex;flex-direction:column;gap:6px;margin-bottom:4px}.bp-chord-list{border:1px solid var(--border);border-radius:5px;overflow:hidden}.bp-chord-list-header{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;padding:4px 8px;background:var(--bg-surface-2);border-bottom:1px solid var(--border);display:flex;align-items:center;gap:6px}.bp-chord-count{font-size:10px;font-weight:400;color:var(--text-faint)}.bp-chord-swatch{width:10px;height:10px;border-radius:3px;flex-shrink:0;box-shadow:inset 0 0 0 1px #0003}.bp-chord-select{margin-left:auto;font:inherit;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text-secondary);background:var(--bg-surface-3);border:1px solid var(--border);border-radius:5px;padding:2px 8px;cursor:pointer;transition:all .12s}.bp-chord-select:hover{color:var(--text-primary);border-color:var(--border-accent)}.bp-chord-select.active{background:var(--accent);border-color:var(--accent);color:#fff}.bp-chord-empty{font-size:10px;color:var(--text-faint);padding:4px 8px;font-style:italic}.bp-chord-width-row{display:flex;align-items:center;gap:5px;padding:5px 8px;border-bottom:1px solid var(--border);background:var(--bg-surface)}.bp-chord-width-label{font-size:10px;font-weight:600;color:var(--text-secondary);flex-shrink:0}.bp-inline-width{width:44px;flex-shrink:0;background:var(--input-bg);border:1px solid #f59e0b88;border-radius:4px;color:var(--input-text);font-size:10px;font-family:monospace;padding:1px 4px;text-align:right;outline:none}.bp-inline-width:focus{border-color:var(--accent)}.bp-flash-target{border-radius:8px;margin:0 -6px;padding:0 6px}.bp-flash-target.flashing{animation:bp-flash .5s ease-in-out 3}@keyframes bp-flash{0%,to{background:transparent;box-shadow:0 0 0 0 transparent}50%{background:#2563eb1f;box-shadow:0 0 0 2px #2563eb80}}@media (prefers-reduced-motion: reduce){.bp-flash-target.flashing{animation:none;background:#2563eb1f}}.bp-chord-item{display:flex;align-items:center;padding:3px 8px;font-size:11px;gap:4px}.bp-chord-item:not(:last-child){border-bottom:1px solid var(--border)}.bp-chord-item-label{flex:1;font-family:monospace;font-size:11px}.bp-chord-remove{background:none;border:none;cursor:pointer;color:var(--text-faint);font-size:10px;padding:2px 3px;border-radius:3px;line-height:1}.bp-chord-remove:hover{color:var(--text-secondary);background:var(--bg-surface-3)}.bp-divider{height:1px;background:var(--border);margin:12px 0}.bp-chord-list-toggle{cursor:pointer;-webkit-user-select:none;user-select:none}.bp-chord-chevron{display:inline-block;font-size:15px;line-height:1;color:var(--text-secondary);transition:transform .15s;margin-right:2px;transform:rotate(90deg)}.bp-chord-chevron.open{transform:rotate(270deg)}.bp-chord-arc.active{background:color-mix(in srgb,var(--accent) 22%,transparent);border-color:var(--accent);color:var(--accent-text, var(--accent))}.panel-wrap{position:relative;display:flex;flex-shrink:0;overflow:visible}.properties-panel{width:220px;background:var(--bg-surface);border-left:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden;flex-shrink:0;transition:width .25s cubic-bezier(.4,0,.2,1)}.panel-collapsed{width:28px}.panel-inner{flex:1;overflow-y:auto;min-height:0;display:flex;flex-direction:column}.panel-collapse-btn{position:absolute;top:8px;right:100%;width:14px;height:28px;background:var(--bg-surface);border:1px solid var(--border);border-right:none;border-radius:4px 0 0 4px;cursor:pointer;color:var(--text-muted);font-size:11px;line-height:1;padding:0;display:flex;align-items:center;justify-content:center;z-index:10}.panel-collapse-btn:hover{color:var(--text-primary);background:var(--bg-surface-3)}.panel-title{font-size:12px;font-weight:700;color:var(--brand-text);padding:12px 12px 8px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:6px;text-transform:uppercase;letter-spacing:.06em}.panel-label-chip{background:var(--accent-bg);color:var(--accent-text);padding:1px 6px;border-radius:10px;font-size:11px;text-transform:none;letter-spacing:normal}.empty-panel{color:var(--text-faint)}.empty-hint{padding:12px;font-size:12px;line-height:1.5;color:var(--text-faint)}.panel-footer{flex-shrink:0;padding:8px 12px;border-top:1px solid var(--border);background:var(--bg-surface)}.panel-save-btn{width:100%;padding:7px 12px;background:var(--accent-bg);border:1px solid var(--accent);border-radius:6px;color:var(--accent-text);font-size:12px;font-weight:600;font-family:inherit;cursor:pointer;transition:all .12s}.panel-save-btn:hover{background:var(--accent);color:#fff}.prop-group{padding:10px 12px;border-bottom:1px solid var(--border)}.prop-hint{font-size:10px;color:var(--text-faint);margin-top:4px;font-style:italic}.prop-label{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint);margin-bottom:6px;font-weight:600}.prop-subtoggle{background:none;border:none;padding:2px 0 4px;margin:0;font-family:inherit;font-size:11px;color:var(--text-muted);cursor:pointer;text-align:left}.prop-subtoggle:hover{color:var(--text-primary)}.prop-row{display:flex;align-items:center;gap:6px;margin-bottom:5px}.prop-row label{font-size:11px;color:var(--text-muted);min-width:30px;flex-shrink:0;white-space:nowrap}.prop-row input[type=number],.prop-row input[type=text]{flex:1;max-width:88px;background:var(--input-bg);border:1px solid var(--input-border);border-radius:4px;color:var(--input-text);font-size:12px;font-family:monospace;padding:3px 6px;outline:none;min-width:0}.prop-row input[type=number]:focus,.prop-row input[type=text]:focus{border-color:var(--accent)}.prop-unit{font-size:10px;color:var(--text-faint);flex-shrink:0}.prop-text{font-size:12px;color:var(--text-secondary);font-family:monospace;margin-left:auto;text-align:right;min-width:0;overflow-wrap:anywhere}.support-buttons{display:grid;grid-template-columns:1fr 1fr;gap:4px}.support-btn{padding:5px 4px;background:var(--bg-surface-2);border:1px solid var(--border-accent);border-radius:4px;color:var(--text-muted);font-size:10px;font-family:inherit;cursor:pointer;transition:all .12s;text-align:center}.support-btn:hover{background:var(--bg-surface-3);color:var(--text-secondary)}.support-btn.active{background:var(--accent-bg);border-color:var(--accent);color:var(--accent-text)}.reaction-row{display:flex;justify-content:space-between;padding:2px 0;font-size:12px;color:var(--text-muted)}.reaction-val{color:var(--solve-ok-text);font-family:monospace}.connected-item{font-size:11px;color:var(--text-muted);padding:2px 0;font-family:monospace}.force-result{display:flex;justify-content:space-between;align-items:center;padding:6px 8px;border-radius:4px;font-size:12px}.force-result.tension{background:var(--solve-btn-bg)}.force-result.compression{background:var(--solve-err-bg)}.force-result.zero{background:var(--bg-surface-2)}.force-type{font-size:10px;font-weight:700;letter-spacing:.06em}.force-result.tension .force-type{color:var(--solve-btn-text)}.force-result.compression .force-type{color:var(--solve-err-text)}.force-result.zero .force-type{color:#22c55e}.force-val{font-family:monospace;font-size:12px;color:var(--text-primary)}.member-force-list{display:flex;flex-direction:column;overflow-y:auto;flex:1}.member-force-row{display:flex;align-items:center;gap:0;padding:5px 12px;border-bottom:1px solid var(--border);font-size:11px}.member-force-row:last-child{border-bottom:none}.mf-id{width:32px;flex-shrink:0;font-family:monospace;font-weight:700;color:var(--text-secondary)}.mf-type{flex:1;font-size:9px;font-weight:700;letter-spacing:.06em}.member-force-row.tension .mf-type{color:var(--solve-btn-text)}.member-force-row.compression .mf-type{color:var(--solve-err-text)}.member-force-row.zero .mf-type{color:#22c55e}.mf-val{font-family:monospace;font-size:11px;color:var(--text-primary);text-align:right}.prop-actions{padding:10px 12px;display:flex;flex-direction:column;gap:6px}.prop-btn{padding:7px;background:var(--bg-surface-2);border:1px solid var(--border-accent);border-radius:5px;color:var(--text-secondary);font-size:11px;font-family:inherit;cursor:pointer;transition:all .12s}.prop-btn:hover{background:var(--bg-surface-3);color:var(--text-primary)}.prop-btn.danger{border-color:#7f1d1d;color:#f87171}.prop-btn.danger:hover{background:var(--danger-hover-bg);border-color:var(--danger-hover-border)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal,.modal-box{background:var(--bg-surface);border:1px solid var(--border-accent);border-radius:10px;min-width:300px;max-width:460px;width:90%;box-shadow:0 20px 60px #0000004d;display:flex;flex-direction:column;max-height:calc(100vh - 32px)}.modal-header,.modal-footer{flex-shrink:0}.modal-body{overflow-y:auto;min-height:0}.modal-title{font-size:14px;font-weight:600;color:var(--text-primary)}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:14px 16px;border-bottom:1px solid var(--border);font-size:14px;font-weight:600;color:var(--text-primary)}.modal-close{background:none;border:none;color:var(--text-faint);font-size:16px;cursor:pointer;padding:2px 6px;border-radius:4px;transition:all .1s}.modal-close:hover{background:var(--bg-surface-3);color:var(--text-secondary)}.modal-body{padding:16px;display:flex;flex-direction:column;gap:12px}.modal-row{display:flex;flex-direction:column;gap:5px}.modal-row-suffix{font-size:11px;color:var(--text-faint)}.modal-row label{font-size:11px;color:var(--text-muted);font-weight:500}.modal-row input:not([type=range]),.modal-row select{background:var(--input-bg);border:1px solid var(--input-border);border-radius:5px;color:var(--input-text);font-family:inherit;font-size:13px;padding:6px 10px;outline:none}.modal-row input:not([type=range]):focus,.modal-row select:focus{border-color:var(--accent)}.modal-row select option{background:var(--bg-surface)}.hint{color:var(--text-faint);font-size:10px;font-weight:400}.modal-mag{font-size:12px;color:var(--text-muted);text-align:right;font-family:monospace}.modal-hint{font-size:11px;color:var(--text-muted);line-height:1.5;padding:8px;background:var(--bg-surface-2);border-radius:4px}.modal-footer{display:flex;justify-content:flex-end;gap:8px;padding:12px 16px;border-top:1px solid var(--border)}.modal-btn{padding:7px 16px;background:var(--bg-surface-2);border:1px solid var(--border-accent);border-radius:5px;color:var(--text-secondary);font-size:12px;font-family:inherit;cursor:pointer;transition:all .12s}.modal-btn:hover{background:var(--bg-surface-3);color:var(--text-primary)}.modal-btn.primary{background:var(--accent-bg);border-color:var(--accent);color:var(--accent-text);font-weight:600}.modal-btn.primary:hover{background:var(--accent);color:#fff}.precision-row{display:flex;align-items:center;gap:8px}.precision-min,.precision-max{font-size:11px;color:var(--text-muted);min-width:14px;text-align:center;white-space:nowrap}.precision-slider{flex:1;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:16px;border-radius:8px;background:linear-gradient(var(--accent),var(--accent)) no-repeat 7px center / calc((100% - 14px) * var(--pct, 0)) 5px,linear-gradient(color-mix(in srgb,var(--text-muted) 32%,transparent),color-mix(in srgb,var(--text-muted) 32%,transparent)) no-repeat center / calc(100% - 14px) 5px;cursor:pointer;outline:none}.precision-slider::-webkit-slider-runnable-track{height:16px;background:transparent}.precision-slider::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;margin-top:1px;border-radius:50%;background:var(--accent);border:none;box-shadow:0 1px 3px #00000059}.precision-slider::-moz-range-track{height:16px;background:transparent}.precision-slider::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:var(--accent);border:none;box-shadow:0 1px 3px #00000059}.precision-ticks{display:flex;justify-content:space-between;padding:0 6px;margin-top:2px}.precision-tick{font-size:10px;color:var(--text-faint);cursor:pointer;width:18px;text-align:center;padding:2px 0;border-radius:3px;transition:all .1s}.precision-tick:hover{color:var(--accent-text)}.precision-tick.active{color:var(--accent-text);background:var(--accent-bg);font-weight:700}.theme-toggle{display:flex;align-items:center;gap:10px}.toggle-track{position:relative;width:44px;height:24px;background:var(--bg-surface-3);border:1px solid var(--border-accent);border-radius:12px;cursor:pointer;transition:background .2s;flex-shrink:0}.toggle-track.on{background:var(--accent);border-color:var(--accent)}.toggle-thumb{position:absolute;top:3px;left:3px;width:16px;height:16px;background:#fff;border-radius:50%;transition:transform .2s;box-shadow:0 1px 3px #0000004d}.toggle-track.on .toggle-thumb{transform:translate(20px)}.toggle-label{font-size:12px;color:var(--text-secondary)}.modal-tabs{display:flex;gap:4px;padding:10px 16px 0;flex-shrink:0;border-bottom:1px solid var(--border)}.modal-tab{padding:7px 12px;background:none;border:none;border-bottom:2px solid transparent;color:var(--text-muted);font-size:12px;font-weight:600;font-family:inherit;cursor:pointer;transition:color .12s,border-color .12s;margin-bottom:-1px}.modal-tab:hover{color:var(--text-primary)}.modal-tab.active{color:var(--accent-text, var(--text-primary));border-bottom-color:var(--accent)}.shortcuts-tab{display:flex;flex-direction:column;gap:6px}.shortcuts-group{display:flex;flex-direction:column;gap:2px}.shortcut-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:5px 0}.shortcut-info{display:flex;flex-direction:column;gap:1px;min-width:0}.shortcut-label{font-size:13px;font-weight:600;color:var(--text-primary)}.shortcut-desc{font-size:11px;color:var(--text-muted)}.shortcut-conflict{font-size:11px;color:#ef4444;margin-top:2px}.shortcut-key{flex-shrink:0;min-width:96px;text-align:center;padding:6px 10px;background:var(--input-bg);border:1px solid var(--input-border);border-radius:6px;color:var(--text-primary);font-size:12px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;cursor:pointer;transition:all .12s}.shortcut-key:hover{border-color:var(--accent)}.shortcut-key.capturing{border-color:var(--accent);color:var(--accent);background:var(--accent-bg);font-style:italic}.shortcuts-footer-row{display:flex;justify-content:flex-start;margin-top:8px;padding-top:8px;border-top:1px solid var(--border)}.settings-modal{max-width:540px}.settings-modal .modal-body{gap:7px;padding:12px 16px}.settings-modal .modal-section-divider{margin:2px 0}.settings-modal .modal-section-title{padding:2px 0 0}.settings-modal .modal-hint{padding:6px 8px}.modal-section-divider{height:1px;background:var(--border);margin:4px 0}.modal-section-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-faint);padding:6px 0 2px}.unit-select-row{display:flex;gap:8px;align-items:flex-start}.unit-select-row select{flex:1}.snap-toggle-row{display:flex;gap:0}.snap-toggle-btn{padding:4px 12px;background:var(--bg-surface-2);border:1px solid var(--border-accent);color:var(--text-muted);font-size:12px;font-family:inherit;cursor:pointer;transition:all .12s}.snap-toggle-btn:first-child{border-radius:5px 0 0 5px}.snap-toggle-btn:last-child{border-radius:0 5px 5px 0;border-left:none}.snap-toggle-btn:hover{background:var(--bg-surface-3);color:var(--text-secondary)}.snap-toggle-btn.active{background:var(--accent-bg);border-color:var(--accent);color:var(--accent-text);z-index:1}.unit-labeled{display:flex;flex-direction:column;gap:3px}.unit-label-title{font-size:11px;font-weight:500;color:var(--text-muted)}.checkbox-group{display:flex;flex-direction:column;gap:6px}.checkbox-label{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--text-secondary);cursor:pointer}.checkbox-label input[type=checkbox]{accent-color:var(--accent);width:14px;height:14px;cursor:pointer}.auth-modal{max-width:380px}.auth-google-btn{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;padding:9px 16px;background:var(--bg-surface-2);border:1px solid var(--border-accent);border-radius:6px;color:var(--text-primary);font-size:13px;font-weight:500;font-family:inherit;cursor:pointer;transition:all .12s}.auth-google-btn:hover{background:var(--bg-surface-3);border-color:var(--accent)}.auth-google-btn:disabled{opacity:.6;cursor:not-allowed}.auth-divider{display:flex;align-items:center;gap:10px;color:var(--text-faint);font-size:11px}.auth-divider:before,.auth-divider:after{content:"";flex:1;height:1px;background:var(--border)}.auth-form{display:flex;flex-direction:column;gap:10px}.auth-error{font-size:12px;color:#ef4444;background:#ef444414;border:1px solid rgba(239,68,68,.25);border-radius:5px;padding:7px 10px;line-height:1.4}.auth-submit{width:100%;padding:9px;font-size:13px;margin-top:2px}.auth-switch{text-align:center;font-size:12px;color:var(--text-muted)}.auth-switch-btn{background:none;border:none;color:var(--accent-text);font-size:12px;cursor:pointer;padding:0;font-family:inherit;text-decoration:underline}.auth-switch-btn:hover{opacity:.8}.paywall-modal{max-width:400px}.paywall-badge{display:inline-block;background:linear-gradient(135deg,#f59e0b,#d97706);color:#fff;font-size:10px;font-weight:800;letter-spacing:.12em;padding:3px 10px;border-radius:20px;margin-bottom:6px}.paywall-tagline{font-size:18px;font-weight:700;color:var(--text-primary);margin:0 0 14px}.paywall-features{list-style:none;margin:0 0 18px;padding:0;display:flex;flex-direction:column;gap:8px}.paywall-feature-row{display:flex;align-items:flex-start;gap:8px;font-size:13px;color:var(--text-secondary)}.paywall-check{color:#34d399;font-weight:700;font-size:13px;flex-shrink:0;margin-top:1px}.paywall-cta{width:100%;padding:11px;background:linear-gradient(135deg,#f59e0b,#d97706);border:none;border-radius:7px;color:#fff;font-size:14px;font-weight:700;font-family:inherit;cursor:pointer;transition:opacity .12s;margin-bottom:8px}.paywall-cta:hover{opacity:.9}.paywall-cta:disabled{opacity:.65;cursor:not-allowed}.paywall-create-account{display:block;width:100%;padding:9px;background:var(--bg-surface-2);border:1px solid var(--border-accent);border-radius:7px;color:var(--text-secondary);font-size:13px;font-weight:600;font-family:inherit;cursor:pointer;transition:all .12s;margin-bottom:8px}.paywall-create-account:hover{background:var(--bg-surface-3);color:var(--text-primary)}.paywall-later{display:block;width:100%;background:none;border:none;color:var(--text-faint);font-size:12px;cursor:pointer;font-family:inherit;padding:4px;text-decoration:underline}.paywall-later:hover{color:var(--text-muted)}.saved-bridges-modal{max-width:480px}.saved-bridges-body{padding:0;min-height:120px}.saved-bridges-empty{padding:32px 20px;text-align:center;font-size:13px;color:var(--text-muted);line-height:1.6}.saved-bridges-hint{font-size:12px;color:var(--text-faint)}.saved-bridges-list{list-style:none;margin:0;padding:0}.saved-bridge-row{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;border-bottom:1px solid var(--border);gap:12px}.saved-bridge-row:last-child{border-bottom:none}.saved-bridge-row:hover{background:var(--bg-surface-2)}.saved-bridge-info{display:flex;flex-direction:column;gap:2px;min-width:0}.saved-bridge-title{font-size:13px;font-weight:600;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.saved-bridge-meta{font-size:11px;color:var(--text-faint)}.saved-bridge-actions{display:flex;gap:6px;flex-shrink:0}.saved-bridge-btn{padding:4px 10px;border-radius:5px;font-size:11px;font-weight:600;font-family:inherit;cursor:pointer;transition:all .1s;border:1px solid var(--border-accent)}.saved-bridge-btn.load{background:var(--accent-bg);color:var(--accent-text);border-color:var(--accent)}.saved-bridge-btn.load:hover{background:var(--accent);color:#fff}.saved-bridge-btn.delete{background:transparent;color:var(--text-faint);border-color:var(--border)}.saved-bridge-btn.delete:hover{border-color:#ef4444;color:#ef4444;background:#ef44440f}.saved-bridge-btn:disabled{opacity:.5;cursor:not-allowed}.saved-bridge-msg{font-size:12px;color:#34d399;margin-right:auto}.bsm-modal{min-width:520px;max-width:640px}.bsm-body{padding:12px 16px;display:flex;flex-direction:column;gap:12px;max-height:60vh;overflow-y:auto}.bsm-zone{border:1.5px dashed var(--border-accent);border-radius:8px;overflow:hidden;transition:border-color .15s,background .15s}.bsm-zone:focus-within,.bsm-zone.drag-over{border-color:var(--accent);background:var(--accent-bg)}.bsm-zone-header{display:flex;align-items:center;gap:8px;padding:8px 10px;background:var(--bg-surface-2);font-size:12px;font-weight:600;color:var(--text-secondary);border-bottom:1px solid var(--border)}.bsm-zone-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.bsm-zone-count{margin-left:auto;background:var(--bg-surface-3);border-radius:10px;padding:1px 7px;font-size:11px;color:var(--text-muted)}.bsm-items{min-height:44px;padding:6px;display:flex;flex-direction:column;gap:4px}.bsm-item{display:flex;align-items:center;gap:8px;background:var(--bg-surface-2);border:1px solid var(--border);border-radius:5px;padding:5px 8px;font-size:12px;cursor:grab;-webkit-user-select:none;user-select:none;transition:background .1s,border-color .1s}.bsm-item:active{cursor:grabbing}.bsm-item:hover{background:var(--bg-hover);border-color:var(--border-accent)}.bsm-item-num{font-weight:700;font-size:12px;min-width:28px;color:var(--text-primary)}.bsm-item-desc{color:var(--text-muted);font-size:11px;flex:1}.bsm-remove{background:none;border:none;color:var(--text-faint);cursor:pointer;font-size:11px;padding:2px 4px;border-radius:3px;line-height:1;transition:all .1s}.bsm-remove:hover{background:var(--bg-surface-3);color:var(--text-secondary)}.bsm-empty{text-align:center;font-size:11px;color:var(--text-faint);padding:8px 0}.bsm-drop-hint{text-align:center;font-size:11px;color:var(--text-faint);padding:8px 0;font-style:italic}.bsm-categories{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.bsm-instructions{font-size:12px;color:var(--text-secondary);background:var(--bg-surface-2);border:1px solid var(--border);border-radius:6px;padding:8px 12px;line-height:1.5}.bsm-zone.bsm-truss-auto{border-style:solid;border-color:var(--border);opacity:.85}.bsm-zone-auto-label{font-size:9px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint);background:var(--bg-surface-3);border-radius:3px;padding:1px 5px}.bsm-hint{font-size:11px;color:var(--text-faint)}.pdf-export-modal{width:760px;max-width:calc(100vw - 32px)}.pdf-export-layout{display:flex;align-items:stretch;gap:0;min-height:0;overflow:hidden}.pdf-export-layout .pdf-export-body{flex:1;min-width:0;overflow-y:auto}.pdf-preview-pane{width:340px;flex-shrink:0;display:flex;flex-direction:column;gap:8px;padding:16px;border-left:1px solid var(--border);background:var(--bg-surface-2);overflow-y:auto}.pdf-preview-wrap{display:flex;flex-direction:column;align-items:center;gap:8px}.pdf-preview-canvas{box-shadow:0 3px 14px #00000047;border:1px solid var(--border);background:#fff}.pdf-preview-caption{font-size:11px;color:var(--text-faint)}.pdf-preview-nav{display:flex;align-items:center;gap:10px;font-size:12px;color:var(--text-secondary)}.pdf-preview-nav-btn{width:24px;height:24px;display:flex;align-items:center;justify-content:center;padding:0 0 2px;font-size:16px;line-height:1;background:var(--bg-surface-3);border:1px solid var(--border);border-radius:6px;color:var(--text-primary);cursor:pointer}.pdf-preview-nav-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.pdf-preview-nav-btn:disabled{opacity:.35;cursor:default}.pdf-units-confirm{margin:0 20px 4px;padding:10px 14px;border:1px solid #f59e0b88;border-radius:8px;background:color-mix(in srgb,#f59e0b 10%,var(--bg-surface-2))}.pdf-units-confirm-title{font-size:13px;font-weight:700;color:#f59e0b;margin-bottom:4px}.pdf-units-confirm p{margin:0;font-size:12px;line-height:1.5;color:var(--text-secondary)}@media (max-width: 700px){.pdf-export-modal{width:auto}.pdf-export-layout{flex-direction:column}.pdf-preview-pane{width:auto;border-left:none;border-top:1px solid var(--border)}}.pdf-paper-row{display:flex;gap:8px}.pdf-paper-btn{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;padding:7px 6px 6px;background:var(--bg-surface-3);border:1.5px solid var(--border);border-radius:8px;color:var(--text-secondary);font-family:inherit;cursor:pointer;transition:all .12s}.pdf-paper-btn:hover{border-color:var(--accent);color:var(--text-primary)}.pdf-paper-btn.active{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,var(--bg-surface-3));color:var(--accent)}.pdf-paper-name{font-size:12px;font-weight:700}.pdf-paper-dims{font-size:10px;opacity:.7;white-space:nowrap}.pdf-orientation-row{display:flex;gap:8px}.pdf-orientation-btn{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;padding:7px 8px;background:var(--bg-surface-3);border:1.5px solid var(--border);border-radius:8px;color:var(--text-secondary);font-size:12px;font-family:inherit;cursor:pointer;transition:all .12s}.pdf-orientation-btn:hover{border-color:var(--accent);color:var(--text-primary)}.pdf-orientation-btn.active{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,var(--bg-surface-3));color:var(--accent);font-weight:600}.pdf-export-body{padding:12px 20px;display:flex;flex-direction:column;gap:8px}.pdf-section-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);display:flex;align-items:center;gap:8px}.pdf-section-sub{font-size:10px;font-weight:500;text-transform:none;letter-spacing:0;background:var(--bg-surface-3);border:1px solid var(--border);border-radius:10px;padding:1px 7px;color:var(--text-muted)}.pdf-option-grid{display:flex;flex-direction:column;gap:2px}.pdf-toggle-row{display:flex;align-items:center;justify-content:space-between;padding:5px 10px;border-radius:6px;cursor:pointer;font-size:13px;color:var(--text-primary);transition:background .1s}.pdf-toggle-row:hover{background:var(--bg-hover)}.pdf-toggle-row input[type=checkbox]{width:16px;height:16px;accent-color:var(--accent);cursor:pointer;flex-shrink:0}.pdf-toggle-row input[type=checkbox]:disabled{cursor:not-allowed;opacity:.4}.pdf-option-disabled .pdf-toggle-row{opacity:.45;cursor:not-allowed}.pdf-option-disabled .pdf-toggle-row:hover{background:transparent}.pdf-divider{height:1px;background:var(--border);margin:2px 0}.pdf-num-row{display:flex;align-items:center;justify-content:space-between;padding:5px 10px;font-size:13px;color:var(--text-primary)}.pdf-num-input{display:flex;align-items:center;gap:6px}.pdf-num-input input[type=number]{width:64px;padding:4px 6px;background:var(--bg-surface-3);border:1px solid var(--border);border-radius:6px;color:var(--text-primary);font-family:inherit;font-size:12px}.pdf-num-input input[type=number]:disabled{opacity:.45}.pdf-num-input select{padding:4px 6px;background:var(--bg-surface-3);border:1px solid var(--border);border-radius:6px;color:var(--text-primary);font-family:inherit;font-size:12px}.pdf-num-unit{font-size:11px;color:var(--text-muted)}.pdf-stock-head span{font-weight:600}.pdf-stock-add{padding:3px 10px;background:var(--bg-surface-3);border:1px solid var(--border);border-radius:6px;color:var(--text-primary);font-family:inherit;font-size:12px;cursor:pointer}.pdf-stock-add:hover{border-color:var(--accent);color:var(--accent)}.pdf-stock-row{display:flex;align-items:center;gap:6px;padding:2px 10px 2px 18px}.pdf-stock-row select{padding:4px 6px;background:var(--bg-surface-3);border:1px solid var(--border);border-radius:6px;color:var(--text-primary);font-family:inherit;font-size:12px}.pdf-stock-row input[type=number]{width:62px;padding:4px 6px;background:var(--bg-surface-3);border:1px solid var(--border);border-radius:6px;color:var(--text-primary);font-family:inherit;font-size:12px}.pdf-stock-x{color:var(--text-muted);font-size:12px}.pdf-stock-remove{width:22px;height:22px;padding:0 0 2px;background:transparent;border:1px solid transparent;border-radius:6px;color:var(--text-muted);font-size:14px;cursor:pointer}.pdf-stock-remove:hover{color:#ef4444;border-color:#ef444488}.pdf-build-summary{margin:4px 10px 0;padding:6px 10px;font-size:11.5px;line-height:1.4;color:var(--text-secondary);background:var(--bg-surface-3);border:1px solid var(--border);border-radius:6px}.pdf-label-muted{opacity:.4}.pdf-unsolved-note{font-size:11px;color:var(--text-muted);margin:0;padding:0 2px;font-style:italic}.feedback-modal{width:440px;max-width:calc(100vw - 32px)}.feedback-body{padding:14px 20px 4px;display:flex;flex-direction:column;gap:10px}.feedback-intro{margin:0;font-size:12.5px;line-height:1.5;color:var(--text-secondary)}.feedback-text,.feedback-email{width:100%;padding:8px 10px;background:var(--bg-surface-3);border:1px solid var(--border);border-radius:8px;color:var(--text-primary);font-family:inherit;font-size:13px;resize:vertical}.feedback-text:focus,.feedback-email:focus{outline:none;border-color:var(--accent)}.bp-steps{display:flex;align-items:center;justify-content:center;gap:24px;flex-shrink:0;padding:10px 16px;background:linear-gradient(var(--accent-bg),var(--bg-topbar));border-bottom:2px solid var(--accent)}.bp-steps-list{display:flex;align-items:center;gap:0;margin:0;padding:0;list-style:none}.bp-step-item{display:flex;align-items:center}.bp-step{display:inline-flex;align-items:center;gap:7px;padding:5px 12px;border:1px solid transparent;border-radius:8px;background:transparent;color:var(--text-secondary);font:inherit;font-size:12.5px;font-weight:550;cursor:pointer;transition:all .12s;white-space:nowrap}.bp-step:hover{color:var(--text-primary);background:var(--bg-surface-2)}.bp-step-marker{display:grid;place-items:center;width:18px;height:18px;border-radius:50%;font-size:10px;font-weight:700;background:var(--bg-surface-3);color:var(--text-secondary);flex-shrink:0;transition:all .12s}.bp-step-label{line-height:1}.bp-step.done .bp-step-marker{background:#16a34a;color:#fff}.bp-step.done .bp-step-label{color:var(--text-primary)}.bp-step.current{border-color:var(--accent);background:var(--accent-bg);color:var(--accent-text)}.bp-step.current .bp-step-marker{background:var(--accent);color:#fff}.bp-step.current.done .bp-step-marker{background:#16a34a}.bp-step-sep{width:22px;height:2px;background:var(--border);border-radius:1px;margin:0 2px}.bp-step-hint{font-size:12px;color:var(--text-secondary);display:flex;align-items:center;gap:8px;min-width:0}.bp-step-hint-n{font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint);background:var(--bg-surface-2);border:1px solid var(--border);border-radius:5px;padding:2px 6px;flex-shrink:0}@media (max-width: 720px){.bp-step-label{display:none}.bp-step-sep{width:12px}.bp-step-hint{display:none}}.results-modal{max-width:620px;width:92%}.results-body{padding:16px;max-height:70vh;overflow-y:auto}.results-empty{padding:28px 16px;text-align:center;font-size:13px;line-height:1.6;color:var(--text-muted)}.results-empty.results-error{color:var(--compression, #ef4444);white-space:pre-wrap;text-align:left}.results-summary{display:flex;gap:10px;margin-bottom:16px}.results-stat{flex:1;display:flex;flex-direction:column;gap:3px;padding:10px 12px;background:var(--bg-surface-2);border:1px solid var(--border);border-radius:8px}.results-stat-label{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint);font-weight:700}.results-stat-value{font-size:16px;font-weight:700;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--text-primary)}.results-section-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--text-faint);margin:6px 0}.results-table-wrap{border:1px solid var(--border);border-radius:8px;overflow:hidden;margin-bottom:16px}.results-table{width:100%;border-collapse:collapse;font-size:12px}.results-table th,.results-table td{padding:7px 10px;text-align:left;border-bottom:1px solid var(--border);color:var(--text-secondary)}.results-table thead th{background:var(--bg-surface-2);color:var(--text-muted);font-weight:600;font-size:11px;position:sticky;top:0}.results-table tbody tr:last-child td{border-bottom:none}.results-table tbody tr:hover{background:var(--bg-surface-2)}.results-table .num{text-align:right;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.results-table th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.results-table th.sortable:hover{color:var(--text-primary)}.results-table td.tension{color:var(--tension, #2563eb);font-weight:600}.results-table td.compression{color:var(--compression, #dc2626);font-weight:600}.results-table td.zero{color:var(--text-faint)}.results-tag{display:inline-block;padding:2px 7px;border-radius:4px;font-size:10px;font-weight:700}.results-tag.tension{background:#2563eb26;color:var(--tension, #2563eb)}.results-tag.compression{background:#dc262626;color:var(--compression, #dc2626)}.results-tag.zero{background:var(--bg-surface-3);color:var(--text-faint)}.results-muted{color:var(--text-faint);text-align:center}.results-note{font-size:11px;color:var(--text-muted)}.results-note .tension{color:var(--tension, #2563eb);font-weight:600}.results-note .compression{color:var(--compression, #dc2626);font-weight:600}.onboarding-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;z-index:1200;padding:24px}.onboarding-card{position:relative;width:100%;max-width:400px;background:var(--bg-surface);border:1px solid var(--border-accent);border-radius:14px;padding:28px 26px 22px;text-align:center;box-shadow:0 24px 60px #0006;animation:onboarding-pop .2s ease-out}@keyframes onboarding-pop{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.onboarding-skip{position:absolute;top:12px;right:14px;background:none;border:none;color:var(--text-faint);font-size:12px;font-family:inherit;cursor:pointer;padding:2px 4px}.onboarding-skip:hover{color:var(--text-secondary)}.onboarding-icon{font-size:38px;line-height:1;margin-bottom:12px}.onboarding-title{font-size:18px;font-weight:700;color:var(--text-primary);margin:0 0 10px}.onboarding-body{font-size:14px;line-height:1.55;color:var(--text-secondary);margin:0 0 18px;min-height:64px}.onboarding-dots{display:flex;justify-content:center;gap:7px;margin-bottom:18px}.onboarding-dot{width:7px;height:7px;border-radius:50%;background:var(--border-accent);transition:background .15s,transform .15s}.onboarding-dot.active{background:var(--accent);transform:scale(1.25)}.onboarding-actions{display:flex;justify-content:space-between;align-items:center;gap:10px}.onboarding-btn{padding:8px 18px;border-radius:7px;border:1px solid var(--border-accent);background:var(--bg-surface-2);color:var(--text-secondary);font-size:13px;font-weight:600;font-family:inherit;cursor:pointer;transition:all .12s}.onboarding-btn:hover{background:var(--bg-surface-3);color:var(--text-primary)}.onboarding-btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.onboarding-btn.primary:hover{filter:brightness(1.08)}.toast-container{position:fixed;bottom:16px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;gap:8px;z-index:1000;width:max-content;max-width:min(92vw,460px);pointer-events:none}.toast{display:flex;align-items:flex-start;gap:8px;padding:10px 12px;border-radius:8px;background:var(--bg-surface);border:1px solid var(--border);box-shadow:0 6px 24px #0000004d;color:var(--text-primary);font-size:13px;line-height:1.4;pointer-events:auto;animation:toast-in .18s ease-out}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.toast-icon{flex-shrink:0;font-size:14px;line-height:1.4}.toast-error{border-color:#ef4444}.toast-error .toast-icon{color:#ef4444}.toast-success{border-color:#22c55e}.toast-success .toast-icon{color:#22c55e}.toast-info .toast-icon{color:var(--accent)}.toast-message{flex:1;min-width:0}.toast-dismiss{flex-shrink:0;background:none;border:none;cursor:pointer;color:var(--text-muted);font-size:11px;line-height:1;padding:2px;margin:-2px -2px 0 0}.toast-dismiss:hover{color:var(--text-primary)}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;overflow:hidden}.app-shell{height:100vh;display:flex;flex-direction:column;background:var(--bg-base);color:var(--text-primary);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif}.app-body{flex:1;display:flex;overflow:hidden;min-height:0}.canvas-area{flex:1;display:flex;position:relative;min-width:0;min-height:0;overflow:hidden}.mode-fade{animation:mode-fade-in .12s ease}@keyframes mode-fade-in{0%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion: reduce){.mode-fade{animation:none}}.error-boundary{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;padding:24px;background:var(--bg-base);color:var(--text-primary);z-index:9999}.error-boundary-card{max-width:460px;width:100%;background:var(--bg-panel, #1a1a2e);border:1px solid var(--border);border-radius:12px;padding:32px;text-align:center;box-shadow:0 12px 40px #00000073}.error-boundary-icon{font-size:40px;line-height:1;color:#ef4444;margin-bottom:12px}.error-boundary-title{font-size:20px;font-weight:600;margin:0 0 12px}.error-boundary-body{font-size:14px;line-height:1.5;color:var(--text-secondary, #94a3b8);margin:0 0 20px}.error-boundary-detail{text-align:left;font-size:12px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;background:#ef444414;border:1px solid rgba(239,68,68,.3);border-radius:6px;padding:10px 12px;margin:0 0 20px;max-height:120px;overflow:auto;white-space:pre-wrap;word-break:break-word;color:#fca5a5}.error-boundary-actions{display:flex;flex-direction:column;gap:8px}.error-boundary-btn{padding:10px 16px;font-size:14px;font-weight:500;border-radius:6px;border:1px solid var(--border-accent);background:transparent;color:var(--text-primary);cursor:pointer;transition:background .15s,border-color .15s}.error-boundary-btn:hover{background:#ffffff0f}.error-boundary-btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.error-boundary-btn.primary:hover{filter:brightness(1.1)}.error-boundary-btn.danger{color:#fca5a5;border-color:#ef444466}.error-boundary-btn.danger:hover{background:#ef44441a}
