.loft-gv{display:flex;flex-direction:column;width:100%;height:100%;background:var(--color-surface-primary);color:var(--color-text-body);font-family:var(--font-sans)}.loft-gv__toolbar{display:flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-3);height:44px;background:var(--color-surface-secondary);border-bottom:1px solid var(--color-border-subtle);flex-shrink:0}.loft-gv__toolbar-group{display:flex;align-items:center;gap:var(--space-1)}.loft-gv__toolbar-divider{width:1px;height:24px;background:var(--color-border-subtle);margin:0 var(--space-2)}.loft-gv__toolbar-spacer{flex:1}.loft-gv__btn{display:inline-flex;align-items:center;gap:var(--space-1);padding:6px 10px;background:transparent;border:1px solid transparent;border-radius:var(--radius-sm);color:var(--color-text-body);font-size:.875rem;font-weight:500;cursor:pointer;transition:background .12s,border-color .12s}.loft-gv__btn:hover:not(:disabled){background:var(--color-surface-tertiary);border-color:var(--color-border-subtle)}.loft-gv__btn:disabled{opacity:.5;cursor:not-allowed}.loft-gv__btn.is-active,.loft-gv__btn[aria-pressed=true]{background:var(--color-surface-tertiary);border-color:var(--color-accent-cyan);color:var(--color-heading)}.loft-gv__btn--icon{padding:6px}.loft-gv__btn--mode i{font-size:1rem}.loft-gv__body{display:flex;flex:1;min-height:0}.loft-gv__center{flex:1;display:flex;flex-direction:column;min-width:0;position:relative}.loft-gv__minimap{position:absolute;right:var(--space-2);bottom:var(--space-2);background:var(--color-surface-secondary);border:1px solid var(--color-border-subtle);border-radius:var(--radius-sm);padding:4px;display:flex;flex-direction:column;align-items:center;z-index:10;cursor:pointer;transition:border-color .12s}.loft-gv__minimap:hover{border-color:var(--color-accent-cyan)}.loft-gv__minimap-canvas{background:var(--color-surface-primary);border-radius:var(--radius-sm);display:block}.loft-gv__minimap-label{margin-top:2px;font-size:.625rem;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em}.loft-gv__rail{position:relative;width:var(--gv-rail-width, 260px);min-width:200px;max-width:480px;flex-shrink:0;background:var(--color-surface-secondary);border-right:1px solid var(--color-border-subtle);overflow-y:auto}.loft-gv__rail-resizer{position:absolute;top:0;right:-3px;width:6px;height:100%;cursor:col-resize;z-index:5;background:transparent;transition:background .12s ease}.loft-gv__rail-resizer:hover,.loft-gv__rail-resizer.is-dragging{background:var(--color-accent-cyan);opacity:.4}.loft-gv__layer.is-dragging{opacity:.5}.loft-gv__layer.is-drop-target-above{box-shadow:inset 0 2px 0 0 var(--color-accent-cyan)}.loft-gv__layer.is-drop-target-below{box-shadow:inset 0 -2px 0 0 var(--color-accent-cyan)}.loft-gv__layer-drag{cursor:grab;color:var(--color-text-muted);padding:4px 2px;font-size:.875rem;user-select:none;display:inline-flex;align-items:center;border-radius:var(--radius-sm);width:18px;flex-shrink:0}.loft-gv__layer-drag:hover{color:var(--color-heading);background:var(--color-surface-tertiary)}.loft-gv__layer-drag:active{cursor:grabbing}.loft-gv__rail-search{display:flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-3);border-bottom:1px solid var(--color-border-subtle);background:var(--color-surface-tertiary);position:relative}.loft-gv__rail-search>i{color:var(--color-text-muted);font-size:.875rem;flex-shrink:0}.loft-gv__rail-search-input{flex:1;background:transparent;border:none;outline:none;color:var(--color-heading);font-size:.8125rem;font-family:var(--font-mono);padding:var(--space-1) 0;min-width:0}.loft-gv__rail-search-input::placeholder{color:var(--color-text-muted)}.loft-gv__rail-search-input:focus::placeholder{color:transparent}.loft-gv__rail-search-clear{background:transparent;border:none;color:var(--color-text-muted);cursor:pointer;padding:2px;display:flex;align-items:center;border-radius:var(--radius-sm)}.loft-gv__rail-search-clear:hover{color:var(--color-heading);background:var(--color-surface-card)}.loft-gv__layer-opacity{flex:1;min-width:60px;height:6px;margin:0 var(--space-1);cursor:ew-resize;appearance:none;background:var(--color-surface-card, #2a2a3a);border:1px solid var(--color-border-subtle);border-radius:var(--radius-pill);align-self:center}.loft-gv__layer-opacity:disabled{opacity:.4;cursor:not-allowed}.loft-gv__layer-opacity-readout{font-family:var(--font-mono);font-size:.625rem;color:var(--color-text-muted);font-variant-numeric:tabular-nums;width:30px;text-align:right;flex-shrink:0}.loft-gv__layer-opacity::-webkit-slider-thumb{appearance:none;width:14px;height:14px;border-radius:50%;background:var(--color-accent-cyan);cursor:ew-resize;border:2px solid var(--color-surface-secondary);box-shadow:0 0 0 1px var(--color-accent-cyan)}.loft-gv__layer-opacity::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:var(--color-accent-cyan);cursor:ew-resize;border:none}.loft-gv__layer-group{list-style:none}.loft-gv__layer-group-header{display:flex;align-items:center;gap:var(--space-1);width:100%;background:var(--color-surface-tertiary);border:none;border-top:1px solid var(--color-border-subtle);border-bottom:1px solid var(--color-border-subtle);color:var(--color-text-muted);padding:var(--space-1) var(--space-3);font-family:var(--font-mono);font-size:.6875rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;cursor:pointer;text-align:left}.loft-gv__layer-group-header:hover{color:var(--color-heading)}.loft-gv__layer-group-header>i{font-size:.875rem;flex-shrink:0}.loft-gv__layer-group-count{margin-left:auto;background:var(--color-surface-card);color:var(--color-text-muted);padding:1px 6px;border-radius:var(--radius-pill);font-weight:500}.loft-gv__layer-group-list{list-style:none;padding:0;margin:0}.loft-gv__layer.is-selected{background:linear-gradient(90deg,color-mix(in srgb,var(--color-accent-cyan) 14%,transparent),transparent 60%);border-left:2px solid var(--color-accent-cyan);padding-left:calc(var(--space-2) - 2px)}.loft-gv__layer{position:relative}.loft-gv__layer-solo,.loft-gv__layer-menu-btn{background:transparent;border:1px solid var(--color-border-subtle);color:var(--color-text-muted);cursor:pointer;padding:4px 6px;border-radius:var(--radius-sm);display:inline-flex;align-items:center;justify-content:center;font-size:1rem;flex-shrink:0;width:28px;height:28px}.loft-gv__layer-solo:hover,.loft-gv__layer-menu-btn:hover{color:var(--color-accent-cyan);border-color:var(--color-accent-cyan);background:color-mix(in srgb,var(--color-accent-cyan) 12%,transparent)}.loft-gv__stackup{padding:var(--space-2) 0 var(--space-2)}.loft-gv__stackup-header{display:flex;align-items:center;justify-content:space-between;padding:0 var(--space-3) var(--space-2);border-bottom:1px solid var(--color-border-subtle)}.loft-gv__stackup-header h3{font-family:var(--font-mono);font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;color:var(--color-heading);margin:0}.loft-gv__stackup-count{font-family:var(--font-mono);font-size:.6875rem;color:var(--color-text-muted)}.loft-gv__stackup-list{list-style:none;padding:0;margin:0}.loft-gv__stackup-divider{margin-top:var(--space-2)}.loft-gv__stackup-section{display:block;font-family:var(--font-mono);font-size:.625rem;text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-muted);padding:var(--space-1) var(--space-3) 2px}.loft-gv__stackup-row{display:grid;grid-template-columns:24px minmax(60px,auto) 1fr 24px;align-items:center;width:100%;gap:var(--space-2);padding:4px var(--space-3);background:transparent;border:none;border-left:2px solid transparent;color:var(--color-text-body);cursor:pointer;font-size:.75rem;text-align:left}.loft-gv__stackup-row:hover{background:var(--color-surface-tertiary)}.loft-gv__stackup-row.is-selected{border-left-color:var(--color-accent-cyan);background:color-mix(in srgb,var(--color-accent-cyan) 10%,transparent)}.loft-gv__stackup-band{display:block;width:18px;border-radius:2px;border:1px solid var(--color-border-subtle);align-self:center}.loft-gv__stackup-meta{display:flex;flex-direction:column;gap:1px;font-family:var(--font-mono);font-size:.6875rem}.loft-gv__stackup-kind{color:var(--color-heading);text-transform:capitalize}.loft-gv__stackup-side{color:var(--color-text-muted);font-size:.625rem}.loft-gv__stackup-file{color:var(--color-text-muted);font-family:var(--font-mono);font-size:.625rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.loft-gv__stackup-vis{background:transparent;border:none;color:var(--color-text-muted);cursor:pointer;padding:2px;display:flex;align-items:center}.loft-gv__stackup-vis:hover{color:var(--color-accent-cyan)}.loft-gv__stackup-note{font-family:var(--font-mono);font-size:.625rem;color:var(--color-text-muted);padding:var(--space-2) var(--space-3) 0;margin:0;border-top:1px solid var(--color-border-subtle)}.loft-gv__zoom-readout{display:inline-flex;align-items:center;justify-content:center;min-width:48px;padding:0 var(--space-2);font-family:var(--font-mono);font-size:.75rem;color:var(--color-text-muted);font-variant-numeric:tabular-nums}.loft-gv__measure-ref{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);padding:var(--space-1) var(--space-2);background:color-mix(in srgb,var(--color-accent-cyan) 10%,transparent);border:1px solid color-mix(in srgb,var(--color-accent-cyan) 30%,transparent);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:.75rem;color:var(--color-heading)}.loft-gv__measure-ref>span{display:inline-flex;align-items:center;gap:var(--space-1)}.loft-gv__measure-ref>span>i{color:var(--color-accent-cyan)}.loft-gv__measure-index{display:inline-block;min-width:20px;text-align:right;color:var(--color-text-muted);font-family:var(--font-mono);font-size:.6875rem;font-variant-numeric:tabular-nums;margin-right:var(--space-2)}.loft-gv__measure-actions{display:flex;gap:var(--space-1);flex-wrap:wrap}.loft-gv__measure-actions .loft-gv__btn{flex:1 1 auto;min-width:60px}.loft-gv__kv-muted{color:var(--color-text-muted);font-size:.875em}.loft-gv__kv-actions{margin-top:var(--space-2)}.loft-gv__kv-actions .loft-gv__btn{width:100%}.loft-gv__layer-detail-controls{display:flex;flex-direction:column;gap:var(--space-2);margin-top:var(--space-2)}.loft-gv__field{display:flex;flex-direction:column;gap:4px;font-size:.6875rem;font-family:var(--font-mono);color:var(--color-text-muted)}.loft-gv__field input[type=range]{width:100%;appearance:none;height:4px;background:var(--color-border-subtle);border-radius:var(--radius-pill);cursor:ew-resize}.loft-gv__field input[type=range]::-webkit-slider-thumb{appearance:none;width:14px;height:14px;border-radius:50%;background:var(--color-accent-cyan);border:none;cursor:ew-resize}.loft-gv__field input[type=range]::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:var(--color-accent-cyan);border:none;cursor:ew-resize}.loft-gv__panel-row{display:flex;gap:var(--space-1);align-items:center}.loft-gv__panel-search{flex:1;background:var(--color-surface-tertiary);border:1px solid var(--color-border-subtle);border-radius:var(--radius-sm);color:var(--color-heading);font-family:var(--font-mono);font-size:.75rem;padding:4px var(--space-2);min-width:0}.loft-gv__panel-search:focus{outline:none;border-color:var(--color-accent-cyan)}.loft-gv__panel-search::placeholder{color:var(--color-text-muted)}.loft-gv__panel-hint{font-family:var(--font-mono);font-size:.75rem;color:var(--color-text-muted);text-align:center;padding:var(--space-2);margin:0}.loft-gv__col-sort{background:transparent;border:none;color:inherit;font:inherit;text-transform:inherit;letter-spacing:inherit;cursor:pointer;padding:0}.loft-gv__col-sort:hover{color:var(--color-accent-cyan)}.loft-gv__btn-flash{font-size:.625rem;margin-left:4px;color:var(--color-accent-cyan)}.loft-gv__chip{display:inline-block;padding:1px 6px;border-radius:var(--radius-pill);background:color-mix(in srgb,var(--color-accent-cyan) 15%,transparent);border:1px solid color-mix(in srgb,var(--color-accent-cyan) 35%,transparent);color:var(--color-heading);font-size:.625rem;font-family:var(--font-mono);letter-spacing:.04em}.loft-gv__chip--muted{background:var(--color-surface-tertiary);border-color:var(--color-border-subtle);color:var(--color-text-muted)}.loft-gv__chip--warn{background:color-mix(in srgb,var(--color-accent-amber, #fbbf24) 14%,transparent);border-color:color-mix(in srgb,var(--color-accent-amber, #fbbf24) 40%,transparent);color:var(--color-accent-amber, #fbbf24);margin-left:4px}.loft-gv__chip--warn i{font-size:.75rem}.loft-gv__drc-rules{display:flex;flex-direction:column;gap:4px;background:var(--color-surface-tertiary);padding:var(--space-2);border-radius:var(--radius-sm);border:1px solid var(--color-border-subtle)}.loft-gv__drc-rule-row{display:flex;flex-direction:column;gap:4px;padding:4px 0;font-size:.75rem}.loft-gv__drc-rule-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-2)}.loft-gv__drc-rule-label{color:var(--color-text-body);display:inline-flex;align-items:center;gap:4px;white-space:nowrap}.loft-gv__drc-rule-override{color:var(--color-accent-cyan);font-size:.5rem}.loft-gv__drc-rule-value{font-family:var(--font-mono);font-size:.6875rem;color:var(--color-heading);white-space:nowrap;font-variant-numeric:tabular-nums}.loft-gv__drc-rule-row input[type=range]{width:100%;appearance:none;height:4px;background:var(--color-border-subtle);border-radius:var(--radius-pill);cursor:ew-resize}.loft-gv__drc-rule-row input[type=range]::-webkit-slider-thumb{appearance:none;width:12px;height:12px;border-radius:50%;background:var(--color-accent-cyan);border:none;cursor:ew-resize}.loft-gv__drc-rule-row input[type=range]::-moz-range-thumb{width:12px;height:12px;border-radius:50%;background:var(--color-accent-cyan);border:none;cursor:ew-resize}.loft-gv__btn--small{font-size:.6875rem;padding:2px 8px}.loft-gv__btn--small.is-active{background:color-mix(in srgb,var(--color-accent-cyan) 18%,transparent);color:var(--color-heading);border-color:color-mix(in srgb,var(--color-accent-cyan) 40%,transparent)}.loft-gv__popover-wrap{position:relative;display:inline-block}.loft-gv__popover{position:absolute;top:calc(100% + 6px);right:0;z-index:30;min-width:260px;background:var(--color-surface-card, #18181f);border:1px solid var(--color-border-strong, var(--color-border-subtle));border-radius:var(--radius-md);padding:var(--space-3);box-shadow:0 12px 32px #0009;display:flex;flex-direction:column;gap:var(--space-2)}.loft-gv__measure-tips{background:var(--color-surface-tertiary);border:1px solid var(--color-border-subtle);border-radius:var(--radius-sm);padding:var(--space-1) var(--space-2)}.loft-gv__measure-tips-head{background:transparent;border:none;width:100%;display:flex;align-items:center;gap:var(--space-1);color:var(--color-text-body);font-size:.75rem;font-family:var(--font-mono);cursor:pointer;padding:4px 0}.loft-gv__measure-tips-head:hover{color:var(--color-accent-cyan)}.loft-gv__measure-tips-list{list-style:none;padding:var(--space-1) 0 var(--space-1) var(--space-3);margin:0;font-size:.75rem;color:var(--color-text-body);display:flex;flex-direction:column;gap:4px}.loft-gv__measure-tips-list li strong{color:var(--color-heading)}.loft-gv__measure-tips-list kbd{background:var(--color-surface-card);border:1px solid var(--color-border-subtle);border-radius:var(--radius-sm);padding:0 4px;font-family:var(--font-mono);font-size:.6875rem;color:var(--color-accent-cyan)}.loft-gv__kvlist--shortcuts dt{font-family:var(--font-mono);font-size:.6875rem;color:var(--color-accent-cyan);background:var(--color-surface-tertiary);border:1px solid var(--color-border-subtle);border-radius:var(--radius-sm);padding:0 6px;display:inline-block;white-space:nowrap}.loft-gv__rail-header{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-1);padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--color-border-subtle)}.loft-gv__rail-toolbar{display:flex;gap:2px;margin-left:auto}.loft-gv__rail-btn{background:transparent;border:1px solid var(--color-border-subtle);color:var(--color-text-muted);font-size:.6875rem;padding:2px 6px;border-radius:var(--radius-sm);cursor:pointer;font-family:var(--font-mono)}.loft-gv__rail-btn:hover{color:var(--color-heading);border-color:var(--color-accent-cyan)}.loft-gv__rail-btn.is-active,.loft-gv__rail-btn[aria-pressed=true]{background:color-mix(in srgb,var(--color-accent-cyan) 12%,transparent);border-color:var(--color-accent-cyan);color:var(--color-heading)}.loft-gv__rail.is-drop-hover{background:var(--color-surface-tertiary);outline:2px dashed var(--color-accent-cyan);outline-offset:-4px}.loft-gv__layer-order{display:flex;flex-direction:column;gap:1px;margin-left:var(--space-1)}.loft-gv__layer-order-btn{background:transparent;border:1px solid var(--color-border-subtle);color:var(--color-text-muted);cursor:pointer;padding:2px 6px;border-radius:var(--radius-sm);font-size:.75rem;line-height:1;width:22px;height:16px;display:inline-flex;align-items:center;justify-content:center}.loft-gv__layer-order-btn:hover:not(:disabled){color:var(--color-heading);background:var(--color-surface-secondary)}.loft-gv__layer-order-btn:disabled{opacity:.3;cursor:not-allowed}.loft-gv__layer-override{color:var(--color-accent-cyan);margin-left:4px;font-style:italic}.loft-gv__menu-backdrop{position:fixed;inset:0;z-index:80}.loft-gv__context-menu{position:fixed;z-index:81;min-width:200px;background:var(--color-surface-card, #18181f);border:1px solid var(--color-border-strong, var(--color-border-subtle));border-radius:var(--radius-md);padding:6px;box-shadow:0 12px 32px #0009;font-size:.8125rem;backdrop-filter:none}.loft-gv__menu-item{padding:8px 12px}.loft-gv__menu-item{display:block;width:100%;text-align:left;background:transparent;border:0;padding:6px 10px;color:var(--color-text-body);cursor:pointer;border-radius:var(--radius-sm);font-family:inherit;font-size:inherit}.loft-gv__menu-item:hover{background:var(--color-surface-tertiary);color:var(--color-heading)}.loft-gv__menu-item.is-checked{color:var(--color-accent-cyan)}.loft-gv__menu-section{padding:6px 10px 2px;font-size:.6875rem;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted)}.loft-gv__menu-divider{height:1px;background:var(--color-border-subtle);margin:4px 0}.loft-gv__rail-title{margin:0;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted)}.loft-gv__rail-count{font-size:.75rem;color:var(--color-text-muted);font-variant-numeric:tabular-nums}.loft-gv__rail-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-6) var(--space-3);height:100%;text-align:center;gap:var(--space-1)}.loft-gv__rail-empty-icon{font-size:2.5rem;color:var(--color-text-muted);margin-bottom:var(--space-1);opacity:.6}.loft-gv__rail-empty-title{margin:0;font-size:.875rem;font-weight:600;color:var(--color-heading)}.loft-gv__rail-empty-hint{margin:0;font-size:.75rem;color:var(--color-text-muted)}.loft-gv__layer-list{list-style:none;margin:0;padding:var(--space-2)}.loft-gv__layer{display:flex;flex-direction:row;align-items:stretch;gap:0;padding:0;border-radius:var(--radius-sm);border:1px solid transparent;margin-bottom:4px;overflow:hidden;cursor:pointer}.loft-gv__layer-stack{flex:1;display:flex;flex-direction:column;gap:4px;padding:6px var(--space-2) 8px;min-width:0}.loft-gv__layer-drag--full{align-self:stretch;width:12px;display:flex;align-items:center;justify-content:center;background:transparent;color:transparent;flex-shrink:0;transition:background-color 80ms ease,color 80ms ease}.loft-gv__layer:hover .loft-gv__layer-drag--full{color:var(--color-text-muted);background:color-mix(in srgb,var(--color-text-muted) 6%,transparent)}.loft-gv__layer-drag--full:hover{color:var(--color-heading);background:color-mix(in srgb,var(--color-accent-cyan) 14%,transparent)}.loft-gv__layer-drag--full>i{font-size:.875rem;line-height:1}.loft-gv__layer-row--buttons{display:flex;align-items:center;gap:2px}.loft-gv__layer-row-spacer{flex:1}.loft-gv__layer-row--name{display:flex;align-items:center;gap:6px;min-width:0}.loft-gv__layer-row--name .loft-gv__layer-name{flex:1;min-width:0;display:flex;flex-direction:row;align-items:baseline;flex-wrap:nowrap;gap:6px;overflow:hidden}.loft-gv__layer-warn-btn{margin-left:auto;flex-shrink:0;cursor:pointer;border:1px solid color-mix(in srgb,var(--color-accent-amber, #fbbf24) 40%,transparent)}.loft-gv__layer-warn-btn:hover{background:color-mix(in srgb,var(--color-accent-amber, #fbbf24) 22%,transparent)}.loft-gv__layer.is-compact .loft-gv__layer-stack{padding:4px var(--space-2)}.loft-gv__layer.is-compact .loft-gv__layer-name{flex-direction:row;align-items:baseline;gap:6px}.loft-gv__layer.is-compact .loft-gv__layer-filename{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:0 1 auto;word-break:normal}.loft-gv__layer.is-compact .loft-gv__layer-meta{font-size:.625rem;flex-shrink:0}.loft-gv__layer.is-compact .loft-gv__layer-z,.loft-gv__layer.is-compact .loft-gv__layer-meta-sep:last-of-type{display:none}.loft-gv__layer.is-compact .loft-gv__layer-row--name .loft-gv__layer-vis,.loft-gv__layer.is-compact .loft-gv__layer-row--name .loft-gv__layer-color,.loft-gv__layer.is-compact .loft-gv__layer-row--name .loft-gv__layer-menu-btn{flex-shrink:0}.loft-gv__layer:hover{background:var(--color-surface-tertiary)}.loft-gv__layer.is-selected{background:color-mix(in srgb,var(--color-accent-cyan) 14%,transparent);border-color:color-mix(in srgb,var(--color-accent-cyan) 50%,transparent)}.loft-gv__layer.is-selected:hover{background:color-mix(in srgb,var(--color-accent-cyan) 18%,transparent)}.loft-gv__layer-row{display:flex;align-items:center;gap:var(--space-2)}.loft-gv__layer-row--controls{display:flex;align-items:center;padding-top:2px;gap:var(--space-1)}.loft-gv__layer-vis,.loft-gv__layer-lock{background:transparent;border:0;padding:4px;cursor:pointer;color:var(--color-text-body);border-radius:var(--radius-sm);font-size:1rem;display:flex;align-items:center;flex-shrink:0}.loft-gv__layer-vis[aria-pressed=true]{color:var(--color-text-heading)}.loft-gv__layer-vis[aria-pressed=false]{color:var(--color-text-muted);opacity:.55}.loft-gv__layer-vis:hover,.loft-gv__layer-lock:hover{background:var(--color-surface-card);color:var(--color-heading);opacity:1}.loft-gv__layer-lock{color:var(--color-text-muted)}.loft-gv__layer-lock.is-locked{color:var(--color-accent-cyan)}.loft-gv__layer-color{width:24px;height:24px;border:1px solid var(--color-border-subtle);border-radius:var(--radius-sm);background:transparent;cursor:pointer;padding:0;flex-shrink:0}.loft-gv__layer-name{width:100%;background:transparent;border:0;text-align:left;display:flex;flex-direction:row;flex-wrap:nowrap;align-items:baseline;gap:4px;color:inherit;padding:0;min-width:0;overflow:hidden}.loft-gv__layer-filename{display:flex;flex:1 1 auto;min-width:1.5ch;font-size:.8125rem;font-weight:500;color:var(--color-heading);overflow:hidden}.loft-gv__layer-filename--single{display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.loft-gv__layer-filename-head{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.loft-gv__layer-filename-tail{flex:0 0 auto;white-space:nowrap}.loft-gv__layer-kind{flex-shrink:0;font-size:.6875rem;color:var(--color-text-body);white-space:nowrap}.loft-gv__layer-meta{font-size:.6875rem;text-transform:capitalize;display:inline-flex;gap:4px;align-items:baseline;color:var(--color-text-body);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.loft-gv__layer-kind{color:var(--color-heading);font-weight:500}.loft-gv__layer-meta-sep{color:var(--color-text-muted);opacity:.6}.loft-gv__layer-side{color:var(--color-text-muted)}.loft-gv__layer-z{font-family:var(--font-mono);color:var(--color-accent-cyan);text-transform:none;font-size:.625rem}.loft-gv__layer-warn{color:var(--color-accent-amber, #fbbf24);font-size:.875rem}.loft-gv__canvas-wrap{flex:1;min-width:0;position:relative;background:var(--color-surface-primary);overflow:hidden;cursor:default}.loft-gv__canvas-wrap--select{cursor:default}.loft-gv__canvas-wrap--pan{cursor:grab}.loft-gv__canvas-wrap--pan:active{cursor:grabbing}.loft-gv__canvas-wrap--measure{cursor:crosshair}.loft-gv__canvas-wrap--inspect{cursor:help}.loft-gv__canvas{position:absolute;inset:0;width:100%;height:100%;display:block;pointer-events:none}.loft-gv__processing-overlay{position:absolute;inset:0;z-index:10;display:flex;align-items:center;justify-content:center;background:var(--color-surface-overlay);pointer-events:all}.loft-gv__processing-card{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);padding:var(--space-5) var(--space-6);background:var(--color-surface-elevated);border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);min-width:220px;max-width:320px;box-shadow:0 12px 32px -12px #00000080}.loft-gv__processing-label{font-size:.95rem;font-weight:600;color:var(--color-text-heading);margin-top:var(--space-1)}.loft-gv__processing-sublabel{font-size:.8rem;color:var(--color-text-muted)}.loft-gv__processing-bar{width:100%;height:4px;border-radius:999px;background:var(--color-surface-tertiary);overflow:hidden;margin-top:var(--space-1)}.loft-gv__processing-fill{height:100%;background:var(--color-accent-primary);border-radius:inherit;transition:width .2s var(--easing-out, cubic-bezier(.4, 0, .2, 1))}.loft-gv__canvas-empty{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-2);color:var(--color-text-muted);font-size:.9375rem;pointer-events:none}.loft-gv__canvas-empty i{font-size:2rem;color:var(--color-accent-cyan)}.loft-gv__rightpane{width:300px;flex-shrink:0;background:var(--color-surface-secondary);border-left:1px solid var(--color-border-subtle);display:flex;flex-direction:column;overflow:hidden;min-height:0}.loft-gv__rightpane-scroll{flex:1;overflow-y:auto;min-height:0}.loft-gv__history-pinned{flex:0 0 360px;display:flex;flex-direction:column;border-top:1px solid var(--color-border-subtle);background:var(--color-surface-tertiary);min-height:0}.loft-gv__history-pinned-head{display:flex;align-items:center;gap:8px;padding:8px 12px;border-bottom:1px solid var(--color-border-subtle);font-size:.75rem;font-weight:600;color:var(--color-heading);text-transform:uppercase;letter-spacing:.05em}.loft-gv__history-pinned-head i{color:var(--color-accent-cyan)}.loft-gv__history-count{margin-left:auto;font-family:var(--font-mono);font-size:.6875rem;color:var(--color-text-muted);font-weight:400;letter-spacing:0;text-transform:none}.loft-gv__history-pinned-body{flex:1;overflow-y:auto;padding:6px 8px}.loft-gv__history{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:1px}.loft-gv__history-row{margin:0}.loft-gv__history-btn{display:flex;align-items:center;gap:8px;width:100%;padding:6px 8px;border-radius:var(--radius-sm);border:1px solid transparent;background:transparent;color:var(--color-text-body);font-size:.75rem;text-align:left;cursor:pointer;font-family:inherit}.loft-gv__history-btn:hover:not(:disabled){background:var(--color-surface-card);border-color:var(--color-border-subtle);color:var(--color-heading)}.loft-gv__history-btn:disabled{cursor:default;opacity:.85}.loft-gv__history-icon{color:var(--color-text-muted);font-size:.875rem;flex-shrink:0}.loft-gv__history-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.loft-gv__history-tag{font-size:.625rem;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;padding:1px 6px;background:var(--color-surface-card);border:1px solid var(--color-border-subtle);border-radius:var(--radius-pill);flex-shrink:0}.loft-gv__history-tag--head{color:var(--color-accent-cyan);border-color:color-mix(in srgb,var(--color-accent-cyan) 35%,transparent)}.loft-gv__history-row--undone .loft-gv__history-btn{color:var(--color-text-muted)}.loft-gv__history-row--undone .loft-gv__history-label{text-decoration:line-through;text-decoration-color:var(--color-border-subtle)}.loft-gv__history-row--head .loft-gv__history-btn{color:var(--color-heading);font-weight:600}.loft-gv__history-row--origin{margin-top:6px;padding-top:6px;border-top:1px dashed var(--color-border-subtle)}.loft-gv__history-now{display:flex;align-items:center;gap:8px;margin:4px 0;padding:0 4px;font-size:.625rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--color-accent-cyan)}.loft-gv__history-now-line{flex:1;height:1px;background:color-mix(in srgb,var(--color-accent-cyan) 35%,transparent)}.loft-gv__history-now-label{display:inline-flex;align-items:center;gap:4px}.loft-gv__accordion{border-bottom:1px solid var(--color-border-subtle)}.loft-gv__accordion-summary{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);cursor:pointer;list-style:none;user-select:none;color:var(--color-heading);font-size:.8125rem;font-weight:500}.loft-gv__accordion-summary::-webkit-details-marker{display:none}.loft-gv__accordion-summary:hover{background:var(--color-surface-tertiary)}.loft-gv__accordion-label{flex:1}.loft-gv__accordion-caret{transition:transform .12s;color:var(--color-text-muted);font-size:.875rem}.loft-gv__accordion-caret.is-open{transform:rotate(180deg)}.loft-gv__accordion-body{padding:var(--space-3);background:var(--color-surface-primary);border-top:1px solid var(--color-border-subtle)}.loft-gv__panel-stack,.loft-gv__panel{display:flex;flex-direction:column;gap:var(--space-3)}.loft-gv__kv-clip{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.loft-gv__aperture-table{width:100%;border-collapse:collapse;font-size:.75rem;table-layout:fixed;min-width:220px}.loft-gv__aperture-table-wrap{overflow-x:auto;border:1px solid var(--color-border-subtle);border-radius:var(--radius-sm);background:var(--color-surface-tertiary)}.loft-gv__aperture-table colgroup col:nth-child(1){width:36px}.loft-gv__aperture-table colgroup col:nth-child(2){width:auto}.loft-gv__aperture-table colgroup col:nth-child(3){width:64px}.loft-gv__aperture-table colgroup col:nth-child(4){width:30px}.loft-gv__aperture-table th,.loft-gv__aperture-table td{padding:4px 6px;text-align:left;border-bottom:1px solid var(--color-border-subtle);vertical-align:middle;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.loft-gv__aperture-table th{color:var(--color-text-muted);font-weight:500;text-transform:uppercase;letter-spacing:.05em;font-size:.6875rem;white-space:nowrap}.loft-gv__aperture-id{font-family:var(--font-mono);color:var(--color-accent-cyan)}.loft-gv__aperture-row--clickable{cursor:pointer;transition:background .08s ease}.loft-gv__aperture-row--clickable:hover,.loft-gv__aperture-row--clickable:focus-visible{background:var(--color-surface-tertiary);outline:none}.loft-gv__aperture-row--clickable:focus-visible{box-shadow:inset 0 0 0 1px var(--color-accent-cyan)}.loft-gv__aperture-row--active{background:color-mix(in srgb,var(--color-accent-cyan) 14%,transparent);box-shadow:inset 2px 0 0 var(--color-accent-cyan)}.loft-gv__aperture-row--active:hover{background:color-mix(in srgb,var(--color-accent-cyan) 20%,transparent)}.loft-gv__fieldset{border:1px solid var(--color-border-subtle);border-radius:var(--radius-sm);padding:var(--space-2)}.loft-gv__fieldset legend{font-size:.6875rem;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;padding:0 var(--space-1)}.loft-gv__btn-row{display:flex;gap:var(--space-1)}.loft-gv__field{display:flex;flex-direction:column;gap:4px}.loft-gv__field-label{font-size:.6875rem;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted)}.loft-gv__select{background:var(--color-surface-tertiary);border:1px solid var(--color-border-subtle);border-radius:var(--radius-sm);color:var(--color-text-body);padding:6px 8px;font-size:.8125rem;font-family:inherit}.loft-gv__drc-clean{color:var(--color-accent-cyan);font-weight:500}.loft-gv__drc-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px;max-height:280px;overflow-y:auto}.loft-gv__drc-row{display:flex;flex-direction:column;width:100%;text-align:left;background:transparent;border:1px solid transparent;border-radius:var(--radius-sm);padding:6px 8px;cursor:pointer;font-size:.75rem;color:var(--color-text-body)}.loft-gv__drc-row:hover{background:var(--color-surface-tertiary);border-color:var(--color-border-subtle)}.loft-gv__drc-rule{color:var(--color-accent-cyan);font-family:var(--font-mono);font-size:.6875rem;text-transform:uppercase;letter-spacing:.05em}.loft-gv__drc-msg{color:var(--color-text-body)}.loft-gv__drc-group{display:flex;flex-direction:column}.loft-gv__drc-group-head{display:flex;align-items:center;gap:var(--space-1);background:transparent;border:0;padding:6px 8px;cursor:pointer;color:var(--color-text-body);text-align:left;font-size:.75rem;width:100%}.loft-gv__drc-group-head:hover{background:var(--color-surface-tertiary)}.loft-gv__drc-count{margin-left:auto;color:var(--color-text-muted);font-variant-numeric:tabular-nums}.loft-gv__drc-sublist{list-style:none;margin:0;padding:0 0 0 var(--space-3);display:flex;flex-direction:column}.loft-gv__three-d-stub{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-3);background:var(--color-surface-primary);color:var(--color-text-muted);text-align:center;padding:var(--space-6)}.loft-gv__three-d-stub i{font-size:4rem;color:var(--color-accent-cyan);opacity:.6}.loft-gv__three-d-stub h3{margin:0;font-size:1.125rem;color:var(--color-heading)}.loft-gv__three-d-stub p{margin:0;max-width:480px;line-height:1.5}.loft-gv__panel-warnings{list-style:none;margin:var(--space-2) 0 0;padding:var(--space-2);display:flex;flex-direction:column;gap:4px;font-size:.75rem;color:var(--color-accent-amber, #fbbf24);background:color-mix(in srgb,var(--color-accent-amber, #fbbf24) 8%,transparent);border:1px solid color-mix(in srgb,var(--color-accent-amber, #fbbf24) 30%,transparent);border-radius:var(--radius-sm)}.loft-gv__panel-warnings li{display:flex;align-items:flex-start;gap:6px;line-height:1.4}.loft-gv__panel-warnings li i{flex-shrink:0;margin-top:2px}.loft-gv__readiness{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3);border-radius:var(--radius-md);border:1px solid var(--color-border-subtle);background:var(--color-surface-tertiary)}.loft-gv__readiness--green{border-color:color-mix(in srgb,var(--color-success) 40%,transparent)}.loft-gv__readiness--yellow{border-color:color-mix(in srgb,var(--color-warning) 40%,transparent)}.loft-gv__readiness--red{border-color:color-mix(in srgb,var(--color-error) 40%,transparent)}.loft-gv__readiness-score{font-size:2.25rem;font-weight:700;font-variant-numeric:tabular-nums;line-height:1}.loft-gv__readiness--green .loft-gv__readiness-score{color:var(--color-success)}.loft-gv__readiness--yellow .loft-gv__readiness-score{color:var(--color-warning)}.loft-gv__readiness--red .loft-gv__readiness-score{color:var(--color-error)}.loft-gv__readiness-label{font-size:.6875rem;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted)}.loft-gv__readiness-band{font-size:.875rem;color:var(--color-heading);font-weight:500}.loft-gv__readiness-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px;font-size:.75rem}.loft-gv__readiness-list li{display:flex;gap:var(--space-2);align-items:baseline}.loft-gv__readiness-delta{color:var(--color-error);font-family:var(--font-mono);font-variant-numeric:tabular-nums;min-width:32px}.loft-gv__readiness-msg{color:var(--color-text-body)}.loft-gv__test-layers{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px;font-size:.8125rem}.loft-gv__test-layer{display:flex;align-items:center;gap:var(--space-2)}.loft-gv__test-layer.is-present{color:var(--color-success)}.loft-gv__test-layer.is-missing{color:var(--color-error)}.loft-gv__stackup-empty{padding:var(--space-6) var(--space-3);text-align:center;color:var(--color-text-muted);font-size:.8125rem}.loft-gv__stackup-empty i{display:block;font-size:2.5rem;margin-bottom:var(--space-2);opacity:.5}.loft-gv__stackup{padding:var(--space-2)}.loft-gv__stackup-header{display:flex;align-items:baseline;justify-content:space-between;padding:var(--space-2)}.loft-gv__stackup-header h3{margin:0;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted)}.loft-gv__stackup-count{font-size:.75rem;color:var(--color-text-muted)}.loft-gv__stackup-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}.loft-gv__stackup-row{display:grid;grid-template-columns:16px 1fr;align-items:center;gap:var(--space-2);padding:6px var(--space-2);border-radius:var(--radius-sm);font-size:.75rem}.loft-gv__stackup-row.is-hidden{opacity:.4}.loft-gv__stackup-swatch{width:16px;height:16px;border-radius:2px;border:1px solid var(--color-border-subtle)}.loft-gv__stackup-label{display:flex;flex-direction:column;gap:1px;min-width:0}.loft-gv__stackup-name{color:var(--color-heading);text-transform:capitalize;font-weight:500}.loft-gv__stackup-side{color:var(--color-text-muted);font-size:.6875rem;text-transform:capitalize}.loft-gv__stackup-file{display:none}.loft-gv__stackup-note{margin:var(--space-3) var(--space-2) 0;font-size:.6875rem;color:var(--color-text-muted);line-height:1.4}.loft-gv__rail-tabs{display:flex;border-bottom:1px solid var(--color-border-subtle)}.loft-gv__rail-tab{flex:1;background:transparent;border:0;border-bottom:2px solid transparent;padding:var(--space-2);color:var(--color-text-muted);font-size:.75rem;cursor:pointer;font-weight:500}.loft-gv__rail-tab.is-active{color:var(--color-heading);border-bottom-color:var(--color-accent-cyan)}.loft-gv__palette-card{position:relative;width:90vw;max-width:600px;max-height:70vh;background:var(--color-surface-secondary);border:1px solid var(--color-border-subtle);border-radius:var(--radius-lg);display:flex;flex-direction:column;overflow:hidden;box-shadow:0 16px 48px #00000080}.loft-gv__palette-input{background:transparent;border:0;border-bottom:1px solid var(--color-border-subtle);padding:var(--space-3);color:var(--color-heading);font-size:.9375rem;font-family:inherit;outline:none}.loft-gv__palette-input::placeholder{color:var(--color-text-muted)}.loft-gv__palette-list{list-style:none;margin:0;padding:var(--space-1);overflow-y:auto;flex:1}.loft-gv__palette-row{display:flex;align-items:center;gap:var(--space-2);padding:8px 10px;border-radius:var(--radius-sm);cursor:pointer;font-size:.875rem;color:var(--color-text-body)}.loft-gv__palette-row.is-active{background:var(--color-surface-tertiary);color:var(--color-heading)}.loft-gv__palette-cat{font-size:.625rem;text-transform:uppercase;letter-spacing:.05em;color:var(--color-accent-cyan);min-width:56px;font-family:var(--font-mono)}.loft-gv__palette-label{flex:1}.loft-gv__palette-kbd{font-size:.6875rem;color:var(--color-text-muted);background:var(--color-surface-tertiary);border:1px solid var(--color-border-subtle);padding:2px 6px;border-radius:var(--radius-sm);font-family:var(--font-mono)}.loft-gv__palette-empty{padding:var(--space-4);text-align:center;color:var(--color-text-muted);font-size:.875rem}.loft-gv__find-card{position:relative;width:90vw;max-width:480px;background:var(--color-surface-secondary);border:1px solid var(--color-border-subtle);border-radius:var(--radius-lg);display:flex;flex-direction:column;overflow:hidden;box-shadow:0 16px 48px #00000080}.loft-gv__find-error{margin:0;padding:var(--space-2) var(--space-3);background:var(--color-error-bg-soft);color:var(--color-error);font-size:.8125rem}.loft-gv__find-hint{margin:0;padding:var(--space-2) var(--space-3) var(--space-3);font-size:.75rem;color:var(--color-text-muted)}.loft-gv__net-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px;max-height:300px;overflow-y:auto}.loft-gv__net-row{display:flex;align-items:baseline;gap:var(--space-2);background:transparent;border:1px solid transparent;border-radius:var(--radius-sm);padding:4px 8px;cursor:pointer;font-size:.75rem;text-align:left;width:100%;color:var(--color-text-body)}.loft-gv__net-row:hover{background:var(--color-surface-tertiary);border-color:var(--color-border-subtle)}.loft-gv__net-id{color:var(--color-accent-cyan);font-family:var(--font-mono);min-width:36px}.loft-gv__net-meta{color:var(--color-text-muted)}.loft-gv__panel-title{margin:0;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted)}.loft-gv__panel-text{margin:0;font-size:.875rem;line-height:1.5;color:var(--color-text-body)}.loft-gv__panel-text--muted{color:var(--color-text-muted);font-size:.75rem}.loft-gv__panel-hint{margin:0;font-size:.8125rem;color:var(--color-text-muted);line-height:1.5}.loft-gv__kvlist{display:grid;grid-template-columns:auto 1fr;gap:4px var(--space-3);margin:0;font-size:.8125rem}.loft-gv__kvlist dt{color:var(--color-text-muted);font-weight:500}.loft-gv__kvlist dd{margin:0;color:var(--color-heading);font-variant-numeric:tabular-nums;word-break:break-word}.loft-gv__measure-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-1)}.loft-gv__measure-item{display:flex;align-items:center;justify-content:space-between;padding:var(--space-2);background:var(--color-surface-tertiary);border-radius:var(--radius-sm)}.loft-gv__measure-value{font-variant-numeric:tabular-nums;font-weight:500;color:var(--color-heading)}.loft-gv__measure-remove{background:transparent;border:0;color:var(--color-text-muted);cursor:pointer;padding:2px;border-radius:var(--radius-sm)}.loft-gv__measure-remove:hover{color:var(--color-heading);background:var(--color-surface-secondary)}.loft-gv__statusbar{display:flex;align-items:center;gap:var(--space-3);padding:0 var(--space-3);height:28px;background:var(--color-surface-secondary);border-top:1px solid var(--color-border-subtle);font-size:.75rem;flex-shrink:0}.loft-gv__statusbar-group{display:inline-flex;align-items:center;gap:var(--space-1)}.loft-gv__statusbar-spacer{flex:1}.loft-gv__status-label{color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em}.loft-gv__status-value{color:var(--color-heading);font-variant-numeric:tabular-nums;text-transform:capitalize}.loft-gv__status-mono{font-family:var(--font-mono);text-transform:none}.loft-gv__status-hint{color:var(--color-text-muted);margin-left:var(--space-2);font-size:.6875rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:480px}@media(max-width:1100px){.loft-gv__status-hint{display:none}}.loft-gv__status-dirty{color:var(--color-accent-cyan);font-size:1rem}.loft-gv__trust-pill{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;background:var(--color-surface-tertiary);border:1px solid var(--color-border-subtle);border-radius:var(--radius-pill);color:var(--color-heading);font-size:.6875rem}.loft-gv__dropzone-shell{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:clamp(16px,3vw,40px);background:var(--color-surface-primary)}.loft-gv__modal{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center}.loft-gv__modal-backdrop{position:absolute;inset:0;background:var(--color-surface-overlay);backdrop-filter:blur(6px)}.loft-gv__modal-card{position:relative;background:var(--color-surface-card, #18181f);border:1px solid var(--color-border-strong, var(--color-border-subtle));border-radius:var(--radius-lg);padding:var(--space-4);min-width:360px;max-width:600px;max-height:80vh;overflow-y:auto;box-shadow:0 24px 48px #000000b3}.loft-gv__modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-3)}.loft-gv__modal-header h2{margin:0;font-size:1.125rem;color:var(--color-heading)}.loft-gv__shortcuts{width:100%;border-collapse:collapse;font-size:.875rem}.loft-gv__shortcuts td{padding:6px 8px;border-bottom:1px solid var(--color-border-subtle)}.loft-gv__kbd-cell{font-family:var(--font-mono);color:var(--color-text-muted);white-space:nowrap;width:1%}.loft-gv__shortcuts kbd{background:var(--color-surface-tertiary);border:1px solid var(--color-border-subtle);border-radius:var(--radius-sm);padding:2px 6px;font-size:.75rem}.loft-gv__export-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-2)}.loft-gv__export-btn{display:flex;flex-direction:column;align-items:center;gap:4px;padding:var(--space-4);background:var(--color-surface-tertiary);border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);color:var(--color-text-body);cursor:pointer;transition:border-color .12s}.loft-gv__export-btn:hover:not(:disabled){border-color:var(--color-accent-cyan)}.loft-gv__export-btn:disabled{opacity:.5;cursor:not-allowed}.loft-gv__export-btn i{font-size:2rem;color:var(--color-accent-cyan)}.loft-gv__export-label{font-weight:600;color:var(--color-heading)}.loft-gv__export-hint{font-size:.75rem;color:var(--color-text-muted)}@media(max-width:768px){.loft-gv__rail,.loft-gv__rightpane,.loft-gv__btn span{display:none}}.loft-gv__mapping-backdrop{position:fixed;inset:0;background:var(--color-surface-overlay);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:100;padding:var(--space-4)}.loft-gv__mapping{background:var(--color-surface-card, #18181f);border:1px solid var(--color-border-subtle);border-radius:var(--radius-lg);box-shadow:0 24px 48px #000000b3;max-width:800px;width:100%;max-height:80vh;display:flex;flex-direction:column;overflow:hidden}.loft-gv__mapping-header{padding:var(--space-4);border-bottom:1px solid var(--color-border-subtle);flex-shrink:0}.loft-gv__mapping-title{display:flex;align-items:center;gap:var(--space-2);margin:0 0 var(--space-1);font-size:1.125rem;color:var(--color-heading)}.loft-gv__mapping-subtitle{margin:0;font-size:.8125rem;color:var(--color-text-body)}.loft-gv__mapping-table-wrap{flex:1;overflow:auto;padding:0 var(--space-4)}.loft-gv__mapping-table{width:100%;border-collapse:collapse;font-size:.8125rem}.loft-gv__mapping-table th{text-align:left;padding:var(--space-2) var(--space-2);color:var(--color-text-muted);font-weight:500;position:sticky;top:0;background:var(--color-surface-card, #18181f);border-bottom:1px solid var(--color-border-subtle)}.loft-gv__mapping-table td{padding:var(--space-2);border-bottom:1px solid color-mix(in srgb,var(--color-border-subtle) 50%,transparent);vertical-align:middle}.loft-gv__mapping-filename{color:var(--color-heading);font-weight:500;max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.loft-gv__mapping-select{background:var(--color-surface-tertiary);color:var(--color-heading);border:1px solid var(--color-border-subtle);border-radius:var(--radius-sm);padding:4px 6px;font-size:.8125rem;font-family:inherit}.loft-gv__mapping-select:focus{outline:2px solid var(--color-accent-cyan);outline-offset:-1px}.loft-gv__mapping-source{font-size:.6875rem;text-transform:uppercase;letter-spacing:.5px;padding:2px 6px;border-radius:var(--radius-sm);background:color-mix(in srgb,var(--color-text-muted) 12%,transparent);color:var(--color-text-body)}.loft-gv__mapping-source--attribute{background:color-mix(in srgb,var(--color-accent-cyan) 18%,transparent);color:var(--color-accent-cyan)}.loft-gv__mapping-source--manual{background:color-mix(in srgb,var(--color-accent-amber, #fbbf24) 18%,transparent);color:var(--color-accent-amber, #fbbf24)}.loft-gv__mapping-drop{background:transparent;border:0;color:var(--color-text-muted);cursor:pointer;padding:4px;border-radius:var(--radius-sm)}.loft-gv__mapping-drop:hover{color:var(--color-accent-amber, #fbbf24);background:color-mix(in srgb,var(--color-accent-amber, #fbbf24) 12%,transparent)}.loft-gv__mapping-footer{padding:var(--space-4);border-top:1px solid var(--color-border-subtle);display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);flex-shrink:0}.loft-gv__mapping-hint{margin:0;font-size:.75rem;color:var(--color-text-muted)}.loft-gv__btn--primary{background:var(--color-accent-cyan);color:#06060c;border-color:transparent}.loft-gv__btn--primary:hover:not(:disabled){background:color-mix(in srgb,var(--color-accent-cyan) 88%,white);border-color:transparent;color:#06060c}.loft-gv__diffbar{position:absolute;top:12px;left:50%;transform:translate(-50%);z-index:30;display:inline-flex;align-items:center;gap:8px;padding:6px 10px;background:var(--color-surface-card, #18181f);border:1px solid var(--color-border-default);border-radius:var(--radius-md, 10px);box-shadow:0 8px 24px #00000080;font-size:.8125rem;color:var(--color-text-body);max-width:calc(100% - 32px);flex-wrap:wrap}.loft-gv__diffbar-label{font-size:.6875rem;text-transform:uppercase;letter-spacing:.5px;color:var(--color-text-muted);font-weight:600}.loft-gv__diffbar-side{display:inline-flex;align-items:center;gap:6px;max-width:180px;min-width:0}.loft-gv__diffbar-filename{color:var(--color-heading);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:500}.loft-gv__diffbar-swap,.loft-gv__diffbar-exit{background:transparent;border:0;color:var(--color-text-muted);cursor:pointer;padding:4px;border-radius:var(--radius-sm);display:inline-flex;align-items:center}.loft-gv__diffbar-swap:hover,.loft-gv__diffbar-exit:hover{color:var(--color-heading);background:color-mix(in srgb,var(--color-text-muted) 12%,transparent)}.loft-gv__diffbar-divider{width:1px;height:20px;background:var(--color-border-subtle)}.loft-gv__diffbar-modes{display:inline-flex;gap:2px}.loft-gv__diffbar-mode{display:inline-flex;align-items:center;gap:4px;padding:4px 8px;background:transparent;border:0;border-radius:var(--radius-sm);color:var(--color-text-body);cursor:pointer;font-size:.78rem;font-weight:500}.loft-gv__diffbar-mode:hover{background:color-mix(in srgb,var(--color-text-muted) 10%,transparent);color:var(--color-heading)}.loft-gv__diffbar-mode.is-active{background:color-mix(in srgb,var(--color-accent-cyan) 18%,transparent);color:var(--color-accent-cyan)}.loft-gv__diffbar-slider{display:inline-flex;align-items:center;gap:8px}.loft-gv__diffbar-slider input[type=range]{width:140px}.loft-gv__diffbar-pct{font-size:.75rem;color:var(--color-text-muted);min-width:32px;text-align:right;font-variant-numeric:tabular-nums}.loft-gv__diffbar-spacer{flex:1}.loft-gv__diff-slider{position:absolute;top:0;bottom:0;width:2px;background:var(--color-accent-cyan, #06b6d4);pointer-events:none;z-index:25;transform:translate(-1px);box-shadow:0 0 12px color-mix(in srgb,var(--color-accent-cyan) 50%,transparent)}.loft-gv__diff-slider-handle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:36px;height:36px;border-radius:50%;background:var(--color-accent-cyan, #06b6d4);color:#06060c;border:2px solid var(--color-surface-card, #18181f);cursor:ew-resize;pointer-events:auto;display:inline-flex;align-items:center;justify-content:center;box-shadow:0 4px 12px #00000080;font-size:1.1rem;padding:0}.loft-gv__diff-slider-handle:hover,.loft-gv__diff-slider-handle:active{background:color-mix(in srgb,var(--color-accent-cyan) 90%,white)}.loft-gv__diff-slider-handle:focus-visible{outline:3px solid var(--color-accent-violet);outline-offset:2px}.loft-gv__3d-overlay{position:fixed;inset:0;z-index:200;background:var(--color-surface-overlay);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;padding:var(--space-4)}.loft-gv__3d-modal{position:relative;width:min(1200px,95vw);height:min(800px,90vh);background:var(--color-surface-card, #18181f);border:1px solid var(--color-border-strong, var(--color-border-subtle));border-radius:var(--radius-lg);box-shadow:0 24px 48px #000000b3;display:flex;flex-direction:column;overflow:hidden}.loft-gv__3d-modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--color-border-subtle);flex:0 0 auto}.loft-gv__3d-modal-title{margin:0;font-size:.95rem;color:var(--color-heading)}.loft-gv__3d-modal-actions{display:flex;gap:var(--space-1);align-items:center}.loft-gv__3d-bend{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-2);border:1px solid var(--color-border-subtle);border-radius:var(--radius-sm);font-size:.8125rem;color:var(--color-text-body);cursor:ew-resize}.loft-gv__3d-bend i{font-size:1rem;color:var(--color-accent-cyan)}.loft-gv__3d-bend input[type=range]{width:110px;accent-color:var(--color-accent-cyan)}.loft-gv__3d-bend-label{font-weight:500}.loft-gv__3d-bend-value{min-width:2.5rem;text-align:right;font-variant-numeric:tabular-nums;color:var(--color-text-muted)}.loft-gv__3d-canvas-wrap{flex:1 1 auto;position:relative;overflow:hidden;background:#06060c}.loft-gv__3d-canvas-wrap canvas{display:block;width:100%;height:100%}.loft-gv__3d-status{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--color-text-body);font-size:.875rem;pointer-events:none}.loft-gv__3d-status--error{color:var(--color-accent-red, #ef4444)}.loft-gv__3d-modal-footer{flex:0 0 auto;padding:var(--space-2) var(--space-3);border-top:1px solid var(--color-border-subtle);display:flex;justify-content:flex-end}.loft-gv__3d-modal-hint{font-size:.75rem;color:var(--color-text-muted, var(--color-text-body))}.loft-gv__stackup{display:flex;flex-direction:column;gap:var(--space-2);font-size:.75rem}.loft-gv__stackup-table{width:100%;border-collapse:collapse}.loft-gv__stackup-table th,.loft-gv__stackup-table td{padding:2px var(--space-1);text-align:left;border-bottom:1px solid var(--color-border-subtle)}.loft-gv__stackup-table th{font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted, var(--color-text-body));font-weight:500}.loft-gv__stackup-row--copper{border-left:3px solid #c8a14d}.loft-gv__stackup-row--soldermask{border-left:3px solid #0e7a3a}.loft-gv__stackup-row--silkscreen{border-left:3px solid #f5f5f5}.loft-gv__stackup-row--coverlay{border-left:3px solid #c79a4a}.loft-gv__stackup-row--polyimide{border-left:3px solid #b8851f}.loft-gv__stackup-row--adhesive,.loft-gv__stackup-row--bondply{border-left:3px solid #a89070}.loft-gv__stackup-row--prepreg{border-left:3px solid #5a4a2a}.loft-gv__stackup-row--core{border-left:3px solid #6a5a3a}.loft-gv__stackup-row--surfacefinish{border-left:3px solid #c0c0c0}.loft-gv__stackup-bend{display:flex;flex-direction:column;gap:2px;padding:var(--space-2);background:var(--color-surface-card);border:1px solid var(--color-border-subtle);border-radius:var(--radius-md)}.loft-gv__stackup-bend-row{display:flex;justify-content:space-between;align-items:baseline}.loft-gv__kv-flex{display:flex;align-items:center;gap:var(--space-1)}
