- Главная: тихая кнопка «Помахать» (web/js/wave.js), общий счётчик для всех посетителей - server/server.mjs: мини-API (/api/waves, /api/wave), счётчик хранится вне репозитория (/var/lib/vizitka-site/waves.json), лимит раз в секунду с IP, проверка Origin - deploy: systemd-сервис vizitka-api, проксирование /api в nginx, setup-server.sh ставит nodejs - CI: после git pull перезапускает API - Домен https://me.ibrash.duckdns.org вместо заглушки, исправлен пробел в шапке - README и заметки обновлены Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -305,3 +305,19 @@ a.tile:hover { transform: translateY(-4px); box-shadow: 0 16px 36px rgba(18, 26,
|
||||
/* последняя плитка: «список открытый» */
|
||||
.tile--more { background: transparent; box-shadow: none; border: 2px dashed var(--line); align-content: center; }
|
||||
.tile--more h3 { color: var(--accent); }
|
||||
|
||||
/* ===== «Помахать»: тихая кнопка со счётчиком (не выделяется, повторяет приветствие 👋) ===== */
|
||||
.wave-row { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem .9rem; margin-top: .3rem; padding-top: .9rem; border-top: 1px dashed var(--line); min-height: 3.9rem; }
|
||||
.wave-row.off { visibility: hidden; }
|
||||
.wave-btn { position: relative; display: inline-flex; align-items: center; gap: .4rem; min-height: 2.75rem; padding: 0 1rem; border: 1px solid var(--line); border-radius: 99px; background: transparent; color: var(--muted); font: 600 .92rem var(--font); cursor: pointer; -webkit-tap-highlight-color: transparent; transition: color .2s, border-color .2s, background .2s, transform .1s; }
|
||||
.wave-btn:hover { color: var(--ink); border-color: var(--accent); background: var(--card); }
|
||||
.wave-btn:active { transform: scale(.96); }
|
||||
.wave-btn[disabled] { cursor: default; }
|
||||
.wave-em { display: inline-block; transform-origin: 70% 70%; }
|
||||
.wave-btn.waving .wave-em { animation: wave 0.9s; }
|
||||
.wave-count { font-size: .88rem; color: var(--muted); font-variant-numeric: tabular-nums; }
|
||||
.wave-count b { color: var(--ink); font-weight: 700; }
|
||||
.wave-plus { position: absolute; right: .6rem; top: -.2rem; font-size: .85rem; font-weight: 700; color: var(--accent); pointer-events: none; animation: wave-plus .9s ease-out forwards; }
|
||||
@keyframes wave-plus { from { opacity: 0; transform: translateY(.3rem); } 25% { opacity: 1; } to { opacity: 0; transform: translateY(-1.5rem); } }
|
||||
@media (prefers-reduced-motion: no-preference) { .wave-row { animation-delay: .85s; } }
|
||||
.topnav .brand-rest { white-space: pre; } /* в flex-контейнере ведущий пробел иначе схлопывается */
|
||||
|
||||
Reference in New Issue
Block a user