.ctx-menu{background:var(--color-surface-elevated,var(--color-surface,#1c1c24));min-width:160px;color:var(--color-text,#e6e9ef);border:1px solid var(--color-border,#ffffff1a);font-size:var(--font-size-sm,12px);z-index:var(--z-tooltip,300);-webkit-user-select:none;user-select:none;border-radius:6px;padding:4px 0;position:fixed;box-shadow:0 6px 24px #00000073}.ctx-menu-item{width:100%;color:inherit;text-align:left;cursor:pointer;font-size:inherit;background:0 0;border:none;padding:6px 14px;line-height:1.4;display:block}.ctx-menu-item:hover:not(:disabled){background:var(--color-hover,#ffffff0f)}.ctx-menu-item:focus-visible{outline:2px solid var(--color-accent-bright,#9b8dff);outline-offset:-2px}.ctx-menu-item:disabled{opacity:.4;cursor:not-allowed}.ctx-menu-item.danger{color:var(--color-axis-x,#e24b4a)}.ctx-menu-item.danger:hover:not(:disabled){background:#e24b4a1f}.ctx-menu-sep{background:var(--color-border,#ffffff14);height:1px;margin:4px 0}.console-body{font-family:var(--font-family-mono);font-size:var(--font-size-xs);height:100%;padding:0;line-height:1.55;overflow-y:auto}.console-line{border-bottom:1px solid var(--color-border);white-space:pre-wrap;word-break:break-word;gap:6px;padding:4px 8px;display:flex}.console-line:hover{background:#ffffff05}.console-ts{color:var(--color-text-dim);font-size:var(--font-size-xs);flex-shrink:0}.console-level{font-size:var(--font-size-xs);flex-shrink:0;min-width:38px;font-weight:700}.console-level--debug{color:var(--color-text-muted)}.console-level--info{color:var(--color-info)}.console-level--warn{color:var(--color-warning)}.console-level--error{color:var(--color-error)}.console-source{color:var(--color-text-dim);font-size:var(--font-size-xs);flex-shrink:0}.console-msg{color:var(--color-text);flex:1}.console-line--debug .console-msg{color:var(--color-text-muted)}.console-line--info .console-msg{color:var(--color-text)}.console-line--warn .console-msg{color:var(--color-warning-text)}.console-line--error .console-msg{color:var(--color-error)}.console-line--warn{background:#f59e0b0a}.console-line--error{background:#e060600f}.console-separator{background:var(--color-border-light);height:1px;margin:4px 8px}.console-empty{color:var(--color-text-dim);text-align:center;padding:12px;font-style:italic}.console-actions{align-items:center;gap:4px;display:flex}.console-filter{font-size:var(--font-size-xs);background:var(--color-surface-input);border:1px solid var(--color-border);color:var(--color-text-muted);border-radius:var(--radius-sm);cursor:pointer;outline:none;padding:1px 4px}.console-filter:hover{border-color:var(--color-border-light)}.console-filter option{background:var(--color-surface);color:var(--color-text)}.console-action-btn{cursor:pointer;border-radius:var(--radius-sm);color:var(--color-text-muted);background:0 0;border:none;justify-content:center;align-items:center;padding:2px;display:flex}.console-action-btn svg{fill:none;stroke:currentColor;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;width:12px;height:12px}.console-action-btn:hover{background:var(--color-surface-raised);color:var(--color-success-bright)}.console-action-btn:hover svg{stroke:var(--color-success-bright)}.console-filter:focus-visible,.console-action-btn:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.hk-backdrop{z-index:var(--z-overlay);background:#07070fd9;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.hk-dialog{background:var(--color-bg);border:1px solid var(--color-border-light);width:min(620px,92vw);max-height:80vh;color:var(--color-text);font-size:var(--font-size-base);border-radius:10px;flex-direction:column;display:flex;box-shadow:0 20px 60px #000000e6}.hk-header{border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;padding:16px 20px 12px;display:flex}.hk-title{font-size:var(--font-size-lg);font-weight:600}.hk-close{color:var(--color-text-dim);cursor:pointer;background:0 0;border:none;padding:0 4px;font-size:20px;line-height:1}.hk-close:hover,.hk-close:focus-visible{color:var(--color-text);outline:none}.hk-close:focus-visible{border-radius:var(--radius-sm);box-shadow:0 0 0 2px var(--color-accent)}.hk-body{flex:1;min-height:0;display:flex;overflow:hidden}.hk-categories{border-right:1px solid var(--color-border);flex-direction:column;gap:2px;min-width:90px;padding:12px 8px;display:flex}.hk-cat{border-radius:var(--radius-md);text-align:left;font-size:var(--font-size-md);color:var(--color-text-muted);cursor:pointer;transition:all var(--duration-fast);background:0 0;border:1px solid #0000;padding:6px 10px}.hk-cat:hover,.hk-cat:focus-visible{color:var(--color-text);background:var(--color-surface)}.hk-cat:focus-visible{outline:2px solid var(--color-accent);outline-offset:1px}.hk-cat.active{color:var(--color-accent-light);background:var(--color-accent-dark);border-color:var(--color-accent)}.hk-list{flex:1;padding:8px 12px;overflow-y:auto}.hk-row{border-radius:var(--radius-md);transition:background var(--duration-faster);align-items:center;gap:8px;padding:8px 10px;display:flex}.hk-row:hover{background:#ffffff08}.hk-row.listening{background:#7c6ff714}.hk-label{font-size:var(--font-size-md);color:var(--color-text);white-space:nowrap;flex:1}.hk-category-tag{font-size:var(--font-size-xs);color:var(--color-text-dim);text-align:right;min-width:50px}.hk-key{font-family:Consolas,SF Mono,monospace;font-size:var(--font-size-sm);border-radius:var(--radius-md);border:1px solid var(--color-border-light);background:var(--color-surface);color:var(--color-text-muted);cursor:pointer;text-align:center;min-width:70px;transition:all var(--duration-normal);padding:3px 10px}.hk-key:hover,.hk-key:focus-visible{border-color:var(--color-accent);color:var(--color-text);outline:none}.hk-key:focus-visible{box-shadow:0 0 0 2px var(--color-accent)}.hk-key.active{border-color:var(--color-accent);color:var(--color-accent);animation:1.2s ease-in-out infinite hk-pulse}.hk-key.custom{color:var(--color-warning)}@keyframes hk-pulse{0%,to{opacity:1}50%{opacity:.5}}@media (prefers-reduced-motion:reduce){.hk-key.active{animation:none}}.hk-reset{color:var(--color-text-dim);cursor:pointer;background:0 0;border:none;padding:2px 4px;font-size:14px}.hk-reset:hover,.hk-reset:focus-visible{color:var(--color-text-muted);outline:none}.hk-reset:focus-visible{border-radius:var(--radius-sm);box-shadow:0 0 0 2px var(--color-accent)}.hk-conflict{background:color-mix(in srgb, var(--color-error) 10%, transparent);border-top:1px solid color-mix(in srgb, var(--color-error) 30%, transparent);font-size:var(--font-size-md);color:color-mix(in srgb, var(--color-error) 70%, white);align-items:center;gap:10px;padding:10px 20px;display:flex}.hk-conflict span{flex:1}.hk-conflict strong{color:var(--color-error)}.hk-conflict-btn{border-radius:var(--radius-md);font-size:var(--font-size-sm);cursor:pointer;color:var(--color-error-hover);background:#e0606026;border:1px solid #e0606066;padding:4px 12px}.hk-conflict-btn:hover{background:#e0606040}.hk-conflict-btn.cancel{border-color:var(--color-border);background:var(--color-surface);color:var(--color-text-dim)}.hk-conflict-btn.cancel:hover{color:var(--color-text-muted)}.hk-footer{border-top:1px solid var(--color-border);justify-content:flex-end;gap:10px;padding:12px 20px;display:flex}.hk-btn{font-size:var(--font-size-md);cursor:pointer;transition:all var(--duration-normal);border:1px solid #0000;border-radius:5px;padding:7px 18px;font-weight:500}.hk-btn.primary{background:var(--color-accent-dark);border-color:var(--color-accent);color:var(--color-accent-light)}.hk-btn.primary:hover{background:var(--color-accent-dim)}.hk-btn.secondary{background:var(--color-surface);border-color:var(--color-border-light);color:var(--color-text-muted)}.hk-btn.secondary:hover{border-color:var(--color-error);color:var(--color-error)}.menubar{height:var(--menubar-height);background:var(--color-bg);border-bottom:1px solid var(--color-border);z-index:var(--z-modal);-webkit-user-select:none;user-select:none;flex-shrink:0;align-items:center;padding:0 4px;display:flex}.mnu{height:100%;font-size:var(--font-size-md);color:var(--color-text-muted);cursor:pointer;transition:background var(--duration-faster);align-items:center;padding:0 12px;display:flex;position:relative}.mnu:hover,.mnu.open{background:var(--color-surface);color:var(--color-text)}.mnu.open{z-index:var(--z-tooltip)}.mnu-drop{background:var(--color-bg-panel,#0e0e1a);border:1px solid var(--color-border-light);border-radius:0 0 var(--radius-lg) var(--radius-lg);min-width:240px;z-index:var(--z-tooltip);box-shadow:var(--shadow-lg);padding:4px 0;position:absolute;top:100%;left:0}.mnu-entry{font-size:var(--font-size-md);color:var(--color-text-muted);cursor:pointer;transition:background var(--duration-fast);align-items:center;gap:6px;padding:6px 14px 6px 10px;display:flex}.mnu-entry:hover,.mnu-entry:focus-visible{background:var(--color-accent-bg);color:var(--color-text);outline:none}.mnu-entry:focus-visible{box-shadow:inset 0 0 0 2px var(--color-accent)}.mnu-entry:hover .mnu-icon svg{stroke:var(--color-text)}.mnu-entry.disabled{opacity:.4;pointer-events:none}.mnu-entry.danger{color:var(--color-error)}.mnu-entry.danger .mnu-icon svg{stroke:var(--color-error)}.mnu-entry.danger:hover{background:var(--color-error-bg)}.mnu-entry.active{background:var(--color-accent-bg);color:var(--color-accent)}.mnu-entry.active:hover{color:var(--color-text)}.mnu-check{width:14px;font-size:var(--font-size-md);color:var(--color-accent);text-align:center;flex-shrink:0;line-height:1}.mnu-icon{flex-shrink:0;justify-content:center;align-items:center;width:14px;height:14px;display:flex}.mnu-icon svg{fill:none;width:14px;height:14px;stroke:var(--color-text-dim);stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round}.mnu-icon.on svg{stroke:var(--color-accent)}.mnu-label{flex:1}.mnu-kbd{font-size:var(--font-size-xs);color:var(--color-text-dim);margin-left:auto;padding-left:16px}.mnu-entry--sub{position:relative}.mnu-arrow{font-size:var(--font-size-xs);color:var(--color-text-dim);margin-left:auto}.mnu-submenu{background:var(--color-bg-panel,#0e0e1a);border:1px solid var(--color-border-light);border-radius:var(--radius-lg);min-width:200px;z-index:var(--z-tooltip);box-shadow:var(--shadow-lg);padding:4px 0;position:absolute;top:-4px;left:100%}.mnu-sep{background:var(--color-border);height:1px;margin:3px 0}.menubar-end{border-left:1px solid var(--color-border);align-items:center;gap:8px;margin-left:auto;padding:0 10px;display:flex}.app-name{font-size:var(--font-size-md);color:var(--color-accent);letter-spacing:.05em;align-items:center;gap:6px;padding:0 12px;font-weight:700;display:flex}.mnu-overlay{z-index:var(--z-modal);background:#0009;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.mnu-dialog{background:var(--color-bg-panel,#0e0e1a);border:1px solid var(--color-border-light);border-radius:var(--radius-xl);min-width:400px;max-width:540px;max-height:80vh;box-shadow:var(--shadow-lg);overflow:hidden}.mnu-dialog--about{min-width:320px;max-width:360px}.mnu-dialog-title{font-size:var(--font-size-base);color:var(--color-text);border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;padding:12px 16px;font-weight:600;display:flex}.mnu-dialog-close{color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;padding:0 4px;font-size:18px;line-height:1}.mnu-dialog-close:hover,.mnu-dialog-close:focus-visible{color:var(--color-text);outline:none}.mnu-dialog-close:focus-visible{border-radius:var(--radius-sm);box-shadow:0 0 0 2px var(--color-accent)}.mnu-dialog-body{font-size:var(--font-size-md);color:var(--color-text-muted);max-height:calc(80vh - 50px);padding:16px;line-height:1.6;overflow-y:auto}pre.mnu-dialog-body{font-family:var(--font-mono,"JetBrains Mono", monospace);white-space:pre;tab-size:2}.mnu-about-body{text-align:center;flex-direction:column;align-items:center;gap:8px;padding:28px 16px;display:flex}.mnu-about-title{color:var(--color-accent);letter-spacing:.06em;font-size:20px;font-weight:700}.mnu-about-sub{font-size:var(--font-size-sm);text-transform:uppercase;letter-spacing:.12em;color:var(--color-text-dim)}.mnu-about-ver{font-size:var(--font-size-md);color:var(--color-text-muted);margin-top:4px}.mnu-about-copy{font-size:var(--font-size-sm);color:var(--color-text-dim);margin-top:8px}.mnu-dialog--settings{min-width:360px;max-width:420px}.mnu-settings-body{flex-direction:column;gap:10px;display:flex}.mnu-settings-section{font-size:var(--font-size-sm);text-transform:uppercase;letter-spacing:.08em;color:var(--color-accent);border-bottom:1px solid var(--color-border);margin-top:6px;padding-bottom:2px;font-weight:600}.mnu-field{font-size:var(--font-size-md);color:var(--color-text-muted);justify-content:space-between;align-items:center;gap:12px;display:flex}.mnu-field>span{flex-shrink:0}.mnu-field input[type=number],.mnu-field select{width:140px;font-size:var(--font-size-md);background:var(--color-bg);color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--radius-md);outline:none;padding:4px 8px}.mnu-field input[type=number]:focus,.mnu-field select:focus{border-color:var(--color-accent)}.mnu-field input[type=color]{border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;background:0 0;width:32px;height:24px;padding:0}.mnu-field--check{justify-content:flex-start;gap:8px}.mnu-field--check input[type=checkbox]{accent-color:var(--color-accent)}.mnu-field-hint{font-size:var(--font-size-sm);color:var(--color-text-dim);margin-top:-6px;padding-left:22px}.mnu-color-field{align-items:center;gap:8px;display:flex}.mnu-color-hex{font-size:var(--font-size-sm);font-family:var(--font-mono,monospace);color:var(--color-text-dim)}.mnu-dialog--grid{min-width:400px;max-width:460px}.mnu-grid-presets{gap:4px;display:flex}.mnu-preset-btn{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text-muted);font-size:var(--font-size-sm);cursor:pointer;transition:all var(--duration-fast);flex-direction:column;flex:1;align-items:center;gap:2px;padding:6px 4px;font-weight:600;display:flex}.mnu-preset-btn:hover,.mnu-preset-btn:focus-visible{border-color:var(--color-accent);color:var(--color-text);background:var(--color-surface-raised);outline:none}.mnu-preset-btn:focus-visible{box-shadow:0 0 0 2px var(--color-accent)}.mnu-preset-btn.active{border-color:var(--color-accent);background:var(--color-accent-dark);color:var(--color-text-bright)}.mnu-preset-sub{font-size:var(--font-size-2xs);opacity:.6;font-weight:400}.mnu-field--slider{flex-wrap:nowrap}.mnu-field--slider input[type=range]{min-width:80px;accent-color:var(--color-accent);flex:1;height:4px}.mnu-field--slider input[type=number]{width:60px}.mnu-field-input-unit{align-items:center;gap:2px;display:flex}.mnu-field-input-unit input[type=number]{width:60px;font-size:var(--font-size-md);background:var(--color-bg);color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--radius-md);outline:none;padding:4px 6px}.mnu-field-input-unit input[type=number]:focus{border-color:var(--color-accent)}.mnu-field-input-unit span{font-size:var(--font-size-sm);color:var(--color-text-dim)}.mnu-field--readonly{font-size:var(--font-size-md);color:var(--color-text-muted);justify-content:space-between;align-items:center;display:flex}.mnu-computed{font-family:var(--font-mono,monospace);font-size:var(--font-size-md);color:var(--color-accent);font-weight:600}.mnu-link-btn{color:var(--color-accent);font-size:var(--font-size-sm);cursor:pointer;text-align:left;opacity:.8;background:0 0;border:none;padding:0}.mnu-link-btn:hover,.mnu-link-btn:focus-visible{opacity:1;outline:none;text-decoration:underline}.mnu-link-btn:focus-visible{box-shadow:0 0 0 2px var(--color-accent);border-radius:2px}.mnu-dialog-actions{border-top:1px solid var(--color-border);justify-content:flex-end;gap:8px;margin-top:8px;padding-top:10px;display:flex}.mnu-dialog-btn{font-size:var(--font-size-md);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);color:var(--color-text-muted);cursor:pointer;padding:7px 18px}.mnu-dialog-btn:hover,.mnu-dialog-btn:focus-visible{background:var(--color-bg);color:var(--color-text);outline:none}.mnu-dialog-btn:focus-visible{box-shadow:0 0 0 2px var(--color-accent)}.mnu-dialog-btn.primary{background:var(--color-accent);color:var(--color-text-bright);border-color:var(--color-accent)}.mnu-dialog-btn.primary:hover,.mnu-dialog-btn.primary:focus-visible{opacity:.9}.toolbar{height:var(--toolbar-height);background:var(--color-surface);border-bottom:1px solid var(--color-border);-webkit-user-select:none;user-select:none;z-index:var(--z-above);flex-shrink:0;align-items:center;padding:0 8px;display:flex;position:relative}.tt-btn{border-radius:var(--radius-sm);cursor:pointer;width:24px;height:22px;color:var(--color-accent);transition:background var(--duration-fast);background:0 0;border:1px solid #0000;justify-content:center;align-items:center;margin-right:2px;display:flex}.tt-btn:hover,.tt-btn:focus-visible{background:var(--color-surface-hover);color:var(--color-success-bright)}.tt-btn:hover svg,.tt-btn:focus-visible svg{stroke:var(--color-success-bright)}.tt-btn:focus-visible{outline:2px solid var(--color-accent);outline-offset:1px}.tt-icon{stroke:currentColor;stroke-width:1.5px;fill:none;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0;width:14px;height:14px}.tt-sep{background:var(--color-border);flex-shrink:0;width:1px;height:14px;margin:0 8px}.sidebar{width:var(--sidebar-width);background:var(--color-bg);border-right:1px solid var(--color-border);-webkit-user-select:none;user-select:none;z-index:var(--z-above);flex-direction:column;flex-shrink:0;align-items:center;gap:4px;padding:6px 0;display:flex}.sidebar-btn{border-radius:var(--radius-md);cursor:pointer;width:27px;height:27px;color:var(--color-text);transition:all var(--duration-fast) var(--ease-out);background:0 0;border:1px solid #0000;justify-content:center;align-items:center;padding:0;display:flex}.sidebar-btn svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;width:14px;height:14px}.sidebar-btn:hover{background:var(--color-surface-raised);border-color:var(--color-border-light);color:var(--color-success-bright)}.sidebar-btn:hover svg{stroke:var(--color-success-bright)}.sidebar-btn.active{background:var(--color-accent-dark);border-color:var(--color-accent);color:var(--color-text-bright)}.sidebar-btn.active svg{stroke:currentColor}.sidebar-btn:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.sidebar-btn--lg{width:32px;height:32px}.sidebar-btn--lg svg{width:18px;height:18px}.sidebar-sep{background:var(--color-border);width:19px;height:1px;margin:3px 0}.mapview-root{background:var(--color-bg);flex-direction:column;width:100%;height:100%;display:flex}.mapview-toolbar{background:var(--color-surface-header);border-bottom:1px solid var(--color-border);height:32px;z-index:var(--z-modal);flex-shrink:0;justify-content:space-between;align-items:center;gap:8px;padding:0 8px;display:flex;position:relative;overflow:visible}.mapview-toolbar-left,.mapview-toolbar-right{align-items:center;gap:4px;display:flex;overflow:visible}.mapview-sep{background:var(--color-border);width:1px;height:16px;margin:0 4px}.mapview-layer-btn{border-radius:var(--radius-sm);color:var(--color-text-muted);font-size:var(--font-size-sm);cursor:pointer;height:24px;transition:all var(--duration-normal);background:0 0;border:1px solid #0000;align-items:center;gap:4px;padding:2px 8px;font-weight:500;display:flex}.mapview-layer-btn:hover{color:var(--color-text);background:#ffffff0f}.mapview-layer-btn:active{background:#7c6ff740}.mapview-layer-btn.active{color:var(--color-text);border-color:var(--color-accent);background:#7c6ff71f}.mapview-action-btn{border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text-muted);font-size:var(--font-size-sm);cursor:pointer;height:24px;transition:all var(--duration-normal);background:0 0;align-items:center;gap:4px;padding:2px 8px;display:flex}.mapview-action-btn:hover{color:var(--color-text);border-color:var(--color-accent)}.mapview-action-btn:active{background:#ffffff14}.mapview-action-btn.active{color:var(--color-warning);border-color:var(--color-warning);background:#f59e0b1f}.mv-origin-icon{background:0 0!important;border:none!important}.mv-origin-icon svg{filter:drop-shadow(0 0 3px #0009)}.mapview-coords{font-size:var(--font-size-sm);font-family:var(--font-family-mono);color:var(--color-warning);white-space:nowrap;text-align:right;min-width:180px}.mapview-body{z-index:0;flex:1 1 0;min-height:0;display:flex;position:relative}.mapview-container{flex:1 1 0;min-width:0;position:relative}.mapview-loading,.mapview-error{font-size:var(--font-size-base);color:var(--color-text-muted);pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.mapview-error{color:var(--color-error)}.mv-sidebar{background:var(--color-surface);flex-direction:column;flex-shrink:0;min-width:160px;max-width:600px;display:flex;overflow-y:auto}.mv-resize-handle{cursor:col-resize;background:var(--color-border);width:5px;transition:background var(--duration-fast);flex-shrink:0}.mv-resize-handle:hover,.mv-resize-handle:active{background:var(--color-accent)}.mv-sidebar-header{font-size:var(--font-size-md);color:var(--color-text);border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;padding:8px 10px;font-weight:600;display:flex}.mv-sidebar-actions{gap:4px;display:flex}.mv-toolbar-search{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-sm);height:24px;transition:border-color var(--duration-normal);align-items:center;gap:4px;min-width:160px;max-width:260px;padding:0 6px;display:flex;position:relative}.mv-toolbar-search:focus-within{border-color:var(--color-accent)}.mv-toolbar-search-icon{opacity:.35;flex-shrink:0}.mv-toolbar-search-input{color:var(--color-text);font-size:var(--font-size-sm);background:0 0;border:none;outline:none;flex:1;min-width:0;height:22px;padding:0;line-height:22px}.mv-toolbar-search-input::placeholder{color:var(--color-text-dim);font-size:var(--font-size-sm)}.mv-toolbar-search-clear{cursor:pointer;color:var(--color-text-dim);opacity:.5;transition:opacity var(--duration-faster);background:0 0;border:none;align-items:center;padding:2px;display:flex}.mv-toolbar-search-clear:hover{opacity:1;color:var(--color-text)}.mv-toolbar-search-spinner{border:1.5px solid var(--color-border);border-top-color:var(--color-accent);border-radius:50%;flex-shrink:0;width:10px;height:10px;animation:.6s linear infinite mv-spin}@keyframes mv-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.mv-toolbar-search-spinner{animation:none}}.mv-toolbar-search-results{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);z-index:var(--z-tooltip);min-width:280px;max-height:260px;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow-y:auto;box-shadow:0 8px 24px #0009}.mv-toolbar-search-result{width:100%;color:var(--color-text);font-size:var(--font-size-sm);text-align:left;cursor:pointer;transition:background var(--duration-faster);background:0 0;border:none;border-bottom:1px solid #ffffff0a;align-items:flex-start;gap:6px;padding:6px 8px;line-height:1.35;display:flex}.mv-toolbar-search-result:last-child{border-bottom:none}.mv-toolbar-search-result:hover{background:#7c6ff71f}.mv-toolbar-search-result:focus-visible{outline:2px solid var(--color-accent);outline-offset:-2px}.mv-toolbar-search-result svg{margin-top:1px}.mv-toolbar-search-name{text-overflow:ellipsis;-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.mv-sidebar::-webkit-scrollbar{width:6px}.mv-pg-layer-list::-webkit-scrollbar{width:6px}.mv-sidebar::-webkit-scrollbar-track{background:0 0}.mv-pg-layer-list::-webkit-scrollbar-track{background:0 0}.mv-sidebar::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:var(--radius-sm)}.mv-pg-layer-list::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:var(--radius-sm)}.mv-sidebar::-webkit-scrollbar-thumb:hover{background:var(--color-text-dim)}.mv-pg-layer-list::-webkit-scrollbar-thumb:hover{background:var(--color-text-dim)}.mv-btn{border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-sm);cursor:pointer;transition:all var(--duration-normal);align-items:center;gap:4px;padding:4px 10px;font-weight:500;display:inline-flex}.mv-btn--primary{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-text-bright)}.mv-btn--primary:hover{background:var(--color-accent-hover)}.mv-btn--primary:active{background:var(--color-accent-dark)}.mv-btn--secondary{background:var(--color-surface);color:var(--color-text-muted)}.mv-btn--secondary:hover{color:var(--color-text);border-color:var(--color-text-muted)}.mv-btn--secondary:active{background:#ffffff14}.mv-btn--small{font-size:var(--font-size-xs);color:var(--color-text-muted);background:0 0;border-color:#0000;padding:2px 6px}.mv-btn--small:hover{color:var(--color-text);background:#ffffff0f}.mv-btn--small:active{background:#ffffff1f}.mv-btn:focus-visible,.mapview-layer-btn:focus-visible,.mapview-action-btn:focus-visible,.mv-pg-layer-item:focus-visible,.mv-layer-vis:focus-visible,.mv-layer-remove:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.mv-select{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text);font-size:var(--font-size-md);cursor:pointer;outline:none;width:100%;padding:5px 8px;font-family:inherit}.mv-select:focus-visible{border-color:var(--color-accent);box-shadow:0 0 0 2px #7c6ff740}.mv-select option{background:var(--color-surface);color:var(--color-text)}.mv-conn-info{font-size:var(--font-size-xs);font-family:var(--font-family-mono);color:var(--color-text-muted);border-bottom:1px solid var(--color-border);border-left:3px solid var(--color-success);background:#4ade800f;align-items:center;gap:6px;padding:6px 10px;display:flex}.mv-conn-diag{font-size:var(--font-size-2xs);font-family:var(--font-family-mono);color:var(--color-text-dim);border-bottom:1px solid var(--color-border);flex-wrap:wrap;align-items:center;gap:4px 8px;padding:4px 10px;display:flex}.mv-diag-ext{color:var(--color-text-muted)}.mv-diag-ok{color:var(--color-success-bright)}.mv-diag-warn{color:var(--color-warning)}.mv-diag-msg{width:100%;color:var(--color-warning);font-size:var(--font-size-2xs);padding:2px 0;line-height:1.3}.mv-pg-layers{border-bottom:1px solid var(--color-border)}.mv-section-label{font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-dim);align-items:center;padding:6px 10px 4px;font-weight:600;display:flex}.mv-pg-layer-list{max-height:200px;overflow-y:auto}.mv-pg-layer-item{cursor:pointer;width:100%;color:var(--color-text-muted);font-size:var(--font-size-sm);text-align:left;transition:background var(--duration-faster);background:0 0;border:none;align-items:center;gap:6px;padding:4px 10px;display:flex}.mv-pg-layer-item:hover:not(:disabled){color:var(--color-text);background:#ffffff0a}.mv-pg-layer-item:disabled{cursor:default;opacity:.5}.mv-pg-layer-item.loaded{opacity:.5}.mv-pg-layer-type{font-size:var(--font-size-2xs);font-weight:700;font-family:var(--font-family-mono);color:var(--color-accent);text-align:center;min-width:28px}.mv-pg-layer-type.raster{color:var(--color-warning)}.mv-pg-layer-item.raster{border-left:2px solid var(--color-warning)}.mv-pg-layer-name{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.mv-pg-loaded-badge{font-size:var(--font-size-2xs);color:var(--color-success)}.mv-loading-text{font-size:var(--font-size-sm);color:var(--color-text-dim);padding:8px 10px}.mv-qgis-tree{max-height:360px;overflow-y:auto}.mv-qgis-tree-row{cursor:pointer;width:100%;color:var(--color-text-muted);font-size:var(--font-size-sm);text-align:left;transition:background var(--duration-faster);background:0 0;border:none;align-items:center;gap:6px;padding:3px 10px 3px 0;display:flex}.mv-qgis-tree-row:hover:not(:disabled){color:var(--color-text);background:#ffffff0a}.mv-qgis-tree-row:disabled{cursor:default;opacity:.45}.mv-qgis-tree-row.loaded{opacity:.5}.mv-qgis-tree-row.raster.mv-qgis-tree-leaf{border-left:2px solid var(--color-warning)}.mv-qgis-tree-row.external{font-style:italic}.mv-qgis-tree-chevron{font-size:var(--font-size-2xs);color:var(--color-text-dim);text-align:center;width:10px}.mv-qgis-tree-icon{font-size:var(--font-size-2xs);font-weight:700;font-family:var(--font-family-mono);color:var(--color-accent);text-align:center;min-width:18px}.mv-qgis-tree-leaf .mv-qgis-tree-icon{color:var(--color-text-dim)}.mv-qgis-tree-leaf:not(:disabled) .mv-qgis-tree-icon{color:var(--color-accent)}.mv-qgis-tree-name{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.mv-qgis-tree-count{font-size:var(--font-size-2xs);font-family:var(--font-family-mono);color:var(--color-text-dim)}.mv-qgis-project-toolbar{font-size:var(--font-size-xs);color:var(--color-text-dim);align-items:center;gap:8px;padding:4px 10px;display:flex}.mv-qgis-project-toolbar button{border:1px solid var(--color-border);color:var(--color-text-muted);font-size:var(--font-size-xs);cursor:pointer;background:0 0;border-radius:3px;padding:2px 8px}.mv-qgis-project-toolbar button:hover{color:var(--color-text);border-color:var(--color-accent)}.mv-active-layers{flex:1}.mv-active-layer-wrap{border-bottom:1px solid #ffffff08}.mv-active-layer{font-size:var(--font-size-sm);color:var(--color-text-muted);align-items:center;gap:5px;padding:4px 10px;display:flex}.mv-active-layer:hover{background:#ffffff08}.mv-layer-vis{cursor:pointer;background:0 0;border:none;align-items:center;padding:2px;display:flex}.mv-layer-swatch{cursor:pointer;width:10px;height:10px;transition:transform var(--duration-faster);border:1px solid #ffffff26;border-radius:2px;flex-shrink:0}.mv-layer-swatch:hover{border-color:#fff6;transform:scale(1.3)}.mv-layer-geom-badge{font-size:var(--font-size-3xs);font-weight:700;font-family:var(--font-family-mono);color:var(--color-text-dim);text-align:center;letter-spacing:-.02em;min-width:22px}.mv-layer-name{text-overflow:ellipsis;white-space:nowrap;cursor:pointer;flex:1;overflow:hidden}.mv-layer-name:hover{color:var(--color-text);text-decoration:underline}.mv-qgis-badge{font-size:var(--font-size-3xs);color:var(--color-axis-y);letter-spacing:.5px;background:#3da65326;border-radius:2px;flex-shrink:0;padding:0 3px;font-weight:700;line-height:14px}.mv-layer-count{font-size:var(--font-size-xs);font-family:var(--font-family-mono);color:var(--color-text-dim)}.mv-layer-remove{cursor:pointer;color:var(--color-text-dim);opacity:0;transition:opacity var(--duration-faster);background:0 0;border:none;align-items:center;padding:2px;display:flex}.mv-active-layer:hover .mv-layer-remove{opacity:1}.mv-layer-remove:hover{color:var(--color-error)}.mv-layer-save{cursor:pointer;color:var(--color-text-dim);opacity:0;transition:opacity var(--duration-faster);background:0 0;border:none;align-items:center;padding:2px;display:flex}.mv-active-layer:hover .mv-layer-save{opacity:1}.mv-layer-save:hover{color:var(--color-accent)}.mv-layer-save.mv-saved{opacity:1;color:var(--color-success)}.mv-save-all-btn{cursor:pointer;color:var(--color-text-dim);font-size:var(--font-size-2xs);letter-spacing:.03em;border-radius:var(--radius-sm);transition:color var(--duration-faster);background:0 0;border:none;align-items:center;gap:3px;margin-left:auto;padding:1px 4px;font-weight:500;display:inline-flex}.mv-save-all-btn:hover{color:var(--color-accent)}.mv-style-panel{background:#00000026;border-top:1px solid #ffffff0a;flex-direction:column;gap:4px;padding:4px 10px 6px 32px;display:flex}.mv-style-row{align-items:center;gap:6px;height:20px;display:flex}.mv-style-label{font-size:var(--font-size-xs);color:var(--color-text-dim);min-width:44px}.mv-style-value{font-size:var(--font-size-xs);font-family:var(--font-family-mono);color:var(--color-text-dim);text-align:right;min-width:32px}.mv-color-picker{appearance:none;border:1px solid var(--color-border);border-radius:var(--radius-sm);cursor:pointer;background:0 0;width:22px;height:16px;padding:0}.mv-color-picker::-webkit-color-swatch-wrapper{padding:1px}.mv-color-picker::-webkit-color-swatch{border:none;border-radius:2px}.mv-slider{appearance:none;background:var(--color-border);cursor:pointer;border-radius:2px;outline:none;flex:1;height:4px}.mv-slider::-webkit-slider-thumb{appearance:none;background:var(--color-accent);border:2px solid var(--color-surface);cursor:pointer;border-radius:50%;width:12px;height:12px}.mv-slider::-webkit-slider-thumb:hover{background:var(--color-accent-hover);transform:scale(1.15)}.mv-slider::-moz-range-thumb{background:var(--color-accent);border:2px solid var(--color-surface);cursor:pointer;border-radius:50%;width:10px;height:10px}.mv-slider:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.mv-empty-layers{color:var(--color-text-dim);font-size:var(--font-size-md);flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:32px 16px;display:flex}.mv-empty-actions{gap:6px;margin-top:8px;display:flex}.mv-import-section{border-top:1px solid var(--color-border)}.mv-import-header{cursor:pointer;width:100%;font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.05em;color:var(--color-accent-bright);transition:background var(--duration-faster);background:0 0;border:none;align-items:center;gap:6px;padding:8px 10px;font-weight:600;display:flex}.mv-import-header:hover{background:var(--color-surface-raised)}.mv-import-body{flex-direction:column;gap:8px;padding:0 10px 10px;display:flex}.mv-import-row{gap:4px;display:flex}.mv-import-draw{flex:1}.mv-import-draw.active{color:var(--color-accent)!important;border-color:var(--color-accent)!important;background:var(--color-accent-bg)!important}.mv-import-bbox{font-size:var(--font-size-xs);font-family:var(--font-family-mono);color:var(--color-text-muted);background:var(--color-surface-deep);border-radius:var(--radius-sm);padding:6px 8px;line-height:1.5}.mv-import-coord{color:var(--color-text-dim)}.mv-import-area{color:var(--color-accent-bright);font-size:var(--font-size-2xs);margin-top:4px}.mv-import-warn{color:var(--color-error);font-weight:600}.mv-import-hint{font-size:var(--font-size-xs);color:var(--color-text-dim);padding:4px 0;font-style:italic}.mv-import-layers{flex-direction:column;gap:2px;display:flex}.mv-import-check{font-size:var(--font-size-sm);color:var(--color-text-muted);cursor:pointer;align-items:center;gap:6px;padding:2px 0;display:flex}.mv-import-check input[type=checkbox]{accent-color:var(--color-accent)}.mv-import-opts{flex-direction:column;gap:4px;display:flex}.mv-import-opt{font-size:var(--font-size-xs);color:var(--color-text-dim);justify-content:space-between;align-items:center;display:flex}.mv-select-sm{background:var(--color-surface-deep);color:var(--color-text-muted);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--font-size-xs);outline:none;padding:2px 4px}.mv-select-sm:focus{border-color:var(--color-accent)}.mv-import-btn{background:var(--color-accent);width:100%;color:var(--color-text-bright);border-radius:var(--radius-md);font-size:var(--font-size-sm);cursor:pointer;transition:background var(--duration-normal), opacity var(--duration-normal);border:none;padding:6px 0;font-weight:600}.mv-import-btn:hover:not(:disabled){background:var(--color-accent-bright)}.mv-import-btn:disabled{opacity:.4;cursor:default}.mv-import-status{font-size:var(--font-size-xs);color:var(--color-text-muted);line-height:1.4}.mv-import-progress{background:var(--color-surface-deep);border-radius:2px;height:3px;margin-top:4px;overflow:hidden}.mv-import-progress-fill{background:var(--color-accent);height:100%;transition:width var(--duration-medium) ease;border-radius:2px}.mv-import-clear{align-self:flex-start;margin-top:4px;color:var(--color-error)!important;border-color:#ef44444d!important}.mv-import-clear:hover{background:#ef44441a!important}.og-compass-button{top:12px!important;bottom:auto!important;right:12px!important}.og-zoomin-button{top:64px!important;bottom:auto!important;right:12px!important}.og-zoomout-button{top:108px!important;bottom:auto!important;right:12px!important}.og-coordinates{inset:12px auto auto 12px!important}.mv-style-wrap{flex-direction:column;gap:4px;padding:4px 0;display:flex}.mv-style-header{letter-spacing:.05em;text-transform:uppercase;color:var(--color-text-dim,#ffffff8c);justify-content:space-between;align-items:center;padding:2px 6px;font-size:10px;display:flex}.mv-style-header-label{font-weight:600}.mv-style-readonly-notice{color:var(--color-text-dim,#ffffff8c);padding:4px 6px;font-size:10px;font-style:italic}.mv-sym-compact{align-items:center;gap:4px;display:flex}.mv-sym-swatch{border:1px solid var(--color-border,#ffffff1f);cursor:pointer;border-radius:3px;width:18px;height:18px;padding:0}.mv-sym-width{width:50px}.mv-sym-opacity{width:40px}.mv-cat-list,.mv-range-list{border:1px solid var(--color-border,#ffffff14);border-radius:3px;flex-direction:column;max-height:300px;display:flex;overflow-y:auto}.mv-cat-row,.mv-range-row{border-bottom:1px solid var(--color-border,#ffffff0f);align-items:center;gap:6px;padding:2px 6px;font-size:11px;display:flex}.mv-cat-row:last-child,.mv-range-row:last-child{border-bottom:none}.mv-cat-label,.mv-range-label{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.mv-cat-visible{margin:0}.mv-style-empty{color:var(--color-text-dim,#ffffff8c);padding:4px 6px;font-size:11px;font-style:italic}.mv-revert-btn{color:var(--color-text-dim,#ffffff8c);border:1px solid var(--color-border,#ffffff1f);cursor:pointer;background:0 0;border-radius:3px;padding:1px 6px;font-size:10px}.mv-revert-btn:hover{background:var(--color-surface-strong,#00000040);color:var(--color-text,#e6e9ef)}.mv-sidebar.mv-pgs{font-family:var(--font-family-base);background:radial-gradient(1200px 200px at 50% -50px, #7c6ff70f, transparent 60%), var(--color-surface);flex-direction:column;display:flex}.mv-pgs-header{z-index:2;align-items:center;gap:var(--space-2);background:linear-gradient(180deg, var(--color-surface-deep) 0%, var(--color-surface-deep) 80%, transparent);border-bottom:1px solid var(--color-border);padding:12px 12px 10px;display:flex;position:sticky;top:0}.mv-pgs-title{font-family:var(--font-family-mono);font-size:var(--font-size-md);font-weight:var(--font-weight-bold);text-transform:uppercase;letter-spacing:.22em;color:var(--color-text);flex:1;align-items:center;gap:4px;display:inline-flex}.mv-pgs-title-bracket{color:var(--color-accent);font-weight:var(--font-weight-normal);letter-spacing:0;margin:0 2px}.mv-pgs-title-text{padding:0 1px}.mv-pgs-title-dot{background:var(--color-success-bright);border-radius:50%;width:6px;height:6px;margin-left:6px;animation:1.8s ease-in-out infinite mv-pgs-heartbeat;box-shadow:0 0 6px #4ade808c}@keyframes mv-pgs-heartbeat{0%,to{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(.8)}}.mv-pgs-header-actions{align-items:center;gap:4px;display:inline-flex}.mv-pgs-btn{border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text-muted);font-family:var(--font-family-mono);font-size:var(--font-size-2xs);text-transform:uppercase;letter-spacing:.12em;cursor:pointer;transition:color var(--duration-fast), border-color var(--duration-fast), background var(--duration-fast);background:0 0;align-items:center;gap:5px;padding:4px 9px;font-weight:600;display:inline-flex}.mv-pgs-btn:hover{color:var(--color-text);border-color:var(--color-border-accent);background:var(--color-accent-bg-dim)}.mv-pgs-btn:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.mv-pgs-rule{font-family:var(--font-family-mono);font-size:var(--font-size-2xs);text-transform:uppercase;letter-spacing:.16em;color:var(--color-text-dim);align-items:center;gap:8px;padding:14px 12px 6px;display:flex}.mv-pgs-rule-num{border:1px solid var(--color-border-accent);border-radius:var(--radius-sm);height:16px;color:var(--color-accent-bright);background:var(--color-accent-bg-dim);letter-spacing:.04em;font-variant-numeric:tabular-nums;justify-content:center;align-items:center;padding:0 5px;font-size:9px;font-weight:700;display:inline-flex}.mv-pgs-rule-label{color:var(--color-text-bright);letter-spacing:.2em;font-weight:700}.mv-pgs-rule-line{background:linear-gradient(90deg, var(--color-border-light) 0%, transparent 100%);flex:1;align-self:center;height:1px}.mv-pgs-rule-aside{font-family:var(--font-family-mono);font-size:var(--font-size-2xs);color:var(--color-text-dim);text-transform:none;letter-spacing:0;align-items:center;gap:6px;display:inline-flex}.mv-pgs-rule-tag{text-overflow:ellipsis;white-space:nowrap;border:1px solid var(--color-border);border-radius:var(--radius-sm);max-width:180px;color:var(--color-text-muted);align-items:center;gap:4px;padding:1px 6px;display:inline-flex;overflow:hidden}.mv-pgs-rule-tag--accent{border-color:var(--color-border-accent);background:var(--color-accent-bg-dim);color:var(--color-accent-bright);font-variant-numeric:tabular-nums;font-weight:700}.mv-pgs-rule-close,.mv-pgs-rule-action{color:var(--color-text-dim);font-family:var(--font-family-mono);font-size:var(--font-size-2xs);border-radius:var(--radius-sm);cursor:pointer;text-transform:uppercase;letter-spacing:.1em;transition:color var(--duration-fast), border-color var(--duration-fast);background:0 0;border:1px solid #0000;padding:1px 6px}.mv-pgs-rule-close:hover,.mv-pgs-rule-action:hover{color:var(--color-accent-bright);border-color:var(--color-border-accent)}.mv-pgs-conn{font-family:var(--font-family-mono);font-size:var(--font-size-2xs);color:var(--color-text-muted);flex-wrap:wrap;align-items:center;gap:6px;padding:0 12px 4px;display:flex}.mv-pgs-conn-pulse{background:var(--color-success-bright);border-radius:50%;flex-shrink:0;width:6px;height:6px;animation:1.6s ease-out infinite mv-pgs-conn-pulse;box-shadow:0 0 #4ade8080}@keyframes mv-pgs-conn-pulse{0%{box-shadow:0 0 #4ade8080}70%{box-shadow:0 0 0 6px #4ade8000}to{box-shadow:0 0 #4ade8000}}.mv-pgs-conn-text{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--color-text);letter-spacing:.04em;flex:1 1 0;overflow:hidden}.mv-pgs-conn-text--muted{color:var(--color-text-dim);text-align:center;flex:1;font-style:italic}.mv-pgs-chip{font-family:var(--font-family-mono);letter-spacing:.1em;text-transform:uppercase;border:1px solid var(--color-border-light);border-radius:var(--radius-sm);color:var(--color-text-muted);white-space:nowrap;font-variant-numeric:tabular-nums;background:#ffffff05;flex-shrink:0;align-items:center;padding:1px 6px;font-size:9px;font-weight:700;display:inline-flex}.mv-pgs-chip--accent{border-color:var(--color-border-accent);color:var(--color-accent-light);background:var(--color-accent-bg-dim)}.mv-pgs-chip--warn{color:var(--color-warning);background:#f59e0b14;border-color:#f59e0b59}.mv-pgs-error{font-family:var(--font-family-mono);font-size:var(--font-size-2xs);color:var(--color-warning);border-left:2px solid var(--color-warning);cursor:help;background:#f59e0b0f;margin:4px 12px 0;padding:6px 8px;line-height:1.4}.mv-pgs-tabs{border-bottom:1px solid var(--color-border);align-items:stretch;gap:2px;margin:0 12px;display:flex}.mv-pgs-tab{cursor:pointer;font-family:var(--font-family-mono);font-size:var(--font-size-2xs);text-transform:uppercase;letter-spacing:.16em;color:var(--color-text-dim);transition:color var(--duration-fast), border-color var(--duration-fast);background:0 0;border:none;border-bottom:2px solid #0000;align-items:center;gap:6px;margin-bottom:-1px;padding:6px 10px 7px;font-weight:600;display:inline-flex}.mv-pgs-tab:hover{color:var(--color-text)}.mv-pgs-tab.is-active{color:var(--color-accent-bright);border-bottom-color:var(--color-accent)}.mv-pgs-tab-count{min-width:18px;height:14px;font-family:var(--font-family-mono);color:var(--color-text-dim);background:var(--color-surface-deep);border:1px solid var(--color-border);border-radius:var(--radius-sm);letter-spacing:0;font-variant-numeric:tabular-nums;justify-content:center;align-items:center;padding:0 4px;font-size:9px;font-weight:600;display:inline-flex}.mv-pgs-tab.is-active .mv-pgs-tab-count{color:var(--color-accent-bright);border-color:var(--color-border-accent);background:var(--color-accent-bg-dim)}.mv-pgs-source{resize:vertical;border-bottom:1px solid var(--color-border-section);height:220px;min-height:80px;max-height:60vh;position:relative;overflow-y:auto}.mv-pgs-source::-webkit-scrollbar{width:6px}.mv-pgs-source::-webkit-scrollbar-track{background:0 0}.mv-pgs-source::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:var(--radius-sm)}.mv-pgs-source::-webkit-scrollbar-thumb:hover{background:var(--color-text-dim)}.mv-pgs-source::-webkit-resizer{background:0 0}.mv-pgs-table-list{flex-direction:column;padding:2px 0 4px;display:flex}.mv-pgs-source .mv-qgis-tree,.mv-pgs-source .mv-pgs-table-list{max-height:none;overflow:visible}.mv-pgs-table-row{cursor:pointer;text-align:left;width:100%;font-family:var(--font-family-mono);font-size:var(--font-size-sm);color:var(--color-text-muted);transition:background var(--duration-fast), color var(--duration-fast), border-color var(--duration-fast);background:0 0;border:none;border-left:2px solid #0000;align-items:center;gap:8px;padding:4px 12px 4px 10px;display:flex}.mv-pgs-table-row:hover:not(:disabled){color:var(--color-text);border-left-color:var(--color-accent);background:#ffffff06}.mv-pgs-table-row:disabled,.mv-pgs-table-row.is-loaded{cursor:default;opacity:.45}.mv-pgs-table-row.is-vector .mv-pgs-table-glyph{color:var(--color-accent)}.mv-pgs-table-row.is-raster .mv-pgs-table-glyph{color:var(--color-warning)}.mv-pgs-table-row.is-storage .mv-pgs-table-glyph{color:var(--color-info)}.mv-pgs-table-row.is-raster{border-left-color:#f59e0b80}.mv-pgs-table-row.is-storage{border-left-color:#7c9abf80}.mv-pgs-table-glyph{flex-shrink:0}.mv-pgs-table-name{text-overflow:ellipsis;white-space:nowrap;font-size:var(--font-size-sm);flex:1;overflow:hidden}.mv-pgs-tag{border-radius:var(--radius-sm);width:14px;height:14px;font-family:var(--font-family-mono);letter-spacing:0;flex-shrink:0;justify-content:center;align-items:center;font-size:9px;font-weight:700;display:inline-flex}.mv-pgs-tag--qml{color:var(--color-success-bright);background:#4ade801f;border:1px solid #4ade8040}.mv-pgs-tag--storage{color:var(--color-info);background:#7c9abf1a;border:1px solid #7c9abf4d}.mv-pgs-tag--on{color:var(--color-success-bright);background:0 0;width:auto;font-size:11px;line-height:1}.mv-pgs-loading{font-family:var(--font-family-mono);font-size:var(--font-size-2xs);text-transform:uppercase;letter-spacing:.16em;color:var(--color-text-dim);align-items:center;gap:8px;padding:8px 12px;display:flex}.mv-pgs-loading-bar{background:var(--color-surface-raised);flex:1;height:2px;position:relative;overflow:hidden}.mv-pgs-loading-bar:after{content:"";background:linear-gradient(90deg, transparent, var(--color-accent), transparent);width:30%;animation:1.2s linear infinite mv-pgs-scan;position:absolute;inset:0}@keyframes mv-pgs-scan{0%{transform:translate(-100%)}to{transform:translate(420%)}}.mv-pgs-active{resize:vertical;border-bottom:1px solid var(--color-border-section);flex-direction:column;min-height:60px;max-height:50vh;display:flex;overflow-y:auto}.mv-pgs-active::-webkit-scrollbar{width:6px}.mv-pgs-active::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:var(--radius-sm)}.mv-pgs-active::-webkit-scrollbar-thumb:hover{background:var(--color-text-dim)}.mv-pgs-active::-webkit-resizer{background:0 0}.mv-pgs-card{transition:background var(--duration-fast);animation:mv-pgs-card-in .3s var(--ease-out);border-bottom:1px solid #ffffff06;flex-direction:column;display:flex;position:relative}@keyframes mv-pgs-card-in{0%{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:translateY(0)}}.mv-pgs-card:hover{background:#ffffff05}.mv-pgs-card.is-expanded,.mv-pgs-card.is-styling{background:#7c6ff70f}.mv-pgs-card.is-styling:after{content:"";background:var(--color-accent);width:2px;position:absolute;top:0;bottom:0;right:0;box-shadow:0 0 6px #7c6ff78c}.mv-pgs-card-row{align-items:center;gap:6px;padding:5px 12px 5px 0;display:flex}.mv-pgs-card-spine{background:var(--card-color,var(--color-accent));pointer-events:none;width:5px;transition:filter var(--duration-fast);flex-shrink:0;align-self:stretch}.mv-pgs-card.is-expanded .mv-pgs-card-spine{filter:brightness(1.35)saturate(1.15)}.mv-pgs-card.is-hidden .mv-pgs-card-spine{opacity:.3}.mv-pgs-card-vis{border-radius:var(--radius-sm);cursor:pointer;width:22px;height:22px;color:var(--card-color,var(--color-accent));opacity:.85;transition:opacity var(--duration-fast), background var(--duration-fast);background:0 0;border:none;justify-content:center;align-items:center;margin-left:4px;padding:0;display:inline-flex}.mv-pgs-card-vis:hover{opacity:1;background:#ffffff0a}.mv-pgs-card.is-hidden .mv-pgs-card-vis{color:var(--color-text-dim);opacity:.6}.mv-pgs-card-glyph{color:var(--color-text-dim);flex-shrink:0;margin-right:1px}.mv-pgs-card.is-hidden .mv-pgs-card-glyph{opacity:.5}.mv-pgs-card-name{font-family:var(--font-family-mono);font-size:var(--font-size-sm);color:var(--color-text);text-overflow:ellipsis;white-space:nowrap;cursor:pointer;flex:1;overflow:hidden}.mv-pgs-card-name:hover{color:var(--color-accent-bright)}.mv-pgs-card.is-hidden .mv-pgs-card-name{color:var(--color-text-dim);text-decoration:line-through;-webkit-text-decoration-color:var(--color-border-light);text-decoration-color:var(--color-border-light)}.mv-pgs-card-count{font-family:var(--font-family-mono);font-size:var(--font-size-2xs);color:var(--color-text-dim);font-variant-numeric:tabular-nums;flex-shrink:0;padding-left:2px}.mv-pgs-card-actions{opacity:0;transition:opacity var(--duration-fast), transform var(--duration-fast);flex-shrink:0;align-items:center;gap:1px;margin-left:2px;display:inline-flex;transform:translate(4px)}.mv-pgs-card:hover .mv-pgs-card-actions,.mv-pgs-card:focus-within .mv-pgs-card-actions{opacity:1;transform:translate(0)}.mv-pgs-card-action{border-radius:var(--radius-sm);width:22px;height:22px;color:var(--color-text-dim);cursor:pointer;transition:color var(--duration-fast), background var(--duration-fast);background:0 0;border:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.mv-pgs-card-action:hover{color:var(--color-text);background:#ffffff0d}.mv-pgs-card-action.is-saved{color:var(--color-success-bright);opacity:1}.mv-pgs-card-action.is-saved:hover{background:#4ade801a}.mv-pgs-card-action.is-active{color:var(--color-accent-bright);background:var(--color-accent-bg-dim);opacity:1}.mv-pgs-card.is-expanded .mv-pgs-card-actions{opacity:1;transform:translate(0)}.mv-pgs-card-action--remove:hover{color:var(--color-error-hover);background:var(--color-error-bg)}.mv-pgs-card-style{border-top:1px solid var(--color-border);border-left:2px solid var(--card-color,var(--color-accent));background:#0000002e}.mv-pgs-style-host{resize:vertical;border-bottom:1px solid var(--color-border-section);background:#0000001f;min-height:80px;max-height:50vh;overflow-y:auto}.mv-pgs-style-host::-webkit-scrollbar{width:6px}.mv-pgs-style-host::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:var(--radius-sm)}.mv-pgs-style-host::-webkit-scrollbar-thumb:hover{background:var(--color-text-dim)}.mv-pgs-style-host::-webkit-resizer{background:0 0}.mv-pgs-rule-swatch{border:1px solid #ffffff2e;border-radius:2px;flex-shrink:0;width:9px;height:9px;margin-right:4px;display:inline-block}.mv-pgs .identify-panel--embedded{background:0 0;border-left:none;border-right:none;border-radius:0;margin:0}.mv-pgs-import-frame{border-top:1px solid var(--color-border-section);margin-top:auto;padding-bottom:4px}.mv-stylepanel{--sp-row-h:22px;--sp-input-bg:var(--color-surface-input);--sp-input-border:var(--color-border-light);font-family:var(--font-family-base);flex-direction:column;gap:2px;padding:6px 0 8px;display:flex}.mv-stylepanel .mv-style-header{border-bottom:1px solid var(--color-border-section);justify-content:space-between;align-items:center;gap:8px;margin-bottom:4px;padding:2px 12px 8px;display:flex}.mv-stylepanel .mv-style-header-label{font-family:var(--font-family-mono);font-size:var(--font-size-2xs);text-transform:uppercase;letter-spacing:.16em;color:var(--color-accent-bright);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-weight:700;overflow:hidden}.mv-stylepanel .mv-revert-btn{border:1px solid var(--sp-input-border);border-radius:var(--radius-sm);height:20px;color:var(--color-text-dim);font-family:var(--font-family-mono);font-size:var(--font-size-2xs);text-transform:uppercase;letter-spacing:.1em;cursor:pointer;transition:color var(--duration-fast), border-color var(--duration-fast), background var(--duration-fast);background:0 0;align-items:center;padding:0 8px;font-weight:600;display:inline-flex}.mv-stylepanel .mv-revert-btn:hover{color:var(--color-warning);background:#f59e0b14;border-color:#f59e0b73}.mv-stylepanel .mv-style-readonly-notice{font-family:var(--font-family-mono);font-size:var(--font-size-2xs);color:var(--color-text-muted);letter-spacing:.04em;border:1px dashed var(--color-border);border-left:2px solid var(--color-warning);border-radius:var(--radius-sm);background:#f59e0b0a;margin:4px 12px 6px;padding:8px 10px;font-style:normal;line-height:1.5}.mv-stylepanel .mv-style-readonly-notice b{color:var(--color-warning);text-transform:uppercase;letter-spacing:.1em}.mv-stylepanel .mv-style-readonly-notice div{color:var(--color-text-dim);margin-top:4px}.mv-stylepanel .mv-style-panel{background:0 0;border:none;flex-direction:column;gap:4px;padding:4px 12px 4px 14px;display:flex}.mv-stylepanel .mv-style-row{height:var(--sp-row-h);align-items:center;gap:8px;display:flex}.mv-stylepanel .mv-style-label{font-family:var(--font-family-mono);font-size:var(--font-size-2xs);text-transform:uppercase;letter-spacing:.12em;color:var(--color-text-dim);flex:0 0 60px;font-weight:600}.mv-stylepanel .mv-style-value{min-width:36px;font-family:var(--font-family-mono);font-size:var(--font-size-2xs);font-variant-numeric:tabular-nums;color:var(--color-text-muted);text-align:right;flex:none}.mv-stylepanel .mv-color-picker{border:1px solid var(--sp-input-border);border-radius:var(--radius-sm);cursor:pointer;appearance:none;width:30px;height:18px;transition:border-color var(--duration-fast), transform var(--duration-fast);background:0 0;padding:0}.mv-stylepanel .mv-color-picker::-webkit-color-swatch-wrapper{padding:1px}.mv-stylepanel .mv-color-picker::-webkit-color-swatch{border:none;border-radius:1px}.mv-stylepanel .mv-color-picker:hover{border-color:var(--color-accent);transform:scale(1.04)}.mv-stylepanel .mv-slider{appearance:none;background:var(--color-surface-deep);border:1px solid var(--color-border);border-radius:var(--radius-sm);cursor:pointer;height:3px;transition:border-color var(--duration-fast);outline:none;flex:1}.mv-stylepanel .mv-slider:hover{border-color:var(--color-text-dim)}.mv-stylepanel .mv-slider::-webkit-slider-thumb{appearance:none;background:var(--color-accent);border:1px solid var(--color-accent-light);cursor:grab;width:10px;height:14px;transition:background var(--duration-fast), border-color var(--duration-fast);border-radius:1px}.mv-stylepanel .mv-slider::-webkit-slider-thumb:hover{background:var(--color-accent-bright)}.mv-stylepanel .mv-slider::-webkit-slider-thumb:active{cursor:grabbing}.mv-stylepanel .mv-slider::-moz-range-thumb{background:var(--color-accent);border:1px solid var(--color-accent-light);cursor:grab;border-radius:1px;width:10px;height:14px}.mv-stylepanel .mv-slider:focus-visible{border-color:var(--color-accent);box-shadow:0 0 0 2px var(--color-accent-bg-dim)}.mv-stylepanel input[type=number]{height:var(--sp-row-h);background:var(--sp-input-bg);border:1px solid var(--sp-input-border);border-radius:var(--radius-sm);color:var(--color-text);font-family:var(--font-family-mono);font-size:var(--font-size-sm);font-variant-numeric:tabular-nums;transition:border-color var(--duration-fast), box-shadow var(--duration-fast);outline:none;padding:0 6px}.mv-stylepanel input[type=number]:focus{border-color:var(--color-accent);box-shadow:0 0 0 2px var(--color-accent-bg-dim)}.mv-stylepanel .mv-sym-compact{align-items:center;gap:4px;display:inline-flex}.mv-stylepanel .mv-sym-swatch{border:1px solid var(--sp-input-border);border-radius:var(--radius-sm);cursor:pointer;appearance:none;width:16px;height:16px;transition:border-color var(--duration-fast), transform var(--duration-fast);background:0 0;padding:0}.mv-stylepanel .mv-sym-swatch::-webkit-color-swatch-wrapper{padding:1px}.mv-stylepanel .mv-sym-swatch::-webkit-color-swatch{border:none;border-radius:1px}.mv-stylepanel .mv-sym-swatch:hover{border-color:var(--color-accent);transform:scale(1.08)}.mv-stylepanel .mv-sym-width{appearance:none;background:var(--color-surface-deep);border:1px solid var(--color-border);border-radius:var(--radius-sm);cursor:pointer;outline:none;width:44px;height:3px}.mv-stylepanel .mv-sym-width::-webkit-slider-thumb{appearance:none;background:var(--color-accent);border:1px solid var(--color-accent-light);cursor:grab;border-radius:1px;width:8px;height:12px}.mv-stylepanel .mv-sym-opacity{appearance:none;background:var(--color-surface-deep);border:1px solid var(--color-border);border-radius:var(--radius-sm);cursor:pointer;outline:none;width:40px;height:3px}.mv-stylepanel .mv-sym-opacity::-webkit-slider-thumb{appearance:none;background:var(--color-accent-light);border:1px solid var(--color-accent);cursor:grab;border-radius:1px;width:8px;height:12px}.mv-stylepanel .mv-cat-list,.mv-stylepanel .mv-range-list{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#0000002e;flex-direction:column;max-height:280px;margin:0 12px;display:flex;overflow-y:auto}.mv-stylepanel .mv-cat-list::-webkit-scrollbar{width:6px}.mv-stylepanel .mv-range-list::-webkit-scrollbar{width:6px}.mv-stylepanel .mv-cat-list::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:var(--radius-sm)}.mv-stylepanel .mv-range-list::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:var(--radius-sm)}.mv-stylepanel .mv-cat-row,.mv-stylepanel .mv-range-row{border-bottom:1px solid var(--color-border-section);font-family:var(--font-family-mono);font-size:var(--font-size-sm);color:var(--color-text-muted);transition:background var(--duration-fast), color var(--duration-fast);align-items:center;gap:8px;padding:4px 8px;display:flex}.mv-stylepanel .mv-cat-row:hover,.mv-stylepanel .mv-range-row:hover{color:var(--color-text);background:#ffffff06}.mv-stylepanel .mv-cat-row:last-child,.mv-stylepanel .mv-range-row:last-child{border-bottom:none}.mv-stylepanel .mv-cat-label,.mv-stylepanel .mv-range-label{text-overflow:ellipsis;white-space:nowrap;letter-spacing:.02em;flex:1;min-width:0;overflow:hidden}.mv-stylepanel .mv-cat-visible{accent-color:var(--color-accent);cursor:pointer;flex-shrink:0;margin:0}.mv-stylepanel .mv-style-empty{font-family:var(--font-family-mono);font-size:var(--font-size-2xs);text-transform:uppercase;letter-spacing:.18em;text-align:center;color:var(--color-text-dim);padding:14px 8px;font-style:normal}.mv-import-overlay{z-index:var(--z-viewport-controls);cursor:crosshair;position:absolute;inset:0}.mv-import-marquee{border:2px solid var(--color-accent-bright,#9b8dff);background:var(--color-accent-bg-dim,#3d37a026);pointer-events:none;z-index:var(--z-above);display:none;position:absolute}.mv-pgs .section-collapse-region{max-height:2000px;transition:max-height .18s ease-out,opacity .14s ease-out;overflow:hidden}.mv-pgs .section-collapse-region.collapsed{opacity:0;pointer-events:none;max-height:0}button.mv-pgs-rule-num{cursor:pointer;-webkit-user-select:none;user-select:none;font:inherit;color:inherit;transform-origin:50%;background:0 0;border:0;padding:0 2px;transition:transform .16s ease-out,color .12s ease-out}button.mv-pgs-rule-num:hover{color:var(--color-accent-hover,currentColor)}button.mv-pgs-rule-num:focus-visible{outline:1px solid var(--color-focus,currentColor);outline-offset:2px}button.mv-pgs-rule-num[aria-expanded=false]{transform:rotate(90deg)}.panel-wrapper.panel-floating .mv-pgs{flex-direction:column;height:100%;display:flex}.mv-modal-backdrop{z-index:1100;background:#0009;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.mv-modal{background:var(--color-surface);border:1px solid var(--color-border);border-radius:8px;box-shadow:0 20px 60px #00000080}.mv-modal--sm{width:320px}.mv-modal--md{width:400px}.mv-modal--lg{width:560px}.mv-modal-title{font-family:var(--font-family-mono);font-size:var(--font-size-sm);letter-spacing:.05em;text-transform:uppercase;color:var(--color-text);border-bottom:1px solid var(--color-accent);padding:10px 16px 10px 20px;font-weight:600;position:relative}.mv-modal-title:before{content:"";background:var(--color-accent);width:3px;position:absolute;top:0;bottom:0;left:0}.mv-modal-body{flex-direction:column;gap:8px;padding:12px 16px;display:flex}.mv-modal-body label{font-family:var(--font-family-mono);font-size:var(--font-size-xs);letter-spacing:.04em;text-transform:uppercase;color:var(--color-text-muted);flex-direction:column;gap:3px;display:flex}.mv-modal-body label .req-marker{color:var(--color-error);margin-left:2px}.mv-modal-body input[type=text],.mv-modal-body input[type=password],.mv-modal-body input:not([type]){background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text);font-size:var(--font-size-md);font-family:var(--font-family-mono);outline:none;padding:5px 8px;transition:border-color .12s,background-color .12s}.mv-modal-body input:focus-visible{border-color:var(--color-accent);box-shadow:0 0 0 2px #7c6ff740}.mv-modal-body input[type=checkbox]{accent-color:var(--color-accent)}.mv-modal-input--invalid{border-color:var(--color-error)!important;background:var(--color-error-bg)!important}@keyframes mv-modal-input-flash{0%,to{box-shadow:0 0 #e0606000}50%{box-shadow:0 0 0 3px #e0606080}}.mv-modal-input--flash{animation:.6s ease-out mv-modal-input-flash}.mv-modal-field-error{font-family:var(--font-family-mono);font-size:var(--font-size-xs);color:var(--color-error);margin-top:2px}.mv-modal-error-chip{border:1px solid var(--color-error);border-radius:var(--radius-md);background:var(--color-error-bg);font-family:var(--font-family-mono);font-size:var(--font-size-sm);color:var(--color-text);margin-top:4px;padding:6px 10px}.mv-modal-error-chip-label{font-size:var(--font-size-xs);letter-spacing:.06em;text-transform:uppercase;color:var(--color-error);margin-right:8px;display:inline-block}.mv-modal-checkbox-label{align-items:center;text-transform:none!important;letter-spacing:normal!important;font-family:inherit!important;font-size:var(--font-size-sm)!important;flex-direction:row!important;gap:6px!important}.mv-modal-footer{border-top:1px solid var(--color-border);justify-content:flex-end;gap:8px;padding:12px 16px;display:flex}.mv-modal-btn{font-family:var(--font-family-mono);font-size:var(--font-size-sm);border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-surface-raised);color:var(--color-text);cursor:pointer;padding:6px 14px;transition:background-color .12s,border-color .12s}.mv-modal-btn:hover:not(:disabled){background:var(--color-surface-hover);border-color:var(--color-border-light)}.mv-modal-btn:disabled{opacity:.5;cursor:not-allowed}.mv-modal-btn:focus-visible{outline:none;box-shadow:0 0 0 2px #7c6ff766}.mv-modal-btn--primary{background:var(--color-accent);border-color:var(--color-accent);color:#fff}.mv-modal-btn--primary:hover:not(:disabled){background:var(--color-accent-hover);border-color:var(--color-accent-hover)}.mv-modal-btn--danger{border-color:var(--color-error);color:var(--color-error)}.mv-modal-btn--danger:hover:not(:disabled){background:var(--color-error-bg)}.mv-modal-saved-list{border:1px solid var(--color-border);border-radius:var(--radius-md);flex-direction:column;gap:2px;max-height:120px;padding:2px;display:flex;overflow-y:auto}.mv-modal-saved-item{cursor:pointer;font-family:var(--font-family-mono);font-size:var(--font-size-sm);color:var(--color-text);border-radius:4px;align-items:center;gap:8px;padding:4px 8px;display:flex}.mv-modal-saved-item:hover{background:var(--color-surface-hover)}.mv-modal-saved-dot{background:var(--color-success);border-radius:50%;width:6px;height:6px}.mv-modal-saved-name{white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.mv-modal-saved-delete{color:var(--color-text-muted);cursor:pointer;visibility:hidden;background:0 0;border:none;padding:0 4px;font-size:16px;line-height:1}.mv-modal-saved-item:hover .mv-modal-saved-delete{visibility:visible}.mv-modal-saved-delete:hover{color:var(--color-error)}.mv-modal-warn-row{align-items:flex-start;gap:8px;display:flex}.mv-modal-warn-row svg{flex:none;margin-top:2px}.identify-panel{background:var(--color-surface,#14141ceb);width:320px;max-height:calc(100vh - 120px);color:var(--color-text,#e6e9ef);border:1px solid var(--color-border,#ffffff1a);z-index:var(--z-dropdown,100);border-radius:6px;padding:0;font-size:12px;position:absolute;top:16px;right:16px;overflow:auto;box-shadow:0 4px 20px #0006}.identify-panel--embedded{width:auto;max-height:320px;box-shadow:none;border-left:none;border-right:none;border-radius:0;position:static;top:auto;right:auto}.identify-header{border-bottom:1px solid var(--color-border,#ffffff14);background:var(--color-surface-strong,#00000040);align-items:center;gap:8px;padding:8px 12px;display:flex}.identify-title{letter-spacing:.05em;text-transform:uppercase;flex:1;font-size:11px;font-weight:600}.identify-pin-btn,.identify-close-btn{color:inherit;border:1px solid var(--color-border,#ffffff1f);font:inherit;cursor:pointer;background:0 0;border-radius:3px;padding:2px 8px}.identify-pin-btn:disabled{opacity:.4;cursor:default}.identify-pin-btn[aria-pressed=true]{background:var(--color-accent,#3e8cff);color:#fff;border-color:#0000}.identify-close-btn{padding:2px 6px}.identify-stack-tabs{border-bottom:1px solid var(--color-border,#ffffff14);flex-wrap:wrap;gap:4px;padding:8px 12px;display:flex}.identify-stack-tab{color:inherit;border:1px solid var(--color-border,#ffffff1f);font:inherit;cursor:pointer;background:0 0;border-radius:3px;padding:2px 8px}.identify-stack-tab.is-active{background:var(--color-accent,#3e8cff);color:#fff;border-color:#0000}.identify-meta{grid-template-columns:1fr;gap:4px;padding:8px 12px;display:grid}.identify-label{min-width:64px;color:var(--color-text-dim,#ffffff8c);margin-right:8px;display:inline-block}.identify-attrs{border-collapse:collapse;width:100%;margin-bottom:8px;font-size:11px}.identify-attrs th,.identify-attrs td{text-align:left;border-bottom:1px solid var(--color-border,#ffffff0f);vertical-align:top;padding:4px 12px}.identify-attrs th{color:var(--color-text-dim,#ffffff8c);width:40%;font-weight:400}.identify-attrs td{word-break:break-all}.gen-view{background:var(--color-bg);color:var(--color-text);justify-content:center;align-items:stretch;padding:24px;display:flex;position:absolute;inset:0;overflow:auto}.gen-layout{grid-template-columns:minmax(280px,1fr) minmax(280px,360px);align-items:start;gap:24px;width:100%;max-width:900px;display:grid}@media (width<=720px){.gen-layout{grid-template-columns:1fr}}.gen-col{flex-direction:column;gap:12px;display:flex}.gen-section-title{font-size:var(--font-size-sm);color:var(--color-accent-bright);letter-spacing:.08em;text-transform:uppercase;border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;margin-top:8px;padding-bottom:4px;font-weight:600;display:flex}.gen-col .gen-section-title:first-child{margin-top:0}.gen-view-grid{grid-template-columns:1fr 1fr;gap:6px;display:grid}.gen-view-slot{aspect-ratio:1;border:1px dashed var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);transition:border-color var(--duration-fast), background var(--duration-fast);cursor:default;flex-direction:column;justify-content:center;align-items:center;gap:4px;display:flex;position:relative;overflow:hidden}.gen-view-slot-over{border-color:var(--color-accent-bright);background:#9b8dff0f}.gen-view-slot-filled{border-style:solid;border-color:var(--color-border-light)}.gen-view-empty{color:var(--color-text-dim);opacity:.5}.gen-view-thumb{object-fit:contain;background:#0a0a12;width:100%;height:100%;position:absolute;inset:0}.gen-view-clear{color:#fff;cursor:pointer;opacity:0;width:20px;height:20px;transition:opacity var(--duration-fast);background:#000000a6;border:none;border-radius:50%;justify-content:center;align-items:center;font-size:14px;line-height:1;display:flex;position:absolute;top:4px;right:4px}.gen-view-slot:hover .gen-view-clear{opacity:1}.gen-view-clear:hover{background:#000000e6}.gen-view-clear:focus-visible{opacity:1;box-shadow:0 0 0 2px var(--color-accent-bright);outline:none}.gen-view-label{font-size:var(--font-size-2xs);color:var(--color-accent-bright);border-radius:var(--radius-sm);text-transform:uppercase;letter-spacing:.06em;pointer-events:none;background:#0e0e16bf;padding:1px 6px;font-weight:500;position:absolute;bottom:3px;left:50%;transform:translate(-50%)}.gen-view-count{font-size:var(--font-size-xs);font-family:var(--font-family-mono);color:var(--color-text-dim);text-transform:none;letter-spacing:0;font-weight:400}.gen-view-slot-primary{border-color:var(--color-accent-bright);box-shadow:0 0 8px #9b8dff40}.gen-view-primary-badge{font-size:var(--font-size-3xs);color:var(--color-success-bright);text-transform:uppercase;letter-spacing:.05em;margin-left:4px}.gen-view-hint{font-size:var(--font-size-xs);color:var(--color-text-dim);font-style:italic;line-height:1.4}.gen-input-actions{gap:8px;display:flex}.gen-field{flex-direction:column;gap:4px;display:flex}.gen-field-label{font-size:var(--font-size-xs);color:var(--color-text-dim);text-transform:uppercase;letter-spacing:.06em}.gen-field-checkbox{font-size:var(--font-size-md);color:var(--color-text);flex-direction:row;align-items:center;gap:8px}.gen-field-row{justify-content:flex-end;margin-top:-6px;display:flex}.gen-input{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text);font-size:var(--font-size-md);outline:none;padding:6px 8px;font-family:inherit}.gen-input:focus{border-color:var(--color-accent-bright)}select.gen-input{cursor:pointer}.gen-btn{border-radius:var(--radius-md);font-size:var(--font-size-md);cursor:pointer;transition:background var(--duration-fast), border-color var(--duration-fast);border:1px solid #0000;justify-content:center;align-items:center;padding:6px 12px;font-family:inherit;font-weight:500;display:inline-flex}.gen-btn:disabled{opacity:.4;cursor:not-allowed}.gen-btn-ghost{border-color:var(--color-border);color:var(--color-text);background:0 0}.gen-btn-ghost:hover:not(:disabled),.gen-btn-ghost:focus-visible:not(:disabled){border-color:var(--color-accent-bright);color:var(--color-accent-bright);outline:none}.gen-btn-ghost:focus-visible:not(:disabled){box-shadow:0 0 0 2px var(--color-accent-bright)}.gen-btn-primary{background:var(--color-accent-bright);border-color:var(--color-accent-bright);color:#0b0b14;font-weight:600}.gen-btn-primary:hover:not(:disabled),.gen-btn-primary:focus-visible:not(:disabled){background:#b0a4ff;border-color:#b0a4ff;outline:none}.gen-btn-primary:focus-visible:not(:disabled){box-shadow:0 0 0 2px #fff, 0 0 0 4px var(--color-accent-bright)}.gen-btn-small{font-size:var(--font-size-sm);padding:4px 8px}.gen-actions{flex-direction:column;gap:6px;margin-top:12px;display:flex}.gen-license-note{font-size:var(--font-size-sm);color:var(--color-warning);opacity:.8}.gen-error{font-size:var(--font-size-sm);color:var(--color-axis-x);font-family:var(--font-family-mono);word-break:break-word;line-height:1.4}.gen-progress{border-radius:var(--radius-sm);background:var(--color-surface);border:1px solid var(--color-border);height:6px;position:relative;overflow:hidden}.gen-progress-bar{background:var(--color-accent-bright);transition:width var(--duration-fast);position:absolute;top:0;bottom:0;left:0;box-shadow:0 0 8px #9b8dff99}.gen-progress-label{font-size:var(--font-size-xs);font-family:var(--font-family-mono);color:var(--color-text-dim);text-transform:lowercase;letter-spacing:.04em}@keyframes gen-indeterminate{0%{width:20%;left:-20%}50%{width:30%;left:40%}to{width:20%;left:100%}}.gen-status{font-size:var(--font-size-xs);font-family:var(--font-family-mono);text-transform:none;letter-spacing:0;font-weight:500}.gen-status-ok{color:var(--color-success-bright)}.gen-status-down{color:var(--color-axis-x)}.gen-status-unknown{color:var(--color-text-dim)}.gen-modal-backdrop{z-index:var(--z-modal);background:#000000b3;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.gen-modal{background:var(--color-surface);border:1px solid var(--color-border);width:calc(100% - 48px);max-width:480px;color:var(--color-text);border-radius:8px;padding:24px;box-shadow:0 20px 60px #0009}.gen-modal-title{color:var(--color-accent-bright);margin:0 0 12px;font-size:16px;font-weight:600}.gen-modal-body{font-size:var(--font-size-md);margin:0 0 12px;line-height:1.6}.gen-modal-terms{font-size:var(--font-size-md);color:var(--color-text-dim);margin:0 0 12px;padding-left:20px;line-height:1.6}.gen-modal-terms li{margin-bottom:4px}.gen-modal-link{font-size:var(--font-size-sm);color:var(--color-text-dim);margin:0 0 20px}.gen-modal-link code{font-family:var(--font-family-mono);color:var(--color-accent-bright)}.gen-modal-actions{justify-content:flex-end;gap:8px;display:flex}.gen-autoaccept{color:var(--color-text-muted,#aaa);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:6px;margin-top:4px;margin-bottom:4px;font-size:12px;display:flex}.gen-autoaccept input[type=checkbox]{cursor:pointer}.gen-preview{flex-direction:column;gap:8px;margin-top:12px;display:flex}.gen-preview .gen-section-title{justify-content:space-between;align-items:center;display:flex}.gen-preview-status{color:var(--color-text-muted,#999);letter-spacing:0;font-size:11px;font-weight:400}.gen-preview-canvas-wrap{width:100%}.viewport-container{background:var(--color-bg);flex-direction:column;width:100%;height:100%;display:flex;position:relative;overflow:hidden}.viewport-canvas-wrap{flex:1 1 0;min-width:0;min-height:0;position:relative;overflow:hidden}.viewport-container canvas{display:block}.vp-bar{height:var(--panel-titlebar-height);background:var(--color-surface-header);border-bottom:1px solid var(--color-border);z-index:var(--z-above);flex-shrink:0;justify-content:space-between;align-items:center;padding:0 6px;display:flex}.vp-bar-left,.vp-bar-right{align-items:center;gap:0;display:flex}.vp-bar-right{gap:8px}.vp-tab{color:var(--color-text-dim);font-size:var(--font-size-sm);height:var(--panel-titlebar-height);cursor:pointer;white-space:nowrap;transition:all var(--duration-fast);opacity:.8;background:0 0;border:none;border-bottom:2px solid #0000;align-items:center;padding:0 10px;font-weight:500;display:flex}.vp-tab:hover{color:var(--color-text-bright);opacity:1;background:#ffffff0d}.vp-tab.active{color:var(--color-success-bright);border-bottom-color:var(--color-success-bright);opacity:1;background:0 0;position:relative}.vp-tab.active:after{content:"";background:var(--color-success-bright);border-radius:1px;height:2px;position:absolute;bottom:0;left:0;right:0;box-shadow:0 0 8px 2px #4ade8080,0 0 3px 1px #4ade804d}.vp-tab:disabled,.vp-tab.disabled{opacity:.35;cursor:not-allowed;pointer-events:none;color:var(--color-text-dim);border-bottom-color:#0000}.ortho-badge{font-size:var(--font-size-3xs);color:var(--color-accent);opacity:.8;font-variant:small-caps;margin-left:5px}.vp-quad-btn,.vp-map-btn{gap:4px}.vp-quad-icon{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;width:11px;height:11px}.vp-generator-btn{gap:4px}.vp-generator-icon{width:12px;height:12px}.vp-generator-btn.active{color:var(--color-accent-bright);border-bottom-color:var(--color-accent-bright)}.vp-generator-btn.active:after{background:var(--color-accent-bright);box-shadow:0 0 8px 2px #9b8dff80,0 0 3px 1px #9b8dff4d}.viewport-gen-wrap{inset:var(--panel-titlebar-height) 0 0 0;position:absolute;overflow:hidden}.vp-info{font-size:var(--font-size-sm);color:var(--color-accent);opacity:.6;-webkit-user-select:none;user-select:none}.vp-view-label{font-size:var(--font-size-md);color:var(--color-warning);letter-spacing:.06em;pointer-events:none;z-index:var(--z-viewport-layer);font-weight:600;position:absolute;bottom:12px;left:50%;transform:translate(-50%)}.vp-crs-label{font-size:var(--font-size-sm);color:var(--color-warning);font-family:var(--font-family-mono);border-radius:var(--radius-md);pointer-events:none;z-index:var(--z-viewport-layer);background:#0e0e16bf;border:1px solid #f59e0b33;flex-direction:column;align-items:flex-end;gap:1px;padding:4px 8px;display:flex;position:absolute;bottom:12px;right:12px}.vp-crs-origin{font-size:var(--font-size-xs);color:#f59e0ba6}.vp-datetime{font-size:var(--font-size-sm);font-family:var(--font-family-mono);color:var(--color-warning);white-space:nowrap;-webkit-user-select:none;user-select:none}.quad-overlay{pointer-events:none;z-index:var(--z-viewport-layer);position:absolute;inset:0}.quad-overlay:before{content:"";background:var(--color-surface-header);width:6px;position:absolute;top:0;bottom:0;left:50%;transform:translate(-3px)}.quad-overlay:after{content:"";background:var(--color-surface-header);height:6px;position:absolute;top:50%;left:0;right:0;transform:translateY(-3px)}.quad-label{font-size:var(--font-size-md);color:var(--color-warning);letter-spacing:.06em;pointer-events:none;font-weight:600;position:absolute;transform:translate(-50%)}.quad-label--persp{bottom:calc(50% + 12px);left:25%}.quad-label--top{bottom:calc(50% + 12px);left:75%}.quad-label--front{bottom:12px;left:25%}.quad-label--side{bottom:12px;left:75%}.vp-shade{z-index:var(--z-viewport-controls);pointer-events:none;gap:4px;display:flex;position:absolute;top:8px;left:12px}.vp-shade-btn{pointer-events:all;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text-muted);font-size:var(--font-size-sm);cursor:pointer;transition:all var(--duration-fast);white-space:nowrap;align-items:center;gap:5px;padding:3px 8px;font-weight:500;display:flex}.vp-shade-btn:hover,.vp-shade-btn.active{border-color:var(--color-accent);color:var(--color-text);background:var(--color-surface-raised)}.vp-shade-btn:focus-visible,.vp-tab:focus-visible{outline:2px solid var(--color-accent);outline-offset:-2px}.grid-labels-canvas{pointer-events:none;z-index:3;width:100%;height:100%;display:none;position:absolute;inset:0}.vp-stats-box{border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-xs);font-family:var(--font-family-mono);pointer-events:none;z-index:var(--z-viewport-controls);background:#0e0e16d9;flex-direction:column;gap:1px;padding:5px 10px;font-weight:600;line-height:1.6;display:flex;position:absolute;top:38px;left:12px}.vp-stats__fps{color:var(--color-success-bright)}.vp-stats__poly{color:var(--color-accent-bright)}.oln-tree{padding:4px 0}.oln-row{height:24px;font-size:var(--font-size-md);color:var(--color-text-muted);cursor:pointer;transition:background var(--duration-fast);align-items:center;gap:6px;padding:0 8px 0 12px;display:flex}.oln-row:hover{background:var(--color-surface-raised)}.oln-row.selected{background:var(--color-accent-bg);color:var(--color-text)}.oln-row.singleton{color:var(--color-text-dim)}.oln-icon-svg{flex-shrink:0;justify-content:center;align-items:center;width:14px;height:14px;display:flex}.oln-icon-svg svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;width:14px;height:14px}.oln-label{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.oln-dims{font-size:var(--font-size-2xs);color:var(--color-warning);font-family:var(--font-family-mono);white-space:nowrap;flex-shrink:0}.oln-faces{font-size:var(--font-size-2xs);color:var(--color-text-dim);background:var(--color-surface-deep);border-radius:var(--radius-sm);flex-shrink:0;padding:0 4px}.oln-vis{cursor:pointer;opacity:.4;transition:opacity var(--duration-fast), color var(--duration-fast);color:var(--color-success-bright);filter:drop-shadow(0 0 3px #4ade8059);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;width:14px;height:14px;padding:0 2px;display:flex}.oln-vis svg{width:12px;height:12px}.oln-row:hover .oln-vis{opacity:.7}.oln-vis:hover{opacity:1;filter:drop-shadow(0 0 4px #4ade8099);color:var(--color-success-hover)!important}.oln-vis.visible{opacity:.9}.oln-vis.hidden{opacity:.4;color:var(--color-error)}.oln-title-sort{color:var(--color-accent-bright)}.oln-title-sort:hover{color:var(--color-accent-light);background:var(--color-accent-bg)}.oln-title-sort:disabled{opacity:.25;cursor:default}.oln-rename{font-size:var(--font-size-md);background:var(--color-surface-deep);color:var(--color-text);border:1px solid var(--color-accent);border-radius:2px;outline:none;flex:1;padding:0 4px}.oln-empty{text-align:center;font-size:var(--font-size-sm);color:var(--color-text-dim);padding:16px}.oln-row.oln-layer{background:var(--color-surface-deep);font-weight:600;position:relative}.oln-row.oln-layer:hover{background:var(--color-surface-raised)}.oln-row.layer-hidden{opacity:.5}.oln-chevron{cursor:pointer;width:14px;height:14px;color:var(--color-text-dim);transition:color var(--duration-fast);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:flex}.oln-chevron:hover{color:var(--color-text)}.oln-chevron svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;width:12px;height:12px}.oln-color-swatch{cursor:pointer;width:10px;height:10px;transition:border-color var(--duration-fast);border:1px solid #fff3;border-radius:2px;flex-shrink:0}.oln-color-swatch:hover{border-color:#ffffff80}.oln-lock{cursor:pointer;opacity:.3;transition:opacity var(--duration-fast), color var(--duration-fast);color:var(--color-text-dim);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;width:14px;height:14px;padding:0 2px;display:flex}.oln-lock svg{width:12px;height:12px}.oln-row:hover .oln-lock{opacity:.6}.oln-lock:hover{opacity:1}.oln-lock.is-locked{opacity:.85;color:var(--color-error)}.oln-row.locked{opacity:.6;cursor:default}.oln-swatch{border-radius:2px;flex-shrink:0;width:8px;height:8px}.oln-gis-name{font-size:var(--font-size-sm)}.oln-gis-badge{font-size:var(--font-size-3xs);font-weight:600;font-family:var(--font-family-mono);color:var(--color-text-dim);background:var(--color-surface-deep);letter-spacing:.3px;border-radius:2px;flex-shrink:0;padding:0 3px}.oln-gis-hidden{opacity:.45}.oln-gis-del{cursor:pointer;color:var(--color-text-dim);opacity:0;transition:opacity var(--duration-faster);background:0 0;border:none;flex-shrink:0;align-items:center;padding:0 1px;display:flex}.oln-row:hover .oln-gis-del{opacity:.6}.oln-gis-del:hover{color:var(--color-error);opacity:1!important}.oln-expand-btn{cursor:pointer;color:var(--color-text-dim);opacity:.6;transition:opacity var(--duration-faster);background:0 0;border:none;flex-shrink:0;align-items:center;padding:0 2px;display:flex}.oln-expand-btn:hover{opacity:1}.oln-gis-feature{background:var(--color-surface-deep);min-height:20px;padding-left:10px;font-size:10.5px}.oln-gis-feature:hover{background:var(--color-surface-hover)}.oln-gis-feature.selected{background:var(--color-accent-dim)}.oln-gis-feature-indent{flex-shrink:0;width:12px}.oln-gis-fname{text-overflow:ellipsis;white-space:nowrap;font-size:10.5px;overflow:hidden}.oln-row:focus-visible,.oln-chevron:focus-visible,.oln-vis:focus-visible,.oln-lock:focus-visible,.oln-title-sort:focus-visible{outline:2px solid var(--color-accent);outline-offset:-2px;border-radius:2px}.oln-vis:disabled,.oln-lock:disabled{opacity:.35;cursor:not-allowed;pointer-events:none}.insp{--insp-row-h:26px;--insp-label-w:76px;--insp-input-bg:var(--color-surface-input);--insp-input-border:var(--color-border-light);background:var(--color-surface)}.insp .section-header{background:linear-gradient(180deg, #7c6ff70f 0%, transparent 100%), var(--color-surface-deep);border-bottom:1px solid var(--color-border);cursor:pointer;height:24px;font-family:var(--font-family-mono);transition:background var(--duration-fast);padding:0 12px 0 10px;position:relative}.insp .section-header:before{content:"";background:var(--color-border-accent);opacity:.45;width:2px;transition:opacity var(--duration-fast), background var(--duration-fast);position:absolute;top:4px;bottom:4px;left:0}.insp .section-header:hover{background:linear-gradient(180deg, #7c6ff71a 0%, transparent 100%), var(--color-surface-deep)}.insp .section-header:hover:before{opacity:1;background:var(--color-accent)}.insp .section-header[aria-expanded=false]:before{opacity:.25}.insp .section-title{font-size:var(--font-size-2xs);font-family:var(--font-family-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--color-text-bright);font-weight:700}.insp .panel-collapse-chevron{fill:none;width:9px;height:9px;stroke:var(--color-text-dim);stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;transition:transform var(--duration-medium) var(--ease-out), stroke var(--duration-fast)}.insp .section-header:hover .panel-collapse-chevron{stroke:var(--color-accent-bright)}.insp .panel-collapse-chevron.collapsed{transform:rotate(-90deg)}.insp .insp-info{background:radial-gradient(120% 80% at 0% 0%, #7c6ff71a, transparent 55%), var(--color-surface-raised);border:1px solid var(--color-border-light);border-left:2px solid var(--color-accent);border-radius:var(--radius-sm);font-family:var(--font-family-mono);font-size:var(--font-size-sm);color:var(--color-text);margin:4px 8px;padding:8px 10px 8px 14px;position:relative}.insp .insp-name{font-family:var(--font-family-mono);font-size:var(--font-size-base);color:var(--color-text-bright);letter-spacing:.02em;word-break:break-word;font-weight:600}.insp .insp-size{font-family:var(--font-family-mono);font-size:var(--font-size-2xs);color:var(--color-warning-text);letter-spacing:.06em;text-transform:uppercase;margin-top:4px}.insp .insp-pos{font-family:var(--font-family-mono);font-size:var(--font-size-2xs);color:var(--color-text-dim);font-variant-numeric:tabular-nums;margin-top:2px}.insp .insp-empty{font-family:var(--font-family-mono);font-size:var(--font-size-2xs);text-transform:uppercase;letter-spacing:.2em;text-align:center;color:var(--color-text-dim);border:1px dashed var(--color-border);border-radius:var(--radius-sm);background:#0000002e;margin:8px 10px;padding:12px 10px;font-style:normal}.insp .insp-subsection{font-family:var(--font-family-mono);font-size:var(--font-size-2xs);text-transform:uppercase;letter-spacing:.14em;color:var(--color-accent-bright);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;align-items:center;gap:6px;margin:4px 0 0;padding:8px 10px 4px;font-weight:700;display:flex;position:relative}.insp .insp-subsection:after{content:"";background:linear-gradient(90deg, var(--color-border-light), transparent);flex:1;height:1px;margin-left:6px}.insp .insp-subsection:hover{background:#7c6ff70a}.insp .insp-subsection .sub-chevron{fill:none;width:8px;height:8px;stroke:var(--color-accent);stroke-width:2.5px;stroke-linecap:round;stroke-linejoin:round;transition:transform var(--duration-medium) var(--ease-out);flex-shrink:0}.insp .insp-subsection .sub-chevron.collapsed{transform:rotate(-90deg)}.insp .insp-param-row{min-height:var(--insp-row-h);transition:background var(--duration-fast);align-items:center;gap:8px;padding:3px 10px;display:flex}.insp .insp-param-row:hover{background:#ffffff05}.insp .insp-param-label{flex:0 0 var(--insp-label-w);font-family:var(--font-family-mono);font-size:var(--font-size-2xs);text-transform:uppercase;letter-spacing:.12em;color:var(--color-text-dim);font-weight:600}.insp .insp-param-input,.insp .insp-vec3-input{background:var(--insp-input-bg);border:1px solid var(--insp-input-border);border-radius:var(--radius-sm);min-width:0;height:22px;color:var(--color-text);font-family:var(--font-family-mono);font-size:var(--font-size-sm);font-variant-numeric:tabular-nums;transition:border-color var(--duration-fast), box-shadow var(--duration-fast), background var(--duration-fast);outline:none;flex:1;padding:0 6px}.insp .insp-param-input:hover,.insp .insp-vec3-input:hover{border-color:var(--color-text-dim)}.insp .insp-param-input:focus,.insp .insp-vec3-input:focus{border-color:var(--color-accent);box-shadow:0 0 0 2px var(--color-accent-bg-dim);background:var(--color-surface-raised)}.insp .insp-param-select{background:var(--insp-input-bg) linear-gradient(45deg, transparent 50%, var(--color-text-dim) 50%) calc(100% - 12px) 50% / 5px 5px no-repeat, linear-gradient(135deg, var(--color-text-dim) 50%, transparent 50%) calc(100% - 7px) 50% / 5px 5px no-repeat;border:1px solid var(--insp-input-border);border-radius:var(--radius-sm);height:22px;color:var(--color-text);font-family:var(--font-family-mono);font-size:var(--font-size-sm);appearance:none;cursor:pointer;transition:border-color var(--duration-fast), box-shadow var(--duration-fast);flex:1;padding:0 22px 0 6px}.insp .insp-param-select:hover{border-color:var(--color-text-dim)}.insp .insp-param-select:focus{border-color:var(--color-accent);box-shadow:0 0 0 2px var(--color-accent-bg-dim)}.insp .insp-param-color{border:1px solid var(--insp-input-border);border-radius:var(--radius-sm);cursor:pointer;width:36px;height:22px;transition:border-color var(--duration-fast), transform var(--duration-fast);background:0 0;padding:0}.insp .insp-param-color::-webkit-color-swatch-wrapper{padding:1px}.insp .insp-param-color::-webkit-color-swatch{border:none;border-radius:2px}.insp .insp-param-color:hover{border-color:var(--color-accent);transform:scale(1.05)}.insp .insp-param-color:focus-visible{border-color:var(--color-accent);box-shadow:0 0 0 2px var(--color-accent-bg-dim);outline:none}.insp .insp-vec3-row{min-height:var(--insp-row-h);align-items:center;gap:4px;padding:3px 10px;display:flex}.insp .insp-vec3-row:hover{background:#ffffff05}.insp .insp-vec3-row .insp-param-label{flex:0 0 var(--insp-label-w)}.insp .insp-vec3-label-x,.insp .insp-vec3-label-y,.insp .insp-vec3-label-z{border-radius:var(--radius-sm) 0 0 var(--radius-sm);width:16px;height:22px;font-family:var(--font-family-mono);letter-spacing:0;-webkit-user-select:none;user-select:none;border:1px solid var(--insp-input-border);background:#0000004d;border-right:none;justify-content:center;align-items:center;margin-right:-1px;font-size:10px;font-weight:700;display:inline-flex}.insp .insp-vec3-label-x{color:var(--color-axis-x)}.insp .insp-vec3-label-y{color:var(--color-axis-y)}.insp .insp-vec3-label-z{color:var(--color-axis-z)}.insp .insp-vec3-row .insp-vec3-input{border-radius:0;margin-right:2px}.insp .insp-vec3-row .insp-vec3-input:last-of-type{margin-right:0}.insp .insp-section-pad{padding:4px 6px 6px}.insp .insp-section-pad-h{padding:4px 10px 6px}.insp .insp-section-pad-lg{padding:4px 0 6px}.insp .insp-info-text{font-family:var(--font-family-mono);font-size:var(--font-size-2xs);letter-spacing:.04em;color:var(--color-text-dim);padding:2px 10px}.insp .insp-info-text-muted{font-size:var(--font-size-sm);color:var(--color-text-muted);padding:4px 10px}.insp .insp-mono-text{font-family:var(--font-family-mono);font-size:var(--font-size-2xs);font-variant-numeric:tabular-nums;color:var(--color-text-dim);letter-spacing:.02em;padding:2px 10px}.insp .insp-flex-row{min-height:var(--insp-row-h);align-items:center;gap:8px;padding:4px 10px;display:flex}.insp .insp-flex-label{flex:0 0 var(--insp-label-w);font-family:var(--font-family-mono);font-size:var(--font-size-2xs);text-transform:uppercase;letter-spacing:.12em;color:var(--color-text-dim);font-weight:600}.insp .insp-flex-value{font-size:var(--font-size-sm);color:var(--color-text-muted);flex:1}.insp .insp-checkbox-row,.insp .insp-param-row.insp-checkbox-row{flex-wrap:wrap;gap:12px;padding-top:4px;padding-bottom:4px}.insp .insp-check-label{font-family:var(--font-family-mono);font-size:var(--font-size-2xs);text-transform:uppercase;letter-spacing:.12em;color:var(--color-text-muted)}.insp .insp-small-btn{border:1px solid var(--insp-input-border);border-radius:var(--radius-sm);height:22px;color:var(--color-text-muted);font-family:var(--font-family-mono);font-size:var(--font-size-2xs);text-transform:uppercase;letter-spacing:.1em;cursor:pointer;transition:color var(--duration-fast), border-color var(--duration-fast), background var(--duration-fast);background:0 0;align-items:center;gap:4px;padding:0 9px;font-weight:600;display:inline-flex}.insp .insp-small-btn:hover{color:var(--color-text);border-color:var(--color-border-accent);background:var(--color-accent-bg-dim)}.insp .insp-remove-btn{border:1px solid var(--color-border);border-radius:var(--radius-sm);width:100%;height:26px;color:var(--color-text-muted);font-family:var(--font-family-mono);font-size:var(--font-size-2xs);text-transform:uppercase;letter-spacing:.14em;cursor:pointer;transition:color var(--duration-fast), border-color var(--duration-fast), background var(--duration-fast);background:0 0;margin:6px 10px;padding:0 10px;font-weight:600}.insp .insp-remove-btn:hover{color:var(--color-error-hover);background:#ef44440f;border-color:#e0606073}.insp .insp-tex-clear-btn{width:16px;height:16px;color:var(--color-text-dim);font-family:var(--font-family-mono);cursor:pointer;border-radius:var(--radius-sm);transition:color var(--duration-fast), background var(--duration-fast);background:0 0;border:none;justify-content:center;align-items:center;font-size:13px;line-height:1;display:inline-flex}.insp .insp-tex-clear-btn:hover{color:var(--color-error-hover);background:var(--color-error-bg)}.insp .insp-hidden-input{display:none}.insp .insp-cursor-pointer{cursor:pointer}.insp .insp-astro-info{font-family:var(--font-family-mono);font-size:var(--font-size-2xs);color:var(--color-text-dim);letter-spacing:.04em;border:1px solid var(--color-border-light);border-left:2px solid var(--color-accent);border-radius:var(--radius-sm);background:#7c6ff70a;margin:4px 10px;padding:6px 8px;line-height:1.6}.insp .insp-date-row{min-height:var(--insp-row-h);align-items:center;gap:6px;padding:4px 10px;display:flex}.insp input[type=checkbox]{accent-color:var(--color-accent);cursor:pointer}.insp input[type=number]::-webkit-inner-spin-button{appearance:none;margin:0}.insp input[type=number]::-webkit-outer-spin-button{appearance:none;margin:0}.insp input[type=number]{-moz-appearance:textfield}.insp-feature-source{font-family:var(--font-family-mono);font-size:var(--font-size-sm);color:var(--color-text-muted);margin-bottom:4px}.insp-feature-table{border-collapse:collapse;width:100%;font-family:var(--font-family-mono);font-size:var(--font-size-sm)}.insp-feature-table th{text-align:left;font-variant:small-caps;letter-spacing:.05em;color:var(--color-text-muted);border-bottom:1px solid var(--color-border-light);padding:2px 6px}.insp-feature-table td{border-bottom:1px dotted var(--color-border-light);padding:2px 6px}.insp-feature-key{color:var(--color-text)}.insp-feature-warn{color:var(--color-warning)}.insp-feature-collision{font-family:var(--font-family-mono);font-size:var(--font-size-sm);color:var(--color-warning);margin-top:4px}.rule-editor-textarea{background:var(--color-surface-deep);width:100%;height:100%;color:var(--color-text);caret-color:var(--color-accent-light);font-family:var(--font-family-mono);font-size:var(--font-size-md);resize:none;tab-size:2;white-space:pre-wrap;border:none;outline:none;padding:10px;line-height:1.6}.rule-editor-textarea::selection{background:var(--color-accent-bg)}.rule-editor-textarea::placeholder{color:var(--color-text-dim)}.panel-wrapper:has(.rule-editor-monaco)>.panel-body{flex-direction:column;display:flex;overflow:hidden}.rule-editor-monaco{flex:1;width:100%;height:100%;min-height:0;overflow:hidden}.rule-editor-monaco .monaco-editor{--vscode-editor-background:var(--color-surface-deep)}.rule-editor-monaco .monaco-editor .margin{background:var(--color-surface-deep)!important}.re-tab-bar{background:var(--color-bg);border-bottom:1px solid var(--color-border);scrollbar-width:none;flex-shrink:0;align-items:stretch;height:28px;display:flex;overflow:auto hidden}.re-tab-bar::-webkit-scrollbar{display:none}.re-tab{height:100%;font-size:var(--font-size-sm);color:var(--color-text-muted);cursor:pointer;white-space:nowrap;border-right:1px solid var(--color-border);transition:background var(--duration-fast), color var(--duration-fast);-webkit-user-select:none;user-select:none;align-items:center;gap:4px;max-width:160px;padding:0 6px 0 8px;display:flex}.re-tab:hover{background:var(--color-surface);color:var(--color-text)}.re-tab.active{background:var(--color-surface-deep);color:var(--color-text);border-bottom:2px solid var(--color-accent);position:relative}.re-tab.active:after{content:"";background:var(--color-accent);border-radius:1px;height:2px;position:absolute;bottom:0;left:0;right:0;box-shadow:0 0 8px 2px #7c6ff799,0 0 3px 1px #7c6ff766}.re-tab-icon{flex-shrink:0;display:flex}.re-tab-icon svg{fill:none;width:12px;height:12px;stroke:var(--color-icon-rule);stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round}.re-tab-label{text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.re-tab-dirty{font-size:var(--font-size-3xs);color:var(--color-accent);flex-shrink:0}.re-tab-close{width:16px;height:16px;color:var(--color-text-dim);cursor:pointer;border-radius:var(--radius-sm);opacity:0;transition:opacity var(--duration-fast), background var(--duration-fast), color var(--duration-fast);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;font-size:14px;line-height:1;display:flex}.re-tab:hover .re-tab-close,.re-tab.active .re-tab-close{opacity:1}.re-tab-close:hover,.re-tab-close:focus-visible{background:var(--color-error-bg);color:var(--color-error);outline:none}.re-tab-close:focus-visible{opacity:1;box-shadow:0 0 0 2px var(--color-error)}.live-preview-btn{color:var(--color-success);transition:color var(--duration-normal), border-color var(--duration-normal), background var(--duration-normal)}.live-preview-btn:hover{color:var(--color-success-hover);background:#4caf5014}.live-preview-btn.active{color:var(--color-success);border-color:var(--color-success);background:#4caf501f}.live-preview-btn.active:hover{color:var(--color-success-hover)}.hier-body{height:100%;padding:4px 0;overflow-y:auto}.hier-empty{color:var(--color-text-dim);font-size:var(--font-size-sm);padding:8px 10px;font-style:italic}.hier-tree{font-size:var(--font-size-sm);font-family:var(--font-family-mono)}.hier-rule{cursor:default;white-space:nowrap;align-items:center;gap:4px;min-height:20px;padding:2px 6px;display:flex}.hier-rule:hover{background:#ffffff0d}.hier-arrow{color:var(--color-text-dim);cursor:pointer;-webkit-user-select:none;user-select:none;width:12px;font-size:var(--font-size-2xs);flex-shrink:0}.hier-arrow:hover{color:var(--color-accent-light)}.hier-leaf{flex-shrink:0;width:12px}.hier-icon{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0;width:12px;height:12px}.hier-name{color:var(--color-text-muted);cursor:pointer}.hier-name:hover{color:var(--color-accent-light);text-decoration:underline}.hier-name.hier-entry{color:var(--color-accent-light);font-weight:600}.hier-cycle{color:var(--color-error);font-size:var(--font-size-xs);cursor:default;margin-left:4px}.cb-project-bar{background:var(--color-surface-deep);border-bottom:1px solid var(--color-border);height:24px;font-size:var(--font-size-xs);flex-shrink:0;align-items:center;padding:4px 12px;display:flex}.cb-project-name{color:var(--color-text-muted);text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:6px;min-width:0;display:flex;overflow:hidden}.cb-project-name:hover .cb-path{color:var(--color-accent)}.cb-project-icon{flex-shrink:0;align-items:center;display:inline-flex}.cb-project-icon svg{fill:none;width:13px;height:13px;stroke:var(--color-accent);stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round}.cb-path{color:var(--color-accent-light);text-overflow:ellipsis;font-weight:500;overflow:hidden}.cb-set-project{color:var(--color-info);cursor:pointer;font-size:var(--font-size-xs)}.cb-set-project:hover{color:var(--color-accent);text-decoration:underline}.cb-actions{align-items:center;gap:2px;display:flex}.cb-actions .phbtn{width:20px;height:20px}.cb-actions .phbtn svg{width:11px;height:11px}.cb-tree-container{flex:1;padding:2px 0;overflow-y:auto}.tree-row{height:26px;font-size:var(--font-size-md);color:var(--color-text);cursor:pointer;transition:background var(--duration-fast);align-items:center;gap:0;min-width:0;padding-left:4px;padding-right:8px;display:flex}.tree-row:hover{background:var(--color-surface-raised)}.tree-row.selected{background:var(--color-accent-bg)}.tree-guide{flex-shrink:0;width:16px;height:26px;position:relative}.tree-guide.active:before{content:"";background:var(--color-border-light);width:1px;position:absolute;top:0;bottom:0;left:7px}.tree-branch{flex-shrink:0;width:16px;height:26px;position:relative}.tree-branch:before{content:"";background:var(--color-border-light);width:1px;position:absolute;top:0;bottom:0;left:7px}.tree-branch:after{content:"";background:var(--color-border-light);width:8px;height:1px;position:absolute;top:13px;left:7px}.tree-branch.last:before{bottom:50%}.tree-leaf-spacer{flex-shrink:0;width:14px}.tree-chevron{width:14px;height:14px;color:var(--color-text-dim);transition:transform var(--duration-fast) var(--ease-out);flex-shrink:0;justify-content:center;align-items:center;display:flex}.tree-chevron svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;width:10px;height:10px}.tree-chevron.open{transform:rotate(90deg)}.tree-icon{flex-shrink:0;justify-content:center;align-items:center;width:16px;height:16px;margin-right:6px;display:inline-flex}.tree-icon svg{fill:none;stroke:currentColor;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;width:14px;height:14px}.tree-label{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.tree-meta{font-family:var(--font-family-mono);font-size:var(--font-size-xs);color:var(--color-text-dim);text-align:right;flex-shrink:0;min-width:40px;margin-left:6px}.tree-del{color:var(--color-text-dim);cursor:pointer;opacity:0;transition:opacity var(--duration-fast), color var(--duration-fast);background:0 0;border:none;flex-shrink:0;padding:0 2px;font-size:14px;line-height:1}.tree-row:hover .tree-del{opacity:.6}.tree-del:hover{color:var(--color-error);opacity:1!important}.cb-empty{text-align:center;font-size:var(--font-size-sm);color:var(--color-text-dim);padding:16px 12px;font-style:italic}.splash-overlay{background:var(--color-bg-deep,#07070f);z-index:var(--z-overlay);transition:opacity var(--duration-medium);will-change:opacity;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.splash-overlay.fading{opacity:0}.splash-card{background:var(--color-bg);border:1px solid var(--color-border-light);border-radius:var(--radius-2xl);flex-direction:column;align-items:stretch;width:320px;padding:36px 32px 28px;display:flex;box-shadow:0 8px 32px #00000080}.splash-logo{justify-content:center;align-items:center;margin-bottom:4px;display:flex}.splash-title-wrap{text-align:center;margin-top:12px;margin-bottom:2px}.splash-title{letter-spacing:.02em;color:var(--color-accent);font-size:26px;font-weight:700}.splash-subtitle{font-size:var(--font-size-sm);color:var(--color-text-dim);letter-spacing:.1em;text-align:center;margin-bottom:28px}.splash-btn{border-radius:var(--radius-lg);font-size:var(--font-size-base);cursor:pointer;border:1px solid var(--color-border);background:var(--color-surface-raised);color:var(--color-text);transition:all var(--duration-normal);text-align:left;outline:none;align-items:center;gap:10px;width:100%;margin-bottom:10px;padding:11px 16px;display:flex}.splash-btn:hover,.splash-btn:focus-visible{border-color:var(--color-accent);color:var(--color-accent-light);background:var(--color-surface-raised);outline:none}.splash-btn:focus-visible{box-shadow:0 0 0 2px var(--color-accent)}.splash-btn.primary{background:var(--color-accent-dark);border-color:var(--color-accent);color:var(--color-accent-light);font-weight:600}.splash-btn.primary:hover{background:var(--color-accent-hover);color:var(--color-text-bright)}.splash-btn svg{flex-shrink:0}.splash-sep{border-top:1px solid var(--color-border);margin:6px 0 10px}.splash-recents-label{font-size:var(--font-size-xs);color:var(--color-text-dim);text-transform:uppercase;letter-spacing:.1em;margin-bottom:8px;padding:0 2px}.splash-recent-btn{border-radius:var(--radius-lg);font-size:var(--font-size-md);cursor:pointer;border:1px solid var(--color-border);color:var(--color-text-dim);transition:all var(--duration-normal);text-align:left;background:0 0;align-items:center;gap:9px;width:100%;margin-bottom:6px;padding:8px 12px;display:flex;overflow:hidden}.splash-recent-btn:hover,.splash-recent-btn:focus-visible{border-color:var(--color-accent);color:var(--color-accent-light);background:var(--color-surface-raised);outline:none}.splash-recent-btn:focus-visible{box-shadow:0 0 0 2px var(--color-accent)}.splash-recent-btn span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.splash-recents-empty{font-size:var(--font-size-sm);color:var(--color-border);text-align:center;padding:10px 0}.splash-version{font-size:var(--font-size-2xs);color:var(--color-border-light);text-align:center;letter-spacing:.05em;margin-top:12px}.attr-table{background:var(--color-bg-panel,#1c1c24);height:100%;min-height:0;color:var(--color-text,#dcdce2);flex-direction:column;font-family:inherit;font-size:12px;display:flex}.attr-toolbar{border-bottom:1px solid var(--color-border,#2a2a33);background:var(--color-bg-header,#22222b);flex:none;align-items:center;gap:8px;padding:6px 8px;display:flex}.attr-toolbar-label{color:var(--color-text-muted,#888);text-transform:uppercase;letter-spacing:.05em;-webkit-user-select:none;user-select:none;font-size:11px}.attr-toolbar select,.attr-toolbar input.attr-filter{background:var(--color-bg-input,#14141a);color:var(--color-text,#dcdce2);border:1px solid var(--color-border,#2a2a33);border-radius:3px;min-width:0;padding:3px 6px;font-family:inherit;font-size:12px}.attr-toolbar select:focus,.attr-toolbar input.attr-filter:focus{border-color:var(--color-accent,#7c6ff7);outline:none}.attr-filter{flex:auto;min-width:80px}.attr-mini-btn{border:1px solid var(--color-border,#2a2a33);color:var(--color-text-muted,#888);cursor:pointer;background:0 0;border-radius:3px;justify-content:center;align-items:center;width:20px;height:20px;padding:0;font-size:11px;display:inline-flex}.attr-mini-btn:hover{color:var(--color-text,#dcdce2);border-color:var(--color-accent,#7c6ff7)}.attr-edit-toggle{background:var(--color-bg-input,#14141a);border:1px solid var(--color-border,#2a2a33);color:var(--color-text-muted,#888);text-transform:uppercase;letter-spacing:.04em;cursor:pointer;border-radius:3px;align-items:center;gap:5px;padding:3px 8px;font-family:inherit;font-size:11px;display:inline-flex}.attr-edit-toggle:hover{color:var(--color-text,#dcdce2);border-color:var(--color-accent,#7c6ff7)}.attr-edit-toggle svg{flex:none}.attr-edit-toggle.active{background:var(--color-accent,#7c6ff7);color:var(--color-on-accent,#fff);border-color:var(--color-accent,#7c6ff7)}.attr-table.editing .attr-toolbar{box-shadow:inset 0 2px 0 0 var(--color-accent,#7c6ff7)}.attr-table.editing .attr-cell:not(.ro){cursor:text;text-decoration-line:underline;text-decoration-style:dotted;-webkit-text-decoration-color:color-mix(in srgb, var(--color-accent,#7c6ff7) 60%, transparent);text-decoration-color:color-mix(in srgb, var(--color-accent,#7c6ff7) 60%, transparent);text-underline-offset:3px}.attr-mode-toggle{border:1px solid var(--color-border,#2a2a33);background:var(--color-bg-input,#14141a);border-radius:3px;display:inline-flex;overflow:hidden}.attr-mode-toggle button{color:var(--color-text-muted,#888);cursor:pointer;text-transform:uppercase;letter-spacing:.04em;background:0 0;border:none;padding:3px 8px;font-family:inherit;font-size:11px;line-height:1.4}.attr-mode-toggle button+button{border-left:1px solid var(--color-border,#2a2a33)}.attr-mode-toggle button:hover{color:var(--color-text,#dcdce2)}.attr-mode-toggle button.active{background:var(--color-accent,#7c6ff7);color:var(--color-on-accent,#fff)}.attr-counts{color:var(--color-text-muted,#888);white-space:nowrap;margin-left:auto;font-size:11px}.attr-grid-wrap{flex-direction:column;flex:auto;min-height:0;display:flex;overflow:hidden}.attr-grid-body{flex:auto;min-height:0;overflow:auto}.attr-grid{border-collapse:collapse;table-layout:auto;width:max-content;min-width:100%;font-size:12px}.attr-grid thead{z-index:1;position:sticky;top:0}.attr-grid th{background:var(--color-bg-header,#22222b);color:var(--color-text-muted,#999);text-transform:uppercase;letter-spacing:.05em;text-align:left;border-right:1px solid var(--color-border,#2a2a33);border-bottom:1px solid var(--color-border,#2a2a33);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;padding:5px 8px;font-size:10px;font-weight:600;position:sticky;top:0}.attr-grid th:hover{color:var(--color-text,#dcdce2)}.attr-grid th.dyn,.attr-grid th.sorted{color:var(--color-accent-bright,#a99eff)}.attr-grid th .sort-arrow{margin-left:4px;font-size:9px}.attr-grid tbody tr{background:var(--color-bg-panel,#1c1c24);height:24px}.attr-grid tbody tr:nth-child(2n){background:var(--color-bg-row-alt,#20202a)}.attr-grid tbody tr:hover{background:var(--color-bg-hover,#2a2a38)}.attr-grid tbody tr.empty{background:0 0}.attr-grid tbody tr.empty td{color:var(--color-text-muted,#666);text-align:center;border:none;padding:24px;font-style:italic}.attr-grid td{border-right:1px solid var(--color-border-soft,#26262f);border-bottom:1px solid var(--color-border-soft,#26262f);white-space:nowrap;text-overflow:ellipsis;vertical-align:middle;max-width:320px;padding:0 8px;line-height:24px;overflow:hidden}.attr-grid td.dyn .attr-cell:not(.ro){color:var(--color-text,#dcdce2)}.attr-cell{text-overflow:ellipsis;white-space:nowrap;cursor:text;-webkit-user-select:text;user-select:text;width:100%;display:inline-block;overflow:hidden}.attr-cell.ro{color:var(--color-text-muted,#888);cursor:default}.attr-cell.num{text-align:right;font-variant-numeric:tabular-nums;font-family:JetBrains Mono,Fira Code,ui-monospace,monospace}.attr-cell-input{background:var(--color-bg-input,#14141a);width:100%;height:22px;color:var(--color-text,#dcdce2);border:1px solid var(--color-accent,#7c6ff7);box-sizing:border-box;border-radius:2px;outline:none;padding:0 6px;font-family:inherit;font-size:12px}.attr-cell-input.num{text-align:right;font-variant-numeric:tabular-nums;font-family:JetBrains Mono,Fira Code,ui-monospace,monospace}.attr-float{background:var(--color-bg-panel,#1c1c24);color:var(--color-text,#dcdce2);border:1px solid var(--color-border,#2a2a33);z-index:var(--z-floating-above-globe,9500);border-radius:4px;flex-direction:column;min-width:400px;min-height:200px;font-size:12px;display:flex;position:fixed;overflow:hidden;box-shadow:0 8px 32px #00000080}.attr-float-titlebar{background:var(--color-bg-header,#22222b);border-bottom:1px solid var(--color-border,#2a2a33);cursor:move;-webkit-user-select:none;user-select:none;flex:none;align-items:center;height:28px;padding:0 8px;display:flex}.attr-float-title{color:var(--color-accent-bright,#a99eff);text-transform:uppercase;letter-spacing:.05em;flex:auto;font-size:11px;font-weight:600}.attr-float-close{color:var(--color-text-muted,#888);cursor:pointer;background:0 0;border:none;border-radius:3px;justify-content:center;align-items:center;width:22px;height:22px;display:inline-flex}.attr-float-close:hover{background:var(--color-bg-hover,#2a2a38);color:var(--color-text,#dcdce2)}.attr-float-body{flex:auto;min-height:0;display:flex}.attr-float-resize{cursor:nwse-resize;background:linear-gradient(135deg, transparent 50%, var(--color-text-muted,#666) 50%, var(--color-text-muted,#666) 55%, transparent 55%, transparent 65%, var(--color-text-muted,#666) 65%, var(--color-text-muted,#666) 70%, transparent 70%);width:14px;height:14px;position:absolute;bottom:0;right:0}.app-root{flex-direction:column;width:100%;height:100%;display:flex;overflow:hidden}.app-body{flex:1 1 0;min-height:0;display:flex;overflow:hidden}.panel-group-wrap{flex:1 1 0;min-width:0;min-height:0;overflow:hidden}.panel-col{background:var(--color-surface)}.resize-handle{background:var(--color-border);transition:background var(--duration-fast)}.resize-handle:hover,.resize-handle[data-separator=hover],.resize-handle[data-separator=drag]{background:var(--color-accent)}.resize-handle--v{cursor:col-resize;width:5px}.resize-handle--h{cursor:row-resize;height:4px}.panel-animating>[data-panel]{transition:flex-grow var(--duration-medium) cubic-bezier(.4, 0, .2, 1)}.panel-wrapper{background:var(--color-surface);flex-direction:column;height:100%;display:flex;overflow:hidden}.panel-titlebar{padding:0 var(--space-3);height:var(--panel-titlebar-height);background:var(--color-surface-header);border-bottom:1px solid var(--color-border);-webkit-user-select:none;user-select:none;align-items:center;gap:var(--panel-titlebar-gap);cursor:default;transition:background var(--duration-fast);flex-shrink:0;display:flex}.panel-titlebar:hover{background:var(--color-surface)}.panel-titlebar .ptitle{font-size:var(--font-size-sm);color:var(--color-accent-bright);text-transform:uppercase;letter-spacing:.05em;flex:1;font-weight:600}.panel-collapse-region{transition:grid-template-rows var(--duration-medium) cubic-bezier(.4, 0, .2, 1);flex:1;grid-template-rows:1fr;min-height:0;display:grid;overflow:hidden}.panel-collapse-region.collapsed{grid-template-rows:0fr}.panel-collapse-region>.panel-body{min-height:0;transition:opacity var(--duration-normal) ease;overflow:hidden}.panel-collapse-region.collapsed>.panel-body{opacity:0}.panel-collapse-region:not(.collapsed)>.panel-body{overflow:hidden auto}.panel-body{-webkit-user-select:text;user-select:text;flex:1;overflow:hidden auto}.panel-collapse-chevron{fill:none;width:10px;height:10px;stroke:var(--color-text-dim);stroke-width:2.5px;stroke-linecap:round;stroke-linejoin:round;transition:transform var(--duration-medium) cubic-bezier(.4, 0, .2, 1), stroke var(--duration-fast);flex-shrink:0}.panel-titlebar:hover .panel-collapse-chevron,.section-header:hover .panel-collapse-chevron{stroke:var(--color-accent-bright)}.panel-collapse-chevron.collapsed{transform:rotate(-90deg)}.phbtn{border-radius:var(--radius-md);color:var(--color-text-dim);font-size:var(--font-size-base);cursor:pointer;width:24px;height:24px;transition:all var(--duration-fast);background:0 0;border:1px solid #0000;flex-shrink:0;justify-content:center;align-items:center;padding:0;line-height:1;display:flex}.phbtn svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;width:12px;height:12px}.phbtn:hover{color:var(--color-text);background:var(--color-surface-raised)}.phbtn[title="Float / Undock"]{color:var(--color-info)}.phbtn[title="Float / Undock"]:hover{color:var(--color-accent);background:var(--color-info-bg)}.phbtn[title=Dock]{color:var(--color-info)}.phbtn[title=Dock]:hover{color:var(--color-accent);background:var(--color-info-bg)}.panel-floating{z-index:var(--z-overlay);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);resize:both;min-width:200px;min-height:100px;overflow:hidden;border:1px solid var(--color-border-accent)!important;position:fixed!important}.panel-floating .panel-titlebar{cursor:move;background:var(--color-surface-float)}.panel-undocked-placeholder{opacity:.6}.panel-undocked-placeholder .panel-titlebar{border-bottom:1px dashed var(--color-border-light)}.panel-undocked-label{font-size:var(--font-size-xs);color:var(--color-text-dim);text-transform:uppercase;letter-spacing:.1em;text-align:center;flex:1;font-style:italic}.panel-window-shell{background:var(--color-surface);height:100vh;color:var(--color-text);flex-direction:column;display:flex;overflow:hidden}.panel-window-titlebar{padding:0 var(--space-3);height:var(--panel-titlebar-height);background:var(--color-surface-float);border-bottom:1px solid var(--color-border-accent);-webkit-user-select:none;user-select:none;align-items:center;gap:var(--panel-titlebar-gap);cursor:move;flex-shrink:0;display:flex}.section-header{padding:0 var(--space-2);background:var(--color-surface-header);border-bottom:1px solid var(--color-border-section);-webkit-user-select:none;user-select:none;cursor:default;height:22px;transition:background var(--duration-fast);align-items:center;gap:4px;display:flex}.section-header:hover{background:var(--color-surface)}.section-title{font-size:var(--font-size-xs);color:var(--color-text-dim);text-transform:uppercase;letter-spacing:.05em;flex:1;font-weight:600}.section-collapse-region{transition:grid-template-rows var(--duration-medium) cubic-bezier(.4, 0, .2, 1);grid-template-rows:1fr;display:grid;overflow:hidden}.section-collapse-region.collapsed{grid-template-rows:0fr}.section-collapse-region>div{min-height:0;transition:opacity var(--duration-normal) ease;overflow:hidden}.section-collapse-region.collapsed>div{opacity:0}.insp-info{font-size:var(--font-size-sm);color:var(--color-text)}.insp-name{font-weight:var(--font-weight-medium)}.insp-size{font-size:var(--font-size-xs);color:var(--color-warning-text);margin-top:2px}.insp-empty{font-size:var(--font-size-sm);color:var(--color-text-dim);font-style:italic}.insp-row{font-size:var(--font-size-sm);justify-content:space-between;align-items:baseline;padding:2px 0;display:flex}.insp-label{color:var(--color-text-dim);flex-shrink:0;margin-right:8px}.insp-value{color:var(--color-text);text-align:right;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.insp-gis-attrs{border-collapse:collapse;width:100%;font-size:var(--font-size-xs);margin-top:6px}.insp-gis-attrs th{text-align:left;color:var(--color-text-dim);font-weight:var(--font-weight-medium);border-bottom:1px solid var(--color-border);padding:2px 4px}.insp-gis-attrs td{border-bottom:1px solid var(--color-border-section);padding:2px 4px}.insp-gis-key{color:var(--color-text-dim);white-space:nowrap;text-overflow:ellipsis;max-width:100px;overflow:hidden}.insp-gis-val{color:var(--color-text);word-break:break-all;text-overflow:ellipsis;max-width:150px;overflow:hidden}.insp-pos{font-size:var(--font-size-xs);color:var(--color-text-dim);font-family:var(--font-family-mono);margin-top:1px}.insp-astro-info{font-size:var(--font-size-xs);font-family:var(--font-family-mono);color:var(--color-text-dim);border-bottom:1px solid var(--color-border);margin-bottom:4px;padding:4px 10px;line-height:1.7}.insp-subsection{font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.08em;color:var(--color-accent);border-bottom:1px solid var(--color-border);cursor:default;-webkit-user-select:none;user-select:none;transition:background var(--duration-fast);align-items:center;gap:4px;margin-bottom:2px;padding:6px 10px 2px;font-weight:600;display:flex}.insp-subsection:hover{background:#7c6ff70f}.insp-subsection .sub-chevron{fill:none;width:8px;height:8px;stroke:var(--color-accent);stroke-width:2.5px;stroke-linecap:round;stroke-linejoin:round;transition:transform var(--duration-medium) cubic-bezier(.4, 0, .2, 1);flex-shrink:0}.insp-subsection .sub-chevron.collapsed{transform:rotate(-90deg)}.insp-date-row{align-items:center;gap:4px;padding:3px 10px;display:flex}.insp-date-row input[type=number]{width:52px;font-size:var(--font-size-sm);text-align:center;padding:2px 4px}.insp-date-row select{font-size:var(--font-size-sm);flex:1;padding:2px 4px}.insp-slider-row{align-items:center;gap:6px;padding:3px 10px;display:flex}.insp-slider-label{font-size:var(--font-size-sm);color:var(--color-text-muted);flex:0 0 85px}.insp-slider-row input[type=range]{min-width:60px;height:4px;accent-color:var(--color-accent);cursor:pointer;flex:1}.insp-slider-value{font-size:var(--font-size-xs);font-family:var(--font-family-mono);color:var(--color-text-dim);text-align:right;flex:0 0 42px}.insp-select-row{align-items:center;gap:6px;padding:3px 10px;display:flex}.insp-select-row>span{font-size:var(--font-size-sm);color:var(--color-text-muted);flex:0 0 85px}.insp-select-row select{font-size:var(--font-size-sm);flex:1;padding:2px 6px}.insp-location-info{font-size:var(--font-size-xs);font-family:var(--font-family-mono);color:var(--color-text-dim);border-top:1px solid var(--color-border);margin-top:4px;padding:6px 10px 2px}input[type=number]::-webkit-inner-spin-button{-webkit-appearance:inner-spin-button;opacity:.55;cursor:pointer;filter:sepia()saturate(4)hue-rotate(220deg);width:8px}input[type=number]::-webkit-outer-spin-button{-webkit-appearance:inner-spin-button;opacity:.55;cursor:pointer;filter:sepia()saturate(4)hue-rotate(220deg);width:8px}input[type=number]:hover::-webkit-inner-spin-button{opacity:1}input[type=number]:hover::-webkit-outer-spin-button{opacity:1}input[type=number],input[type=text]{background:var(--color-surface-input);color:var(--color-text);border:1px solid var(--color-border-light);border-radius:var(--radius-sm);font-family:var(--font-family-mono);font-size:var(--font-size-sm);transition:border-color var(--duration-fast);outline:none}input[type=number]:focus,input[type=text]:focus{border-color:var(--color-accent)}select{background:var(--color-surface-input);color:var(--color-text);border:1px solid var(--color-border-light);border-radius:var(--radius-sm);font-family:var(--font-family-base);font-size:var(--font-size-sm);cursor:pointer;outline:none}select:focus{border-color:var(--color-accent)}.rule-picker{z-index:var(--z-dropdown);background:var(--color-surface-raised);border:1px solid var(--color-border-light);border-radius:var(--radius-sm);min-width:200px;max-height:280px;font-size:var(--font-size-sm);padding:4px 0;position:absolute;top:100%;right:0;overflow-y:auto;box-shadow:0 4px 12px #0006}.rule-picker-item{cursor:pointer;color:var(--color-text-muted);white-space:nowrap;align-items:center;gap:6px;padding:4px 10px;display:flex}.rule-picker-item:hover{background:var(--color-accent-bg-dim);color:var(--color-text)}.rule-picker-sep{background:var(--color-border-light);height:1px;margin:4px 8px}.rule-picker-empty{font-size:var(--font-size-sm);color:var(--color-text-dim);padding:8px 10px;font-style:italic}:root{--color-bg:#0d0d12;--color-surface:#15151e;--color-surface-header:#101018;--color-surface-raised:#1c1c28;--color-surface-input:#1e1e28;--color-surface-deep:#0f0f16;--color-surface-overlay:#0a0a14;--color-surface-float:#13132a;--color-surface-hover:#1e1e2a;--color-border:#222230;--color-border-light:#2e2e3c;--color-border-accent:#3d37a0;--color-border-section:#1a1a24;--color-accent:#7c6ff7;--color-accent-hover:#8e62ff;--color-accent-light:#c0b8ff;--color-accent-bright:#9b8dff;--color-accent-dark:#2e2860;--color-accent-dim:#352f5a;--color-accent-bg:#7c6ff738;--color-accent-bg-dim:#3d37a026;--color-on-accent:#fff;--overlay-dim:#00000040;--color-text:#ddd;--color-text-muted:#999;--color-text-dim:#8a8a95;--color-text-inverse:#14141a;--color-text-bright:#ccc;--color-text-link:#aaa;--color-error:#e06060;--color-error-hover:#f87171;--color-error-bg:#ef444426;--color-warning:#f59e0b;--color-warning-text:#b8a040;--color-warning-bg:#3d2f1a;--color-success:#5a9a5a;--color-success-bright:#4ade80;--color-success-hover:#86efac;--color-success-bg:#1a3d2a;--color-info:#7c9abf;--color-info-bg:#1a2d3d;--color-cursor-snap:#f0c040;--color-icon-folder:#fbbf24;--color-icon-geometry:#38bdf8;--color-icon-rule:#4ade80;--color-icon-scene:#a78bfa;--color-icon-light:#fbbf24;--font-family-base:"Segoe UI", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", sans-serif;--font-family-mono:"Cascadia Code", "Fira Code", "JetBrains Mono", "Consolas", monospace;--font-size-3xs:8px;--font-size-2xs:9px;--font-size-xs:10px;--font-size-sm:11px;--font-size-base:13px;--font-size-md:12px;--font-size-lg:15px;--font-size-xl:18px;--font-size-2xl:24px;--font-size-3xl:32px;--font-weight-normal:400;--font-weight-medium:500;--font-weight-bold:700;--line-height-tight:1.2;--line-height-normal:1.5;--line-height-loose:1.7;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--space-8:64px;--border-width-thin:1px;--border-width-medium:2px;--radius-sm:3px;--radius-md:4px;--radius-lg:6px;--radius-xl:10px;--radius-2xl:16px;--radius-full:9999px;--shadow-sm:0 1px 3px #0000004d;--shadow-md:0 4px 12px #0006;--shadow-lg:0 8px 40px #000c;--shadow-xl:0 8px 50px #000000e6;--shadow-inset:inset 0 1px 2px #0003;--shadow-focus:0 0 0 2px var(--color-accent);--ease-out:cubic-bezier(.25, .8, .25, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--ease-linear:linear;--duration-faster:.1s;--duration-fast:.12s;--duration-normal:.15s;--duration-medium:.3s;--duration-slow:.35s;--z-below:-1;--z-base:0;--z-viewport-layer:4;--z-viewport-controls:5;--z-above:10;--z-dropdown:100;--z-modal:200;--z-tooltip:300;--z-toast:400;--z-overlay:500;--z-floating-above-globe:9500;--panel-titlebar-height:32px;--panel-titlebar-gap:4px;--panel-min-width:180px;--panel-max-width:800px;--sidebar-width:36px;--menubar-height:28px;--toolbar-height:28px;--splutter-width:5px;--grid-color:#ffffff0d;--grid-axis-color:#8e70ff40;--color-input-bg:#111117;--color-input-border:#2a2a3e;--color-scrollbar:#7c6ff766;--color-axis-x:#e24b4a;--color-axis-y:#3da653;--color-axis-z:#3b8bd4;--color-splash-bg:#07070f;--color-splash-card:#0e0e1a;--color-splash-card-border:#2a2a40}@media (prefers-contrast:high){:root{--color-text:#fff;--color-border:#555;--color-accent:#9d8aff}}@media (prefers-reduced-motion:reduce){:root{--duration-fast:0s;--duration-normal:0s;--duration-slow:0s}}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{background:var(--color-bg);width:100%;height:100%;color:var(--color-text);font-family:var(--font-family-base);font-size:var(--font-size-base);-webkit-font-smoothing:antialiased;line-height:1.5;overflow:hidden}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--color-scrollbar);border-radius:3px;transition:background .15s}::-webkit-scrollbar-thumb:hover{background:#7c6ff7b3}::-webkit-scrollbar-thumb:active{background:#7c6ff7e6}::-webkit-scrollbar-corner{background:0 0}::-webkit-scrollbar-button{display:none}*{scrollbar-width:thin;scrollbar-color:var(--color-scrollbar) transparent}::selection{background:var(--color-accent-bg);color:var(--color-text)}button,[role=button],select,option,.phbtn,.menubar,.toolbar,.sidebar{-webkit-user-select:none;user-select:none}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.btn{cursor:pointer;font-family:inherit;font-weight:var(--font-weight-medium);transition:background var(--duration-normal), border-color var(--duration-normal), color var(--duration-normal), opacity var(--duration-normal);border:1px solid #0000;outline:none}.btn:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.btn:disabled{opacity:.4;cursor:not-allowed}.btn-dialog{border-radius:var(--radius-lg);font-size:var(--font-size-md);padding:7px 18px}.btn-action{border-radius:var(--radius-md);font-size:var(--font-size-md);padding:6px 12px}@keyframes spin{to{transform:rotate(360deg)}}
