/* Theme surface and loading fallback; ready models use the real 3D dot ground. */
.preview-wave-surface{
  background-color:color-mix(in srgb,var(--bg) 82%,#445078);
  background-image:radial-gradient(ellipse at 50% 36%,rgba(122,132,255,.16),transparent 68%);
  color:var(--ink);
  transition:background-color var(--ui,220ms) ease,color var(--ui,220ms) ease;
}
.preview-wave-stage{isolation:isolate}
.preview-wave-field{
  position:absolute;z-index:0;inset:0;display:grid;place-items:center;
  overflow:hidden;pointer-events:none;perspective:1000px;
  color:color-mix(in srgb,var(--ink) 46%,#7a84ff);
  opacity:.9;transition:opacity var(--ui,220ms) var(--ease-out);
}
.preview-wave-grid{
  display:grid;grid-template-rows:repeat(21,minmax(0,1fr));
  width:140%;height:165%;transform:rotateX(38deg) rotateZ(-9deg);
  mask-image:radial-gradient(ellipse at center,#000 35%,transparent 78%);
  -webkit-mask-image:radial-gradient(ellipse at center,#000 35%,transparent 78%);
}
.preview-wave-grid i{
  display:block;min-height:0;
  background:radial-gradient(circle,currentColor 1.2px,transparent 1.6px) center/26px 100%;
  opacity:.35;animation:preview-wave 4800ms var(--ease-in-out,cubic-bezier(.77,0,.175,1)) infinite;
  animation-play-state:paused;
}
.preview-wave-stage[data-wave-active=true] .preview-wave-grid i{animation-play-state:running}
.preview-wave-stage[data-floor-ready=true]>.preview-wave-field{opacity:0;visibility:hidden;transition:opacity var(--ui,220ms) var(--ease-out),visibility 0s var(--ui,220ms)}
.preview-wave-stage[data-floor-ready=true] .preview-wave-grid i{animation-play-state:paused}
.home-charger-stage[data-state=error] .preview-wave-grid i,
.home-charger-stage[data-state=ready][data-playing=false] .preview-wave-grid i,
.assembly-layout[data-state=error] .preview-wave-grid i,
.model-stage:focus-within .preview-wave-grid i{animation-play-state:paused}
.preview-wave-stage .model-poster{opacity:0}
.model-column.preview-wave-surface .model-loading{background:transparent;color:var(--ink2)}
.model-column.preview-wave-surface #modelLoadText{
  padding:22px 32px;background:radial-gradient(ellipse,color-mix(in srgb,var(--bg) 90%,transparent),transparent 72%);
}
.model-column.preview-wave-surface :is(.model-label,.model-foot){color:var(--ink2)}
.model-annotations{position:absolute;z-index:2;left:0;right:0;bottom:0;padding:10px 16px 12px;pointer-events:none;background:transparent}
.model-annotations .model-foot,.model-annotations .dimension-context{margin:0;padding:0;background:transparent;border:0;line-height:1.6;color:var(--ink2);font-size:10px}
.model-annotations .dimension-context{margin-top:4px}
@keyframes preview-wave{
  0%,100%{transform:translateY(-5px);opacity:.26}
  50%{transform:translateY(5px);opacity:.62}
}
@media(prefers-reduced-motion:reduce){
  .preview-wave-grid i{animation:none;opacity:.4}
  .preview-wave-surface{transition:none}
}
@media print{.preview-wave-field{display:none}}
