@font-face{font-family:Orbitron Variable;font-style:normal;font-display:swap;font-weight:400 900;src:url(./orbitron-latin-wght-normal-Du7j2Vp2.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}html,body{background:var(--color-scene-sky);height:100%;font-family:var(--font-family);margin:0;overflow:hidden}button,input{font-family:inherit}button{white-space:nowrap}canvas{display:block}[hidden]{display:none!important}#hotbar{left:50%;bottom:var(--space-xl);align-items:center;gap:var(--space-sm);background:var(--overlay-panel);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-lg);color:var(--color-text-primary);-webkit-user-select:none;user-select:none;display:flex;position:fixed;transform:translate(-50%)}#hotbar.over-dialog{z-index:var(--z-index-hotbar-over-dialog)}#hotbar-label{bottom:calc(100% + var(--space-sm));padding:var(--space-xs) var(--space-md);border-radius:var(--radius-sm);background:var(--overlay-panel);font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-sm);white-space:nowrap;pointer-events:none;position:absolute;left:50%;transform:translate(-50%)}#hotbar-slots{gap:var(--space-xs);display:flex}.slot{width:var(--size-hotbar-slot);height:var(--size-hotbar-slot);border:var(--border-regular) solid transparent;border-radius:var(--radius-md);background:var(--color-surface-control);color:var(--color-text-primary);cursor:pointer;justify-content:center;align-items:center;padding:0;display:flex;position:relative}.slot:hover{background:var(--color-surface-control-hover)}.slot.selected{border-color:var(--color-accent-highlight)}.slot.drop-hover{border-color:var(--color-accent-primary-hover);background:var(--color-surface-control-hover);transform:scale(1.08)}.slot-key{top:var(--space-xs);left:var(--space-xs);font-size:var(--font-size-xs);opacity:var(--opacity-muted);line-height:1;position:absolute}.slot canvas{pointer-events:none}#catalog-button{width:var(--size-hotbar-slot);height:var(--size-hotbar-slot);border-radius:var(--radius-md);background:var(--color-surface-control);color:var(--color-text-primary);cursor:pointer;border:0;justify-content:center;align-items:center;padding:0;display:flex}#catalog-button:hover{background:var(--color-surface-control-hover)}#catalog-button svg{width:var(--size-icon);height:var(--size-icon)}.drag-ghost{z-index:var(--z-index-drag-ghost);pointer-events:none;opacity:.9;position:fixed;top:0;left:0}.drag-ghost canvas{width:var(--size-drag-ghost);height:var(--size-drag-ghost)}body.dragging,body.dragging *{-webkit-user-select:none;user-select:none;cursor:grabbing!important}.sep{width:var(--border-hairline);height:var(--size-separator-height);background:var(--color-surface-divider);margin:0 var(--space-xs)}#top-left{top:var(--space-lg);left:var(--space-lg);gap:var(--space-sm);display:flex;position:fixed}#help-button,#btn-saves,#btn-menu{height:var(--size-icon-button);border-radius:var(--radius-lg);background:var(--overlay-panel);color:var(--color-text-primary);cursor:pointer;width:var(--size-icon-button);border:0;justify-content:center;align-items:center;padding:0;display:flex}#help-button:hover,#btn-saves:hover,#btn-menu:hover{background:var(--overlay-panel-hover)}#help-button svg,#btn-saves svg,#btn-menu svg{width:var(--size-icon);height:var(--size-icon)}.dialog.help{width:min(var(--size-help-width), 94vw)}.help-header{margin-bottom:var(--space-md);justify-content:space-between;align-items:center;display:flex}.help-header .dialog-title{margin:0}.help-close{width:calc(var(--space-xl) + var(--space-md));height:calc(var(--space-xl) + var(--space-md));border:var(--border-regular) solid transparent;border-radius:var(--radius-md);background:var(--color-surface-control);color:var(--color-text-primary);font-size:var(--font-size-xxl);cursor:pointer;padding:0;line-height:1}.help-close.danger{background:var(--color-accent-danger);justify-content:center;align-items:center;display:flex}.header-actions{align-items:center;gap:var(--space-sm);display:flex}.help-close:hover,.help-tab:hover{background:var(--color-surface-control-hover)}.help-close.danger:hover{background:var(--color-accent-danger)}.help-tabs{gap:var(--space-xs);margin-bottom:var(--space-md);border-bottom:var(--border-hairline) solid var(--color-surface-divider);padding-bottom:var(--space-sm);flex-wrap:wrap;display:flex}.help-tab{padding:var(--space-sm) var(--space-md);border:var(--border-regular) solid transparent;border-radius:var(--radius-sm);color:var(--color-text-primary);font-size:var(--font-size-md);opacity:var(--opacity-muted);cursor:pointer;background:0 0}.help-tab[aria-selected=true]{background:var(--color-surface-control);border-bottom-color:var(--color-accent-highlight);opacity:1;font-weight:var(--font-weight-semibold)}.help-close:focus-visible,.help-tab:focus-visible,.help-panel:focus-visible{border-color:var(--color-accent-highlight);outline:none}.help-panel{max-height:min(var(--size-help-panel-height), 60vh);padding-right:var(--space-sm);border:var(--border-regular) solid transparent;border-radius:var(--radius-sm);overflow-y:auto}.help-footer{justify-content:space-between;align-items:center;gap:var(--space-md);margin-top:var(--space-lg);display:flex}.help-footer-hint{font-size:var(--font-size-sm);opacity:var(--opacity-muted)}.help-heading{margin:var(--space-lg) 0 var(--space-sm);font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-md);text-transform:uppercase;color:var(--color-accent-highlight)}.help-heading:first-child{margin-top:0}.help-row{align-items:baseline;gap:var(--space-md);padding:var(--space-xs) 0;font-size:var(--font-size-md);line-height:var(--line-height-normal);display:flex}.help-keys{align-items:center;gap:var(--space-xs);flex-wrap:wrap;flex:0 0 var(--size-help-keys-width);display:flex}.help-keys kbd{padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);border-bottom:var(--border-regular) solid var(--color-surface-divider);background:var(--color-surface-control);font:inherit;font-size:var(--font-size-sm);white-space:nowrap}.help-or{font-size:var(--font-size-sm);opacity:var(--opacity-muted)}.help-text{min-width:0;opacity:var(--opacity-muted);flex:1}.help-para{margin:0 0 var(--space-xs)}.help-lead{margin-top:var(--space-sm);font-weight:var(--font-weight-semibold)}.help-list{margin:0 0 var(--space-xs);padding-left:var(--space-lg)}.help-list li{margin-bottom:var(--space-xs)}.help-text>:last-child{margin-bottom:0}.help-note .help-text{opacity:1}.dialog-backdrop.catalog-backdrop{box-sizing:border-box;padding-bottom:var(--size-hotbar-clearance)}.dialog.catalog{width:min(var(--size-catalog-width), 96vw);max-height:calc(100vh - var(--size-hotbar-clearance) - var(--space-xl));flex-direction:column;display:flex}.catalog-body{gap:var(--space-lg);min-height:0;display:flex}.catalog-main{flex-direction:column;flex:1;min-width:0;display:flex}.catalog-search{margin:0 0 var(--space-md);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);border:var(--border-regular) solid var(--color-surface-control-hover);background:var(--color-surface-input);color:var(--color-text-primary);font-size:var(--font-size-md)}.catalog-search:focus{border-color:var(--color-accent-highlight);outline:none}.catalog-hint{margin:0 0 var(--space-md);font-size:var(--font-size-sm);opacity:var(--opacity-muted)}.catalog-empty{opacity:var(--opacity-muted);font-size:var(--font-size-md);grid-column:1/-1;margin:0}.catalog-grid{grid-template-columns:repeat(auto-fill, minmax(calc(var(--size-catalog-card-preview) + var(--space-xl)), 1fr));align-content:start;gap:var(--space-md);max-height:min(var(--size-catalog-grid-height), calc(100vh - var(--size-catalog-chrome)));padding:var(--space-xs);display:grid;overflow-y:auto}.catalog-card{align-items:center;gap:var(--space-xs);padding:var(--space-md) var(--space-sm);border:var(--border-regular) solid transparent;border-radius:var(--radius-md);background:var(--color-surface-control);color:var(--color-text-primary);font-size:var(--font-size-md);cursor:grab;flex-direction:column;display:flex}.catalog-card:hover{background:var(--color-surface-control-hover);border-color:var(--color-surface-divider)}.catalog-card.selected{border-color:var(--color-accent-highlight)}.catalog-card:focus-visible{border-color:var(--color-accent-highlight);outline:none}.catalog-card canvas{pointer-events:none}.catalog-card-name{font-weight:var(--font-weight-semibold)}.catalog-card-category{font-size:var(--font-size-xs);letter-spacing:var(--letter-spacing-sm);text-transform:uppercase;opacity:var(--opacity-muted)}.catalog-inspector{flex:0 0 var(--size-catalog-inspector-width);box-sizing:border-box;max-height:min(var(--size-catalog-grid-height), calc(100vh - var(--size-catalog-chrome)));padding:var(--space-md);border-radius:var(--radius-md);background:var(--color-surface-input);align-items:stretch;gap:var(--space-sm);flex-direction:column;display:flex;overflow-y:auto}.catalog-inspector canvas{align-self:center}.inspector-name{font-size:var(--font-size-xl);letter-spacing:var(--letter-spacing-sm);text-align:center;margin:0}.inspector-chip{padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);background:var(--color-surface-control);font-size:var(--font-size-xs);letter-spacing:var(--letter-spacing-sm);text-transform:uppercase;align-self:center}.inspector-tagline{text-align:center;font-size:var(--font-size-md);color:var(--color-accent-highlight);margin:0}.inspector-description,.inspector-tips,.inspector-status{font-size:var(--font-size-sm);line-height:var(--line-height-normal);opacity:var(--opacity-muted);margin:0}.inspector-heading{margin:var(--space-sm) 0 0;font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-md);text-transform:uppercase;color:var(--color-accent-highlight)}.inspector-props{gap:var(--space-xs) var(--space-md);font-size:var(--font-size-sm);line-height:var(--line-height-normal);grid-template-columns:auto 1fr;margin:0;display:grid}.inspector-props dt{opacity:var(--opacity-muted)}.inspector-props dd{margin:0}.paint-swatch{width:var(--size-paint-swatch);height:var(--size-paint-swatch);border:2px solid var(--color-divider);border-radius:var(--radius-sm);cursor:pointer;flex:none;padding:0}.paint-swatch:hover{border-color:var(--color-text-primary)}.paint-swatch.selected{border-color:var(--color-accent-highlight);box-shadow:0 0 0 2px var(--color-accent-highlight)}.slider-row{align-items:center;gap:var(--space-md);display:flex}.slider-input{cursor:pointer;flex:1;min-width:0;margin:0}.slider-value{text-align:right;min-width:3ch;font-size:var(--font-size-sm)}.slider-ends{font-size:var(--font-size-xs);opacity:var(--opacity-muted);justify-content:space-between;align-items:center;display:flex}.slider-reset{border-radius:var(--radius-sm);background:var(--color-surface-control);color:var(--color-text-primary);padding:var(--space-xs) var(--space-sm);font:inherit;cursor:pointer;border:0}.slider-reset[hidden]{display:none}.inspector-tips{padding-left:var(--space-lg)}.catalog-action{margin-top:var(--space-sm);padding:var(--space-sm) var(--space-lg);border:var(--border-regular) solid transparent;border-radius:var(--radius-md);background:var(--color-surface-control);color:var(--color-text-primary);font-size:var(--font-size-md);cursor:pointer}#part-inspector .catalog-action{white-space:normal;line-height:var(--line-height-normal)}.catalog-action.primary{background:var(--color-accent-highlight);color:var(--color-accent-on-highlight);font-weight:var(--font-weight-semibold)}.catalog-action.primary:hover{background:var(--color-accent-highlight-hover)}.catalog-action:focus-visible{border-color:var(--color-accent-highlight);outline:none}#top-bar{top:var(--space-lg);align-items:center;gap:var(--space-xs);padding:var(--space-sm);border-radius:var(--radius-lg);background:var(--overlay-panel);-webkit-user-select:none;user-select:none;width:max-content;max-width:calc(100vw - 2 * (var(--space-lg) * 2 + var(--size-icon-button) * 2 + var(--space-sm)));flex-wrap:wrap;justify-content:center;display:flex;position:fixed;left:50%;transform:translate(-50%)}#top-bar div.build-only{gap:var(--space-sm);display:flex}#paint-palette{margin-top:var(--size-palette-gap);gap:var(--space-sm);padding:var(--space-sm);border-radius:var(--radius-lg);background:var(--overlay-panel);display:flex;position:absolute;top:100%;left:50%;transform:translate(-50%)}#play-notice{margin-top:var(--size-palette-gap);padding:var(--space-sm) var(--space-lg);border-radius:var(--radius-lg);background:var(--overlay-panel);color:var(--color-accent-highlight);font-size:var(--font-size-sm);white-space:nowrap;position:absolute;top:100%;left:50%;transform:translate(-50%)}#play-notice[hidden],#paint-palette[hidden]{display:none}#top-bar button{border:var(--border-regular) solid transparent;background:var(--color-surface-control);color:var(--color-text-primary);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);font-size:var(--font-size-md);cursor:pointer}#top-bar button:hover:not(:disabled){background:var(--color-surface-control-hover)}#top-bar button:disabled{opacity:var(--opacity-disabled);cursor:default}#mode-switch,#rotate-group,#history-group{gap:var(--space-xs);display:flex}#top-bar #history-group button{padding:var(--space-sm);justify-content:center;align-items:center;display:flex}#top-bar #rotate-group button,#top-bar #mode-switch button{align-items:center;gap:var(--space-xs);padding:var(--space-sm);display:flex}#mode-switch button.active{border-color:var(--color-accent-highlight);background:var(--color-surface-control-hover)}#top-bar kbd{padding:0 var(--space-xs);border-radius:var(--radius-sm);background:var(--color-surface-input);font:inherit;font-size:var(--font-size-xs);line-height:var(--space-lg)}@media (width<=1180px){#top-bar kbd{display:none}}body[data-cursor-mode=inspect]>canvas{cursor:help}body[data-cursor-mode=paint]>canvas,body[data-cursor-mode=remove]>canvas{cursor:crosshair}#top-bar #btn-play,#top-bar #btn-reset{background:var(--color-accent-highlight);color:var(--color-accent-on-highlight);font-weight:var(--font-weight-semibold)}#top-bar #btn-play:hover,#top-bar #btn-reset:hover{background:var(--color-accent-highlight-hover)}#top-bar #btn-play.playing{background:var(--color-accent-danger);color:var(--color-text-primary)}#part-inspector{right:var(--space-lg);top:var(--size-hotbar-reserved);bottom:var(--size-hotbar-reserved);width:var(--size-part-inspector-width);box-sizing:border-box;padding:var(--space-md);border-radius:var(--radius-lg);background:var(--overlay-panel-strong);color:var(--color-text-primary);align-items:stretch;gap:var(--space-sm);flex-direction:column;display:flex;position:fixed;overflow:hidden}#part-inspector .inspector-body{gap:var(--space-sm);min-height:0;padding-right:var(--space-sm);flex-direction:column;flex:1 1 0;display:flex;overflow-y:auto}#part-inspector .inspector-summary{align-items:center;gap:var(--space-md);display:flex}#part-inspector .inspector-identity{align-items:flex-start;gap:var(--space-xs);flex-direction:column;display:flex}#part-inspector .inspector-name{text-align:left}#part-inspector .inspector-chip{align-self:flex-start}#part-inspector .help-header{margin-bottom:0}.catalog-action.danger{background:var(--color-accent-danger);font-weight:var(--font-weight-semibold)}#zoom{left:var(--space-lg);top:calc(var(--space-lg) + var(--size-icon-button) + var(--space-sm));align-items:stretch;gap:var(--space-sm);-webkit-user-select:none;user-select:none;flex-direction:column;display:flex;position:fixed}.zoom-panel{justify-content:center;align-items:center;gap:var(--space-sm);flex-direction:column;display:flex}#zoom button{width:var(--size-icon-button);height:var(--size-icon-button);border-radius:var(--radius-lg);background:var(--overlay-panel);color:var(--color-text-primary);font-size:var(--font-size-xl);cursor:pointer;border:0;padding:0}#zoom button:hover{background:var(--overlay-panel-hover)}#zoom-slider{writing-mode:vertical-lr;height:var(--size-zoom-slider-height);cursor:pointer;direction:rtl;margin:0}#zoom-label{color:var(--color-text-primary);text-shadow:var(--shadow-text);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-sm)}#fps{top:calc(var(--space-lg) * 2 + var(--size-icon-button));right:var(--space-lg);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);background:var(--overlay-panel);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-sm);color:var(--color-text-primary);pointer-events:none;-webkit-user-select:none;user-select:none;position:fixed}#fps:empty{display:none}#fps.good{color:var(--color-accent-primary-hover)}#fps.ok{color:var(--color-accent-highlight)}#fps.bad{color:var(--color-accent-danger)}.dialog-backdrop{z-index:var(--z-index-dialog);background:var(--overlay-backdrop);animation:dialog-fade var(--motion-fast) ease-out;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.dialog{width:min(var(--size-dialog-width), 90vw);background:var(--color-surface-panel);color:var(--color-text-primary);border-radius:var(--radius-lg);padding:var(--space-xl);animation:dialog-pop var(--motion-fast) ease-out}.dialog-title{margin:0 0 var(--space-sm);font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-sm)}.dialog-message{margin:0 0 var(--space-xl);font-size:var(--font-size-md);line-height:var(--line-height-normal);opacity:var(--opacity-muted)}.dialog-actions{justify-content:flex-end;gap:var(--space-sm);display:flex}.dialog-button{border:var(--border-regular) solid transparent;background:var(--color-surface-control);color:var(--color-text-primary);padding:var(--space-md) var(--space-lg);border-radius:var(--radius-md);font-size:var(--font-size-md);cursor:pointer}.dialog-button:hover{background:var(--color-surface-control-hover)}.dialog-button.primary{background:var(--color-accent-highlight);color:var(--color-accent-on-highlight);font-weight:var(--font-weight-semibold)}.dialog-button.primary:hover{background:var(--color-accent-highlight-hover)}.dialog-button.danger{background:var(--color-accent-danger);font-weight:var(--font-weight-semibold)}.dialog-button:focus-visible{border-color:var(--color-accent-highlight);outline:none}@keyframes dialog-fade{0%{opacity:0}}@keyframes dialog-pop{0%{transform:scale(.96)}}@media (prefers-reduced-motion:reduce){.dialog-backdrop,.dialog{animation:none}}#tutorial{z-index:var(--z-index-tutorial);position:fixed;inset:0}.tutorial-spot{border-radius:var(--radius-md);box-shadow:0 0 0 100vmax var(--overlay-backdrop);outline:var(--border-thick) solid var(--color-accent-highlight);transition:left var(--motion-tutorial-move) ease, top var(--motion-tutorial-move) ease, width var(--motion-tutorial-move) ease, height var(--motion-tutorial-move) ease;animation:tutorial-pulse var(--motion-tutorial-pulse) ease-in-out infinite;pointer-events:none;position:absolute}#tutorial.centred{background:var(--overlay-backdrop)}#tutorial.centred .tutorial-spot,#tutorial.centred .tutorial-arrow{display:none}.tutorial-arrow{width:var(--size-tutorial-arrow);height:var(--size-tutorial-arrow);color:var(--color-accent-highlight);transition:left var(--motion-tutorial-move) ease, top var(--motion-tutorial-move) ease;animation:tutorial-bob var(--motion-tutorial-arrow) ease-in-out infinite;pointer-events:none;position:absolute}.tutorial-arrow svg{width:100%;height:100%;filter:var(--shadow-logo);display:block}.tutorial-card{box-sizing:border-box;background:var(--color-surface-panel);color:var(--color-text-primary);border:var(--border-regular) solid var(--color-accent-highlight);border-radius:var(--radius-lg);padding:var(--space-lg);transition:left var(--motion-tutorial-move) ease, top var(--motion-tutorial-move) ease;position:absolute}.tutorial-title{margin:0 0 var(--space-sm);font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-sm)}.tutorial-text{margin:0 0 var(--space-lg);font-size:var(--font-size-md);line-height:var(--line-height-normal);opacity:var(--opacity-muted)}.tutorial-footer{align-items:center;gap:var(--space-sm);display:flex}.tutorial-counter{white-space:nowrap;font-size:var(--font-size-sm);opacity:var(--opacity-muted);flex:1}.tutorial-footer .dialog-button{white-space:nowrap}@keyframes tutorial-bob{0%,to{opacity:1;transform:translate(0)}50%{opacity:.3;transform:translate(var(--bob-x,0), var(--bob-y,0))}}@keyframes tutorial-pulse{0%,to{outline-offset:0}50%{outline-offset:var(--space-xs)}}@media (prefers-reduced-motion:reduce){.tutorial-spot,.tutorial-arrow,.tutorial-card{transition:none}.tutorial-spot{animation:none}.tutorial-arrow{animation-duration:calc(var(--motion-tutorial-arrow) * 3)}}#loading{z-index:var(--z-index-loading);justify-content:center;align-items:center;gap:var(--space-md);background:var(--color-surface-vignette);color:var(--color-text-primary);transition:opacity var(--motion-loading-fade) ease;flex-direction:column;display:flex;position:fixed;inset:0}#loading[hidden]{display:none}#loading.closing{opacity:0;pointer-events:none}#loading-logo{width:var(--size-loading-logo);height:auto;filter:var(--shadow-logo)}#loading-bar{width:var(--size-loading-bar-width);height:var(--size-loading-bar-height);border-radius:var(--radius-sm);background:var(--color-surface-control);overflow:hidden}#loading-fill{border-radius:inherit;background:var(--color-accent-highlight);width:0;height:100%;transition:width var(--motion-fast) ease-out}#loading-label{min-height:1.5em;font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-sm);opacity:var(--opacity-muted);margin:0}@media (prefers-reduced-motion:reduce){#loading,#loading-fill{transition:none}}#menu{background:radial-gradient(ellipse at center, var(--overlay-vignette-inner), var(--overlay-vignette-outer));color:var(--color-text-primary);flex-direction:column;justify-content:center;align-items:center;display:none;position:fixed;inset:0}#menu.open{display:flex}#menu.over-game{z-index:var(--z-index-dialog);animation:dialog-fade var(--motion-fast) ease-out}#menu.over-game #menu-saves,#menu.over-game #menu-new{animation:dialog-pop var(--motion-fast) ease-out}@media (prefers-reduced-motion:reduce){#menu.over-game,#menu.over-game #menu-saves,#menu.over-game #menu-new{animation:none}}#menu-main{flex-direction:column;align-items:center;display:flex}#menu h1{margin:0 0 var(--space-sm);line-height:0}#menu-logo{width:var(--size-logo);height:auto;filter:var(--shadow-logo);display:block}#menu .tagline{margin:0 0 var(--space-xxl);font-size:var(--font-size-lg);letter-spacing:var(--letter-spacing-lg);text-transform:uppercase;opacity:var(--opacity-tagline);text-shadow:var(--shadow-text)}#menu button{background:var(--color-surface-control);color:var(--color-text-primary);padding:var(--space-md) var(--space-lg);border-radius:var(--radius-md);font-size:var(--font-size-md);cursor:pointer;border:0}#menu button:hover{background:var(--color-surface-control-hover)}#menu button.primary{background:var(--color-accent-highlight);color:var(--color-accent-on-highlight);font-weight:var(--font-weight-semibold)}#menu button.primary:hover{background:var(--color-accent-highlight-hover)}#menu button.danger:hover{background:var(--color-accent-danger)}#menu button:disabled{opacity:var(--opacity-disabled);cursor:default}#menu #menu-play{align-items:center;gap:var(--space-md);background:var(--color-accent-highlight);color:var(--color-accent-on-highlight);font-weight:var(--font-weight-semibold);font-size:var(--font-size-xxl);letter-spacing:var(--letter-spacing-md);padding:var(--space-lg) var(--space-huge);border-radius:var(--radius-lg);display:inline-flex}#menu #menu-play:hover{background:var(--color-accent-highlight-hover)}#menu #menu-play svg{width:var(--size-menu-play-icon);height:var(--size-menu-play-icon)}#menu #menu-discord{left:var(--space-md);bottom:var(--space-md);align-items:center;gap:var(--space-sm);font-size:var(--font-size-md);letter-spacing:var(--letter-spacing-sm);display:inline-flex;position:fixed}#menu #menu-discord svg{width:var(--size-icon);height:var(--size-icon)}#menu-saves{width:min(var(--size-panel-width), 90vw);background:var(--overlay-panel-strong);border-radius:var(--radius-lg);padding:var(--space-xl)}#menu-saves h2{margin:0 0 var(--space-lg);font-size:var(--font-size-xl);letter-spacing:var(--letter-spacing-sm)}#save-list{gap:var(--space-sm);max-height:var(--size-list-max-height);margin-bottom:var(--space-lg);flex-direction:column;display:flex;overflow-y:auto}.save-item{align-items:center;gap:var(--space-sm);background:var(--color-surface-control);border-radius:var(--radius-md);padding:var(--space-md);display:flex}.save-item .save-preview{width:var(--size-save-preview);height:var(--size-save-preview);object-fit:contain;background:var(--color-surface-control-hover);border-radius:var(--radius-sm);flex:none}.save-item img.save-preview:not([src]){visibility:hidden}.save-item .info{flex:1;min-width:0}.save-item .name{font-weight:var(--font-weight-semibold);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.save-item .meta{font-size:var(--font-size-xs);opacity:var(--opacity-muted)}.save-item button{background:var(--color-surface-control-hover)}#save-empty{opacity:var(--opacity-muted);text-align:center;padding:var(--space-lg) 0;font-size:var(--font-size-md)}#menu-actions,#menu-actions-new{justify-content:space-between;gap:var(--space-sm);display:flex}#menu-new{width:min(var(--size-panel-width), 90vw);background:var(--overlay-panel-strong);border-radius:var(--radius-lg);padding:var(--space-xl);gap:var(--space-sm);flex-direction:column;display:flex}#menu-new[hidden]{display:none}#menu-new h2{margin:0 0 var(--space-sm);font-size:var(--font-size-xl);letter-spacing:var(--letter-spacing-sm)}.field-label{margin-top:var(--space-sm);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-md);text-transform:uppercase;color:var(--color-accent-highlight)}#grid-size{gap:var(--space-sm);margin-bottom:var(--space-md);display:flex}#menu #grid-size .grid-size-option{align-items:center;gap:var(--space-xs);border:var(--border-regular) solid transparent;flex-direction:column;flex:1;display:flex}#menu #grid-size .grid-size-option.selected{border-color:var(--color-accent-highlight);background:var(--color-surface-control-hover)}.size-name{font-weight:var(--font-weight-semibold)}.size-cells{font-size:var(--font-size-xs);opacity:var(--opacity-muted)}#new-name{min-width:0;padding:var(--space-md);border-radius:var(--radius-md);border:var(--border-regular) solid var(--color-surface-control-hover);background:var(--color-surface-input);color:var(--color-text-primary);font-size:var(--font-size-md)}#new-name:focus{border-color:var(--color-accent-highlight);outline:none}#menu-credit{left:50%;bottom:var(--space-md);align-items:center;gap:var(--space-sm);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-sm);white-space:nowrap;opacity:var(--opacity-muted);text-shadow:var(--shadow-text-small);-webkit-user-select:none;user-select:none;display:flex;position:fixed;transform:translate(-50%)}#menu.over-game #menu-credit{display:none}#menu-version{right:var(--space-lg);bottom:var(--space-md);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-sm);opacity:var(--opacity-muted);text-shadow:var(--shadow-text-small);position:fixed}:is(.help-panel,.catalog-grid,.catalog-inspector,#part-inspector .inspector-body,#save-list){scrollbar-gutter:stable}@supports selector(::-webkit-scrollbar){:is(.help-panel,.catalog-grid,.catalog-inspector,#part-inspector .inspector-body,#save-list)::-webkit-scrollbar{width:var(--space-sm)}:is(.help-panel,.catalog-grid,.catalog-inspector,#part-inspector .inspector-body,#save-list)::-webkit-scrollbar-track{background:0 0}:is(.help-panel,.catalog-grid,.catalog-inspector,#part-inspector .inspector-body,#save-list)::-webkit-scrollbar-thumb{background:var(--color-surface-divider);border-radius:var(--radius-sm)}:is(.help-panel,.catalog-grid,.catalog-inspector,#part-inspector .inspector-body,#save-list)::-webkit-scrollbar-thumb:hover{background:var(--color-surface-control-hover)}}@supports not selector(::-webkit-scrollbar){:is(.help-panel,.catalog-grid,.catalog-inspector,#part-inspector .inspector-body,#save-list){scrollbar-width:thin;scrollbar-color:var(--color-surface-divider) transparent}}.selection-marquee{z-index:var(--z-index-drag-ghost);pointer-events:none;box-sizing:border-box;border:var(--border-regular) dashed var(--color-accent-highlight);background:color-mix(in srgb, var(--color-accent-highlight) 15%, transparent);position:fixed}#part-inspector .move-pad{gap:var(--space-xs);grid-template-columns:repeat(3,1fr);display:grid}#part-inspector .move-ground{justify-content:center;align-items:center;gap:var(--space-sm);width:100%;margin-top:var(--space-xs);display:flex}#part-inspector .move-pad button{justify-content:center;align-items:center;display:flex}#part-inspector .move-mouse{gap:var(--space-xs);padding:var(--space-sm);border:var(--border-regular) solid var(--color-accent-highlight);border-radius:var(--radius-sm);flex-direction:column;display:flex}#part-inspector .move-mouse .inspector-heading{margin:0}#part-inspector .move-mouse-row{align-items:center;gap:var(--space-sm);font-size:var(--font-size-sm);display:flex}#part-inspector .move-mouse-keys{align-items:center;gap:var(--space-xs);flex:none;display:flex}#part-inspector .move-mouse-keys kbd{padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);border-bottom:var(--border-regular) solid var(--color-surface-divider);background:var(--color-surface-control);color:var(--color-accent-highlight);font:inherit;font-size:var(--font-size-sm);white-space:nowrap}#controls-panel{left:var(--space-lg);bottom:var(--space-lg);padding:var(--space-md);border-radius:var(--radius-lg);background:var(--overlay-panel);color:var(--color-text-primary);font-size:var(--font-size-sm);pointer-events:none;position:fixed}#controls-panel[hidden]{display:none}#controls-panel .controls-title{margin:0 0 var(--space-sm);font-size:var(--font-size-sm);color:var(--color-accent-highlight);text-transform:uppercase;letter-spacing:var(--letter-spacing-lg)}#controls-panel .controls-list{align-items:center;gap:var(--space-xs) var(--space-md);grid-template-columns:auto auto;margin:0;display:grid}#controls-panel dt,#controls-panel dd{margin:0}#controls-panel dd{opacity:var(--opacity-muted)}#controls-panel kbd{padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);border-bottom:var(--border-regular) solid var(--color-surface-divider);background:var(--color-surface-control);font:inherit;white-space:nowrap}#controls-panel kbd+kbd{margin-left:var(--space-xs)}#btn-alerts,#btn-sound,#btn-settings{top:var(--space-lg);right:var(--space-lg);z-index:var(--z-index-dialog);width:var(--size-icon-button);height:var(--size-icon-button);border-radius:var(--radius-lg);background:var(--overlay-panel);color:var(--color-text-primary);cursor:pointer;border:0;justify-content:center;align-items:center;padding:0;display:flex;position:fixed}#btn-settings{right:calc(var(--space-lg) + var(--size-icon-button) + var(--space-sm))}#btn-alerts{right:calc(var(--space-lg) + 2 * (var(--size-icon-button) + var(--space-sm)))}#btn-alerts[hidden]{display:none}#alerts-badge{top:calc(-1 * var(--size-badge-offset));right:calc(-1 * var(--size-badge-offset));min-width:var(--size-badge);height:var(--size-badge);padding:0 var(--space-xs);box-sizing:border-box;border-radius:var(--size-badge);background:var(--color-accent-danger);color:var(--color-text-primary);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute}#alerts-badge[hidden]{display:none}#btn-alerts:hover,#btn-sound:hover,#btn-settings:hover{background:var(--overlay-panel-hover)}#btn-alerts svg,#btn-sound svg,#btn-settings svg{width:var(--size-icon);height:var(--size-icon)}#btn-sound .sound-off,#btn-sound.muted .sound-on{display:none}#btn-sound.muted .sound-off{display:block}.slider-input,#zoom-slider{appearance:none;--thumb:var(--size-slider-thumb);--filled:calc(var(--fill,0) * (100% - var(--thumb)) + var(--thumb) / 2);background:0 0}.slider-input{height:var(--size-slider-thumb)}.slider-input::-webkit-slider-runnable-track{height:var(--size-slider-track);border-radius:var(--size-slider-track);background:linear-gradient(to right, var(--color-accent-highlight) var(--filled), var(--color-surface-control-hover) var(--filled))}#zoom-slider::-webkit-slider-runnable-track{width:var(--size-slider-track);border-radius:var(--size-slider-track);background:linear-gradient(to top, var(--color-accent-highlight) var(--filled), var(--color-surface-control-hover) var(--filled))}.slider-input::-webkit-slider-thumb{appearance:none;width:var(--size-slider-thumb);height:var(--size-slider-thumb);background:var(--color-text-primary);border:0;border-radius:50%}#zoom-slider::-webkit-slider-thumb{appearance:none;width:var(--size-slider-thumb);height:var(--size-slider-thumb);background:var(--color-text-primary);border:0;border-radius:50%}.slider-input::-webkit-slider-thumb{margin-top:calc((var(--size-slider-thumb) - var(--size-slider-track)) / -2)}#zoom-slider::-webkit-slider-thumb{margin-left:calc((var(--size-slider-thumb) - var(--size-slider-track)) / -2)}.slider-input::-moz-range-track{background:var(--color-surface-control-hover);border-radius:var(--size-slider-track)}#zoom-slider::-moz-range-track{background:var(--color-surface-control-hover);border-radius:var(--size-slider-track)}.slider-input::-moz-range-track{height:var(--size-slider-track)}#zoom-slider::-moz-range-track{width:var(--size-slider-track)}.slider-input::-moz-range-progress{background:var(--color-accent-highlight);border-radius:var(--size-slider-track)}#zoom-slider::-moz-range-progress{background:var(--color-accent-highlight);border-radius:var(--size-slider-track)}.slider-input::-moz-range-thumb{width:var(--size-slider-thumb);height:var(--size-slider-thumb);background:var(--color-text-primary);border:0;border-radius:50%}#zoom-slider::-moz-range-thumb{width:var(--size-slider-thumb);height:var(--size-slider-thumb);background:var(--color-text-primary);border:0;border-radius:50%}.dialog.settings{width:min(var(--size-settings-width), 94vw);flex-direction:column;max-height:88vh;display:flex}.settings-body{padding-right:var(--space-sm);overflow-y:auto}.setting-row{justify-content:space-between;align-items:center;gap:var(--space-lg);padding:var(--space-sm) 0;display:flex}.setting-label{gap:var(--space-xs);flex-direction:column;display:flex}.setting-hint{font-size:var(--font-size-xs);opacity:var(--opacity-muted)}.setting-slider{align-items:center;gap:var(--space-md);width:var(--size-settings-slider);flex:none;display:flex}.switch{width:var(--size-switch-width);height:var(--size-switch-height);border-radius:var(--size-switch-height);background:var(--color-surface-control-hover);cursor:pointer;border:0;flex:none;padding:0;position:relative}.switch[aria-checked=true]{background:var(--color-accent-highlight)}.switch-knob{top:var(--space-xs);left:var(--space-xs);width:calc(var(--size-switch-height) - var(--space-xs) * 2);height:calc(var(--size-switch-height) - var(--space-xs) * 2);background:var(--color-text-primary);transition:transform var(--motion-fast) ease-out;border-radius:50%;position:absolute}.switch[aria-checked=true] .switch-knob{transform:translateX(calc(var(--size-switch-width) - var(--size-switch-height)))}@media (prefers-reduced-motion:reduce){.switch-knob{transition:none}}#btn-menu,#btn-saves,#help-button,#btn-settings,#btn-alerts,#btn-sound,#top-bar button,#zoom button,#menu button,#catalog-button,.slot,#part-inspector .move-pad button,.catalog-action,.dialog-button,.slider-reset,.help-close,.save-item button{--lip:var(--color-button-lip);background-image:linear-gradient(180deg, var(--overlay-sheen), transparent 55%);box-shadow:inset 0 var(--border-hairline) 0 var(--overlay-sheen-edge), 0 var(--button-lip) 0 var(--lip), 0 calc(var(--button-lip) + 3px) 10px #00000047;transition:transform var(--motion-fast) ease-out, box-shadow var(--motion-fast) ease-out, background-color var(--motion-fast) ease-out}#btn-menu:hover:not(:disabled),#btn-saves:hover:not(:disabled),#help-button:hover:not(:disabled),#btn-settings:hover:not(:disabled),#btn-alerts:hover:not(:disabled),#btn-sound:hover:not(:disabled),#top-bar button:hover:not(:disabled),#zoom button:hover:not(:disabled),#menu button:hover:not(:disabled),#catalog-button:hover:not(:disabled),.slot:hover:not(:disabled),#part-inspector .move-pad button:hover:not(:disabled),.catalog-action:hover:not(:disabled),.dialog-button:hover:not(:disabled),.slider-reset:hover:not(:disabled),.help-close:hover:not(:disabled),.save-item button:hover:not(:disabled){transform:translateY(calc(var(--button-lift) * -1));box-shadow:inset 0 var(--border-hairline) 0 var(--overlay-sheen-edge), 0 calc(var(--button-lip) + var(--button-lift)) 0 var(--lip), 0 calc(var(--button-lip) + 5px) 14px #00000052}#btn-menu:active:not(:disabled),#btn-saves:active:not(:disabled),#help-button:active:not(:disabled),#btn-settings:active:not(:disabled),#btn-alerts:active:not(:disabled),#btn-sound:active:not(:disabled),#top-bar button:active:not(:disabled),#zoom button:active:not(:disabled),#menu button:active:not(:disabled),#catalog-button:active:not(:disabled),.slot:active:not(:disabled),#part-inspector .move-pad button:active:not(:disabled),.catalog-action:active:not(:disabled),.dialog-button:active:not(:disabled),.slider-reset:active:not(:disabled),.help-close:active:not(:disabled),.save-item button:active:not(:disabled){transform:translateY(var(--button-press));box-shadow:inset 0 var(--border-hairline) 0 var(--overlay-sheen-edge), 0 calc(var(--button-lip) - var(--button-press)) 0 var(--lip), 0 2px 4px #0000004d}#btn-menu,#btn-saves,#help-button,#btn-settings,#btn-alerts,#btn-sound{height:calc(var(--size-icon-button) - var(--button-lip))}#zoom button{height:calc(var(--size-icon-button) - var(--button-lip));margin-bottom:var(--button-lip)}.slot,#catalog-button{height:calc(var(--size-hotbar-slot) - var(--button-lip))}#menu button.primary,.dialog-button.primary,.catalog-action.primary{--lip:var(--color-button-lip-highlight)}.catalog-action.danger,.help-close.danger,.dialog-button.danger,#menu button.danger:hover{--lip:var(--color-button-lip-danger)}#mode-switch button.active,.slot.selected{--lip:var(--color-button-lip-highlight)}.slot.drop-hover,.slot.drop-hover:hover:not(:disabled),.slot.drop-hover:active:not(:disabled){transform:scale(1.08)}button:focus-visible{outline:var(--button-ring) solid var(--color-accent-highlight);outline-offset:var(--button-ring-offset)}@media (prefers-reduced-motion:reduce){#btn-menu,#btn-saves,#help-button,#btn-settings,#btn-alerts,#btn-sound,#top-bar button,#zoom button,#menu button,#catalog-button,.slot,#part-inspector .move-pad button,.catalog-action,.dialog-button,.slider-reset,.help-close,.save-item button{transition:none}#btn-menu:hover,#btn-saves:hover,#help-button:hover,#btn-settings:hover,#btn-alerts:hover,#btn-sound:hover,#top-bar button:hover,#zoom button:hover,#menu button:hover,.catalog-action:hover,.dialog-button:hover{transform:none}}.key-row{align-items:center;gap:var(--space-sm);display:flex}.key-action-label{margin-top:var(--space-sm);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold)}.key-chips{align-items:center;gap:var(--space-sm);margin-top:var(--space-xs);font-size:var(--font-size-sm);flex-wrap:wrap;display:flex}.key-label.unbound{color:var(--color-accent-danger);font-weight:var(--font-weight-semibold)}.key-label.unbound.optional{color:inherit;opacity:var(--opacity-muted);font-weight:inherit}.key-chip{padding:var(--space-xs) var(--space-md);border-radius:var(--radius-sm);background:var(--color-surface-control);color:var(--color-text-primary);font:inherit;border:0}button.key-chip{cursor:pointer}button.key-chip:hover{background:var(--color-accent-danger)}.key-note{font-size:var(--font-size-xs);opacity:var(--opacity-muted)}.key-assign{min-width:0;padding-inline:var(--space-sm);flex:1 1 0}.key-clear{padding-inline:var(--space-md);flex:none;justify-content:center;align-items:center;display:flex}.key-message.error{color:var(--color-accent-highlight);opacity:1}#controls-panel .controls-warning{margin:var(--space-sm) 0 0;color:var(--color-accent-highlight)}.dialog.alerts{width:min(var(--size-alerts-width), 94vw);flex-direction:column;max-height:88vh;display:flex}.alerts-body{gap:var(--space-sm);padding-right:var(--space-sm);flex-direction:column;display:flex;overflow-y:auto}.alerts-body p{font-size:var(--font-size-sm);line-height:var(--line-height-normal);opacity:var(--opacity-muted);margin:0}.alerts-section{margin:var(--space-md) 0 0;font-size:var(--font-size-md);color:var(--color-accent-highlight)}.alert-row{justify-content:space-between;align-items:center;gap:var(--space-lg);width:100%;padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);background:var(--color-surface-control);color:var(--color-text-primary);font:inherit;font-size:var(--font-size-sm);text-align:left;border:0;display:flex}button.alert-row{cursor:pointer}.alert-row span:last-child{opacity:var(--opacity-muted);white-space:nowrap}
