:root{--sx-gray-0:#fafafa;--sx-gray-1:#f5f5f7;--sx-gray-2:#e4e5e7;--sx-gray-3:#cdced0;--sx-gray-4:#b2b4b8;--sx-gray-5:#909398;--sx-gray-6:#76797f;--sx-gray-7:#4c4e52;--sx-gray-8:#2c2e30;--sx-gray-9:#121212;--sx-blue-0:#e6f1ff;--sx-blue-1:#c2ddff;--sx-blue-2:#8fc1ff;--sx-blue-3:#66abff;--sx-blue-4:#3d94ff;--sx-blue-5:#2989ff;--sx-blue-6:#1881ff;--sx-blue-7:#0067e6;--sx-blue-8:#0055bd;--sx-blue-9:#004394;--sx-red-0:#fef2f2;--sx-red-1:#fee2e2;--sx-red-2:#fecaca;--sx-red-3:#fca5a5;--sx-red-4:#f87171;--sx-red-5:#ef4444;--sx-red-6:#dc2626;--sx-red-7:#b91c1c;--sx-red-8:#991b1b;--sx-red-9:#7f1d1d;--sx-green-0:#f0fdf4;--sx-green-1:#dcfce7;--sx-green-2:#bbf7d0;--sx-green-3:#86efac;--sx-green-4:#4ade80;--sx-green-5:#22c55e;--sx-green-6:#16a34a;--sx-green-7:#15803d;--sx-green-8:#166534;--sx-green-9:#14532d;--sx-amber-0:#fffbeb;--sx-amber-1:#fef3c7;--sx-amber-2:#fde68a;--sx-amber-3:#fcd34d;--sx-amber-4:#fbbf24;--sx-amber-5:#f59e0b;--sx-amber-6:#d97706;--sx-amber-7:#b45309;--sx-amber-8:#92400e;--sx-amber-9:#78350f;--sx-dark-0:#c9c9c9;--sx-dark-1:#b8b8b8;--sx-dark-2:#828282;--sx-dark-3:#696969;--sx-dark-4:#424242;--sx-dark-5:#3b3b3b;--sx-dark-6:#2e2e2e;--sx-dark-7:#242424;--sx-dark-8:#1f1f1f;--sx-dark-9:#141414;--sx-white:#fff;--sx-black:#000;--sx-brand-green:#00ff85;--sx-brand-blue:#1881ff;--sx-brand-blue-2:#006bd6;--sx-brand-lightblue:#cce3ff;--sx-brand-darkblue:#06172e;--sx-brand-grey:#8d9eb4;--sx-brand-darkgrey:#486284;--sx-brand-lightgrey:#f5f5f7;--sx-brand-red:red;--sx-brand-border:#ccc;--sx-brand-background:#fafafa;--sx-brand-mist:#f2f3f7;--sx-brand-mint:#adffd8;--sx-gradient-1:linear-gradient(127deg, #1881ff 6.86%, #003d75 88%);--sx-gradient-2:linear-gradient(127deg, #3c4d62 6.86%, #000 88%);--sx-gradient-3:linear-gradient(154deg, #06172e 0.14%, #1881ff 57.12%, #adffd8 108.87%);--sx-dot-red:#ff5f57;--sx-dot-yellow:#febc2e;--sx-dot-green:#28c840;--sx-color-body:var(--sx-white);--sx-color-chrome:var(--sx-black);--sx-color-surface:var(--sx-white);--sx-color-surface-subtle:var(--sx-gray-0);--sx-color-surface-muted:var(--sx-gray-1);--sx-color-hover:var(--sx-gray-0);--sx-color-selected:var(--sx-blue-1);--sx-color-selected-hover:var(--sx-blue-0);--sx-color-text:var(--sx-black);--sx-color-title:var(--sx-gray-8);--sx-color-text-secondary:var(--sx-gray-7);--sx-color-dimmed:var(--sx-gray-6);--sx-color-placeholder:var(--sx-gray-5);--sx-color-disabled:var(--sx-gray-2);--sx-color-disabled-text:var(--sx-gray-5);--sx-color-on-chrome:var(--sx-white);--sx-color-on-chrome-muted:var(--sx-gray-5);--sx-color-on-chrome-hover:#ffffff1a;--sx-color-link:var(--sx-blue-6);--sx-color-border-subtle:var(--sx-gray-2);--sx-color-border:var(--sx-gray-3);--sx-color-border-strong:var(--sx-gray-4);--sx-color-primary:var(--sx-blue-6);--sx-color-primary-hover:var(--sx-blue-7);--sx-color-primary-contrast:var(--sx-white);--sx-color-primary-light:#1881ff1a;--sx-color-primary-light-hover:#1881ff1f;--sx-color-primary-outline-hover:#1881ff0d;--sx-color-danger:var(--sx-red-6);--sx-color-danger-hover:var(--sx-red-7);--sx-color-danger-light:#dc26261a;--sx-color-danger-light-hover:#dc26261f;--sx-color-success:var(--sx-green-6);--sx-color-success-light:#16a34a1a;--sx-color-warning:var(--sx-amber-6);--sx-color-warning-light:#d977061f;--sx-color-neutral-light:#76797f1a;--sx-color-neutral-light-hover:#76797f1f;--sx-color-accent:var(--sx-brand-green);--sx-color-on-accent:var(--sx-black);--sx-overlay:#0009;--sx-loading-veil:#ffffff4d;--sx-font-sans:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--sx-font-display:-apple-system, BlinkMacSystemFont, "SF Pro Display", "Inter", system-ui, "Segoe UI", sans-serif;--sx-font-mono:var(--sx-font-sans);--sx-font-code:var(--sx-font-sans);--sx-fs-micro:10px;--sx-fs-xs:12px;--sx-fs-compact:13px;--sx-fs-sm:14px;--sx-fs-md:16px;--sx-fs-lg:18px;--sx-fs-xl:20px;--sx-lh-xs:1.4;--sx-lh-sm:1.45;--sx-lh-md:1.55;--sx-lh-lg:1.6;--sx-lh-xl:1.65;--sx-h1:34px;--sx-h1-lh:1.3;--sx-h2:26px;--sx-h2-lh:1.35;--sx-h3:22px;--sx-h3-lh:1.4;--sx-h4:18px;--sx-h4-lh:1.45;--sx-h5:16px;--sx-h5-lh:1.5;--sx-h6:14px;--sx-h6-lh:1.5;--sx-display-hero:clamp(64px, 16vw, 300px);--sx-display-1:48px;--sx-display-2:44px;--sx-display-3:38px;--sx-display-4:28px;--sx-display-5:24px;--sx-display-6:20px;--sx-fw-regular:400;--sx-fw-medium:500;--sx-fw-semibold:600;--sx-fw-bold:700;--sx-fw-black:900;--sx-tracking-display:-.02em;--sx-tracking-eyebrow:.05em;--sx-tracking-button:.5px;--sx-tracking-micro:.025em;--sx-space-xs:10px;--sx-space-sm:12px;--sx-space-md:16px;--sx-space-lg:20px;--sx-space-xl:32px;--sx-space-1:4px;--sx-space-2:8px;--sx-space-3:12px;--sx-space-4:16px;--sx-space-5:20px;--sx-space-6:24px;--sx-space-8:32px;--sx-space-12:48px;--sx-space-16:64px;--sx-space-24:96px;--sx-radius-xs:2px;--sx-radius-sm:4px;--sx-radius-md:8px;--sx-radius-default:12px;--sx-radius-lg:16px;--sx-radius-section:24px;--sx-radius-demo:28px;--sx-radius-xl:32px;--sx-radius-full:9999px;--sx-shadow-xs:0 1px 3px #0000000d, 0 1px 2px #0000001a;--sx-shadow-sm:0 1px 3px #0000000d, #0000000d 0 10px 15px -5px, #0000000a 0 7px 7px -5px;--sx-shadow-md:0 1px 3px #0000000d, #0000000d 0 20px 25px -5px, #0000000a 0 10px 10px -5px;--sx-shadow-lg:0 1px 3px #0000000d, #0000000d 0 28px 23px -7px, #0000000a 0 12px 12px -7px;--sx-shadow-xl:0 1px 3px #0000000d, #0000000d 0 36px 28px -7px, #0000000a 0 17px 17px -7px;--sx-shadow-card:0 1px 2px #0000000a, 0 8px 20px #0000000f;--sx-shadow-float:0 6px 30px #0003;--sx-shadow-pop:0 12px 32px #0000002e;--sx-ring-tag:0 0 0 2px #0086ff1a;--sx-ring-focus:0 0 0 3px #116fdf1a;--sx-focus-outline:2px solid var(--sx-color-primary);--sx-duration-fast:.15s;--sx-duration-base:.2s;--sx-duration-enter:.22s;--sx-duration-toast:.75s;--sx-ease-standard:cubic-bezier(.4, 0, .2, 1);--sx-ease-out:cubic-bezier(0, 0, .2, 1);--sx-ease-in:ease-in;--sx-app-header-height:56px;--sx-app-navbar-width:260px;--sx-app-nav-item-height:32px;--sx-app-sheet-radius:32px;--sx-site-header-height:60px;--sx-site-max-width:1240px;--sx-site-gutter:20px;--sx-bp-xs:36em;--sx-bp-sm:48em;--sx-bp-md:62em;--sx-bp-lg:75em;--sx-bp-xl:88em;--sx-z-app:100;--sx-z-modal:200;--sx-z-popover:300;--sx-z-overlay:400;--sx-z-max:9999;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--sx-color-body:var(--sx-dark-7);--sx-color-surface:var(--sx-dark-6);--sx-color-surface-subtle:var(--sx-dark-6);--sx-color-surface-muted:var(--sx-dark-8);--sx-color-hover:var(--sx-dark-5);--sx-color-selected:#1881ff38;--sx-color-selected-hover:#1881ff1f;--sx-color-text:var(--sx-dark-0);--sx-color-title:var(--sx-white);--sx-color-text-secondary:var(--sx-dark-1);--sx-color-dimmed:var(--sx-dark-2);--sx-color-placeholder:var(--sx-dark-3);--sx-color-disabled:var(--sx-dark-6);--sx-color-disabled-text:var(--sx-dark-3);--sx-color-link:var(--sx-blue-4);--sx-color-border-subtle:var(--sx-dark-5);--sx-color-border:var(--sx-dark-4);--sx-color-border-strong:var(--sx-dark-3);--sx-color-primary:var(--sx-blue-6);--sx-color-primary-hover:var(--sx-blue-7);--sx-color-primary-light:#3d94ff26;--sx-color-primary-light-hover:#3d94ff33;--sx-color-danger-light:#ef444426;--sx-color-success-light:#22c55e26;--sx-color-warning-light:#f59e0b26;--sx-color-neutral-light:#b2b4b826;--sx-loading-veil:#0000004d;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--sx-color-body:var(--sx-dark-7);--sx-color-surface:var(--sx-dark-6);--sx-color-surface-subtle:var(--sx-dark-6);--sx-color-surface-muted:var(--sx-dark-8);--sx-color-hover:var(--sx-dark-5);--sx-color-selected:#1881ff38;--sx-color-selected-hover:#1881ff1f;--sx-color-text:var(--sx-dark-0);--sx-color-title:var(--sx-white);--sx-color-text-secondary:var(--sx-dark-1);--sx-color-dimmed:var(--sx-dark-2);--sx-color-placeholder:var(--sx-dark-3);--sx-color-disabled:var(--sx-dark-6);--sx-color-disabled-text:var(--sx-dark-3);--sx-color-link:var(--sx-blue-4);--sx-color-border-subtle:var(--sx-dark-5);--sx-color-border:var(--sx-dark-4);--sx-color-border-strong:var(--sx-dark-3);--sx-color-primary:var(--sx-blue-6);--sx-color-primary-hover:var(--sx-blue-7);--sx-color-primary-light:#3d94ff26;--sx-color-primary-light-hover:#3d94ff33;--sx-color-danger-light:#ef444426;--sx-color-success-light:#22c55e26;--sx-color-warning-light:#f59e0b26;--sx-color-neutral-light:#b2b4b826;--sx-loading-veil:#0000004d;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root{--viewer-canvas:var(--sx-gray-1);--viewer-grid:var(--sx-gray-3);--viewer-grid-soft:var(--sx-gray-2);--viewer-highlight:var(--sx-blue-6);--viewer-light-sky:var(--sx-white);--viewer-light-ground:var(--sx-gray-3);--viewer-left-width:var(--sx-app-navbar-width);--viewer-right-width:320px}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--viewer-canvas:var(--sx-dark-8);--viewer-grid:var(--sx-dark-4);--viewer-grid-soft:var(--sx-dark-5);--viewer-light-sky:var(--sx-dark-0);--viewer-light-ground:var(--sx-dark-8)}}:root[data-theme=dark]{--viewer-canvas:var(--sx-dark-8);--viewer-grid:var(--sx-dark-4);--viewer-grid-soft:var(--sx-dark-5);--viewer-light-sky:var(--sx-dark-0);--viewer-light-ground:var(--sx-dark-8)}*,:before,:after{box-sizing:border-box}body{font-family:var(--sx-font-sans);font-size:var(--sx-fs-sm);line-height:var(--sx-lh-md);color:var(--sx-color-text);background:var(--sx-color-chrome);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;overflow:hidden}button,input,select,textarea{font-family:inherit}#app{grid-template-columns:var(--viewer-left-width) minmax(0, 1fr) var(--viewer-right-width);grid-template-rows:var(--sx-app-header-height) minmax(0, 1fr);height:100vh;display:grid}header{align-items:center;gap:var(--sx-space-sm);min-width:0;padding:0 var(--sx-space-md);color:var(--sx-color-on-chrome);background:var(--sx-color-chrome);grid-column:1/-1;display:flex}header h1{letter-spacing:-.02em;color:var(--sx-color-on-chrome);white-space:nowrap;align-items:baseline;gap:6px;margin:0;font-size:17px;font-weight:800;display:flex}header h1 span{font-weight:var(--sx-fw-medium);letter-spacing:0;color:var(--sx-blue-4)}header .meta{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:var(--sx-fs-compact);font-weight:var(--sx-fw-medium);color:var(--sx-color-on-chrome-muted);overflow:hidden}header label.meta{font-size:var(--sx-fs-xs);font-weight:var(--sx-fw-semibold);flex:none}header .quality-pill{height:20px;font-size:var(--sx-fs-xs);font-weight:var(--sx-fw-semibold);font-variant-numeric:tabular-nums;white-space:nowrap;border-radius:var(--sx-radius-full);color:var(--sx-color-on-chrome);background:var(--sx-color-on-chrome-hover);transition:background-color var(--sx-duration-fast) var(--sx-ease-standard), color var(--sx-duration-fast) var(--sx-ease-standard);flex:none;align-items:center;gap:6px;padding:0 8px;display:inline-flex}header .quality-pill:before{content:"";background:currentColor;border-radius:50%;width:6px;height:6px}header .quality-pill.scaffold,header .quality-pill.diagnostic{color:var(--sx-amber-4);background:#f59e0b26}header .quality-pill.typed{color:var(--sx-blue-3);background:#3d94ff26}header .quality-pill.geometry{color:var(--sx-green-4);background:#22c55e26}header .quality-pill.is-updated{animation:viewer-settle var(--sx-duration-enter) var(--sx-ease-out)}header .mode-select{height:30px;font-size:var(--sx-fs-xs);font-weight:var(--sx-fw-medium);color:var(--sx-color-on-chrome);border-radius:var(--sx-radius-md);appearance:none;cursor:pointer;transition:background-color var(--sx-duration-fast) var(--sx-ease-standard);background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23909398' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8 9l4-4 4 4M16 15l-4 4-4-4'/%3E%3C/svg%3E") right 8px center no-repeat;border:1px solid #fff3;flex:none;padding:0 28px 0 10px}header .mode-select:hover{background-color:var(--sx-color-on-chrome-hover)}header .mode-select option{color:var(--sx-black)}header .export-btn{height:32px;font-size:var(--sx-fs-sm);font-weight:var(--sx-fw-medium);color:var(--sx-color-on-chrome);border-radius:var(--sx-radius-md);white-space:nowrap;cursor:pointer;transition:background-color var(--sx-duration-fast) var(--sx-ease-standard), color var(--sx-duration-fast) var(--sx-ease-standard);background:0 0;border:0;flex:none;align-items:center;padding:6px 10px;line-height:1;display:inline-flex}header .export-btn:hover:not(:disabled){background:var(--sx-color-on-chrome-hover)}header .export-btn:disabled{color:var(--sx-color-on-chrome-muted);cursor:not-allowed}header .export-btn.primary{height:30px;font-size:var(--sx-fs-xs);font-weight:var(--sx-fw-semibold);color:var(--sx-color-primary-contrast);background:var(--sx-color-primary);border-radius:var(--sx-radius-xl);padding:0 14px}header .export-btn.primary:hover:not(:disabled){background:var(--sx-color-primary-hover)}header .export-btn.primary:disabled{color:var(--sx-color-disabled-text);background:var(--sx-gray-8)}header .export-btn:active:not(:disabled){transform:translateY(1px)}header .export-group{flex:none;align-items:center;gap:2px;display:inline-flex}header .export-hint{font-size:var(--sx-fs-xs);font-weight:var(--sx-fw-medium);color:var(--sx-color-on-chrome-muted);white-space:nowrap;flex:none}header .export-hint[hidden]{display:none}#sidebar-left,#sidebar-right{min-width:0;padding:var(--sx-space-md) var(--sx-space-sm) var(--sx-space-sm);background:var(--sx-color-body);overflow-y:auto}#sidebar-left{border-right:1px solid var(--sx-color-border-subtle);border-top-left-radius:var(--sx-app-sheet-radius)}#sidebar-right{border-left:1px solid var(--sx-color-border-subtle);border-top-right-radius:var(--sx-app-sheet-radius)}#sidebar-left h2,#sidebar-right h2{margin:var(--sx-space-md) 0 6px;font-size:var(--sx-fs-xs);font-weight:var(--sx-fw-bold);line-height:var(--sx-lh-xs);color:var(--sx-color-text-secondary);padding:0 4px}#sidebar-left h2:first-child,#sidebar-right h2:first-child{margin-top:4px}.tree-filter{margin:0 0 8px}.tree-filter input{width:100%;height:32px;font-size:var(--sx-fs-compact);color:var(--sx-color-text);background:var(--sx-color-surface);border:1px solid var(--sx-color-border);border-radius:var(--sx-radius-md);transition:border-color var(--sx-duration-fast) var(--sx-ease-standard);padding:0 10px}.tree-filter input::placeholder{color:var(--sx-color-dimmed)}.tree-filter input:focus-visible{border-color:var(--sx-color-primary);outline:none}.tree-filter input:disabled{cursor:not-allowed;opacity:.6}.tree-filter-status{font-size:var(--sx-fs-xs);color:var(--sx-color-dimmed);padding:4px 4px 0}.tree-filter-status:empty,.tree-item[hidden]{display:none}.tree-node{min-height:28px;font-size:var(--sx-fs-compact);font-weight:var(--sx-fw-medium);line-height:var(--sx-lh-xs);color:var(--sx-color-text);overflow-wrap:anywhere;border-radius:var(--sx-radius-md);cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color var(--sx-duration-fast) var(--sx-ease-standard);align-items:center;padding:4px 8px;display:flex}.tree-node:hover{background:var(--sx-color-selected-hover)}.tree-node.selected,.tree-node:focus-visible{background:var(--sx-color-selected);color:var(--sx-color-text)}.tree-node.tree-project{font-weight:var(--sx-fw-bold);color:var(--sx-color-title)}.tree-node.tree-storey{font-weight:var(--sx-fw-semibold)}.tree-node.tree-storey-empty{font-weight:var(--sx-fw-regular);color:var(--sx-color-dimmed)}.tree-node.tree-storey-unassigned{color:var(--sx-color-warning)}.tree-node.tree-category{font-weight:var(--sx-fw-semibold)}.tree-caret{border-radius:var(--sx-radius-sm);flex:none;justify-content:center;align-self:flex-start;align-items:center;width:16px;height:1lh;margin:0 4px 0 -4px;display:inline-flex}.tree-caret:before{content:"";border:solid var(--sx-color-dimmed);width:6px;height:6px;transition:transform var(--sx-duration-base) var(--sx-ease-standard);border-width:0 1.75px 1.75px 0;transform:translate(-1px)rotate(-45deg)}.tree-node[aria-expanded=true]>.tree-caret:before{transform:translateY(-1px)rotate(45deg)}.tree-caret-none:before{content:none}.tree-caret:not(.tree-caret-none):hover{background:var(--sx-color-selected-hover)}.tree-text{flex-direction:column;flex:auto;min-width:0;display:flex}.tree-detail{font-size:var(--sx-fs-xs);font-weight:var(--sx-fw-regular);color:var(--sx-color-dimmed)}.tree-node.tree-storey-unassigned .tree-detail{color:inherit}.tree-count{font-size:var(--sx-fs-xs);font-weight:var(--sx-fw-regular);font-variant-numeric:tabular-nums;color:var(--sx-color-dimmed);flex:none;padding-left:8px}.tree-children{border-left:1px solid var(--sx-color-border-subtle);margin-left:12px;padding-left:6px}.tree-children[hidden]{display:none}.category-toggle{min-height:30px;font-size:var(--sx-fs-compact);font-weight:var(--sx-fw-medium);border-radius:var(--sx-radius-md);cursor:pointer;transition:background-color var(--sx-duration-fast) var(--sx-ease-standard);align-items:center;gap:8px;padding:4px 8px;display:flex}.category-toggle:hover{background:var(--sx-color-selected-hover)}.category-toggle .tree-count{margin-left:auto}.category-empty{font-size:var(--sx-fs-xs);color:var(--sx-color-dimmed);padding:4px 8px}.category-toggle:focus-within{background:var(--sx-color-selected)}.category-toggle input{appearance:none;background:var(--sx-color-surface);border:1px solid var(--sx-color-border-strong);border-radius:var(--sx-radius-sm);cursor:pointer;width:16px;height:16px;transition:background-color var(--sx-duration-fast), border-color var(--sx-duration-fast);flex:none;place-items:center;margin:0;display:inline-grid}.category-toggle input:checked{background:var(--sx-color-primary);border-color:var(--sx-color-primary)}.category-toggle input:checked:after{content:"";border:0 solid #fff;border-width:0 0 2px 2px;width:8px;height:5px;transform:translateY(-1px)rotate(-45deg)}#viewport{background:var(--viewer-canvas);min-width:0;min-height:0;position:relative;overflow:hidden}#viewport canvas{width:100%;height:100%;display:block;position:absolute;inset:0}#dropzone{z-index:10;gap:var(--sx-space-6);padding:var(--sx-space-6) var(--sx-space-8);background:var(--sx-color-body);color:var(--sx-color-text);transition:background-color var(--sx-duration-base) var(--sx-ease-standard);flex-direction:column;display:flex;position:absolute;inset:0;overflow-y:auto}#dropzone.drag-over{background:var(--sx-color-selected-hover);box-shadow:inset 0 0 0 2px var(--sx-color-primary)}#dropzone.hidden{display:none}#dropzone h2{margin:0 0 var(--sx-space-3);font-size:var(--sx-h5);font-weight:var(--sx-fw-bold);line-height:var(--sx-h5-lh);color:var(--sx-color-title)}.support-card{gap:var(--sx-space-6);padding:var(--sx-space-5) var(--sx-space-6);background:var(--sx-color-surface);border:1px solid var(--sx-color-border-subtle);border-radius:var(--sx-radius-md);grid-template-columns:minmax(0,1fr) 260px;display:grid}.support-card-grid{min-width:0;overflow-x:auto}.support-grid{border-collapse:separate;border-spacing:4px 6px;width:100%;font-size:var(--sx-fs-xs);font-variant-numeric:tabular-nums}.support-grid th{font-weight:var(--sx-fw-medium);color:var(--sx-color-dimmed);text-align:center;white-space:nowrap}.support-grid th[scope=row],.support-grid thead th:first-child{padding-right:var(--sx-space-2);font-weight:var(--sx-fw-semibold);color:var(--sx-color-text);text-align:left}.support-grid td{min-width:28px;height:32px}.support-cell{border-radius:var(--sx-radius-sm)}.support-cell.typed{background:var(--sx-color-success)}.support-cell.verified{background:var(--sx-color-success-light);box-shadow:inset 0 0 0 1.5px var(--sx-color-success)}.support-cell.experimental{background:var(--sx-color-warning-light);outline:1.5px dashed var(--sx-color-warning);outline-offset:-1.5px}.support-cell.not-measured{outline:1.5px dashed var(--sx-color-border-strong);outline-offset:-1.5px}.support-legend{gap:var(--sx-space-2) var(--sx-space-5);margin:var(--sx-space-3) 0 0;font-size:var(--sx-fs-xs);color:var(--sx-color-dimmed);flex-wrap:wrap;padding:0;list-style:none;display:flex}.support-legend li{align-items:center;gap:var(--sx-space-2);display:inline-flex}.support-legend .support-cell{width:18px;height:12px;display:inline-block}.support-legend-note{flex-basis:100%}.support-card-rows .support-matrix{margin:0;display:block}.support-card-rows .support-link{margin-right:var(--sx-space-3)}.open-row{gap:var(--sx-space-6);grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);align-items:start;display:grid}.drop-target{padding:var(--sx-space-6);text-align:center;border:1px dashed var(--sx-color-border-strong);border-radius:var(--sx-radius-md);flex-direction:column;align-items:center;display:flex}.plan-drawing{width:min(100%,300px);height:auto;margin-bottom:var(--sx-space-4);color:var(--sx-color-dimmed)}#dropzone .big{font-size:var(--sx-h3);font-weight:var(--sx-fw-bold);line-height:var(--sx-h3-lh);color:var(--sx-color-title);text-align:center;margin-bottom:6px}#dropzone .hint{max-width:440px;font-size:var(--sx-fs-sm);line-height:var(--sx-lh-sm);color:var(--sx-color-dimmed);text-align:center}#dropzone .hint a{color:var(--sx-color-link);font-weight:var(--sx-fw-medium);text-decoration:none}#dropzone .hint a:hover{text-decoration:underline}#pick-file{height:36px;margin-top:var(--sx-space-lg);font-size:var(--sx-fs-sm);font-weight:var(--sx-fw-semibold);color:var(--sx-color-primary-contrast);background:var(--sx-color-primary);border-radius:var(--sx-radius-xl);cursor:pointer;transition:background-color var(--sx-duration-fast) var(--sx-ease-standard);border:1px solid #0000;justify-content:center;align-items:center;padding:0 18px;line-height:1;display:inline-flex}#pick-file:hover{background:var(--sx-color-primary-hover)}#pick-file:active{transform:translateY(1px)}#demo-gallery{text-align:left;min-width:0}#demo-gallery .gallery-attribution{margin-bottom:var(--sx-space-sm);font-size:var(--sx-fs-xs);line-height:var(--sx-lh-xs);color:var(--sx-color-dimmed)}#demo-list{border-top:1px solid var(--sx-color-border-subtle);display:grid}.demo-card{gap:var(--sx-space-3);width:100%;min-height:52px;padding:var(--sx-space-2) var(--sx-space-1);font:inherit;color:inherit;text-align:left;border:0;border-bottom:1px solid var(--sx-color-border-subtle);cursor:pointer;transition:background-color var(--sx-duration-fast) var(--sx-ease-standard);background:0 0;border-radius:0;grid-template-columns:56px minmax(0,1fr) auto;align-items:center;text-decoration:none;display:grid;position:relative}.demo-card:hover:not(:disabled){background:var(--sx-color-selected-hover)}.demo-card:active:not(:disabled){background:var(--sx-color-selected)}.demo-card:disabled{cursor:not-allowed;opacity:.55}.demo-card:focus-visible{outline:2px solid var(--sx-color-primary);outline-offset:-2px}.demo-card img{object-fit:cover;background:var(--sx-color-surface-muted);border:1px solid var(--sx-color-border-subtle);border-radius:var(--sx-radius-sm);width:56px;height:36px;transition:opacity var(--sx-duration-base) var(--sx-ease-standard)}.demo-card:disabled img,.demo-card[aria-busy=true] img{opacity:.5}.demo-card .demo-body{min-width:0}.demo-card .demo-title{font-size:var(--sx-fs-compact);font-weight:var(--sx-fw-semibold);line-height:var(--sx-lh-xs);color:var(--sx-color-text)}.demo-card .demo-meta{font-size:11px;line-height:var(--sx-lh-xs);color:var(--sx-color-dimmed);text-overflow:ellipsis;white-space:nowrap;font-variant-numeric:tabular-nums;margin-top:2px;overflow:hidden}.demo-card .demo-quality,.demo-badge{height:20px;font-size:var(--sx-fs-xs);font-weight:var(--sx-fw-semibold);border-radius:var(--sx-radius-full);white-space:nowrap;align-items:center;padding:0 8px;display:inline-flex}.demo-card .demo-quality{color:var(--sx-color-dimmed);background:var(--sx-color-neutral-light)}.demo-card .demo-quality.geometry{color:var(--sx-color-success);background:var(--sx-color-success-light)}.demo-badge{vertical-align:1px;color:var(--sx-color-text);box-shadow:inset 0 0 0 1px var(--sx-color-border);background:0 0;margin-left:8px}.demo-card[aria-busy=true]{cursor:progress}.demo-card[aria-busy=true] .demo-title{color:var(--sx-color-dimmed)}.demo-card[aria-busy=true]:before,.demo-card[aria-busy=true]:after{content:"";height:2px;position:absolute;bottom:-1px}.demo-card[aria-busy=true]:before{left:var(--sx-space-sm);right:var(--sx-space-sm);background:var(--sx-color-surface-muted)}.demo-card[aria-busy=true]:after{left:var(--sx-space-sm);background:var(--sx-color-primary);width:33%;animation:viewer-sweep 1.4s var(--sx-ease-standard) infinite}.demo-card.is-flagged{animation:viewer-flag 1.1s var(--sx-ease-standard) 2}#load-overlay{z-index:11;background:var(--sx-loading-veil);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);place-items:center;display:grid;position:absolute;inset:0}#load-overlay.hidden{display:none}.load-card{width:min(420px,84%);padding:var(--sx-space-md);background:var(--sx-color-surface);border:1px solid var(--sx-color-border-subtle);border-radius:var(--sx-radius-default);box-shadow:var(--sx-shadow-md);animation:viewer-enter var(--sx-duration-enter) var(--sx-ease-out) both}#load-step{font-size:var(--sx-fs-sm);font-weight:var(--sx-fw-semibold);line-height:var(--sx-lh-sm);color:var(--sx-color-text)}.sweep-rail{background:var(--sx-color-surface-muted);border-radius:var(--sx-radius-full);height:8px;position:relative;overflow:hidden}.sweep-rail:after{content:"";background:var(--sx-color-primary);border-radius:inherit;width:33%;animation:viewer-sweep 1.4s var(--sx-ease-standard) infinite;position:absolute;inset:0 auto 0 0}.load-card .sweep-rail{margin:var(--sx-space-sm) 0 var(--sx-space-xs)}#load-metrics{justify-content:space-between;gap:var(--sx-space-sm);font-size:var(--sx-fs-xs);color:var(--sx-color-dimmed);font-variant-numeric:tabular-nums;display:flex}.load-privacy{margin-top:var(--sx-space-xs);padding-top:var(--sx-space-xs);font-size:var(--sx-fs-xs);color:var(--sx-color-dimmed);border-top:1px solid var(--sx-color-border-subtle)}#scaffold-note{z-index:8;pointer-events:none;animation:viewer-enter var(--sx-duration-enter) var(--sx-ease-out) both;place-items:center;display:grid;position:absolute;inset:0}#scaffold-note.hidden{display:none}.note-card{width:min(460px,86%);padding:var(--sx-space-sm) var(--sx-space-md);pointer-events:auto;color:var(--sx-color-text);background:linear-gradient(var(--sx-color-warning-light), var(--sx-color-warning-light)), var(--sx-color-surface);border-radius:var(--sx-radius-default);box-shadow:var(--sx-shadow-sm)}.note-title{font-size:var(--sx-fs-sm);font-weight:var(--sx-fw-bold);color:var(--sx-color-warning);margin:0 0 2px}.note-card p{max-width:58ch;font-size:var(--sx-fs-sm);line-height:var(--sx-lh-sm);margin:0}.note-actions{margin-top:var(--sx-space-sm);gap:8px;display:flex}.note-btn{height:30px;font-size:var(--sx-fs-xs);font-weight:var(--sx-fw-semibold);color:var(--sx-color-primary-contrast);background:var(--sx-color-primary);border-radius:var(--sx-radius-xl);cursor:pointer;transition:background-color var(--sx-duration-fast) var(--sx-ease-standard);border:1px solid #0000;align-items:center;padding:0 14px;line-height:1;display:inline-flex}.note-btn:hover{background:var(--sx-color-primary-hover)}.note-btn:active{transform:translateY(1px)}.note-btn.quiet{color:var(--sx-color-text);background:var(--sx-color-surface);border-color:var(--sx-color-border)}.note-btn.quiet:hover{background:var(--sx-color-hover)}#toast-region{right:var(--sx-space-sm);bottom:var(--sx-space-sm);z-index:12;pointer-events:none;justify-items:end;gap:8px;display:grid;position:absolute}.toast{max-width:min(360px,62%);padding:var(--sx-space-sm) var(--sx-space-sm) var(--sx-space-sm) 14px;font-size:var(--sx-fs-xs);line-height:var(--sx-lh-xs);color:var(--sx-color-text);overflow-wrap:anywhere;background:var(--sx-color-surface);border:1px solid var(--sx-color-border-subtle);border-radius:var(--sx-radius-default);box-shadow:var(--sx-shadow-lg);animation:viewer-toast-in var(--sx-duration-enter) var(--sx-ease-out) both;align-items:flex-start;gap:10px;display:flex}.toast:before{content:"";background:var(--sx-color-primary);border-radius:50%;flex:none;width:8px;height:8px;margin-top:4px}.toast.ok:before{background:var(--sx-color-success)}.toast.bad:before{background:var(--sx-color-danger)}.toast.leaving{animation:viewer-toast-out var(--sx-duration-base) var(--sx-ease-standard) both}#status{bottom:var(--sx-space-sm);left:var(--sx-space-sm);overflow-wrap:anywhere;max-width:min(520px,100% - 24px);font-size:var(--sx-fs-xs);line-height:var(--sx-lh-xs);color:var(--sx-color-dimmed);background:var(--sx-color-surface);border:1px solid var(--sx-color-border);border-radius:var(--sx-radius-md);transition:border-color var(--sx-duration-fast) var(--sx-ease-standard), color var(--sx-duration-fast) var(--sx-ease-standard);padding:6px 10px;position:absolute;overflow:hidden}#status.is-busy{color:var(--sx-color-text);border-color:var(--sx-blue-2)}#status.is-busy:after{content:"";background:var(--sx-color-primary);width:40%;height:2px;animation:viewer-sweep 1.4s var(--sx-ease-standard) infinite;position:absolute;bottom:0;left:0}.status-panel{margin-bottom:var(--sx-space-xs);border:1px solid var(--sx-color-border);border-radius:var(--sx-radius-md);display:grid;overflow:hidden}.status-row{font-size:var(--sx-fs-xs);line-height:var(--sx-lh-xs);border-bottom:1px solid var(--sx-color-border-subtle);animation:viewer-enter var(--sx-duration-base) var(--sx-ease-out) both;animation-delay:calc(var(--row-i,0) * 22ms);grid-template-columns:10px 88px 1fr;align-items:start;gap:8px;padding:7px 10px;display:grid}.status-dot{background:var(--sx-color-border-strong);width:8px;height:8px;transition:background-color var(--sx-duration-base) var(--sx-ease-standard);border-radius:50%;margin-top:4px}.status-dot.ok{background:var(--sx-color-success)}.status-dot.warn{background:var(--sx-color-warning)}.status-dot.bad{background:var(--sx-color-danger)}.status-dot.idle{box-shadow:inset 0 0 0 1.5px var(--sx-color-border-strong);background:0 0}.status-row:last-child{border-bottom:0}.status-label{font-weight:var(--sx-fw-semibold);color:var(--sx-color-text)}.status-value{color:var(--sx-color-dimmed);font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.side-btn{width:100%;height:30px;font-size:var(--sx-fs-xs);font-weight:var(--sx-fw-semibold);color:var(--sx-color-text);background:var(--sx-color-surface);border:1px solid var(--sx-color-border);border-radius:var(--sx-radius-xl);cursor:pointer;transition:background-color var(--sx-duration-fast) var(--sx-ease-standard);justify-content:center;align-items:center;margin:4px 0 8px;padding:0 14px;line-height:1;display:inline-flex}.side-btn:hover:not(:disabled){background:var(--sx-color-hover)}.side-btn:active:not(:disabled){transform:translateY(1px)}.side-btn:disabled{color:var(--sx-color-disabled-text);background:var(--sx-color-disabled);cursor:not-allowed;border-color:#0000}#diagnostics-details,.panel-details{margin-bottom:var(--sx-space-sm);font-size:var(--sx-fs-xs);color:var(--sx-color-dimmed);background:var(--sx-color-surface);border:1px solid var(--sx-color-border-subtle);border-radius:var(--sx-radius-md);overflow:hidden}#diagnostics-details summary,.panel-details>summary,.support-row>summary{font-weight:var(--sx-fw-medium);color:var(--sx-color-text);cursor:pointer;justify-content:space-between;align-items:center;padding:8px 12px;list-style:none;display:flex}#diagnostics-details summary::-webkit-details-marker{display:none}.panel-details>summary::-webkit-details-marker{display:none}.support-row>summary::-webkit-details-marker{display:none}#diagnostics-details summary:after,.panel-details>summary:after,.support-row>summary:after{content:"";border:solid var(--sx-color-dimmed);width:6px;height:6px;transition:transform var(--sx-duration-base) var(--sx-ease-standard);border-width:0 1.75px 1.75px 0;margin-right:2px;transform:translateY(-2px)rotate(45deg)}#diagnostics-details[open] summary:after,.panel-details[open]>summary:after,.support-row[open]>summary:after{transform:translateY(1px)rotate(-135deg)}#diagnostics-json{max-height:260px;color:var(--sx-color-text);white-space:pre-wrap;word-break:break-word;overflow-wrap:anywhere;background:var(--sx-color-surface-subtle);border:1px solid var(--sx-color-border-subtle);border-radius:var(--sx-radius-md);margin:0 12px 12px;padding:10px 12px;font-family:inherit;font-size:11px;line-height:1.6;overflow:auto}.mvp-workflow{font-size:var(--sx-fs-xs);line-height:var(--sx-lh-sm);color:var(--sx-color-dimmed);margin:0;padding:0 12px 12px}.mvp-workflow strong{font-weight:var(--sx-fw-semibold);color:var(--sx-color-text)}.support-matrix{margin-bottom:var(--sx-space-sm);font-size:var(--sx-fs-xs);line-height:var(--sx-lh-xs);gap:2px;display:grid}.support-row{border-bottom:1px solid var(--sx-color-border-subtle)}.support-row>summary{padding:8px 4px}.support-row .v{padding:0 4px 10px;display:block}.support-row .k{font-weight:var(--sx-fw-semibold);color:var(--sx-color-text)}.support-row .v{color:var(--sx-color-dimmed)}.support-link{font-size:var(--sx-fs-xs);font-weight:var(--sx-fw-medium);color:var(--sx-color-link);align-items:center;padding:6px 4px 0;text-decoration:none;display:inline-flex}.support-link:hover{text-decoration:underline}#info{font-size:var(--sx-fs-xs);line-height:var(--sx-lh-xs);color:var(--sx-color-dimmed)}.info-group{background:var(--sx-color-surface-subtle);border-radius:var(--sx-radius-md);margin-top:8px;padding:8px 12px}.info-group:first-child{margin-top:0}.info-group-storey,.info-group-material{background:var(--sx-color-selected-hover)}.info-group-gap{background:var(--sx-color-warning-light)}.info-group-title{font-size:var(--sx-fs-xs);font-weight:var(--sx-fw-semibold);color:var(--sx-color-text);padding-bottom:4px}.info-row{font-size:var(--sx-fs-xs);line-height:var(--sx-lh-xs);border-bottom:1px solid var(--sx-color-border-subtle);grid-template-columns:110px 1fr;gap:8px;padding:4px 0;display:grid}.info-group .info-row:last-child{border-bottom:none}.info-row .k{color:var(--sx-color-dimmed)}.info-row .v{color:var(--sx-color-text);font-variant-numeric:tabular-nums;word-break:break-all;overflow-wrap:anywhere}.info-row .v.num{word-break:normal}.info-gap-note{font-size:var(--sx-fs-xs);line-height:var(--sx-lh-xs);color:var(--sx-color-text)}.info-details>summary{cursor:pointer;list-style:none}.info-details>summary::-webkit-details-marker{display:none}.info-details>summary:before{content:"";border:solid var(--sx-color-dimmed);width:5px;height:5px;transition:transform var(--sx-duration-base) var(--sx-ease-standard);border-width:0 1.75px 1.75px 0;margin:0 8px 2px 1px;display:inline-block;transform:rotate(-45deg)}.info-details[open]>summary:before{transform:rotate(45deg)}.info-details>summary:hover{color:var(--sx-color-primary)}.info-relations{border-top:1px solid var(--sx-color-border-subtle);gap:2px;margin-top:8px;padding-top:8px;display:grid}.info-relations-title{font-size:var(--sx-fs-xs);font-weight:var(--sx-fw-semibold);color:var(--sx-color-text);padding:0 4px 2px}.info-relation{width:100%;min-height:30px;font:inherit;font-size:var(--sx-fs-xs);font-weight:var(--sx-fw-medium);color:var(--sx-color-link);text-align:left;border-radius:var(--sx-radius-md);cursor:pointer;transition:background-color var(--sx-duration-fast) var(--sx-ease-standard);background:0 0;border:0;padding:6px 8px;display:block}.info-layer{width:100%;font:inherit;font-size:var(--sx-fs-xs);text-align:left;border:0;border-bottom:1px solid var(--sx-color-border-subtle);cursor:pointer;transition:background-color var(--sx-duration-fast) var(--sx-ease-standard);background:0 0;border-radius:0;margin:0}.info-layer .k{color:var(--sx-color-link)}.info-layer:hover{background:var(--sx-color-selected-hover)}.info-layer[aria-pressed=true]{background:var(--sx-color-selected)}.info-layer[aria-pressed=true] .k{color:var(--sx-color-text)}.info-relation:hover{background:var(--sx-color-selected-hover)}.info-relation[aria-pressed=true]{color:var(--sx-color-text);background:var(--sx-color-selected)}.schedule-total{font-size:var(--sx-fs-xs);line-height:var(--sx-lh-xs);color:var(--sx-color-dimmed);font-variant-numeric:tabular-nums;padding:0 4px}.schedule-groups{display:grid}.schedule-groups:not(:empty){border-top:1px solid var(--sx-color-border-subtle);margin:8px 0 4px}.schedule-row{width:100%;font:inherit;font-size:var(--sx-fs-compact);text-align:left;color:var(--sx-color-text);border:0;border-bottom:1px solid var(--sx-color-border-subtle);background:0 0;grid-template-columns:1fr auto 60px;align-items:baseline;gap:8px;padding:7px 8px;display:grid}.schedule-row .schedule-type{font-weight:var(--sx-fw-medium);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.schedule-row .schedule-count{color:var(--sx-color-dimmed);text-align:right;font-variant-numeric:tabular-nums}.schedule-row .schedule-verb{font-size:var(--sx-fs-xs);font-weight:var(--sx-fw-medium);color:var(--sx-color-link);text-align:right}button.schedule-row{cursor:pointer;transition:background-color var(--sx-duration-fast) var(--sx-ease-standard)}button.schedule-row:hover{background:var(--sx-color-selected-hover)}button.schedule-row[aria-pressed=true]{background:var(--sx-color-selected)}button.schedule-row[aria-pressed=true] .schedule-count{color:var(--sx-color-text)}.skip-link{z-index:var(--sx-z-max);height:30px;font-size:var(--sx-fs-xs);font-weight:var(--sx-fw-semibold);color:var(--sx-color-primary-contrast);background:var(--sx-color-primary);border-radius:var(--sx-radius-xl);align-items:center;padding:0 14px;text-decoration:none;display:inline-flex;position:absolute;top:-56px;left:8px}.skip-link:focus{top:13px}:focus-visible{outline:var(--sx-focus-outline);outline-offset:2px}button:focus:not(:focus-visible),a:focus:not(:focus-visible),summary:focus:not(:focus-visible),input:focus:not(:focus-visible),select:focus:not(:focus-visible),.tree-node:focus:not(:focus-visible),.demo-card:focus:not(:focus-visible){outline:none}@keyframes viewer-sweep{0%{transform:translate(-100%)}to{transform:translate(300%)}}@keyframes viewer-enter{0%{opacity:0;transform:translateY(2px)}to{opacity:1;transform:none}}@keyframes viewer-toast-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes viewer-toast-out{0%{opacity:1}to{opacity:0;transform:translateY(4px)}}@keyframes viewer-settle{0%{box-shadow:0 0 #1881ff66}to{box-shadow:0 0 0 6px #1881ff00}}@keyframes viewer-flag{0%,to{box-shadow:0 0 #1881ff00}40%{box-shadow:0 0 0 2px var(--sx-color-primary)}}@media (max-width:960px){body{overflow:auto}#app{grid-template-rows:auto auto minmax(42vh,52vh) auto;grid-template-columns:minmax(0,1fr);height:auto;min-height:100vh}header{height:auto;min-height:var(--sx-app-header-height);flex-wrap:wrap;row-gap:8px;padding:12px 16px}#sidebar-left{border-right:none;border-top:1px solid var(--sx-color-border-subtle);border-radius:0;order:3;max-height:36vh}#viewport{border-radius:var(--sx-app-sheet-radius) var(--sx-app-sheet-radius) 0 0;order:2;min-height:42vh}#sidebar-right{border-left:none;border-top:1px solid var(--sx-color-border-subtle);border-radius:0;order:4}#demo-gallery{width:min(100%,560px)}}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (max-width:1600px){.support-card{grid-template-columns:minmax(0,1fr)}}@media (max-width:1365px){.open-row{grid-template-columns:minmax(0,1fr)}}@media (max-width:560px){header h1{font-size:15px}header .meta{width:100%}#dropzone .big{font-size:var(--sx-h4)}.support-row,.status-row,.info-row{grid-template-columns:1fr;gap:2px}.schedule-row{grid-template-columns:1fr auto}.schedule-row .schedule-verb{display:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:1ms!important;transition-delay:0s!important;animation-duration:1ms!important;animation-iteration-count:1!important;animation-delay:0s!important}.demo-card:active:not(:disabled),header .export-btn:active:not(:disabled),.side-btn:active:not(:disabled),.note-btn:active,#pick-file:active{transform:none}.sweep-rail:after,.demo-card[aria-busy=true]:after,#status.is-busy:after{width:100%;animation:none;transform:none}}
