#generateLoadingOverlay{
  display:none; position:fixed; inset:0; background:var(--md-color-grey-white); z-index:var(--z-loading);
  flex-direction:column; align-items:center; justify-content:center; gap:40px;
}
#generateLoadingOverlay.open{ display:flex; }

.generate-loading-logo{ width:52px; height:52px; animation:generate-logo-spin .6s ease-out, generate-logo-pulse 1.1s ease-in-out .6s infinite; }
@keyframes generate-logo-spin{
  0%{ opacity:0; transform:rotate(-50deg) scale(0.7); }
  100%{ opacity:1; transform:rotate(0deg) scale(1); }
}
@keyframes generate-logo-pulse{
  0%, 100%{ opacity:1; transform:scale(1); }
  50%{ opacity:0.55; transform:scale(1.08); }
}

.generate-loading-viewport{ height:106px; overflow:hidden; width:280px; -webkit-mask-image:linear-gradient(to bottom, transparent, var(--md-color-grey-black) 25%, var(--md-color-grey-black) 75%, transparent); mask-image:linear-gradient(to bottom, transparent, var(--md-color-grey-black) 25%, var(--md-color-grey-black) 75%, transparent); }
.generate-loading-track{ display:flex; flex-direction:column; gap:8px; transition:transform .35s cubic-bezier(.4,0,.2,1); }
.generate-loading-track.no-transition{ transition:none; }
.generate-loading-row{
  height:30px; display:flex; align-items:center; justify-content:center;
  font-family:var(--font-sans); font-size:var(--text-xl); color:var(--ui-text); text-align:center;
  opacity:0.3; filter:blur(2px); transition:opacity .18s ease, filter .18s ease, font-size .18s ease;
}
.generate-loading-row.active{
  opacity:1; filter:blur(0); font-weight:var(--font-weight-semibold); font-size:var(--text-4xl);
  background:linear-gradient(90deg, var(--ui-muted-light) 0%, var(--ui-text-2) 50%, var(--ui-muted-light) 100%);
  background-size:200% 100%; -webkit-background-clip:text; background-clip:text; color:transparent;
  animation:generate-loading-pulse 1.6s ease-in-out infinite;
}
@keyframes generate-loading-pulse{
  0%, 100%{ opacity:1; }
  50%{ opacity:0.5; }
}

.generate-loading-simple-text{
  display:none; font-family:var(--font-sans); font-size:var(--text-xl); font-weight:var(--font-weight-semibold);
  background:linear-gradient(90deg, var(--ui-muted-light) 0%, var(--ui-text-2) 50%, var(--ui-muted-light) 100%);
  background-size:200% 100%; -webkit-background-clip:text; background-clip:text; color:transparent;
  animation:generate-loading-pulse 1.6s ease-in-out infinite;
}
#generateLoadingOverlay.simple .generate-loading-viewport{ display:none; }
#generateLoadingOverlay.simple .generate-loading-simple-text{ display:block; }
