{"version":3,"sources":["../../css/filters-config.css","../../css/particle-effects-config.css","../../css/specials-config.css","../../css/common.css"],"names":[],"mappings":"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","file":"fxmaster.css","sourcesContent":[".window-app.fxmaster-app,\n.ui-dialog.fxmaster-app {\n  height: auto !important;\n  max-height: var(--fxmaster-max-height) !important;\n  overflow: visible !important;\n}\n.window-app.fxmaster-app .window-content,\n.ui-dialog.fxmaster-app .window-content {\n  height: auto !important;\n  max-height: var(--fxmaster-max-height) !important;\n  overflow-y: auto !important;\n}\n\n.fxmaster-filters-container {\n  display: flex;\n  flex-direction: column;\n  width: 100%;\n  box-sizing: border-box;\n  max-height: var(--fxmaster-max-height);\n  overflow-y: auto;\n}\n\n#filters-config {\n  height: auto;\n  max-height: var(--fxmaster-max-height);\n  overflow: visible;\n}\n\n.fxmaster-filter-params {\n  display: grid;\n  grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));\n  gap: 0.75rem 1rem;\n}\n.fxmaster-filter-params label {\n  display: flex;\n  flex-direction: column;\n  font-size: var(--font-size-12);\n  gap: 0.25rem;\n}\n\n/* Open‐state boxing */\n#filters-config .fxmaster-filters-row.open {\n  border: 1px solid var(--color-warm-2);\n  border-bottom: none;\n  border-radius: var(--fxmaster-radius) var(--fxmaster-radius) 0 0;\n}\n#filters-config .fxmaster-filters-row.open + .fxmaster-filter-expand {\n  border: 1px solid var(--color-warm-2);\n  border-top: none;\n  border-radius: 0 0 var(--fxmaster-radius) var(--fxmaster-radius);\n  margin-bottom: 0.25rem;\n}\n","/* =========================================================\n   FXMaster — Particle Effects Config Window (full CSS)\n   ========================================================= */\n\n/* sensible defaults (overridden via JS when restoring autosize) */\n:root {\n  --fxmaster-max-height: 90vh;\n  --fxmaster-radius: 6px;\n}\n\n/* ——— Base app window: allow natural height growth ——— */\n.fxmaster-app.window-app,\n.fxmaster-app.ui-dialog {\n  height: auto !important;\n  min-height: 0 !important; /* prevent residual min-height from forcing scroll */\n  max-height: var(--fxmaster-max-height) !important;\n  overflow: visible !important;\n}\n\n/* inner content scrolls (not the shell) */\n.fxmaster-app .window-content {\n  height: auto !important;\n  min-height: 0 !important;\n  max-height: var(--fxmaster-max-height) !important;\n  overflow-y: auto !important;\n  overflow-x: hidden !important;\n}\n\n/* ——— “Autosize” switch: wipes inline sizes left by jQuery UI resize ———\n   Add/Remove .fxm-autosize on the .window-app from JS when rows open/close. */\n.window-app.fxm-autosize {\n  height: auto !important;\n  min-height: 0 !important;\n  max-height: var(--fxmaster-max-height) !important;\n  overflow: visible !important;\n}\n.window-app.fxm-autosize .window-content {\n  height: auto !important;\n  min-height: 0 !important;\n  max-height: var(--fxmaster-max-height) !important;\n  overflow-y: auto !important;\n  overflow-x: hidden !important;\n}\n/* while resizing, keep auto; jQuery UI adds these classes during drag */\n.window-app.fxm-autosize.ui-resizable,\n.window-app.fxm-autosize.ui-resizable-resizing {\n  height: auto !important;\n  min-height: 0 !important;\n}\n\n/* ——— App root (id) ——— */\n#particle-effects-config {\n  height: auto;\n  max-height: var(--fxmaster-max-height);\n  overflow: visible;\n}\n#particle-effects-config .window-content,\n.ui-dialog.fxmaster-app .ui-dialog-content {\n  height: auto;\n  min-height: 0; /* ensure no inherited min-height forces scrollbars */\n  max-height: var(--fxmaster-max-height);\n  overflow-y: auto;\n  overflow-x: hidden;\n}\n\n/* ====== Main grid ====== */\n.fxmaster-particles-container {\n  display: grid;\n  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n  gap: 1rem;\n  padding: 1rem;\n  box-sizing: border-box;\n  height: auto;\n  max-height: var(--fxmaster-max-height);\n  overflow: visible;\n}\n\n/* Column (left/right) wrappers that can scroll when needed */\n.fxmaster-particles-group-wrapper {\n  display: flex;\n  flex-direction: column;\n  gap: 0.25rem;\n  flex: 1 1 auto;\n  min-height: 0;\n  max-height: var(--fxmaster-max-height);\n  overflow-y: auto;\n  padding-right: 0.25rem;\n}\n\n/* When any row inside a column is open, let the column grow and let the window absorb it.\n   Modern browsers: :has(). For broader support, toggle .fxm-column-open from JS. */\n.fxmaster-particles-group-wrapper:has(.fxmaster-particles-row.open) {\n  max-height: none;\n  overflow: visible;\n}\n/* Fallback class (toggle from JS alongside expand): */\n.fxmaster-particles-group-wrapper.fxm-column-open {\n  max-height: none;\n  overflow: visible;\n}\n\n/* ====== Groups / Rows ====== */\n.fxmaster-particles-group {\n  cursor: pointer;\n}\n\n/* Open-state boxing */\n#particle-effects-config .fxmaster-particles-row.open {\n  border: 1px solid var(--color-warm-2);\n  border-bottom: none;\n  border-radius: var(--fxmaster-radius) var(--fxmaster-radius) 0 0;\n}\n#particle-effects-config .fxmaster-particles-row.open + .fxmaster-particle-expand {\n  border: 1px solid var(--color-warm-2);\n  border-top: none;\n  border-radius: 0 0 var(--fxmaster-radius) var(--fxmaster-radius);\n  margin-bottom: 0.25rem;\n}\n\n/* Expand panels: never scroll internally; let the column/window grow */\n#particle-effects-config .fxmaster-particle-expand,\n#particle-effects-config .fxmaster-particles-group-expand {\n  max-height: none;\n  overflow: visible;\n}\n\n/* ====== Param grid ====== */\n.fxmaster-particle-params {\n  display: grid;\n  grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));\n  gap: 0.75rem 1rem;\n}\n.fxmaster-particle-params label {\n  display: flex;\n  flex-direction: column;\n  font-size: var(--font-size-12);\n  gap: 0.25rem;\n}\n\n/* ====== Arrow offsets ====== */\n.fxmaster-arrow-group {\n  right: 0.5rem;\n}\n.fxmaster-arrow-row {\n  right: 3.2rem;\n}\n\n/* ====== Misc ====== */\n/* Resist accidental clipping anywhere in the FXMaster app window */\n.fxmaster-app * {\n  overflow-anchor: none;\n}\n","/* Adjust collapse‐arrow for specials */\n.fxmaster-filters-container .fxmaster-collapse-arrow {\n  right: 3.2rem;\n  opacity: 0.6;\n}\n\n/* ─────────────────────────────────────\n * Deprecation / warning notice (Animation Effects)\n * Can be collapsed to a single line.\n * ───────────────────────────────────── */\n.fxmaster.specials-management .fxm-notice {\n  display: flex;\n  align-items: flex-start;\n  gap: 0.5rem;\n  margin: 0 0 0.5rem 0;\n  padding: 0.5rem 0.6rem;\n  border: 1px solid var(--color-border);\n  border-radius: 4px;\n  background: rgba(0, 0, 0, 0.2);\n  color: var(--color-warm-1);\n}\n\n.fxmaster.specials-management .fxm-notice__toggle {\n  flex: 0 0 auto;\n  width: 1.6rem;\n  height: 1.6rem;\n  line-height: 1.6rem;\n  padding: 0;\n  border: 1px solid var(--color-border);\n  border-radius: 4px;\n  background: var(--color-bg);\n  cursor: pointer;\n}\n\n.fxmaster.specials-management .fxm-notice__toggle i {\n  font-size: 0.85rem;\n}\n\n.fxmaster.specials-management .fxm-notice__text {\n  flex: 1 1 auto;\n  min-width: 0; /* required for ellipsis inside flex */\n}\n\n/* Collapsed state: make it more compact (single-line strip) */\n.fxmaster.specials-management .fxm-notice.is-collapsed {\n  align-items: center;\n  padding: 0.25rem 0.5rem;\n  margin-bottom: 0.35rem;\n}\n\n.fxmaster.specials-management .fxm-notice.is-collapsed .fxm-notice__toggle {\n  min-width: 0;\n  min-height: 0;\n  width: 1.25rem;\n  height: 1.25rem;\n  line-height: 1.25rem;\n}\n\n.fxmaster.specials-management .fxm-notice.is-collapsed .fxm-notice__toggle i {\n  font-size: 0.75rem;\n}\n\n.fxmaster.specials-management .fxm-notice.is-collapsed .fxm-notice__text {\n  line-height: 1.2;\n  font-size: 0.9em;\n}\n\n.fxmaster.specials-management .fxm-notice.is-collapsed .fxm-notice__text {\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n}\n\n.fxmaster.specials-management .fxm-notice__link {\n  text-decoration: underline;\n}\n\n/* ─────────────────────────────────────\n * Specials filters bar (Animation Effects)\n * Layout: [Search] [Refresh] [Slider] [Tag Select]\n * ───────────────────────────────────── */\n.specials-filters-container {\n  display: flex;\n  flex-wrap: nowrap;\n  align-items: center;\n  padding: 0.75rem 0;\n  margin-bottom: 0.75rem;\n  border-bottom: 1px solid var(--color-border);\n  gap: 0.5rem;\n}\n\n/* Use gap, not margins, for spacing */\n.specials-filters-container > * {\n  margin: 0;\n}\n\n/* Search: flex-grow (left side) */\n.specials-filters-container .specials-search-input {\n  flex: 1 1 0;\n  min-width: 8rem;\n}\n\n/* Tag select: flex-grow (right side) */\n.specials-filters-container .specials-tag-filter {\n  flex: 1 1 0;\n  min-width: 8rem;\n}\n\n/* Middle controls: compact */\n.specials-filters-container .fxm-refresh-animations,\n.specials-filters-container .fxm-switch {\n  flex: 0 0 auto;\n  white-space: nowrap;\n}\n\n/* Refresh button styling */\n.specials-filters-container {\n  display: inline-flex;\n  align-items: center;\n  gap: 0.35rem;\n  padding: 0.25rem 0.6rem;\n  border-radius: 4px;\n  border: 1px solid var(--color-border);\n  background: var(--color-bg);\n  font-size: 0.85rem;\n  line-height: 1.2;\n  cursor: pointer;\n}\n.specials-filters-container .fxm-refresh-animations i {\n  font-size: 0.85rem;\n}\n.specials-filters-container .fxm-refresh-animations[disabled] {\n  opacity: 0.6;\n  cursor: not-allowed;\n}\n.specials-filters-container .fxm-refresh-animations.spinning i {\n  animation: fxmaster-spin 900ms linear infinite;\n}\n\n@keyframes fxmaster-spin {\n  from {\n    transform: rotate(0deg);\n  }\n  to {\n    transform: rotate(360deg);\n  }\n}\n\n/* Slider-style thumbnail toggle */\n.specials-filters-container .fxm-switch {\n  display: inline-flex;\n  align-items: center;\n  gap: 0.35rem;\n  user-select: none;\n  font-size: 0.8rem;\n}\n\n/* Visually hide the native checkbox but keep it accessible */\n.specials-filters-container .fxm-switch input[type=\"checkbox\"] {\n  position: absolute;\n  opacity: 0;\n  width: 0;\n  height: 0;\n}\n\n/* Track */\n.specials-filters-container .fxm-switch .fxm-slider {\n  position: relative;\n  width: 34px;\n  height: 18px;\n  border-radius: 999px;\n  background: var(--color-border);\n  box-shadow: inset 0 0 0 1px var(--color-shadow-dark);\n  cursor: pointer;\n  transition: background 150ms ease;\n}\n\n/* Thumb */\n.specials-filters-container .fxm-switch .fxm-slider::before {\n  content: \"\";\n  position: absolute;\n  top: 2px;\n  left: 2px;\n  width: 14px;\n  height: 14px;\n  border-radius: 50%;\n  background: var(--color-text-light-0);\n  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.35);\n  transform: translateX(0);\n  transition: transform 150ms ease;\n}\n\n/* Checked state */\n.specials-filters-container .fxm-switch input[type=\"checkbox\"]:checked + .fxm-slider {\n  background: var(--color-warm-2);\n}\n.specials-filters-container .fxm-switch input[type=\"checkbox\"]:checked + .fxm-slider::before {\n  transform: translateX(14px);\n}\n\n/* Label text next to slider */\n.specials-filters-container .fxm-switch .fxm-switch-label {\n  opacity: 0.85;\n}\n\n/* Match heights so the row feels cohesive */\n.specials-filters-container input[type=\"text\"],\n.specials-filters-container select {\n  height: 28px;\n}\n\n/* ─────────────────────────────────────\n * Popout layout\n * ───────────────────────────────────── */\n.fxmaster.specials-management.application-popout {\n  display: flex;\n  flex-direction: column;\n  height: 100%;\n}\n.fxmaster.specials-management.application-popout .directory-header {\n  flex: 0 0 auto;\n}\n.fxmaster.specials-management.application-popout .specials-filters-container {\n  flex: 0 0 auto;\n}\n.fxmaster.specials-management.application-popout .specials-list {\n  flex: 1 1 auto;\n  overflow-y: auto;\n  padding: 0.5rem;\n  display: flex;\n  flex-wrap: wrap;\n  gap: 0.5rem;\n}\n\n/* Thumbnails */\n.special-effects {\n  position: relative;\n  flex: 0 0 calc((100% - 5 * 0.5rem) / 6);\n  aspect-ratio: 1/1;\n  background: #000;\n  border: 1px solid var(--color-text-light-7);\n  overflow: hidden;\n  cursor: grab;\n}\n.special-effects video {\n  width: 100%;\n  height: 100%;\n  object-fit: contain;\n  opacity: 0.8;\n}\n.special-effects:hover video {\n  opacity: 1;\n}\n.specials-list .hidden {\n  display: none;\n}\n\n/* Controls overlay */\n.special-effects .controls {\n  position: absolute;\n  bottom: 4px;\n  right: 4px;\n  display: flex;\n  gap: 0.25rem;\n  background: rgba(0, 0, 0, 0.4);\n  padding: 2px;\n  border-radius: 0.25rem;\n}\n.special-effects .controls a i {\n  color: var(--color-text-light-0);\n  font-size: 1rem;\n}\n\n/* Action toggles */\n.fxmaster.specials-management .action-toggle {\n  margin-left: 0.5rem;\n}\n.fxmaster.specials-management .directory-header .action-toggle:first-of-type {\n  margin-left: auto;\n}\n\n/* Placeholders */\n.special-placeholder {\n  width: 100%;\n  height: 100%;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  background: #000;\n  border: 1px solid var(--color-text-light-7);\n  color: var(--color-text-light-7);\n  font-size: 2rem;\n  opacity: 0.4;\n}\n.special-effects:hover .special-placeholder {\n  opacity: 1;\n}\n.special-placeholder img {\n  max-width: 50%;\n  max-height: 50%;\n}\n\n/* Fallback media */\n.special-effects img.special-thumbnail,\n.special-effects video.special-fallback-video {\n  width: 100%;\n  height: 100%;\n  object-fit: contain;\n  display: block;\n}\n\n/* Keep generic margins for other uses (overridden above in the bar) */\n.specials-search-input {\n  margin-right: 0.5rem;\n}\n.specials-tag-filter {\n  margin-left: 0.5rem;\n}\n\n/* Align inputs and copy-buttons in one row */\n.fxmaster.specials-config .form-group .form-fields {\n  display: flex;\n  align-items: center;\n}\n\n/* Let the text input take up all available width */\n.fxmaster.specials-config .form-fields input[type=\"text\"] {\n  flex: 1;\n}\n\n/* Give the copy button a bit of breathing room */\n.fxmaster.specials-config .form-fields .fxmaster-special-copy {\n  margin-left: 0.5rem;\n  flex-shrink: 0;\n}\n\n/* Space out side-by-side inputs (e.g. Scale X/Y) */\n.fxmaster.specials-config .form-group .form-fields input + input {\n  margin-left: 0.5rem;\n}\n\n/* Space out each form-group vertically */\n.fxmaster.specials-config .form-group {\n  margin-bottom: 0.5rem;\n}\n\n/* Tweak footer spacing */\n.fxmaster.specials-config .sheet-footer {\n  margin-top: 0.5rem;\n}\n\n/* Ensure labels sit a bit above their inputs */\n.fxmaster.specials-config .form-group label {\n  display: block;\n  margin-bottom: 0.25rem;\n}\n\n/* Favorite row: full-width flex container */\n.fxmaster.specials-config .form-group.favorite-row .form-fields {\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  width: 100%;\n}\n\n/* Remove any bottom-margin on that label */\n.fxmaster.specials-config .form-group.favorite-row label {\n  margin: 0;\n  align-self: center;\n}\n\n/* Ensure the checkbox itself is centered */\n.fxmaster.specials-config .form-group.favorite-row input[type=\"checkbox\"] {\n  margin: 0;\n  align-self: center;\n  vertical-align: middle;\n}\n",":root {\n  --fxmaster-radius: 0.5rem;\n  --fxmaster-border: 1px solid var(--color-border-dark-4);\n  --fxmaster-max-height: 85vh;\n  --fxmaster-max-height: 85dvh;\n  --fxm-switch-track-bg: var(--color-border, #555);\n  --fxm-switch-track-border: var(--color-border-dark-3, #111);\n  --fxm-switch-thumb-bg: #ffffff;\n  --fxm-switch-thumb-border: rgba(0, 0, 0, 0.65);\n}\n\n/* Base styles for headers & rows */\n.fxmaster-filters-header,\n.fxmaster-filters-row,\n.fxmaster-api-effects-header,\n.fxmaster-api-effects-row,\n.fxmaster-particles-group,\n.fxmaster-particles-row {\n  display: flex;\n  align-items: center;\n  padding: 0.25rem 0.5rem;\n  gap: 1rem;\n  border-radius: var(--fxmaster-radius);\n  background: rgba(255, 255, 255, 0.025);\n  transition: background 0.2s ease;\n  position: relative;\n}\n\n/* Header variations */\n.fxmaster-filters-header,\n.fxmaster-api-effects-header,\n.fxmaster-particles-group {\n  font-weight: bold;\n  border-bottom: 2px solid var(--color-border-dark-2);\n  background: rgba(255, 255, 255, 0.05);\n}\n\n/* Hover for rows */\n.fxmaster-filters-row:hover,\n.fxmaster-api-effects-row:hover,\n.fxmaster-particles-row:hover {\n  background: rgba(255, 255, 255, 0.05);\n  cursor: pointer;\n}\n\n/* Name flex */\n.fxmaster-filter-name,\n.fxmaster-particle-name,\n.fxmaster-particles-group-name {\n  display: flex;\n  align-items: center;\n  gap: 0.5rem;\n  flex: 1;\n  white-space: nowrap;\n}\n\n/* Toggle buttons */\n.fxmaster-particle-toggle,\n.fxmaster-filter-toggle,\n.fxmaster-special-copy {\n  contain: layout paint;\n  will-change: transform;\n  transform: translateZ(0);\n  width: 1.875rem;\n  height: 1.875rem;\n  position: relative;\n  padding: 0;\n  box-sizing: border-box;\n}\n.fxmaster-particle-toggle span,\n.fxmaster-filter-toggle span,\n.fxmaster-special-copy span {\n  position: absolute;\n  inset: 0;\n  display: grid;\n  place-items: center;\n  font-size: 1.125rem;\n  transform: translateY(1px);\n}\n.fxmaster-filter-toggle.enabled,\n.fxmaster-particle-toggle.enabled {\n  background-color: var(--color-warm-2);\n  border-color: var(--color-warm-3);\n}\n.fxmaster-filter-toggle:hover,\n.fxmaster-particle-toggle:hover,\n.fxmaster-special-copy:hover {\n  background-color: var(--color-warm-2);\n}\n.fxmaster-filter-toggle:focus,\n.fxmaster-particle-toggle:focus,\n.fxmaster-special-copy:focus {\n  outline: 2px solid var(--color-warm-3);\n  outline-offset: 2px;\n}\n.fxmaster-filter-toggle:active,\n.fxmaster-particle-toggle:active,\n.fxmaster-special-copy:active {\n  outline: var(--color-warm-3);\n}\n\n/* Expand-panel basics */\n.fxmaster-filter-expand,\n.fxmaster-api-effects-expand,\n.fxmaster-particles-group-expand,\n.fxmaster-particle-expand {\n  display: none;\n  flex-direction: column;\n  box-sizing: border-box;\n  padding: 0.5rem 1.25rem 0.75rem;\n  background: rgba(255, 255, 255, 0.015);\n  border-left: 1px dashed var(--color-border-dark-4);\n  border-right: 1px dashed var(--color-border-dark-4);\n  border-bottom: 1px dashed var(--color-border-dark-4);\n  border-radius: 0 0 var(--fxmaster-radius) var(--fxmaster-radius);\n}\n.fxmaster-filters-row.open + .fxmaster-filter-expand,\n.fxmaster-api-effects-row.open + .fxmaster-api-effects-expand,\n.fxmaster-particles-group.open + .fxmaster-particles-group-expand,\n.fxmaster-particles-row.open + .fxmaster-particle-expand {\n  display: flex;\n}\n\n/* Collapse-arrow base & rotation */\n.fxmaster-collapse-arrow {\n  position: absolute;\n  pointer-events: none;\n  transition: transform 0.2s ease;\n}\n.fxmaster-filters-row.open .fxmaster-collapse-arrow i,\n.fxmaster-api-effects-row.open .fxmaster-collapse-arrow i,\n.fxmaster-particles-group.open .fxmaster-collapse-arrow i,\n.fxmaster-particles-row.open .fxmaster-collapse-arrow i {\n  transform: rotate(180deg);\n}\n\n/* Range inputs */\n.fxmaster-input-range {\n  display: flex;\n  align-items: center;\n  gap: 0.5rem;\n}\n.fxmaster-input-range input[type=\"range\"] {\n  flex: 1;\n  --range-thumb-background-color: var(--color-warm-2);\n  --range-thumb-border-color: var(--color-warm-3);\n}\n.fxmaster-input-range .range-value {\n  min-width: 2ch;\n  font-variant-numeric: tabular-nums;\n  color: var(--color-text-light-1);\n}\n\n/* Region-behavior config */\n.region-behavior-config .behavior-settings {\n  display: none;\n  margin-left: 1.5em;\n  border-left: 2px solid var(--color-border);\n  padding-left: 0.5em;\n}\n.region-behavior-config .behavior-header {\n  display: flex;\n  cursor: pointer;\n  font-weight: bold;\n}\n.region-behavior-config .behavior-header:has(input[type=\"checkbox\"]:checked) ~ .behavior-settings {\n  display: flex;\n}\n\n/* Make the whole switch clearly clickable */\n.fxm-switch {\n  display: flex;\n  align-items: center;\n  gap: 0.35rem;\n  user-select: none;\n  line-height: 1;\n  font-size: 0.9em;\n  cursor: pointer;\n  margin-inline: 0;\n  position: relative;\n}\n\n/* Visually hide the native checkbox but keep it accessible */\n.fxm-switch input[type=\"checkbox\"] {\n  position: absolute;\n  opacity: 0;\n  top: 0;\n  left: 0;\n  width: 38px;\n  height: 24px;\n  margin: 0;\n}\n\n/* Track – slightly taller */\n.fxm-switch .fxm-slider {\n  all: unset;\n  position: relative;\n  display: inline-block;\n  box-sizing: border-box;\n  width: 38px;\n  height: 24px;\n  border-radius: 999px;\n  background: var(--fxm-switch-track-bg) !important;\n  border: 1px solid var(--fxm-switch-track-border) !important;\n  box-shadow: inset 0 0 0 1px var(--color-shadow-dark);\n  cursor: pointer;\n  transition: background 150ms ease, border-color 150ms ease, filter 150ms ease;\n}\n\n/* Thumb – scaled up and centered vertically */\n.fxm-switch .fxm-slider::before {\n  content: \"\";\n  position: absolute;\n  top: 3px;\n  left: 2px;\n  width: 16px;\n  height: 16px;\n  border-radius: 50%;\n  background: var(--fxm-switch-thumb-bg) !important;\n  border: 1px solid var(--fxm-switch-thumb-border) !important;\n  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.35);\n  transform: translateX(0);\n  transition: transform 150ms ease;\n  z-index: 1;\n}\n\n/* Checked state – adjust travel distance for new sizes */\n.fxm-switch input[type=\"checkbox\"]:checked + .fxm-slider::before {\n  transform: translateX(16px);\n}\n\n/* Checked state */\n.fxm-switch input[type=\"checkbox\"]:checked + .fxm-slider {\n  background: var(--color-warm-2) !important;\n  border-color: var(--color-warm-3) !important;\n}\n\n/* Focus ring for keyboard users */\n.fxm-switch input[type=\"checkbox\"]:focus-visible + .fxm-slider {\n  outline: 2px solid var(--color-warm-3);\n  outline-offset: 2px;\n}\n\n/* Optional hover polish */\n.fxm-switch .fxm-slider:hover::before {\n  box-shadow: 0 0 6px rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.35);\n}\n\n.fxmaster-input-checkbox,\n.fxmaster-input-color {\n  display: flex;\n  align-items: center;\n  gap: 0.5rem;\n  justify-content: flex-start;\n}\n.fxmaster-effects-visibility .fxmaster-visibility-list-scroll {\n  display: flex;\n  flex-direction: column;\n  gap: 0.5rem;\n  flex: 1 1 auto;\n  min-height: 0;\n  overflow-y: auto;\n}\n\n.fxmaster-effects-visibility form.fxmaster-v2-form {\n  height: 100%;\n  display: flex;\n  flex-direction: column;\n  min-height: 0;\n}\n\n.fxmaster-effects-visibility .fxmaster-v2-body {\n  display: flex;\n  flex-direction: column;\n  flex: 1 1 auto;\n  min-height: 0;\n}\n\n.fxmaster-effects-visibility .fxmaster-visibility-row {\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  border: 1px solid var(--color-border);\n  border-radius: 6px;\n  padding: 6px 8px;\n  gap: 0.75rem;\n}\n\n.fxmaster-effects-visibility .fxmaster-visibility-row--active {\n  background: color-mix(in srgb, var(--color-bg) 88%, var(--color-warm-2) 12%);\n  border-color: var(--color-warm-2);\n}\n\n.fxmaster-effects-visibility .fxmaster-visibility-row--inactive {\n  background: transparent;\n  border-color: var(--color-border);\n  opacity: 0.75;\n}\n\n.fxmaster-effects-visibility .fxmaster-visibility-label {\n  display: inline-flex;\n  align-items: center;\n  gap: 0.5rem;\n}\n\n.fxmaster-effects-visibility .fxmaster-visibility-actions {\n  display: flex;\n  align-items: center;\n  gap: 8px;\n}\n\n.fxmaster-effects-visibility .fxmaster-visibility-icon {\n  border-radius: 4px;\n}\n\n/* API Effects (scene flags added via API) */\n.fxmaster-api-effects-container {\n  display: flex;\n  flex-direction: column;\n  gap: 0.35rem;\n}\n\n.fxmaster-api-effects-header {\n  gap: 0.75rem;\n}\n\n.fxmaster-api-effects-col {\n  font-size: 0.85em;\n  opacity: 0.9;\n}\n\n.fxmaster-api-effects-row {\n  gap: 0.75rem;\n}\n\n.fxmaster-api-effects-kind {\n  display: flex;\n  align-items: center;\n  gap: 0.5rem;\n  flex: 0 0 8.5rem;\n  min-width: 8.5rem;\n}\n\n.fxmaster-api-effects-kind-label {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n\n.fxmaster-api-effects-name {\n  flex: 1;\n  min-width: 0;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n\n.fxmaster-api-effects-type {\n  flex: 1;\n  min-width: 0;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n\n.fxmaster-api-effects-delete {\n  width: 1.875rem;\n  height: 1.875rem;\n  display: grid;\n  place-items: center;\n  padding: 0;\n}\n\n.fxmaster-api-effects-delete:hover {\n  background-color: var(--color-warm-2);\n}\n\n.fxmaster-api-effects-details {\n  width: 100%;\n}\n\n.fxmaster-api-effects-details-title {\n  font-weight: bold;\n  margin-bottom: 0.35rem;\n}\n\n.fxmaster-api-effects-pre {\n  margin: 0;\n  padding: 0.5rem;\n  border: 1px dashed var(--color-border-dark-4);\n  border-radius: var(--fxmaster-radius);\n  background: rgba(0, 0, 0, 0.15);\n  white-space: pre-wrap;\n  word-break: break-word;\n  max-height: 22rem;\n  overflow: auto;\n}\n\n.fxmaster-api-effects-empty {\n  padding: 0.5rem;\n  opacity: 0.85;\n}\n\n/* -------------------------------------------- */\n/* API Effects management window                */\n/* -------------------------------------------- */\n\n.fxmaster-api-effects-container {\n  max-height: var(--fxmaster-max-height);\n  overflow: auto;\n  display: flex;\n  flex-direction: column;\n  gap: 0.25rem;\n}\n\n.fxmaster-api-effects-header {\n  position: sticky;\n  top: 0;\n  z-index: 1;\n}\n\n.fxmaster-api-effects-col {\n  font-weight: bold;\n}\n\n.fxmaster-api-effects-col.kind,\n.fxmaster-api-effects-kind {\n  flex: 0 0 8.5rem;\n  gap: 0.4rem;\n  display: flex;\n  align-items: center;\n}\n\n.fxmaster-api-effects-col.name,\n.fxmaster-api-effects-name {\n  flex: 1;\n  min-width: 8rem;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n\n.fxmaster-api-effects-col.type,\n.fxmaster-api-effects-type {\n  flex: 1;\n  min-width: 8rem;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n\n.fxmaster-api-effects-col.actions {\n  flex: 0 0 3rem;\n  text-align: right;\n}\n\n.fxmaster-api-effects-delete {\n  contain: layout paint;\n  will-change: transform;\n  transform: translateZ(0);\n  width: 1.875rem;\n  height: 1.875rem;\n  padding: 0;\n  box-sizing: border-box;\n}\n\n.fxmaster-api-effects-delete:hover {\n  background-color: var(--color-warm-2);\n}\n\n.fxmaster-api-effects-delete:focus {\n  outline: 2px solid var(--color-warm-3);\n  outline-offset: 2px;\n}\n\n.fxmaster-api-effects-details {\n  display: flex;\n  flex-direction: column;\n  gap: 0.5rem;\n}\n\n.fxmaster-api-effects-details-title {\n  font-weight: bold;\n  opacity: 0.9;\n}\n\n.fxmaster-api-effects-pre {\n  margin: 0;\n  padding: 0.5rem;\n  border-radius: 0.35rem;\n  border: 1px solid var(--color-border-dark-4);\n  background: rgba(0, 0, 0, 0.15);\n  max-height: 40vh;\n  overflow: auto;\n  white-space: pre-wrap;\n  word-break: break-word;\n  font-family: var(--font-mono, monospace);\n  font-size: 0.85em;\n}\n\n.fxmaster-api-effects-empty {\n  padding: 0.75rem;\n  opacity: 0.85;\n}\n\n.fxmaster-api-effects-row .fxmaster-collapse-arrow {\n  right: 3.2rem;\n  opacity: 0.6;\n}\n\n/* Open-state boxing */\n#api-effects-config .fxmaster-api-effects-row.open {\n  border: 1px solid var(--color-warm-2);\n  border-bottom: none;\n  border-radius: var(--fxmaster-radius) var(--fxmaster-radius) 0 0;\n}\n\n#api-effects-config .fxmaster-api-effects-row.open + .fxmaster-api-effects-expand {\n  border: 1px solid var(--color-warm-2);\n  border-top: none;\n  border-radius: 0 0 var(--fxmaster-radius) var(--fxmaster-radius);\n  margin-bottom: 0.25rem;\n}\n\n/* -------------------------------------------- */\n/* API Effects: Edit button + per-instance editor */\n/* -------------------------------------------- */\n\n/* Widen the Actions column */\n.fxmaster-api-effects-col.actions {\n  flex: 0 0 5.5rem;\n}\n\n/* Style the new Edit button to match Delete */\n.fxmaster-api-effects-edit {\n  contain: layout paint;\n  will-change: transform;\n  transform: translateZ(0);\n  width: 1.875rem;\n  height: 1.875rem;\n  padding: 0;\n  box-sizing: border-box;\n}\n\n.fxmaster-api-effects-edit:hover {\n  background-color: var(--color-warm-2);\n}\n\n.fxmaster-api-effects-edit:focus {\n  outline: 2px solid var(--color-warm-3);\n  outline-offset: 2px;\n}\n\n.fxmaster-api-effects-edit:disabled {\n  opacity: 0.45;\n  cursor: not-allowed;\n}\n\n/* Shift the collapse arrow left to account for two action buttons */\n.fxmaster-api-effects-row .fxmaster-collapse-arrow {\n  right: 5.6rem;\n}\n\n/* ---- Single-instance API Effect Editor ---- */\n\n.window-app.api-effect-editor,\n.ui-dialog.api-effect-editor {\n  height: auto !important;\n  max-height: var(--fxmaster-max-height) !important;\n  overflow: visible !important;\n}\n\n.window-app.api-effect-editor .window-content,\n.ui-dialog.api-effect-editor .window-content {\n  height: auto !important;\n  max-height: var(--fxmaster-max-height) !important;\n  overflow-y: auto !important;\n}\n\n.fxmaster-api-effect-editor {\n  display: flex;\n  flex-direction: column;\n  gap: 0.25rem;\n  padding: 0.75rem;\n  box-sizing: border-box;\n  max-height: var(--fxmaster-max-height);\n}\n\n/* Ensure the filter editor's collapse arrow is positioned (NOT using .fxmaster-filters-container here) */\n.fxmaster-api-effect-editor .fxmaster-filters-row .fxmaster-collapse-arrow {\n  right: 3.2rem;\n  opacity: 0.6;\n}\n\n/* Open-state boxing (mirror filters/particles managers) */\n.fxmaster-api-effect-editor .fxmaster-filters-row.open {\n  border: 1px solid var(--color-warm-2);\n  border-bottom: none;\n  border-radius: var(--fxmaster-radius) var(--fxmaster-radius) 0 0;\n}\n\n.fxmaster-api-effect-editor .fxmaster-filters-row.open + .fxmaster-filter-expand {\n  border: 1px solid var(--color-warm-2);\n  border-top: none;\n  border-radius: 0 0 var(--fxmaster-radius) var(--fxmaster-radius);\n  margin-bottom: 0.25rem;\n}\n\n.fxmaster-api-effect-editor .fxmaster-particles-row.open {\n  border: 1px solid var(--color-warm-2);\n  border-bottom: none;\n  border-radius: var(--fxmaster-radius) var(--fxmaster-radius) 0 0;\n}\n\n.fxmaster-api-effect-editor .fxmaster-particles-row.open + .fxmaster-particle-expand {\n  border: 1px solid var(--color-warm-2);\n  border-top: none;\n  border-radius: 0 0 var(--fxmaster-radius) var(--fxmaster-radius);\n  margin-bottom: 0.25rem;\n}\n\n.fxmaster-api-effect-delete {\n  contain: layout paint;\n  will-change: transform;\n  transform: translateZ(0);\n  width: 1.875rem;\n  height: 1.875rem;\n  position: relative;\n  padding: 0;\n  box-sizing: border-box;\n}\n\n.fxmaster-api-effect-delete:hover {\n  background-color: var(--color-warm-2);\n}\n\n.fxmaster-api-effect-delete:focus {\n  outline: 2px solid var(--color-warm-3);\n  outline-offset: 2px;\n}\n\n.fxmaster-api-effect-title {\n  min-width: 0;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n\n.fxmaster-api-effect-id {\n  margin-left: 0.5rem;\n  font-family: var(--font-mono, monospace);\n  font-size: 0.8em;\n  opacity: 0.75;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n\n.fxmaster-api-effect-hint {\n  display: flex;\n  flex-direction: column;\n  gap: 0.25rem;\n  margin: 0.25rem 0 0.75rem;\n  opacity: 0.9;\n}\n\n.fxmaster-api-effect-empty {\n  padding: 0.75rem;\n  opacity: 0.85;\n}\n\n.fxmaster-api-effects-edit,\n.fxmaster-api-effect-delete {\n  display: grid;\n  place-items: center;\n}\n"]}