.canvas2d-block{--canvas2d-surface:var(--bg-panel);--canvas2d-surface-raised:color-mix(in srgb,var(--bg-panel) 88%,var(--bg-subtle) 12%);--canvas2d-surface-muted:var(--bg-tertiary);--canvas2d-border:color-mix(in srgb,var(--border-color) 82%,transparent);--canvas2d-border-strong:color-mix(in srgb,var(--border-color) 94%,transparent);--canvas2d-grid-line:color-mix(in srgb,var(--text-secondary) 18%,transparent);--canvas2d-grid-dot:color-mix(in srgb,var(--text-secondary) 28%,transparent);--canvas2d-text-muted:var(--text-secondary);--canvas2d-text-soft:var(--text-muted);--canvas2d-placeholder-stroke:color-mix(in srgb,var(--text-secondary) 42%,transparent);--canvas2d-point-outline:color-mix(in srgb,var(--text-primary) 36%,transparent);display:flex;flex-direction:column;width:100%;height:100%;min-height:0;background:var(--canvas2d-surface);color:var(--text-primary)}.canvas2d-block--saved{background:transparent}.canvas2d-shell{position:relative;flex:1 1 auto;min-height:280px;margin:0;overflow:hidden;border:1px solid var(--canvas2d-border);border-radius:var(--radius-md);background:var(--canvas2d-surface)}.canvas2d-shell--saved{margin:0;min-height:100%;border:0;border-radius:0;background:transparent}.canvas2d-editor-header{--canvas2d-surface:var(--bg-panel);--canvas2d-surface-raised:color-mix(in srgb,var(--bg-panel) 88%,var(--bg-subtle) 12%);--canvas2d-surface-muted:var(--bg-tertiary);--canvas2d-border:color-mix(in srgb,var(--border-color) 82%,transparent);--canvas2d-border-strong:color-mix(in srgb,var(--border-color) 94%,transparent);gap:var(--space-3)}.canvas2d-editor-header .viewport3d-editor-header__left,.canvas2d-editor-header .viewport3d-editor-header__right{gap:var(--space-2)}.canvas2d-editor-header .viewport3d-tool-group__btn.is-active{background:color-mix(in srgb,var(--accent,#1a5fb4) 14%,transparent);border-color:color-mix(in srgb,var(--accent,#1a5fb4) 55%,transparent);color:var(--accent,#1a5fb4)}.canvas2d-editor-header .viewport3d-tool-group__btn.is-active:hover{background:color-mix(in srgb,var(--accent,#1a5fb4) 22%,transparent)}.canvas2d-editor-header__meta{display:flex;align-items:center;gap:var(--space-2);min-width:0}.canvas2d-craft-manager{align-items:center;background:var(--canvas2d-surface);border:1px solid var(--canvas2d-border);border-radius:var(--radius-md);display:flex;height:30px;max-width:200px;min-width:200px;position:relative;transition:border-color .15s ease}.canvas2d-craft-manager:focus-within,.canvas2d-craft-manager:hover{border-color:var(--grid-border-color)}.canvas2d-craft-manager__chevron,.canvas2d-craft-manager__new{align-items:center;align-self:stretch;background:transparent;border:0;color:var(--text-secondary);cursor:pointer;display:flex;flex:0 0 auto;justify-content:center;padding:0;transition:background .12s ease,color .12s ease;width:28px}.canvas2d-craft-manager__new{border-right:1px solid var(--canvas2d-border);border-radius:var(--radius-md) 0 0 var(--radius-md)}.canvas2d-craft-manager__chevron{border-left:1px solid var(--canvas2d-border);border-radius:0 var(--radius-md) var(--radius-md) 0;width:24px}.canvas2d-craft-manager__chevron.is-open,.canvas2d-craft-manager__chevron:hover,.canvas2d-craft-manager__new:hover{background:var(--bg-dark);color:var(--text-primary)}.canvas2d-craft-manager__name-wrap{align-items:center;display:flex;flex:1 1 auto;min-width:0;position:relative}.canvas2d-craft-manager__name{background:transparent!important;border:0!important;border-radius:0!important;box-shadow:none!important;color:var(--text-primary);font-size:var(--fs-4);font-weight:400;height:28px;min-height:0!important;min-width:0;outline:none!important;padding:0 28px 0 8px!important;transition:padding-right .22s ease;width:100%}.canvas2d-craft-manager__name:focus,.canvas2d-craft-manager__name:focus-visible{outline:none!important;box-shadow:none!important;border:0!important}.canvas2d-craft-manager__name--with-save{padding-right:34px!important}.canvas2d-craft-manager__name-wrap:has(.canvas2d-craft-manager__save:focus-visible) .canvas2d-craft-manager__name--with-save,.canvas2d-craft-manager__name-wrap:has(.canvas2d-craft-manager__save:hover) .canvas2d-craft-manager__name--with-save{padding-right:86px!important}.canvas2d-craft-manager__name::placeholder{color:var(--canvas2d-text-soft)}.canvas2d-craft-manager__save{align-items:center;background:var(--accent-fill);border:1px solid var(--accent-line);border-radius:var(--radius-sm);color:var(--accent-on-fill);cursor:pointer;display:flex;font-size:var(--fs-3);font-weight:600;gap:0;height:22px;justify-content:center;max-width:22px;min-width:22px;overflow:hidden;padding:0 5px;position:absolute;right:4px;top:50%;transform:translateY(-50%);transition:background .16s ease,border-color .16s ease,color .16s ease,box-shadow .16s ease,gap .22s ease,max-width .22s ease,padding .22s ease}.canvas2d-craft-manager__save:hover{background:var(--accent-fill-hover);border-color:var(--accent-fill-hover);box-shadow:none;color:#fff;gap:5px;max-width:74px;padding:0 var(--space-4)}.canvas2d-craft-manager__save:disabled{cursor:default;opacity:1}.canvas2d-craft-manager__save-icon{align-items:center;display:inline-flex;flex:0 0 auto;justify-content:center}.canvas2d-craft-manager__save-label{max-width:0;overflow:hidden;line-height:1;transition:max-width .22s ease;white-space:nowrap}.canvas2d-craft-manager__save:hover .canvas2d-craft-manager__save-label{max-width:34px}.canvas2d-craft-manager__save--saving{background:color-mix(in srgb,var(--accent-fill) 18%,var(--canvas2d-surface) 82%);border-color:color-mix(in srgb,var(--accent-line) 40%,transparent);color:var(--accent-text)}.canvas2d-craft-manager__save--saved{background:var(--accent-green);border-color:var(--accent-green);box-shadow:0 8px 18px color-mix(in srgb,var(--accent-green) 18%,transparent);color:#fff}.canvas2d-craft-manager__save--saved:hover{background:#168a43;border-color:#168a43;color:#fff}.canvas2d-craft-manager__save--error{background:color-mix(in srgb,var(--accent-red) 10%,var(--canvas2d-surface) 90%);border-color:rgba(220,53,69,.28);color:var(--accent-red)}.canvas2d-craft-manager__save--error:hover{background:var(--accent-red);border-color:var(--accent-red);color:#fff}.canvas2d-craft-manager__name--conflict{color:var(--status-danger)}.canvas2d-craft-manager__name--conflict::placeholder{color:color-mix(in srgb,var(--status-danger) 50%,transparent)}.canvas2d-craft-manager__save--conflict{background:color-mix(in srgb,var(--status-danger) 10%,var(--canvas2d-surface) 90%);border-color:color-mix(in srgb,var(--status-danger) 30%,transparent);color:var(--status-danger);cursor:default;pointer-events:none}.canvas2d-craft-manager__menu{background:var(--canvas2d-surface);border:1px solid var(--canvas2d-border-strong);border-radius:var(--radius-md);box-shadow:var(--shadow-md);display:flex;flex-direction:column;left:0;margin-top:var(--space-3);max-height:240px;min-width:100%;overflow-y:auto;position:absolute;top:100%;z-index:var(--z-popover)}.canvas2d-craft-manager__menu--portal{background:var(--bg-panel);border:1px solid var(--border-color);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:var(--space-1);margin-top:0;min-width:0;padding:5px;position:fixed;z-index:var(--z-dropdown-elevated)}.canvas2d-craft-manager__menu--portal .canvas2d-craft-manager__menu-item{align-items:center;border-radius:var(--radius-sm);display:flex;font-size:var(--fs-4);overflow:hidden;padding:0}.canvas2d-craft-manager__menu--portal .canvas2d-craft-manager__menu-item:hover{background:var(--bg-hover)}.canvas2d-craft-manager__menu--portal .canvas2d-craft-manager__menu-item.is-active{background:color-mix(in srgb,var(--accent-line) 8%,transparent);color:var(--accent-text);font-weight:500}.canvas2d-craft-manager__menu--portal .canvas2d-craft-manager__menu-select{align-items:center;background:transparent;border:0;color:inherit;cursor:pointer;display:flex;flex:1 1;font-size:inherit;font-weight:inherit;min-width:0;padding:0;text-align:left}.canvas2d-craft-manager__menu--portal .canvas2d-craft-manager__menu-title{font-weight:inherit;overflow:hidden;padding:7px var(--space-3) 7px 10px;text-overflow:ellipsis;white-space:nowrap}.canvas2d-craft-manager__menu--portal .canvas2d-craft-manager__menu-delete{align-items:center;background:transparent;border:0;border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;display:flex;flex-shrink:0;height:16px;justify-content:center;margin-right:5px;opacity:0;padding:0;transition:color .14s,background .14s,opacity .14s;width:16px}.canvas2d-craft-manager__menu--portal .canvas2d-craft-manager__menu-item:hover .canvas2d-craft-manager__menu-delete{opacity:1}.canvas2d-craft-manager__menu--portal .canvas2d-craft-manager__menu-delete:hover{background:rgba(var(--red-rgb,220,53,69),.1);color:var(--red,#dc3545)}.canvas2d-craft-manager__menu--portal .canvas2d-craft-manager__menu-empty{color:var(--text-muted);font-size:var(--fs-4);padding:var(--space-5);text-align:center}.canvas2d-craft-manager__menu-item{align-items:center;background:transparent;border:0;color:var(--text-primary);cursor:pointer;display:flex;font-size:var(--fs-4);gap:var(--space-4);justify-content:space-between;padding:var(--space-4) var(--space-5);text-align:left;transition:background .12s ease,color .12s ease}.canvas2d-craft-manager__menu-item.is-active,.canvas2d-craft-manager__menu-item:hover{background:var(--bg-hover)}.canvas2d-craft-manager__menu-title{font-weight:600;min-width:0}.canvas2d-craft-manager__menu-meta{color:var(--canvas2d-text-muted);flex:0 0 auto;font-size:var(--fs-3)}.canvas2d-craft-manager__menu-empty{color:var(--canvas2d-text-muted);font-size:var(--fs-4);padding:var(--space-5)}.canvas2d-line-template-manager{max-width:none;min-width:0;width:100%}.canvas2d-line-template-manager .canvas2d-craft-manager__name[readonly]{cursor:pointer}.canvas2d-line-template-manager .canvas2d-craft-manager__save{opacity:0;pointer-events:none;transition:background .16s ease,border-color .16s ease,color .16s ease,box-shadow .16s ease,gap .22s ease,max-width .22s ease,padding .22s ease,opacity .14s ease}.canvas2d-line-template-manager:focus-within .canvas2d-craft-manager__save,.canvas2d-line-template-manager:hover .canvas2d-craft-manager__save{opacity:1;pointer-events:auto}.canvas2d-workspace-toggle{align-items:center;background:var(--bg-panel);border:1px solid var(--border-color);border-radius:var(--radius-md);display:inline-flex;gap:var(--space-2);padding:var(--space-2);position:relative}.canvas2d-workspace-toggle__pill{background:var(--accent-fill);border-radius:var(--radius-md);bottom:4px;box-shadow:none;left:var(--pill-left,4px);pointer-events:none;position:absolute;top:4px;transition:left .22s cubic-bezier(.4,0,.2,1),width .22s cubic-bezier(.4,0,.2,1);width:var(--pill-width,74px);z-index:0}.canvas2d-workspace-toggle__btn{align-items:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:none;border-radius:var(--radius-md);color:var(--text-secondary);cursor:pointer;display:inline-flex;font:inherit;font-size:var(--fs-3);font-weight:600;gap:5px;justify-content:center;line-height:1;min-height:22px;outline:none;padding:3px 9px;position:relative;white-space:nowrap;z-index:1}.canvas2d-workspace-toggle__btn:hover:not(.is-active){color:var(--text-primary)}.canvas2d-workspace-toggle__btn.is-active{color:#fff}.canvas2d-workspace-toggle__icon{align-items:center;display:inline-flex;flex:0 0 auto;justify-content:center}.canvas2d-workspace-toggle__label{display:inline-block;min-width:0;overflow:hidden}.canvas2d-shell__body{position:absolute;inset:39px 0 0;min-height:0}.canvas2d-shell--merged .canvas2d-shell__body{inset:0 0 0}.canvas2d-shell__body--saved{position:relative;inset:auto;width:100%;height:100%}.canvas2d-stage{position:relative;width:100%;height:100%;min-height:0;overflow:hidden;overscroll-behavior:contain;border:0;border-radius:0;margin:0;background-color:var(--canvas2d-surface-raised);color:var(--text-primary)}.canvas2d-stage--saved{background-color:transparent}.canvas2d-stage--assemble,.canvas2d-stage--craft,.canvas2d-stage.is-grid-hidden{background-image:none}.canvas2d-stage__svg{width:100%;height:100%;display:block}.canvas2d-stage__svg.is-draw-active,.canvas2d-stage__svg.is-pen-active{cursor:crosshair}.canvas2d-point-info-layer{inset:0;pointer-events:none;position:absolute}.canvas2d-point-info-label{border:1px solid var(--canvas2d-border-strong);border-radius:var(--radius-pill);font-size:var(--fs-3);max-width:220px;min-width:0;position:absolute;transform:translate(-50%,calc(-100% - 14px));transition:opacity .15s ease;white-space:nowrap}.canvas2d-point-info-label__inner{align-items:center;border-radius:inherit;display:inline-flex;gap:var(--space-3);padding:5px 10px}.canvas2d-point-info-editor{display:grid;grid-gap:var(--space-4);gap:var(--space-4)}.canvas2d-point-info-editor__title{color:var(--text-secondary);font-size:var(--fs-3);font-weight:600}.canvas2d-resize-handle,.canvas2d-rotate-handle{pointer-events:all}.canvas2d-shape-points{pointer-events:auto}.canvas2d-inline-toggle-grid{display:grid;grid-gap:var(--space-4);gap:var(--space-4)}.canvas2d-symmetry-overlay{pointer-events:none}.canvas2d-symmetry-axis__line{fill:none;stroke:color-mix(in srgb,var(--accent-line) 78%,white 12%);stroke-dasharray:7 5;stroke-linecap:round;stroke-width:1.55;vector-effect:non-scaling-stroke}.canvas2d-symmetry-axis__flip,.canvas2d-symmetry-axis__handle{pointer-events:all}.canvas2d-symmetry-axis__handle{cursor:-webkit-grab;cursor:grab}.canvas2d-symmetry-axis--x .canvas2d-symmetry-axis__handle{cursor:ew-resize}.canvas2d-symmetry-axis--y .canvas2d-symmetry-axis__handle{cursor:ns-resize}.canvas2d-symmetry-axis__flip-bg,.canvas2d-symmetry-axis__handle-halo{fill:rgba(26,95,180,.14);stroke:rgba(255,255,255,.96);stroke-width:1.25}.canvas2d-symmetry-axis__handle-dot{fill:#1a5fb4;stroke:rgba(255,255,255,.98);stroke-width:1.4}.canvas2d-symmetry-axis__flip{cursor:pointer}.canvas2d-symmetry-axis__flip-glyph{fill:none;stroke:#1a5fb4;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5}.canvas2d-shape-point{cursor:-webkit-grab;cursor:grab}.canvas2d-shape-point__halo{fill:rgba(26,95,180,.12);stroke:rgba(255,255,255,.9);stroke-width:2.25}.canvas2d-shape-point__dot{stroke:rgba(255,255,255,.98);stroke-width:2.5}.canvas2d-shape-point.is-smooth .canvas2d-shape-point__dot{fill:#1a5fb4}.canvas2d-shape-point.is-angular .canvas2d-shape-point__dot{fill:#d48a17}.canvas2d-shape-point.is-selected .canvas2d-shape-point__halo{fill:rgba(26,95,180,.2);stroke:rgba(255,255,255,1)}.canvas2d-shape-point.is-selected .canvas2d-shape-point__dot{stroke-width:3}.canvas2d-shape-point-handle{cursor:move}.canvas2d-shape-point-handle:hover{filter:drop-shadow(0 0 3px rgba(26,95,180,.34))}.canvas2d-prefab-inactive{opacity:.32;filter:grayscale(1) saturate(.08);pointer-events:none}.canvas2d-shape-attachment-edge{stroke:color-mix(in srgb,var(--accent-line) 82%,white 10%);stroke-width:3.4;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 6px rgba(26,95,180,.18));pointer-events:none}.canvas2d-shape-attachment-point__halo{fill:rgba(26,95,180,.16);stroke:rgba(255,255,255,.98);stroke-width:1.35}.canvas2d-shape-attachment-point__dot{fill:#1a5fb4;stroke:rgba(255,255,255,.98);stroke-width:1.8}.canvas2d-shape-edge-insert{cursor:pointer}.canvas2d-shape-edge-insert__halo{fill:rgba(26,95,180,.16);stroke:rgba(255,255,255,.96);stroke-width:2.25}.canvas2d-shape-edge-insert__dot{fill:#1a5fb4;stroke:rgba(255,255,255,.98);stroke-width:2.4}.canvas2d-shape-edge-insert__glyph{fill:none;stroke:rgba(255,255,255,.98);stroke-linecap:round;stroke-width:2.25}.canvas2d-pen-overlay{opacity:.98}.canvas2d-ai-generate-overlay{position:absolute;z-index:5;width:min(340px,78%);transform:translate(-50%,-50%);display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-5);border:1px solid var(--canvas2d-border-strong);border-radius:var(--radius-lg);background:var(--bg-panel);box-shadow:0 10px 32px rgba(15,23,42,.16);pointer-events:auto}.canvas2d-ai-generate-overlay__title{color:var(--text-primary);font-size:var(--fs-4);font-weight:600;line-height:1.35}.canvas2d-ai-generate-overlay__input{width:100%;resize:vertical;min-height:68px;padding:var(--space-3) var(--space-4);border:1px solid var(--canvas2d-border-strong);border-radius:var(--radius-md);background:var(--bg-subtle);color:var(--text-primary);font-size:var(--fs-4);font-family:inherit;line-height:1.45}.canvas2d-ai-generate-overlay__input:focus{outline:none;border-color:var(--accent-text);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent-line) 22%,transparent)}.canvas2d-ai-generate-overlay__actions{display:flex;justify-content:flex-end;gap:var(--space-3)}.canvas2d-ai-generate-overlay__btn{padding:var(--space-2) var(--space-5);border:1px solid var(--canvas2d-border-strong);border-radius:var(--radius-md);background:var(--bg-panel);color:var(--text-secondary);font-size:var(--fs-4);font-weight:600;cursor:pointer}.canvas2d-ai-generate-overlay__btn:hover{border-color:var(--border-color);color:var(--text-primary)}.canvas2d-ai-generate-overlay__btn--primary{border-color:var(--accent-text);background:var(--accent-fill);color:var(--accent-on-fill)}.canvas2d-ai-generate-overlay__btn--primary:hover{background:color-mix(in srgb,var(--accent-fill) 88%,#000 8%);border-color:var(--accent-text);color:var(--accent-on-fill)}.canvas2d-ai-generate-overlay__btn--primary:disabled{opacity:.5;cursor:not-allowed}.canvas2d-block__footer{display:flex;justify-content:space-between;gap:var(--space-8);padding:0 var(--space-7) var(--space-7);color:var(--canvas2d-text-muted);font-size:var(--fs-4);line-height:1.5}.canvas2d-controls{--canvas2d-surface:var(--bg-panel);--canvas2d-surface-raised:color-mix(in srgb,var(--bg-panel) 88%,var(--bg-subtle) 12%);--canvas2d-surface-muted:var(--bg-tertiary);--canvas2d-border:color-mix(in srgb,var(--border-color) 82%,transparent);--canvas2d-border-strong:color-mix(in srgb,var(--border-color) 94%,transparent);--canvas2d-text-muted:var(--text-secondary);--canvas2d-text-soft:var(--text-muted);display:flex;flex-direction:column;gap:0}.canvas2d-controls--fullscreen-split{height:100%;min-height:0}@media (max-width:920px){.canvas2d-editor-header{align-items:flex-start;flex-wrap:wrap}.canvas2d-editor-header__meta{width:100%}.canvas2d-editor-header__name{flex:1 1 180px;width:auto}.canvas2d-editor-header .viewport3d-editor-header__right{margin-left:auto}.canvas2d-shell__body{inset:78px 0 0}}.canvas2d-pane{min-height:0}.canvas2d-pane-empty{color:var(--text-muted,#7b8b95);font-size:var(--fs-4);padding:var(--space-8);text-align:center}.canvas2d-pane-heading{align-items:center;background:var(--canvas2d-surface-muted);border-bottom:1px solid var(--canvas2d-border);color:var(--text-primary);display:flex;flex:0 0 auto;font-size:var(--fs-3);font-weight:600;min-height:33px;padding:0 var(--space-region)}.canvas2d-pane-title{cursor:default;pointer-events:none}.canvas2d-pane--upper{min-height:140px}.canvas2d-browser-wrap{min-height:0}.canvas2d-browser-scroll{padding:var(--space-1) 0 var(--space-4)}.canvas2d-browser-scroll:has(.canvas2d-pack-library){padding:0}.canvas2d-browser-empty{color:var(--text-muted);font-size:var(--fs-3);line-height:1.5;padding:var(--space-5) var(--space-region) var(--space-region)}.canvas2d-rail-body{display:flex;flex-direction:column;gap:0;min-width:0;width:100%}.canvas2d-inline-toggles{display:flex;flex-direction:column;gap:var(--space-4)}.canvas2d-library-grid{display:grid;align-content:start;grid-gap:var(--space-4);gap:var(--space-4);flex:1 1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:var(--space-1) var(--space-region) var(--space-2)}.canvas2d-library-grid--thumbs{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-3)}.canvas2d-library-card{align-items:center;background:var(--bg-subtle);border-left-color:var(--border-color);border-left-width:1px;border:1px solid var(--border-color);border-left:3px solid color-mix(in srgb,var(--accent-line) 28%,transparent);border-radius:var(--radius-md);color:inherit;display:flex;gap:var(--space-4);justify-content:space-between;min-height:76px;min-width:0;padding:7px 10px 7px 9px;position:relative;text-align:left;transition:border-color .15s ease,background .15s ease,box-shadow .15s ease}.canvas2d-library-card:focus-within,.canvas2d-library-card:hover{border-color:color-mix(in srgb,var(--accent-line) 40%,transparent);z-index:1}.canvas2d-library-card.is-active{background:color-mix(in srgb,var(--accent-line) 8%,transparent);border-color:color-mix(in srgb,var(--accent-line) 55%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent-line) 18%,transparent)}.canvas2d-library-card__main{align-items:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;color:inherit;cursor:pointer;display:flex;flex:1 1;gap:var(--space-5);min-width:0;overflow:hidden;padding:0 30px 0 0;text-align:left}.canvas2d-library-card__thumb{display:flex;align-items:center;justify-content:center;flex-shrink:0;height:60px;width:60px;min-height:60px;border-radius:var(--radius-md);background:var(--canvas2d-surface-muted);border:1px solid var(--border-color);overflow:hidden}.canvas2d-library-card__thumb svg{display:block;width:100%;height:100%}.canvas2d-library-card__meta{display:flex;flex:1 1;flex-direction:column;gap:var(--space-1);min-width:0}.canvas2d-library-card__meta strong{font-size:var(--fs-4);font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.canvas2d-library-card__meta span{color:var(--canvas2d-text-soft);font-size:var(--fs-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.canvas2d-library-card__actions{display:flex;flex-direction:column;gap:var(--space-2);opacity:0;pointer-events:none;position:absolute;right:10px;top:50%;transform:translateY(-50%);transition:opacity .15s ease;z-index:1}.canvas2d-library-card.is-active .canvas2d-library-card__actions,.canvas2d-library-card:focus-within .canvas2d-library-card__actions,.canvas2d-library-card:hover .canvas2d-library-card__actions{opacity:1;pointer-events:auto}.canvas2d-library-grid--thumbs .canvas2d-library-card{flex-direction:column;align-items:stretch;gap:var(--space-2);min-height:0;padding:var(--space-2) var(--space-2) var(--space-3);border-left-width:1px;border-left-color:var(--border-color)}.canvas2d-library-grid--thumbs .canvas2d-library-card__main{flex-direction:column;align-items:stretch;gap:var(--space-2);padding:0}.canvas2d-library-grid--thumbs .canvas2d-library-card__thumb{width:100%;height:auto;aspect-ratio:4/3;min-height:0}.canvas2d-library-grid--thumbs .canvas2d-library-card__meta strong{font-size:var(--fs-4)}.canvas2d-library-grid--thumbs .canvas2d-library-card__meta span{font-size:var(--fs-3)}.canvas2d-library-grid--thumbs .canvas2d-library-card__actions{top:var(--space-2);right:var(--space-2);transform:none}.canvas2d-item-list{display:grid;grid-gap:0;gap:0}.canvas2d-item-list--pane{padding:0}.canvas2d-item-row{cursor:pointer;width:100%;min-width:0;border-left:none;border-right:none;border-top:none;border-radius:0;background:transparent;color:inherit;font:inherit;text-align:left}.canvas2d-item-row .viewport3d-outliner-item__label,.canvas2d-item-row:focus-visible .viewport3d-outliner-item__label,.canvas2d-item-row:focus-within .viewport3d-outliner-item__label,.canvas2d-item-row:hover .viewport3d-outliner-item__label{margin-right:0}.canvas2d-item-row .viewport3d-outliner-item__actions{position:static;top:auto;right:auto;transform:none;margin-left:auto;min-width:22px}.canvas2d-item-row .viewport3d-outliner-item__actions--child{pointer-events:none}.canvas2d-item-row .viewport3d-outliner-item__actions--child .viewport3d-outliner-item__icon{opacity:0;transition:opacity .12s ease}.canvas2d-item-row:focus-within .viewport3d-outliner-item__actions--child,.canvas2d-item-row:hover .viewport3d-outliner-item__actions--child{pointer-events:auto}.canvas2d-item-row:focus-within .viewport3d-outliner-item__actions--child .viewport3d-outliner-item__icon,.canvas2d-item-row:hover .viewport3d-outliner-item__actions--child .viewport3d-outliner-item__icon{opacity:1}.canvas2d-item-row .viewport3d-outliner-item__tree-toggle{align-items:center;background:transparent;border:none;cursor:default;display:inline-flex;justify-content:center}.canvas2d-item-row .viewport3d-outliner-item__tree-toggle:hover{background:none;color:var(--text-muted)}.canvas2d-item-row .viewport3d-outliner-item__tree-toggle:not(.is-empty):not(.is-child-gap){cursor:pointer}.canvas2d-item-row .viewport3d-outliner-item__tree-toggle:not(.is-empty):not(.is-child-gap) svg{transition:transform .12s ease}.canvas2d-item-row .viewport3d-outliner-item__tree-toggle.is-expanded svg{transform:rotate(90deg)}.canvas2d-item-row{--canvas2d-item-indent:calc(var(--canvas2d-item-depth, 0) * 14px)}.canvas2d-item-row .viewport3d-outliner-item__tree-toggle{margin-left:var(--canvas2d-item-indent)}.canvas2d-item-row--child .canvas2d-drag-handle{opacity:0;pointer-events:none}.canvas2d-item-row .viewport3d-outliner-item__tree-toggle.is-child-gap .viewport3d-outliner-item__tree-dot{opacity:0}.canvas2d-item-row .viewport3d-outliner-item__label-prefix{flex:0 1 auto;max-width:40%;min-width:0}.canvas2d-item-row .viewport3d-outliner-item__label-prefix .viewport3d-outliner-item__label-text{font-size:var(--fs-2);font-weight:700;letter-spacing:.03em}.canvas2d-drag-handle{align-items:center;color:var(--text-muted);cursor:-webkit-grab;cursor:grab;display:flex;flex-shrink:0;height:22px;justify-content:center;opacity:0;transition:opacity .12s ease;width:14px}.canvas2d-item-row:focus-within .canvas2d-drag-handle,.canvas2d-item-row:hover .canvas2d-drag-handle{opacity:1}.canvas2d-drag-handle:active{cursor:-webkit-grabbing;cursor:grabbing}.canvas2d-item-row.is-drag-over{border-top:2px solid var(--accent,#1a5fb4)}.canvas2d-visibility-btn.is-hidden{opacity:1!important;color:var(--text-muted)}.viewport3d-outliner-item__num.is-hidden{opacity:0!important}.canvas2d-item-hidden{opacity:.4}.canvas2d-empty-panel,.canvas2d-library-empty{padding:var(--space-region);border-radius:var(--radius-lg);background:var(--canvas2d-surface-muted);color:var(--canvas2d-text-soft);font-size:var(--fs-3)}.canvas2d-inspector-grid{display:grid;grid-gap:var(--space-4);gap:var(--space-4);min-width:0}.canvas2d-inspector-pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:var(--space-4);gap:var(--space-4);min-width:0}.canvas2d-inspector-pair>*{min-width:0}.canvas2d-medium-dropdown{position:relative;gap:var(--space-3)}.canvas2d-medium-dropdown__trigger{display:flex;align-items:center;justify-content:space-between;gap:var(--space-5);width:100%;min-height:32px;padding:7px 10px;border:1px solid var(--canvas2d-border);border-radius:var(--radius-md);background:var(--canvas2d-surface);color:var(--text-primary);font-size:var(--fs-5);cursor:pointer;text-align:left;transition:border-color .14s ease,background .14s ease,box-shadow .14s ease,color .14s ease}.canvas2d-medium-dropdown__trigger:hover{border-color:var(--border-color);background:var(--bg-hover)}.canvas2d-medium-dropdown__trigger.is-open{border-color:var(--accent-text,#1a5fb4);box-shadow:0 0 0 1px var(--accent-blue-tint-12,rgba(26,95,180,.12))}.canvas2d-medium-dropdown__trigger:focus-visible{border-color:var(--accent-text,#1a5fb4);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent-blue,#1a5fb4) 20%,transparent);outline:none}.canvas2d-medium-dropdown__trigger-value{display:inline-flex;align-items:center;gap:var(--space-4);min-width:0}.canvas2d-medium-dropdown__trigger-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.canvas2d-medium-dropdown__trigger-label.is-placeholder{color:var(--text-secondary)}.canvas2d-medium-dropdown__swatch{display:inline-flex;width:12px;height:12px;border-radius:var(--radius-circle);flex-shrink:0;border:1px solid var(--canvas2d-border);background:var(--canvas2d-surface-muted)}.canvas2d-medium-dropdown__swatch.is-empty{background:linear-gradient(135deg,transparent 42%,color-mix(in srgb,var(--text-muted) 46%,transparent) 42%,color-mix(in srgb,var(--text-muted) 46%,transparent) 58%,transparent 58%),var(--canvas2d-surface-muted)}.canvas2d-medium-dropdown__chevron{margin-left:auto;flex-shrink:0;opacity:.65;transition:transform .14s ease,opacity .14s ease}.canvas2d-medium-dropdown__trigger.is-open .canvas2d-medium-dropdown__chevron{opacity:.85;transform:rotate(180deg)}.canvas2d-medium-dropdown__panel{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:var(--z-menu,999);display:grid;grid-gap:var(--space-4);gap:var(--space-4);padding:var(--space-4);border:1px solid var(--border-color);border-radius:var(--radius-lg);background:var(--bg-panel-elevated,var(--canvas2d-surface));box-shadow:var(--shadow-md)}.canvas2d-medium-dropdown__actions{display:grid;grid-gap:var(--space-3);gap:var(--space-3);padding:0 0 var(--space-4);border-bottom:1px solid var(--border-color)}.canvas2d-medium-dropdown__option{width:100%;display:flex;align-items:center;justify-content:flex-start;min-height:40px;padding:9px 10px;border:1px solid transparent;border-radius:var(--radius-md);font-size:var(--fs-5);color:var(--text-primary);cursor:pointer;background:var(--canvas2d-surface);transition:background .12s ease,border-color .12s ease,color .12s ease}.canvas2d-medium-dropdown__option:hover{background:var(--bg-hover);border-color:var(--border-color)}.canvas2d-medium-dropdown__option.is-selected{border-color:var(--accent-text,#1a5fb4);background:var(--accent-blue-tint-8,rgba(26,95,180,.08))}.canvas2d-medium-dropdown__option--action{border-style:solid;border-color:rgba(14,165,168,.24);background:rgba(14,165,168,.08)}.canvas2d-medium-dropdown__option--action:hover{border-color:rgba(14,165,168,.34);background:rgba(14,165,168,.12)}.canvas2d-medium-dropdown__option-main{display:flex;align-items:center;gap:var(--space-5);min-width:0}.canvas2d-medium-dropdown__option-title{color:var(--text-primary);font-size:var(--fs-4);font-weight:600;line-height:1.2;white-space:nowrap}.canvas2d-medium-dropdown__option-icon{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:var(--radius-md);flex-shrink:0;font-size:var(--fs-4);font-weight:700}.canvas2d-medium-dropdown__option-icon--none{color:var(--text-secondary);background:var(--canvas2d-surface-muted)}.canvas2d-medium-dropdown__option-icon--action{color:var(--accent-teal,var(--accent-blue,#1a5fb4));background:color-mix(in srgb,var(--accent-teal,var(--accent-blue,#1a5fb4)) 12%,transparent)}.canvas2d-medium-dropdown__list{display:grid;grid-gap:0;gap:0;padding-top:var(--space-2);padding-right:var(--space-1);max-height:158px;overflow-y:auto}.canvas2d-medium-dropdown__section-label{padding:var(--space-1) var(--space-1) var(--space-px);color:var(--text-secondary);font-size:var(--fs-2);font-weight:700;letter-spacing:.04em;text-transform:none}.canvas2d-medium-dropdown__item{display:grid;grid-template-columns:minmax(0,1fr) 24px;align-items:center;grid-gap:var(--space-3);gap:var(--space-3);min-width:0;padding:var(--space-3) 0;border:none;border-radius:0;background:transparent;cursor:pointer;transition:background .12s ease,border-color .12s ease,box-shadow .12s ease}.canvas2d-medium-dropdown__item+.canvas2d-medium-dropdown__item{border-top:1px solid var(--canvas2d-border)}.canvas2d-medium-dropdown__item:focus-visible,.canvas2d-medium-dropdown__item:focus-within,.canvas2d-medium-dropdown__item:hover{background:var(--canvas2d-surface-muted)}.canvas2d-medium-dropdown__item.is-selected{background:var(--accent-blue-tint-8,rgba(26,95,180,.08));box-shadow:none}.canvas2d-medium-dropdown__item-main{display:flex;align-items:center;gap:var(--space-4);min-width:0}.canvas2d-medium-dropdown__item-color.viewport3d-color-field{flex-shrink:0;pointer-events:auto}.canvas2d-medium-dropdown__item-color{position:relative;z-index:1}.canvas2d-medium-dropdown__item-color .viewport3d-color-field__trigger{width:26px;height:26px;border-radius:var(--radius-md)}.canvas2d-medium-dropdown__item-name{flex:1 1;min-width:0;display:block;padding:var(--space-1) 0;background:transparent;border:none;border-radius:0;color:var(--text-primary);font-size:var(--fs-4);line-height:1.4;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.canvas2d-medium-dropdown__item.is-selected .canvas2d-medium-dropdown__item-name{color:var(--accent-text,#1a5fb4)}.canvas2d-medium-dropdown__item-main>input.canvas2d-medium-dropdown__item-name.canvas2d-medium-dropdown__item-name--editing{min-height:0;height:auto;padding:var(--space-1) 0;background:transparent;border:none;border-bottom:1px solid var(--accent-line,#1a5fb4);border-radius:0;font-size:var(--fs-4);line-height:1.4;resize:none}.canvas2d-medium-dropdown__item-main>input.canvas2d-medium-dropdown__item-name.canvas2d-medium-dropdown__item-name--editing:focus{outline:none;box-shadow:0 1px 0 0 var(--accent-blue,#1a5fb4)}.canvas2d-medium-dropdown__item-remove{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border:none;border-radius:var(--radius-md);background:transparent;color:var(--text-muted);cursor:pointer;flex-shrink:0;opacity:0;pointer-events:none;transition:background .12s ease,color .12s ease,opacity .12s ease}.canvas2d-medium-dropdown__item:focus-within .canvas2d-medium-dropdown__item-remove,.canvas2d-medium-dropdown__item:hover .canvas2d-medium-dropdown__item-remove{opacity:1;pointer-events:auto}.canvas2d-medium-dropdown__item-remove:hover{background:var(--danger-soft-bg);color:var(--status-danger)}.canvas2d-controls .el-ctrl input:not([type=range]),.canvas2d-number-field input{width:100%;border:1px solid var(--canvas2d-border);background:var(--canvas2d-surface);border-radius:var(--radius-lg);padding:9px 10px;color:var(--text-primary)}.canvas2d-controls .el-ctrl input:not([type=range])::placeholder,.canvas2d-number-field input::placeholder{color:var(--canvas2d-text-soft)}.canvas2d-slider-row{align-items:flex-start}.canvas2d-slider-row .viewport3d-bounded-slider{width:100%}.canvas2d-color-pair{display:flex;flex-wrap:wrap;justify-content:flex-start;gap:var(--space-region)}.canvas2d-color-pair,.canvas2d-color-row{align-items:flex-start}.canvas2d-infill-section{display:grid;grid-gap:var(--space-5);gap:var(--space-5);padding:10px 5px;border:1px solid var(--canvas2d-border);border-radius:var(--radius-lg);background:var(--canvas2d-surface-muted);min-width:0}.canvas2d-infill-section__direction-row,.canvas2d-infill-section__header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);min-width:0}.canvas2d-infill-section__direction-label{font-size:var(--fs-3);color:var(--text-secondary);flex-shrink:0}.canvas2d-infill-section__title{font-size:var(--fs-4);font-weight:600;color:var(--text-primary);flex:1 1 auto}.canvas2d-infill-cards{display:grid;grid-gap:var(--space-4);gap:var(--space-4);min-width:0}.canvas2d-infill-card{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-3) 7px 8px;border:1px solid var(--canvas2d-border);border-radius:var(--radius-lg);background:var(--canvas2d-surface);min-width:0;transition:border-color .12s ease,box-shadow .12s ease}.canvas2d-infill-card__name-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);min-width:0}.canvas2d-infill-card__actions{display:flex;align-items:center;gap:var(--space-px);flex-shrink:0;max-width:0;overflow:hidden;opacity:0;pointer-events:none;transition:max-width .12s ease,opacity .12s ease}.canvas2d-infill-card:hover .canvas2d-infill-card__actions{max-width:64px;opacity:1;pointer-events:auto}.canvas2d-infill-card__action-btn{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;padding:0;border:none;background:transparent;color:var(--text-secondary);cursor:pointer;border-radius:var(--radius-sm);transition:background 80ms ease,color 80ms ease}.canvas2d-infill-card__action-btn:hover{background:var(--bg-dark);color:var(--text-primary)}.canvas2d-infill-card__action-btn:disabled{opacity:.28;cursor:default;pointer-events:none}.canvas2d-infill-card__remove-btn{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;padding:0;border:none;background:transparent;color:var(--accent-red);cursor:pointer;border-radius:var(--radius-sm);transition:background 80ms ease}.canvas2d-infill-card__remove-btn:hover{background:var(--danger-soft-bg,rgba(239,68,68,.08))}.canvas2d-infill-card__body{display:grid;grid-template-columns:46px minmax(0,1fr);grid-gap:var(--space-4);gap:var(--space-4);align-items:start;min-width:0}.canvas2d-anchor-marker{transition:r .1s ease,opacity .1s ease;pointer-events:none}.canvas2d-connector-extend{pointer-events:all}.canvas2d-connector-extend__halo{fill:color-mix(in srgb,var(--bg-panel) 76%,var(--accent-text) 24%);stroke:color-mix(in srgb,var(--accent-line) 62%,white 38%);stroke-width:1.4;transition:fill .1s ease,stroke .1s ease}.canvas2d-connector-extend__glyph{fill:none;stroke:color-mix(in srgb,var(--accent-line) 78%,black 22%);stroke-width:2;stroke-linecap:round;transition:stroke .1s ease}.canvas2d-connector-extend:hover .canvas2d-connector-extend__halo{fill:color-mix(in srgb,var(--bg-panel) 58%,var(--accent-text) 42%);stroke:var(--accent-line)}.canvas2d-connector-extend:hover .canvas2d-connector-extend__glyph{stroke:var(--text-primary)}.canvas2d-point-lock{pointer-events:all}.canvas2d-point-lock__halo{fill:color-mix(in srgb,var(--bg-panel) 82%,var(--text-muted) 18%);stroke:color-mix(in srgb,var(--border-color) 55%,var(--text-muted) 45%);stroke-width:1.4;transition:fill .1s ease,stroke .1s ease}.canvas2d-point-lock__glyph{fill:none;stroke:var(--text-muted);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;transition:stroke .1s ease}.canvas2d-point-lock:hover .canvas2d-point-lock__halo{fill:color-mix(in srgb,var(--bg-panel) 68%,var(--text-muted) 32%);stroke:var(--text-primary)}.canvas2d-point-lock:hover .canvas2d-point-lock__glyph{stroke:var(--text-primary)}.canvas2d-point-lock.is-locked .canvas2d-point-lock__halo{fill:color-mix(in srgb,var(--bg-panel) 60%,#f59e0b 40%);stroke:#f59e0b;box-shadow:0 0 0 2px color-mix(in srgb,transparent 70%,#f59e0b 30%)}.canvas2d-point-lock.is-locked .canvas2d-point-lock__glyph{stroke:#b45309}.canvas2d-point-lock.is-locked:hover .canvas2d-point-lock__halo{fill:color-mix(in srgb,var(--bg-panel) 40%,#f59e0b 60%);stroke:#d97706}.canvas2d-point-lock.is-locked:hover .canvas2d-point-lock__glyph{stroke:#92400e}.canvas2d-snap-highlight{pointer-events:none;filter:drop-shadow(0 0 7px rgba(26,95,180,.35))}.canvas2d-snap-highlight__edge{stroke:color-mix(in srgb,var(--accent-line) 85%,white 15%);stroke-width:4.5;stroke-linecap:round;stroke-linejoin:round;opacity:.95}.canvas2d-snap-highlight__halo{fill:rgba(26,95,180,.16);stroke:var(--accent-line);stroke-width:1.6;opacity:.95}.canvas2d-snap-highlight__dot{fill:var(--accent-text);stroke:rgba(255,255,255,.98);stroke-width:1.9;opacity:.95}.canvas2d-infill-card__thumbnail-shell{position:relative;width:46px;height:46px}.canvas2d-infill-card__swatch-btn{display:inline-flex;align-items:center;justify-content:center;width:46px;height:46px;padding:0;border:1px solid var(--canvas2d-border);border-radius:var(--radius-lg);background:var(--canvas2d-surface-muted);color:var(--text-primary);cursor:pointer;overflow:hidden;transition:border-color .12s ease,box-shadow .12s ease}.canvas2d-infill-card__swatch-btn.is-open,.canvas2d-infill-card__swatch-btn:focus-visible,.canvas2d-infill-card__swatch-btn:hover{border-color:rgba(26,95,180,.55);box-shadow:inset 0 0 0 1px rgba(26,95,180,.22);outline:none}.canvas2d-infill-card__color-field{position:absolute;left:3px;bottom:3px;z-index:1}.canvas2d-infill-card__color-field .viewport3d-color-field__trigger{width:20px;height:20px;border-radius:var(--radius-md);background:color-mix(in srgb,var(--bg-panel) 92%,#fff 8%);box-shadow:none}.canvas2d-infill-card__color-field .viewport3d-color-field__trigger-swatch{width:11px;height:11px}.canvas2d-infill-card__sliders{display:grid;grid-gap:5px;gap:5px;min-width:0}.canvas2d-infill-card__content{display:grid;grid-gap:var(--space-4);gap:var(--space-4);min-width:0}.canvas2d-infill-card__name{font-size:var(--fs-4);font-weight:600;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}span.canvas2d-infill-card__name{cursor:default;display:block;flex:1 1;min-width:0;padding:0 var(--space-1);border-radius:var(--radius-sm);line-height:1.4}span.canvas2d-infill-card__name:hover{outline:1px solid var(--canvas2d-border);outline-offset:0}input.canvas2d-infill-card__name--editing{background:var(--canvas2d-surface);border:1px solid rgba(26,95,180,.55);border-radius:var(--radius-sm);padding:0 var(--space-1);flex:1 1;min-width:0;width:0;outline:none;font-family:inherit;font-size:var(--fs-4);font-weight:600;color:var(--text-primary);line-height:1.4;box-shadow:inset 0 0 0 1px rgba(26,95,180,.18)}.canvas2d-infill-card__content .viewport3d-bounded-slider{min-width:0}.canvas2d-infill-card__content .viewport3d-bounded-slider__edge{font-size:var(--fs-2)}.canvas2d-infill-card__content .viewport3d-bounded-slider__value-badge{min-width:30px;min-height:20px;padding:0 var(--space-4);font-size:var(--fs-3)}.canvas2d-infill-thumb{width:100%;height:100%;display:block;flex:0 0 auto;color:var(--text-primary)}.canvas2d-infill-picker{z-index:9999}.canvas2d-infill-picker__head{padding-bottom:var(--space-5)}.canvas2d-infill-picker__body{display:grid;grid-gap:var(--space-region);gap:var(--space-region)}.canvas2d-infill-picker__grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:var(--space-3);gap:var(--space-3)}.canvas2d-infill-picker__option{border:1px solid var(--canvas2d-border);background:var(--canvas2d-surface-muted);color:var(--text-primary);border-radius:var(--radius-lg);padding:7px var(--space-3) var(--space-3);display:grid;grid-gap:5px;gap:5px;text-align:center;cursor:pointer;transition:border-color .1s ease,background .1s ease}.canvas2d-infill-picker__option .canvas2d-infill-thumb{width:100%;height:auto;aspect-ratio:1}.canvas2d-infill-picker__option span{font-size:var(--fs-2);line-height:1.25}.canvas2d-infill-picker__option.is-active{border-color:rgba(26,95,180,.7);background:var(--accent-blue-tint-8,rgba(26,95,180,.06));box-shadow:inset 0 0 0 1px rgba(26,95,180,.45)}.canvas2d-infill-picker__option:focus-visible,.canvas2d-infill-picker__option:hover{border-color:rgba(26,95,180,.55);background:var(--canvas2d-surface)}.canvas2d-controls .el-ctrl-action-btn{border-radius:var(--radius-md);padding:var(--space-4) var(--space-5)}.canvas2d-controls .canvas2d-library-card__actions .viewport3d-asset-icon-btn{border-radius:var(--radius-sm);height:20px;width:20px}.canvas2d-section__chevron{font-size:var(--fs-8);line-height:1;color:var(--canvas2d-text-soft)}@media (max-width:760px){.canvas2d-block__footer,.canvas2d-block__header{flex-direction:column;align-items:stretch}.canvas2d-stage{margin:var(--space-region)}.canvas2d-library-card__main{padding-right:var(--space-11)}}.canvas2d-select{position:relative}.canvas2d-select-trigger{align-items:center;background:var(--bg-panel);border:1px solid var(--border-color);border-radius:var(--radius-md);box-sizing:border-box;color:var(--text-primary);cursor:pointer;display:flex;font-family:inherit;font-size:var(--fs-5);justify-content:space-between;line-height:1.4;min-height:32px;outline:none;padding:7px 10px;text-align:left;transition:background .1s ease,border-color .1s ease,box-shadow .1s ease;width:100%}.canvas2d-select-trigger:hover:not(:disabled){background:var(--bg-hover);border-color:color-mix(in srgb,var(--accent-line) 50%,transparent)}.canvas2d-select-trigger.is-open,.canvas2d-select-trigger:focus-visible:not(:disabled){border-color:var(--accent-text)}.canvas2d-select-trigger:disabled{cursor:not-allowed;opacity:.6}.canvas2d-select-value{flex:1 1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.canvas2d-select-chevron{color:var(--text-secondary);flex-shrink:0;margin-left:var(--space-4);transition:transform .2s ease}.canvas2d-select-trigger.is-open .canvas2d-select-chevron{transform:rotate(180deg)}.canvas2d-select-menu{flex-direction:column;overflow-y:auto;max-height:240px}.canvas2d-assemble-strip{position:absolute;bottom:0;left:0;right:0;z-index:30;display:flex;flex-direction:column;gap:0;background:var(--canvas2d-surface);border-top:1px solid var(--canvas2d-border);box-shadow:0 -6px 16px -12px rgba(0,0,0,.28)}.canvas2d-assemble-strip__bar{display:flex;align-items:center;gap:var(--space-2);min-height:26px;padding:2px var(--space-2);flex:0 0 auto}.canvas2d-assemble-strip__collapse{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;padding:0;border:1px solid transparent;border-radius:var(--radius-sm,4px);background:transparent;color:var(--text-secondary);cursor:pointer}.canvas2d-assemble-strip__collapse:focus-visible,.canvas2d-assemble-strip__collapse:hover{background:color-mix(in srgb,var(--accent,#1a5fb4) 8%,transparent);border-color:color-mix(in srgb,var(--accent,#1a5fb4) 55%,transparent);color:var(--accent,#1a5fb4)}.canvas2d-assemble-strip__label{font-size:var(--fs-3,12px);font-weight:600;color:var(--text-secondary);white-space:nowrap}.canvas2d-assemble-strip__body{display:flex;max-height:168px;min-height:0;overflow:hidden;transition:max-height .3s cubic-bezier(.22,1,.36,1);border-top:1px solid var(--canvas2d-border)}.canvas2d-assemble-strip__body.is-collapsed{max-height:0;border-top-color:transparent}.canvas2d-assemble-strip__scroll{display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-3);overflow-x:auto;overflow-y:hidden;min-width:0;width:100%}.canvas2d-assemble-strip__thumb{flex:0 0 148px;width:148px;border:1px solid var(--canvas2d-border);border-radius:var(--radius-md);background:var(--canvas2d-surface-raised);overflow:hidden;cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease}.canvas2d-assemble-strip__thumb:hover{border-color:color-mix(in srgb,var(--accent,#1a5fb4) 45%,transparent)}.canvas2d-assemble-strip__thumb.is-active{border-color:var(--accent,#1a5fb4);box-shadow:0 0 0 1px color-mix(in srgb,var(--accent,#1a5fb4) 60%,transparent)}.canvas2d-assemble-strip__thumb-svg{width:100%;height:92px;background:#fff;overflow:hidden;pointer-events:none}.canvas2d-assemble-strip__thumb-svg svg{width:100%;height:100%;display:block}.canvas2d-assemble-strip__thumb-footer{display:flex;align-items:center;gap:var(--space-1);padding:4px 6px;min-height:26px}.canvas2d-assemble-strip__name{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;border:0;background:transparent;font-size:var(--fs-3,12px);font-weight:600;color:var(--text-primary);cursor:text;padding:0}.canvas2d-assemble-strip__name:hover{color:var(--accent,#1a5fb4)}.canvas2d-assemble-strip__rename{flex:1 1 auto;min-width:0;border:1px solid color-mix(in srgb,var(--accent,#1a5fb4) 55%,transparent);border-radius:var(--radius-sm,4px);background:var(--canvas2d-surface);font-size:var(--fs-3,12px);color:var(--text-primary);padding:1px 4px}.canvas2d-assemble-strip__remove{flex:0 0 auto;width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:var(--radius-sm,4px);background:transparent;color:var(--text-muted);font-size:14px;line-height:1;cursor:pointer;opacity:0;transition:opacity .15s ease,color .15s ease}.canvas2d-assemble-strip__remove:focus-visible,.canvas2d-assemble-strip__thumb:hover .canvas2d-assemble-strip__remove{opacity:1}.canvas2d-assemble-strip__remove:hover{color:#d64545;background:color-mix(in srgb,#d64545 10%,transparent)}.canvas2d-assemble-strip__add{flex:0 0 148px;width:148px;height:118px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border:1px dashed var(--canvas2d-border-strong);border-radius:var(--radius-md);background:transparent;color:var(--text-secondary);cursor:pointer;transition:border-color .15s ease,color .15s ease,background .15s ease}.canvas2d-assemble-strip__add:focus-visible,.canvas2d-assemble-strip__add:hover{border-color:color-mix(in srgb,var(--accent,#1a5fb4) 60%,transparent);color:var(--accent,#1a5fb4);background:color-mix(in srgb,var(--accent,#1a5fb4) 6%,transparent)}.canvas2d-assemble-strip__add-icon{font-size:22px;font-weight:300;line-height:1}.canvas2d-assemble-strip__add-label{font-size:var(--fs-3,12px)}.canvas2d-saved-assemble-nav{position:absolute;bottom:10px;left:50%;transform:translateX(-50%);z-index:30;display:flex;align-items:center;gap:var(--space-2);padding:4px 8px;border:1px solid var(--canvas2d-border);border-radius:var(--radius-pill);background:color-mix(in srgb,var(--canvas2d-surface) 92%,transparent);box-shadow:0 4px 14px -8px rgba(0,0,0,.3);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.canvas2d-saved-assemble-nav__btn{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;border:0;border-radius:var(--radius-sm,4px);background:transparent;color:var(--text-secondary);cursor:pointer}.canvas2d-saved-assemble-nav__btn:hover:not(:disabled){background:color-mix(in srgb,var(--accent,#1a5fb4) 8%,transparent);color:var(--accent,#1a5fb4)}.canvas2d-saved-assemble-nav__btn:disabled{opacity:.35;cursor:default}.canvas2d-saved-assemble-nav__dots{display:flex;align-items:center;gap:6px}.canvas2d-saved-assemble-nav__dot{width:8px;height:8px;padding:0;border:0;border-radius:50%;background:color-mix(in srgb,var(--text-secondary) 35%,transparent);cursor:pointer;transition:background .15s ease,transform .15s ease}.canvas2d-saved-assemble-nav__dot:hover{background:var(--text-secondary)}.canvas2d-saved-assemble-nav__dot.is-active{background:var(--accent,#1a5fb4);transform:scale(1.25)}.canvas2d-nav{position:absolute;left:14px;bottom:12px;display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-3);z-index:50;pointer-events:none}.canvas2d-nav__minimap-wrap{background:var(--bg-panel);border:1px solid var(--border-color);border-radius:var(--radius-md);height:176px;opacity:0;overflow:hidden;pointer-events:none;position:relative;transform:translateY(6px);transition:opacity .22s ease 1s,transform .22s ease 1s,pointer-events 0s linear 1s;width:176px}.canvas2d-nav--pinned .canvas2d-nav__minimap-wrap,.canvas2d-nav:has(.canvas2d-nav__zoom:hover) .canvas2d-nav__minimap-wrap{opacity:1;pointer-events:auto;transform:none;transition:opacity .22s ease 0s,transform .22s ease 0s,pointer-events 0s linear 0s}.canvas2d-nav__minimap{display:block;height:176px;width:176px;cursor:crosshair;touch-action:none;pointer-events:auto}.canvas2d-nav__fit-btn{align-items:center;background:var(--bg-panel);border:1px solid var(--border-color);border-radius:var(--radius-sm);bottom:6px;color:var(--text-secondary);cursor:pointer;display:flex;height:22px;justify-content:center;padding:0;position:absolute;right:6px;transition:background .12s,border-color .12s,color .12s;width:22px}.canvas2d-nav__fit-btn:hover{background:var(--bg-hover);border-color:var(--accent-text);color:var(--accent-text)}.canvas2d-nav__zoom{background:var(--bg-panel);box-shadow:none;gap:var(--space-2);padding:4px;pointer-events:auto;position:relative}.canvas2d-nav__zoom,.canvas2d-nav__zoom-btn{align-items:center;border:1px solid var(--border-color);border-radius:var(--radius-md);display:flex}.canvas2d-nav__zoom-btn{background:var(--bg-subtle);cursor:pointer;font-size:var(--fs-7);font-weight:500;height:22px;justify-content:center;line-height:1;padding:0;transition:background .12s,border-color .12s;width:26px}.canvas2d-nav__zoom-reset{font-size:var(--fs-4)}.canvas2d-nav__zoom-level{color:var(--text-secondary);font-size:var(--fs-3);font-weight:600;min-width:38px;text-align:center}.canvas2d-nav__pin-btn{color:var(--text-muted)}.canvas2d-nav__pin-btn--active{background:var(--bg-panel)!important; /* !important needed: overrides parent :hover selector specificity */border-color:var(--border-color)!important; /* !important needed: overrides parent :hover selector specificity */color:var(--text-primary)!important /* !important needed: overrides parent :hover selector specificity */}.canvas2d-nav__pin-btn--active:hover{background:var(--bg-dark)!important /* !important needed: overrides parent :hover selector specificity */}.canvas2d-nav__zoom .canvas2d-nav__pin-btn,.canvas2d-nav__zoom .canvas2d-nav__zoom-in,.canvas2d-nav__zoom .canvas2d-nav__zoom-out,.canvas2d-nav__zoom .canvas2d-nav__zoom-reset{border-width:0!important;margin:0;min-width:0!important;opacity:0;overflow:hidden;padding:0!important;transition:width .4s cubic-bezier(.175,.885,.32,1.1) 1s,opacity .3s ease 1s,border-width .3s ease 1s,margin .4s cubic-bezier(.175,.885,.32,1.1) 1s,color .12s,border-color .12s,background .12s!important;width:0!important}.canvas2d-nav__zoom .canvas2d-nav__zoom-in{margin-right:-4px!important}.canvas2d-nav__zoom .canvas2d-nav__zoom-out,.canvas2d-nav__zoom .canvas2d-nav__zoom-reset{margin-left:-4px!important}.canvas2d-nav--pinned .canvas2d-nav__zoom .canvas2d-nav__pin-btn,.canvas2d-nav--pinned .canvas2d-nav__zoom .canvas2d-nav__zoom-in,.canvas2d-nav--pinned .canvas2d-nav__zoom .canvas2d-nav__zoom-out,.canvas2d-nav--pinned .canvas2d-nav__zoom .canvas2d-nav__zoom-reset,.canvas2d-nav:has(.canvas2d-nav__zoom:hover) .canvas2d-nav__zoom .canvas2d-nav__pin-btn,.canvas2d-nav:has(.canvas2d-nav__zoom:hover) .canvas2d-nav__zoom .canvas2d-nav__zoom-in,.canvas2d-nav:has(.canvas2d-nav__zoom:hover) .canvas2d-nav__zoom .canvas2d-nav__zoom-out,.canvas2d-nav:has(.canvas2d-nav__zoom:hover) .canvas2d-nav__zoom .canvas2d-nav__zoom-reset{border-width:1px!important;margin-left:0!important;margin-right:0!important;opacity:1;transition:width .4s cubic-bezier(.175,.885,.32,1.1) 0s,opacity .3s ease 0s,border-width .3s ease 0s,margin .4s cubic-bezier(.175,.885,.32,1.1) 0s,color .12s,border-color .12s,background .12s!important;width:26px!important}.canvas2d-nav__zoom .canvas2d-nav__zoom-reset svg{flex-shrink:0}.canvas2d-craft-bound-manager{position:absolute;z-index:38;width:max-content;max-width:calc(100% - var(--space-10))}.canvas2d-craft-bound-manager--top{transform:translate(-50%,calc(-100% - 10px))}.canvas2d-craft-bound-manager__label{display:flex;align-items:center;gap:4px;height:20px;padding:0 5px;border:1px solid var(--border-color);border-radius:var(--radius-md);background:var(--bg-panel);color:var(--text-primary);font-size:11px;line-height:1;white-space:nowrap;max-width:200px;transition:border-color .15s}.canvas2d-craft-bound-manager--top:hover .canvas2d-craft-bound-manager__label{border-color:var(--grid-border-color)}.canvas2d-craft-bound-manager__label-pack{color:var(--accent-text);font-weight:500;flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.canvas2d-craft-bound-manager__label-sep{color:var(--text-secondary);opacity:.6;flex:0 0 auto}.canvas2d-craft-bound-manager__label-name{color:var(--text-primary);font-weight:500;flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.canvas2d-craft-bound-manager__row,.canvas2d-craft-bound-manager__tools{display:flex;align-items:center;gap:var(--space-2);min-width:0}.canvas2d-craft-bound-manager__row{gap:0;height:34px;border:1px solid var(--border-color);border-radius:var(--radius-md);background:var(--bg-panel);transition:border-color .15s}.canvas2d-craft-bound-manager__row:focus-within,.canvas2d-craft-bound-manager__row:hover{border-color:var(--grid-border-color)}.viewport3d-editor-header__bound-editor .canvas2d-craft-bound-manager__label{align-items:center;display:flex;height:28px}.viewport3d-editor-header__bound-editor .canvas2d-craft-bound-manager__row{height:28px}.viewport3d-editor-header__bound-editor .canvas2d-craft-bound-manager__chevron,.viewport3d-editor-header__bound-editor .canvas2d-craft-bound-manager__name{height:26px}.canvas2d-craft-bound-manager__trigger{position:relative;display:flex;flex-shrink:0}.canvas2d-craft-bound-manager__chevron{align-items:center;background:transparent;border:none;color:var(--text-secondary);cursor:pointer;display:flex;height:32px;justify-content:center;padding:0;transition:background .12s,color .12s;width:28px}.canvas2d-craft-bound-manager__trigger:first-child .canvas2d-craft-bound-manager__chevron{border-right:1px solid var(--border-color);border-radius:var(--radius-md) 0 0 var(--radius-md)}.canvas2d-craft-bound-manager__trigger:last-child .canvas2d-craft-bound-manager__chevron{border-left:1px solid var(--border-color);border-radius:0 var(--radius-md) var(--radius-md) 0}.canvas2d-craft-bound-manager__chevron.is-open,.canvas2d-craft-bound-manager__chevron:hover{background:var(--bg-dark);color:var(--text-primary)}.canvas2d-craft-bound-manager__name-wrap{display:flex;flex:1 1;min-width:130px;max-width:220px;align-items:center;position:relative}.canvas2d-craft-bound-manager__name{background:transparent;border:none;outline:none;color:var(--text-primary);font:inherit;font-size:var(--fs-5);height:32px;width:100%;padding:0 var(--space-5) 0 var(--space-4)}.canvas2d-craft-bound-manager__name--with-save{padding-right:42px}.canvas2d-craft-bound-manager__name::placeholder{color:var(--text-muted)}.canvas2d-craft-bound-manager__save{align-items:center;background:var(--accent-fill);border:1px solid var(--accent-line);border-radius:var(--radius-sm);color:var(--accent-on-fill);cursor:pointer;display:flex;font-size:var(--fs-3);font-weight:600;gap:0;height:24px;justify-content:center;max-width:24px;min-width:24px;overflow:hidden;padding:0 var(--space-3);position:absolute;right:4px;top:50%;transform:translateY(-50%);transition:background .16s,border-color .16s,color .16s,box-shadow .16s,gap .22s ease,max-width .22s ease,padding .22s ease}.canvas2d-craft-bound-manager__save:hover{background:var(--accent-fill-hover);border-color:var(--accent-fill-hover);color:var(--text-on-accent);gap:var(--space-3);max-width:76px;padding:0 9px}.canvas2d-craft-bound-manager__save-icon{align-items:center;display:inline-flex;flex:0 0 auto;justify-content:center}.canvas2d-craft-bound-manager__save-label{max-width:0;overflow:hidden;line-height:1;transition:max-width .22s ease;white-space:nowrap}.canvas2d-craft-bound-manager__save:hover .canvas2d-craft-bound-manager__save-label{max-width:34px}.canvas2d-craft-bound-manager__menu{position:absolute;top:calc(100% + 5px);left:0;min-width:160px;z-index:200;display:flex;flex-direction:column;gap:var(--space-1);padding:5px;background:var(--bg-panel);border:1px solid var(--border-color);border-radius:var(--radius-md);box-shadow:var(--shadow-sm)}.canvas2d-craft-bound-manager__trigger:last-child .canvas2d-craft-bound-manager__menu{left:auto;right:0}.canvas2d-craft-bound-manager__menu-item{align-items:center;background:transparent;border:none;border-radius:var(--radius-sm);color:var(--text-primary);cursor:pointer;display:flex;font-size:var(--fs-4);padding:var(--space-3) var(--space-4);text-align:left;transition:background .12s;width:100%}.canvas2d-craft-bound-manager__menu-item:hover{background:var(--bg-hover)}.canvas2d-craft-bound-manager__menu-item.is-active{background:color-mix(in srgb,var(--accent-line) 8%,transparent);color:var(--accent-text);font-weight:600}.canvas2d-craft-bound-manager__menu-empty{color:var(--text-muted);font-size:var(--fs-4);padding:var(--space-3) var(--space-4)}.canvas2d-craft-bound-manager__tools{display:flex;align-items:center;justify-content:center;gap:var(--space-2)}.canvas2d-craft-bound-manager__tool{align-items:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:1px solid transparent;border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;display:inline-flex;font:inherit;font-size:var(--fs-3);font-weight:600;height:24px;justify-content:center;line-height:1;min-width:24px;outline:none;overflow:hidden;padding:0;transition:background .15s ease,border-color .15s ease,color .15s ease}.canvas2d-craft-bound-manager__tool:hover{background:var(--bg-hover,rgba(74,144,226,.08));border-color:color-mix(in srgb,var(--border-color) 80%,transparent);color:var(--text-primary)}.canvas2d-craft-bound-manager__tool.is-stop{color:var(--status-danger)}.canvas2d-craft-bound-manager__tool.is-stop:hover{background:color-mix(in srgb,var(--status-danger) 12%,transparent);border-color:color-mix(in srgb,var(--status-danger) 42%,transparent);color:var(--status-danger)}.canvas2d-craft-bound-manager__tool-icon{align-items:center;display:inline-flex;flex:0 0 24px;height:24px;justify-content:center;width:24px}.canvas2d-craft-bound-manager__tool-label-wrap{display:grid;grid-template-columns:0fr;margin-left:0;min-width:0;opacity:0;transition:grid-template-columns .2s cubic-bezier(.4,0,.2,1),margin-left .2s cubic-bezier(.4,0,.2,1),opacity .16s ease}.canvas2d-craft-bound-manager__tool-label-wrap>.canvas2d-craft-bound-manager__tool-label{min-width:0}.canvas2d-craft-bound-manager__tool.is-active .canvas2d-craft-bound-manager__tool-label-wrap,.canvas2d-craft-bound-manager__tool:hover .canvas2d-craft-bound-manager__tool-label-wrap{grid-template-columns:1fr;margin-left:var(--space-px);opacity:1}.canvas2d-craft-bound-manager__tool-label{display:inline-block;min-width:0;overflow:hidden;padding-right:var(--space-3);white-space:nowrap}.canvas2d-craft-bound-generating{pointer-events:none}.canvas2d-craft-bound-generating__sweep{transform-box:fill-box;transform:translateX(-50%);animation:canvas2d-craft-bound-generating-sweep 1.5s ease-in-out infinite}@keyframes canvas2d-craft-bound-generating-sweep{0%{transform:translateX(-50%)}to{transform:translateX(150%)}}.canvas2d-craft-bound-generating__border{stroke:var(--accent-line);stroke-width:1.75;stroke-dasharray:7 5;animation:canvas2d-craft-bound-generating-border 1.6s ease-in-out infinite}@keyframes canvas2d-craft-bound-generating-border{0%,to{opacity:.7}50%{opacity:1}}.canvas2d-craft-bound-generating__pill{fill:var(--bg-panel);stroke:var(--border-color);filter:drop-shadow(0 2px 6px rgba(0,0,0,.12))}.canvas2d-craft-bound-generating__spinner{fill:none;stroke:var(--accent-line);stroke-width:2.2;stroke-linecap:round;stroke-dasharray:30 20;transform-box:fill-box;transform-origin:center;animation:canvas2d-craft-bound-generating-spin .85s linear infinite}@keyframes canvas2d-craft-bound-generating-spin{to{transform:rotate(1turn)}}.canvas2d-craft-bound-generating__text{fill:var(--text-secondary);font-size:11px;font-weight:600;letter-spacing:.02em}.canvas2d-craft-bound-generating__stop{cursor:pointer}.canvas2d-craft-bound-generating__stop-btn{fill:color-mix(in srgb,var(--status-danger) 12%,var(--bg-panel));stroke:color-mix(in srgb,var(--status-danger) 42%,transparent);transition:fill .15s,stroke .15s}.canvas2d-craft-bound-generating__stop:hover .canvas2d-craft-bound-generating__stop-btn{fill:color-mix(in srgb,var(--status-danger) 22%,var(--bg-panel));stroke:color-mix(in srgb,var(--status-danger) 60%,transparent)}.canvas2d-craft-bound-generating__stop-icon{fill:var(--status-danger)}.canvas2d-craft-bound-generating__stop-text{fill:var(--status-danger);font-size:10px;font-weight:600;letter-spacing:.02em}@media (prefers-reduced-motion:reduce){.canvas2d-craft-bound-generating__border,.canvas2d-craft-bound-generating__spinner,.canvas2d-craft-bound-generating__sweep{animation:none}.canvas2d-craft-bound-generating__sweep{transform:none}.canvas2d-craft-bound-generating__border{opacity:1}}.canvas2d-craft-bound-review{pointer-events:none}.canvas2d-craft-bound-review__pill{fill:var(--bg-panel);stroke:var(--border-color);filter:drop-shadow(0 2px 6px rgba(0,0,0,.12))}.canvas2d-craft-bound-review__text{fill:var(--text-secondary);font-size:11px;font-weight:600;letter-spacing:.02em}.canvas2d-craft-bound-review__confirm{cursor:pointer}.canvas2d-craft-bound-review__confirm-btn{fill:color-mix(in srgb,var(--accent-text) 16%,var(--bg-panel));stroke:color-mix(in srgb,var(--accent-line) 50%,transparent);transition:fill .15s,stroke .15s}.canvas2d-craft-bound-review__confirm:hover .canvas2d-craft-bound-review__confirm-btn{fill:color-mix(in srgb,var(--accent-text) 28%,var(--bg-panel));stroke:color-mix(in srgb,var(--accent-line) 70%,transparent)}.canvas2d-craft-bound-review__confirm-text{fill:var(--accent-text);font-size:10px;font-weight:600;letter-spacing:.02em}.canvas2d-craft-bound-review__retry{cursor:pointer}.canvas2d-craft-bound-review__retry-btn{fill:color-mix(in srgb,var(--text-secondary) 10%,var(--bg-panel));stroke:color-mix(in srgb,var(--text-secondary) 40%,transparent);transition:fill .15s,stroke .15s}.canvas2d-craft-bound-review__retry:hover .canvas2d-craft-bound-review__retry-btn{fill:color-mix(in srgb,var(--text-secondary) 20%,var(--bg-panel));stroke:color-mix(in srgb,var(--text-secondary) 60%,transparent)}.canvas2d-craft-bound-review__retry-text{fill:var(--text-secondary);font-size:10px;font-weight:600;letter-spacing:.02em}.canvas2d-tool-rail{position:absolute;z-index:34;top:12px;left:12px;display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-2);border:1px solid var(--border-color);border-radius:var(--radius-md);background:color-mix(in srgb,var(--bg-panel) 94%,transparent);box-shadow:none;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.canvas2d-tool-rail__item{display:flex}.canvas2d-tool-rail__item--divider{padding-bottom:var(--space-2);margin-bottom:var(--space-1);border-bottom:1px solid var(--border-color)}.canvas2d-tool-rail__button{display:inline-flex;align-items:center;justify-content:flex-start;gap:0;width:auto;min-width:32px;height:32px;padding:0 var(--space-3);overflow:hidden;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);cursor:pointer;transition:gap .18s ease}.canvas2d-tool-rail__label{max-width:0;opacity:0;overflow:hidden;white-space:nowrap;font-size:var(--fs-3);transition:max-width .18s ease,opacity .18s ease}.canvas2d-tool-rail:hover .canvas2d-tool-rail__button{gap:var(--space-2)}.canvas2d-tool-rail:hover .canvas2d-tool-rail__label{max-width:140px;opacity:1}.canvas2d-tool-rail__button.is-active,.canvas2d-tool-rail__button:hover{border-color:color-mix(in srgb,var(--accent-line) 40%,transparent);background:color-mix(in srgb,var(--accent-line) 8%,transparent);color:var(--accent-text)}.canvas2d-tool-rail__make-wrap{position:relative;padding-top:var(--space-1)}.canvas2d-tool-rail__make{display:flex;align-items:center;gap:var(--space-3);width:108px;min-height:30px;padding:0 var(--space-4);border:1px solid color-mix(in srgb,var(--accent-line) 40%,transparent);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--accent-line) 8%,transparent);color:var(--accent-text);font:inherit;font-size:var(--fs-3);font-weight:600;cursor:pointer}.canvas2d-tool-rail__make-menu{position:absolute;top:0;left:calc(100% + var(--space-3));display:grid;width:170px;padding:var(--space-2);border:1px solid var(--border-color);border-radius:var(--radius-md);background:var(--bg-panel);box-shadow:var(--shadow-md)}.canvas2d-tool-rail__make-menu button{min-height:30px;padding:0 var(--space-4);border:0;border-radius:var(--radius-sm);background:transparent;color:var(--text-primary);text-align:left;cursor:pointer}.canvas2d-tool-rail__make-menu button:hover{background:var(--bg-hover)}.canvas2d-pack-library{display:flex;flex-direction:column;height:100%;min-height:0}.canvas2d-pack-library__footer{flex-shrink:0;border-top:1px solid var(--border-color);background:var(--bg-panel);padding:var(--space-2) var(--space-region) var(--space-region)}.canvas2d-pack-library__header-row{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-region) var(--space-region) var(--space-2)}.canvas2d-pack-library__header{display:flex;align-items:center;gap:0;flex:1 1;min-width:0;height:34px;border:1px solid var(--border-color);border-radius:var(--radius-md);background:var(--bg-panel);position:relative;transition:border-color .15s}.canvas2d-pack-library__header:focus-within,.canvas2d-pack-library__header:hover{border-color:var(--grid-border-color)}.canvas2d-pack-library__new{align-items:center;background:transparent;border:none;border-radius:var(--radius-md) 0 0 var(--radius-md);border-right:1px solid var(--border-color);color:var(--text-secondary);cursor:pointer;display:flex;flex-shrink:0;height:32px;justify-content:center;padding:0;transition:background .12s,color .12s;width:32px}.canvas2d-pack-library__new:hover{background:var(--bg-dark);color:var(--text-primary)}.canvas2d-pack-library__name-wrap{align-items:center;display:flex;flex:1 1;min-width:0;position:relative}.canvas2d-pack-library__name{background:transparent;border:none;color:var(--text-primary);font:inherit;font-size:var(--fs-5);height:32px;outline:none;padding:0 var(--space-5) 0 var(--space-4);width:100%}.canvas2d-pack-library__name--with-save{padding-right:42px}.canvas2d-pack-library__name::placeholder{color:var(--text-muted)}.canvas2d-pack-library__save{align-items:center;background:var(--accent-fill);border:1px solid var(--accent-line);border-radius:var(--radius-sm);color:var(--accent-on-fill);cursor:pointer;display:flex;font-size:var(--fs-3);font-weight:600;gap:0;height:24px;justify-content:center;max-width:24px;min-width:24px;overflow:hidden;padding:0 var(--space-3);position:absolute;right:4px;top:50%;transform:translateY(-50%);transition:background .16s,border-color .16s,color .16s,box-shadow .16s,gap .22s ease,max-width .22s ease,padding .22s ease}.canvas2d-pack-library__save:hover{background:var(--accent-fill-hover);border-color:var(--accent-fill-hover);color:#fff;gap:var(--space-3);max-width:76px;padding:0 9px}.canvas2d-pack-library__save-icon{align-items:center;display:inline-flex;flex:0 0 auto;justify-content:center}.canvas2d-pack-library__save-label{max-width:0;overflow:hidden;line-height:1;transition:max-width .22s ease;white-space:nowrap}.canvas2d-pack-library__save:hover .canvas2d-pack-library__save-label{max-width:34px}.canvas2d-pack-library__chevron{align-items:center;background:transparent;border:none;border-left:1px solid var(--border-color);border-radius:0 var(--radius-md) var(--radius-md) 0;color:var(--text-secondary);cursor:pointer;display:flex;flex-shrink:0;height:32px;justify-content:center;padding:0;transition:background .12s,color .12s;width:28px}.canvas2d-pack-library__chevron.is-open,.canvas2d-pack-library__chevron:hover{background:var(--bg-dark);color:var(--text-primary)}.canvas2d-pack-library__view-toggle{align-items:center;background:var(--bg-subtle);border:1px solid var(--border-color);border-radius:var(--radius-md);display:inline-flex;flex-shrink:0;gap:2px;padding:2px}.canvas2d-pack-library__view-toggle button{align-items:center;background:transparent;border:none;border-radius:5px;color:var(--text-secondary);cursor:pointer;display:inline-flex;height:24px;justify-content:center;padding:0;width:24px}.canvas2d-pack-library__view-toggle button:hover{background:color-mix(in srgb,var(--accent-line) 8%,transparent);color:var(--text-primary)}.canvas2d-pack-library__view-toggle button.is-active{background:color-mix(in srgb,var(--accent-line) 14%,transparent);color:var(--accent-text)}.canvas2d-pack-library__menu{background:var(--bg-panel);border:1px solid var(--border-color);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:var(--space-1);left:0;min-width:100%;padding:5px;position:absolute;top:calc(100% + 5px);z-index:200}.canvas2d-pack-library__menu-item{align-items:center;background:transparent;border:none;border-radius:var(--radius-sm);color:var(--text-primary);cursor:pointer;display:flex;font-size:var(--fs-4);padding:var(--space-3) var(--space-4);text-align:left;transition:background .12s;width:100%}.canvas2d-pack-library__menu-item:hover{background:var(--bg-hover)}.canvas2d-pack-library__menu-item.is-active{background:color-mix(in srgb,var(--accent-line) 8%,transparent);color:var(--accent-text);font-weight:600}.canvas2d-craft-market-button{display:flex;align-items:center;justify-content:center;gap:var(--space-3);width:100%;min-height:34px;padding:var(--space-4) 0;border:none;border-radius:var(--radius-md);background:var(--accent-fill);color:var(--accent-on-fill);font:inherit;font-size:var(--fs-5);font-weight:600;cursor:pointer;transition:background .15s,opacity .15s}.canvas2d-craft-market-button:hover{background:var(--accent-fill-hover)}.canvas2d-craft-market__preview{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:var(--space-4);gap:var(--space-4);padding:var(--space-8)}.canvas2d-craft-market__thumb{display:grid;min-width:0;aspect-ratio:1;place-items:center;overflow:hidden;border:1px solid var(--border-color);border-radius:var(--radius-sm);background:var(--bg-panel)}.canvas2d-craft-market__thumb svg{width:88%;height:88%}.canvas2d-craft-market .store-card-icon-thumb svg,.canvas2d-craft-market .store-featured-icon-wrap svg{width:78%;height:78%}.canvas2d-craft-market__pack-meta{align-items:baseline;display:flex;gap:var(--space-3)}.canvas2d-craft-market__craft-count{color:var(--text-secondary);font-size:var(--fs-2);white-space:nowrap}.canvas2d-legend__frame{fill:var(--canvas2d-surface-raised);stroke:color-mix(in srgb,var(--text-primary) 70%,var(--border-color));stroke-width:1.4}.canvas2d-legend__empty,.canvas2d-legend__label,.canvas2d-legend__section-title,.canvas2d-legend__title{font-family:inherit;letter-spacing:0}.canvas2d-legend__title{fill:var(--text-primary);font-size:14px;font-weight:700}.canvas2d-legend__rule{stroke:var(--border-color);stroke-width:1}.canvas2d-legend__section-title{fill:var(--text-secondary);font-size:9px;font-weight:700}.canvas2d-legend__label{fill:var(--text-primary);font-size:11px}.canvas2d-legend__empty{fill:var(--text-secondary);font-size:11px}.canvas2d-selection-gizmo__frame{fill:color-mix(in srgb,var(--accent-text) 8%,transparent);stroke:var(--accent-line)}.canvas2d-selection-gizmo__stem{stroke:var(--accent-line)}.canvas2d-selection-gizmo__handle,.canvas2d-selection-gizmo__rotate{fill:var(--canvas2d-surface-raised);stroke:var(--accent-line);pointer-events:all}.canvas2d-selection-gizmo__rotate{cursor:crosshair}.canvas2d-selection-gizmo--secondary{opacity:.58}.canvas2d-selection-gizmo--secondary .canvas2d-selection-gizmo__frame{fill:none}