.world-slot-factory.is-unlocked{cursor:pointer}

.factory-building{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  overflow:visible;
  pointer-events:none;
}

.factory-old-art,
.factory-open-art{
  transition:opacity .85s ease,filter .85s ease;
}

.factory-open-art{opacity:0}
.factory-revealed.factory-open-art-ready .factory-open-art{opacity:1}
.factory-revealed.factory-open-art-ready .factory-old-art{opacity:0}

.factory-smoke{
  opacity:0;
  transition:opacity .6s;
  fill:#e1e8f0;
}
.factory-running .factory-smoke{opacity:1}
.factory-smoke ellipse{
  opacity:0;
  animation:factorySmoke 5.6s var(--delay) ease-out infinite;
  animation-play-state:paused;
  transform-box:view-box;
  transform-origin:602px 32px;
}
.factory-running .factory-smoke ellipse{animation-play-state:running}

.factory-awaiting-open .world-slot-halo{
  animation:factoryInvite 3s ease-in-out infinite;
}

.factory-opening .factory-building{
  animation:factoryReveal 1.3s ease both;
}
.factory-opening-sparks{
  opacity:0;
  fill:#fff2be;
}
.factory-opening .factory-opening-sparks{opacity:1}
.factory-opening .factory-opening-sparks circle{
  animation:factoryOpeningSpark 1.2s var(--delay) ease-out both;
}

