/* ============================================================================
   הזחילה · הסגנון · #347, 16.9.2026 — נלווה ל-shared/crawl.js
   ============================================================================
   ⚠ **מקור אחד.** הקובץ הזה נטען בכל דף שטוען את shared/crawl.js — האתר
     הציבורי, האזור האישי, השאלון, הדוח והניהול. אין עותק שני בשום גיליון
     אחר; שני עותקים של אותו כלל סוטים זה מזה, וזו רק שאלה לאיזה כיוון.
   ⚠ כל מה שכאן הוא **מיקום ושכבה בלבד**. שום transition ושום animation —
     התנועה כולה נבנית ב-WAAPI מתוך crawl.js, ולכן היא ניתנת לביטול,
     להיפוך ולמדידה. כלל CSS שמנפיש כאן היה מתנגש איתה בשקט.
   ========================================================================= */

/* שכבת הרוחות: מסך מלא, שקופה למגע, ואינה יוצרת גלילה.
   ⚠ z-index 80 — **מתחת** לכותרת (100) ומתחת לכפתור הצף (90), כדי שרוח
     של שורה שיצאה לא תכסה לעולם את הפסים או את התפריט הפתוח. */
.crawl-layer {
  position: fixed;
  inset: 0;
  z-index: 80;
  pointer-events: none;
  overflow: hidden;
  contain: layout style size;
}

/* רוח של אלמנט שיצא — הצומת המקורי עצמו, שנתלה מחדש כאן.
   ⚠ pointer-events ו-user-select: גם בדפדפן שאינו תומך ב-inert, אי אפשר
     ללחוץ עליה, לסמן אותה או להגיע אליה.

   🔴 **‎display: block‎ — נמדד בפריימים (Chromium 393, 60ms לתוך התנועה).**
     הרוח יצאה **בלתי נראית**, ובמקומה נשאר חור ורוד ריק בדיוק בגודל הפאנל
     שנסגר. הסיבה: המראה של רכיב תלוי לרוב ב**אב** שלו —
     ‎.bk-slots { display: none }‎ ורק ‎.bk-day-item.is-open .bk-slots‎ מדליק
     אותו. ברגע שהרוח עוברת לשכבה היא כבר אינה בתוך ‎.is-open‎, והכלל
     ה"כבוי" חוזר לשלוט. 🔑 **הרוח מאבדת את ההקשר שהחיה אותה** — וזה נכון
     לכל אקורדיון, לשונית או פאנל באתר, לא רק כאן.
     ⚠ ‎!important‎ בכוונה: הוא צריך לגבור על כל כלל מקורי, גם על אחד
     ספציפי יותר. הרוח חיה 220ms ואינה משתתפת בפריסה, ולכן ‎block‎ עם
     רוחב וגובה מפורשים הוא הקופסה הנכונה לכולן. */
.crawl-layer .crawl-ghost {
  display: block !important;
  pointer-events: none !important;
  user-select: none;
  margin: 0 !important;
  max-width: none;
  max-height: none;
  overflow: hidden;
}

/* הד השובל — מלבן אחיד בצבע הרקע של המקור. ⚠ בלי filter, בלי box-shadow
   ובלי blur: על Helio P35 כל אחד מהם הוא שכבת ציור נוספת בכל פריים. */
.crawl-layer .crawl-echo {
  pointer-events: none;
  will-change: transform, opacity;
  opacity: 0;
}

/* ⚠ prefers-reduced-motion — crawl.js כבר אינו מזיז דבר במצב הזה (דהייה
   שקטה בלבד). הכלל כאן הוא **חגורה שנייה**: גם אם סקריפט כלשהו יוסיף
   הנפשה על השכבה, לא תהיה שם תנועה. */
@media (prefers-reduced-motion: reduce) {
  .crawl-layer .crawl-echo { display: none; }
  .crawl-layer .crawl-ghost { transform: none !important; }
}

/* ⚠ בהדפסה אין רוחות. הדוח מודפס דרך tools/report-pdf, ושכבה קבועה
   במסמך מודפס הופכת לעמוד ריק נוסף. */
@media print {
  .crawl-layer { display: none !important; }
}

/* ── גילוי ‎<details>‎ שזוחל אל גובהו · #356 ──────────────────────────────
   ⚠ ‎overflow:hidden‎ **רק בזמן הזחילה.** במנוחה הוא היה חותך טבעת מיקוד של
     קישור בתוך התשובה, ובלעדיו התוכן היה גולש מהעוטף בזמן ההנפשה. */
.crawl-disc.is-crawling { overflow: hidden; }
