:root{--color-bg: #f1f4f8;--color-surface: #ffffff;--color-surface-muted: #f7f9fc;--color-border: #e3e7ed;--color-border-strong: #cfd5de;--color-text: #1f2937;--color-text-muted: #5b6775;--color-text-subtle: #8892a0;--color-primary: #2563eb;--color-primary-hover: #1d4ed8;--color-primary-active: #1e40af;--color-primary-soft: #dbeafe;--color-danger: #dc2626;--color-danger-soft: #fee2e2;--color-success: #16a34a;--color-success-hover: #15803d;--color-warning: #d97706;--color-focus: #93c5fd;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 10px;--radius-pill: 999px;--shadow-xs: 0 1px 2px rgba(15, 23, 42, .04);--shadow-sm: 0 1px 3px rgba(15, 23, 42, .08), 0 1px 2px rgba(15, 23, 42, .04);--shadow-md: 0 4px 12px rgba(15, 23, 42, .08), 0 2px 4px rgba(15, 23, 42, .04);--shadow-lg: 0 12px 32px rgba(15, 23, 42, .12);font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Helvetica Neue,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light;color:var(--color-text);background-color:var(--color-bg);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:var(--color-primary);text-decoration:none;font-weight:500;transition:color .15s ease}a:hover{color:var(--color-primary-hover)}body{margin:0;min-width:320px;height:100vh;overflow:hidden;background-color:var(--color-bg);color:var(--color-text)}h1,h2,h3,h4{color:var(--color-text);font-weight:600;letter-spacing:-.01em;margin:0}h1{font-size:1.25rem;line-height:1.2}button{font-family:inherit;cursor:pointer}button:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;width:100%;height:100%;overflow:hidden}#root{margin:0;padding:0;height:100vh;min-height:100vh;overflow:hidden;text-align:left;color:var(--color-text);background-color:var(--color-bg);display:flex;flex-direction:column}.app-topbar{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:10px 24px;background-color:var(--color-surface);border-bottom:1px solid var(--color-border);box-shadow:var(--shadow-xs);position:sticky;top:0;z-index:30}.app-topbar-left{display:flex;align-items:center;gap:14px;min-width:0}.app-brand{display:flex;align-items:center;gap:8px;font-weight:700;letter-spacing:-.01em;color:var(--color-text);font-size:15px}.app-brand-mark{width:22px;height:22px;border-radius:6px;display:inline-flex;align-items:center;justify-content:center;color:#fff;font-size:12px;font-weight:700}.app-title{font-size:14px;font-weight:500;color:var(--color-text-muted);border-left:1px solid var(--color-border);padding-left:14px;margin-left:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.app-nav{display:flex;align-items:center;gap:2px}.app-nav-link{padding:6px 12px;border-radius:var(--radius-md);color:var(--color-text-muted);font-weight:500;font-size:13px;transition:background-color .15s ease,color .15s ease}.app-nav-link:hover{background-color:var(--color-surface-muted);color:var(--color-text)}.app-nav-link.is-active{background-color:var(--color-primary-soft);color:var(--color-primary-active)}.app-feedback-btn{appearance:none;display:inline-flex;align-items:center;gap:6px;margin-left:10px;padding:6px 12px;border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text-muted);font-size:12.5px;font-weight:500;cursor:pointer;transition:background-color .15s ease,color .15s ease,border-color .15s ease}.app-feedback-btn:hover{background-color:var(--color-primary-soft);color:var(--color-primary-active);border-color:var(--color-primary-soft)}.app-feedback-btn-icon{display:inline-flex;align-items:center;justify-content:center;color:currentColor}.app-auth-indicator{display:inline-flex;align-items:center;gap:8px;margin-left:12px;padding-left:12px;border-left:1px solid var(--color-border)}.app-auth-user{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--color-text-muted);max-width:240px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.app-auth-user-dot{width:7px;height:7px;border-radius:999px;background-color:#16a34a;box-shadow:0 0 0 2px #16a34a2e;flex-shrink:0}.app-auth-signout{appearance:none;border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text-muted);border-radius:var(--radius-md);font-size:12px;font-weight:500;padding:5px 10px;cursor:pointer;transition:background-color .15s ease,color .15s ease,border-color .15s ease}.app-auth-signout:hover{background-color:var(--color-surface-muted);color:var(--color-text);border-color:var(--color-border)}.app-content{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}.app-home{padding:48px 24px;max-width:720px;margin:0 auto;text-align:center}.app-home h2{font-size:1.75rem;margin-bottom:8px}.app-home p{color:var(--color-text-muted)}.text-input-wrapper{display:flex;align-items:center;gap:10px;padding:0}.text-input-wrapper>label,.text-input-wrapper>span:first-child{font-size:13px;color:var(--color-text-muted);white-space:nowrap}.text-input-box{appearance:none;-webkit-appearance:none;flex:1;min-width:0;padding:7px 10px;margin-left:0;font-family:inherit;font-size:13px;color:var(--color-text);background-color:var(--color-surface);border:1px solid var(--color-border-strong);border-radius:var(--radius-md);box-shadow:var(--shadow-xs);transition:border-color .15s ease,box-shadow .15s ease}.text-input-box:hover{border-color:var(--color-text-subtle)}.text-input-box:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px #2563eb26}.integer-input-wrapper{display:flex;align-items:center;gap:10px;padding:0}.integer-input-wrapper>label,.integer-input-wrapper>span:first-child{font-size:13px;color:var(--color-text-muted);white-space:nowrap}.integer-input-box{appearance:none;-webkit-appearance:none;flex:1;min-width:0;padding:7px 10px;margin-left:0;font-family:inherit;font-size:13px;color:var(--color-text);background-color:var(--color-surface);border:1px solid var(--color-border-strong);border-radius:var(--radius-md);box-shadow:var(--shadow-xs);transition:border-color .15s ease,box-shadow .15s ease}.integer-input-box:hover{border-color:var(--color-text-subtle)}.integer-input-box:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px #2563eb26}.default-button-preset{--btn-bg-color: var(--color-surface);--btn-border-color: var(--color-border-strong);--btn-hover-color: var(--color-surface-muted);--btn-active-color: #e9eef5;--btn-text-color: var(--color-text);--btn-active-text: var(--color-primary-active);--btn-active-border: var(--color-primary);--btn-active-bg: var(--color-primary-soft);appearance:none;-webkit-appearance:none;background-color:var(--btn-bg-color);color:var(--btn-text-color);border:1px solid var(--btn-border-color);padding:8px 14px;font-family:inherit;font-size:13px;font-weight:500;line-height:1.2;border-radius:var(--radius-md);box-shadow:var(--shadow-xs);cursor:pointer;transition:background-color .15s ease,border-color .15s ease,color .15s ease,box-shadow .15s ease,transform .05s ease;-webkit-user-select:none;user-select:none;white-space:nowrap}.default-button-preset:hover:not(:disabled){background-color:var(--btn-hover-color);border-color:var(--color-text-subtle)}.default-button-preset:active:not(:disabled){background-color:var(--btn-active-color);transform:translateY(1px);box-shadow:none}.default-button-preset.is-active{background-color:var(--btn-active-bg);border-color:var(--btn-active-border);color:var(--btn-active-text);box-shadow:0 0 0 3px #2563eb1f}.default-button-preset:disabled,.default-button-preset.is-disabled{opacity:.5;cursor:not-allowed;box-shadow:none}.default-button-preset:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.green-button-preset{--btn-bg-color: var(--color-success);--btn-border-color: var(--color-success);--btn-hover-color: var(--color-success-hover);--btn-active-color: #166534;--btn-text-color: #ffffff;--btn-active-text: #ffffff;--btn-active-border: var(--color-success-hover);--btn-active-bg: var(--color-success-hover)}.green-button-preset:hover:not(:disabled){background-color:var(--btn-hover-color);border-color:var(--btn-hover-color);color:#fff}.red-button-preset{--btn-bg-color: var(--color-danger);--btn-border-color: var(--color-danger);--btn-hover-color: #b91c1c;--btn-active-color: #991b1b;--btn-text-color: #ffffff;--btn-active-text: #ffffff;--btn-active-border: #b91c1c;--btn-active-bg: #b91c1c}.red-button-preset:hover:not(:disabled){background-color:var(--btn-hover-color);border-color:var(--btn-hover-color);color:#fff}.primary-button-preset{--btn-bg-color: var(--color-primary);--btn-border-color: var(--color-primary);--btn-hover-color: var(--color-primary-hover);--btn-active-color: var(--color-primary-active);--btn-text-color: #ffffff;--btn-active-text: #ffffff;--btn-active-border: var(--color-primary-active);--btn-active-bg: var(--color-primary-active)}.primary-button-preset:hover:not(:disabled){background-color:var(--btn-hover-color);border-color:var(--btn-hover-color);color:#fff}.checkbox-wrapper{display:inline-flex;align-items:center;cursor:pointer;-webkit-user-select:none;user-select:none;font-size:13px;color:var(--color-text);gap:8px}.checkbox-wrapper input[type=checkbox]{position:absolute;opacity:0;width:0;height:0;pointer-events:none}.checkbox-custom-look{width:16px;height:16px;background-color:var(--color-surface);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);display:inline-block;position:relative;box-shadow:var(--shadow-xs);transition:background-color .15s ease,border-color .15s ease;flex:0 0 auto}.checkbox-wrapper:hover .checkbox-custom-look{border-color:var(--color-primary)}.checkbox-wrapper input[type=checkbox]:focus-visible+.checkbox-custom-look{outline:2px solid var(--color-focus);outline-offset:2px}.checkbox-wrapper input[type=checkbox]:checked+.checkbox-custom-look{background-color:var(--color-primary);border-color:var(--color-primary)}.checkbox-wrapper input[type=checkbox]:checked+.checkbox-custom-look:after{content:"";position:absolute;left:4px;top:1px;width:5px;height:9px;border:solid #ffffff;border-width:0 2px 2px 0;transform:rotate(45deg)}.flex-container{display:flex;padding:0}.flex-child{flex:1;margin:10px}.splitter{height:40px}.shortcut-guide-panel{position:fixed;left:60px;bottom:14px;width:340px;max-height:calc(100vh - 80px);overflow-y:auto;background-color:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);font-size:12px;z-index:40;text-align:left}.shortcut-guide-panel:before{content:"";position:absolute;left:-6px;bottom:18px;width:10px;height:10px;background-color:var(--color-surface);border-left:1px solid var(--color-border);border-bottom:1px solid var(--color-border);transform:rotate(45deg);border-bottom-left-radius:2px}.shortcut-guide-header{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-bottom:1px solid var(--color-border);font-weight:600;font-size:13px;color:var(--color-text);background-color:var(--color-surface-muted);border-top-left-radius:var(--radius-lg);border-top-right-radius:var(--radius-lg)}.shortcut-guide-close{background:transparent;color:var(--color-text-muted);border:none;font-size:18px;line-height:1;cursor:pointer;padding:2px 6px;border-radius:var(--radius-sm);transition:background-color .15s ease,color .15s ease}.shortcut-guide-close:hover{background-color:var(--color-border);color:var(--color-text)}.shortcut-guide-body{padding:12px 14px 16px}.shortcut-guide-group{margin-bottom:14px}.shortcut-guide-group:last-child{margin-bottom:0}.shortcut-guide-group-title{font-size:10.5px;text-transform:uppercase;letter-spacing:.08em;font-weight:600;color:var(--color-text-subtle);margin-bottom:8px}.shortcut-guide-grid{display:grid;grid-template-columns:auto 1fr;gap:8px 14px;align-items:center}.shortcut-guide-row{display:contents}.shortcut-guide-keys{display:flex;align-items:center;gap:3px;flex-wrap:wrap;justify-self:start}.shortcut-guide-keys kbd{padding:2px 6px;background-color:var(--color-surface);border:1px solid var(--color-border-strong);border-bottom-width:2px;border-radius:var(--radius-sm);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:10.5px;color:var(--color-text);line-height:1.2;box-shadow:0 1px #0f172a0d}.shortcut-guide-sep{color:var(--color-text-subtle);font-size:11px;padding:0 2px}.shortcut-guide-label{color:var(--color-text);font-size:12px}.fls-minimap{position:absolute;top:12px;right:12px;z-index:20;background-color:#fffffff5;border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);overflow:hidden;-webkit-user-select:none;user-select:none}.fls-minimap-header{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:10.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-subtle);padding:6px 10px 4px;border-bottom:1px solid var(--color-border);background-color:var(--color-surface-muted)}.fls-minimap-zoom{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-weight:500;font-size:10px;letter-spacing:0;color:var(--color-text);font-variant-numeric:tabular-nums}.fls-minimap-canvas{display:block;cursor:crosshair;background-color:#fbfcfe}.fls-minimap-bg{fill:#fbfcfe}.fls-minimap-wall{stroke:#1f2937;stroke-width:.9;stroke-linecap:round}.fls-minimap-point{fill:#1f2937}.fls-minimap-point.selected{fill:#dc2626}.fls-minimap-viewport{fill:#2563eb1f;stroke:var(--color-primary);stroke-width:1.2;pointer-events:none;transition:fill .12s ease,stroke-width .12s ease}.fls-minimap-viewport.is-full{fill:#2563eb2e;stroke-width:1.6}.fls-zoom-control{position:absolute;left:12px;bottom:12px;z-index:20;display:flex;align-items:center;gap:4px;padding:4px 6px;background-color:#fffffff2;border:1px solid var(--color-border);border-radius:var(--radius-pill);box-shadow:var(--shadow-sm);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);-webkit-user-select:none;user-select:none}.fls-zoom-btn{appearance:none;background:transparent;border:none;width:26px;height:26px;border-radius:var(--radius-md);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;color:var(--color-text-muted);padding:0;transition:background-color .12s ease,color .12s ease}.fls-zoom-btn:hover{background-color:var(--color-surface-muted);color:var(--color-text)}.fls-zoom-btn:active{background-color:var(--color-primary-soft);color:var(--color-primary-active)}.fls-zoom-btn:focus-visible{outline:2px solid var(--color-focus);outline-offset:1px}.fls-zoom-slider{appearance:none;-webkit-appearance:none;background:transparent;width:140px;height:20px;margin:0 4px;padding:0;cursor:pointer}.fls-zoom-slider:focus{outline:none}.fls-zoom-slider::-webkit-slider-runnable-track{height:4px;background-color:var(--color-border-strong);border-radius:var(--radius-pill)}.fls-zoom-slider::-moz-range-track{height:4px;background-color:var(--color-border-strong);border-radius:var(--radius-pill);border:none}.fls-zoom-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:14px;height:14px;margin-top:-5px;background-color:var(--color-primary);border:2px solid #fff;border-radius:50%;box-shadow:var(--shadow-xs);cursor:pointer;transition:background-color .12s ease,transform .12s ease}.fls-zoom-slider::-webkit-slider-thumb:hover{background-color:var(--color-primary-hover);transform:scale(1.08)}.fls-zoom-slider::-moz-range-thumb{width:14px;height:14px;background-color:var(--color-primary);border:2px solid #fff;border-radius:50%;box-shadow:var(--shadow-xs);cursor:pointer}.fls-zoom-slider:focus-visible::-webkit-slider-thumb{box-shadow:0 0 0 3px #2563eb40}.fls-zoom-readout{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11.5px;color:var(--color-text);min-width:38px;text-align:center;font-variant-numeric:tabular-nums}.fls-zoom-divider{width:1px;height:18px;background-color:var(--color-border);margin:0 2px}.fls-context-menu{position:fixed;z-index:10000;min-width:168px;padding:4px;background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);font-size:13px;color:var(--color-text);-webkit-user-select:none;user-select:none}.fls-context-menu-item{display:flex;align-items:center;gap:8px;width:100%;padding:7px 10px;background-color:transparent;border:none;border-radius:var(--radius-sm);font:inherit;color:inherit;text-align:left;cursor:pointer;transition:background-color .1s ease,color .1s ease}.fls-context-menu-item:hover:not(:disabled){background-color:var(--color-primary-soft);color:var(--color-primary-active)}.fls-context-menu-item.is-destructive{color:var(--color-danger)}.fls-context-menu-item.is-destructive:hover:not(:disabled){background-color:var(--color-danger-soft);color:var(--color-danger)}.fls-context-menu-item:disabled{opacity:.5;cursor:not-allowed}.fls-context-menu-icon{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;color:currentColor}.fls-context-menu-label{flex:1}.fls-contour-legend{position:absolute;right:12px;top:196px;z-index:12;display:flex;align-items:stretch;gap:6px;padding:8px 10px 8px 8px;background-color:#fffffff5;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);pointer-events:none}.fls-contour-legend-bar{width:14px;height:160px;border-radius:3px;border:1px solid var(--color-border-strong)}.fls-contour-legend-bar.is-discrete{display:flex;flex-direction:column;overflow:hidden;background:#fff}.fls-contour-legend-band{width:100%;flex-grow:0;flex-shrink:0;border-top:1px solid rgba(0,0,0,.18)}.fls-contour-legend-band:first-child{border-top:none}.fls-contour-legend-ticks{position:relative;min-width:32px;height:160px}.fls-contour-legend-tick{position:absolute;left:0;transform:translateY(50%);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:10.5px;color:var(--color-text-muted);line-height:1;white-space:nowrap}.fls-canvas-wrapper{position:relative;background-color:#fbfcfe;border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-sm)}.fls-floating-toolbar{position:absolute;top:12px;left:12px;z-index:15;display:flex;flex-direction:row;gap:2px;background-color:#fffffff2;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);padding:4px;border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.fls-icon-btn{appearance:none;background:transparent;border:1px solid transparent;width:30px;height:30px;border-radius:var(--radius-md);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;color:var(--color-text-muted);padding:0;transition:background-color .12s ease,color .12s ease,border-color .12s ease}.fls-icon-btn:hover:not(:disabled){background-color:var(--color-surface-muted);border-color:var(--color-border);color:var(--color-text)}.fls-icon-btn:active:not(:disabled){background-color:var(--color-primary-soft);color:var(--color-primary-active);border-color:var(--color-primary)}.fls-icon-btn:disabled{opacity:.4;cursor:not-allowed}.fls-icon-btn:focus-visible{outline:2px solid var(--color-focus);outline-offset:1px}.fls-height-readout{position:fixed;z-index:9999;background-color:#1f2937f5;color:#fff;padding:5px 10px;border-radius:var(--radius-md);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;font-weight:500;pointer-events:none;white-space:nowrap;box-shadow:var(--shadow-md);display:inline-flex;align-items:center;gap:8px}.fls-height-hint{font-family:Inter,system-ui,sans-serif;color:#fff9;font-size:10.5px;font-weight:400;letter-spacing:.02em;padding-left:6px;border-left:1px solid rgba(255,255,255,.22)}.fls-view-toggles{position:absolute;right:12px;bottom:12px;z-index:18;display:flex;flex-direction:column;gap:6px;padding:8px 12px;background-color:#fffffff5;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.fls-view-toggle{display:inline-flex;align-items:center;gap:8px;cursor:pointer;font-size:12.5px;color:var(--color-text);-webkit-user-select:none;user-select:none;line-height:1.2}.fls-view-toggle input[type=checkbox]{appearance:none;width:14px;height:14px;margin:0;border:1px solid var(--color-border-strong);border-radius:3px;background-color:var(--color-surface);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:background-color .12s ease,border-color .12s ease;flex:0 0 auto}.fls-view-toggle input[type=checkbox]:hover{border-color:var(--color-primary)}.fls-view-toggle input[type=checkbox]:checked{background-color:var(--color-primary);border-color:var(--color-primary)}.fls-view-toggle input[type=checkbox]:checked:after{content:"";width:8px;height:8px;background-color:#fff;clip-path:polygon(14% 44%,0 60%,40% 100%,100% 18%,84% 4%,38% 68%)}.fls-view-toggle input[type=checkbox]:focus-visible{outline:2px solid var(--color-focus);outline-offset:1px}.fls-view-switch{display:inline-flex;align-items:center;justify-content:space-between;gap:10px;cursor:pointer;font-size:12.5px;color:var(--color-text);-webkit-user-select:none;user-select:none;line-height:1.2;margin-top:2px;padding-top:6px;border-top:1px solid var(--color-border)}.fls-view-switch-label{font-weight:500}.fls-view-switch-track{position:relative;display:inline-block;width:30px;height:16px;border-radius:999px;background-color:var(--color-border-strong);transition:background-color .15s ease;flex:0 0 auto}.fls-view-switch-track.is-on{background-color:var(--color-primary)}.fls-view-switch-input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer;appearance:none}.fls-view-switch-thumb{position:absolute;top:2px;left:2px;width:12px;height:12px;border-radius:50%;background-color:#fff;box-shadow:0 1px 2px #0000002e;transition:transform .15s ease;pointer-events:none}.fls-view-switch-track.is-on .fls-view-switch-thumb{transform:translate(14px)}.fls-view-switch-input:focus-visible+.fls-view-switch-thumb{outline:2px solid var(--color-focus);outline-offset:2px}.fls-modal-backdrop{position:fixed;inset:0;background-color:#0f172a73;display:flex;align-items:center;justify-content:center;z-index:100;padding:24px;animation:fls-modal-fade-in .12s ease-out}@keyframes fls-modal-fade-in{0%{opacity:0}to{opacity:1}}.fls-modal{background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:10px;box-shadow:0 22px 48px #0f172a47;width:min(520px,100%);max-height:calc(100vh - 48px);display:flex;flex-direction:column;overflow:hidden;color:var(--color-text)}.fls-modal-header{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--color-border)}.fls-modal-header h2{margin:0;font-size:15px;font-weight:600;letter-spacing:.01em}.fls-modal-close{appearance:none;background:transparent;border:none;cursor:pointer;font-size:22px;line-height:1;width:28px;height:28px;border-radius:6px;color:var(--color-text-muted);display:inline-flex;align-items:center;justify-content:center}.fls-modal-close:hover{background-color:var(--color-surface-muted);color:var(--color-text)}.fls-modal-body{padding:16px 18px;display:flex;flex-direction:column;gap:12px;overflow-y:auto}.fls-modal-row{display:flex;gap:12px;flex-wrap:wrap}.fls-modal-field{display:flex;flex-direction:column;gap:4px;flex:1 1 180px;min-width:160px}.fls-modal-field-wide{flex:1 1 100%}.fls-modal-field>span{font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;font-weight:600;color:var(--color-text-subtle)}.fls-modal-field input[type=text],.fls-modal-field input[type=date],.fls-modal-field select,.fls-modal-field textarea{appearance:none;background-color:var(--color-surface);border:1px solid var(--color-border-strong);border-radius:6px;padding:7px 9px;font-size:13px;color:var(--color-text);font-family:inherit;min-width:0;width:100%;box-sizing:border-box}.fls-modal-field textarea{resize:vertical;min-height:60px;line-height:1.4}.fls-modal-field input:focus,.fls-modal-field select:focus,.fls-modal-field textarea:focus{outline:2px solid var(--color-focus);outline-offset:1px;border-color:var(--color-primary)}.fls-modal-logo-row{display:flex;align-items:center;gap:12px}.fls-modal-logo-preview{flex:0 0 auto;width:72px;height:72px;border-radius:8px;background-color:var(--color-surface-muted);border:1px dashed var(--color-border-strong);display:flex;align-items:center;justify-content:center;overflow:hidden;color:var(--color-text-subtle);font-size:11px}.fls-modal-logo-preview img{max-width:100%;max-height:100%;object-fit:contain}.fls-modal-logo-actions{display:flex;gap:6px;flex-wrap:wrap}.fls-modal-error{color:#b91c1c;font-size:11.5px;margin-top:2px}.fls-modal-footer{display:flex;justify-content:flex-end;gap:8px;padding:12px 18px;border-top:1px solid var(--color-border);background-color:var(--color-surface-muted)}.fls-modal-btn{appearance:none;cursor:pointer;border-radius:6px;padding:7px 14px;font-size:13px;font-weight:500;line-height:1.2;border:1px solid transparent;transition:background-color .12s ease,border-color .12s ease,color .12s ease}.fls-modal-btn-ghost{background-color:transparent;border-color:var(--color-border-strong);color:var(--color-text)}.fls-modal-btn-ghost:hover{background-color:var(--color-surface-muted)}.fls-modal-btn-primary{background-color:var(--color-primary);border-color:var(--color-primary);color:#fff}.fls-modal-btn-primary:hover{background-color:var(--color-primary-active);border-color:var(--color-primary-active)}.fls-modal-btn:focus-visible{outline:2px solid var(--color-focus);outline-offset:1px}.matd-overlay{position:fixed;inset:0;z-index:200;background:#0f172a59;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center}.matd-panel{background:#fff;border-radius:12px;box-shadow:0 20px 60px #0f172a38,0 4px 16px #0f172a1f;width:520px;max-width:calc(100vw - 32px);max-height:calc(100vh - 80px);display:flex;flex-direction:column;overflow:hidden}.matd-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px 14px;border-bottom:1px solid #e8eaee;flex-shrink:0}.matd-title{font-size:15px;font-weight:700;color:#0f172a;letter-spacing:-.01em}.matd-close-btn{appearance:none;background:transparent;border:none;width:28px;height:28px;border-radius:6px;font-size:18px;line-height:1;color:#64748b;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background-color .1s ease,color .1s ease}.matd-close-btn:hover{background-color:#f1f5f9;color:#0f172a}.matd-body{overflow-y:auto;flex:1 1 auto;padding:8px 0}.matd-empty{padding:32px 24px;text-align:center;font-size:13px;color:#94a3b8;font-style:italic}.matd-row{border-bottom:1px solid #f1f5f9;transition:background-color .1s ease}.matd-row:last-child{border-bottom:none}.matd-row.is-selected .matd-row-summary{background-color:#eff6ff}.matd-row-summary{display:flex;align-items:center;gap:10px;padding:10px 18px;transition:background-color .1s ease}.matd-row-summary:hover{background-color:#f8fafc}.matd-swatch{width:14px;height:14px;border-radius:4px;flex-shrink:0;border:1px solid rgba(0,0,0,.1)}.matd-select-btn{appearance:none;background:transparent;border:1px solid #cbd5e1;border-radius:5px;padding:2px 7px;font-size:10.5px;font-weight:600;color:#64748b;cursor:pointer;white-space:nowrap;flex-shrink:0;transition:background-color .1s ease,border-color .1s ease,color .1s ease}.matd-select-btn:hover{background-color:#f0f9ff;border-color:#2563eb;color:#2563eb}.matd-active-badge{display:inline-block;background:#2563eb;color:#fff;border-radius:4px;padding:2px 7px;font-size:10.5px;font-weight:700;letter-spacing:.02em}.matd-select-label{font-size:10.5px;font-weight:600}.matd-name{flex:1 1 auto;font-size:13px;font-weight:600;color:#1e293b;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.matd-meta{font-size:11px;color:#64748b;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;white-space:nowrap;flex-shrink:0}.matd-alpha{color:#94a3b8}.matd-actions{display:flex;gap:2px;flex-shrink:0;margin-left:auto}.matd-action-btn{appearance:none;background:transparent;border:none;width:26px;height:26px;border-radius:5px;font-size:14px;color:#94a3b8;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background-color .1s ease,color .1s ease}.matd-action-btn:hover{background-color:#f1f5f9;color:#334155}.matd-del-btn:hover{background-color:#fee2e2;color:#b91c1c}.matd-edit-form,.matd-add-form{padding:12px 18px 14px;background:#f8fafc;border-top:1px dashed #e2e8f0}.matd-add-form{border-top:1px solid #e2e8f0;border-bottom:1px solid #e2e8f0}.matd-add-heading{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#64748b;margin-bottom:10px}.matd-edit-row{display:flex;align-items:flex-end;flex-wrap:wrap;gap:10px;margin-bottom:8px}.matd-edit-field{display:flex;flex-direction:column;gap:3px}.matd-edit-name{flex:1 1 140px}.matd-edit-alpha{flex:1 1 200px;flex-direction:row;align-items:center;gap:8px}.matd-edit-label{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#64748b}.matd-edit-input{height:30px;padding:0 9px;border:1px solid #cbd5e1;border-radius:6px;font-size:12.5px;color:#1e293b;background:#fff;outline:none;transition:border-color .12s ease,box-shadow .12s ease}.matd-edit-input:focus{border-color:#2563eb;box-shadow:0 0 0 3px #2563eb1f}.matd-edit-number{width:72px}.matd-color-input{appearance:none;-webkit-appearance:none;width:36px;height:30px;padding:2px;border:1px solid #cbd5e1;border-radius:6px;cursor:pointer;background:transparent}.matd-color-input::-webkit-color-swatch-wrapper{padding:0;border-radius:4px}.matd-color-input::-webkit-color-swatch{border:none;border-radius:3px}.matd-color-input::-moz-color-swatch{border:none;border-radius:3px}.matd-slider{-webkit-appearance:none;appearance:none;flex:1;height:4px;border-radius:4px;background:#e2e8f0;outline:none;cursor:pointer}.matd-slider::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:#2563eb;border:2px solid #fff;box-shadow:0 1px 4px #2563eb4d;cursor:pointer}.matd-slider::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:#2563eb;border:2px solid #fff;box-shadow:0 1px 4px #2563eb4d;cursor:pointer}.matd-alpha-val{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;color:#64748b;min-width:30px;text-align:right;flex-shrink:0}.matd-preview-swatch{width:30px;height:30px;border-radius:6px;border:1px solid rgba(0,0,0,.1);flex-shrink:0;align-self:flex-end;transition:opacity .1s ease,background-color .1s ease}.matd-edit-btns{display:flex;gap:8px;margin-top:4px}.matd-save-btn{padding:6px 16px;border:none;border-radius:6px;background:#2563eb;color:#fff;font-size:12px;font-weight:700;cursor:pointer;transition:opacity .12s ease,background-color .12s ease}.matd-save-btn:hover{background:#1d4ed8}.matd-cancel-btn{padding:6px 12px;border:1px solid #cbd5e1;border-radius:6px;background:#fff;color:#64748b;font-size:12px;cursor:pointer;transition:background-color .1s ease}.matd-cancel-btn:hover{background:#f8fafc}.matd-footer{padding:12px 18px;border-top:1px solid #e8eaee;flex-shrink:0}.matd-add-trigger{width:100%;padding:8px 0;border:1.5px dashed #cbd5e1;border-radius:8px;background:transparent;color:#64748b;font-size:13px;font-weight:600;cursor:pointer;transition:border-color .12s ease,color .12s ease,background-color .12s ease}.matd-add-trigger:hover:not(:disabled){border-color:#2563eb;color:#2563eb;background-color:#eff6ff}.matd-add-trigger:disabled{opacity:.4;cursor:not-allowed}.fls-pdf-modal{width:min(480px,100%)}.fls-pdf-modal-intro{margin:0;color:var(--color-text-muted);font-size:13px;line-height:1.45}.fls-pdf-modal-options{display:flex;flex-direction:column;gap:8px}.fls-pdf-modal-option{display:flex;align-items:center;gap:12px;padding:10px 12px;border:1px solid var(--color-border);border-radius:8px;background-color:var(--color-surface);cursor:pointer;transition:background-color .12s ease,border-color .12s ease,box-shadow .12s ease}.fls-pdf-modal-option:hover{background-color:var(--color-surface-muted);border-color:var(--color-border-strong)}.fls-pdf-modal-option.is-active{background-color:var(--color-primary-soft);border-color:var(--color-primary);box-shadow:0 0 0 2px #2563eb1f}.fls-pdf-modal-option input[type=radio]{flex:0 0 auto;accent-color:var(--color-primary)}.fls-pdf-modal-option-preview{flex:0 0 36px;display:inline-flex;align-items:center;justify-content:center;height:36px}.fls-pdf-modal-page{display:inline-block;background-color:#fff;border:1px solid var(--color-border-strong);border-radius:2px;box-shadow:0 1px 2px #0f172a14}.fls-pdf-modal-page-auto{width:28px;height:28px;border-style:dashed;border-color:var(--color-primary)}.fls-pdf-modal-page-portrait{width:22px;height:30px}.fls-pdf-modal-page-landscape{width:32px;height:22px}.fls-pdf-modal-option.is-active .fls-pdf-modal-page{border-color:var(--color-primary)}.fls-pdf-modal-option-text{display:flex;flex-direction:column;gap:2px;min-width:0}.fls-pdf-modal-option-label{font-size:13px;font-weight:600;color:var(--color-text)}.fls-pdf-modal-option-hint{font-size:11.5px;color:var(--color-text-muted);line-height:1.35}.fls-notice-modal{width:min(520px,100%)}.fls-notice-title-wrap{display:inline-flex;align-items:center;gap:10px}.fls-notice-badge{width:22px;height:22px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;color:#fff}.fls-notice-modal.is-info .fls-notice-badge{background-color:#2563eb}.fls-notice-modal.is-warning .fls-notice-badge{background-color:#d97706}.fls-notice-modal.is-error .fls-notice-badge{background-color:#dc2626}.fls-notice-message{margin:0;font-size:13px;line-height:1.55;color:var(--color-text);white-space:pre-wrap}.fls-page{display:flex;align-items:stretch;gap:0;background-color:var(--color-bg);flex:1;min-height:0;overflow:hidden}.fls-toolstrip{flex:0 0 auto;width:68px;padding:10px 6px;display:flex;flex-direction:column;align-items:center;gap:4px;background-color:var(--color-surface);border-right:1px solid var(--color-border);box-shadow:var(--shadow-xs);z-index:2}.fls-toolstrip-btn{appearance:none;position:relative;width:56px;min-height:52px;padding:6px 4px 4px;border:1px solid transparent;border-radius:var(--radius-md);background-color:transparent;color:var(--color-text-muted);cursor:pointer;display:inline-flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:3px;transition:background-color .12s ease,border-color .12s ease,color .12s ease}.fls-toolstrip-btn:hover{background-color:var(--color-surface-muted);color:var(--color-text);border-color:var(--color-border)}.fls-toolstrip-btn.is-active{background-color:var(--color-primary-soft);color:var(--color-primary-active);border-color:var(--color-primary);box-shadow:0 0 0 2px #2563eb26}.fls-toolstrip-btn:focus-visible{outline:2px solid var(--color-focus);outline-offset:1px}.fls-toolstrip-btn svg{width:18px;height:18px}.fls-toolstrip-shortcut{position:absolute;right:3px;top:3px;font-size:8.5px;font-weight:600;letter-spacing:.04em;color:var(--color-text-subtle);pointer-events:none;line-height:1}.fls-toolstrip-btn.is-active .fls-toolstrip-shortcut{color:var(--color-primary-active)}.fls-toolstrip-label{font-size:10px;font-weight:500;letter-spacing:.02em;line-height:1;color:var(--color-text-muted);margin-top:auto;text-align:center;white-space:nowrap;pointer-events:none}.fls-toolstrip-btn:hover .fls-toolstrip-label{color:var(--color-text)}.fls-toolstrip-btn.is-active .fls-toolstrip-label{color:var(--color-primary-active);font-weight:600}.fls-toolstrip-solve .fls-toolstrip-label{color:#ffffffeb}.fls-toolstrip-solve:hover .fls-toolstrip-label{color:#fff}.fls-toolstrip-divider{width:40px;height:1px;background-color:var(--color-border);margin:6px 0}.fls-toolstrip-solve{color:#fff;background-color:var(--color-success);border-color:var(--color-success)}.fls-toolstrip-solve:hover{background-color:var(--color-success-hover);border-color:var(--color-success-hover);color:#fff}.fls-toolstrip-spacer{flex:1;min-height:6px}.fls-toolstrip-help-glyph{font-weight:700;font-size:16px;line-height:1;letter-spacing:0}.fls-workspace{flex:1;min-width:0;display:flex;flex-direction:column}.fls-canvas-host{flex:1;min-width:0;min-height:0;padding:16px 16px 12px;background-color:var(--color-bg)}.fls-bottom-bar{flex:0 0 auto;display:flex;align-items:stretch;flex-wrap:wrap;gap:10px 16px;padding:10px 16px;background-color:var(--color-surface);border-top:1px solid var(--color-border);box-shadow:0 -1px 2px #0f172a0a;color:var(--color-text);overflow-x:auto;max-width:100%}.fls-bottom-bar::-webkit-scrollbar{height:6px}.fls-bottom-bar::-webkit-scrollbar-thumb{background-color:var(--color-border-strong);border-radius:3px}.fls-bottom-group{display:flex;flex-direction:column;gap:6px;min-width:0}.fls-bottom-group-title{font-size:10px;letter-spacing:.1em;text-transform:uppercase;font-weight:600;color:var(--color-text-subtle)}.fls-bottom-group-content{display:flex;flex-wrap:wrap;align-items:center;gap:12px}.fls-bottom-field{display:flex;align-items:center;min-width:0}.fls-bottom-field .integer-input-wrapper,.fls-bottom-field .text-input-wrapper{padding:0;gap:6px}.fls-bottom-field .integer-input-box,.fls-bottom-field .text-input-box{width:96px;flex:0 0 auto}.fls-bottom-divider{width:1px;background-color:var(--color-border);align-self:stretch}.fls-bottom-spacer{flex:1 1 0;min-width:0}.fls-bottom-hint{align-self:center;color:var(--color-text-subtle);font-size:11.5px;line-height:1.5;max-width:360px;min-width:0;text-align:right;margin-left:auto}@media(max-width:1280px){.fls-bottom-divider,.fls-bottom-spacer{display:none}.fls-bottom-hint{max-width:100%;text-align:left;margin-left:0}}@media(max-width:900px){.fls-bottom-bar{padding:8px 12px;gap:8px 12px}.fls-bottom-group-content{gap:8px}.fls-bottom-hint{display:none}}@media(max-width:720px){.fls-toolstrip{width:52px;padding:8px 4px}.fls-toolstrip-btn{width:44px;min-height:44px;padding:4px 2px}.fls-toolstrip-label{display:none}.fls-toolstrip-shortcut{font-size:8px;top:2px;right:2px}.fls-canvas-host{padding:8px 8px 6px}}.fls-bottom-hint kbd{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;background-color:var(--color-surface-muted);color:var(--color-text);border:1px solid var(--color-border-strong);border-bottom-width:2px;padding:1px 5px;border-radius:4px;font-size:10.5px;margin:0 1px}.fls-color-field{display:inline-flex;align-items:center;gap:6px;cursor:pointer;font-size:12px;color:var(--color-text);-webkit-user-select:none;user-select:none}.fls-color-label{font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;font-weight:600;color:var(--color-text-subtle)}.fls-color-input{appearance:none;-webkit-appearance:none;width:28px;height:24px;padding:0;border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);cursor:pointer;background-color:transparent;box-shadow:inset 0 0 0 1px #fff9}.fls-color-input::-webkit-color-swatch-wrapper{padding:0;border-radius:var(--radius-sm)}.fls-color-input::-webkit-color-swatch{border:none;border-radius:3px}.fls-color-input::-moz-color-swatch{border:none;border-radius:3px}.fls-color-input:focus-visible{outline:2px solid var(--color-focus);outline-offset:1px}.fls-color-hex{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:10.5px;color:var(--color-text-muted);letter-spacing:.02em}.fls-color-preview{width:96px;height:10px;border-radius:999px;border:1px solid var(--color-border-strong);box-shadow:inset 0 0 0 1px #ffffff59;align-self:center}.fls-segmented{display:inline-flex;padding:2px;gap:2px;border:1px solid var(--color-border-strong);border-radius:var(--radius-md);background-color:var(--color-surface, #f5f6f8)}.fls-segmented-btn{appearance:none;background:transparent;border:none;padding:4px 10px;font-size:11.5px;font-weight:600;letter-spacing:.02em;color:var(--color-text-muted);border-radius:calc(var(--radius-md) - 2px);cursor:pointer;transition:background-color .12s ease,color .12s ease,box-shadow .12s ease}.fls-segmented-btn:hover{color:var(--color-text)}.fls-segmented-btn.is-active{background-color:#fff;color:var(--color-text);box-shadow:var(--shadow-sm),inset 0 0 0 1px var(--color-border-strong)}.fls-segmented-btn:focus-visible{outline:2px solid var(--color-focus);outline-offset:1px}.fls-summary-content{gap:10px}.fls-summary-stat{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--color-text);white-space:nowrap}.fls-summary-badge{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:999px;border:1.5px solid currentColor;font-weight:700;font-size:11px;line-height:1;font-family:Arial,Helvetica,sans-serif}.fls-summary-badge-high{color:#b91c1c;background-color:#fee2e2}.fls-summary-badge-low{color:#1d4ed8;background-color:#dbeafe}.fls-summary-key{font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;font-weight:600;color:var(--color-text-subtle)}.fls-summary-value{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12.5px;color:var(--color-text)}.fls-summary-value-strong{font-weight:700;color:var(--color-text)}.fls-summary-stat-diff{padding:3px 8px;border-radius:6px;background-color:var(--color-surface-muted);border:1px solid var(--color-border)}.fls-materials-group{flex-shrink:0}.fls-materials-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.fls-mat-dialog-trigger{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border:1.5px solid var(--color-border-strong);border-radius:var(--radius-md);background:#fff;cursor:pointer;font-size:11.5px;font-weight:500;color:var(--color-text);min-width:120px;max-width:200px;transition:border-color .12s ease,box-shadow .12s ease,background-color .12s ease}.fls-mat-dialog-trigger:hover{border-color:var(--color-accent, #2563eb);background-color:#eff6ff}.fls-mat-color{display:inline-block;width:10px;height:10px;border-radius:3px;flex-shrink:0}.fls-mat-name{flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fls-mat-offset{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:10.5px;color:var(--color-text-muted);flex-shrink:0}.fls-mat-dialog-arrow{font-size:10px;color:var(--color-text-muted);flex-shrink:0;margin-left:auto;padding-left:2px}.fls-trace-group{flex-shrink:0}.fls-trace-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.fls-trace-import-btn{display:inline-flex;align-items:center;gap:4px;padding:5px 12px;border:1.5px dashed var(--color-border-strong);border-radius:var(--radius-md);background:transparent;cursor:pointer;font-size:11.5px;font-weight:600;color:var(--color-text-subtle);transition:border-color .12s ease,color .12s ease,background-color .12s ease}.fls-trace-import-btn:hover:not(:disabled){border-color:var(--color-accent, #2563eb);color:var(--color-accent, #2563eb);background-color:#eff6ff}.fls-trace-import-btn:disabled{opacity:.6;cursor:wait}.fls-trace-opacity-field{display:inline-flex;align-items:center;gap:5px;padding:0 6px;height:26px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#fff}.fls-trace-opacity-label{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;font-weight:700;color:var(--color-text-muted)}.fls-trace-slider{-webkit-appearance:none;appearance:none;width:85px;height:4px;border-radius:4px;background:#e2e8f0;outline:none;cursor:pointer}.fls-trace-slider::-webkit-slider-thumb{-webkit-appearance:none;width:13px;height:13px;border-radius:50%;background:var(--color-accent, #2563eb);border:2px solid #fff;box-shadow:0 1px 3px #0003;cursor:pointer}.fls-trace-slider::-moz-range-thumb{width:13px;height:13px;border-radius:50%;background:var(--color-accent, #2563eb);border:2px solid #fff;box-shadow:0 1px 3px #0003;cursor:pointer}.fls-trace-opacity-val{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:10.5px;color:var(--color-text-muted);min-width:28px;text-align:right}.fls-trace-mode-btn{padding:4px 10px;border:1.5px solid var(--color-border-strong);border-radius:var(--radius-md);background:#fff;cursor:pointer;font-size:11.5px;font-weight:600;color:var(--color-text);transition:background-color .12s ease,border-color .12s ease,color .12s ease}.fls-trace-mode-btn:hover{border-color:var(--color-accent, #2563eb);color:var(--color-accent, #2563eb)}.fls-trace-mode-btn.is-active{background:var(--color-accent, #2563eb);color:#fff;border-color:var(--color-accent, #2563eb)}.fls-trace-replace-btn{padding:4px 10px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:#fff;cursor:pointer;font-size:11.5px;color:var(--color-text-muted);transition:background-color .12s ease,color .12s ease}.fls-trace-replace-btn:hover:not(:disabled){background-color:#f1f5f9;color:var(--color-text)}.fls-trace-remove-btn{width:26px;height:26px;padding:0;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#fff;font-size:15px;line-height:1;color:var(--color-text-muted);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:background-color .12s ease,color .12s ease,border-color .12s ease}.fls-trace-remove-btn:hover{background-color:#fee2e2;color:#b91c1c;border-color:#fecaca}.bb-gate-root{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:24px;background:radial-gradient(1200px 600px at 20% 10%,rgba(59,130,246,.12),transparent 60%),radial-gradient(1000px 500px at 80% 90%,rgba(99,102,241,.1),transparent 60%),var(--color-bg, #f8fafc)}.bb-gate-card{width:min(420px,100%);background:var(--color-surface, #ffffff);border:1px solid var(--color-border, #e2e8f0);border-radius:14px;box-shadow:0 1px 2px #0f172a0a,0 20px 40px -12px #0f172a2e;padding:28px}.bb-gate-brand{display:inline-flex;align-items:center;gap:10px;margin-bottom:18px}.bb-gate-mark{width:28px;height:28px;border-radius:8px;background:linear-gradient(135deg,#2563eb,#60a5fa);display:inline-flex;align-items:center;justify-content:center;color:#fff;font-size:12px;font-weight:700;letter-spacing:.02em}.bb-gate-brand-name{font-weight:700;font-size:15px;color:var(--color-text, #0f172a);letter-spacing:-.01em}.bb-gate-title{margin:0 0 6px;font-size:22px;font-weight:700;letter-spacing:-.01em;color:var(--color-text, #0f172a)}.bb-gate-subtitle{margin:0 0 20px;font-size:13.5px;line-height:1.55;color:var(--color-text-muted, #475569)}.bb-gate-form{display:flex;flex-direction:column;gap:12px}.bb-gate-field{display:flex;flex-direction:column;gap:6px}.bb-gate-label{font-size:12px;font-weight:600;color:var(--color-text-muted, #475569);letter-spacing:.02em;text-transform:uppercase}.bb-gate-input{height:40px;padding:0 12px;border-radius:10px;border:1px solid var(--color-border, #cbd5e1);background-color:var(--color-surface, #ffffff);color:var(--color-text, #0f172a);font-size:14px;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;letter-spacing:.02em;transition:border-color .15s ease,box-shadow .15s ease;outline:none}.bb-gate-input:focus{border-color:#2563eb;box-shadow:0 0 0 3px #2563eb2e}.bb-gate-input:disabled{background-color:#f1f5f9;color:#64748b;cursor:not-allowed}.bb-gate-error{font-size:12.5px;line-height:1.5;color:#991b1b;background:#fee2e2;border:1px solid #fecaca;padding:8px 10px;border-radius:8px}.bb-gate-submit{margin-top:2px;height:40px;border-radius:10px;border:1px solid transparent;background:linear-gradient(180deg,#2563eb,#1d4ed8);color:#fff;font-weight:600;font-size:14px;cursor:pointer;box-shadow:0 1px 2px #0f172a14,inset 0 1px #ffffff1f;transition:transform .05s ease,filter .15s ease}.bb-gate-submit:hover:not(:disabled){filter:brightness(1.05)}.bb-gate-submit:active:not(:disabled){transform:translateY(1px)}.bb-gate-submit:disabled{cursor:not-allowed;opacity:.6}.bb-gate-footnote{margin:18px 0 0;font-size:12px;color:var(--color-text-muted, #64748b);text-align:center}.bb-feedback-backdrop{position:fixed;inset:0;background-color:#0f172a73;display:flex;align-items:center;justify-content:center;z-index:2000;padding:24px}.bb-feedback-modal{background-color:#fff;border-radius:14px;width:min(540px,100%);max-height:calc(100vh - 48px);box-shadow:0 24px 60px #0f172a40;display:flex;flex-direction:column;overflow:hidden;color:#0f172a}.bb-feedback-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid #e2e8f0}.bb-feedback-title{margin:0;font-size:16px;font-weight:600;letter-spacing:-.01em}.bb-feedback-close{background:transparent;border:none;font-size:22px;line-height:1;color:#64748b;cursor:pointer;padding:4px 8px;border-radius:6px}.bb-feedback-close:hover:not(:disabled){background-color:#f1f5f9;color:#0f172a}.bb-feedback-close:disabled{opacity:.5;cursor:default}.bb-feedback-body{padding:18px 20px;overflow-y:auto}.bb-feedback-field{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}.bb-feedback-field:last-child{margin-bottom:0}.bb-feedback-label{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:#475569}.bb-feedback-chips{display:flex;flex-wrap:wrap;gap:6px}.bb-feedback-chip{background-color:#f1f5f9;border:1px solid transparent;color:#334155;padding:6px 12px;border-radius:999px;font-size:12px;font-weight:500;cursor:pointer;transition:background-color .12s,color .12s,border-color .12s}.bb-feedback-chip:hover:not(:disabled){background-color:#e2e8f0}.bb-feedback-chip.is-selected{background-color:#0f172a;color:#fff;border-color:#0f172a}.bb-feedback-chip:disabled{opacity:.55;cursor:default}.bb-feedback-textarea{width:100%;border:1px solid #cbd5e1;border-radius:8px;padding:10px 12px;font:inherit;font-size:13px;line-height:1.5;color:#0f172a;background-color:#fff;resize:vertical;min-height:120px;box-sizing:border-box}.bb-feedback-textarea:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 3px #2563eb2e}.bb-feedback-textarea:disabled{background-color:#f8fafc;color:#64748b;cursor:default}.bb-feedback-counter{align-self:flex-end;font-size:11px;color:#94a3b8}.bb-feedback-error{margin-top:4px;padding:8px 12px;border-radius:8px;background-color:#fef2f2;color:#b91c1c;border:1px solid #fecaca;font-size:12px}.bb-feedback-success{display:flex;align-items:center;gap:12px;padding:14px 16px;border-radius:10px;background-color:#ecfdf5;border:1px solid #a7f3d0;color:#065f46}.bb-feedback-success-check{width:28px;height:28px;border-radius:999px;background-color:#10b981;color:#fff;display:inline-flex;align-items:center;justify-content:center;font-weight:700;flex-shrink:0}.bb-feedback-success-title{font-weight:600;font-size:14px}.bb-feedback-success-subtitle{font-size:12px;color:#047857;margin-top:2px}.bb-feedback-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 20px;border-top:1px solid #e2e8f0;background-color:#f8fafc}.bb-feedback-hint{font-size:11px;color:#64748b}.bb-feedback-hint kbd{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:10.5px;padding:1px 5px;border-radius:4px;border:1px solid #cbd5e1;background-color:#fff;color:#334155}.bb-feedback-actions{display:flex;gap:8px}.bb-feedback-btn{padding:7px 14px;font-size:13px;font-weight:500;border-radius:8px;border:1px solid transparent;cursor:pointer;transition:background-color .12s,color .12s,border-color .12s}.bb-feedback-btn-secondary{background-color:#fff;color:#334155;border-color:#cbd5e1}.bb-feedback-btn-secondary:hover:not(:disabled){background-color:#f1f5f9}.bb-feedback-btn-primary{background-color:#2563eb;color:#fff;border-color:#2563eb}.bb-feedback-btn-primary:hover:not(:disabled){background-color:#1d4ed8;border-color:#1d4ed8}.bb-feedback-btn:disabled{opacity:.55;cursor:default}
