fix(textbooks): убрать hover-preview карточек §§ — постоянно перекрывал соседей

Сначала пробовали left:105% — лежало на правом соседе.
Затем top:calc(100%+8px) — лежало на нижнем ряду.

Третий вариант (intelligent positioning) был бы over-engineered. Проще — выпилить вообще: карточки и так показывают название и % прогресса (круговой), темы видны в самом параграфе после клика.

Удалено:
- <div class='psel-card-preview'> из innerHTML карточек
- CSS правила .psel-card-preview, .psel-preview-* (оставлен display:none!important на случай если в скриптах ещё ссылается на класс)
This commit is contained in:
Maxim Dolgolyov
2026-05-27 12:57:04 +03:00
parent d0484f9e55
commit deffa3c714
+3 -21
View File
@@ -451,20 +451,8 @@ input,select,textarea{font-family:inherit}
.game-over-record{display:inline-flex;align-items:center;gap:8px;padding:8px 16px;background:linear-gradient(135deg,#fcd34d,#f59e0b);color:#451a03;border-radius:10px;font-weight:800;font-size:.95rem;margin:10px 0;animation:recordPulse 1s ease infinite}
@keyframes recordPulse{0%,100%{box-shadow:0 0 0 0 rgba(245,158,11,.5)}50%{box-shadow:0 0 0 8px rgba(245,158,11,0)}}
/* Task 7: psel-card hover preview */
.psel-card{overflow:visible}
/* restore border-radius clip for the active stripe via pseudo-element only on non-preview */
.psel-card-preview{display:none;position:absolute;left:50%;top:calc(100% + 8px);transform:translateX(-50%);width:220px;max-width:90vw;background:var(--card);border:1.5px solid var(--pri);border-radius:12px;padding:12px 14px;z-index:200;box-shadow:var(--sh2);pointer-events:none;animation:previewIn .18s ease}
@keyframes previewIn{from{opacity:0;transform:translateX(-50%) translateY(-6px)}to{opacity:1;transform:translateX(-50%) translateY(0)}}
.psel-card:hover .psel-card-preview{display:block}
/* стрелка-носик у превью, указывает на карточку */
.psel-card-preview::before{content:'';position:absolute;top:-6px;left:50%;transform:translateX(-50%) rotate(45deg);width:10px;height:10px;background:var(--card);border-left:1.5px solid var(--pri);border-top:1.5px solid var(--pri)}
.psel-preview-title{font-size:.72rem;font-weight:800;color:var(--pri2);text-transform:uppercase;letter-spacing:.06em;margin-bottom:6px}
.psel-preview-topic{font-size:.78rem;color:var(--text);margin-bottom:2px;padding-left:8px;border-left:2px solid var(--sec-acc,var(--pri))}
.psel-preview-bar{height:5px;background:rgba(233,30,99,.12);border-radius:3px;overflow:hidden;margin-top:8px}
.psel-preview-fill{height:100%;background:var(--pri);border-radius:3px;transition:width .4s}
.psel-preview-pct{font-size:.72rem;color:var(--muted);margin-top:2px}
@media(max-width:768px){.psel-card-preview{display:none!important}}
/* hover-preview карточек выключен — мешал перекрытием соседних рядов */
.psel-card-preview{display:none!important}
/* Task 8: section fade transitions */
.sec.fade-out{animation:secFadeOut .18s ease forwards}
@@ -1051,13 +1039,7 @@ function buildParaSelector(){
<path class="psel-prog-bg" d="M18 2.5 a 15.5 15.5 0 1 1 0 31 a 15.5 15.5 0 1 1 0 -31"/>
<path class="psel-prog-fg" d="M18 2.5 a 15.5 15.5 0 1 1 0 31 a 15.5 15.5 0 1 1 0 -31" stroke-dasharray="${dashArr}, ${circleCircumference}"/>
<text x="18" y="21" text-anchor="middle">${progPct}%</text>
</svg>
<div class="psel-card-preview">
<div class="psel-preview-title">${p.name}</div>
${topicsHtml}
<div class="psel-preview-bar"><div class="psel-preview-fill" style="width:${progPct}%"></div></div>
<div class="psel-preview-pct">${progPct}% пройдено</div>
</div>`;
</svg>`;
card.addEventListener('click', ()=>goTo(p.id));
g.appendChild(card);
});