splash: эффекты I + K — wobble пилы + опилки

I: sawWobble — весь логотип покачивается ±1.5° каждые 5.5с
   (имитация работающего инструмента). Анимация на wrapper,
   чтобы не конфликтовать с breathing scale на самом SVG.

K: splash-dust — 8 опилок-точек разлетаются от пилы по
   индивидуальным траекториям (--dx/--dy через CSS-vars),
   разные delays и durations для естественности.

Cache bust v=20260513zk.
This commit is contained in:
wasrusgen 2026-05-13 22:36:23 +03:00
parent 00de1baef9
commit 0aa7a8e35a
2 changed files with 68 additions and 13 deletions

View File

@ -219,6 +219,12 @@ button { font: inherit; cursor: pointer; border: none; background: none; color:
.loader-logo path { fill: var(--walnut, #6B4A2B); } .loader-logo path { fill: var(--walnut, #6B4A2B); }
/* Бренд @wasrusgen1 на splash — SVG-лого + CRM */ /* Бренд @wasrusgen1 на splash — SVG-лого + CRM */
.brand-logo-wrap {
position: relative;
display: inline-block;
animation: sawWobble 5.5s ease-in-out infinite;
transform-origin: 50% 35%; /* центр диска пилы */
}
.brand-logo { .brand-logo {
width: 70%; width: 70%;
max-width: 260px; max-width: 260px;
@ -228,6 +234,43 @@ button { font: inherit; cursor: pointer; border: none; background: none; color:
animation: logoBreath 2.2s ease-in-out infinite; animation: logoBreath 2.2s ease-in-out infinite;
filter: drop-shadow(0 6px 16px rgba(44, 62, 80, 0.18)); filter: drop-shadow(0 6px 16px rgba(44, 62, 80, 0.18));
} }
/* Опилки — точки летают вокруг пилы */
.splash-dust {
position: absolute;
inset: -10% -20% -10% -20%;
pointer-events: none;
}
.splash-dust .dust {
position: absolute;
width: 3px;
height: 3px;
background: #2C3E50;
border-radius: 50%;
opacity: 0;
will-change: transform, opacity;
}
/* 8 точек с разными траекториями */
.splash-dust .d1 { left: 30%; top: 50%; animation: dustFly 3.6s ease-out 0s infinite; --dx:-30px; --dy:-50px; }
.splash-dust .d2 { left: 35%; top: 45%; animation: dustFly 4.2s ease-out 0.4s infinite; --dx:-50px; --dy:-30px; }
.splash-dust .d3 { left: 25%; top: 55%; animation: dustFly 3.2s ease-out 0.8s infinite; --dx:-60px; --dy:20px; }
.splash-dust .d4 { left: 40%; top: 60%; animation: dustFly 5.0s ease-out 0.2s infinite; --dx:-20px; --dy:50px; }
.splash-dust .d5 { left: 65%; top: 55%; animation: dustFly 3.8s ease-out 0.6s infinite; --dx: 50px; --dy: 30px; }
.splash-dust .d6 { left: 60%; top: 50%; animation: dustFly 4.6s ease-out 1.0s infinite; --dx: 60px; --dy:-20px; }
.splash-dust .d7 { left: 70%; top: 45%; animation: dustFly 3.4s ease-out 0.3s infinite; --dx: 40px; --dy:-50px; }
.splash-dust .d8 { left: 75%; top: 60%; animation: dustFly 4.0s ease-out 0.9s infinite; --dx: 70px; --dy: 40px; }
@keyframes dustFly {
0% { opacity: 0; transform: translate(0, 0) scale(0.4); }
15% { opacity: 0.55; }
60% { opacity: 0.35; }
100% { opacity: 0; transform: translate(var(--dx), var(--dy)) scale(1.1); }
}
@keyframes sawWobble {
0%, 100% { transform: rotate(-1deg); }
50% { transform: rotate(1.5deg); }
}
.brand-tagline-gold { .brand-tagline-gold {
font-family: "Inter", system-ui, sans-serif; font-family: "Inter", system-ui, sans-serif;
font-weight: 800; font-weight: 800;

View File

@ -12,25 +12,37 @@
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Geist:wght@400;500;600&family=Newsreader:ital,wght@0,400..600;1,400..600&family=Instrument+Serif:ital@0;1&family=JetBrains+Mono:wght@400;500&family=Cormorant+Garamond:ital,wght@1,400;1,500;1,600&family=Caveat:wght@500;700&display=swap"> <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Geist:wght@400;500;600&family=Newsreader:ital,wght@0,400..600;1,400..600&family=Instrument+Serif:ital@0;1&family=JetBrains+Mono:wght@400;500&family=Cormorant+Garamond:ital,wght@1,400;1,500;1,600&family=Caveat:wght@500;700&display=swap">
<script src="https://telegram.org/js/telegram-web-app.js"></script> <script src="https://telegram.org/js/telegram-web-app.js"></script>
<link rel="stylesheet" href="assets/styles.css?v=20260513zj"> <link rel="stylesheet" href="assets/styles.css?v=20260513zk">
<link rel="stylesheet" href="assets/podbor.css?v=20260513zj"> <link rel="stylesheet" href="assets/podbor.css?v=20260513zk">
</head> </head>
<body> <body>
<!-- Splash — лого @wasrusgen1 в кривых (золото), CRM как слоган --> <!-- Splash — лого @wasrusgen1 + опилки + wobble -->
<div class="loader splash" id="splash"> <div class="loader splash" id="splash">
<img class="brand-logo" src="assets/wasrusgen-logo.svg?v=20260513zj" alt="@wasrusgen1"> <div class="brand-logo-wrap">
<img class="brand-logo" src="assets/wasrusgen-logo.svg?v=20260513zk" alt="@wasrusgen1">
<div class="splash-dust" aria-hidden="true">
<span class="dust d1"></span>
<span class="dust d2"></span>
<span class="dust d3"></span>
<span class="dust d4"></span>
<span class="dust d5"></span>
<span class="dust d6"></span>
<span class="dust d7"></span>
<span class="dust d8"></span>
</div>
</div>
<div class="loader-bar"></div> <div class="loader-bar"></div>
<div class="brand-tagline-gold">CRM</div> <div class="brand-tagline-gold">CRM</div>
</div> </div>
<main id="app"></main> <main id="app"></main>
<script src="assets/icons.js?v=20260513zj"></script> <script src="assets/icons.js?v=20260513zk"></script>
<script src="assets/podbor.config.js?v=20260513zj"></script> <script src="assets/podbor.config.js?v=20260513zk"></script>
<script src="assets/podbor.picts.js?v=20260513zj"></script> <script src="assets/podbor.picts.js?v=20260513zk"></script>
<script src="assets/podbor.js?v=20260513zj"></script> <script src="assets/podbor.js?v=20260513zk"></script>
<script src="assets/clients.js?v=20260513zj"></script> <script src="assets/clients.js?v=20260513zk"></script>
<script src="assets/zamer-picts.js?v=20260513zj"></script> <script src="assets/zamer-picts.js?v=20260513zk"></script>
<script src="assets/measurements.js?v=20260513zj"></script> <script src="assets/measurements.js?v=20260513zk"></script>
<script src="assets/request.js?v=20260513zj"></script> <script src="assets/request.js?v=20260513zk"></script>
<script src="assets/app.js?v=20260513zj"></script> <script src="assets/app.js?v=20260513zk"></script>
</body> </body>
</html> </html>