:root{--color-bg-app: #18181b;--color-bg-panel: #18181b;--color-bg-header: #27272a;--color-bg-input: #27272a;--color-bg-elevated: #3f3f46;--color-bg-hover: #3f3f46;--color-bg-hover-subtle: rgb(39 39 42 / .5);--color-bg-selected: rgb(37 99 235 / .3);--color-bg-selected-hover: rgb(37 99 235 / .4);--color-bg-overlay: rgb(0 0 0 / .6);--color-gray-750: #2d3748;--color-gray-850: #1a202c;--color-gray-950: #0d1117;--color-border-subtle: #27272a;--color-border-default: #3f3f46;--color-border-strong: #52525b;--color-border-focus: #3b82f6;--color-text-primary: #f4f4f5;--color-text-secondary: #d4d4d8;--color-text-tertiary: #a1a1aa;--color-text-muted: #71717a;--color-text-disabled: #52525b;--color-text-accent: #60a5fa;--color-text-selected: #bfdbfe;--color-accent: #2563eb;--color-accent-hover: #1d4ed8;--color-accent-ring: #3b82f6;--color-accent-soft: rgb(37 99 235 / .2);--color-accent-soft-hover: rgb(37 99 235 / .3);--color-danger: #dc2626;--color-danger-hover: #b91c1c;--color-danger-fg: #f87171;--color-danger-soft: rgb(220 38 38 / .3);--color-warning: #f59e0b;--color-warning-muted: rgb(245 158 11 / .6);--color-warning-fg: #facc15;--color-warning-soft: rgb(234 179 8 / .2);--color-success: #16a34a;--color-success-fg: #4ade80;--color-success-soft: rgb(22 163 74 / .3);--color-info-fg: #60a5fa;--color-info-soft: rgb(59 130 246 / .2);--color-window-close: #ef4444;--color-window-close-hover: #f87171;--color-window-close-icon: #7f1d1d;--color-window-min: #eab308;--color-window-min-hover: #facc15;--color-window-min-icon: #713f12;--color-window-max: #22c55e;--color-window-max-hover: #4ade80;--color-window-max-icon: #14532d;--color-window-disabled: #52525b;--color-log-error-bg: rgb(127 29 29 / .3);--color-log-error-bg-hi: rgb(127 29 29 / .5);--color-log-error-fg: #f87171;--color-log-warn-bg: rgb(133 77 14 / .3);--color-log-warn-fg: #facc15;--color-log-info-bg: rgb(30 58 138 / .3);--color-log-info-fg: #60a5fa;--color-log-debug-bg: rgb(88 28 135 / .3);--color-log-debug-fg: #c084fc;--color-log-default-bg: rgb(82 82 91 / .5);--color-log-default-fg: #d4d4d8;--font-sans: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", Menlo, Monaco, "Courier New", monospace;--text-2xs: 10px;--text-xs: 12px;--text-sm: 14px;--text-base: 16px;--text-lg: 18px;--text-xl: 20px;--text-2xl: 24px;--lh-tight: 1.25;--lh-normal: 1.5;--lh-relaxed: 1.65;--fw-normal: 400;--fw-medium: 500;--fw-semibold: 600;--fw-bold: 700;--space-0: 0px;--space-0-5: 2px;--space-1: 4px;--space-1-5: 6px;--space-2: 8px;--space-2-5: 10px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-12: 48px;--size-menubar: 32px;--size-panel-header: 32px;--size-panel-toolbar: 36px;--size-status-bar: 24px;--size-taskbar: 40px;--size-splitter: 4px;--size-window-control: 12px;--radius-none: 0px;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px;--radius-xl: 12px;--radius-full: 9999px;--border-width-thin: 1px;--border-width-medium: 2px;--shadow-none: none;--shadow-sm: 0 1px 2px rgb(0 0 0 / .25);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / .3), 0 2px 4px -2px rgb(0 0 0 / .3);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .4), 0 4px 6px -4px rgb(0 0 0 / .3);--shadow-xl: 0 20px 25px -5px rgb(0 0 0 / .5), 0 8px 10px -6px rgb(0 0 0 / .4);--shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / .6);--ring-width: 2px;--ring-offset: 2px;--ring-offset-color: var(--color-bg-app);--z-base: 0;--z-dock: 1;--z-splitter: 5;--z-resize-handle:10;--z-panel: 50;--z-modal: 100;--z-menu: 1000;--dur-instant: 0ms;--dur-fast: .1s;--dur-base: .2s;--dur-slow: .3s;--dur-slower:.4s;--ease-linear: linear;--ease-in: cubic-bezier(.4, 0, 1, 1);--ease-out: cubic-bezier(0, 0, .2, 1);--ease-in-out: cubic-bezier(.4, 0, .2, 1);--ease-bounce: cubic-bezier(.34, 1.56, .64, 1);--opacity-disabled: .5;--opacity-hidden: .5;--opacity-inherited-hidden: .3;--opacity-dragging: .5;--opacity-peek: .9;--dock-left-min: 150px;--dock-left-max: 500px;--dock-right-min: 200px;--dock-right-max: 500px;--dock-bottom-min: 100px;--dock-bottom-max: 50vh;--floating-min-visible: 70px;--checker-light: #3f3f46;--checker-dark: #27272a;--checker-size: 16px}html,body{overflow:hidden;height:100%}body{background:var(--color-bg-app);color:var(--color-text-primary);font-family:var(--font-sans);font-size:var(--text-sm);line-height:var(--lh-normal);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}*,*:before,*:after{box-sizing:border-box;border-color:var(--color-border-default)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--color-bg-header)}::-webkit-scrollbar-thumb{background:#52525b;border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:#71717a}input[type=text]:focus,input[type=email]:focus,input[type=url]:focus,input[type=password]:focus,input[type=number]:focus,input[type=search]:focus,input[type=tel]:focus,textarea:focus,select:focus{outline:none;box-shadow:0 0 0 var(--ring-width) var(--color-border-focus)}::selection{background:var(--color-accent-soft);color:var(--color-text-primary)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);font-family:var(--font-sans);font-size:var(--text-sm);font-weight:var(--fw-medium);line-height:1;border:none;border-radius:var(--radius-lg);cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out)}.btn:focus{outline:none}.btn:focus-visible{outline:none;box-shadow:0 0 0 var(--ring-offset) var(--color-bg-app),0 0 0 calc(var(--ring-offset) + var(--ring-width)) var(--ring-color, var(--color-accent-ring))}.btn:disabled,.btn[aria-disabled=true]{opacity:var(--opacity-disabled);cursor:not-allowed;pointer-events:none}.btn--sm{padding:var(--space-1-5) var(--space-3);font-size:var(--text-sm)}.btn--md{padding:var(--space-2) var(--space-4);font-size:var(--text-sm)}.btn--lg{padding:var(--space-3) var(--space-6);font-size:var(--text-base)}.btn--primary{background:var(--color-accent);color:#fff;--ring-color: var(--color-accent-ring)}.btn--primary:hover{background:var(--color-accent-hover)}.btn--primary:active{background:#1e40af}.btn--secondary{background:var(--color-bg-elevated);color:#fff;--ring-color: #71717a}.btn--secondary:hover{background:#52525b}.btn--secondary:active{background:#71717a}.btn--danger{background:var(--color-danger);color:#fff;--ring-color: #ef4444}.btn--danger:hover{background:var(--color-danger-hover)}.btn--danger:active{background:#991b1b}.btn--ghost{background:transparent;color:var(--color-text-tertiary);--ring-color: #71717a}.btn--ghost:hover{background:var(--color-bg-header);color:#fff}.btn--ghost:active{background:var(--color-bg-elevated)}.btn.is-loading{cursor:progress;pointer-events:none}.btn.is-loading>.icon{animation:spin 1s linear infinite}.icon-btn{display:inline-flex;align-items:center;justify-content:center;padding:var(--space-1-5);background:transparent;color:var(--color-text-tertiary);border:none;border-radius:var(--radius-lg);cursor:pointer;transition:background-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}.icon-btn:hover{background:var(--color-bg-elevated);color:#fff}.icon-btn:active{background:#52525b}.icon-btn:focus{outline:none}.icon-btn:focus-visible{box-shadow:0 0 0 var(--ring-offset) var(--color-bg-app),0 0 0 calc(var(--ring-offset) + var(--ring-width)) #71717a}.icon-btn:disabled{opacity:var(--opacity-disabled);cursor:not-allowed;pointer-events:none}.icon-btn--sm{padding:var(--space-1)}.icon-btn--md{padding:var(--space-1-5)}.icon-btn--lg{padding:var(--space-2)}.icon-btn--danger:hover{color:var(--color-danger-fg);background:var(--color-danger-soft)}.icon-btn--success:hover{color:var(--color-success-fg);background:var(--color-success-soft)}.icon-btn.is-active{color:var(--color-text-accent);background:var(--color-accent-soft)}.icon-btn.is-active:hover{background:var(--color-accent-soft-hover)}.icon-btn.is-warning{color:var(--color-warning)}.icon-btn.is-warning:hover{color:var(--color-warning-fg)}.input{display:block;width:100%;padding:var(--space-2) var(--space-3);font-family:var(--font-sans);font-size:var(--text-sm);color:var(--color-text-primary);background:var(--color-bg-input);border:var(--border-width-thin) solid var(--color-border-default);border-radius:var(--radius-lg);transition:border-color var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out)}.input::placeholder{color:var(--color-text-muted)}.input:focus{outline:none;border-color:var(--color-border-focus);box-shadow:0 0 0 1px var(--color-border-focus)}.input:disabled{opacity:var(--opacity-disabled);cursor:not-allowed}.input--error,.input.is-error{border-color:#ef4444}.input--error:focus,.input.is-error:focus{border-color:#ef4444;box-shadow:0 0 0 1px #ef4444}.input--compact{padding:var(--space-1) var(--space-2);font-size:var(--text-xs);border-radius:var(--radius-sm)}.input--search{padding-left:32px}.input__icon{position:absolute;left:var(--space-2-5);top:50%;transform:translateY(-50%);width:16px;height:16px;color:var(--color-text-muted);pointer-events:none}.input__clear{position:absolute;right:var(--space-2);top:50%;transform:translateY(-50%);color:var(--color-text-muted);cursor:pointer}.input__clear:hover{color:var(--color-text-secondary)}.label{display:block;margin-bottom:var(--space-1-5);font-size:var(--text-sm);font-weight:var(--fw-medium);color:var(--color-text-secondary)}.label--compact{font-size:var(--text-xs);color:var(--color-text-muted);margin-bottom:var(--space-1)}.form-helper{margin-top:var(--space-1-5);font-size:var(--text-sm);color:var(--color-text-muted)}.form-error{margin-top:var(--space-1-5);font-size:var(--text-sm);color:var(--color-danger-fg)}.checkbox{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:16px;height:16px;background:var(--color-bg-input);border:var(--border-width-thin) solid var(--color-border-strong);border-radius:var(--radius-sm);cursor:pointer;position:relative;transition:background-color var(--dur-fast),border-color var(--dur-fast)}.checkbox:checked{background:var(--color-accent);border-color:var(--color-accent)}.checkbox:checked:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23fff' stroke-width='2'><polyline points='3 8 7 12 13 4'/></svg>") center/10px no-repeat}.checkbox:focus-visible{box-shadow:0 0 0 1px var(--color-border-focus)}.slider{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:4px;background:var(--color-bg-elevated);border-radius:var(--radius-full);cursor:pointer;background-image:linear-gradient(to right,var(--color-border-focus) 0%,var(--color-border-focus) var(--fill, 0%),var(--color-bg-elevated) var(--fill, 0%),var(--color-bg-elevated) 100%)}.slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:12px;height:12px;background:var(--color-border-focus);border:none;border-radius:var(--radius-full);cursor:pointer;transition:background-color var(--dur-fast)}.slider::-webkit-slider-thumb:hover{background:#60a5fa}.slider::-moz-range-thumb{width:12px;height:12px;background:var(--color-border-focus);border:none;border-radius:var(--radius-full);cursor:pointer}.slider:disabled{opacity:var(--opacity-disabled);cursor:not-allowed}.color-swatch{width:32px;height:32px;border:var(--border-width-thin) solid var(--color-border-strong);border-radius:var(--radius-sm);cursor:pointer;overflow:hidden;position:relative;background-image:linear-gradient(45deg,var(--checker-light) 25%,transparent 25%),linear-gradient(-45deg,var(--checker-light) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,var(--checker-light) 75%),linear-gradient(-45deg,transparent 75%,var(--checker-light) 75%);background-size:var(--checker-size) var(--checker-size);background-position:0 0,0 8px,8px -8px,-8px 0;background-color:var(--checker-dark)}.color-swatch:hover{border-color:#71717a}.color-swatch__fill{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--swatch-color, #ffffff)}.select{position:relative;display:inline-block;width:100%}.select__control{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;padding:var(--space-1-5) 28px var(--space-1-5) var(--space-2);font-size:var(--text-xs);color:var(--color-text-secondary);background:var(--color-bg-input);border:var(--border-width-thin) solid var(--color-border-default);border-radius:var(--radius-sm);cursor:pointer;transition:border-color var(--dur-fast)}.select__control:focus{outline:none;border-color:var(--color-border-focus)}.select__chevron{position:absolute;right:var(--space-2);top:50%;transform:translateY(-50%);width:12px;height:12px;color:var(--color-text-muted);pointer-events:none}.panel{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;background:var(--color-bg-panel);border:var(--border-width-thin) solid var(--color-border-subtle);border-radius:var(--radius-lg);overflow:hidden;transition:opacity var(--dur-fast),transform var(--dur-fast),box-shadow var(--dur-fast)}.panel.is-active{box-shadow:inset 0 0 0 1px var(--color-border-focus)}.panel--floating{position:fixed;box-shadow:var(--shadow-2xl);border:var(--border-width-thin) solid var(--color-border-default);z-index:var(--z-panel)}.panel--floating.is-active{box-shadow:var(--shadow-2xl),0 0 0 var(--border-width-medium) var(--color-border-focus);border-color:transparent}.panel--floating.is-dragging{opacity:var(--opacity-peek);transition:none}.panel--maximized{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-panel);border-radius:0}.panel-header{display:flex;align-items:center;height:var(--size-panel-header);background:var(--color-bg-header);border-bottom:var(--border-width-thin) solid var(--color-border-default);-webkit-user-select:none;user-select:none;flex-shrink:0}.panel-header__controls{display:flex;align-items:center;gap:var(--space-1-5);padding:0 var(--space-2)}.panel-header__title{display:flex;align-items:center;gap:var(--space-2);padding:0 var(--space-2);font-size:var(--text-sm);font-weight:var(--fw-medium);color:var(--color-text-secondary)}.panel-header__title svg{width:14px;height:14px}.panel-header__drag{flex:1;cursor:move;height:100%}.panel-header__float-indicator{margin-left:auto;padding-right:var(--space-2);color:var(--color-text-muted)}.window-control{width:var(--size-window-control);height:var(--size-window-control);border-radius:var(--radius-full);border:none;cursor:pointer;padding:0;position:relative;transition:background-color var(--dur-fast) var(--ease-out);display:flex;align-items:center;justify-content:center}.window-control svg{opacity:0;width:8px;height:8px;transition:opacity var(--dur-fast)}.window-control:hover svg{opacity:1}.window-control--close{background:var(--color-window-close)}.window-control--close:hover{background:var(--color-window-close-hover)}.window-control--close svg{color:var(--color-window-close-icon)}.window-control--minimize{background:var(--color-window-min)}.window-control--minimize:hover{background:var(--color-window-min-hover)}.window-control--minimize svg{color:var(--color-window-min-icon)}.window-control--float{background:var(--color-window-max)}.window-control--float:hover{background:var(--color-window-max-hover)}.window-control--float svg{color:var(--color-window-max-icon)}.window-control:disabled{background:var(--color-window-disabled);cursor:not-allowed}.window-control:disabled svg{display:none}.window-control__icon{opacity:0;width:8px;height:8px;transition:opacity var(--dur-fast) var(--ease-out)}.window-control:hover:not(:disabled) .window-control__icon{opacity:1}.window-control:disabled .window-control__icon{display:none}.panel-header__icon{width:14px;height:14px;color:var(--color-text-tertiary);flex-shrink:0}.panel__content{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;overflow:auto}.editor-shell{display:flex;flex-direction:column;height:100vh;background:var(--color-bg-app)}.editor-shell__menubar{height:var(--size-menubar);background:var(--color-bg-header);border-bottom:var(--border-width-thin) solid var(--color-border-default);display:flex;align-items:center;padding:0 var(--space-2);flex-shrink:0}.menubar__status-dot{width:8px;height:8px;border-radius:var(--radius-full);flex-shrink:0;transition:background-color var(--dur-fast) var(--ease-out)}.menubar__status-dot.is-saved{background:var(--color-success)}.menubar__status-dot.is-dirty{background:var(--color-warning)}.editor-shell__main{flex:1;display:flex;overflow:hidden}.editor-shell__dock-left,.editor-shell__dock-right{display:flex;flex-direction:column;flex-shrink:0}.editor-shell__dock-center{flex:1;display:flex;flex-direction:column;min-width:0}.editor-shell__dock-bottom{display:flex;flex-shrink:0;overflow:hidden}.editor-shell__dock-bottom-slot{display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden}.splitter{background:var(--color-bg-header);transition:background-color var(--dur-fast) var(--ease-out);flex-shrink:0;z-index:var(--z-splitter)}.splitter:hover,.splitter.is-dragging{background:var(--color-border-focus)}.splitter--horizontal{width:var(--size-splitter);height:100%;cursor:col-resize}.splitter--vertical{height:var(--size-splitter);width:100%;cursor:row-resize}.splitter--intra{background:var(--color-border-subtle)}.splitter--intra:hover,.splitter--intra.is-dragging{background:var(--color-border-focus)}.resize-handle{position:absolute;z-index:var(--z-resize-handle);transition:background-color var(--dur-fast)}.resize-handle:hover{background:#3b82f680}.resize-handle--n{top:0;left:0;right:0;height:4px;cursor:n-resize}.resize-handle--s{bottom:0;left:0;right:0;height:4px;cursor:s-resize}.resize-handle--w{top:0;bottom:0;left:0;width:4px;cursor:w-resize}.resize-handle--e{top:0;bottom:0;right:0;width:4px;cursor:e-resize}.resize-handle--nw{top:0;left:0;width:12px;height:12px;cursor:nw-resize}.resize-handle--ne{top:0;right:0;width:12px;height:12px;cursor:ne-resize}.resize-handle--sw{bottom:0;left:0;width:12px;height:12px;cursor:sw-resize}.resize-handle--se{bottom:0;right:0;width:12px;height:12px;cursor:se-resize}.taskbar{position:relative;z-index:var(--z-dock);height:var(--size-taskbar);background:var(--color-bg-app);border-top:var(--border-width-thin) solid var(--color-border-default);display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);flex-shrink:0}.taskbar__label{font-size:var(--text-xs);color:var(--color-text-muted);margin-right:var(--space-2)}.taskbar__item{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-1-5) var(--space-3);background:var(--color-bg-header);border:var(--border-width-thin) solid var(--color-border-default);border-radius:var(--radius-md);color:var(--color-text-secondary);font-size:var(--text-sm);cursor:pointer;transition:background-color var(--dur-base),transform var(--dur-base)}.taskbar__item:hover{background:var(--color-bg-elevated);transform:scale(1.05)}.taskbar__item svg{width:14px;height:14px;color:var(--color-text-tertiary)}.tree-row{position:relative;display:flex;align-items:center;gap:var(--space-1);padding:var(--space-0-5) var(--space-1);cursor:pointer;transition:background-color var(--dur-fast)}.tree-row:hover{background:var(--color-bg-header)}.tree-row.is-selected{background:var(--color-bg-selected);color:var(--color-text-selected)}.tree-row.is-selected:hover{background:var(--color-bg-selected-hover)}.tree-row.is-dragging{opacity:var(--opacity-dragging)}.tree-row.is-hidden{opacity:var(--opacity-hidden)}.tree-row.is-inherited-hidden{opacity:var(--opacity-inherited-hidden)}.tree-row.is-locked{cursor:not-allowed}.tree-row__chevron{width:16px;height:16px;display:flex;align-items:center;justify-content:center;color:var(--color-text-tertiary);flex-shrink:0}.tree-row__chevron.is-hidden{visibility:hidden}.tree-row__dot{width:6px;height:6px;border-radius:var(--radius-full);background:var(--color-border-focus);flex-shrink:0}.tree-row__icon{width:14px;height:14px;flex-shrink:0}.tree-row__name{flex:1 1 auto;min-width:0;font-size:var(--text-sm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--color-text-secondary)}.tree-row__name.is-inactive{font-style:italic;color:var(--color-text-muted)}.tree-row__rename{flex:1;padding:0 var(--space-1);font-size:var(--text-sm);background:var(--color-bg-elevated);border:var(--border-width-thin) solid var(--color-border-focus);border-radius:var(--radius-sm);color:var(--color-text-primary);outline:none}.tree-row__grip{width:12px;height:12px;opacity:0;cursor:grab;color:var(--color-text-muted);transition:opacity var(--dur-fast)}.tree-row:hover .tree-row__grip{opacity:.5}.tree-row__action{padding:2px;border-radius:var(--radius-sm);opacity:0;transition:opacity var(--dur-fast),background-color var(--dur-fast);color:var(--color-text-tertiary)}.tree-row:hover .tree-row__action{opacity:1}.tree-row__action:hover{background:var(--color-bg-elevated)}.tree-row__action.is-on{opacity:1;color:var(--color-warning)}.tree-row__action.is-inherited{opacity:1;color:var(--color-warning-muted)}.drop-indicator--line{position:absolute;left:0;right:0;height:2px;background:var(--color-border-focus);pointer-events:none}.drop-indicator--inside{position:absolute;top:0;right:0;bottom:0;left:0;border:var(--border-width-medium) solid var(--color-border-focus);border-radius:var(--radius-sm);pointer-events:none}.property-row{display:flex;flex-direction:column;gap:var(--space-1)}.property-row__label{font-size:var(--text-xs);color:var(--color-text-muted);-webkit-user-select:none;user-select:none}.property-row__label--draggable{cursor:ew-resize;color:var(--color-text-tertiary)}.property-row__label--draggable.is-dragging{color:var(--color-text-accent)}.property-row__inputs{display:flex;align-items:center;gap:var(--space-1)}.section{border-bottom:var(--border-width-thin) solid var(--color-border-subtle)}.section__header{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);cursor:pointer;transition:background-color var(--dur-fast);-webkit-user-select:none;user-select:none}.section__header:hover{background:var(--color-bg-hover-subtle)}.section__caret{padding:2px;color:var(--color-text-tertiary)}.section__caret:hover{color:var(--color-text-secondary)}.section__title{font-size:var(--text-sm);font-weight:var(--fw-medium);color:var(--color-text-secondary)}.section__spacer{flex:1}.section__body{padding:0 var(--space-3) var(--space-3);display:flex;flex-direction:column;gap:var(--space-3)}.reference-drop{display:block;width:100%;padding:var(--space-2);text-align:center;font-size:var(--text-xs);color:var(--color-text-muted);background:var(--color-bg-input);border:1px dashed var(--color-border-default);border-radius:var(--radius-sm);cursor:pointer;transition:border-color var(--dur-fast)}.reference-drop:hover{border-color:var(--color-border-strong)}.scene-toolbar{display:flex;align-items:center;justify-content:space-between;height:var(--size-panel-toolbar);padding:0 var(--space-2);background:var(--color-bg-header);border-bottom:var(--border-width-thin) solid var(--color-border-default);flex-shrink:0}.scene-toolbar__group{display:flex;align-items:center;gap:var(--space-1)}.scene-toolbar__divider{width:1px;height:16px;background:var(--color-border-default);margin:0 var(--space-1)}.tool-btn{padding:var(--space-1-5);border-radius:var(--radius-sm);border:none;background:transparent;color:var(--color-text-tertiary);cursor:pointer;transition:background-color var(--dur-fast),color var(--dur-fast)}.tool-btn:hover{background:var(--color-bg-elevated);color:#fff}.tool-btn.is-active{background:var(--color-accent);color:#fff}.toggle-btn{padding:var(--space-1-5);border-radius:var(--radius-sm);border:none;background:transparent;color:var(--color-text-muted);cursor:pointer;transition:background-color var(--dur-fast),color var(--dur-fast)}.toggle-btn:hover{background:var(--color-bg-elevated);color:var(--color-text-secondary)}.toggle-btn.is-active{background:var(--color-accent-soft);color:var(--color-text-accent)}.scene-status{display:flex;align-items:center;justify-content:space-between;height:var(--size-status-bar);padding:0 var(--space-2);background:var(--color-bg-header);border-top:var(--border-width-thin) solid var(--color-border-default);font-size:var(--text-xs);color:var(--color-text-tertiary);font-family:var(--font-mono);flex-shrink:0;overflow:hidden}.scene-status__divider{color:var(--color-text-disabled)}.context-menu{position:fixed;min-width:192px;padding:var(--space-1) 0;background:var(--color-bg-header);border:var(--border-width-thin) solid var(--color-border-default);border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);z-index:var(--z-modal)}.context-menu__item{width:100%;display:flex;align-items:center;gap:var(--space-2);padding:var(--space-1-5) var(--space-3);font-size:var(--text-sm);color:var(--color-text-secondary);background:transparent;border:none;text-align:left;cursor:pointer;transition:background-color var(--dur-fast)}.context-menu__item:hover{background:var(--color-bg-elevated)}.context-menu__item:disabled{color:var(--color-text-disabled);cursor:not-allowed}.context-menu__item.is-danger:hover{color:var(--color-danger-fg);background:var(--color-danger-soft)}.context-menu__icon{width:16px;height:16px;flex-shrink:0}.context-menu__shortcut{margin-left:auto;font-size:var(--text-xs);color:var(--color-text-muted)}.context-menu__caret{margin-left:auto;width:16px;height:16px;color:var(--color-text-muted)}.context-menu__divider{height:1px;background:var(--color-border-default);margin:var(--space-1) 0}.context-menu__submenu{position:absolute;left:100%;top:0;margin-left:4px;z-index:calc(var(--z-modal) + 1)}.dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-modal);display:flex;align-items:center;justify-content:center;background:var(--color-bg-overlay);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:fadeIn var(--dur-base) var(--ease-out)}.dialog{position:relative;width:100%;max-height:90vh;margin:0 var(--space-4);background:var(--color-bg-app);border:var(--border-width-thin) solid var(--color-border-default);border-radius:var(--radius-xl);box-shadow:var(--shadow-2xl);overflow:hidden;animation:slideUp var(--dur-base) var(--ease-out)}.dialog--sm{max-width:448px}.dialog--md{max-width:512px}.dialog--lg{max-width:672px}.dialog--xl{max-width:896px}.dialog__header{padding:var(--space-4);border-bottom:var(--border-width-thin) solid var(--color-border-default);display:flex;align-items:center;justify-content:space-between}.dialog__title{font-size:var(--text-lg);font-weight:var(--fw-semibold);color:var(--color-text-primary)}.dialog__body{padding:var(--space-4);overflow-y:auto}.dialog__footer{padding:var(--space-3) var(--space-4);border-top:var(--border-width-thin) solid var(--color-border-default);display:flex;gap:var(--space-2);justify-content:flex-end}.tabs{display:flex;align-items:center;border-bottom:var(--border-width-thin) solid var(--color-border-subtle)}.tab{display:flex;align-items:center;gap:6px;padding:var(--space-1-5) var(--space-3);font-size:var(--text-xs);font-weight:var(--fw-medium);color:var(--color-text-muted);background:transparent;border:none;border-bottom:var(--border-width-medium) solid transparent;cursor:pointer;transition:color var(--dur-fast),background-color var(--dur-fast),border-color var(--dur-fast)}.tab:hover{color:var(--color-text-secondary);background:var(--color-bg-hover-subtle)}.tab.is-active{color:var(--color-text-primary);background:var(--color-bg-header);border-bottom-color:var(--color-border-focus)}.tab__badge{min-width:18px;height:18px;padding:0 4px;font-size:var(--text-2xs);font-weight:var(--fw-medium);border-radius:var(--radius-full);display:inline-flex;align-items:center;justify-content:center;background:var(--color-log-default-bg);color:var(--color-log-default-fg)}.tab__badge--error{background:var(--color-log-error-bg);color:var(--color-log-error-fg)}.tab__badge--warning{background:var(--color-log-warn-bg);color:var(--color-log-warn-fg)}.tab__badge--info{background:var(--color-log-info-bg);color:var(--color-log-info-fg)}.progress{width:100%;background:var(--color-bg-elevated);border-radius:var(--radius-full);overflow:hidden}.progress--sm{height:4px}.progress--md{height:8px}.progress--lg{height:12px}.progress__fill{height:100%;background:var(--color-border-focus);transition:width var(--dur-base) var(--ease-out)}.progress__fill--success{background:#22c55e}.progress__fill--warning{background:#eab308}.progress__fill--error{background:#ef4444}.loader-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-modal);display:flex;align-items:center;justify-content:center;background:#18181bcc;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.loader-overlay__box{display:flex;flex-direction:column;align-items:center;gap:var(--space-4);padding:var(--space-6);background:var(--color-bg-header);border-radius:var(--radius-lg);box-shadow:var(--shadow-xl)}.loader{width:32px;height:32px;color:var(--color-info-fg);animation:spin 1s linear infinite}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes panelGenieOpen{0%{opacity:0;transform:scaleY(0) scaleX(.3)}to{opacity:1;transform:scaleY(1) scaleX(1)}}@keyframes panelGenieClose{0%{opacity:1;transform:scaleY(1) scaleX(1)}to{opacity:0;transform:scaleY(0) scaleX(.3)}}.animate-panel-open{animation:panelGenieOpen var(--dur-fast) var(--ease-out) forwards;transform-origin:bottom center}.animate-panel-close{animation:panelGenieClose var(--dur-fast) var(--ease-in) forwards;transform-origin:bottom center}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.checkerboard{background-image:linear-gradient(45deg,var(--checker-light) 25%,transparent 25%),linear-gradient(-45deg,var(--checker-light) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,var(--checker-light) 75%),linear-gradient(-45deg,transparent 75%,var(--checker-light) 75%);background-size:var(--checker-size) var(--checker-size);background-position:0 0,0 8px,8px -8px,-8px 0;background-color:var(--checker-dark)}.login-screen{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:var(--color-bg-app);padding:var(--space-4);overflow:auto;font-family:var(--font-sans)}.login-card{width:100%;max-width:448px;display:flex;flex-direction:column;align-items:stretch}.login-card__hero{margin-bottom:var(--space-8);text-align:center}.login-card__title{margin:0 0 var(--space-2) 0;font-size:var(--text-2xl);font-weight:var(--fw-bold);color:var(--color-text-primary);line-height:var(--lh-tight)}.login-card__subtitle{margin:0;font-size:var(--text-sm);color:var(--color-text-tertiary)}.login-card__panel{background:var(--color-bg-header);border:1px solid var(--color-border-default);border-radius:var(--radius-xl);padding:var(--space-6);box-shadow:var(--shadow-lg)}.login-card__version{margin:var(--space-4) 0 0 0;text-align:center;font-size:var(--text-xs);color:var(--color-text-muted)}.login-form{display:flex;flex-direction:column;gap:var(--space-4)}.login-form__field{display:block}.login-form__input-wrap{position:relative;display:block}.login-form__input--trailing{padding-right:var(--space-8)}.login-form__toggle{position:absolute;top:50%;right:var(--space-1-5);transform:translateY(-50%)}.login-form__error{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:#7f1d1d33;border:1px solid #991b1b;border-radius:var(--radius-lg);color:var(--color-danger-fg);font-size:var(--text-sm);line-height:var(--lh-normal)}.login-form__error-icon{flex-shrink:0}.login-form__submit{width:100%;padding-top:var(--space-2-5);padding-bottom:var(--space-2-5);justify-content:center;gap:var(--space-2)}.login-form__submit-spinner{width:16px;height:16px;display:inline-block}.animate-fade-in{animation:loginFadeIn var(--dur-base) var(--ease-out) both}@keyframes loginFadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){.animate-fade-in,.animate-spin{animation:none}}.checking-splash{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:var(--color-bg-app)}.checking-splash__ring{box-sizing:border-box;width:32px;height:32px;border:3px solid var(--color-border-default);border-top-color:var(--color-border-focus);border-radius:var(--radius-full)}.checking-splash__sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.animate-spin{animation:spin 1s linear infinite}.backend-config-preview-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:calc(var(--z-modal) + 1);display:flex;align-items:center;justify-content:center;padding:var(--space-4);background:var(--color-bg-overlay);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:backendConfigPreviewBackdropFadeIn var(--dur-base) var(--ease-out)}.backend-config-preview-modal{position:relative;width:100%;max-width:720px;max-height:90vh;display:flex;flex-direction:column;background:var(--color-bg-app);border:var(--border-width-thin) solid var(--color-border-default);border-radius:var(--radius-xl);box-shadow:var(--shadow-2xl);overflow:hidden;animation:backendConfigPreviewSlideUp var(--dur-base) var(--ease-out)}.backend-config-preview-modal__header{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-4);border-bottom:var(--border-width-thin) solid var(--color-border-default)}.backend-config-preview-modal__title-wrap{display:flex;flex-direction:column;gap:2px;min-width:0}.backend-config-preview-modal__title{margin:0;font-size:var(--text-lg);font-weight:var(--fw-semibold);color:var(--color-text-primary);line-height:var(--lh-tight);word-break:break-word}.backend-config-preview-modal__subtitle{font-size:var(--text-xs);color:var(--color-text-muted);line-height:var(--lh-normal)}.backend-config-preview-modal__close{flex-shrink:0}.backend-config-preview-modal__tabs{flex:0 0 auto;display:flex;align-items:stretch;gap:0;padding:0 var(--space-2);background:var(--color-bg-app);border-bottom:var(--border-width-thin) solid var(--color-border-default);overflow-x:auto}.backend-config-preview-modal__tab{display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-2) var(--space-3);background:transparent;border:0;border-bottom:2px solid transparent;color:var(--color-text-muted);font-size:var(--text-sm);font-weight:var(--fw-medium);cursor:pointer;white-space:nowrap;transition:color var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out)}.backend-config-preview-modal__tab:hover,.backend-config-preview-modal__tab:focus-visible{color:var(--color-text-primary);outline:none}.backend-config-preview-modal__tab--active{color:var(--color-text-primary);border-bottom-color:var(--color-accent, var(--color-text-primary))}.backend-config-preview-modal__body{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;min-width:0;padding:var(--space-4);overflow:auto}.backend-config-preview-modal__panel{display:flex;flex-direction:column;gap:var(--space-3);min-width:0}.backend-config-preview-modal__panel--raw{flex:1 1 auto;min-height:0}.backend-config-preview-modal__definitions{display:grid;grid-template-columns:max-content 1fr;gap:var(--space-2) var(--space-4);margin:0}.backend-config-preview-modal__def-row{display:contents}.backend-config-preview-modal__def-row dt{font-size:var(--text-xs);font-weight:var(--fw-semibold);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em;align-self:center}.backend-config-preview-modal__def-row dd{margin:0;font-size:var(--text-sm);color:var(--color-text-primary);line-height:var(--lh-normal);word-break:break-word}.backend-config-preview-modal__table{width:100%;border-collapse:collapse;font-size:var(--text-sm);color:var(--color-text-primary)}.backend-config-preview-modal__table thead th{text-align:left;padding:var(--space-1) var(--space-2);font-size:var(--text-xs);font-weight:var(--fw-semibold);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em;border-bottom:var(--border-width-thin) solid var(--color-border-default)}.backend-config-preview-modal__table tbody td{padding:var(--space-1) var(--space-2);border-bottom:1px solid var(--color-border-subtle, var(--color-border-default));vertical-align:top}.backend-config-preview-modal__table tbody tr:last-child td{border-bottom:0}.backend-config-preview-modal__cell-desc{color:var(--color-text-secondary);font-size:var(--text-xs)}.backend-config-preview-modal__code{font-family:var(--font-mono);font-size:var(--text-xs);background:var(--color-bg-elevated);padding:0 var(--space-1);border-radius:var(--radius-sm);color:var(--color-text-secondary)}.backend-config-preview-modal__empty{margin:0;font-size:var(--text-sm);color:var(--color-text-muted);font-style:italic}.backend-config-preview-modal__section-heading{margin:0;font-size:var(--text-sm);font-weight:var(--fw-semibold);color:var(--color-text-primary);text-transform:uppercase;letter-spacing:.04em}.backend-config-preview-modal__warning{margin:0;display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:#7f1d1d2e;border:1px solid #991b1b;border-radius:var(--radius-md);color:var(--color-danger-fg);font-size:var(--text-xs);line-height:var(--lh-normal)}.backend-config-preview-modal__raw-viewport{position:relative;flex:1 1 auto;min-height:0;display:flex}.backend-config-preview-modal__copy{position:absolute;top:var(--space-2);right:var(--space-2);z-index:1;display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-2);font-size:var(--text-xs);opacity:0;pointer-events:none;transition:opacity var(--dur-fast) var(--ease-out)}.backend-config-preview-modal__raw-viewport:hover .backend-config-preview-modal__copy,.backend-config-preview-modal__raw-viewport:focus-within .backend-config-preview-modal__copy,.backend-config-preview-modal__copy:focus-visible{opacity:1;pointer-events:auto}.backend-config-preview-modal__raw{margin:0;flex:1 1 auto;min-height:0;min-width:0;overflow:auto;padding:var(--space-3);background:var(--color-bg-elevated);border:var(--border-width-thin) solid var(--color-border-default);border-radius:var(--radius-md);font-family:var(--font-mono);font-size:var(--text-xs);line-height:var(--lh-normal);color:var(--color-text-secondary);white-space:pre}@keyframes backendConfigPreviewBackdropFadeIn{0%{opacity:0}to{opacity:1}}@keyframes backendConfigPreviewSlideUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){.backend-config-preview-modal-backdrop,.backend-config-preview-modal{animation:none}}.new-project-dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-modal);display:flex;align-items:center;justify-content:center;padding:var(--space-4);background:var(--color-bg-overlay);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:newProjectBackdropFadeIn var(--dur-base) var(--ease-out)}.new-project-dialog{position:relative;width:100%;max-width:480px;max-height:90vh;display:flex;flex-direction:column;background:var(--color-bg-app);border:var(--border-width-thin) solid var(--color-border-default);border-radius:var(--radius-xl);box-shadow:var(--shadow-2xl);overflow:hidden;animation:newProjectSlideUp var(--dur-base) var(--ease-out)}.new-project-dialog__header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-4);border-bottom:var(--border-width-thin) solid var(--color-border-default)}.new-project-dialog__title{margin:0;font-size:var(--text-lg);font-weight:var(--fw-semibold);color:var(--color-text-primary);line-height:var(--lh-tight)}.new-project-dialog__close{flex-shrink:0}.new-project-dialog__body{display:flex;flex-direction:column;gap:var(--space-4);padding:var(--space-4);overflow-y:auto}.new-project-dialog__field{display:flex;flex-direction:column}.new-project-dialog__location{gap:var(--space-2)}.new-project-dialog__location-row{display:flex;gap:var(--space-2);align-items:stretch;flex-wrap:wrap}.new-project-dialog__location-input{flex:1 1 0;min-width:0;font-family:var(--font-mono);font-size:var(--text-sm)}.new-project-dialog__browse{flex-shrink:0;display:inline-flex;align-items:center;gap:var(--space-2)}.new-project-dialog__preview{margin:0;font-size:var(--text-xs);color:var(--color-text-muted);line-height:var(--lh-normal);word-break:break-all}.new-project-dialog__preview-path{font-family:var(--font-mono);color:var(--color-text-secondary);background:var(--color-bg-elevated);padding:0 var(--space-1);border-radius:var(--radius-sm)}.new-project-dialog__game{gap:var(--space-2)}.new-project-dialog__game-select{width:100%}.new-project-dialog__game-status{margin:0;display:inline-flex;align-items:center;gap:var(--space-2);font-size:var(--text-xs);color:var(--color-text-muted);line-height:var(--lh-normal)}.new-project-dialog__game-error{margin:0;display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-xs);color:var(--color-danger-fg);line-height:var(--lh-normal);flex-wrap:wrap}.new-project-dialog__game-error-text{flex:1 1 auto;min-width:0;word-break:break-word}.new-project-dialog__game-retry{flex-shrink:0;padding:var(--space-1) var(--space-2);font-size:var(--text-xs)}.new-project-dialog__game-summary{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.new-project-dialog__game-summary-line{flex:1 1 auto;min-width:0;font-size:var(--text-sm);color:var(--color-text-secondary);line-height:var(--lh-normal);word-break:break-word}.new-project-dialog__game-view{flex-shrink:0;display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-2);font-size:var(--text-xs)}.new-project-dialog__error{display:flex;align-items:flex-start;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:#7f1d1d33;border:1px solid #991b1b;border-radius:var(--radius-lg);color:var(--color-danger-fg);font-size:var(--text-sm);line-height:var(--lh-normal)}.new-project-dialog__error-icon{flex-shrink:0}.new-project-dialog__footer{display:flex;justify-content:flex-end;gap:var(--space-2);padding:var(--space-3) var(--space-4);border-top:var(--border-width-thin) solid var(--color-border-default)}.new-project-dialog__spinner{width:16px;height:16px;display:inline-block}.new-project-dialog__helper{margin:0;font-size:var(--text-xs);color:var(--color-text-muted);line-height:var(--lh-normal)}.new-project-dialog__progress-bar{-moz-appearance:none;appearance:none;-webkit-appearance:none;width:80px;height:6px;border:0;border-radius:var(--radius-sm);background:#fff3;overflow:hidden}.new-project-dialog__progress-bar::-webkit-progress-bar{background:#fff3;border-radius:var(--radius-sm)}.new-project-dialog__progress-bar::-webkit-progress-value{background:currentColor;border-radius:var(--radius-sm);transition:width var(--dur-fast, .15s) var(--ease-out, ease-out)}.new-project-dialog__progress-bar::-moz-progress-bar{background:currentColor;border-radius:var(--radius-sm)}@keyframes newProjectBackdropFadeIn{0%{opacity:0}to{opacity:1}}@keyframes newProjectSlideUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){.new-project-dialog-backdrop,.new-project-dialog,.animate-spin{animation:none}}.welcome-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:var(--space-4)}.welcome-actions__btn{gap:var(--space-2)}.welcome-hero{display:flex;flex-direction:column;align-items:center;text-align:center;padding:var(--space-12) 0;gap:var(--space-4)}.welcome-hero__row{display:flex;align-items:center;gap:var(--space-4)}.welcome-hero__icon{display:inline-flex;align-items:center;justify-content:center;padding:var(--space-4);background:var(--color-accent);border-radius:16px;color:var(--color-text-primary);box-shadow:0 10px 15px -3px var(--color-accent-soft)}.welcome-hero__text{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-1)}.welcome-hero__title{margin:0;font-size:var(--text-2xl);font-weight:var(--fw-bold);color:var(--color-text-primary);line-height:var(--lh-tight)}.welcome-hero__subtitle{margin:0;font-size:var(--text-lg);font-weight:var(--fw-normal);color:var(--color-text-tertiary);line-height:var(--lh-normal)}.welcome-hero__tagline{margin:0;font-size:var(--text-lg);font-weight:var(--fw-medium);color:var(--color-text-accent);letter-spacing:.025em;line-height:var(--lh-normal)}.project-card{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:transparent;border:1px solid transparent;border-radius:var(--radius-lg);cursor:pointer;text-align:left;transition:background-color .15s ease,border-color .15s ease}.project-card:hover{background:var(--color-bg-hover-subtle);border-color:var(--color-border-subtle)}.project-card:focus{outline:none}.project-card:focus-visible{box-shadow:0 0 0 var(--ring-width, 2px) var(--color-border-focus)}.project-card__icon{display:flex;align-items:center;justify-content:center;width:40px;height:40px;flex-shrink:0;color:var(--color-text-accent);background:var(--color-accent-soft);border-radius:var(--radius-md)}.project-card__body{display:flex;flex-direction:column;gap:var(--space-0-5);min-width:0}.project-card__name{font-size:var(--text-sm);font-weight:var(--fw-semibold);color:var(--color-text-primary);line-height:var(--lh-tight);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.project-card__path{font-size:var(--text-xs);color:var(--color-text-muted);line-height:var(--lh-tight);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.project-card__meta{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-3);margin-top:var(--space-1);font-size:var(--text-xs);color:var(--color-text-tertiary)}.project-card__meta-item{display:inline-flex;align-items:center;gap:var(--space-1);color:var(--color-text-tertiary);line-height:var(--lh-tight)}.project-card__meta-item--game{min-width:0;max-width:14rem}.project-card__meta-item--game>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-card__badge{display:inline-flex;align-items:center;padding:var(--space-0-5) var(--space-2);font-size:var(--text-2xs);font-weight:var(--fw-medium);color:var(--color-warning-fg);background:var(--color-warning-soft);border-radius:var(--radius-sm);line-height:var(--lh-tight)}.project-card__remove{opacity:0;transition:opacity .15s ease}.project-card:hover .project-card__remove,.project-card:focus-within .project-card__remove{opacity:1}.project-card__open{flex-shrink:0}@media(prefers-reduced-motion:reduce){.project-card,.project-card__remove{transition:none}}.recent-projects{display:flex;flex-direction:column;background:var(--color-bg-panel);border:1px solid var(--color-border-subtle);border-radius:var(--radius-xl);overflow:hidden}.recent-projects__header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--color-border-subtle)}.recent-projects__title{margin:0;font-size:var(--text-base);font-weight:var(--fw-semibold);color:var(--color-text-primary);line-height:var(--lh-tight)}.recent-projects__toolbar{display:flex;align-items:center;gap:var(--space-1)}.recent-projects__body{display:flex;flex-direction:column;max-height:288px;overflow-y:auto;padding:var(--space-2)}.recent-projects__empty{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:var(--space-12) var(--space-6);gap:var(--space-3)}.recent-projects__empty-icon{color:var(--color-text-muted)}.recent-projects__empty-title{margin:0;font-size:var(--text-base);font-weight:var(--fw-medium);color:var(--color-text-primary);line-height:var(--lh-tight)}.recent-projects__empty-hint{margin:0;font-size:var(--text-sm);color:var(--color-text-muted);line-height:var(--lh-normal)}.recent-projects__loading{display:flex;align-items:center;justify-content:center;padding:var(--space-12) var(--space-6)}.recent-projects__loading-icon{color:var(--color-text-muted)}.recent-projects__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}.recent-projects__list-item{border-bottom:1px solid var(--color-border-subtle)}.recent-projects__list-item:last-child{border-bottom:none}.recent-projects__sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(prefers-reduced-motion:reduce){.animate-spin{animation:none}}.welcome-screen{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;background:var(--color-bg-app);color:var(--color-text-primary);font-family:var(--font-sans)}.welcome-screen__main{flex:1 1 auto;min-height:0;overflow-y:auto;display:flex;justify-content:center;padding:var(--space-6) var(--space-8)}.welcome-screen__content{width:100%;max-width:56rem;display:flex;flex-direction:column;gap:var(--space-8)}.welcome-header{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);background:var(--color-bg-header);border-bottom:1px solid var(--color-border-default)}.welcome-header__title{margin:0;font-size:var(--text-lg);font-weight:var(--fw-semibold);color:var(--color-text-primary);line-height:var(--lh-tight)}.welcome-header__logout{gap:var(--space-2)}.welcome-footer{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);background:var(--color-bg-header);border-top:1px solid var(--color-border-default);color:var(--color-text-muted);font-size:var(--text-sm)}.inspector-header{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--color-bg-header);border-bottom:var(--border-width-thin) solid var(--color-border-subtle);flex-shrink:0}.inspector-header[data-addressable=false]{opacity:var(--opacity-disabled)}.type-badge{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;padding:var(--space-0-5) var(--space-2);font-family:var(--font-sans);font-size:var(--text-2xs);font-weight:var(--fw-semibold);line-height:var(--lh-tight);text-transform:uppercase;letter-spacing:.04em;border-radius:var(--radius-sm);-webkit-user-select:none;user-select:none}.inspector-header__rename{flex:1 1 auto;min-width:0}.inspector-header__rename::placeholder{color:var(--color-text-muted);font-style:italic}.inspector-header__rename:read-only{cursor:not-allowed;color:var(--color-text-disabled)}.vec2-field{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:var(--space-1);width:100%}.vec2-field__axis{display:inline-flex;align-items:center;gap:var(--space-1);min-width:0}.vec2-field__axis[data-axis=x]{grid-column:1}.vec2-field__axis[data-axis=y]{grid-column:3}.vec2-field__axis-label{display:inline-flex;align-items:center;justify-content:center;width:var(--space-4);height:var(--space-4);flex-shrink:0;font-family:var(--font-mono);font-size:var(--text-2xs);font-weight:var(--fw-semibold);color:var(--color-text-tertiary);text-transform:uppercase;-webkit-user-select:none;user-select:none;border-radius:var(--radius-sm);background:var(--color-bg-elevated)}.vec2-field__axis[data-axis=x] .vec2-field__axis-label{color:var(--color-danger-fg)}.vec2-field__axis[data-axis=y] .vec2-field__axis-label{color:var(--color-success-fg)}.vec2-field__input{flex:1 1 auto;min-width:0;width:100%;font-variant-numeric:tabular-nums}.slider-field{display:flex;align-items:center;gap:var(--space-2);width:100%}.slider-field__range{flex:1 1 auto;min-width:0;height:var(--space-4);cursor:pointer;-moz-appearance:none;appearance:none;-webkit-appearance:none;background:transparent}.slider-field__range:disabled{cursor:not-allowed;opacity:var(--opacity-disabled)}.slider-field__range::-webkit-slider-runnable-track{height:var(--space-1);background:var(--color-bg-input);border-radius:var(--radius-full)}.slider-field__range::-moz-range-track{height:var(--space-1);background:var(--color-bg-input);border-radius:var(--radius-full)}.slider-field__range::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:var(--space-3);height:var(--space-3);margin-top:-4px;border-radius:var(--radius-full);background:var(--color-accent);border:none;transition:background-color var(--dur-fast) var(--ease-out)}.slider-field__range::-moz-range-thumb{width:var(--space-3);height:var(--space-3);border-radius:var(--radius-full);background:var(--color-accent);border:none;transition:background-color var(--dur-fast) var(--ease-out)}.slider-field__range:hover::-webkit-slider-thumb{background:var(--color-accent-hover)}.slider-field__range:hover::-moz-range-thumb{background:var(--color-accent-hover)}.slider-field__range:focus-visible{outline:none}.slider-field__range:focus-visible::-webkit-slider-thumb{box-shadow:0 0 0 var(--ring-width) var(--color-accent-ring)}.slider-field__range:focus-visible::-moz-range-thumb{box-shadow:0 0 0 var(--ring-width) var(--color-accent-ring)}.slider-field__readout{flex-shrink:0;min-width:40px;text-align:right;font-family:var(--font-mono);font-size:var(--text-xs);font-variant-numeric:tabular-nums;color:var(--color-text-secondary);-webkit-user-select:none;user-select:none}.color-field{display:flex;align-items:center;gap:var(--space-2);width:100%}.color-field__swatch{flex-shrink:0;width:var(--space-6);height:var(--space-6);padding:0;border:var(--border-width-thin) solid var(--color-border-strong);border-radius:var(--radius-sm);background:transparent;cursor:pointer;transition:border-color var(--dur-fast) var(--ease-out);overflow:hidden}.color-field__swatch:hover:not(:disabled){border-color:var(--color-text-tertiary)}.color-field__swatch:focus-visible{outline:none;box-shadow:0 0 0 var(--ring-width) var(--color-accent-ring)}.color-field__swatch:disabled{cursor:not-allowed;opacity:var(--opacity-disabled)}.color-field__swatch::-webkit-color-swatch-wrapper{padding:0}.color-field__swatch::-webkit-color-swatch{border:none;border-radius:calc(var(--radius-sm) - 1px)}.color-field__swatch::-moz-color-swatch{border:none;border-radius:calc(var(--radius-sm) - 1px)}.color-field__hex{flex:1 1 auto;min-width:0;font-family:var(--font-mono);font-variant-numeric:tabular-nums;text-transform:lowercase}.dropzone{position:relative;display:flex;flex-direction:column;align-items:stretch;gap:var(--space-2);width:100%;padding:var(--space-2);background:var(--color-bg-input);border:1px dashed var(--color-border-default);border-radius:var(--radius-md);cursor:pointer;transition:border-color var(--dur-fast) var(--ease-out),background-color var(--dur-fast) var(--ease-out)}.dropzone:hover{border-color:var(--color-border-strong)}.dropzone:focus-visible{outline:none;border-color:var(--color-border-focus);box-shadow:0 0 0 var(--ring-width) var(--color-accent-ring)}.dropzone[data-drag-over=true]{border-color:var(--color-border-focus);background:var(--color-accent-soft)}.dropzone[data-addressable=false]{cursor:not-allowed;opacity:var(--opacity-disabled);pointer-events:none}.dropzone__thumbnail{display:block;width:100%;max-height:96px;object-fit:contain;border-radius:var(--radius-sm);background-image:linear-gradient(45deg,var(--checker-dark) 25%,transparent 25%),linear-gradient(-45deg,var(--checker-dark) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,var(--checker-dark) 75%),linear-gradient(-45deg,transparent 75%,var(--checker-dark) 75%);background-size:var(--checker-size) var(--checker-size);background-position:0 0,0 calc(var(--checker-size) / 2),calc(var(--checker-size) / 2) calc(-1 * var(--checker-size) / 2),calc(-1 * var(--checker-size) / 2) 0;background-color:var(--checker-light);pointer-events:none}.dropzone__placeholder{display:flex;align-items:center;justify-content:center;min-height:64px;border-radius:var(--radius-sm);background:var(--color-bg-app);pointer-events:none}.dropzone__hint{font-size:var(--text-xs);color:var(--color-text-muted);-webkit-user-select:none;user-select:none}.dropzone__meta{display:flex;align-items:center;min-height:var(--space-4);pointer-events:none}.dropzone__status{display:inline-block;width:100%;font-size:var(--text-2xs);line-height:var(--lh-tight);color:var(--color-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dropzone__status--uploading{color:var(--color-warning-fg)}.dropzone__status--error{color:var(--color-danger-fg)}.dropzone__status--idle{color:var(--color-text-tertiary)}.dropzone__file-input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.spine-asset-row{position:relative;display:flex;align-items:center;gap:var(--space-2);width:100%;padding:var(--space-1-5) var(--space-2);background:var(--color-bg-input);border:1px dashed var(--color-border-default);border-radius:var(--radius-md);cursor:pointer;transition:border-color var(--dur-fast) var(--ease-out),background-color var(--dur-fast) var(--ease-out)}.spine-asset-row:hover{border-color:var(--color-border-strong)}.spine-asset-row:focus-visible{outline:none;border-color:var(--color-border-focus);box-shadow:0 0 0 var(--ring-width) var(--color-accent-ring)}.spine-asset-row[data-drag-over=true]{border-color:var(--color-border-focus);background:var(--color-accent-soft)}.spine-asset-row[data-addressable=false]{cursor:not-allowed;opacity:var(--opacity-disabled);pointer-events:none}.spine-asset-row__body{flex:1 1 auto;display:flex;flex-direction:column;gap:var(--space-0-5);min-width:0}.spine-asset-row__label{font-size:var(--text-xs);font-weight:var(--fw-medium);color:var(--color-text-secondary);-webkit-user-select:none;user-select:none}.spine-asset-row__value{font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--color-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.spine-status{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;max-width:45%;padding:var(--space-0-5) var(--space-2);font-size:var(--text-2xs);font-weight:var(--fw-medium);line-height:var(--lh-tight);border-radius:var(--radius-full);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-user-select:none;user-select:none}.spine-status.ok{background:var(--color-success-soft);color:var(--color-success-fg)}.spine-status.warn{background:var(--color-warning-soft);color:var(--color-warning-fg)}.spine-status.err{background:var(--color-log-error-bg);color:var(--color-log-error-fg)}.spine-asset-row__file-input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.texture-drop{position:relative;display:flex;align-items:center;gap:var(--space-2);width:100%;min-height:48px;padding:var(--space-1);background:var(--color-bg-input);border:1px dashed var(--color-border-default);border-radius:var(--radius-md);transition:border-color var(--dur-fast) var(--ease-out),background-color var(--dur-fast) var(--ease-out)}.texture-drop[data-filled=true]{border-style:solid}.texture-drop[data-drag-over=true]{border-color:var(--color-border-focus);background:var(--color-accent-soft)}.texture-drop[data-reject=true]{border-color:var(--color-danger-fg);background:var(--color-log-error-bg)}.texture-drop__thumb{flex-shrink:0;width:48px;height:48px;border-radius:var(--radius-sm);background-image:linear-gradient(45deg,var(--checker-dark) 25%,transparent 25%),linear-gradient(-45deg,var(--checker-dark) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,var(--checker-dark) 75%),linear-gradient(-45deg,transparent 75%,var(--checker-dark) 75%);background-size:var(--checker-size) var(--checker-size);background-position:0 0,0 calc(var(--checker-size) / 2),calc(var(--checker-size) / 2) calc(-1 * var(--checker-size) / 2),calc(-1 * var(--checker-size) / 2) 0;background-color:var(--checker-light);overflow:hidden;display:flex;align-items:center;justify-content:center}.texture-drop__thumb img{display:block;max-width:100%;max-height:100%;object-fit:contain;pointer-events:none}.texture-drop__body{flex:1 1 auto;min-width:0;display:flex;align-items:center}.texture-drop__filename{flex:1 1 auto;min-width:0;text-align:left;background:transparent;border:none;padding:var(--space-0-5) var(--space-1);font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-text-secondary);cursor:text;border-radius:var(--radius-sm);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.texture-drop__filename:hover{background:var(--color-bg-elevated);color:var(--color-text)}.texture-drop__filename:focus-visible{outline:none;box-shadow:0 0 0 var(--ring-width) var(--color-accent-ring)}.texture-drop__empty{flex:1 1 auto;min-height:40px;background:transparent;border:none;padding:var(--space-1);font-size:var(--text-xs);color:var(--color-text-muted);text-align:center;cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:var(--radius-sm)}.texture-drop__empty:hover{color:var(--color-text-secondary);background:var(--color-bg-elevated)}.texture-drop__empty:focus-visible{outline:none;box-shadow:0 0 0 var(--ring-width) var(--color-accent-ring)}.texture-drop__input{flex:1 1 auto;min-width:0}.texture-drop__clear{flex-shrink:0;width:var(--space-5);height:var(--space-5);display:inline-flex;align-items:center;justify-content:center;padding:0;background:transparent;border:none;border-radius:var(--radius-sm);color:var(--color-text-muted);font-size:var(--text-base);line-height:1;cursor:pointer;transition:background-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}.texture-drop__clear:hover{background:var(--color-log-error-bg);color:var(--color-danger-fg)}.texture-drop__clear:focus-visible{outline:none;box-shadow:0 0 0 var(--ring-width) var(--color-accent-ring)}.save-project-dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-modal);display:flex;align-items:center;justify-content:center;padding:var(--space-4);background:var(--color-bg-overlay)}.save-project-dialog{position:relative;width:100%;max-width:560px;max-height:90vh;display:flex;flex-direction:column;background:var(--color-bg-app);border:var(--border-width-thin) solid var(--color-border-default);border-radius:var(--radius-xl);box-shadow:var(--shadow-2xl);overflow:hidden;color:var(--color-text-primary)}.save-project-dialog__header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-4);border-bottom:var(--border-width-thin) solid var(--color-border-default)}.save-project-dialog__title{margin:0;font-size:var(--text-lg);font-weight:var(--fw-semibold);color:var(--color-text-primary);line-height:var(--lh-tight)}.save-project-dialog__close{flex-shrink:0}.save-project-dialog__body{display:flex;flex-direction:column;gap:var(--space-4);padding:var(--space-4);overflow-y:auto}.save-project-dialog__error{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:#7f1d1d33;border:1px solid #991b1b;border-radius:var(--radius-lg);color:var(--color-danger-fg);font-size:var(--text-sm);line-height:var(--lh-normal)}.save-project-dialog__error-code{flex-shrink:0;font-family:var(--font-mono);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.04em;padding:var(--space-0-5) var(--space-1);background:#7f1d1d66;border-radius:var(--radius-sm)}.save-project-dialog__error-message{flex:1 1 auto;min-width:0}.save-project-dialog__section{display:flex;flex-direction:column;gap:var(--space-3)}.save-project-dialog__section-title{margin:0;font-size:var(--text-sm);font-weight:var(--fw-semibold);color:var(--color-text-primary);text-transform:uppercase;letter-spacing:.04em;line-height:var(--lh-tight)}.save-project-dialog__bucket{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-3);background:var(--color-bg-elevated);border-radius:var(--radius-md)}.save-project-dialog__bucket--updated{border-left:3px solid var(--color-success-fg)}.save-project-dialog__bucket--refused{border-left:3px solid var(--color-warning-fg)}.save-project-dialog__bucket--unmapped{border-left:3px solid var(--color-accent)}.save-project-dialog__bucket-title{margin:0;font-size:var(--text-sm);font-weight:var(--fw-medium);color:var(--color-text-secondary);line-height:var(--lh-tight);display:inline-flex;align-items:center;gap:var(--space-1)}.save-project-dialog__hint{margin:0;font-size:var(--text-xs);color:var(--color-text-muted);line-height:var(--lh-normal)}.save-project-dialog__empty{margin:0;font-size:var(--text-xs);color:var(--color-text-muted);font-style:italic}.save-project-dialog__list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:var(--space-1-5)}.save-project-dialog__row{display:flex;flex-direction:column;gap:var(--space-0-5);padding:var(--space-1-5) var(--space-2);background:var(--color-bg-app);border-radius:var(--radius-sm)}.save-project-dialog__component-name{font-size:var(--text-sm);font-weight:var(--fw-medium);color:var(--color-text-primary);word-break:break-word}.save-project-dialog__file-path{font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--color-text-tertiary);word-break:break-all}.save-project-dialog__fields{margin:0;padding:0;list-style:none;display:flex;flex-wrap:wrap;gap:var(--space-1)}.save-project-dialog__field-path{display:inline-block}.save-project-dialog__field-path code{font-family:var(--font-mono);font-size:var(--text-2xs);padding:var(--space-0-5) var(--space-1);background:var(--color-bg-elevated);color:var(--color-text-secondary);border-radius:var(--radius-sm)}.save-project-dialog__reason{font-size:var(--text-xs);color:var(--color-warning-fg);line-height:var(--lh-normal)}.save-project-dialog__written{display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-2);border-top:var(--border-width-thin) solid var(--color-border-subtle)}.save-project-dialog__footer{display:flex;justify-content:flex-end;gap:var(--space-2);padding:var(--space-3) var(--space-4);border-top:var(--border-width-thin) solid var(--color-border-default)}.save-project-dialog__confirm:disabled{cursor:not-allowed;opacity:var(--opacity-disabled)}
