From 829439a4faeb14cae1ada8930711ecd56ab663a7 Mon Sep 17 00:00:00 2001 From: Light1YT Date: Sun, 21 Jun 2026 01:46:00 +0500 Subject: [PATCH] feat(ptica): slow turntable rotation on insolation preview cube MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The «Инсоляционная матрица» preview cube now gently rotates (rotateY turntable with a constant rotateX tilt for depth) so the 3D module reads as alive without opening the drawer. Pure CSS; honours prefers-reduced-motion. --- .../analysis/[cad]/ptica/ptica.module.css | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/frontend/src/app/site-finder/analysis/[cad]/ptica/ptica.module.css b/frontend/src/app/site-finder/analysis/[cad]/ptica/ptica.module.css index f164d9c4..81df944d 100644 --- a/frontend/src/app/site-finder/analysis/[cad]/ptica/ptica.module.css +++ b/frontend/src/app/site-finder/analysis/[cad]/ptica/ptica.module.css @@ -2441,16 +2441,37 @@ } /* Инсоляционная матрица — faint preview massing + ПРЕВЬЮ placeholder */ +/* Ambient «turntable» rotation of the massing-preview cube — gives a sense of + the 3D module without opening the drawer. A constant slight rotateX keeps a + sliver of depth visible as it passes edge-on. */ +@keyframes pticaIsoSpin { + from { + transform: rotateX(14deg) rotateY(0deg); + } + to { + transform: rotateX(14deg) rotateY(360deg); + } +} .isoBoxPreview { height: 74px; display: grid; place-items: center; margin: 2px 0 10px; opacity: 0.55; + perspective: 540px; } .isoBoxPreview svg { width: 100%; height: 100%; + transform-style: preserve-3d; + transform-origin: 50% 50%; + will-change: transform; + animation: pticaIsoSpin 8s linear infinite; +} +@media (prefers-reduced-motion: reduce) { + .isoBoxPreview svg { + animation: none; + } } .isoPreviewLeft { fill: rgba(150, 192, 214, 0.1);