.factory-production-burst,
.factory-window-burst{
  display:none;
  opacity:0;
  pointer-events:none;
}
.factory-running .factory-production-burst,
.factory-running .factory-window-burst{
  display:block;
  animation:factoryBurstEnvelope 12s linear infinite;
}
.factory-production-burst{
  filter:drop-shadow(0 0 6px #c29bff) drop-shadow(0 0 10px #a966ff80);
}
.factory-jet-particle{
  opacity:0;
  fill:var(--spark-color);
  animation:factoryJetFlight var(--flight) var(--phase) cubic-bezier(.12,.5,.42,1) infinite;
}
.factory-jet-aura{mix-blend-mode:screen}
.factory-window-burst{mix-blend-mode:normal}
/* Tiny radial halos are part of each spark, with no window-sized blur. */
.factory-window-spark{
  opacity:0;
  animation:factoryWindowSpark var(--flight) var(--phase) ease-out infinite;
  animation-play-state:paused;
  transform-box:view-box;
}
.factory-running .factory-window-spark{animation-play-state:running}

.factory-tooltip{
  position:fixed;
  z-index:40;
  box-sizing:border-box;
  width:260px;
  padding:13px 15px;
  border:1px solid #deefffa6;
  border-radius:18px;
  background:var(--elka-glass-surface);
  box-shadow:var(--elka-glass-rim);
  backdrop-filter:blur(20px) saturate(1.2);
  -webkit-backdrop-filter:blur(20px) saturate(1.2);
  color:#f7fbff;
  display:flex;
  flex-direction:column;
  gap:7px;
  text-shadow:0 1px 3px #18305866;
  font:500 12px/1.35 system-ui,sans-serif;
}
.factory-tooltip[hidden]{display:none}
.factory-tooltip-heading{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
}
.factory-tooltip-title{font-size:14px}
.factory-tooltip-close{
  display:grid;
  place-items:center;
  width:20px!important;
  height:20px;
  min-height:20px!important;
  flex:0 0 20px;
  margin:0!important;
  padding:0!important;
  border:1px solid #e1edff80!important;
  border-radius:50%!important;
  background:var(--elka-control-surface)!important;
  box-shadow:inset 0 0 5px #e6f3ff66,0 0 6px #d6edff40!important;
  color:#fff;
  cursor:pointer;
}
.factory-tooltip-close svg{
  width:16px;
  height:16px;
  fill:none;
  stroke:currentColor;
  stroke-width:2.4;
  stroke-linecap:round;
}
.factory-tooltip-close:hover{box-shadow:var(--elka-control-hover)!important}
.factory-tooltip-copy{color:#e0eafa}
.factory-tooltip-time{
  font-size:17px;
  font-variant-numeric:tabular-nums;
}
.factory-tooltip-time:empty,
.factory-tooltip-error:empty{display:none}
.factory-tooltip button[hidden]{display:none}
.factory-tooltip-error{
  color:#ffdae1;
  font-size:11px;
}
body.editing .factory-tooltip,
body.branch-round-active .factory-tooltip,
body.visiting-friend .factory-tooltip,
body.scene-overlay-open .factory-tooltip{
  display:none;
}

.factory-tooltip .factory-tooltip-action{
  width:auto;
  min-height:36px;
  margin:0;
  padding:9px 16px;
  border:1px solid #e1f5ff9c;
  border-radius:22px;
  background:var(--elka-positive-surface);
  box-shadow:var(--elka-control-glow);
  color:#fff;
  font:700 12px/1.2 system-ui,sans-serif;
  cursor:pointer;
}
.factory-tooltip .factory-tooltip-action:disabled{
  opacity:.42;
  cursor:default;
  box-shadow:none;
}
.factory-tooltip .factory-tooltip-action:focus-visible{
  outline:2px solid #f3ffff;
  outline-offset:3px;
}

.factory-tooltip .factory-progress-lamps{
  display:flex;
  justify-content:center;
  gap:4px;
  min-width:0;
}
.factory-tooltip .factory-progress-lamps[hidden]{display:none}
.factory-tooltip .factory-progress-lamp{
  display:grid;
  place-items:center;
  width:38px;
  height:52px;
  opacity:.24;
  filter:grayscale(1);
  transition:filter .5s,opacity .5s,transform .25s;
}
.factory-tooltip .factory-progress-lamp .factory-art-host--progress-bulb,
.factory-tooltip .factory-progress-lamp .factory-drawing{
  display:block;
  width:38px;
  height:52px;
}
.factory-tooltip .factory-progress-lamp .factory-drawing{
  overflow:visible;
}
.factory-tooltip .factory-progress-lamp .factory-drawing-lamp{
  animation:none;
}
.factory-tooltip .factory-progress-lamp.is-lit{
  opacity:1;
  filter:drop-shadow(0 0 5px #ffd78588);
}
.factory-tooltip .factory-progress-lamp.is-working{
  opacity:.72;
  animation:factoryTooltipLampBlink .9s ease-in-out infinite;
}
.factory-tooltip .factory-progress-lamps.is-ready .factory-progress-lamp{
  animation:factoryReadyLamp 1.3s ease-in-out infinite;
}

@keyframes factorySmoke{
  0%{opacity:0;transform:translate(0,0) scale(.6)}
  12%{opacity:.65}
  45%{opacity:.45}
  100%{opacity:0;transform:translate(var(--drift),-330px) scale(3.3)}
}
@keyframes factoryInvite{
  0%,100%{opacity:.24;filter:brightness(0) invert(1) blur(4px) drop-shadow(0 0 7px #fff0b9)}
  50%{opacity:.85;filter:brightness(0) invert(1) blur(5px) drop-shadow(0 0 17px #fff0b9)}
}
@keyframes factoryReveal{
  0%,100%{filter:brightness(1)}
  35%{filter:brightness(1.8) drop-shadow(0 0 12px #fff1bd)}
  65%{filter:brightness(1.2)}
}
@keyframes factoryOpeningSpark{
  0%{opacity:0;transform:translateY(0)}
  30%{opacity:1}
  100%{opacity:0;transform:translateY(-130px)}
}
@keyframes factoryBurstEnvelope{
  0%,23.5%,49%,100%{opacity:0}
  26%{opacity:.7}
  29%,38%{opacity:1}
  42%{opacity:.65}
  46%{opacity:.18}
}
@keyframes factoryJetFlight{
  0%{opacity:0;transform:translate(0,0)}
  9%{opacity:1}
  58%{opacity:.95;transform:translate(var(--peak-x),var(--peak-y))}
  80%{opacity:.6}
  100%{opacity:0;transform:translate(var(--drift),var(--end-y))}
}
@keyframes factoryWindowSpark{
  0%,100%{opacity:0;transform:translate(0,0)}
  12%{opacity:.95}
  34%{opacity:.7}
  50%{opacity:1}
  78%{opacity:0;transform:translate(var(--drift),var(--rise))}
  99%{opacity:0;transform:translate(var(--drift),var(--rise))}
}
@keyframes factoryTooltipLampBlink{
  0%,100%{opacity:.38;transform:scale(.97)}
  50%{opacity:1;transform:scale(1.03)}
}
@keyframes factoryReadyLamp{
  0%,100%{filter:drop-shadow(0 0 4px #ffd78566)}
  50%{filter:brightness(1.2) drop-shadow(0 0 8px #ffe1a999)}
}

@media(prefers-reduced-motion:reduce){
  .factory-smoke{display:none}
  .factory-awaiting-open .world-slot-halo{
    animation:none;
    opacity:.6;
  }
  .factory-opening .factory-building,
  .factory-opening .factory-opening-sparks circle,
  .factory-window-spark,
  .factory-tooltip .factory-progress-lamp{
    animation:none;
  }
  .factory-opening-sparks,
  .factory-running .factory-production-burst,
  .factory-running .factory-window-burst{
    display:none;
    animation:none;
  }
  .factory-old-art,
  .factory-open-art{transition:none}
}
