:root{--color-bg:#f6f6f4;--color-bg-elevated:#fff;--color-viewport-bg:#fff;--color-bg-sunken:#ecece8;--color-bg-hover:#e4e4dc;--color-bg-active:#d6d6cc;--color-border:#d6d6ce;--color-border-strong:#b8b8ae;--color-divider:#e4e4dc;--color-text:#1f1f23;--color-text-muted:#5a5a64;--color-text-subtle:#7c7c84;--color-text-on-accent:#fff;--color-accent:#2f5fa8;--color-accent-hover:#3d72be;--color-accent-soft:#e2ecfa;--color-union:#2c8a4a;--color-union-soft:#e0f1e6;--color-difference:#b53b3b;--color-difference-soft:#f8e0e0;--color-intersect:#b07820;--color-intersect-soft:#f6ecd6;--color-construction:#b07820;--color-error:#b53b3b;--color-warning:#b07820;--color-success:#2c8a4a;--color-success-text:#1f6b38;--color-error-text:#9a2f2f;--color-element-selection:#0d8a8a;--color-element-selection-soft:#d6f0ef;--color-ui-selection:#dde6f0;--font-family-sans:-apple-system, "Segoe UI", "Helvetica Neue", system-ui, sans-serif;--font-family-mono:"JetBrains Mono", "Fira Code", "SF Mono", Menlo, monospace;--fs-base:1rem;--fs-md:1.0625rem;--fs-lg:1.1875rem;--fs-xl:1.4375rem;--fs-2xl:1.75rem;--fw-regular:400;--fw-medium:500;--fw-semibold:600;--fw-bold:700;--lh-tight:1.2;--lh-normal:1.5;--space-0:0;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-pill:999px;--shadow-sm:0 1px 2px #1414180a;--shadow-md:0 2px 6px #1414180f;--shadow-lg:0 8px 24px #14141814;--shadow-dialog:0 12px 32px #14141829, 0 2px 8px #1414181a;--motion-fast:80ms ease-out;--motion-medium:.18s ease-out;--topbar-height:3rem;--toolbar-height:3rem;--outliner-width:19rem;--touch-target:2.75rem}[data-theme=dark]{--color-bg:#1e1e22;--color-bg-elevated:#2a2a30;--color-bg-sunken:#16161a;--color-bg-hover:#333339;--color-bg-active:#3e3e46;--color-viewport-bg:#1a1a1e;--color-border:#3e3e46;--color-border-strong:#56565e;--color-divider:#333339;--color-text:#e8e8ec;--color-text-muted:#a0a0aa;--color-text-subtle:#7c7c86;--color-text-on-accent:#fff;--color-accent:#5b8fd9;--color-accent-hover:#7aa8e8;--color-accent-soft:#1e3350;--color-union:#4db86a;--color-union-soft:#1a3324;--color-difference:#e05555;--color-difference-soft:#3a1a1a;--color-intersect:#d4952e;--color-intersect-soft:#3a2e14;--color-construction:#d4952e;--color-error:#e05555;--color-warning:#d4952e;--color-success:#4db86a;--color-success-text:#5fcf80;--color-error-text:#f07070;--color-element-selection:#2bc4c4;--color-element-selection-soft:#133a3a;--color-ui-selection:#2d3c50;--shadow-sm:0 1px 2px #0003;--shadow-md:0 2px 6px #0000004d;--shadow-lg:0 8px 24px #0006;--shadow-dialog:0 12px 32px #0000008c, 0 2px 8px #00000073}*,:before,:after{box-sizing:border-box}html,body,#root{width:100%;height:100%;margin:0;padding:0}html,body{overscroll-behavior:none;touch-action:pan-x pan-y;overflow:hidden}html{font-size:100%}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-family-sans);font-size:var(--fs-base);line-height:var(--lh-normal);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility}button{font-family:inherit;font-size:inherit}a{color:var(--color-accent);text-decoration:none}a:hover{color:var(--color-accent-hover);text-decoration:underline}.fd-shell{background:var(--color-bg);flex-direction:column;width:100%;height:100%;display:flex}.fd-shell>.topbar{padding:0 var(--space-4);background:var(--color-bg-elevated);border-bottom:1px solid var(--color-border);height:var(--topbar-height);flex:0 0 var(--topbar-height);justify-content:space-between;align-items:center;display:flex}.fd-shell>.topbar .nav-toggle{margin-left:var(--space-2);border-radius:var(--radius-sm);color:var(--color-text-muted);font-size:var(--fs-base);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;line-height:1;display:none}.fd-shell>.topbar .nav-toggle:hover{background:var(--color-bg-hover);color:var(--color-text)}.fd-shell>.topbar .title{font-size:var(--fs-lg);font-weight:var(--fw-semibold);letter-spacing:.01em;color:var(--color-text);align-items:center;gap:var(--space-2);margin-right:auto;display:flex}.fd-shell>.topbar .title .version{font-size:var(--fs-sm);font-weight:var(--fw-normal,400);color:var(--color-text-muted);cursor:pointer;border-radius:var(--radius-sm);text-decoration:underline;-webkit-text-decoration-color:var(--color-text-subtle);text-decoration-color:var(--color-text-subtle);text-underline-offset:.15em;transition:color var(--motion-fast), text-decoration-color var(--motion-fast);background:0 0;border:none;padding:0;font-family:inherit}.fd-shell>.topbar .title .version:hover{color:var(--color-accent);-webkit-text-decoration-color:var(--color-accent);text-decoration-color:var(--color-accent)}.fd-shell>.topbar .title .project-title{font-family:inherit;font-size:var(--fs-lg);font-weight:var(--fw-medium);text-overflow:ellipsis;white-space:nowrap;max-width:22ch;padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);color:var(--color-text);cursor:text;background:0 0;border:1px solid #0000;overflow:hidden}.fd-shell>.topbar .title .project-title:hover{background:var(--color-bg-hover)}.fd-shell>.topbar .title .project-title-input{font-family:inherit;font-size:var(--fs-lg);font-weight:var(--fw-medium);width:22ch;max-width:22ch;padding:var(--space-1) var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg);color:var(--color-text)}.fd-shell>.topbar .title .project-title-input:focus{outline:2px solid var(--color-accent);outline-offset:1px}.fd-shell>.topbar .title .back-to-overview{border-radius:var(--radius-sm);min-width:1.75rem;height:1.75rem;color:var(--color-text-muted);font-size:var(--fs-base);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:0;line-height:1;display:inline-flex}.fd-shell>.topbar .title .back-to-overview:hover{background:var(--color-bg-hover);color:var(--color-text)}.fd-shell>.topbar .topbar-spacer{flex:1}.fd-shell>.topbar .meta{align-items:center;gap:var(--space-3);font-size:var(--fs-base);color:var(--color-text-muted);display:flex}.fd-shell>.topbar .meta .tri-count{font-variant-numeric:tabular-nums}.fd-shell>.topbar .error{color:var(--color-error)}.fd-shell>.fd-workspace{flex-direction:column;flex:1;min-height:0;display:flex}.fd-shell>.fd-workspace[hidden]{display:none}.fd-shell>.fd-workspace>.main{flex:1;min-height:0;display:flex;position:relative}.fd-shell>.fd-script-workspace{overflow:hidden}.fd-nav-scrim{z-index:40;background:#00000059;position:absolute;inset:0}@media (width<=768px){.fd-shell>.topbar .nav-toggle{min-width:44px;min-height:44px;display:inline-flex}.fd-shell>.topbar .title .brand,.fd-shell>.topbar .title .version,.fd-shell>.topbar .meta .tri-count{display:none}.fd-shell>.topbar .fd-bell{display:none}.fd-shell>.fd-workspace>.main{overflow:hidden}}@media (width>=769px){.fd-nav-scrim{display:none}}.fd-help-overlay{z-index:1000;background:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.fd-help-panel{background:var(--color-bg-elevated);border-radius:var(--radius-md);padding:var(--space-6);box-shadow:var(--shadow-lg,0 8px 32px #0003);width:90%;max-width:480px}.fd-help-panel h2{margin:0 0 var(--space-4);font-size:var(--fs-lg);font-weight:var(--fw-semibold)}.fd-help-panel table{border-collapse:collapse;width:100%;font-size:var(--fs-base)}.fd-help-panel td{padding:var(--space-1) var(--space-3);border-bottom:1px solid var(--color-divider)}.fd-help-panel td:first-child{white-space:nowrap;color:var(--color-text-muted)}.fd-help-panel kbd{background:var(--color-surface-strong,#eee);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:1px var(--space-2);font-family:var(--font-family-mono,monospace);font-size:var(--fs-base)}.fd-help-panel button{margin-top:var(--space-4);background:var(--color-accent);color:var(--color-text-on-accent,white);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-5);font-size:var(--fs-base);cursor:pointer;border:none}.fd-toolbar{background:var(--color-bg-elevated);border-bottom:1px solid var(--color-border);min-height:var(--toolbar-height);align-items:center;display:flex;position:relative}.fd-toolbar .toolbar-tools{align-items:center;column-gap:var(--space-3);row-gap:var(--space-1);min-width:0;padding:var(--space-1) var(--space-3);flex-wrap:wrap;flex:1;display:flex}.fd-toolbar .toolbar-menu-toggle,.fd-toolbar .hidden-file-input{display:none}.fd-compact .fd-toolbar .tool{padding:var(--space-1) var(--space-2);font-size:var(--fs-base)}.fd-compact .fd-toolbar .tool-label,.fd-compact .fd-toolbar .label{display:none}.fd-toolbar .sketch-plane-dropdown{gap:var(--space-1);padding:var(--space-1);background:var(--color-surface-strong,#eee);border-radius:var(--radius-sm);display:flex}.fd-toolbar .split-button{align-items:stretch;display:inline-flex;position:relative}.fd-toolbar .split-button>.tool.primary{border-right:none;border-top-right-radius:0;border-bottom-right-radius:0}.fd-toolbar .split-button>.tool.chevron{padding-left:var(--space-2);padding-right:var(--space-2);border-left:1px solid var(--color-border);font-size:var(--fs-base);border-top-left-radius:0;border-bottom-left-radius:0}.fd-toolbar .split-button>.split-dropdown{z-index:20;background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-md);min-width:10rem;box-shadow:var(--shadow-lg,0 8px 24px #0000001f);padding:var(--space-1) 0;flex-direction:column;display:flex;position:fixed}.fd-toolbar .split-button>.split-dropdown.is-collapsed{opacity:0;top:-9999px;left:-9999px}.fd-toolbar .split-button>.split-dropdown .split-row{text-align:left;padding:var(--space-2) var(--space-3);cursor:pointer;align-items:center;gap:var(--space-3);font-size:var(--fs-base);color:var(--color-text);background:0 0;border:none;font-family:inherit;display:flex}.fd-toolbar .split-button>.split-dropdown .split-row .glyph{width:1.25rem;color:var(--color-text-muted);justify-content:center;display:inline-flex}.fd-toolbar .split-button>.split-dropdown .split-row:hover{background:var(--color-bg-hover)}.fd-toolbar .split-button>.split-dropdown .split-row.is-active{background:var(--color-accent-soft);color:var(--color-text)}.fd-toolbar .split-button>.split-dropdown .split-row.is-active .glyph{color:var(--color-accent)}.fd-toolbar .group{align-items:center;gap:var(--space-1);padding-right:var(--space-3);border-right:1px solid var(--color-divider);flex-wrap:wrap;display:flex}.fd-toolbar .group:last-child{border-right:none;padding-right:0}.fd-toolbar .tool-sep{width:1px;min-height:var(--space-5);margin:0 var(--space-1);background:var(--color-divider);align-self:stretch}.fd-toolbar .label{font-size:var(--fs-base);color:var(--color-text-muted);margin-right:var(--space-1)}.fd-toolbar .sketch-chip{font-size:var(--fs-base);font-weight:var(--fw-medium);color:var(--color-accent);background:var(--color-accent-soft);border-radius:var(--radius-sm);padding:var(--space-1) var(--space-2);white-space:nowrap;flex-shrink:0;align-self:center}.fd-toolbar .dof{font-size:var(--fs-base);font-weight:var(--fw-medium);color:var(--color-text-muted);white-space:nowrap;margin-left:auto}.fd-toolbar .dof.is-ok{color:var(--color-success-text)}.fd-toolbar .dof.is-over{color:var(--color-error-text)}.fd-toolbar .tool{align-items:center;gap:var(--space-1);background:var(--color-bg);color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-1) var(--space-2);font-size:var(--fs-base);max-height:calc(var(--toolbar-height) - var(--space-2));box-sizing:border-box;cursor:pointer;transition:background var(--motion-fast), border-color var(--motion-fast);line-height:1;display:inline-flex}.fd-toolbar .tool>.glyph{font-size:var(--fs-base);flex-shrink:0;justify-content:center;align-items:center;width:1.125rem;height:1.125rem;line-height:1;display:inline-flex;overflow:hidden}.fd-toolbar .tool:hover:not(:disabled){background:var(--color-bg-hover);border-color:var(--color-border-strong)}.fd-toolbar .tool:active:not(:disabled){background:var(--color-bg-active)}.fd-toolbar .tool:disabled{opacity:.45;cursor:not-allowed}.fd-toolbar .tool.is-primary{background:var(--color-accent);color:var(--color-text-on-accent);border-color:var(--color-accent)}.fd-toolbar .tool.is-primary:hover:not(:disabled){background:var(--color-accent);filter:brightness(1.05)}.fd-toolbar .tool.is-active{background:var(--color-accent);color:var(--color-text-on-accent);border-color:var(--color-accent)}.fd-toolbar .sketch-tool-row{gap:var(--space-2);flex-wrap:wrap}.fd-toolbar .corner-op-input{align-items:center;gap:var(--space-1);color:var(--color-text-muted);font-size:1rem;display:inline-flex}.fd-toolbar .corner-op-input input{width:4rem;padding:var(--space-1) var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg-elevated);color:var(--color-text);font-size:1rem}.fd-toolbar .corner-op-input input[type=text]{width:9rem}.fd-toolbar .corner-op-input select{padding:var(--space-1) var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg-elevated);color:var(--color-text);font-size:1rem}.fd-toolbar .corner-op-input input[type=file]{width:auto;max-width:11rem;font-size:1rem}.fd-toolbar .spline-mode{gap:var(--space-1);align-items:center;display:inline-flex}.fd-toolbar .tool.constraint-tool>.glyph{overflow:visible}.fd-toolbar .tool.constraint-tool>.glyph svg{width:100%;height:100%;display:block}.fd-toolbar.is-mobile .toolbar-menu-toggle{align-items:center;gap:var(--space-2);margin:var(--space-1) var(--space-3);padding:var(--space-1) var(--space-3);min-height:var(--touch-target);background:var(--color-bg);min-width:9rem;color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--fs-base);cursor:pointer;font-family:inherit;display:inline-flex}.fd-toolbar.is-mobile .toolbar-menu-toggle .glyph{width:1.125rem;font-size:var(--fs-base);justify-content:center;align-items:center;line-height:1;display:inline-flex}.fd-toolbar.is-mobile .toolbar-menu-toggle .caret{color:var(--color-text-muted);font-size:var(--fs-base);margin-left:auto;line-height:1}.fd-toolbar.is-mobile .toolbar-menu-toggle:active{background:var(--color-bg-active)}.fd-toolbar.is-mobile .toolbar-tools{z-index:30;background:var(--color-bg-elevated);border-bottom:1px solid var(--color-border);max-height:70vh;box-shadow:var(--shadow-lg,0 8px 24px #0000001f);flex-flow:column;flex:none;align-items:stretch;display:none;position:absolute;top:100%;left:0;right:0;overflow-y:auto}.fd-toolbar.is-mobile.is-menu-open .toolbar-tools{display:flex}.fd-toolbar.is-mobile .group{border-right:none;border-bottom:1px solid var(--color-divider);padding:var(--space-2) 0}.fd-toolbar.is-mobile .group:last-child{border-bottom:none}@media (width<=768px){.fd-toolbar .tool{min-height:var(--touch-target);max-height:none}}.fd-context-menu{z-index:1000;background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-md);min-width:200px;box-shadow:var(--shadow-lg,0 8px 24px #0000001f);padding:var(--space-1) 0;flex-direction:column;display:flex;position:fixed}.fd-context-menu .menu-item{text-align:left;padding:var(--space-2) var(--space-4);font-size:var(--fs-base);cursor:pointer;color:var(--color-text);background:0 0;border:none;font-family:inherit}.fd-context-menu .menu-item:hover{background:var(--color-bg-hover)}.fd-context-menu .menu-item.is-danger{color:var(--color-difference,#b91c1c)}.fd-context-menu .menu-item.is-danger:hover{background:color-mix(in srgb, var(--color-difference,#b91c1c) 10%, transparent)}.fd-context-menu .menu-sep{background:var(--color-divider);height:1px;margin:var(--space-1) 0}.fd-outliner{width:var(--outliner-width);flex:0 0 var(--outliner-width);background:var(--color-bg-elevated);border-left:1px solid var(--color-border);flex-direction:column;display:flex;position:relative;overflow-y:auto}.fd-outliner>.splitter{cursor:col-resize;z-index:5;touch-action:none;-webkit-user-select:none;user-select:none;background:0 0;width:7px;height:100%;transition:background .12s;position:absolute;top:0;left:-3px}.fd-outliner>.splitter:hover,.fd-outliner>.splitter:active{background:var(--color-accent,#3b82f6);opacity:.25}.fd-outliner .header{padding:var(--space-3) var(--space-4);font-size:var(--fs-base);font-weight:var(--fw-semibold);color:var(--color-text);border-bottom:1px solid var(--color-divider);background:var(--color-bg-elevated)}.fd-outliner .accordion-header{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:var(--space-2);transition:background var(--motion-fast);display:flex}.fd-outliner .accordion-header:hover{background:var(--color-bg-hover)}.fd-outliner .accordion-chevron{color:var(--color-text-muted);flex-shrink:0;justify-content:center;width:1rem;display:inline-flex}.fd-outliner .empty{padding:var(--space-4);font-size:var(--fs-base);color:var(--color-text-subtle);font-style:italic}.fd-outliner .detail-actions{gap:var(--space-1);margin-left:auto;display:inline-flex}.fd-outliner .detail-ok,.fd-outliner .detail-cancel{cursor:pointer;font-size:var(--fs-md);padding:var(--space-1);border-radius:var(--radius-sm);transition:background var(--motion-fast);background:0 0;border:none;line-height:1}:is(.fd-outliner .detail-ok,.fd-outliner .detail-cancel):hover{background:var(--color-bg-hover)}.fd-outliner .detail-ok{color:var(--color-union,#16a34a)}.fd-outliner .detail-cancel{color:var(--color-difference,#b91c1c)}.fd-outliner .part-tree{border-top:1px solid var(--color-divider);margin-top:auto}.fd-outliner .part-tree .list{margin:0;padding:0;list-style:none}.fd-outliner .part-tree .row{align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-4);cursor:pointer;font-size:var(--fs-base);border-bottom:1px solid var(--color-divider);display:flex}.fd-outliner .part-tree .row:hover{background:var(--color-bg-hover,color-mix(in srgb, var(--color-accent) 8%, transparent))}.fd-outliner .part-tree .row.is-selected{background:var(--color-ui-selection)}.fd-outliner .part-tree .row .swatch{border-radius:var(--radius-sm);background:var(--color-text-muted);flex:none;width:.75rem;height:.75rem}.fd-outliner .part-tree .row .swatch[data-body-index="0"]{background:#3b82f6}.fd-outliner .part-tree .row .swatch[data-body-index="1"]{background:#ef4444}.fd-outliner .part-tree .row .swatch[data-body-index="2"]{background:#10b981}.fd-outliner .part-tree .row .swatch[data-body-index="3"]{background:#f59e0b}.fd-outliner .part-tree .row .swatch[data-body-index="4"]{background:#8b5cf6}.fd-outliner .part-tree .row .swatch[data-body-index="5"]{background:#ec4899}.fd-outliner .part-tree .row .kind{font-size:var(--fs-base)}.fd-outliner .part-tree .row .name{white-space:nowrap;text-overflow:ellipsis;min-width:0;color:var(--color-text);flex:1;overflow:hidden}.fd-outliner .part-tree .row .triangle-count{font-family:var(--font-family-mono);font-size:var(--fs-sm,.85rem);color:var(--color-text-subtle)}.fd-outliner .variables-panel{border-bottom:1px solid var(--color-divider)}.fd-outliner .variables-panel .list .row{align-items:stretch;gap:var(--space-1);flex-direction:column;display:flex}.fd-outliner .variables-panel .variable-controls{align-items:center;gap:var(--space-1);display:flex}.fd-outliner .variables-panel .variable-name{font-family:var(--font-mono,monospace);flex:1}.fd-outliner .variables-panel .variable-name,.fd-outliner .variables-panel .variable-value,.fd-outliner .variables-panel .variable-name-input,.fd-outliner .variables-panel .variable-value-input{padding:var(--space-1) var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);font-size:var(--fs-base);min-width:0}.fd-outliner .variables-panel .variable-value-cell{align-items:baseline;gap:var(--space-1);flex:1;min-width:0;display:flex}.fd-outliner .variables-panel .variable-value{min-width:0;font-family:var(--font-mono,monospace);flex:1}.fd-outliner .variables-panel .variable-value.has-error{border-color:var(--color-error)}.fd-outliner .variables-panel .variable-resolved{color:var(--color-text-muted);font-size:var(--fs-base);white-space:nowrap}.fd-outliner .variables-panel .variable-error{color:var(--color-error-text,var(--color-error));font-size:var(--fs-base);padding-left:var(--space-1)}.fd-outliner .variables-panel .variables-add{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4) 0;display:flex}.fd-outliner .variables-panel .variables-add .variable-name-input{flex:0 0 6rem}.fd-outliner .variables-panel .variables-add .variable-value-input{min-width:0;font-family:var(--font-mono,monospace);flex:1}.fd-outliner .variables-panel .variables-add .variable-value-input.has-error{border-color:var(--color-error)}.fd-outliner .variables-panel .variables-add .apply{background:var(--color-accent);color:var(--color-text-on-accent,white);border-radius:var(--radius-sm);padding:var(--space-1) var(--space-3);font-size:var(--fs-base);cursor:pointer;border:none}.fd-outliner .list{margin:0;padding:0;list-style:none}.fd-outliner .row{align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-4);font-size:var(--fs-base);cursor:pointer;border-bottom:1px solid var(--color-divider);-webkit-user-select:none;user-select:none;transition:background var(--motion-fast);display:flex;position:relative}.fd-outliner .row:hover{background:var(--color-bg-hover)}.fd-outliner .row.is-selected{background:var(--color-ui-selection)}.fd-outliner .row.is-dragging{opacity:.4}.fd-outliner .row.drop-above:before{content:"";left:var(--space-4);right:var(--space-4);background:var(--color-accent);pointer-events:none;height:2px;position:absolute;top:0}.fd-outliner .row.drop-below:after{content:"";left:var(--space-4);right:var(--space-4);background:var(--color-accent);pointer-events:none;height:2px;position:absolute;bottom:0}.fd-outliner .row .row-delete{opacity:0;pointer-events:none;transition:opacity var(--motion-fast)}.fd-outliner .row:hover .row-delete{opacity:1;pointer-events:auto}.fd-outliner .datum-row{cursor:pointer}.fd-outliner .datum-row .kind{color:var(--color-text-muted)}.fd-outliner .row-datum-visible,.fd-outliner .row-sketch-visible{cursor:pointer;color:var(--color-text-subtle);font-size:var(--fs-base);padding:0 var(--space-1);transition:color var(--motion-fast);background:0 0;border:none;margin-left:auto;line-height:1}:is(.fd-outliner .row-datum-visible,.fd-outliner .row-sketch-visible).is-visible{color:var(--color-accent)}:is(.fd-outliner .row-datum-visible,.fd-outliner .row-sketch-visible):hover{color:var(--color-text)}.fd-outliner .features-header{justify-content:space-between;align-items:center;gap:var(--space-2);display:flex}.fd-outliner .features-header .new-folder-btn{border-radius:var(--radius-sm);color:var(--color-text-subtle);cursor:pointer;padding:var(--space-1) var(--space-2);font-size:var(--fs-base);transition:all var(--motion-fast);background:0 0;border:1px solid #0000;align-items:center;gap:.125rem;line-height:1;display:flex}.fd-outliner .features-header .new-folder-btn:hover{color:var(--color-text);background:var(--color-surface-strong);border-color:var(--color-border)}.fd-outliner .features-header .new-folder-btn .folder-glyph{font-size:var(--fs-md)}.fd-outliner .features-header .new-folder-btn .plus-glyph{font-size:var(--fs-sm,.8rem);font-weight:var(--fw-semibold)}.fd-outliner .folder-group{border-bottom:1px solid var(--color-divider);list-style:none}.fd-outliner .folder-group.drag-over>.folder-header{background:var(--color-accent-soft);box-shadow:inset 0 0 0 2px var(--color-accent)}.fd-outliner .folder-group .folder-header{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);background:var(--color-bg-elevated);cursor:default;-webkit-user-select:none;user-select:none;display:flex}.fd-outliner .folder-group .folder-header .chevron{color:var(--color-text-muted);cursor:pointer;font-size:var(--fs-base);padding:0 var(--space-1);background:0 0;border:none;line-height:1}.fd-outliner .folder-group .folder-header .folder-icon{font-size:var(--fs-md)}.fd-outliner .folder-group .folder-header .folder-name{font-weight:var(--fw-semibold);font-size:var(--fs-base);color:var(--color-text);white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.fd-outliner .folder-group .folder-header .folder-name-input{font-size:var(--fs-base);font-weight:var(--fw-semibold);padding:var(--space-1) var(--space-2);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);flex:1;min-width:0}.fd-outliner .folder-group .folder-header .folder-count{font-size:var(--fs-sm,.85rem);color:var(--color-text-subtle);font-family:var(--font-family-mono)}.fd-outliner .folder-group .folder-header .folder-delete{color:var(--color-text-subtle);font-size:var(--fs-lg);cursor:pointer;padding:0 var(--space-2);opacity:0;transition:opacity var(--motion-fast);background:0 0;border:none}.fd-outliner .folder-group .folder-header:hover .folder-delete{opacity:1}.fd-outliner .folder-group .folder-members{padding:0 0 0 var(--space-5);background:var(--color-surface);margin:0;list-style:none}.fd-outliner .op{border-radius:var(--radius-sm);width:1.75rem;height:1.75rem;font-family:inherit;font-size:var(--fs-base);font-weight:var(--fw-semibold);cursor:pointer;color:var(--color-text-on-accent);border:none;flex-shrink:0;justify-content:center;align-items:center;display:flex}.fd-outliner .op.op-union{background:var(--color-union)}.fd-outliner .op.op-difference{background:var(--color-difference)}.fd-outliner .op.op-intersect{background:var(--color-intersect)}.fd-outliner .kind{text-align:center;width:1.25rem;color:var(--color-text-muted);font-size:var(--fs-md);flex-shrink:0}.fd-outliner .feature-name{white-space:nowrap;text-overflow:ellipsis;font-size:var(--fs-base);flex:1;overflow:hidden}.fd-outliner .feature-name.is-editable{cursor:text;border-radius:var(--radius-sm);padding:0 var(--space-1);margin:0 calc(-1 * var(--space-1))}.fd-outliner .feature-name.is-editable:hover{background:var(--color-surface);outline:1px solid var(--color-border)}.fd-outliner .feature-name-input{font-size:var(--fs-base);padding:var(--space-1) var(--space-2);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);flex:1;min-width:0}.fd-outliner .feature-meta{font-size:var(--fs-base);color:var(--color-text-subtle);margin-left:var(--space-2)}.fd-outliner .row.is-suppressed{opacity:.5}.fd-outliner .row.is-suppressed .feature-name,.fd-outliner .row.is-suppressed .kind{text-decoration:line-through}.fd-outliner .row.has-error .feature-name,.fd-outliner .row.has-error .kind{color:var(--color-error)}.fd-outliner .row.has-warning .feature-name,.fd-outliner .row.has-warning .kind{color:var(--color-warning)}.fd-outliner .row.is-rolled-back{opacity:.45}.fd-outliner .row.is-rolled-back .feature-name{font-style:italic}.fd-outliner .row.rollback-drop-above:before{content:"";background:var(--color-accent);border-radius:2px;height:3px;position:absolute;top:-1px;left:0;right:0}.fd-outliner .row.rollback-drop-below:after{content:"";background:var(--color-accent);border-radius:2px;height:3px;position:absolute;bottom:-1px;left:0;right:0}.fd-outliner .rollback-bar{background:var(--color-border-strong);cursor:grab;height:.4em;margin:var(--space-1) .5rem;border-radius:2px;flex-shrink:0;transition:opacity .12s;position:relative}.fd-outliner .rollback-bar:hover{opacity:.8}.fd-outliner .rollback-bar.is-dragging{opacity:.4;cursor:grabbing}.fd-outliner .row-suppress{color:var(--color-text-subtle);font-size:var(--fs-base);cursor:pointer;padding:0 var(--space-1);border-radius:var(--radius-sm);transition:color var(--motion-fast), background var(--motion-fast);background:0 0;border:none;line-height:1}.fd-outliner .row-suppress:hover{color:var(--color-text);background:var(--color-surface-strong)}.fd-outliner .row-reorder{color:var(--color-text-subtle);font-size:var(--fs-base);cursor:pointer;padding:0 var(--space-1);border-radius:var(--radius-sm);transition:color var(--motion-fast), background var(--motion-fast);background:0 0;border:none;line-height:1}.fd-outliner .row-reorder:hover{color:var(--color-text);background:var(--color-surface-strong)}.fd-outliner .row-delete{color:var(--color-text-subtle);font-size:var(--fs-lg);cursor:pointer;padding:0 var(--space-1);border-radius:var(--radius-sm);transition:color var(--motion-fast), background var(--motion-fast);background:0 0;border:none;line-height:1}.fd-outliner .row-delete:hover{color:var(--color-error);background:var(--color-difference-soft)}.fd-outliner .detail-panel .detail-title-input{min-width:0;font-size:var(--fs-base);color:var(--color-text);border-radius:var(--radius-sm);padding:var(--space-1) var(--space-2);background:0 0;border:1px solid #0000;flex:1;font-weight:600}.fd-outliner .detail-panel .detail-title-input:hover{border-color:var(--color-border)}.fd-outliner .detail-panel .detail-title-input:focus{background:var(--color-surface);border-color:var(--color-border-strong);outline:none}.fd-outliner .detail-panel .detail-title-input.has-error{color:var(--color-error)}.fd-outliner .detail-panel .actions{gap:var(--space-2);padding:var(--space-2) var(--space-4) var(--space-3);display:flex}.fd-outliner .detail-panel .apply,.fd-outliner .detail-panel .clear{font-size:var(--fs-base);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);border:1px solid var(--color-border);cursor:pointer;background:var(--color-bg)}:is(.fd-outliner .detail-panel .apply,.fd-outliner .detail-panel .clear):hover{background:var(--color-bg-hover)}.fd-outliner .detail-panel .apply{background:var(--color-accent);color:var(--color-text-on-accent);border-color:var(--color-accent)}.fd-outliner .detail-panel .elements-header{padding:var(--space-2) var(--space-4);font-size:var(--fs-base);font-weight:var(--fw-semibold);color:var(--color-text-muted);border-top:1px solid var(--color-divider);text-transform:uppercase;letter-spacing:.04em}.fd-outliner .detail-panel .sub-spine{border-top:1px solid var(--color-divider);margin:0;padding:0;list-style:none}.fd-outliner .detail-panel .sub-spine .row{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);font-size:var(--fs-base);border-bottom:1px solid var(--color-divider);cursor:pointer;transition:background var(--motion-fast);display:flex}.fd-outliner .detail-panel .sub-spine .row:hover{background:var(--color-bg-hover,var(--color-accent-soft))}.fd-outliner .detail-panel .sub-spine .row.is-active{background:var(--color-accent-soft);box-shadow:inset 3px 0 0 var(--color-accent)}.fd-outliner .detail-panel .sub-spine .kind{font-family:var(--font-mono,monospace);color:var(--color-text);flex:1}.fd-outliner .detail-panel .sub-spine .row.is-constraint .kind{color:var(--color-accent);font-style:italic}.fd-outliner .detail-panel .sub-spine .row.is-construction .kind{color:var(--color-construction);text-underline-offset:3px;-webkit-text-decoration:underline dashed;text-decoration:underline dashed}.fd-outliner .detail-panel .sub-spine .row-construction{cursor:pointer;padding:0 var(--space-1);font-size:var(--fs-base);color:var(--color-text-muted);opacity:.5;transition:opacity var(--motion-fast), color var(--motion-fast);background:0 0;border:none;flex:none}.fd-outliner .detail-panel .sub-spine .row-construction:hover{opacity:1}.fd-outliner .detail-panel .sub-spine .row-construction.is-active{color:var(--color-construction);opacity:1}.fd-outliner .detail-panel .sub-spine .badge{font-size:var(--fs-base);font-weight:var(--fw-semibold);padding:2px var(--space-2);border-radius:var(--radius-pill);text-transform:lowercase;letter-spacing:.02em;flex:none;line-height:1}.fd-outliner .detail-panel .sub-spine .badge.is-conflict{color:var(--color-error-text);background:var(--color-error-soft,#b53b3b24)}.fd-outliner .detail-panel .sub-spine .badge.is-redundant{color:var(--color-warning);background:var(--color-warning-soft,#b0782024)}.fd-outliner .detail-panel .sub-spine .diagnostics-summary{padding:var(--space-2) var(--space-4);font-size:var(--fs-base);font-weight:var(--fw-semibold);color:var(--color-warning);border-bottom:1px solid var(--color-divider)}.fd-outliner .detail-panel .sub-spine .diagnostics-summary.has-conflict{color:var(--color-error-text)}.fd-outliner .detail-panel .constraint-manager{border-top:1px solid var(--color-divider)}.fd-outliner .detail-panel .constraint-manager .header{padding:var(--space-2) var(--space-4);font-weight:var(--fw-semibold);font-size:var(--fs-base);justify-content:space-between;align-items:center;display:flex}.fd-outliner .detail-panel .constraint-manager .dof-badge{font-size:var(--fs-sm,.85rem);font-weight:var(--fw-normal,400);padding:1px var(--space-2);border-radius:var(--radius-sm)}.fd-outliner .detail-panel .constraint-manager .dof-badge.dof-under{color:var(--color-info,#2563eb);background:var(--color-info-soft,#dbeafe)}.fd-outliner .detail-panel .constraint-manager .dof-badge.dof-full{color:var(--color-success,#16a34a);background:var(--color-success-soft,#dcfce7)}.fd-outliner .detail-panel .constraint-manager .dof-badge.dof-over{color:var(--color-danger,#dc2626);background:var(--color-danger-soft,#fee2e2)}.fd-outliner .detail-panel .constraint-manager .constraint-summary{align-items:center;gap:var(--space-2);padding:0 var(--space-4) var(--space-2);font-size:var(--fs-base);flex-wrap:wrap;display:flex}.fd-outliner .detail-panel .constraint-manager .constraint-summary .badge{background:var(--color-accent);color:var(--color-text-on-accent,white);border-radius:var(--radius-sm);padding:1px var(--space-2);font-size:var(--fs-sm,.85rem)}.fd-outliner .detail-panel .constraint-manager .constraint-list{margin:0;padding:0;list-style:none}.fd-outliner .detail-panel .constraint-manager .constraint-row{align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-4);font-size:var(--fs-base);display:flex}.fd-outliner .detail-panel .constraint-manager .constraint-row:hover{background:var(--color-bg-hover)}.fd-outliner .detail-panel .constraint-manager .constraint-row.is-driven{color:var(--color-text-muted);font-style:italic}.fd-outliner .detail-panel .constraint-manager .constraint-row .glyph{text-align:center;flex-shrink:0;width:1.25rem}.fd-outliner .detail-panel .constraint-manager .constraint-row .name{flex:1;min-width:0}.fd-outliner .detail-panel .constraint-manager .constraint-row .value{align-items:center;gap:var(--space-1);flex-shrink:0;display:inline-flex}.fd-outliner .detail-panel .constraint-manager .constraint-row .value .dim-input{text-align:right;width:4.5rem;font-family:inherit;font-size:var(--fs-base);color:var(--color-text);background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:0 var(--space-1)}.fd-outliner .detail-panel .constraint-manager .constraint-row .value .dim-input:hover:not(:disabled){border-color:var(--color-border-strong)}.fd-outliner .detail-panel .constraint-manager .constraint-row .value .dim-input:focus{border-color:var(--color-accent);outline:none}.fd-outliner .detail-panel .constraint-manager .constraint-row .value .dim-input:disabled{color:var(--color-text-muted);background:0 0;border-color:#0000}.fd-outliner .detail-panel .constraint-manager .constraint-row .value .unit{color:var(--color-text-muted);font-size:var(--fs-base)}.fd-outliner .detail-panel .constraint-manager .constraint-row .driven-tag{font-size:var(--fs-sm,.85rem);padding:0 var(--space-1);border-radius:var(--radius-sm);color:var(--color-success,#16a34a);flex-shrink:0}.fd-outliner .detail-panel .constraint-manager .constraint-row .driven-tag.is-driven{color:var(--color-text-muted);font-style:italic}.fd-outliner .detail-panel .constraint-manager .constraint-row .row-delete{cursor:pointer;color:var(--color-text-muted);font-size:var(--fs-base);padding:0 var(--space-1);opacity:0;background:0 0;border:none}.fd-outliner .detail-panel .constraint-manager .constraint-row .row-delete:hover{color:var(--color-danger,#dc2626)}.fd-outliner .detail-panel .constraint-manager .constraint-row:hover .row-delete{opacity:1}.fd-outliner .detail-panel .constraint-context-menu{z-index:1000;background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-md);min-width:180px;box-shadow:var(--shadow-lg,0 8px 24px #0000001f);padding:var(--space-1) 0}.fd-outliner .detail-panel .constraint-context-menu button{text-align:left;padding:var(--space-2) var(--space-4);font-size:var(--fs-base);cursor:pointer;color:var(--color-text);background:0 0;border:none;width:100%;font-family:inherit}.fd-outliner .detail-panel .constraint-context-menu button:hover{background:var(--color-bg-hover)}.fd-outliner .assembly-panel{border-top:1px solid var(--color-divider);padding:var(--space-3) 0}.fd-outliner .assembly-panel .header{padding:0 var(--space-4) var(--space-2);font-weight:var(--fw-semibold);font-size:var(--fs-base);justify-content:space-between;align-items:center;display:flex}.fd-outliner .assembly-panel .exit-btn{cursor:pointer;color:var(--color-text-muted);font-size:var(--fs-base);padding:var(--space-1);background:0 0;border:none}.fd-outliner .assembly-panel .exit-btn:hover{color:var(--color-danger,#dc2626)}.fd-outliner .assembly-panel .empty{padding:var(--space-2) var(--space-4);color:var(--color-text-muted);font-size:var(--fs-base)}.fd-outliner .assembly-panel .list{margin:0;padding:0;list-style:none}.fd-outliner .assembly-panel .row{align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-4);cursor:pointer;font-size:var(--fs-base);display:flex}.fd-outliner .assembly-panel .row:hover{background:var(--color-bg-hover)}.fd-outliner .assembly-panel .row.is-selected{background:var(--color-ui-selection)}.fd-outliner .assembly-panel .row .kind{text-align:center;flex-shrink:0;width:1.25rem}.fd-outliner .assembly-panel .row .name{flex:1;min-width:0}.fd-outliner .assembly-panel .row .meta{color:var(--color-text-muted);font-size:var(--fs-sm,.85rem)}.fd-outliner .assembly-panel .row .row-delete{cursor:pointer;color:var(--color-text-muted);opacity:0;background:0 0;border:none}.fd-outliner .assembly-panel .row .row-delete:hover{color:var(--color-danger,#dc2626)}.fd-outliner .assembly-panel .row:hover .row-delete{opacity:1}.fd-outliner .assembly-panel .tool{margin:var(--space-2) var(--space-4) 0;align-items:center;gap:var(--space-2);background:var(--color-bg);color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);font-size:var(--fs-base);cursor:pointer;display:inline-flex}.fd-outliner .assembly-panel .tool:hover{background:var(--color-bg-hover)}.fd-outliner .assembly-panel .tool:disabled{opacity:.45;cursor:not-allowed}.fd-outliner .assembly-panel .mate-slider{flex-shrink:0;width:60px}.fd-outliner .assembly-panel .mate-creator{padding:var(--space-2) var(--space-4);border-top:1px solid var(--color-divider)}.fd-outliner .assembly-panel .mate-creator .field{align-items:center;gap:var(--space-2);margin-bottom:var(--space-2);font-size:var(--fs-base);display:flex}.fd-outliner .assembly-panel .mate-creator .field label{min-width:4.5rem;color:var(--color-text-muted)}.fd-outliner .assembly-panel .mate-creator .field select{font-size:var(--fs-base);padding:var(--space-1) var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg);color:var(--color-text);flex:1}.fd-mesh-mode-toggle{padding:var(--space-2) var(--space-3);font-size:var(--fs-base);color:var(--color-text-muted)}.fd-mesh-mode-toggle label{align-items:center;gap:var(--space-2);cursor:pointer;display:flex}.fd-mesh-mode-toggle input[type=checkbox]{accent-color:var(--color-accent)}@media (width<=768px){.fd-outliner{z-index:50;flex:none;width:min(85vw,20rem);height:100%;position:absolute;top:0;right:0;transform:translate(100%);box-shadow:-8px 0 24px #0000002e}.fd-outliner.is-open{transform:none}.fd-outliner>.splitter{display:none}}.fd-element-info{border-bottom:1px solid var(--color-divider);border-left:3px solid var(--color-element-selection);background:var(--color-element-selection-soft)}.fd-element-info .header{padding:var(--space-2) var(--space-4);border-bottom:1px solid var(--color-divider);justify-content:space-between;align-items:center;display:flex}.fd-element-info .title{font-size:var(--fs-base);font-weight:var(--fw-semibold);color:var(--color-text)}.fd-element-info .close{cursor:pointer;font-size:var(--fs-base);padding:var(--space-1);color:var(--color-text-muted);border-radius:var(--radius-sm);background:0 0;border:none;line-height:1}.fd-element-info .close:hover{background:var(--color-bg-hover);color:var(--color-text)}.fd-element-info .body{padding:var(--space-2) var(--space-4) var(--space-3);gap:var(--space-1);flex-direction:column;margin:0;display:flex}.fd-element-info .row{align-items:baseline;gap:var(--space-2);-webkit-user-select:text;user-select:text;display:flex}.fd-element-info .row dt{font-size:var(--fs-base);color:var(--color-text-muted);flex:0 0 5.5rem}.fd-element-info .row dd{font-size:var(--fs-base);color:var(--color-text);overflow-wrap:anywhere;flex:1;margin:0}.fd-element-info .vec{font-family:var(--font-family-mono);font-size:var(--fs-base)}.fd-element-info .query{font-family:var(--font-family-mono);font-size:var(--fs-base);background:var(--color-bg-sunken);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:0 var(--space-1);color:var(--color-text)}.fd-element-info .unresolved{color:var(--color-text-muted);font-style:italic}.fd-element-info .actions{gap:var(--space-2);padding:0 var(--space-4) var(--space-3);flex-direction:column;display:flex}.fd-element-info .actions-title{font-size:var(--fs-base);font-weight:var(--fw-semibold);color:var(--color-text-muted)}.fd-element-info .action-buttons{gap:var(--space-2);flex-wrap:wrap;display:flex}.fd-element-info .action{background:var(--color-accent-soft);border:1px solid var(--color-accent);border-radius:var(--radius-sm);color:var(--color-accent);font-size:var(--fs-base);padding:var(--space-1) var(--space-2);cursor:pointer;line-height:1.2}.fd-element-info .action:hover{background:var(--color-accent);color:var(--color-text-on-accent)}.fd-viewport{background:var(--color-viewport-bg);touch-action:none;flex:1;min-width:0;position:relative}.fd-viewport canvas{touch-action:none}.fd-viewport>.select-rect{z-index:6;pointer-events:none;border:1px solid var(--color-accent);background:color-mix(in srgb, var(--color-accent) 12%, transparent);position:absolute}.fd-viewport>.select-rect.is-crossing{border-style:dashed;border-color:var(--color-warning);background:color-mix(in srgb, var(--color-warning) 10%, transparent)}.fd-viewport>.error{z-index:10;background:var(--color-bg);color:var(--color-error);font-family:var(--font-family-mono);font-size:var(--fs-base);padding:var(--space-4);text-align:center;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.fd-viewport>.error .webgpu-error{gap:var(--space-3);flex-direction:column;max-width:52ch;display:flex}.fd-viewport>.error .webgpu-error strong{font-size:var(--fs-lg)}.fd-viewport>.error .webgpu-error p{color:var(--color-text);margin:0;line-height:1.5}.fd-viewport>.fd-sketch-canvas{pointer-events:none;touch-action:none;width:100%;height:100%;position:absolute;inset:0}.fd-viewport>.fd-sketch-canvas.is-tool-active{pointer-events:auto;cursor:crosshair}.fd-viewport>.fd-sketch-canvas.is-select-mode{pointer-events:auto;cursor:default}.fd-viewport>.fd-sketch-canvas.is-query-pick{pointer-events:none}.fd-viewport>.pick-hud{clip-path:inset(50%);pointer-events:none;width:1px;height:1px;position:absolute;overflow:hidden}.fd-viewport>.measure-hud{bottom:var(--space-4);padding:var(--space-2) var(--space-5);background:var(--color-bg-elevated);border:1px solid var(--color-accent);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);font-family:var(--font-family-mono);font-size:var(--fs-lg);font-weight:var(--fw-semibold);color:var(--color-accent);pointer-events:none;position:absolute;left:50%;transform:translate(-50%)}.fd-viewport>.extrude-face-btn{bottom:calc(var(--space-4) + 2.5rem);padding:var(--space-2) var(--space-5);background:var(--color-accent);color:var(--color-text-on-accent,white);border-radius:var(--radius-md);font-size:var(--fs-base);font-weight:var(--fw-semibold);cursor:pointer;box-shadow:var(--shadow-sm);z-index:10;border:none;position:absolute;left:50%;transform:translate(-50%)}.fd-viewport>.extrude-face-btn:hover{filter:brightness(1.1)}.fd-viewport>.shader-compiling{justify-content:center;align-items:center;gap:var(--space-3);background:var(--color-bg);opacity:.85;pointer-events:none;z-index:5;font-family:var(--font-family-mono);font-size:var(--fs-base);color:var(--color-text-muted);flex-direction:column;display:flex;position:absolute;inset:0}.fd-viewport>.shader-compiling .spinner{border:3px solid var(--color-border);border-top-color:var(--color-accent);border-radius:50%;width:2rem;height:2rem;animation:.8s linear infinite fd-spin}.fd-viewport>.face-pick-hud{top:var(--space-4);padding:var(--space-2) var(--space-5);background:var(--color-bg-elevated);border:1px solid var(--color-accent);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);font-size:var(--fs-base);color:var(--color-accent);pointer-events:none;white-space:nowrap;position:absolute;left:50%;transform:translate(-50%)}.fd-viewport>.viewcube-wrapper{top:var(--space-4);right:var(--space-4);z-index:10;pointer-events:auto;width:80px;height:80px;position:absolute}.fd-viewport>.viewcube-wrapper .viewcube-scene{perspective:200px;width:100%;height:100%}.fd-viewport>.viewcube-wrapper .viewcube{width:50px;height:50px;transform-style:preserve-3d;margin:15px auto;position:relative}.fd-viewport>.viewcube-wrapper .viewcube-face{width:50px;height:50px;font-size:.625rem;font-weight:var(--fw-semibold);color:var(--color-text-muted);background:var(--color-bg-elevated);border:1px solid var(--color-border);cursor:pointer;-webkit-user-select:none;user-select:none;backface-visibility:hidden;justify-content:center;align-items:center;line-height:1;display:flex;position:absolute}.fd-viewport>.viewcube-wrapper .viewcube-face:hover{background:var(--color-accent-soft);color:var(--color-accent);border-color:var(--color-accent)}.fd-viewport>.viewcube-wrapper .viewcube-face.front{transform:translateZ(25px)}.fd-viewport>.viewcube-wrapper .viewcube-face.back{transform:rotateY(180deg)translateZ(25px)}.fd-viewport>.viewcube-wrapper .viewcube-face.top{transform:rotateX(90deg)translateZ(25px)}.fd-viewport>.viewcube-wrapper .viewcube-face.bottom{transform:rotateX(-90deg)translateZ(25px)}.fd-viewport>.viewcube-wrapper .viewcube-face.right{transform:rotateY(90deg)translateZ(25px)}.fd-viewport>.viewcube-wrapper .viewcube-face.left{transform:rotateY(-90deg)translateZ(25px)}@keyframes fd-spin{to{transform:rotate(360deg)}}.fd-feature-dialog{background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-3);gap:var(--space-3);font-size:var(--fs-base);color:var(--color-text);flex-direction:column;display:flex}.fd-feature-dialog .header{align-items:center;gap:var(--space-2);padding-bottom:var(--space-2);border-bottom:1px solid var(--color-divider);display:flex}.fd-feature-dialog .title{font-size:var(--fs-md);font-weight:var(--fw-semibold);color:var(--color-text)}.fd-feature-dialog .title.has-error{color:var(--color-error)}.fd-feature-dialog .title{text-transform:capitalize;align-items:center;gap:var(--space-2);flex:1;display:flex}.fd-feature-dialog .header-actions{gap:var(--space-1);display:flex}.fd-feature-dialog .header-action{font-size:var(--fs-base);padding:var(--space-1) var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg-elevated);cursor:pointer;font-family:inherit;line-height:1}.fd-feature-dialog .header-action:hover{background:var(--color-bg-hover)}.fd-feature-dialog .header-action.commit{color:var(--color-text-on-accent);background:var(--color-success);border-color:var(--color-success)}.fd-feature-dialog .header-action.commit:hover{filter:brightness(1.05)}.fd-feature-dialog .header-action.cancel{color:var(--color-text-on-accent);background:var(--color-error);border-color:var(--color-error)}.fd-feature-dialog .header-action.cancel:hover{filter:brightness(1.05)}.fd-feature-dialog .body{gap:var(--space-3);flex-direction:column;display:flex}.fd-feature-dialog .field{gap:var(--space-1);flex-direction:column;display:flex}.fd-feature-dialog .field-inline{flex-direction:row;align-items:center}.fd-feature-dialog .label{font-size:var(--fs-base);color:var(--color-text-muted);font-weight:var(--fw-medium)}.fd-feature-dialog .required{color:var(--color-accent);margin-left:var(--space-1)}.fd-feature-dialog .input,.fd-feature-dialog .select,.fd-feature-dialog .textarea{font-family:var(--font-family-sans);font-size:var(--fs-base);padding:var(--space-1) var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg);color:var(--color-text);min-width:0}.fd-feature-dialog .textarea{font-family:var(--font-family-mono);resize:vertical}.fd-feature-dialog .formula-input{font-family:var(--font-family-mono);resize:vertical;width:100%;min-height:3.5rem;line-height:1.4}.fd-feature-dialog .formula-hint{margin:var(--space-1) 0 0;font-size:var(--fs-base);color:var(--color-text-subtle);line-height:1.35}.fd-feature-dialog .input:focus,.fd-feature-dialog .select:focus,.fd-feature-dialog .textarea:focus{outline:2px solid var(--color-accent);outline-offset:1px}.fd-feature-dialog .vec-row{gap:var(--space-1);flex-direction:column;display:flex}.fd-feature-dialog .vec-cell{align-items:center;gap:var(--space-2);min-width:0;display:flex}.fd-feature-dialog .axis-tag{font-size:var(--fs-base);color:var(--color-text-muted);font-weight:var(--fw-medium);flex-shrink:0;line-height:1}.fd-feature-dialog .input-with-unit{min-width:0;display:flex;position:relative}.fd-feature-dialog .input-with-unit>.input{width:100%;padding-right:2.2em}.fd-feature-dialog .input-with-unit .unit-suffix{right:var(--space-2);color:var(--color-text-muted);pointer-events:none;font-size:var(--fs-base);line-height:1;position:absolute;top:50%;transform:translateY(-50%)}.fd-feature-dialog .unit-row{gap:var(--space-2);grid-template-columns:1fr auto;display:grid}.fd-feature-dialog .input.is-formula{font-family:var(--font-family-mono);color:var(--color-accent)}.fd-feature-dialog .query-input{font-family:var(--font-family-mono)}.fd-feature-dialog .query-picker{align-items:stretch;gap:var(--space-1);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg-elevated);transition:border-color .12s,box-shadow .12s;display:flex}.fd-feature-dialog .query-picker .query-focus-toggle{padding:0 var(--space-2);color:var(--color-text-muted);font-size:var(--fs-base);cursor:pointer;border:none;border-right:1px solid var(--color-border);background:0 0;flex:none}.fd-feature-dialog .query-picker .query-focus-toggle:hover{color:var(--color-accent)}.fd-feature-dialog .query-picker .query-focus-toggle[aria-pressed=true]{color:var(--color-accent);background:color-mix(in srgb, var(--color-accent) 10%, transparent)}.fd-feature-dialog .query-picker .query-input{padding:var(--space-1) var(--space-2);background:0 0;border:none;flex:1}.fd-feature-dialog .query-picker .query-input:focus{outline:none}.fd-feature-dialog .query-picker.is-active{border-color:var(--color-accent);box-shadow:0 0 0 2px color-mix(in srgb, var(--color-accent) 25%, transparent)}.fd-feature-dialog .query-picker.multi{min-height:2rem;padding:var(--space-1);gap:var(--space-1);flex-wrap:wrap}.fd-feature-dialog .query-picker .query-chips{gap:var(--space-1);flex-wrap:wrap;flex:1;align-items:center;min-height:1.5rem;display:flex}.fd-feature-dialog .query-picker .query-chips-empty{color:var(--color-text-muted);font-size:var(--fs-base);padding:0 var(--space-1)}.fd-feature-dialog .query-picker .query-chip{align-items:center;gap:var(--space-1);padding:2px var(--space-2);background:color-mix(in srgb, var(--color-accent) 15%, transparent);border:1px solid color-mix(in srgb, var(--color-accent) 30%, transparent);border-radius:var(--radius-pill,999px);font-size:var(--fs-base);color:var(--color-text);line-height:1.4;display:inline-flex}.fd-feature-dialog .query-picker .chip-remove{color:var(--color-text-muted);cursor:pointer;font-size:var(--fs-base);background:0 0;border:none;padding:0 2px;line-height:1}.fd-feature-dialog .query-picker .chip-remove:hover{color:var(--color-error)}.fd-feature-dialog .error{font-size:var(--fs-base);color:var(--color-error)}.fd-feature-dialog .tab-row{border:1px solid var(--color-border);border-radius:var(--radius-sm);grid-auto-columns:1fr;grid-auto-flow:column;gap:0;display:grid;overflow:hidden}.fd-feature-dialog .tab{font-family:inherit;font-size:var(--fs-base);padding:var(--space-1) var(--space-2);background:var(--color-bg);color:var(--color-text-muted);border:none;border-right:1px solid var(--color-border);cursor:pointer}.fd-feature-dialog .tab:last-child{border-right:none}.fd-feature-dialog .tab:hover{background:var(--color-bg-hover)}.fd-feature-dialog .tab.is-active{background:var(--color-accent-soft);color:var(--color-accent);font-weight:var(--fw-semibold)}.fd-feature-dialog .flip-button{font-family:inherit;font-size:var(--fs-md);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg);width:2rem;height:2rem;color:var(--color-text);cursor:pointer;padding:0;line-height:1}.fd-feature-dialog .flip-button:hover{background:var(--color-bg-hover)}.fd-feature-dialog .flip-button.is-flipped{background:var(--color-accent-soft);color:var(--color-accent);border-color:var(--color-accent)}.fd-feature-dialog .cycle-button{font-family:inherit;font-size:var(--fs-md);min-width:3.5rem;height:2rem;padding:0 var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg);color:var(--color-text);cursor:pointer;line-height:1}.fd-feature-dialog .cycle-button:hover{background:var(--color-bg-hover)}.fd-feature-dialog .slider-row{align-items:center;gap:var(--space-2);grid-template-columns:1fr auto;display:grid}.fd-feature-dialog .slider{width:100%}.fd-feature-dialog .slider-value{font-variant-numeric:tabular-nums;color:var(--color-text-muted);text-align:right;min-width:3ch}.fd-feature-dialog .color-row{align-items:center;gap:var(--space-2);display:flex}.fd-feature-dialog .color-swatch{border:1px solid var(--color-border);border-radius:var(--radius-sm);cursor:pointer;background:0 0;width:32px;height:32px;padding:0}.fd-feature-dialog .color-hex{font-variant-numeric:tabular-nums;font-size:var(--fs-base);color:var(--color-text);width:7.5em;font-family:var(--font-family-mono);padding:var(--space-1) var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg)}.fd-feature-dialog .color-hex:focus{outline:2px solid var(--color-accent);outline-offset:1px}.fd-feature-dialog .group{gap:var(--space-2);padding:var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg-sunken);flex-direction:column;display:flex}.fd-feature-dialog .group-header{align-items:center;gap:var(--space-2);display:flex}.fd-feature-dialog .group-header .chevron{color:var(--color-text-muted);text-align:center;width:1em}.fd-feature-dialog .group-header .label{color:var(--color-text);font-weight:var(--fw-medium)}.fd-feature-dialog .group-body{gap:var(--space-2);padding-left:var(--space-4);flex-direction:column;display:flex}.fd-feature-dialog .footer{gap:var(--space-2);padding-top:var(--space-2);border-top:1px solid var(--color-divider);flex-direction:column;display:flex}.fd-feature-dialog .tabs-widget .tab-bar{border-bottom:1px solid var(--color-divider);margin-bottom:var(--space-2);gap:0;display:flex}.fd-feature-dialog .tabs-widget .tab-bar .tab{padding:var(--space-2) var(--space-3);font-size:var(--fs-base);cursor:pointer;color:var(--color-text-muted);background:0 0;border:none;border-bottom:2px solid #0000;flex:1;font-family:inherit}.fd-feature-dialog .tabs-widget .tab-bar .tab.is-active{color:var(--color-accent);border-bottom-color:var(--color-accent);font-weight:var(--fw-semibold)}.fd-feature-dialog .tabs-widget .tab-bar .tab:hover:not(.is-active){color:var(--color-text)}.fd-feature-dialog .tabs-widget .tab-body{padding:0 var(--space-1)}.fd-settings-menu{align-items:center;display:inline-flex;position:relative}.fd-settings-menu .burger{cursor:pointer;font-size:var(--fs-lg);color:var(--color-text-muted);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);transition:background var(--motion-fast), color var(--motion-fast);background:0 0;border:none;line-height:1}.fd-settings-menu .burger:hover{background:var(--color-bg-hover);color:var(--color-text)}.fd-settings-menu .popover{top:calc(100% + var(--space-2));z-index:100;min-width:14rem;max-width:calc(100vw - var(--space-4));background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);padding:var(--space-1);flex-direction:column;display:flex;position:absolute;left:0}@media (width<=768px){.fd-settings-menu .popover{left:var(--space-2);right:var(--space-2);top:calc(var(--topbar-height) + var(--space-2));max-height:calc(100dvh - var(--topbar-height) - 2 * var(--space-2));overscroll-behavior:contain;position:fixed;overflow-y:auto}}.fd-settings-menu .menu-item{align-items:center;gap:var(--space-2);width:100%;padding:var(--space-2) var(--space-3);cursor:pointer;font-size:var(--fs-base);color:var(--color-text);text-align:left;border-radius:var(--radius-sm);transition:background var(--motion-fast);background:0 0;border:none;display:flex}.fd-settings-menu .menu-item:hover{background:var(--color-bg-hover)}.fd-settings-menu .menu-item:disabled{opacity:.4;cursor:default}.fd-settings-menu .menu-item:disabled:hover{background:0 0}.fd-settings-menu .menu-item.is-active{color:var(--color-accent);font-weight:var(--fw-medium)}.fd-settings-menu .menu-shortcut{font-size:var(--fs-base);color:var(--color-text-muted);margin-left:auto}.fd-settings-menu .menu-save{align-items:flex-start}.fd-settings-menu .save-text{flex-direction:column;gap:1px;min-width:0;display:flex}.fd-settings-menu .save-primary{align-items:center;gap:var(--space-2);display:inline-flex}.fd-settings-menu .save-filename{font-size:var(--fs-base);color:var(--color-text-muted);text-overflow:ellipsis;white-space:nowrap;max-width:12rem;overflow:hidden}.fd-settings-menu .dirty-dot{color:var(--color-warning);font-size:var(--fs-base);line-height:1}.fd-settings-menu .menu-separator{background:var(--color-divider);height:1px;margin:var(--space-1) 0}.fd-settings-menu .submenu-wrapper{position:relative}.fd-settings-menu .submenu-wrapper .submenu-trigger .menu-chevron{color:var(--color-text-muted);margin-left:auto}.fd-settings-menu .submenu-wrapper .submenu{background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-md);min-width:8rem;box-shadow:var(--shadow-lg);padding:var(--space-1);flex-direction:column;display:none;position:absolute;top:0;left:100%}.fd-settings-menu .submenu-wrapper:hover>.submenu,.fd-settings-menu .submenu-wrapper:focus-within>.submenu{display:flex}@media (width<=768px){.fd-settings-menu .submenu-wrapper .submenu{min-width:0;box-shadow:none;padding-left:var(--space-4);border:none;position:static}}.fd-settings-menu .submenu-wrapper:has(.submenu-trigger:disabled)>.submenu{display:none}.fd-settings-menu .hidden-file-input{display:none}.fd-settings-overlay{z-index:200;background:#00000040;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.fd-settings-dialog{background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);min-width:22rem;max-width:90vw}.fd-settings-dialog .dialog-header{padding:var(--space-4) var(--space-4) var(--space-2);justify-content:space-between;align-items:center;display:flex}.fd-settings-dialog .dialog-title{font-size:var(--fs-md);font-weight:var(--fw-semibold);color:var(--color-text);margin:0}.fd-settings-dialog .dialog-close{cursor:pointer;font-size:var(--fs-lg);color:var(--color-text-muted);padding:var(--space-1);border-radius:var(--radius-sm);background:0 0;border:none;line-height:1}.fd-settings-dialog .dialog-close:hover{background:var(--color-bg-hover);color:var(--color-text)}.fd-settings-dialog .settings-tab-bar{border-bottom:1px solid var(--color-divider);padding:0 var(--space-4);gap:0;display:flex}.fd-settings-dialog .settings-tab{padding:var(--space-2) var(--space-3);font-size:var(--fs-base);cursor:pointer;color:var(--color-text-muted);transition:color var(--motion-fast), border-color var(--motion-fast);background:0 0;border:none;border-bottom:2px solid #0000;flex:1;font-family:inherit}.fd-settings-dialog .settings-tab.is-active{color:var(--color-accent);border-bottom-color:var(--color-accent);font-weight:var(--fw-semibold)}.fd-settings-dialog .settings-tab:hover:not(.is-active){color:var(--color-text)}.fd-settings-dialog .dialog-body{padding:var(--space-3) var(--space-4) var(--space-4);gap:var(--space-3);flex-direction:column;max-height:70vh;display:flex;overflow-y:auto}.fd-settings-dialog .setting-row{justify-content:space-between;align-items:center;gap:var(--space-3);display:flex}.fd-settings-dialog .setting-label{font-size:var(--fs-base);color:var(--color-text)}.fd-settings-dialog .toggle{background:var(--color-bg-sunken);border:1px solid var(--color-border);border-radius:var(--radius-pill);padding:var(--space-1) var(--space-3);font-size:var(--fs-base);cursor:pointer;color:var(--color-text-muted);min-width:3.5rem;transition:background var(--motion-fast), color var(--motion-fast), border-color var(--motion-fast)}.fd-settings-dialog .toggle:hover{border-color:var(--color-border-strong)}.fd-settings-dialog .toggle.is-on{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-text-on-accent)}.fd-settings-dialog .segmented{border:1px solid var(--color-border);border-radius:var(--radius-md);display:inline-flex;overflow:hidden}.fd-settings-dialog .seg{background:var(--color-bg);padding:var(--space-1) var(--space-3);font-size:var(--fs-base);cursor:pointer;color:var(--color-text-muted);transition:background var(--motion-fast), color var(--motion-fast);border:none}.fd-settings-dialog .seg:not(:last-child){border-right:1px solid var(--color-border)}.fd-settings-dialog .seg:hover{background:var(--color-bg-hover)}.fd-settings-dialog .seg.is-active{background:var(--color-accent);color:var(--color-text-on-accent)}.fd-settings-dialog .setting-number{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-1) var(--space-3);font-size:var(--fs-base);color:var(--color-text);text-align:right;width:5rem}.fd-settings-dialog .setting-number:focus{outline:2px solid var(--color-accent);outline-offset:1px}.fd-settings-dialog .mode-select{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-1) var(--space-3);font-size:var(--fs-base);color:var(--color-text);cursor:pointer}.fd-settings-dialog .mode-select:hover{border-color:var(--color-border-strong)}.fd-settings-dialog .mode-select:focus{outline:2px solid var(--color-accent);outline-offset:1px}.fd-settings-dialog .setting-section{gap:var(--space-2);border-top:1px solid var(--color-divider);padding-top:var(--space-3);flex-direction:column;display:flex}.fd-settings-dialog .section-title{font-size:var(--fs-base);font-weight:var(--fw-semibold);color:var(--color-text)}.fd-settings-dialog .unit-group{gap:var(--space-1);flex-direction:column;display:flex}.fd-settings-dialog .unit-group-title{font-size:var(--fs-base);font-weight:var(--fw-medium);color:var(--color-text-muted)}.fd-settings-dialog .setting-group{gap:var(--space-1);flex-direction:column;display:flex}.fd-settings-dialog .setting-group-title{font-size:var(--fs-base);font-weight:var(--fw-medium);color:var(--color-text-muted)}.fd-settings-dialog .unit-row{gap:var(--space-2);grid-template-columns:1fr 1fr;display:grid}.fd-settings-dialog .unit-field{flex-direction:column;gap:2px;display:flex}.fd-settings-dialog .unit-field-label{font-size:var(--fs-base);color:var(--color-text-muted)}.fd-settings-dialog .section-toggle{cursor:pointer;font-size:var(--fs-base);font-weight:var(--fw-medium);color:var(--color-text);text-align:left;align-items:center;gap:var(--space-2);background:0 0;border:none;padding:0;display:flex}.fd-settings-dialog .section-toggle:hover{color:var(--color-accent)}.fd-settings-dialog .chevron{font-size:var(--fs-base);color:var(--color-text-muted);justify-content:center;width:1rem;display:inline-flex}.fd-settings-dialog .shortcuts-table{border-collapse:collapse;width:100%;font-size:var(--fs-base)}.fd-settings-dialog .shortcuts-table td{padding:var(--space-1) var(--space-2);border-bottom:1px solid var(--color-divider)}.fd-settings-dialog .shortcuts-table .shortcut-key{white-space:nowrap;color:var(--color-text-muted)}.fd-settings-dialog .shortcuts-table .shortcut-action{color:var(--color-text)}.fd-settings-dialog .shortcuts-table kbd{background:var(--color-bg-sunken);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:1px var(--space-2);font-family:var(--font-family-mono);font-size:var(--fs-base)}.fd-report-overlay{pointer-events:none;z-index:1000;position:fixed;inset:0}.fd-report-dialog{top:calc(var(--topbar-height) + var(--toolbar-height) + var(--space-2));left:var(--space-4);pointer-events:auto;gap:var(--space-3);background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-dialog);padding:var(--space-4);width:min(460px, calc(100vw - 2 * var(--space-4)));max-height:calc(100vh - 2 * var(--space-4));font-size:var(--fs-base);color:var(--color-text);flex-direction:column;display:flex;position:fixed;overflow:auto}.fd-report-dialog.minimized{gap:0}.fd-report-dialog.minimized .header{border-bottom:none;padding-bottom:0}.fd-report-dialog .header{align-items:center;gap:var(--space-2);padding-bottom:var(--space-2);border-bottom:1px solid var(--color-divider);cursor:move;-webkit-user-select:none;user-select:none;touch-action:none;display:flex}.fd-report-dialog .icon-btn{width:26px;height:26px;font-size:var(--fs-md);cursor:pointer;border-radius:var(--radius-sm);color:var(--color-text-muted);background:0 0;border:1px solid #0000;justify-content:center;align-items:center;padding:0;line-height:1;display:flex}.fd-report-dialog .icon-btn:not(:disabled):hover{background:var(--color-bg-hover);color:var(--color-text)}.fd-report-dialog .title{font-size:var(--fs-md);font-weight:var(--fw-semibold);flex:1}.fd-report-dialog .version-tag{font-size:var(--fs-base);color:var(--color-text-muted);font-variant-numeric:tabular-nums}.fd-report-dialog .body{gap:var(--space-3);flex-direction:column;display:flex}.fd-report-dialog .field{gap:var(--space-1);flex-direction:column;display:flex}.fd-report-dialog .field-inline{align-items:center;gap:var(--space-2);flex-direction:row;display:flex}.fd-report-dialog .label{font-size:var(--fs-base);color:var(--color-text-muted);font-weight:var(--fw-medium)}.fd-report-dialog .required{color:var(--color-accent);margin-left:var(--space-1)}.fd-report-dialog .input,.fd-report-dialog .textarea{font-family:var(--font-family-sans);font-size:var(--fs-base);padding:var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg);color:var(--color-text);min-width:0}:is(.fd-report-dialog .input,.fd-report-dialog .textarea):focus{outline:2px solid var(--color-accent);outline-offset:1px}.fd-report-dialog .textarea{resize:vertical}.fd-report-dialog .preview{object-fit:contain;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg-sunken);width:100%;max-height:220px}.fd-report-dialog .hint{font-size:var(--fs-base);color:var(--color-text-subtle);margin:0}.fd-report-dialog .attach-row{align-items:center;gap:var(--space-2);display:flex}.fd-report-dialog .attach-button{padding:var(--space-1) var(--space-2)}.fd-report-dialog .attachments{gap:var(--space-2);flex-wrap:wrap;display:flex}.fd-report-dialog .thumb{align-items:center;gap:var(--space-1);flex-direction:column;width:84px;display:flex;position:relative}.fd-report-dialog .thumb img{object-fit:cover;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg-sunken);width:84px;height:64px}.fd-report-dialog .thumb .file-chip{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg-sunken);width:84px;height:64px;color:var(--color-text-muted);font-size:var(--fs-base);font-weight:var(--fw-semibold);justify-content:center;align-items:center;display:flex}.fd-report-dialog .thumb .thumb-name{text-overflow:ellipsis;white-space:nowrap;max-width:84px;font-size:var(--fs-base);color:var(--color-text-muted);overflow:hidden}.fd-report-dialog .thumb .thumb-x{top:calc(-1 * var(--space-1));right:calc(-1 * var(--space-1));background:var(--color-bg-elevated);width:22px;height:22px;color:var(--color-text);box-shadow:var(--shadow-sm,0 1px 3px #0003);border-radius:50%;justify-content:center;align-items:center;padding:0;line-height:1;display:flex;position:absolute}.fd-report-dialog .thumb .thumb-x:not(:disabled):hover{background:var(--color-bg-hover);color:var(--color-error)}.fd-report-dialog .success{color:var(--color-success);margin:0}.fd-report-dialog .error{color:var(--color-error);margin:0}.fd-report-dialog .sent{gap:var(--space-3);flex-direction:column;display:flex}.fd-report-dialog .sent-msg{font-size:var(--fs-md);color:var(--color-text);margin:0}.fd-report-dialog .actions{justify-content:flex-end;gap:var(--space-2);padding-top:var(--space-2);border-top:1px solid var(--color-divider);display:flex}.fd-report-dialog button{font-family:inherit;font-size:var(--fs-base);padding:var(--space-2) var(--space-4);border-radius:var(--radius-sm);border:1px solid var(--color-border);cursor:pointer}.fd-report-dialog button:disabled{opacity:.5;cursor:default}.fd-report-dialog .primary{background:var(--color-accent);color:var(--color-text-on-accent,white);border-color:var(--color-accent)}.fd-report-dialog .primary:not(:disabled):hover{filter:brightness(1.05)}.fd-report-dialog .secondary{background:var(--color-bg);color:var(--color-text)}.fd-report-dialog .secondary:not(:disabled):hover{background:var(--color-bg-hover)}.fd-export-dialog{top:var(--space-4);right:var(--space-4);z-index:200;background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-dialog);flex-direction:column;width:34rem;max-width:92vw;max-height:82vh;display:flex;position:fixed}.fd-export-dialog .dialog-header{padding:var(--space-4) var(--space-4) var(--space-2);cursor:move;touch-action:none;-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;display:flex}.fd-export-dialog .dialog-title{font-size:var(--fs-md);font-weight:var(--fw-semibold);color:var(--color-text);margin:0}.fd-export-dialog .dialog-close{cursor:pointer;font-size:var(--fs-lg);color:var(--color-text-muted);padding:var(--space-1);border-radius:var(--radius-sm);background:0 0;border:none;line-height:1}.fd-export-dialog .dialog-close:hover{background:var(--color-bg-hover);color:var(--color-text)}.fd-export-dialog .settings-row{align-items:center;column-gap:var(--space-3);row-gap:var(--space-1);padding:var(--space-2) var(--space-4);border-bottom:1px solid var(--color-divider);grid-template-columns:auto 6rem;display:grid}.fd-export-dialog .settings-row label{font-size:var(--fs-base);color:var(--color-text)}.fd-export-dialog .settings-row input{font-family:inherit;font-size:var(--fs-base);color:var(--color-text);background:var(--color-bg-sunken);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-1) var(--space-2);text-align:right}.fd-export-dialog .settings-row input:focus{border-color:var(--color-accent);outline:none}.fd-export-dialog .settings-row .hint{font-size:var(--fs-base);color:var(--color-text-muted);grid-column:1/-1}.fd-export-dialog .settings-row .estimate{color:var(--color-text);font-variant-numeric:tabular-nums}.fd-export-dialog .settings-row .method-select{font-family:inherit;font-size:var(--fs-base);color:var(--color-text);background:var(--color-bg-sunken);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-1) var(--space-2);text-align:left;grid-column:1/-1}.fd-export-dialog .settings-row .method-select:focus{border-color:var(--color-accent);outline:none}.fd-export-dialog .hint-block{padding:var(--space-4);font-size:var(--fs-base);color:var(--color-text-muted)}.fd-export-dialog .hint-block strong{color:var(--color-text);font-weight:var(--fw-semibold)}.fd-export-dialog .preview-controls{align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-4) var(--space-3);font-size:var(--fs-base);color:var(--color-text);border-top:1px solid var(--color-divider);display:flex}.fd-export-dialog .preview-controls>label{white-space:nowrap;color:var(--color-text-muted)}.fd-export-dialog .preview-controls input[type=range]{accent-color:var(--color-accent);flex:1}.fd-export-dialog .preview-controls .checkbox{align-items:center;gap:var(--space-1);white-space:nowrap;cursor:pointer;display:flex}.fd-export-dialog .runtime{font-size:var(--fs-base);color:var(--color-text-muted);font-variant-numeric:tabular-nums;white-space:nowrap}.fd-export-dialog .progress-block{align-items:center;gap:var(--space-3);padding:var(--space-4);font-size:var(--fs-base);color:var(--color-text-muted);display:flex}.fd-export-dialog .progress-block progress{accent-color:var(--color-accent);flex:1}.fd-export-dialog .progress-block .spinner{border:2px solid var(--color-border);border-top-color:var(--color-accent);border-radius:50%;flex:none;width:1rem;height:1rem;animation:.7s linear infinite fd-export-spin}.fd-export-dialog .error-block{padding:var(--space-4);font-size:var(--fs-base);color:var(--color-error-text)}.fd-export-dialog .report{padding:var(--space-3) var(--space-4);gap:var(--space-3);flex-direction:column;display:flex;overflow:hidden auto}.fd-export-dialog .report .verdict{font-size:var(--fs-base);font-weight:var(--fw-semibold)}.fd-export-dialog .report .verdict.ok{color:var(--color-success-text)}.fd-export-dialog .report .verdict.warn{color:var(--color-warning)}.fd-export-dialog .report .body-table{table-layout:fixed;border-collapse:collapse;width:100%;font-size:var(--fs-base);color:var(--color-text)}.fd-export-dialog .report .body-table th{text-align:left;vertical-align:top;width:6rem;font-weight:var(--fw-semibold);color:var(--color-text-muted);padding:var(--space-1) var(--space-2);border-bottom:1px solid var(--color-divider);white-space:nowrap}.fd-export-dialog .report .body-table td{padding:var(--space-1) var(--space-2);border-bottom:1px solid var(--color-divider);overflow-wrap:anywhere}.fd-export-dialog .report .body-table .mesh-cell{line-height:1.35}.fd-export-dialog .dialog-footer{justify-content:flex-end;gap:var(--space-2);padding:var(--space-3) var(--space-4) var(--space-4);border-top:1px solid var(--color-divider);display:flex}.fd-export-dialog .dialog-footer button{font-family:inherit;font-size:var(--fs-base);border-radius:var(--radius-md);padding:var(--space-2) var(--space-4);cursor:pointer}.fd-export-dialog .dialog-footer button.secondary{background:var(--color-bg-sunken);border:1px solid var(--color-border);color:var(--color-text)}.fd-export-dialog .dialog-footer button.secondary:hover{background:var(--color-bg-hover)}.fd-export-dialog .dialog-footer button.primary{background:var(--color-accent);border:1px solid var(--color-accent);color:var(--color-text-on-accent)}.fd-export-dialog .dialog-footer button.primary:hover:not(:disabled){filter:brightness(1.05)}.fd-export-dialog .dialog-footer button.primary:disabled{opacity:.5;cursor:default}@keyframes fd-export-spin{to{transform:rotate(360deg)}}.fd-sdf-plane-dialog{top:var(--space-4);right:var(--space-4);z-index:200;background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-dialog);width:23rem;max-width:92vw;max-height:calc(100dvh - 2 * var(--space-4));overscroll-behavior:contain;padding-bottom:var(--space-3);flex-direction:column;display:flex;position:fixed;overflow-y:auto}.fd-sdf-plane-dialog .dialog-header{padding:var(--space-4) var(--space-4) var(--space-2);cursor:move;touch-action:none;-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;display:flex}.fd-sdf-plane-dialog .dialog-title{font-size:var(--fs-md);font-weight:var(--fw-semibold);color:var(--color-text);margin:0}.fd-sdf-plane-dialog .dialog-close{cursor:pointer;font-size:var(--fs-lg);color:var(--color-text-muted);padding:var(--space-1);border-radius:var(--radius-sm);background:0 0;border:none;line-height:1}.fd-sdf-plane-dialog .dialog-close:hover{background:var(--color-bg-hover);color:var(--color-text)}.fd-sdf-plane-dialog .vec-row{align-items:center;gap:var(--space-3);padding:var(--space-1) var(--space-4);display:flex}.fd-sdf-plane-dialog .vec-row>label{font-size:var(--fs-base);color:var(--color-text-muted);flex:0 0 6rem}.fd-sdf-plane-dialog .vec-row .fields{gap:var(--space-2);flex:1;display:flex}.fd-sdf-plane-dialog .vec-row input{width:100%;min-width:0;font-family:inherit;font-size:var(--fs-base);color:var(--color-text);background:var(--color-bg-sunken);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-1) var(--space-2);text-align:right}.fd-sdf-plane-dialog .vec-row input:focus{border-color:var(--color-accent);outline:none}.fd-sdf-plane-dialog .preset-row{gap:var(--space-2);padding:var(--space-1) var(--space-4) var(--space-2);justify-content:flex-end;display:flex}.fd-sdf-plane-dialog .preset-row button{font-family:inherit;font-size:var(--fs-base);color:var(--color-text);background:var(--color-bg-sunken);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-1) var(--space-3);cursor:pointer}.fd-sdf-plane-dialog .preset-row button:hover{background:var(--color-bg-hover)}.fd-sdf-plane-dialog .readout{justify-content:space-between;align-items:baseline;gap:var(--space-3);padding:var(--space-2) var(--space-4) 0;display:flex}.fd-sdf-plane-dialog .readout .k{font-size:var(--fs-base);color:var(--color-text-muted)}.fd-sdf-plane-dialog .readout .v{font-family:var(--font-mono,monospace);font-size:var(--fs-base);font-weight:var(--fw-semibold);color:var(--color-text);font-variant-numeric:tabular-nums}.fd-sdf-plane-dialog .legend{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4) 0;font-size:var(--fs-base);color:var(--color-text-muted);flex-wrap:wrap;display:flex}.fd-sdf-plane-dialog .legend span{align-items:center;gap:var(--space-1);display:inline-flex}.fd-sdf-plane-dialog .legend .in:before,.fd-sdf-plane-dialog .legend .zero:before,.fd-sdf-plane-dialog .legend .out:before{content:"";border-radius:2px;width:.8rem;height:.8rem}.fd-sdf-plane-dialog .legend .in:before{background:#3c82e6}.fd-sdf-plane-dialog .legend .zero:before{background:#28ff78}.fd-sdf-plane-dialog .legend .out:before{background:#e16e3c}.fd-sdf-plane-dialog .legend .hint{color:var(--color-text-muted);flex-basis:100%}.fd-mesher-dialog{top:var(--space-4);right:var(--space-4);z-index:200;background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-dialog);width:23rem;max-width:92vw;max-height:calc(100dvh - 2 * var(--space-4));overscroll-behavior:contain;padding-bottom:var(--space-3);flex-direction:column;display:flex;position:fixed;overflow-y:auto}.fd-mesher-dialog .dialog-header{padding:var(--space-4) var(--space-4) var(--space-2);cursor:move;touch-action:none;-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;display:flex}.fd-mesher-dialog .dialog-title{font-size:var(--fs-md);font-weight:var(--fw-semibold);color:var(--color-text);margin:0}.fd-mesher-dialog .dialog-close{cursor:pointer;font-size:var(--fs-lg);color:var(--color-text-muted);padding:var(--space-1);border-radius:var(--radius-sm);background:0 0;border:none;line-height:1}.fd-mesher-dialog .dialog-close:hover{background:var(--color-bg-hover);color:var(--color-text)}.fd-mesher-dialog .vec-row{align-items:center;gap:var(--space-3);padding:var(--space-1) var(--space-4);display:flex}.fd-mesher-dialog .vec-row>label{font-size:var(--fs-base);color:var(--color-text-muted);flex:0 0 8rem}.fd-mesher-dialog .vec-row .fields{gap:var(--space-2);flex:1;display:flex}.fd-mesher-dialog .vec-row input{width:100%;min-width:0;font-family:inherit;font-size:var(--fs-base);color:var(--color-text);background:var(--color-bg-sunken);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-1) var(--space-2);text-align:right}.fd-mesher-dialog .vec-row input:focus{border-color:var(--color-accent);outline:none}.fd-mesher-dialog .vec-row input[type=range]{width:auto;accent-color:var(--color-accent);background:0 0;border:none;flex:1;padding:0}.fd-mesher-dialog .vec-row .slider-val{text-align:right;font-variant-numeric:tabular-nums;min-width:2.5rem;color:var(--color-text-muted);flex:none}.fd-mesher-dialog .check-row{justify-content:space-between}.fd-mesher-dialog .check-row input[type=checkbox]{width:1.1rem;height:1.1rem;accent-color:var(--color-accent);cursor:pointer}.fd-mesher-dialog .lichen-pick{margin:var(--space-2) 0;padding:var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface-muted,#f6f7f9)}.fd-mesher-dialog .lichen-pick pre{margin:0 0 var(--space-2);max-height:16rem;font-family:var(--font-mono,ui-monospace, monospace);white-space:pre;font-size:1rem;line-height:1.35;overflow:auto}.fd-mesher-dialog .lichen-pick .pick-actions{gap:var(--space-2);display:flex}.fd-mesher-dialog .lichen-pick .pick-actions button{padding:var(--space-1) var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface,#fff);cursor:pointer;font-size:1rem}.fd-mesher-dialog .lichen-pick .pick-actions button:hover{background:var(--color-surface-hover,#eef0f3)}.fd-mesher-dialog .readout{justify-content:space-between;align-items:baseline;gap:var(--space-3);padding:var(--space-2) var(--space-4) 0;display:flex}.fd-mesher-dialog .readout .k{font-size:var(--fs-base);color:var(--color-text-muted)}.fd-mesher-dialog .readout .v{font-family:var(--font-mono,monospace);font-size:var(--fs-base);font-weight:var(--fw-semibold);color:var(--color-text);font-variant-numeric:tabular-nums}.fd-mesher-dialog .legend{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4) 0;font-size:var(--fs-base);color:var(--color-text-muted);flex-wrap:wrap;display:flex}.fd-mesher-dialog .legend span{align-items:center;gap:var(--space-1);display:inline-flex}.fd-mesher-dialog .legend .in:before,.fd-mesher-dialog .legend .zero:before,.fd-mesher-dialog .legend .out:before{content:"";border-radius:2px;width:.8rem;height:.8rem}.fd-mesher-dialog .legend .in:before{background:#3c82e6}.fd-mesher-dialog .legend .zero:before{background:#28ff78}.fd-mesher-dialog .legend .out:before{background:#e16e3c}.fd-mesher-dialog .legend .hint{color:var(--color-text-muted);flex-basis:100%}.fd-mesher-pasm-dialog .step-row{gap:var(--space-1,.25rem);margin-block:var(--space-2,.5rem);display:flex}.fd-mesher-pasm-dialog .step-row .step{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg-elevated);color:var(--color-text);cursor:pointer;white-space:nowrap;flex:1;padding:.3rem .4rem;font-size:1rem}.fd-mesher-pasm-dialog .step-row .step:hover{background:var(--color-bg-hover)}.fd-mesher-pasm-dialog .step-row .step.active{background:var(--color-accent-soft);border-color:var(--color-accent);font-weight:600}.fd-mesher-pasm-dialog .legend .corner:before,.fd-mesher-pasm-dialog .legend .chain:before,.fd-mesher-pasm-dialog .legend .particle:before,.fd-mesher-pasm-dialog .legend .fallback:before{content:"";border-radius:2px;width:.8rem;height:.8rem}.fd-mesher-pasm-dialog .legend .corner:before{background:#d91a1a}.fd-mesher-pasm-dialog .legend .chain:before{background:#f28c1a}.fd-mesher-pasm-dialog .legend .particle:before{background:#28ff78}.fd-mesher-pasm-dialog .legend .fallback:before{background:#ea8c1a;border:1px solid #783c0a}.fd-release-notes-overlay{z-index:200;background:#00000040;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.fd-release-notes{background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);flex-direction:column;width:40rem;max-width:92vw;max-height:82vh;display:flex}.fd-release-notes .dialog-header{padding:var(--space-4) var(--space-4) var(--space-2);justify-content:space-between;align-items:center;display:flex}.fd-release-notes .dialog-title{font-size:var(--fs-md);font-weight:var(--fw-semibold);color:var(--color-text);margin:0}.fd-release-notes .dialog-close{cursor:pointer;font-size:var(--fs-lg);color:var(--color-text-muted);padding:var(--space-1);border-radius:var(--radius-sm);background:0 0;border:none;line-height:1}.fd-release-notes .dialog-close:hover{background:var(--color-bg-hover);color:var(--color-text)}.fd-release-notes .filter-bar{align-items:center;gap:var(--space-3);padding:0 var(--space-4) var(--space-2);border-bottom:1px solid var(--color-divider);display:flex}.fd-release-notes .filter-input{font-family:inherit;font-size:var(--fs-base);color:var(--color-text);background:var(--color-bg-sunken);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);flex:1}.fd-release-notes .filter-input:focus{border-color:var(--color-accent);outline:none}.fd-release-notes .filter-input::placeholder{color:var(--color-text-subtle)}.fd-release-notes .filter-count{font-size:var(--fs-base);color:var(--color-text-muted);white-space:nowrap}.fd-release-notes .dialog-body{padding:var(--space-3) var(--space-4) var(--space-4);gap:var(--space-4);flex-direction:column;display:flex;overflow-y:auto}.fd-release-notes .empty{margin:var(--space-4) 0;text-align:center;color:var(--color-text-muted);font-size:var(--fs-base)}.fd-release-notes .release{gap:var(--space-2);flex-direction:column;display:flex}.fd-release-notes .release-version{font-size:var(--fs-base);font-weight:var(--fw-semibold);color:var(--color-accent);font-variant-numeric:tabular-nums;top:calc(-1 * var(--space-3));background:var(--color-bg-elevated);padding:var(--space-1) 0;margin:0;position:sticky}.fd-release-notes .release-entries{gap:var(--space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.fd-release-notes .entry{align-items:baseline;gap:var(--space-2);display:flex}.fd-release-notes .kind{font-size:.8125rem;font-weight:var(--fw-semibold);padding:0 var(--space-2);border-radius:var(--radius-pill);text-align:center;flex:none;min-width:4.5rem;line-height:1.4}.fd-release-notes .kind-feat{color:var(--color-text-on-accent);background:var(--color-accent)}.fd-release-notes .kind-fix{color:var(--color-text-on-accent);background:var(--color-success)}.fd-release-notes .kind-perf{color:var(--color-text-on-accent);background:var(--color-warning)}.fd-release-notes .entry-text{font-size:var(--fs-base);color:var(--color-text);line-height:1.5}.fd-release-notes .entry-scope{font-size:.8125rem;font-weight:var(--fw-medium);color:var(--color-text-muted);background:var(--color-bg-sunken);border-radius:var(--radius-sm);padding:0 var(--space-1);margin-right:var(--space-2);font-variant-numeric:tabular-nums}.fd-release-notes .entry-ticket{color:var(--color-text-subtle);margin-left:var(--space-2);font-variant-numeric:tabular-nums;font-size:.8125rem}.fd-perf-hud{top:var(--space-2);right:var(--space-2);z-index:50;color:#0f8;font-family:var(--font-family-mono);font-size:var(--fs-base);padding:var(--space-1) var(--space-6) var(--space-1) var(--space-3);border-radius:var(--radius-sm);pointer-events:auto;white-space:nowrap;background:#000000bf;position:absolute}.fd-perf-hud .close{width:var(--space-6);height:100%;color:inherit;font-family:inherit;font-size:var(--fs-lg);cursor:pointer;background:0 0;border:none;padding:0;line-height:1;position:absolute;top:0;right:0}.fd-perf-hud .close:hover{color:#fff}.fd-loading-overlay{z-index:300;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#00000040;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.fd-loading-dialog{align-items:center;gap:var(--space-4);padding:var(--space-6) var(--space-8);background:var(--color-bg-elevated);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);flex-direction:column;display:flex}.fd-loading-dialog .spinner{border:3px solid var(--color-border);border-top-color:var(--color-accent);border-radius:50%;width:2.5rem;height:2.5rem;animation:.8s linear infinite fd-spin}.fd-loading-dialog .phase{font-size:var(--fs-base);color:var(--color-text-muted);text-align:center;max-width:20rem}.fd-fieldskript-editor{background:var(--color-bg-elevated);flex-direction:column;height:100%;min-height:0;display:flex}.fd-fieldskript-editor .body{flex-direction:row;flex:auto;min-height:0;display:flex}.fd-fieldskript-editor .editor-pane{flex-direction:column;flex:auto;min-width:0;min-height:0;display:flex}.fd-fieldskript-editor .editor-host{flex:auto;width:100%;min-height:18rem}.fd-fieldskript-editor .schema-panel{background:var(--color-bg);border-left:1px solid var(--color-border);min-width:0;min-height:0;position:relative;overflow-y:auto}.fd-fieldskript-editor .schema-panel>.splitter{cursor:col-resize;z-index:5;touch-action:none;-webkit-user-select:none;user-select:none;background:0 0;width:7px;height:100%;transition:background .12s;position:absolute;top:0;left:-3px}.fd-fieldskript-editor .schema-panel>.splitter:hover,.fd-fieldskript-editor .schema-panel>.splitter:active{background:var(--color-accent,#3b82f6);opacity:.25}.fd-fieldskript-editor .schema-preview{padding:var(--space-3) var(--space-4)}.fd-fieldskript-editor .schema-preview h3{margin:0 0 var(--space-2);font-size:var(--fs-base);font-weight:var(--fw-semibold);color:var(--color-text-muted)}.fd-fieldskript-editor .header{justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-divider);background:var(--color-bg);flex:none;display:flex}.fd-fieldskript-editor .header .status{font-size:var(--fs-base);color:var(--color-text-muted)}.fd-fieldskript-editor .header .error{font-size:var(--fs-base);color:var(--color-error);font-family:var(--font-family-mono)}.fd-fieldskript-editor .header .save{font-size:var(--fs-base);padding:var(--space-2) var(--space-5);border:1px solid var(--color-accent);border-radius:var(--radius-md);background:var(--color-accent);color:var(--color-text-on-accent);font-weight:var(--fw-medium);cursor:pointer}.fd-fieldskript-editor .header .save:hover{background:var(--color-accent-hover)}.fd-bottom-tabs{align-items:stretch;gap:var(--space-2);padding:0 var(--space-3);background:var(--color-bg-elevated);border-top:1px solid var(--color-border);flex:none;display:flex;position:relative}.fd-bottom-tabs .add{align-items:center;display:flex;position:relative}.fd-bottom-tabs .add .add-button{font-size:var(--fs-md);font-weight:var(--fw-semibold);width:2rem;height:2rem;margin:var(--space-1) 0;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg);color:var(--color-text-muted);cursor:pointer;justify-content:center;align-items:center;line-height:1;display:inline-flex}.fd-bottom-tabs .add .add-button:hover{background:var(--color-bg-hover);color:var(--color-text)}.fd-bottom-tabs .tabs{align-items:stretch;gap:var(--space-1);min-width:0;display:flex;overflow-x:auto}.fd-bottom-tabs .tab{font-size:var(--fs-base);font-weight:var(--fw-medium);border-radius:0 0 var(--radius-md) var(--radius-md);color:var(--color-text-muted);line-height:var(--lh-tight);background:0 0;border:1px solid #0000;border-top:none;align-items:stretch;display:flex;position:relative}.fd-bottom-tabs .tab:hover{background:var(--color-bg-hover);color:var(--color-text)}.fd-bottom-tabs .tab.is-active{background:var(--color-bg);color:var(--color-accent);border-color:var(--color-border);border-top:none;margin-top:-1px}.fd-bottom-tabs .label{font:inherit;color:inherit;padding:var(--space-2) var(--space-3) var(--space-2) var(--space-4);cursor:pointer;white-space:nowrap;background:0 0;border:none}.fd-bottom-tabs .label .kind-glyph{color:var(--color-text-subtle)}.fd-bottom-tabs .tab.is-active .label .kind-glyph{color:var(--color-accent)}.fd-bottom-tabs .rename-input{font-size:var(--fs-base);font-weight:var(--fw-medium);margin:var(--space-1) 0 var(--space-1) var(--space-2);padding:0 var(--space-2);border:1px solid var(--color-accent);border-radius:var(--radius-sm);background:var(--color-bg-elevated);color:var(--color-text);min-width:8rem}.fd-bottom-tabs .caret{font-size:var(--fs-base);padding:0 var(--space-2);color:var(--color-text-subtle);cursor:pointer;background:0 0;border:none;line-height:1}.fd-bottom-tabs .caret:hover{color:var(--color-text)}.fd-bottom-tabs .tab.is-active .caret{color:var(--color-accent)}.fd-tab-popup{z-index:1000;min-width:13rem;padding:var(--space-1);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-elevated);box-shadow:var(--shadow-lg);flex-direction:column;display:flex;position:fixed}.fd-tab-popup .menu-item{font-size:var(--fs-base);text-align:left;padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);color:var(--color-text);cursor:pointer;white-space:nowrap;background:0 0;border:none}.fd-tab-popup .menu-item:hover{background:var(--color-bg-hover)}@media (width<=768px){.fd-bottom-tabs .add .add-button{width:var(--touch-target);height:var(--touch-target)}.fd-bottom-tabs .tab{min-height:var(--touch-target);align-items:center}.fd-bottom-tabs .label{min-height:var(--touch-target);align-items:center;display:inline-flex}.fd-bottom-tabs .caret{min-width:var(--touch-target);justify-content:center;align-items:center;display:inline-flex}}.fd-sketch-live-input{z-index:20;padding:0 var(--space-1);background:var(--color-bg-elevated);border:1px solid var(--color-accent);border-radius:var(--radius-sm);box-shadow:var(--shadow-sm);pointer-events:auto;align-items:center;display:flex;position:absolute;transform:translate(-50%,-50%)}.fd-sketch-live-input .field{align-items:center;gap:var(--space-1);display:flex}.fd-sketch-live-input .unit{font-size:var(--fs-base);color:var(--color-accent)}.fd-sketch-live-input input{width:4.5rem;font-size:var(--fs-base);font-family:var(--font-family-mono);color:var(--color-accent);text-align:right;background:0 0;border:none;padding:0}.fd-sketch-live-input input:focus{outline:none}.fd-sketch-text-editor{z-index:20;gap:var(--space-2);padding:var(--space-2);background:var(--color-bg-elevated);border:1px solid var(--color-accent);border-radius:var(--radius-md);box-shadow:var(--shadow-md);pointer-events:auto;flex-direction:column;display:flex;position:absolute}.fd-sketch-text-editor .text-value{width:12rem;padding:var(--space-1) var(--space-2);font-size:var(--fs-base);color:var(--color-text);background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-sm)}.fd-sketch-text-editor .text-value:focus{border-color:var(--color-accent);outline:none}.fd-sketch-text-editor .text-params{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.fd-sketch-text-editor .text-params .field{align-items:center;gap:var(--space-1);font-size:var(--fs-base);color:var(--color-text-muted);display:flex}.fd-sketch-text-editor .text-params input{width:4rem;font-size:var(--fs-base);color:var(--color-text);background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-sm)}.fd-sketch-text-editor .text-params select{font-size:var(--fs-base);color:var(--color-text);background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-sm)}.fd-sketch-text-editor .text-params .hint{font-size:var(--fs-base);color:var(--color-text-subtle)}.fd-sketch-tool-param{top:var(--space-2);left:var(--space-2);z-index:20;padding:var(--space-1) var(--space-2);background:var(--color-bg-elevated);border:1px solid var(--color-accent);border-radius:var(--radius-md);box-shadow:var(--shadow-md);pointer-events:auto;align-items:center;display:flex;position:absolute}.fd-sketch-tool-param .field{align-items:center;gap:var(--space-1);font-size:var(--fs-base);color:var(--color-text-muted);display:flex}.fd-sketch-tool-param input{width:4rem;font-size:var(--fs-base);color:var(--color-text);background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-sm)}.fd-sketch-tool-param.is-ngon{top:calc(var(--space-2) * 2 + 2rem);gap:var(--space-2)}.fd-sketch-tool-param.is-ngon .toggle{gap:var(--space-1)}.fd-sketch-tool-param.is-ngon input[type=checkbox]{width:auto}.fd-sketch-transform-panel{top:var(--space-2);left:var(--space-2);z-index:20;gap:var(--space-2);padding:var(--space-2);background:var(--color-bg-elevated);border:1px solid var(--color-accent);border-radius:var(--radius-md);box-shadow:var(--shadow-md);pointer-events:auto;flex-direction:column;display:flex;position:absolute}.fd-sketch-transform-panel .row{align-items:center;gap:var(--space-2);display:flex}.fd-sketch-transform-panel .field{align-items:center;gap:var(--space-1);font-size:var(--fs-base);color:var(--color-text-muted);display:flex}.fd-sketch-transform-panel input{width:4rem;font-size:var(--fs-base);color:var(--color-text);background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-sm)}.fd-sketch-transform-panel .action{padding:var(--space-1) var(--space-2);font-size:var(--fs-base);color:var(--color-text);background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-sm);cursor:pointer;flex:1}.fd-sketch-transform-panel .action:hover{border-color:var(--color-accent)}.fd-tool-hint{top:var(--space-4);z-index:9;pointer-events:none;max-width:min(70ch, calc(100vw - 2 * var(--space-4)));padding:var(--space-2) var(--space-4);background:var(--color-bg-elevated);border:1px solid var(--color-border);box-shadow:var(--shadow-md,0 4px 16px #00000026);color:var(--color-text);font-size:var(--fs-base);font-weight:var(--fw-medium);white-space:nowrap;text-overflow:ellipsis;border-radius:999px;position:absolute;left:50%;overflow:hidden;transform:translate(-50%)}.fd-measure-panel{top:var(--space-3);right:var(--space-3);z-index:20;background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-lg);width:17rem;box-shadow:var(--shadow-dialog);color:var(--color-text);font-size:1rem;position:absolute;overflow:hidden}.fd-measure-panel .header{padding:var(--space-2) var(--space-3);background:var(--color-bg-sunken);border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;display:flex}.fd-measure-panel .header .title{font-weight:600}.fd-measure-panel .header .close{cursor:pointer;color:var(--color-text-muted);padding:0 var(--space-1);background:0 0;border:none;font-size:1.25rem;line-height:1}.fd-measure-panel .header .close:hover{color:var(--color-text)}.fd-measure-panel .section-label{padding:var(--space-2) var(--space-3) var(--space-1);color:var(--color-text-subtle);font-size:1rem}.fd-measure-panel .hint{padding:0 var(--space-3) var(--space-3);color:var(--color-text-muted)}.fd-measure-panel .entities{padding:0 var(--space-2) var(--space-2);gap:var(--space-1);flex-direction:column;margin:0;list-style:none;display:flex}.fd-measure-panel .entities .entity{padding:var(--space-1) var(--space-2);background:var(--color-element-selection-soft);border:1px solid var(--color-element-selection);border-radius:var(--radius-sm);justify-content:space-between;align-items:center;display:flex}.fd-measure-panel .entities .entity .remove{cursor:pointer;color:var(--color-text-muted);background:0 0;border:none;font-size:1.1rem;line-height:1}.fd-measure-panel .entities .entity .remove:hover{color:var(--color-difference)}.fd-measure-panel .readout{border-top:1px solid var(--color-divider);padding:var(--space-2) var(--space-3) var(--space-3);gap:var(--space-1);flex-direction:column;display:flex}.fd-measure-panel .readout .row{justify-content:space-between;align-items:baseline;gap:var(--space-3);display:flex}.fd-measure-panel .readout .row.indent{padding-left:var(--space-3);color:var(--color-text-muted)}.fd-measure-panel .readout .row .row-label{color:var(--color-text-muted)}.fd-measure-panel .readout .row .row-value{font-variant-numeric:tabular-nums;text-align:right;font-weight:600}.fd-part-aabb-panel{left:var(--space-3);bottom:var(--space-3);z-index:20;background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-lg);min-width:15rem;max-width:22rem;box-shadow:var(--shadow-dialog);color:var(--color-text);padding:var(--space-2) var(--space-3);font-size:1rem;position:absolute}.fd-part-aabb-panel .header{justify-content:space-between;align-items:center;gap:var(--space-3);margin-bottom:var(--space-1);display:flex}.fd-part-aabb-panel .header .title{font-weight:var(--fw-semibold)}.fd-part-aabb-panel .header .close{cursor:pointer;font-size:var(--fs-lg);color:var(--color-text-muted);padding:0 var(--space-1);background:0 0;border:none;line-height:1}.fd-part-aabb-panel .header .close:hover{color:var(--color-text)}.fd-part-aabb-panel .hint{color:var(--color-text-muted)}.fd-part-aabb-panel .parts{gap:var(--space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.fd-part-aabb-panel .part+.part{border-top:1px solid var(--color-border);padding-top:var(--space-2)}.fd-part-aabb-panel .part-name{font-weight:var(--fw-semibold);color:var(--color-text-muted);margin-bottom:var(--space-1)}.fd-part-aabb-panel .row{justify-content:space-between;align-items:baseline;gap:var(--space-3);display:flex}.fd-part-aabb-panel .row .k{color:var(--color-text-muted)}.fd-part-aabb-panel .row .v{font-family:var(--font-mono,monospace);font-variant-numeric:tabular-nums;text-align:right}.fd-auth{z-index:1300;padding:var(--space-4);font-size:var(--fs-base);color:var(--color-text);background:#14141847;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.fd-auth .auth-card{gap:var(--space-4);width:min(26rem,100%);padding:var(--space-6);background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);flex-direction:column;display:flex}.fd-auth .auth-header{justify-content:space-between;align-items:flex-start;gap:var(--space-2);display:flex}.fd-auth .auth-title{font-size:var(--fs-xl);font-weight:var(--fw-semibold);margin:0}.fd-auth .auth-close{font-family:inherit;font-size:var(--fs-lg);border-radius:var(--radius-sm);width:2rem;height:2rem;color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;padding:0;line-height:1}.fd-auth .auth-close:hover{background:var(--color-bg-hover);color:var(--color-text)}.fd-auth .auth-note{font-size:var(--fs-base);color:var(--color-text-muted);padding:var(--space-2) var(--space-3);background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-sm);margin:0}.fd-auth .auth-form{gap:var(--space-3);flex-direction:column;display:flex}.fd-auth .field{gap:var(--space-1);flex-direction:column;display:flex}.fd-auth .label{font-size:var(--fs-base);font-weight:var(--fw-medium);color:var(--color-text-muted)}.fd-auth .input{font-family:var(--font-family-sans);font-size:var(--fs-base);padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg);color:var(--color-text)}.fd-auth .input:focus{outline:2px solid var(--color-accent);outline-offset:1px}.fd-auth .hint{font-size:var(--fs-base);color:var(--color-text-subtle);margin:0}.fd-auth .error{font-size:var(--fs-base);color:var(--color-error-text);margin:0}.fd-auth .success{font-size:var(--fs-base);color:var(--color-success-text);margin:0}.fd-auth .primary{font-family:inherit;font-size:var(--fs-base);font-weight:var(--fw-medium);padding:var(--space-2) var(--space-4);border:1px solid var(--color-accent);border-radius:var(--radius-sm);background:var(--color-accent);color:var(--color-text-on-accent);cursor:pointer}.fd-auth .primary:disabled{opacity:.6;cursor:default}.fd-auth .primary:not(:disabled):hover{background:var(--color-accent-hover)}.fd-auth .auth-switch{gap:var(--space-1);flex-direction:column;align-items:flex-start;display:flex}.fd-auth .link{font-family:inherit;font-size:var(--fs-base);color:var(--color-accent);cursor:pointer;text-align:left;background:0 0;border:none;padding:0}.fd-auth .link:hover{text-decoration:underline}.fd-auth.fd-auth-full{z-index:1400;background:var(--color-bg)}.fd-auth.fd-auth-full .auth-card{box-shadow:var(--shadow-lg)}.fd-auth-loading{z-index:1400;background:var(--color-bg);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.fd-auth-loading .spinner{border:3px solid var(--color-border);border-top-color:var(--color-accent);border-radius:50%;width:2.5rem;height:2.5rem;animation:.8s linear infinite fd-spin}.fd-invite-panel{gap:var(--space-4);width:100%;max-width:60rem;padding:var(--space-6) var(--space-5);font-size:var(--fs-base);color:var(--color-text);flex-direction:column;margin:0 auto;display:flex}.fd-invite-panel .invite-create{gap:var(--space-3);flex-direction:column;max-width:32rem;display:flex}.fd-invite-panel .field{gap:var(--space-1);flex-direction:column;display:flex}.fd-invite-panel .field .label{font-size:var(--fs-base);font-weight:var(--fw-medium);color:var(--color-text-muted)}.fd-invite-panel .create-actions{display:flex}.fd-invite-panel .input,.fd-invite-panel .textarea{font-family:var(--font-family-sans);font-size:var(--fs-base);padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg);color:var(--color-text)}:is(.fd-invite-panel .input,.fd-invite-panel .textarea):focus{outline:2px solid var(--color-accent);outline-offset:1px}.fd-invite-panel .textarea{resize:vertical}.fd-invite-panel .invite-created{align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);border:1px solid var(--color-accent-soft);border-radius:var(--radius-sm);background:var(--color-accent-soft);flex-wrap:wrap;display:flex}.fd-invite-panel .invite-created .created-label{font-size:var(--fs-base)}.fd-invite-panel .invite-created .created-link{font-family:var(--font-family-mono,monospace);font-size:var(--fs-base);padding:var(--space-1) var(--space-2);background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-sm);overflow-wrap:anywhere}.fd-invite-panel .invite-created .link{font-family:inherit;font-size:var(--fs-base);color:var(--color-accent);cursor:pointer;background:0 0;border:none;padding:0}.fd-invite-panel .invite-created .link:hover{text-decoration:underline}.fd-invite-panel .primary{font-family:inherit;font-size:var(--fs-base);padding:var(--space-2) var(--space-4);border:1px solid var(--color-accent);border-radius:var(--radius-sm);background:var(--color-accent);color:var(--color-text-on-accent);cursor:pointer}.fd-invite-panel .primary:disabled{opacity:.6;cursor:default}.fd-invite-panel .primary:not(:disabled):hover{background:var(--color-accent-hover)}.fd-invite-panel .error{font-size:var(--fs-base);color:var(--color-error-text);margin:0}.fd-invite-panel .empty{margin:var(--space-5) 0;font-size:var(--fs-md);color:var(--color-text-muted);text-align:center}.fd-invite-panel .table-scroll{overflow-x:auto}.fd-invite-panel .invite-table{border-collapse:collapse;width:100%;min-width:36rem;font-size:var(--fs-base)}.fd-invite-panel .invite-table th,.fd-invite-panel .invite-table td{text-align:left;padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--color-divider)}.fd-invite-panel .invite-table th{font-weight:var(--fw-semibold);color:var(--color-text-muted)}.fd-invite-panel .invite-table .muted{color:var(--color-text-subtle)}.fd-invite-panel .invite-table .status{padding:0 var(--space-2);border-radius:var(--radius-pill);font-size:var(--fs-base)}.fd-invite-panel .invite-table .status-open{background:var(--color-accent-soft);color:var(--color-accent)}.fd-invite-panel .invite-table .status-used{background:var(--color-union-soft);color:var(--color-success-text)}.fd-invite-panel .invite-table .status-expired{background:var(--color-bg-sunken);color:var(--color-text-muted)}.fd-invite-panel .invite-table .link{font-family:inherit;font-size:var(--fs-base);color:var(--color-accent);cursor:pointer;background:0 0;border:none;padding:0}.fd-invite-panel .invite-table .link.danger{color:var(--color-error-text)}.fd-invite-panel .invite-table .link:disabled{opacity:.6;cursor:default}.fd-invite-panel .invite-table .link:not(:disabled):hover{text-decoration:underline}.fd-overview{background:var(--color-bg);min-height:0;color:var(--color-text);font-size:var(--fs-base);flex-direction:column;flex:1;display:flex}.fd-overview .overview-tabs{align-items:stretch;gap:var(--space-1);padding:0 var(--space-5);border-bottom:1px solid var(--color-border);background:var(--color-bg-elevated);flex:none;display:flex}.fd-overview .overview-tabs .tab{font-family:inherit;font-size:var(--fs-md);font-weight:var(--fw-medium);padding:var(--space-3) var(--space-4);color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000}.fd-overview .overview-tabs .tab:hover{color:var(--color-text)}.fd-overview .overview-tabs .tab.is-active{color:var(--color-accent);border-bottom-color:var(--color-accent)}.fd-overview .overview-body{flex:1;min-height:0;overflow:auto}.fd-projects-browser{gap:var(--space-5);width:100%;max-width:72rem;padding:var(--space-6) var(--space-5);font-size:var(--fs-base);color:var(--color-text);flex-direction:column;margin:0 auto;display:flex}.fd-projects-browser .browser-bar{align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.fd-projects-browser .filter-toggle{gap:var(--space-1);padding:var(--space-1);border:1px solid var(--color-border);border-radius:var(--radius-pill);background:var(--color-bg-elevated);flex:1;display:inline-flex}.fd-projects-browser .filter-toggle .seg{font-family:inherit;font-size:var(--fs-base);padding:var(--space-1) var(--space-4);border-radius:var(--radius-pill);color:var(--color-text-muted);cursor:pointer;background:0 0;border:none}.fd-projects-browser .filter-toggle .seg.is-active{background:var(--color-accent);color:var(--color-text-on-accent)}.fd-projects-browser .filter-toggle .seg:not(.is-active):hover{background:var(--color-bg-hover);color:var(--color-text)}.fd-projects-browser .primary{font-family:inherit;font-size:var(--fs-base);padding:var(--space-2) var(--space-4);border-radius:var(--radius-sm);border:1px solid var(--color-accent);background:var(--color-accent);color:var(--color-text-on-accent);cursor:pointer}.fd-projects-browser .primary:disabled{opacity:.6;cursor:default}.fd-projects-browser .primary:not(:disabled):hover{background:var(--color-accent-hover)}.fd-projects-browser .error{font-size:var(--fs-base);color:var(--color-error-text);margin:0}.fd-projects-browser .empty{margin:var(--space-6) 0;font-size:var(--fs-md);color:var(--color-text-muted);text-align:center}.fd-projects-browser .project-grid{gap:var(--space-4);grid-template-columns:repeat(auto-fill,minmax(15rem,1fr));margin:0;padding:0;list-style:none;display:grid}.fd-projects-browser .project-card{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-elevated);box-shadow:var(--shadow-sm);flex-direction:column;display:flex;overflow:hidden}.fd-projects-browser .project-card.is-bound{border-color:var(--color-accent);box-shadow:0 0 0 1px var(--color-accent)}.fd-projects-browser .thumb{aspect-ratio:4/3;border:none;border-bottom:1px solid var(--color-divider);background:var(--color-bg-sunken);cursor:pointer;width:100%;padding:0;display:block}.fd-projects-browser .thumb img{object-fit:cover;width:100%;height:100%}.fd-projects-browser .card-body{gap:var(--space-2);padding:var(--space-3);flex-direction:column;display:flex}.fd-projects-browser .card-head{align-items:center;gap:var(--space-2);display:flex}.fd-projects-browser .name{font-size:var(--fs-md);font-weight:var(--fw-medium);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.fd-projects-browser .badge{font-family:inherit;font-size:var(--fs-base);padding:0 var(--space-2);border-radius:var(--radius-pill);cursor:pointer;border:1px solid #0000}.fd-projects-browser .badge.static{cursor:default}.fd-projects-browser .badge.is-public{background:var(--color-union-soft);color:var(--color-success-text);border-color:var(--color-union-soft)}.fd-projects-browser .badge.is-private{background:var(--color-bg-sunken);color:var(--color-text-muted);border-color:var(--color-border)}.fd-projects-browser .badge:disabled{opacity:.6;cursor:default}.fd-projects-browser .meta{font-size:var(--fs-base);color:var(--color-text-subtle)}.fd-projects-browser .card-actions{gap:var(--space-2) var(--space-3);flex-wrap:wrap;display:flex}.fd-projects-browser .link{font-family:inherit;font-size:var(--fs-base);color:var(--color-accent);cursor:pointer;white-space:nowrap;background:0 0;border:none;padding:0;text-decoration:none}.fd-projects-browser .link.danger{color:var(--color-error-text)}.fd-projects-browser .link:disabled{opacity:.6;cursor:default}.fd-projects-browser .link:not(:disabled):hover{text-decoration:underline}.fd-projects-browser .local-projects{margin-bottom:var(--space-4)}.fd-projects-browser .local-projects .local-title{margin:0 0 var(--space-2);font-size:var(--fs-base);color:var(--color-text-muted);font-weight:600}.fd-projects-browser .local-projects .local-list{gap:var(--space-1);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.fd-projects-browser .local-projects .local-row{align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);display:flex}.fd-projects-browser .local-projects .local-thumb{object-fit:cover;border-radius:var(--radius-sm);background:var(--color-bg-sunken);border:1px solid var(--color-divider);width:2.5rem;height:2.5rem}.fd-projects-browser .local-projects .local-open{font-family:inherit;font-size:var(--fs-base);color:var(--color-accent);cursor:pointer;background:0 0;border:none;padding:0}.fd-projects-browser .local-projects .local-open:not(:disabled):hover{text-decoration:underline}.fd-projects-browser .local-projects .local-forget{font-family:inherit;font-size:var(--fs-base);color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;margin-left:auto;padding:0}.fd-projects-browser .local-projects .local-forget:hover{color:var(--color-error-text);text-decoration:underline}.fd-onshape-import{z-index:200;background:#00000040;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.fd-onshape-import .dialog{background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);width:34rem;max-width:90vw}.fd-onshape-import .dialog-header{padding:var(--space-4) var(--space-4) var(--space-2);justify-content:space-between;align-items:center;display:flex}.fd-onshape-import .dialog-title{font-size:var(--fs-md);font-weight:var(--fw-semibold);color:var(--color-text);margin:0}.fd-onshape-import .dialog-close{cursor:pointer;font-size:var(--fs-lg);color:var(--color-text-muted);padding:var(--space-1);border-radius:var(--radius-sm);background:0 0;border:none;line-height:1}.fd-onshape-import .dialog-close:hover{background:var(--color-bg-hover);color:var(--color-text)}.fd-onshape-import .dialog-body{padding:var(--space-3) var(--space-4) var(--space-4);gap:var(--space-3);flex-direction:column;max-height:70vh;display:flex;overflow-y:auto}.fd-onshape-import .field{gap:var(--space-1);flex-direction:column;display:flex}.fd-onshape-import .field-label{font-size:var(--fs-base);color:var(--color-text-muted)}.fd-onshape-import .url-input{font-size:var(--fs-base);color:var(--color-text);background:var(--color-bg-sunken);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3);font-family:inherit}.fd-onshape-import .url-input:focus-visible{outline:2px solid var(--color-accent);outline-offset:-1px}.fd-onshape-import .error{font-size:var(--fs-base);color:var(--color-error-text);margin:0}.fd-onshape-import .result{gap:var(--space-2);flex-direction:column;display:flex}.fd-onshape-import .summary{font-size:var(--fs-base);color:var(--color-text);margin:0}.fd-onshape-import .issue-list{padding-left:var(--space-4);gap:var(--space-1);font-size:var(--fs-base);flex-direction:column;margin:0;display:flex}.fd-onshape-import .issue-list.errors{color:var(--color-error-text)}.fd-onshape-import .issue-list.warnings{color:var(--color-warning)}.fd-onshape-import .actions{justify-content:flex-end;gap:var(--space-2);display:flex}.fd-user-menu{align-items:center;display:inline-flex;position:relative}.fd-user-menu .trigger{justify-content:center;align-items:center;gap:var(--space-2);font-family:inherit;font-size:var(--fs-base);padding:var(--space-1) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-pill);background:var(--color-bg-elevated);color:var(--color-text);cursor:pointer;line-height:1;display:inline-flex}.fd-user-menu .trigger:disabled{opacity:.6;cursor:default}.fd-user-menu .trigger:not(:disabled):hover{background:var(--color-bg-hover)}.fd-user-menu .trigger.person{padding:var(--space-1) var(--space-2)}.fd-user-menu .trigger.person .glyph{font-size:var(--fs-md);filter:grayscale()brightness(0);line-height:1}.fd-user-menu .trigger.login{background:var(--color-accent);color:var(--color-text-on-accent);border-color:var(--color-accent)}.fd-user-menu .trigger.login:hover{background:var(--color-accent-hover)}.fd-user-menu .user-popover{top:calc(100% + var(--space-2));z-index:1300;min-width:14rem;padding:var(--space-1);background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);flex-direction:column;display:flex;position:absolute;right:0}.fd-user-menu .identity{padding:var(--space-2) var(--space-3);flex-direction:column;gap:2px;display:flex}.fd-user-menu .identity .email{font-size:var(--fs-base);font-weight:var(--fw-medium);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.fd-user-menu .identity .role{font-size:var(--fs-base);text-transform:uppercase;letter-spacing:.04em;color:var(--color-accent)}.fd-user-menu .menu-item{justify-content:space-between;align-items:center;gap:var(--space-2);text-align:left;font-family:inherit;font-size:var(--fs-base);padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);color:var(--color-text);cursor:pointer;background:0 0;border:none;display:flex}.fd-user-menu .menu-item:hover{background:var(--color-bg-hover)}.fd-user-menu .menu-item .menu-shortcut{font-size:var(--fs-base);color:var(--color-text-muted)}.fd-user-menu .menu-separator{height:1px;margin:var(--space-1) 0;background:var(--color-divider)}.fd-bell{align-items:center;display:inline-flex;position:relative}.fd-bell .trigger{font-family:inherit;font-size:var(--fs-md);padding:var(--space-1) var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-pill);background:var(--color-bg-elevated);color:var(--color-text);cursor:pointer;justify-content:center;align-items:center;line-height:1;display:inline-flex;position:relative}.fd-bell .trigger:hover{background:var(--color-bg-hover)}.fd-bell .trigger .glyph{filter:grayscale()}.fd-bell .trigger .badge{min-width:1.25rem;padding:0 var(--space-1);font-size:var(--fs-base);font-weight:var(--fw-semibold);text-align:center;color:var(--color-text-on-accent);background:var(--color-error);border-radius:var(--radius-pill);line-height:1.25rem;position:absolute;top:-6px;right:-6px}.fd-bell .bell-popover{top:calc(100% + var(--space-2));z-index:1300;background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-md);width:min(32rem,92vw);max-height:70vh;box-shadow:var(--shadow-lg);position:absolute;right:0;overflow:auto}.fd-tickets{gap:var(--space-5);width:100%;max-width:64rem;padding:var(--space-6) var(--space-5);font-size:var(--fs-base);color:var(--color-text);flex-direction:column;margin:0 auto;display:flex}.fd-tickets .tickets-bar{align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.fd-tickets .tickets-title{font-size:var(--fs-2xl);font-weight:var(--fw-semibold);flex:1;margin:0}.fd-tickets .tickets-actions{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.fd-tickets .primary,.fd-tickets .secondary{font-family:inherit;font-size:var(--fs-base);padding:var(--space-2) var(--space-4);border-radius:var(--radius-sm);border:1px solid var(--color-border);cursor:pointer}:is(.fd-tickets .primary,.fd-tickets .secondary):disabled{opacity:.6;cursor:default}.fd-tickets .primary{background:var(--color-accent);color:var(--color-text-on-accent);border-color:var(--color-accent)}.fd-tickets .primary:not(:disabled):hover{background:var(--color-accent-hover)}.fd-tickets .secondary{background:var(--color-bg-elevated);color:var(--color-text)}.fd-tickets .secondary:not(:disabled):hover{background:var(--color-bg-hover)}.fd-tickets .secondary.back{padding:var(--space-1) var(--space-3);border-radius:var(--radius-pill)}.fd-tickets .close{font-family:inherit;font-size:var(--fs-lg);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg-elevated);width:2.25rem;height:2.25rem;color:var(--color-text-muted);cursor:pointer;padding:0;line-height:1}.fd-tickets .close:hover{background:var(--color-bg-hover);color:var(--color-text)}.fd-tickets .error{font-size:var(--fs-base);color:var(--color-error-text);margin:0}.fd-tickets .empty{margin:var(--space-6) 0;font-size:var(--fs-md);color:var(--color-text-muted);text-align:center}.fd-tickets .filter-bar{align-items:center;gap:var(--space-3);padding:var(--space-3);background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-md);flex-wrap:wrap;display:flex}.fd-tickets .only-mine{align-items:center;gap:var(--space-2);font-size:var(--fs-base);cursor:pointer;display:inline-flex}.fd-tickets .only-mine input{width:1.05rem;height:1.05rem}.fd-tickets .filter-select,.fd-tickets .filter-search,.fd-tickets .text-input{font-family:inherit;font-size:var(--fs-base);padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg-elevated);color:var(--color-text)}:is(.fd-tickets .filter-select,.fd-tickets .filter-search,.fd-tickets .text-input):disabled{opacity:.6}.fd-tickets .filter-search{flex:1;min-width:12rem}.fd-tickets .badge{font-size:var(--fs-base);padding:0 var(--space-2);border-radius:var(--radius-pill);white-space:nowrap;border:1px solid #0000;flex:none;align-items:center;display:inline-flex}.fd-tickets .badge.state-open{background:var(--color-accent-soft);color:var(--color-accent);border-color:var(--color-accent-soft)}.fd-tickets .badge.state-progress{background:var(--color-intersect-soft);color:var(--color-intersect);border-color:var(--color-intersect-soft)}.fd-tickets .badge.state-done{background:var(--color-union-soft);color:var(--color-success-text);border-color:var(--color-union-soft)}.fd-tickets .badge.state-rejected{background:var(--color-difference-soft);color:var(--color-error-text);border-color:var(--color-difference-soft)}.fd-tickets .badge.state-backlog{background:var(--color-bg-sunken);color:var(--color-text-muted);border-color:var(--color-border)}.fd-tickets{--ticket-cols:3.5rem 6rem minmax(0, 1fr) 12rem}.fd-tickets .ticket-table{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-elevated);overflow:auto hidden}.fd-tickets .ticket-table .ticket-head,.fd-tickets .ticket-table .ticket-rows{min-width:44rem}.fd-tickets .ticket-head{grid-template-columns:var(--ticket-cols);gap:var(--space-3);padding:0 var(--space-4);border-bottom:1px solid var(--color-border);background:var(--color-bg-sunken);display:grid}.fd-tickets .col-head{align-items:center;gap:var(--space-1);padding:var(--space-2) 0;font-family:inherit;font-size:var(--fs-base);font-weight:var(--fw-medium);color:var(--color-text-muted);cursor:pointer;text-align:left;background:0 0;border:none;display:inline-flex}.fd-tickets .col-head:hover{color:var(--color-text)}.fd-tickets .col-head.active{color:var(--color-accent)}.fd-tickets .col-head .sort-arrow{font-size:.75em;line-height:1}.fd-tickets .ticket-rows{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.fd-tickets .ticket-row{border-bottom:1px solid var(--color-divider)}.fd-tickets .ticket-row:last-child{border-bottom:none}.fd-tickets .row-open{grid-template-columns:var(--ticket-cols);align-items:center;gap:var(--space-3);text-align:left;width:100%;font-family:inherit;font-size:var(--fs-base);padding:var(--space-3) var(--space-4);color:var(--color-text);cursor:pointer;background:0 0;border:none;display:grid}.fd-tickets .row-open:hover{background:var(--color-bg-hover)}.fd-tickets .row-open .badge{justify-self:start}.fd-tickets .row-number{font-variant-numeric:tabular-nums;color:var(--color-text-subtle);white-space:nowrap}.fd-tickets .row-title{font-size:var(--fs-md);font-weight:var(--fw-medium);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.fd-tickets .row-meta{color:var(--color-text-subtle)}.fd-tickets .ticket-pager{justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-1) var(--space-2);flex-wrap:wrap;display:flex}.fd-tickets .pager-info,.fd-tickets .pager-nav{align-items:center;gap:var(--space-3);display:flex}.fd-tickets .pager-count{font-size:var(--fs-base);color:var(--color-text-muted);font-variant-numeric:tabular-nums}.fd-tickets .pager-size{align-items:center;gap:var(--space-2);font-size:var(--fs-base);color:var(--color-text-muted);display:inline-flex}.fd-tickets .pager-status{font-size:var(--fs-base);color:var(--color-text-muted);font-variant-numeric:tabular-nums}.fd-tickets .pager-nav .secondary{padding:var(--space-1) var(--space-3)}.fd-tickets .detail-head{gap:var(--space-3);padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-elevated);flex-direction:column;display:flex}.fd-tickets .detail-head-row{align-items:center;gap:var(--space-3);display:flex}.fd-tickets .detail-number{font-variant-numeric:tabular-nums;font-size:var(--fs-md);color:var(--color-text-subtle)}.fd-tickets .detail-title{font-size:var(--fs-xl);font-weight:var(--fw-semibold);margin:0}.fd-tickets .detail-meta{gap:var(--space-4);font-size:var(--fs-base);color:var(--color-text-subtle);flex-wrap:wrap;display:flex}.fd-tickets .detail-body{font-size:var(--fs-base);line-height:var(--lh-normal);white-space:pre-wrap;margin:0}.fd-tickets .detail-author-actions{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.fd-tickets .detail-author-actions .detail-state-set{align-items:center;gap:var(--space-2);font-size:var(--fs-base);color:var(--color-text-muted);display:flex}.fd-tickets .detail-author-actions .detail-state-set select{font-family:inherit;font-size:var(--fs-base);padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg-elevated);color:var(--color-text)}.fd-tickets .detail-author-actions button.danger{border-color:var(--color-error-text);color:var(--color-error-text)}.fd-tickets .ticket-form,.fd-tickets .comment-form{gap:var(--space-3);flex-direction:column;display:flex}.fd-tickets .field{gap:var(--space-2);flex-direction:column;display:flex}.fd-tickets .label{font-size:var(--fs-base);font-weight:var(--fw-medium);color:var(--color-text-muted)}.fd-tickets .textarea{font-family:inherit;font-size:var(--fs-base);line-height:var(--lh-normal);padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg-elevated);color:var(--color-text);resize:vertical}.fd-tickets .textarea:disabled{opacity:.6}.fd-tickets .form-actions{justify-content:flex-end;gap:var(--space-2);display:flex}.fd-tickets .artifacts{gap:var(--space-3);flex-direction:column;display:flex}.fd-tickets .artifacts-title,.fd-tickets .thread-title{font-size:var(--fs-lg);font-weight:var(--fw-semibold);margin:0}.fd-tickets .screenshots{gap:var(--space-3);flex-wrap:wrap;display:flex}.fd-tickets .screenshot{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg-sunken);width:14rem;display:block;overflow:hidden}.fd-tickets .screenshot img{width:100%;height:auto;display:block}.fd-tickets .artifact-list{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.fd-tickets .load-project{padding:var(--space-2) var(--space-4)}.fd-tickets .artifact-chip{align-items:center;gap:var(--space-2);font-size:var(--fs-base);padding:var(--space-1) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-pill);background:var(--color-bg-elevated);color:var(--color-text);text-decoration:none;display:inline-flex}.fd-tickets .artifact-chip:hover{background:var(--color-bg-hover)}.fd-tickets .artifact-chip .chip-kind{text-transform:uppercase;letter-spacing:.03em;color:var(--color-text-subtle)}.fd-tickets .thread{gap:var(--space-3);flex-direction:column;display:flex}.fd-tickets .comments{gap:var(--space-3);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.fd-tickets .comment{gap:var(--space-3);padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-elevated);display:flex}.fd-tickets .comment.persona-user{border-left:3px solid var(--color-accent)}.fd-tickets .comment.persona-po{border-left:3px solid var(--color-success)}.fd-tickets .comment.persona-system{border-left:3px solid var(--color-text-subtle);background:var(--color-bg-sunken)}.fd-tickets .comment.persona-dev,.fd-tickets .comment.internal{border-left:3px solid var(--color-warning);background:var(--color-intersect-soft)}.fd-tickets .persona-tag{min-width:2.5rem;height:1.75rem;padding:0 var(--space-2);border-radius:var(--radius-pill);font-size:var(--fs-base);font-weight:var(--fw-semibold);color:var(--color-text-on-accent);background:var(--color-text-subtle);flex:none;justify-content:center;align-items:center;display:inline-flex}.comment.persona-user :is(.fd-tickets .persona-tag){background:var(--color-accent)}.comment.persona-po :is(.fd-tickets .persona-tag){background:var(--color-success)}.comment.persona-dev :is(.fd-tickets .persona-tag){background:var(--color-warning)}.fd-tickets .comment-body{gap:var(--space-1);flex-direction:column;flex:1;display:flex}.fd-tickets .comment-head{align-items:center;gap:var(--space-2);display:flex}.fd-tickets .persona-name{font-size:var(--fs-base);font-weight:var(--fw-semibold)}.fd-tickets .internal-tag{font-size:var(--fs-base);padding:0 var(--space-2);border-radius:var(--radius-pill);background:var(--color-intersect-soft);color:var(--color-warning);border:1px solid var(--color-warning)}.fd-tickets .comment-date{font-size:var(--fs-base);color:var(--color-text-subtle);margin-left:auto}.fd-tickets .comment-text{font-size:var(--fs-base);line-height:var(--lh-normal);white-space:pre-wrap;margin:0}.fd-admin-alerts{gap:var(--space-4);width:100%;max-width:60rem;padding:var(--space-6) var(--space-5);font-size:var(--fs-base);color:var(--color-text);flex-direction:column;margin:0 auto;display:flex}.fd-admin-alerts .admin-bar{align-items:center;gap:var(--space-3);display:flex}.fd-admin-alerts .admin-title{font-size:var(--fs-2xl);font-weight:var(--fw-semibold);flex:1;margin:0}.fd-admin-alerts .filter{align-items:center;gap:var(--space-2);font-size:var(--fs-base);color:var(--color-text-muted);cursor:pointer;display:inline-flex}.fd-admin-alerts .close{font-family:inherit;font-size:var(--fs-lg);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg-elevated);width:2.25rem;height:2.25rem;color:var(--color-text-muted);cursor:pointer;padding:0;line-height:1}.fd-admin-alerts .close:hover{background:var(--color-bg-hover);color:var(--color-text)}.fd-admin-alerts .error{font-size:var(--fs-base);color:var(--color-error-text);margin:0}.fd-admin-alerts .empty{margin:var(--space-5) 0;font-size:var(--fs-md);color:var(--color-text-muted);text-align:center}.fd-admin-alerts .alert-list{gap:var(--space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.fd-admin-alerts .alert-row{align-items:flex-start;gap:var(--space-3);padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg-elevated);display:flex}.fd-admin-alerts .alert-row.is-unseen{border-left:3px solid var(--color-accent)}.fd-admin-alerts .alert-row.is-seen{opacity:.7}.fd-admin-alerts .kind{padding:var(--space-1) var(--space-2);border-radius:var(--radius-pill);font-size:var(--fs-base);white-space:nowrap;flex:none}.fd-admin-alerts .kind-malicious_ticket,.fd-admin-alerts .kind-malicious_comment{background:var(--color-difference-soft);color:var(--color-error-text)}.fd-admin-alerts .kind-withheld_comment{background:var(--color-intersect-soft);color:var(--color-warning)}.fd-admin-alerts .kind-user_banned{background:var(--color-bg-sunken);color:var(--color-text-muted)}.fd-admin-alerts .alert-body{gap:var(--space-1);flex-direction:column;flex:1;min-width:0;display:flex}.fd-admin-alerts .detail{font-size:var(--fs-base);word-break:break-word}.fd-admin-alerts .meta{font-size:var(--fs-base);color:var(--color-text-muted)}.fd-admin-alerts .seen-tag{font-size:var(--fs-base);color:var(--color-text-subtle);flex:none}.fd-admin-alerts .link{font-family:inherit;font-size:var(--fs-base);color:var(--color-accent);cursor:pointer;background:0 0;border:none;flex:none;padding:0}.fd-admin-alerts .link:disabled{opacity:.6;cursor:default}.fd-admin-alerts .link:not(:disabled):hover{text-decoration:underline}.fd-admin-users{gap:var(--space-4);width:100%;max-width:60rem;padding:var(--space-6) var(--space-5);font-size:var(--fs-base);color:var(--color-text);flex-direction:column;margin:0 auto;display:flex}.fd-admin-users .admin-bar{align-items:center;gap:var(--space-3);display:flex}.fd-admin-users .admin-title{font-size:var(--fs-2xl);font-weight:var(--fw-semibold);flex:1;margin:0}.fd-admin-users .close{font-family:inherit;font-size:var(--fs-lg);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg-elevated);width:2.25rem;height:2.25rem;color:var(--color-text-muted);cursor:pointer;padding:0;line-height:1}.fd-admin-users .close:hover{background:var(--color-bg-hover);color:var(--color-text)}.fd-admin-users .error{font-size:var(--fs-base);color:var(--color-error-text);margin:0}.fd-admin-users .empty{margin:var(--space-5) 0;font-size:var(--fs-md);color:var(--color-text-muted);text-align:center}.fd-admin-users .table-scroll{overflow-x:auto}.fd-admin-users .users-table{border-collapse:collapse;width:100%;min-width:40rem;font-size:var(--fs-base)}.fd-admin-users .users-table th,.fd-admin-users .users-table td{text-align:left;padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--color-divider)}.fd-admin-users .users-table th{font-weight:var(--fw-semibold);color:var(--color-text-muted)}.fd-admin-users .users-table .muted{color:var(--color-text-subtle)}.fd-admin-users .users-table .role{padding:0 var(--space-2);border-radius:var(--radius-pill);font-size:var(--fs-base)}.fd-admin-users .users-table .role-admin{background:var(--color-accent-soft);color:var(--color-accent)}.fd-admin-users .users-table .role-user{background:var(--color-bg-sunken);color:var(--color-text-muted)}.fd-admin-users .users-table .status{padding:0 var(--space-2);border-radius:var(--radius-pill);font-size:var(--fs-base)}.fd-admin-users .users-table .status.is-active{background:var(--color-union-soft);color:var(--color-success-text)}.fd-admin-users .users-table .status.is-banned{background:var(--color-difference-soft);color:var(--color-error-text)}.fd-admin-users .users-table .link{font-family:inherit;font-size:var(--fs-base);color:var(--color-accent);cursor:pointer;background:0 0;border:none;padding:0}.fd-admin-users .users-table .link.danger{color:var(--color-error-text)}.fd-admin-users .users-table .link:disabled{opacity:.6;cursor:default}.fd-admin-users .users-table .link:not(:disabled):hover{text-decoration:underline}.fd-guest-import{left:50%;bottom:var(--space-5);z-index:1200;align-items:center;gap:var(--space-5);max-width:min(40rem, calc(100vw - var(--space-5) * 2));padding:var(--space-3) var(--space-4);font-size:var(--fs-base);color:var(--color-text);background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);display:flex;position:fixed;transform:translate(-50%)}.fd-guest-import .message{gap:var(--space-1);flex-direction:column;min-width:0;display:flex}.fd-guest-import .title{font-size:var(--fs-base);font-weight:var(--fw-semibold)}.fd-guest-import .detail{font-size:var(--fs-base);color:var(--color-text-muted)}.fd-guest-import .error{font-size:var(--fs-base);color:var(--color-error-text)}.fd-guest-import .actions{gap:var(--space-2);flex:none;display:flex}.fd-guest-import .primary{font-family:inherit;font-size:var(--fs-base);white-space:nowrap;padding:var(--space-2) var(--space-4);border:1px solid var(--color-accent);border-radius:var(--radius-sm);background:var(--color-accent);color:var(--color-text-on-accent);cursor:pointer}.fd-guest-import .primary:disabled{opacity:.6;cursor:default}.fd-guest-import .primary:not(:disabled):hover{background:var(--color-accent-hover)}.fd-guest-import .secondary{font-family:inherit;font-size:var(--fs-base);white-space:nowrap;padding:var(--space-2) var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg-elevated);color:var(--color-text);cursor:pointer}.fd-guest-import .secondary:disabled{opacity:.6;cursor:default}.fd-guest-import .secondary:not(:disabled):hover{background:var(--color-bg-hover)}.fd-script-proposal{right:var(--space-4);bottom:calc(var(--space-4) + 4rem);z-index:60;gap:var(--space-3);width:min(42rem, calc(100vw - 2 * var(--space-4)));max-height:70vh;padding:var(--space-4);border:1px solid var(--color-border);border-left:3px solid var(--color-accent);border-radius:var(--radius-md);background:var(--color-bg-elevated);box-shadow:var(--shadow-lg);font-size:var(--fs-base);flex-direction:column;display:flex;position:fixed}.fd-script-proposal .head{justify-content:space-between;align-items:baseline;gap:var(--space-3);display:flex}.fd-script-proposal .name{color:var(--color-text-muted)}.fd-script-proposal .intent{margin:0}.fd-script-proposal .source{max-height:32vh;padding:var(--space-3);border-radius:var(--radius-sm);background:var(--color-bg-sunken);font-family:var(--font-mono);font-size:var(--fs-base);line-height:var(--lh-normal);white-space:pre;margin:0;overflow:auto}.fd-script-proposal .note{color:var(--color-text-muted);margin:0}.fd-script-proposal .error{color:var(--color-error-text);margin:0}.fd-script-proposal .actions{justify-content:flex-end;gap:var(--space-2);display:flex}
