  /* ═══ פונטים ═══
     היו נטענים מ-Google. ההערה שעמדה כאן קודם תיארה תיקון crossorigin שנועד לאפשר
     ל-service worker לשמור אותם · אבל sw.js דוחה כל בקשה חוצת-מקור בשני שערים
     נפרדים (origin שונה, ו-type!=='basic'), ולכן הפונטים מעולם לא נשמרו והממשק
     נפל לפונט מערכת בכל פתיחה אופליין. באפליקציה שמבטיחה עבודה אופליין.
     עכשיו הם same-origin ונכנסים ל-cache בלי לגעת ב-fetch handler בכלל.

     שישה קבצים, 152KB. פחות ממה שנראה, משתי סיבות:
     · שניהם פונטים משתנים · קובץ אחד נושא את כל טווח המשקלים. Google הגישה בדיוק
       את אותו קובץ לכל אחד מהמשקלים שביקשנו; 24 הצהרות היו 8 קבצים ייחודיים.
     · Heebo 300 ו-Frank Ruhl Libre 500 נטענו ולא היו בשימוש באף כלל CSS. לא ירדו.
     בונוס מהטווח הרציף: font-weight:600 בכפתור ההתחברות (‏.au-tabs) נטען היום כ-700
     כי 600 לא הוזמן מעולם. עכשיו הוא מקבל 600 אמיתי.
     math ו-symbols של Heebo לא ירדו · סימני מתמטיקה, אין להם תו באפליקציה. */
  @font-face{font-family:'Frank Ruhl Libre';font-style:normal;font-weight:400 900;font-display:swap;
    src:url(fonts/frank-ruhl-libre-hebrew.woff2) format('woff2');
    unicode-range:U+0307-0308, U+0590-05FF, U+200C-2010, U+20AA, U+25CC, U+FB1D-FB4F;}
  @font-face{font-family:'Frank Ruhl Libre';font-style:normal;font-weight:400 900;font-display:swap;
    src:url(fonts/frank-ruhl-libre-latin-ext.woff2) format('woff2');
    unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
  @font-face{font-family:'Frank Ruhl Libre';font-style:normal;font-weight:400 900;font-display:swap;
    src:url(fonts/frank-ruhl-libre-latin.woff2) format('woff2');
    unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
  @font-face{font-family:'Heebo';font-style:normal;font-weight:400 700;font-display:swap;
    src:url(fonts/heebo-hebrew.woff2) format('woff2');
    unicode-range:U+0307-0308, U+0590-05FF, U+200C-2010, U+20AA, U+25CC, U+FB1D-FB4F;}
  @font-face{font-family:'Heebo';font-style:normal;font-weight:400 700;font-display:swap;
    src:url(fonts/heebo-latin-ext.woff2) format('woff2');
    unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
  @font-face{font-family:'Heebo';font-style:normal;font-weight:400 700;font-display:swap;
    src:url(fonts/heebo-latin.woff2) format('woff2');
    unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
  :root{
    --paper:#f6f1e7; --paper-deep:#efe7d6; --card:#fffdf8; --ink:#2c2620; --ink-soft:#5e564a;   /* היה #736a5c = 4.32:1 על --paper-deep, מתחת ל-AA; עכשיו עובר גם שם */
    --gold:#c9962f; --gold-ink:#76560f; --accent:#b5482e; --accent-deep:#8f3620; --green:#437147; --line:#e3d8c4;
    --shadow:0 10px 30px -14px rgba(90,60,20,.4);
    /* ===== עומק · נוסף 21.8.2026 =====
       ⭐ המודל לא הומצא כאן. מסך ההתחברות כבר החזיק אותו במלואו · כיוון אור אחד,
       קו ספקולרי פנימי, ושקעים אמיתיים · והוא היה כלוא שם. שאר האפליקציה קיבלה
       טוקן אחד (--shadow, 13 שימושים) ועוד 27 צללים ייחודיים בלי כיוון אור משותף,
       ולכן הכרטיסים נקראו כמודבקים ולא כמונחים.
       ⛔ חם בלבד. צל אפור על שמנת נקרא כלכלוך · זה כתוב בהערה במסך ההתחברות.
       ⭐ הקו הלבן הפנימי הוא מה שעושה את העבודה: הוא ההבדל בין מלבן לבין משטח
       מואר, והוא עולה אפס. */
    --lift-1:inset 0 1px 0 rgba(255,255,255,.90), 0 1px 2px rgba(120,84,48,.07);
    --lift-2:inset 0 1px 0 rgba(255,255,255,.92), 0 1px 2px rgba(120,84,48,.09),
             0 8px 18px -12px rgba(120,84,48,.28);
    /* ⭐ ההפך ממורם · שקוע. שתי רמות (מורם מול שקוע) נקראות עמוק יותר משלוש
       רמות של מורם, וזה החצי שלא היה בשימוש בשום מקום מחוץ למסך ההתחברות. */
    --well:inset 0 2px 4px rgba(120,84,48,.11), inset 0 -1px 0 rgba(255,255,255,.70);
  }
  *{box-sizing:border-box;margin:0;padding:0}
  /* ⭐ 21.9.2026 · board308 חלק 1: היה height:100% על שניהם, ולכן הקופסה של ה-body
     עצמו (וכל רקע שמצויר עליה, כולל הילות המסכים) נעצרת בגובה החלון (100% = viewport)
     ולא גדלה עם התוכן שגולש מתחתיה. בעמוד שגובהו האמיתי גדול מהחלון (רוב המסכים) הרקע
     נחתך בדיוק בשולי המסך הראשון, וכל מה שמתחתיו חוזר לנייר חלק. min-height נותן לקופסה
     רצפה של גובה המסך אבל מרשה לה לגדול איתו, כמו שכל שאר האתר כבר מניח שהיא עושה. */
  html,body{min-height:100%}
  /* ⭐ 2.10.2026 · screens-fix · «רקע שנגמר בקו לפני הקצה הימני» (צילומי ספארי): אלמנט רחב מהמסך (המייל המלא
     בכפתור השם בבית) מרחיב את הדף, וספארי מצייר את הרקע רק לרוחב החלון המקורי. הדף לא יכול להתרחב הצידה, וכל מה
     שגולש נחתך בקצה ולא מושך את הרקע. clip אחרי hidden: דפדפן ישן שאינו מכיר clip נשאר עם hidden. */
  html{overflow-x:hidden;overflow-x:clip}
  body{
    font-family:"Heebo",sans-serif;background:var(--paper);color:var(--ink);
    line-height:1.5;-webkit-tap-highlight-color:transparent;
    padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);
  }
  /* ===== תגובת לחיצה · נוסף 21.8.2026 =====
     ⛔ הליקוי, מדוד: בגיליון היו **אפס** כללי `:active`, מול **42** כללי `:hover`
     שכולם יושבים מאחורי `@media (hover:hover) and (pointer:fine)` · שאילתה
     שאינה נכונה בשום טלפון. יחד עם `-webkit-tap-highlight-color:transparent`
     בשורה 60, שמבטל גם את המשוב של הדפדפן עצמו, התוצאה היא ש**שום לחיצה
     בטלפון לא ייצרה תגובה ויזואלית**. רוב הלומדים כאן על טלפון.
     ⭐ 90ms נמצא בתוך חלון 80-150 שהמדריך קובע למשוב לחיצה.
     ⭐ `transform` בלבד ולא `translateY` או `padding`: הוא אינו משנה פריסה,
     ולכן שכן אינו זז כשלוחצים · זה מה שהופך משוב לתחושה ולא לקפיצה. */
  .btn,.pbtn,.tile,.big-tile,.lang-card,.lp-card,.install-cta,.seg button,.s-opt,
  .lv-opts button,.ask-opts button,.fb-kinds button,.m-head,
  .rev-chip,.cw,.wc-prac,.wc-alt,.wc-reveal,.hint-btn,.was-right{
      transition:transform .09s cubic-bezier(.25,.46,.45,.94),
                 box-shadow .2s cubic-bezier(.215,.61,.355,1),
                 border-color .2s cubic-bezier(.215,.61,.355,1),
                 background-color .2s cubic-bezier(.215,.61,.355,1)}
  .btn:not(:disabled):active,.pbtn:not(:disabled):active,.tile:active,.big-tile:active,
  .lang-card:active,.lp-card:active,.install-cta:active,.seg button:active,
  .s-opt:not(:disabled):active,.lv-opts button:not(:disabled):active,
  .ask-opts button:not(:disabled):active,.fb-kinds button:active,
  .m-head:active,.rev-chip:active,.cw:active,
  .wc-prac:active,.wc-alt:active,.wc-reveal:active,.hint-btn:active,.was-right:active{
      transform:scale(.978)}
  @media (prefers-reduced-motion:reduce){
    .btn:active,.pbtn:active,.tile:active,.big-tile:active,.lang-card:active,
    .lp-card:active,.install-cta:active,.seg button:active,.s-opt:active,
    .lv-opts button:active,.ask-opts button:active,.fb-kinds button:active,
    .m-head:active,.rev-chip:active,.cw:active,
    .wc-prac:active,.wc-alt:active,.wc-reveal:active,.hint-btn:active,.was-right:active{
      transform:none;background-color:var(--paper-deep)}}
  /* ⭐ גרעין נייר · ~400 בתים, data URI, אלפא בלבד ובלי שום צבע חדש.
     האסתטיקה היא נייר חם ולא היה לה שום מרקם · זה הדבר היחיד כאן שנותן לרקע
     גוף. z-index:-1 ו-pointer-events:none · הוא אינו יכול לחסום לחיצה.
     ⚠ #auth יושב ב-z-index:70 ולכן ממילא מעליו. */
  body::before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;opacity:.035;
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)'/%3E%3C/svg%3E")}
  .wrap{max-width:640px;margin:0 auto;padding:22px 18px 60px}
  /* ספארי באייפון, כשהאפליקציה פתוחה כאתר ולא כאפליקציה מותקנת.
     שורת הכתובת התחתונה של ספארי מרחפת מעל התוכן ואינה נכללת ב-env(safe-area-inset-bottom)
     כשהיא מוצגת, ולכן 60px מלמטה לא הספיקו: הכפתור התחתון בתרגול · "הבא ←" · נחתך בדיוק
     על ידה. דווח על ידי משתמש (5.8.2026).
     המחלקה נקבעת ב-JS (isIOS && !isStandalone) ולא רק ב-@media (display-mode: browser),
     כי אותה שאילתה אינה נתמכת בגרסאות iOS ישנות · ושם בדיוק הבעיה חיה.
     ההוספה היא לגובה הגלילה בלבד: כך הגבול התחתון של הדף הוא מה שמסתתר מאחורי שורת
     הכתובת, ולא הכפתור. */
  body.ios-web .wrap{padding-bottom:calc(60px + 68px)}
  .hidden{display:none!important}
  /* For text that only a screen reader should get. NOT display:none and NOT visibility:hidden -- 
     both of those remove the node from the accessibility tree, which would make a live region
     announce nothing at all. The clip-rect technique keeps it in the tree at zero visual size. */
  .sr-only{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;
       clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}
  h1,h2,h3{font-family:"Frank Ruhl Libre",serif}
  /* #76560f (הערך של --gold-ink, הוכהה מ-#8a6512 ב-2.10) ולא --gold: הזהב #c9962f על הנייר = 2.36:1, מתחת ל-AA גם לטקסט גדול. */
  .kicker{font-size:.72rem;letter-spacing:.22em;color:#76560f;font-weight:700;text-transform:uppercase}
  .rule{height:2px;background:linear-gradient(90deg,var(--gold),transparent);margin:10px 0 20px;border-radius:2px}
  button{font-family:inherit;cursor:pointer}

  /* top bar */
  .topbar{display:flex;align-items:center;gap:10px;margin-bottom:12px}
  .topbar .back{background:transparent;border:1px solid var(--line);border-radius:10px;padding:8px 14px;font-weight:500;color:var(--ink-soft)}
  @media (hover:hover) and (pointer:fine){.topbar .back:hover{border-color:var(--ink-soft);color:var(--ink)}}
  .topbar .sp{flex:1}
  .brand{font-family:"Frank Ruhl Libre",serif;font-weight:900;font-size:1.15rem}

  /* buttons */
  .btn{font-family:"Heebo";font-weight:700;font-size:1rem;border:none;border-radius:14px;padding:15px 22px;transition:transform .18s,scale .18s,opacity .18s,color .18s,background-color .18s,border-color .18s,box-shadow .18s,fill .18s,stroke .18s,filter .18s}
  .btn-primary{background:linear-gradient(180deg,var(--accent),var(--accent-deep));color:#fff;box-shadow:var(--shadow)}  /* not gold→rust: white on gold measured 2.66:1, below AA */
  @media (hover:hover) and (pointer:fine){.btn-primary:hover{transform:translateY(-2px)}}
  .btn-primary:disabled{opacity:.45;transform:none;box-shadow:none;cursor:not-allowed}
  .btn-ghost{background:transparent;border:1px solid var(--line);color:var(--ink-soft)}
  @media (hover:hover) and (pointer:fine){.btn-ghost:hover{border-color:var(--ink-soft);color:var(--ink)}}
  .btn-danger{background:var(--accent);color:#fff}
  .btn-block{display:block;width:100%}
  .row{display:flex;gap:10px}
  .row>*{flex:1}
  /* segmented direction control */
  .seg{display:flex;gap:6px;background:var(--paper-deep);border:1px solid var(--line);border-radius:12px;padding:5px}
  .seg button{flex:1;border:none;background:transparent;color:var(--ink-soft);font-family:"Heebo";font-weight:700;font-size:.82rem;padding:9px 5px;border-radius:8px;transition:transform .15s,scale .15s,opacity .15s,color .15s,background-color .15s,border-color .15s,box-shadow .15s,fill .15s,stroke .15s,filter .15s}
  .seg button.active{background:linear-gradient(180deg,var(--gold-ink),var(--accent));color:#fff;box-shadow:var(--shadow)}

  /* WELCOME */
  #welcome{padding-top:6vh}
  .welcome-head{text-align:center;margin-bottom:30px}
  .w-title{font-size:clamp(2rem,7vw,2.9rem);font-weight:900;line-height:1.15;margin-top:4px}
  .w-sub{color:var(--ink-soft);font-size:.95rem;margin-top:8px}
  .lang-cards{display:grid;grid-template-columns:1fr 1fr;gap:14px}
  @media(max-width:420px){.lang-cards{grid-template-columns:1fr}}
  .lang-card{
    background:var(--card);border:1px solid var(--line);border-radius:20px;padding:18px 16px 16px;
    text-align:start;transition:transform .18s,scale .18s,opacity .18s,color .18s,background-color .18s,border-color .18s,box-shadow .18s,fill .18s,stroke .18s,filter .18s;box-shadow:var(--shadow);position:relative;overflow:hidden;
  }
  .lang-card::before{content:"";position:absolute;inset:0 0 auto 0;height:4px;background:linear-gradient(90deg,var(--gold),var(--accent))}
  .lang-card.en::before{background:linear-gradient(90deg,#4e7d4e,#2f6f8f)}
  @media (hover:hover) and (pointer:fine){.lang-card:hover{transform:translateY(-4px);border-color:var(--gold)}}
  @media (hover:hover) and (pointer:fine){.lang-card.en:hover{border-color:#2f6f8f}}
  .lang-flag{font-size:1.6rem;line-height:1}
  .lang-card h2{font-size:1.35rem;font-weight:900}
  .lc-head{display:flex;align-items:center;gap:9px;margin-bottom:12px}
  .lc-head h2{flex:1;text-align:start}
  .lc-pct{font-family:"Cascadia Mono",Consolas,monospace;font-size:1.05rem;color:var(--accent)}
  .lang-card.en .lc-pct{color:#2f6f8f}
  .lc-nums{display:flex;align-items:baseline;gap:12px;margin-top:10px;
    font-size:.72rem;color:var(--ink-soft)}
  .lc-nums b{font-family:"Frank Ruhl Libre",serif;font-size:1.15rem;font-weight:900;
    color:var(--ink);margin-inline-end:3px}
  .lc-of{margin-inline-start:auto}
  .lang-prog{height:6px;border-radius:3px;background:var(--paper-deep);margin-top:8px;overflow:hidden;box-shadow:var(--well)}
  .lang-prog i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--gold),var(--accent));transition:transform .4s,scale .4s,opacity .4s,color .4s,background-color .4s,border-color .4s,box-shadow .4s,fill .4s,stroke .4s,filter .4s}
  .lang-card.en .lang-prog i{background:linear-gradient(90deg,#4e7d4e,#2f6f8f)}
  .w-foot{text-align:center;color:var(--ink-soft);font-size:.72rem;margin-top:26px}

  /* HOME */
  .home-head{text-align:center;margin-bottom:6px}
  .home-head h1{font-size:clamp(1.9rem,6vw,2.6rem);font-weight:900}
  .home-head p{color:var(--ink-soft);font-size:.92rem}
  .totalpill{display:inline-block;margin-top:8px;background:var(--paper-deep);border:1px solid var(--line);border-radius:999px;padding:5px 14px;font-size:.8rem;color:var(--ink-soft)}
  .section-t{font-size:.78rem;font-weight:700;letter-spacing:.12em;color:var(--ink-soft);margin:24px 4px 12px;text-transform:uppercase}
  .grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:12px}
  .tile{position:relative;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:16px 12px 14px;text-align:center;transition:transform .15s,scale .15s,opacity .15s,color .15s,background-color .15s,border-color .15s,box-shadow .15s,fill .15s,stroke .15s,filter .15s;overflow:hidden}
  @media (hover:hover) and (pointer:fine){.tile:hover{transform:translateY(-3px);border-color:var(--gold);box-shadow:var(--shadow)}}
  .tile .num{font-family:"Frank Ruhl Libre",serif;font-size:1.9rem;font-weight:900;line-height:1}
  .tile .lbl{font-size:.72rem;color:var(--ink-soft);margin-top:3px}
  .tile .mini{margin-top:10px;height:6px;border-radius:3px;background:var(--paper-deep);overflow:hidden;display:flex}
  .tile .mini i{height:100%}
  .tile .mini .s{background:var(--green)} .tile .mini .w{background:var(--accent)} .tile .mini .n{background:var(--gold)}
  /* fourth segment: words skipped after the level test. Without it the bar summed to
     (total-skipped)/total and a unit read 44% empty at B1, 76% at C1 -- for a learner who
     had done nothing wrong. */
  .tile .mini .k{background:var(--line)}
  .big-tiles{display:grid;grid-template-columns:1fr 1fr;gap:12px}
  .big-tile{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:18px;text-align:right;transition:transform .15s,scale .15s,opacity .15s,color .15s,background-color .15s,border-color .15s,box-shadow .15s,fill .15s,stroke .15s,filter .15s}
  @media (hover:hover) and (pointer:fine){.big-tile:hover{transform:translateY(-3px);border-color:var(--gold);box-shadow:var(--shadow)}}
  .big-tile .emoji{font-size:1.5rem}
  .big-tile h3{font-size:1.05rem;margin-top:6px}
  .big-tile p{font-size:.78rem;color:var(--ink-soft)}

  /* SCOPE screen */
  .scope-head h1{font-size:clamp(1.7rem,5vw,2.2rem);font-weight:900}
  .donut-wrap{display:flex;align-items:center;gap:20px;background:var(--card);border:1px solid var(--line);border-radius:18px;padding:20px;margin:18px 0}
  .donut{width:120px;height:120px;border-radius:50%;flex:0 0 auto;position:relative}
  .donut::after{content:"";position:absolute;inset:16px;background:var(--card);border-radius:50%}
  .donut .ck{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:1}
  .donut .ck b{font-family:"Frank Ruhl Libre",serif;font-size:1.6rem;font-weight:900;line-height:1}
  .donut .ck span{font-size:.66rem;color:var(--ink-soft)}
  .legend{flex:1;display:flex;flex-direction:column;gap:9px}
  .legend div{display:flex;align-items:center;gap:8px;font-size:.86rem}
  .legend i{width:12px;height:12px;border-radius:3px;flex:0 0 auto}
  .legend .s{background:var(--green)} .legend .w{background:var(--accent)} .legend .n{background:var(--gold)}
  /* דילגתי · words removed from the queue by the level test, not learned here. Deliberately
     the flattest colour in the legend: it is a state, not an achievement. */
  .legend .k{background:var(--line);border:1px solid var(--ink-soft)}
  /* ===== word cloud on the stats screen =====
     The old list gave every word the same weight, so the twelve words that keep beating you
     looked exactly like the six hundred you got right first time. Size and colour carry the
     struggle score, so the eye lands on the work before the reader has read anything. */
  .cloud{display:flex;flex-wrap:wrap;gap:7px 9px;align-items:baseline;margin:4px 0 6px}
  .cw{display:inline-flex;align-items:baseline;gap:5px;border-radius:9px;padding:3px 9px;
      border:1px solid transparent;cursor:pointer;line-height:1.5;font-family:inherit;
      background:transparent;transition:transform .12s ease,border-color .12s ease}
  @media (hover:hover) and (pointer:fine){.cw:hover{transform:translateY(-2px)}}
  .cw em{font-style:normal;font-size:.66em;opacity:.6;font-variant-numeric:tabular-nums}
  .cw.t3{font-size:1.62rem;font-weight:800;color:#a33f28;background:rgba(181,72,46,.10);border-color:rgba(181,72,46,.34)}
  .cw.t2{font-size:1.24rem;font-weight:700;color:#8a6220;background:rgba(201,150,47,.10);border-color:rgba(201,150,47,.30)}
  .cw.t1{font-size:1.02rem;font-weight:600;color:var(--ink)}
  .cw.t0{font-size:.86rem;font-weight:500;color:var(--ink-soft)}
  .cw-meaning{width:100%;font-size:.82rem;color:var(--ink-soft);margin:-2px 0 6px;padding-inline-start:4px}
  .cloud-note{font-size:.8rem;color:var(--ink-soft);line-height:1.7;margin:0 0 10px}
  .quiet-line{background:var(--card);border:1px solid var(--line);border-radius:12px;
      padding:12px 14px;font-size:.88rem;color:var(--ink-soft);box-shadow:var(--lift-1)}
  .quiet-line b{color:var(--ink);font-weight:700}
  /* ===== מסך הסטטיסטיקה · נבנה מחדש 21.8.2026 =====
     "לא משנה כמה הוא צדק · משנה במה הוא טעה ומה הוא לא יודע" (חגי).
     הגרף ירד: .trend גבוה 84px והתווית אוכלת 19, ולכן כל אחוז מ-77 ומעלה צייר
     עמודה זהה · שבע מתוך שמונה עמודות יצאו 64.66px. שתי המחלקות שנשארו בגיליון
     (.trend/.tbar, .cloud/.cw) אינן בשימוש עוד במסך הזה. */
  .nx{position:relative;overflow:hidden;background:var(--card);border:1px solid var(--line);
      border-radius:14px;padding:16px;
      box-shadow:inset 0 1px 0 rgba(255,255,255,.9),0 1px 2px rgba(120,84,48,.07)}
  /* ⛔ inset-inline-start · ב-RTL זה הקצה הימני, וזה הקצה הקורא */
  .nx::before{content:"";position:absolute;inset-block:0;inset-inline-start:0;width:3px;
      background:linear-gradient(180deg,var(--gold),var(--accent))}
  .nx-line{font-family:"Frank Ruhl Libre",serif;font-weight:500;font-size:1.4rem;
      line-height:1.3;letter-spacing:-.015em;margin-bottom:14px}
  .nx-line em{font-style:normal;color:var(--accent-deep);font-variant-numeric:tabular-nums}
  .statebar{display:flex;height:12px;border-radius:99px;overflow:hidden;background:var(--paper-deep);
      box-shadow:inset 0 2px 4px rgba(120,84,48,.11),inset 0 -1px 0 rgba(255,255,255,.7)}
  .statebar i{display:block;height:100%}
  .sb-a{background:var(--green)} .sb-b{background:var(--accent)}
  .sb-c{background:var(--paper-deep);box-shadow:inset 0 0 0 1px var(--line)}
  .sb-legend{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:10px;
      font-size:.78rem;color:var(--ink-soft)}
  .sb-legend span{display:inline-flex;align-items:center;gap:6px}
  .sb-legend .dot{width:9px;height:9px;border-radius:3px;flex:none}
  .nx .btn{margin-top:14px}
  /* הרשימה · שורה אחת לכל מילה, ציר אחד, ומידת נגיעה שעוברת את 44 */
  .wlist{background:var(--card);border:1px solid var(--line);border-radius:14px;overflow:hidden;
      box-shadow:inset 0 1px 0 rgba(255,255,255,.9),0 1px 2px rgba(120,84,48,.07)}
  .wrow{display:grid;grid-template-columns:auto 1fr auto;align-items:center;column-gap:12px;
      width:100%;min-height:56px;padding:11px 14px;border:0;border-bottom:1px solid var(--line);
      background:none;font:inherit;text-align:start;cursor:pointer;color:var(--ink);
      transition:transform .09s cubic-bezier(.25,.46,.45,.94),background-color .2s}
  .wrow:last-child{border-bottom:0}
  .wrow:active{transform:scale(.99);background:var(--paper-deep)}
  .wbar{width:3px;align-self:stretch;border-radius:99px;margin-block:2px}
  .b0{background:#ddab86} .b1{background:#cf7a56}
  .b2{background:var(--accent)} .b3{background:var(--accent-deep)}
  .ww{min-width:0}
  .ww b{display:block;font-family:"Frank Ruhl Libre",serif;font-weight:500;font-size:1.28rem;
      color:var(--ink);line-height:1.25}
  .ww span{display:block;margin-top:1px;font-size:.74rem;color:var(--ink-soft)}
  .wn{font-size:.78rem;font-weight:600;white-space:nowrap;padding:5px 10px;border-radius:99px;
      background:#f4e6e1;color:var(--accent-deep);font-variant-numeric:tabular-nums}
  .wrow[aria-expanded="true"] .wn{background:var(--accent-deep);color:#fffdf8}
  .wmean{padding:0 14px 13px;margin-top:-4px;font-size:.88rem;color:var(--ink-soft);
      line-height:1.55;border-bottom:1px solid var(--line)}
  .wmore{display:block;width:100%;min-height:48px;padding:12px;border:0;
      border-top:1px solid var(--line);background:none;font:inherit;font-size:.82rem;
      font-weight:600;color:var(--accent-deep);cursor:pointer;
      transition:transform .09s cubic-bezier(.25,.46,.45,.94),background-color .2s}
  .wmore:active{transform:scale(.99);background:var(--paper-deep)}
  @media (prefers-reduced-motion:reduce){
    .wrow:active,.wmore:active{transform:none;background:var(--paper-deep)}}
  /* ===== 21.9.2026 · קליפת ראש הסטטיסטיקה: יושרה לקובץ המאושר =====
     ביקורת/עיצוב-9.9/מסך-הסטטיסטיקה.html · top (back+brand) ו-head (קיצור scope + h1)
     במקום topbar/scope-head/rule הישנים (index.html), בדיוק כמו #account: אותו מבנה
     ואותם ערכים (#account כבר תואם את משפחת הקבצים המאושרים של 9.9-10.9). --display/
     --body/--ease מוגדרים כאן מחדש כי אינם גלובליים, כמו בכל מסך אחר בקו הזה. בלי
     אנימציית rise: #account המקביל גם לא נושא אותה, ולא הומצאה כאן מחדש. */
  #stats{--display:"Frank Ruhl Libre","David Libre",serif; --body:"Heebo","Arial Hebrew",Arial,sans-serif; --ease:cubic-bezier(.23,1,.32,1);}
  /* ⭐ 25.9 · שער עיצוב: הבמה (body) של #stats, בדיוק כמו #add/#manage (שורה ~720) — הגופן
     המלא והזוהר הדקורטיבי של הקובץ המאושר, מוצמד ל-body רק כש-#stats גלוי, כדי שלא לגעת
     במסכים אחרים. body:has() כבר קיים בקובץ הזה בדיוק בשביל זה. */
  body:has(#stats:not(.hidden)){
    font-family:"Heebo","Arial Hebrew",Arial,sans-serif;font-size:17px;line-height:1.55;
    background-image:radial-gradient(340px 300px at 88% 40px,rgba(201,150,47,.30),transparent 70%),radial-gradient(320px 320px at 4% 420px,rgba(181,72,46,.22),transparent 70%),radial-gradient(340px 320px at 96% 800px,rgba(201,150,47,.24),transparent 70%),radial-gradient(320px 320px at 6% 1180px,rgba(181,72,46,.18),transparent 70%),radial-gradient(340px 320px at 94% 1560px,rgba(201,150,47,.22),transparent 70%);
    background-repeat:no-repeat}
  #stats .top{display:flex;align-items:center;justify-content:space-between;padding:16px 0 6px}
  #stats .back{display:inline-flex;align-items:center;gap:7px;border:0;border-radius:11px;color:var(--ink);font-size:14px;font-weight:500;cursor:pointer;padding:7px 13px 7px 9px}
  #stats .back svg{width:16px;height:16px;stroke:currentColor;stroke-width:2;fill:none;stroke-linecap:round;stroke-linejoin:round}
  /* ⭐ 25.9 · #stats .brand היה חסר, ולכן נפל לברירת המחדל הגלובלית (.brand: משקל 900, בלי
     צבע) במקום לקו המשותף שכל שאר המסכים עם top+brand כבר נושאים (#account/#add/#home/#pay:
     var(--display), משקל 700, var(--accent)) — זו הייתה השמטה, לא כוונה. */
  #stats .brand{font-family:var(--display);font-weight:700;font-size:20px;color:var(--accent)}
  /* ⭐ 25.9 · אותו באג שכבר תוקן ב-#admin (24.9, ההערה למטה ליד #admin .ltr): «800+» הוצג הפוך
     כי .ltr במשקל המשותף לא מסוקף למסך הזה. הקובץ המאושר נושא direction:ltr ישירות בתוך .brand
     שלו (עצמאי); כאן, כמו בכל מסך אחר עם top+brand, הכיוון בא מהמחלקה .ltr שעל אותו div. */
  #stats .ltr{direction:ltr;unicode-bidi:isolate}
  #stats .head{text-align:center;margin:14px 0 0}
  #stats .head .k{font-size:12px;letter-spacing:.2em;color:var(--ink-soft);font-weight:500;margin:0 0 6px}
  #stats .head h1{font-family:var(--display);font-weight:700;font-size:32px;margin:0;line-height:1.15}
  /* ===== 18.9.2026 · שלושת המספרים, הכפתור לחלשות, ופירוט לפי יחידה =====
     הכרעת חגי (מסך הסטטיסטיקה, אפשרות ⓐ) · יושבים מעל "מה עכשיו" הקיים למעלה, ולא
     במקומו. ⭐ 21.9.2026 · המידות (ריפוד, גודל גופן, letter-spacing) יושרו לקובץ המאושר
     עצמו ולא לקו הבית: .tile נשאר .lg משותף (זכוכית גרסה ב "כמו אפל", 20.9 — לא שוחזרה
     הזכוכית הישנה של הקובץ, כי גרסה ב חלה על כל מסך, ראו LG-SYSTEM למעלה בקובץ), אבל
     המספר הגדול חזר לדיו כברירת מחדל (לא accent): דגשים.md §2 — "טקסט תמיד שחור...
     ערכים: דיו", האדום מותר רק על מה שאינו טקסט (וגם כך מציג הקובץ המאושר את .tile .n
     שלו, בלי צבע מוגדר). מוגדרים כאן מחדש תחת #stats במפורש, ולא הורחב הסלקטור המשותף
     של #home, כדי שהשינוי הזה לא יזיז פיקסל אחד במסך הבית או בחשבון — ציר הזוגות של
     שער העיצוב בודק רק אותם. כפילות מכוונת. */
  #stats .tiles{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin:20px 0 0}
  #stats .tiles .tile{border-radius:16px;padding:14px 8px 13px;color:var(--ink)}
  #stats .tiles .tile{border:0;text-align:center;transition:none}   /* ביטול ירושה מ-.tile המשותפת, כמו #home */
  #stats .tiles .tile:active{transform:none}
  #stats .tiles .tile .n{font-family:var(--display);font-weight:700;font-size:32px;letter-spacing:-.01em;
      line-height:1;display:block;font-variant-numeric:tabular-nums}
  #stats .tiles .tile .l{font-size:12.5px;color:var(--ink-soft);display:block;margin-top:5px;line-height:1.35}
  /* ⭐ 25.9 · אייקון הזכוכית ונקודות ימי-התרגול, שהוצהרו extras «לא מומש בסבב הזה» — מומשו,
     בדיוק כמו הקובץ המאושר (.tile .ic/.pips), מסוקף ל-#stats כמו כל שאר הכללים למעלה. */
  #stats .tiles .tile .ic{width:24px;height:24px;margin:0 auto 6px;display:block}
  #stats .tiles .tile .ic.st{stroke:var(--accent);stroke-width:1.9;fill:none;stroke-linecap:round;stroke-linejoin:round}
  #stats .tiles .tile .pips{display:flex;gap:3px;margin-top:10px}
  #stats .tiles .tile .pips i{flex:1;height:5px;border-radius:3px;background:var(--line)}
  #stats .tiles .tile .pips i.on{background:var(--accent)}
  /* ⭐ 25.9 · שער עיצוב: "פירוט לפי יחידה" ו"מה עכשיו" עוברים ל-.sec/h2 כמו בקובץ המאושר
     (וכמו #results .sec h2 שכבר קיים) במקום .section-t הגנרי (תווית קטנה, ALL-CAPS) — כותרת
     מרכזית בגופן התצוגה, בדיוק פעמיים, רק כאן. .section-t עצמו (הכיתוב "המילים שטעית בהן"
     למטה, מחוץ ל-.sec) לא נגעתי בו: הוא לא בקובץ המאושר. */
  #stats .sec{margin:28px 0 0}
  #statsUnitHeading,#statsNowHeading{font-family:var(--display);font-weight:700;font-size:19px;
      margin:0 0 10px;text-align:center;color:var(--ink);letter-spacing:normal;text-transform:none}
  #stats .unit-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
  #stats .unit-grid .unit{border:0;border-radius:14px;padding:14px 14px 12px;text-align:start;
      cursor:pointer;color:var(--ink)}
  #stats .unit-grid .unit b{font-family:var(--display);font-weight:700;font-size:20px;
      display:block;position:relative;z-index:1}
  #stats .unit-grid .unit span{font-size:12px;color:var(--ink-soft);display:block;margin-top:2px;
      position:relative;z-index:1}
  #stats .unit-grid .unit .p{height:4px;border-radius:2px;background:rgba(44,38,32,.12);
      margin-top:10px;overflow:hidden;position:relative;z-index:1}
  #stats .unit-grid .unit .p i{display:block;height:100%;background:var(--pc,var(--accent))}
  /* ⭐ 25.9 · שתי כרטיסיות "מה עכשיו" (מילים שטרם תרגלת, ימים למבחן) — אותו רכיב .row בדיוק
     כמו בקובץ המאושר (עיגול אייקון + מספר מודגש + טקסט). מוגדר תחת #stats במפורש ולא מרחיב
     את .row/.grid המשותפים (המשמשים גם #results ואחרים), כדי לא להזיז פיקסל במסך אחר. */
  #stats .row{display:grid;grid-template-columns:44px 1fr 44px;align-items:center;gap:8px;
      background:var(--card);border:1px solid var(--line);border-radius:12px;padding:11px 10px;
      margin-top:8px;box-shadow:0 1px 0 rgba(255,255,255,.7) inset,0 10px 24px -20px rgba(44,38,32,.35)}
  #stats .row .ic{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;background:rgba(181,72,46,.13)}
  #stats .row .ic svg{width:19px;height:19px;stroke:var(--accent);stroke-width:2;fill:none;stroke-linecap:round;stroke-linejoin:round}
  #stats .row .t{text-align:center;font-size:15.5px;line-height:1.35;color:var(--ink)}
  #stats .row .t b{font-family:var(--display);font-weight:700;font-size:18px;margin-inline-end:3px;font-variant-numeric:tabular-nums}
  /* אותו חץ, אותה התנהגות hover, כמו #results/#level .btn .arr */
  #stats .btn .arr{display:inline-block;margin-inline-start:6px;transition:transform .3s var(--ease)}
  @media (hover:hover) and (pointer:fine){#stats .btn:hover .arr{transform:translateX(-4px)}}
  @media (prefers-reduced-motion:reduce){
    #stats .btn .arr{transition:none}
    @media (hover:hover) and (pointer:fine){#stats .btn:hover .arr{transform:none}}
  }
  /* ===== end-of-round unit progress =====
     The round score alone says nothing about where you are. This puts the round back inside
     the unit it came from, which is the difference between "I answered 20" and "I am 86% through". */
  .up-card{background:var(--card);border:1px solid var(--line);border-radius:16px;
       padding:16px 18px;margin:18px 0 6px}
  .up-top{display:flex;align-items:baseline;gap:8px;margin-bottom:4px}
  .up-top b{font-family:"Frank Ruhl Libre",serif;font-size:1.12rem}
  .up-top span{margin-inline-start:auto;font-size:.82rem;color:var(--ink-soft)}
  .up-bar{display:flex;height:14px;border-radius:7px;overflow:hidden;background:var(--paper-deep);box-shadow:var(--well);
       margin:12px 0 10px}
  .up-bar i{height:100%;transition:width .8s cubic-bezier(.22,.8,.3,1)}
  .up-bar .s{background:linear-gradient(180deg,#6fae72,#4e8d55)}
  .up-bar .w{background:linear-gradient(180deg,#e0a63f,#c9962f)}
  .up-bar .n{background:var(--paper-deep)}
  .up-bar .k{background:var(--line)}
  .up-keys{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:.8rem;color:var(--ink-soft)}
  .up-keys i{width:9px;height:9px;border-radius:3px;display:inline-block;margin-inline-end:5px}
  .up-keys b{color:var(--ink);font-weight:700}
  .up-gain{margin-top:12px;font-size:.9rem;color:#3f6b4a;background:rgba(111,174,114,.12);
       border-radius:10px;padding:9px 12px;line-height:1.6}
  .up-done{margin-top:12px;font-size:.95rem;color:#8a6220;background:rgba(201,150,47,.14);
       border-radius:10px;padding:11px 13px;line-height:1.6;font-weight:600}
  /* ═════════════════════════════════════════════════════════════════════════
     BOOT-9.9:START · מסך הטעינה · העתקה של הקובץ המאושר · 22.9.2026
     ═════════════════════════════════════════════════════════════════════════
     מקור: ביקורת/עיצוב-9.9/מסך-הטעינה.html (אושר 9.9 18:05). ספר אדום מדפדף, חמישה דפים ושתי
     ערימות, «800+» מעל ו«תכף מתחילים» מתחת עם נקודת זהב מהבהבת. מחליף את .boot-ring (הטבעת
     המסתובבת עם «רגע…» / «מחזיר אותך פנימה…»). ה-CSS מילה במילה ובאותם שמות מחלקות.
     ⚠ הקובץ הייעודי ולא הספר של ערכת הרכיבים (.lg-book בבלוק KIT-9.9 למטה): שם הספר קטן ב-25%
     (180×126 ו-164×104 מול 225×158 ו-205×130 כאן, והקווים בדפים כל 7px מול 9px). ההכרעה של
     9.9 18:05 היא «הכל הוגדל ב-25%», ולכן המקור הוא הקובץ. KIT-9.9 נשאר כמו שהוא.
     ⛔ איך זה לא נוגע במסך אחר: כל כלל נעול תחת #boot, כי .brand ,.msg ,.stage ו-.book הם שמות
     משותפים. ה-:root של הקובץ יושב על #boot, וה-body שלו (שתי ההילות, רשת בגובה המסך) חל רק
     כשמסך הטעינה פתוח. דפדפן בלי :has() מקבל את הספר על הנייר השטוח, בלי מירכוז לגובה. */
  #boot{--paper:#f6f1e7;--card:#fffdf8;--ink:#2c2620;--ink-soft:#5e564a;--gold:#c9962f;--accent:#b5482e;--accent-deep:#8f3620;--line:#e3d8c4;
    --display:"Frank Ruhl Libre","David Libre",serif;--body:"Heebo","Arial Hebrew",Arial,sans-serif;
    color:var(--ink);font-family:var(--body);line-height:normal}   /* line-height: ה-body של הקובץ אינו קובע, והאפליקציה קובעת 1.5 */
  body:has(#boot:not(.hidden)){
    font-family:"Heebo","Arial Hebrew",Arial,sans-serif;line-height:normal;
    background-image:radial-gradient(60vw 40vh at 85% -5%,rgba(201,150,47,.18),transparent 70%),radial-gradient(50vw 40vh at 5% 45%,rgba(181,72,46,.14),transparent 70%);background-repeat:no-repeat}
  /* הדף · בקובץ ה-body הוא רשת בגובה המסך והבמה ממורכזת בה. באפליקציה #boot יושב בתוך .wrap
     המשותף (ריפוד 22/18/60, רוחב 640), ולכן .wrap מתאפס ומרכז רק כשמסך הטעינה פתוח, ו-#boot עצמו
     אינו יוצר קופסה: .stage היא הילד הממורכז, כמו בקובץ. */
  .wrap:has(>#boot:not(.hidden)){padding:0;max-width:none;min-height:100vh;display:grid;place-items:center}
  #boot:not(.hidden){display:contents}
  #boot .stage{text-align:center;padding:40px 20px}
  #boot .brand{font-family:var(--display);font-weight:700;font-size:35px;color:var(--accent);margin:0 0 42px;direction:ltr}
  #boot .scene{width:225px;height:158px;display:grid;place-items:center;perspective:900px;perspective-origin:50% 30%;margin:0 auto}
  #boot .book{position:relative;width:205px;height:130px;transform:rotateX(52deg) rotateZ(-4deg);transform-style:preserve-3d}
  #boot .book .cover{position:absolute;inset:0;background:var(--accent);border-radius:5px;box-shadow:0 14px 22px -8px rgba(44,38,32,.5),inset 0 0 0 3px var(--accent-deep);transform:translateZ(-3px)}
  #boot .book .stack{position:absolute;top:8px;bottom:8px;width:calc(50% - 10px);background:var(--card);background-image:repeating-linear-gradient(var(--line) 0 1.5px,transparent 1.5px 9px);background-size:68% 58%;background-repeat:no-repeat;background-position:center;border-radius:2px;transform:translateZ(0)}
  #boot .book .stack.r{right:8px;box-shadow:inset -2px 0 0 rgba(44,38,32,.05),1px 1px 0 var(--line),2px 2px 0 var(--card),3px 3px 0 var(--line),4px 4px 0 var(--card),5px 5px 0 var(--line)}
  #boot .book .stack.l{left:8px;box-shadow:inset 2px 0 0 rgba(44,38,32,.05),-1px 1px 0 var(--line),-2px 2px 0 var(--card),-3px 3px 0 var(--line),-4px 4px 0 var(--card),-5px 5px 0 var(--line)}
  #boot .book .leaf{position:absolute;top:8px;bottom:8px;left:50%;width:calc(50% - 10px);background:var(--card);background-image:repeating-linear-gradient(var(--line) 0 1.5px,transparent 1.5px 9px);background-size:68% 58%;background-repeat:no-repeat;background-position:center;border-radius:0 2px 2px 0;transform-origin:0 50%;transform-style:preserve-3d;backface-visibility:visible;animation:leaf 3s infinite;animation-delay:var(--d,0s);transform:translateZ(var(--z,.1px));will-change:transform,opacity}
  #boot .book .leaf::after{content:"";position:absolute;inset:0;border-radius:inherit;background:linear-gradient(90deg,rgba(44,38,32,.22),rgba(44,38,32,.04) 60%,transparent);opacity:0;animation:shade 3s cubic-bezier(.45,0,.55,1) infinite;animation-delay:var(--d,0s)}
  @keyframes leaf{0%{rotate:y 0deg;opacity:1;animation-timing-function:cubic-bezier(.5,.05,.55,.95)}60%{rotate:y -180deg;opacity:1}60.2%{rotate:y -180deg;opacity:0}99.8%{rotate:y -180deg;opacity:0}100%{rotate:y 0deg;opacity:0}}
  @keyframes shade{0%{opacity:0}30%{opacity:1}60%,100%{opacity:0}}
  #boot .msg{margin:38px 0 0;font-size:26px;color:var(--ink-soft)}
  #boot .msg{font-weight:400}   /* ביטול ירושה מ-.msg המשותפת (500): בקובץ אין לה משקל משלה */
  #boot .msg::after{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--gold);margin-inline-start:8px;animation:blink 1s infinite;vertical-align:middle}
  @keyframes blink{50%{opacity:.2}}
  #boot .alt{margin:8px 0 0;font-size:12px;color:var(--ink-soft);opacity:.7}   /* בקובץ, בלי רכיב שנושא אותה */
  @media (prefers-reduced-motion:reduce){#boot .book .leaf,#boot .book .leaf::after,#boot .msg::after{animation:none!important}}
  /* BOOT-9.9:END */
  .legend b{margin-right:auto;font-weight:700}
  .scope-prog{margin:2px 2px 14px;font-size:.88rem;color:var(--ink-soft);line-height:1.6}
  .scope-prog b{color:var(--ink);font-weight:700}
  .practice-btns{display:flex;flex-direction:column;gap:11px}
  .pbtn{display:flex;align-items:center;gap:14px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:15px 18px;text-align:right;transition:transform .15s,scale .15s,opacity .15s,color .15s,background-color .15s,border-color .15s,box-shadow .15s,fill .15s,stroke .15s,filter .15s;width:100%}
  @media (hover:hover) and (pointer:fine){.pbtn:hover{border-color:var(--gold);transform:translateY(-2px);box-shadow:var(--shadow)}}
  .pbtn:disabled{opacity:.5;cursor:not-allowed;transform:none;box-shadow:none}
  .pbtn .ic{font-size:1.4rem;flex:0 0 auto}
  .pbtn .tx{flex:1}
  .pbtn .tx b{display:block;font-family:"Frank Ruhl Libre",serif;font-size:1.08rem}
  .pbtn .tx span{font-size:.78rem;color:var(--ink-soft)}
  .pbtn .cnt{background:var(--paper-deep);border-radius:999px;padding:3px 11px;font-weight:700;font-size:.85rem;flex:0 0 auto}

  /* SENTENCE COMPLETION · השלמת משפטים
     המשפט עצמו באנגלית ולכן ltr, ההסבר עברית ולכן rtl. שני הכיוונים באותו כרטיס.
     ⚠ המשפט מיושר לשמאל ולא ממורכז: משפט בן שתי שורות שממורכז נקרא כשיר, והעין
     מאבדת את תחילת השורה השנייה. */
  .s-sent{direction:ltr;text-align:left;font-family:"Frank Ruhl Libre",serif;
    font-size:clamp(1.05rem,3.4vw,1.3rem);line-height:1.7;margin-bottom:20px}
  .s-sent .bl{color:var(--accent);font-weight:700;letter-spacing:.06em}
  /* ═══ מילה שאפשר להקיש עליה לפירוש ═══
     ⛔ כל מילה במשפט לחיצה, ולא רק אלה שיש להן פירוש · הקשה על מילה שאין לה
     ערך מחזירה תשובה מפורשת ולא שתיקה. */
  /* ⛔ היה `padding:0 1px` · הכפתורים יצאו בגובה 28.6px, ומילים כמו `a`
     ברוחב 10.2px · מתחת ל-24×24 של WCAG 2.5.8, וחריג המרווח אינו חל כי
     המרווח בין כפתורים סמוכים הוא 4px. ⭐ הריפוד האנכי אינו משנה את פריסת
     השורה · `line-height` של המשפט גדול ממנו ממילא, ו-`margin` שלילי מחזיר
     את הרווח האופקי שנוסף. */
  .s-w{font:inherit;color:inherit;background:none;border:0;cursor:pointer;
       padding:7px 4px;margin:0 -3px;min-width:24px;
       border-radius:4px;transition:background .12s}
  /* ⛔ היה כאן קו מקווקו מתחת למילים שיש להן פירוש. חגי פסל אותו (27.8.2026):
     הוא מלכלך את המשפט, ומסמן ללומד מראש אילו מילים "חשובות".
     ⭐ המשפט נראה כמו טקסט רגיל · ההיזון היחיד הוא בהקשה עצמה, וזה עובד רק
     אם **לכל** מילה יש תשובה. ראה sentence-completion/sent-lex.js. */
  /* ⛔ היו `.22` ו-`.28` · נמדד 1.22:1 ו-1.28:1 מול 3:1 שדורש WCAG 1.4.11
     למחוון מצב לא-טקסטואלי. ⚠ ו-`-webkit-tap-highlight-color:transparent`
     על ה-body מבטל גם את הדגשת המגע של מערכת ההפעלה · אין רשת ביטחון.
     ⭐ מסגרת ולא רק רקע · על רקע בהיר, שינוי רוויה לבדו אינו מגיע ל-3:1. */
  .s-w:active{background:rgba(166,60,38,.16);box-shadow:inset 0 0 0 1px var(--accent)}
  .s-w.on{background:rgba(166,60,38,.14);box-shadow:inset 0 0 0 1.5px var(--accent)}
  @media (hover:hover) and (pointer:fine){.s-w:hover{background:rgba(201,150,47,.20)}}
  /* ⛔ הריפוד היה `11px 38px 11px 14px` · 38px שמורים ב**ימין**, בזמן
     ש-`inset-inline-end` ב-RTL מציב את ה-✕ ב**שמאל**. נמדד: 10.7% מהפירושים
     נכתבו מתחת לכפתור ב-375px, ו-`elementFromPoint` במרכזו החזיר את הכפתור.
     ⭐ `padding-inline-end` פותר בלי לדעת מה הכיוון · ואין מה לזכור. */
  .s-gloss{position:relative;display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;
       margin-top:12px;padding:11px 14px;padding-inline-end:46px;border-radius:12px;
       background:var(--paper-deep);border:1px solid var(--line);text-align:right}
  .s-gloss.hidden{display:none!important}
  .s-gloss-w{font-family:"Frank Ruhl Libre",serif;font-weight:700;font-size:1.02rem;
       color:var(--accent-deep)}
  .s-gloss-m{font-size:.9rem;color:var(--ink)}
  .s-gloss-m.none{color:var(--ink-soft);font-size:.82rem}
  .s-gloss-x{position:absolute;inset-inline-end:6px;top:50%;transform:translateY(-50%);
       width:30px;height:30px;border:0;background:none;color:var(--ink-soft);
       font-size:.9rem;cursor:pointer;border-radius:50%}
  .s-len{display:flex;align-items:center;gap:12px;margin-bottom:16px}
  .s-len-l{flex:0 0 auto;font-size:.82rem;font-weight:700;color:var(--ink-soft)}
  .s-len .seg{flex:1}
  .s-hint{margin-top:9px;font-size:.72rem;color:var(--ink-soft);text-align:center}
  .s-hint.hidden{display:none!important}
  /* ═══ הבוחן הקצר ═══ */
  .sq-box{max-width:400px}
  .sq-term{font-family:"Frank Ruhl Libre",serif;font-size:1.7rem;font-weight:900;
       margin-top:6px;color:var(--ink)}
  .sq-opts{display:grid;gap:8px;margin-top:16px}
  .sq-opts button{font-family:"Heebo";font-size:.95rem;font-weight:500;padding:13px 14px;
       border-radius:12px;border:1px solid var(--line);background:var(--paper);
       color:var(--ink);text-align:right;transition:transform .15s,scale .15s,opacity .15s,color .15s,background-color .15s,border-color .15s,box-shadow .15s,fill .15s,stroke .15s,filter .15s;line-height:1.4}
  @media (hover:hover) and (pointer:fine){
    .sq-opts button:not(:disabled):hover{border-color:var(--gold);transform:translateY(-2px)}}
  .sq-opts button.is-right{border-color:var(--green);background:rgba(78,125,78,.12);font-weight:700}
  .sq-opts button.is-wrong{border-color:var(--accent);background:rgba(181,72,46,.1)}
  .sq-opts button .mk{margin-inline-start:6px;font-weight:900}
  /* מספור החסרים בפריט זוג. שני `___` זהים והאפשרות היא "align + differ", כלומר
     הסדר קובע · והמספר אומר מה לאיפה בלי מילים. */
  .s-sent .bl sup{font-size:.62em;font-weight:700;vertical-align:super;margin-inline-start:1px}
  /* ⚠ יעד המגע של "✕ יציאה" נמדד ב-38px, מתחת למינימום 44. `.topbar .back` הוא
     מחלקה משותפת ל-16 מסכים, ולכן התיקון ממוקד לשני המסכים שנוספו כאן ולא גורף:
     שינוי גלובלי היה מזיז פריסה בכל האפליקציה. הפער בשאר המסכים קדם לשינוי הזה. */
  /* ⛔ המסך העברי יורש CSS שנכתב למשפט אנגלי (direction:ltr). בעברית זה דוחף
     את הקו התחתון לקצה הלא נכון ומעיף את הנקודה הסופית לצד ההפוך · נמדד על
     23 משפטים שפותחים ב-___ ועל הנקודה בכל 150. הכללים כאן מחזירים RTL. */
  #conn .s-sent{direction:rtl;text-align:right}
  #conn .s-optrow{direction:rtl}
  #conn .s-opt{direction:rtl;text-align:right}
  #conn .s-opt .mk{float:right}
  #conn .s-g{direction:rtl;text-align:right}
  #sent .topbar .back, #mode .topbar .back, #conn .topbar .back{min-height:44px}
  .s-opts{display:flex;flex-direction:column;gap:9px}
  /* שורת אפשרות: הכפתור והרמקול כאחים בתוך עטיפה.
     ⚠ העטיפה אינה קישוט. `<button>` בתוך `<button>` אינו HTML חוקי, והדפדפן מפרק
     את העץ ומעיף את הפנימי החוצה · כלומר הרמקול היה נוחת מחוץ לאפשרות.
     `direction:ltr` על השורה, כמו על `.s-opt` עצמו: התוכן אנגלי, והרמקול נופל
     לקצה שאחרי המילה. `flex:1` על הכפתור הוא מה שמצמיד את ארבעת הרמקולים לאותו
     קו אנכי, כך שהעין לא רודפת אחריהם בין שורה לשורה.
     `align-items:stretch` ולא center · הרמקול מקבל את גובה האפשרות המלא, וזה גם
     יעד מגע גדול וגם שורה שלא נראית שבורה. */
  .s-optrow{display:flex;direction:ltr;align-items:stretch;gap:8px}
  .s-optrow .s-opt{flex:1;min-width:0}
  /* ⚠ 44 ולא 40. `.rev-say` נקבע ב-40 והנימוק שם כתוב, אבל במסך הזה כבר נמדד
     שהסף הוא 44 (`#sent .topbar .back`), ואין סיבה להכניס אליו יעד קטן יותר. */
  .s-say{flex:0 0 auto;min-width:44px;min-height:44px}
  .s-opt{direction:ltr;text-align:left;background:var(--card);border:1px solid var(--line);
    border-radius:12px;padding:13px 16px;font-family:"Heebo",sans-serif;font-size:1rem;
    color:var(--ink);width:100%;transition:transform .15s,scale .15s,opacity .15s,color .15s,background-color .15s,border-color .15s,box-shadow .15s,fill .15s,stroke .15s,filter .15s}
  @media (hover:hover) and (pointer:fine){.s-opt:not(:disabled):hover{border-color:var(--gold)}}
  .s-opt:disabled{cursor:default}
  .s-opt.is-right{border-color:var(--green);background:#eef5ee;font-weight:700}
  .s-opt.is-wrong{border-color:var(--accent);background:#faeeeb}
  .s-opt .mk{float:left;margin-inline-start:8px;font-weight:700}
  .s-opt.is-right .mk{color:var(--green)}
  .s-opt.is-wrong .mk{color:var(--accent)}
  /* ההסבר. שלושה חלקים בסדר שנקבע: פירוש האפשרויות, תרגום המשפט, ואז הנימוק. */
  .s-exp{margin-top:20px;padding-top:18px;border-top:1px solid var(--line);text-align:right}
  /* 2.10 נגישות: --gold-ink עצמו הוכהה ל-#76560f (5.54 על #efe8da, 4.70 על ההילה ליד «יש לי חשבון»),
     ולכן אין כאן יותר דריסה מקומית. #8a6512 הישן נתן 4.35 כאן ו-3.70 על ההילה. */
  .s-exp h4{font-size:.7rem;letter-spacing:.12em;color:var(--gold-ink);font-weight:700;
    text-transform:uppercase;margin-bottom:7px}
  .s-exp section{margin-bottom:16px}
  .s-exp section:last-child{margin-bottom:0}
  /* אותה פריסה בדיוק כמו `.s-optrow`, ומאותה סיבה: רמקול על כל אחת מארבע שורות
     "המילים". `flex:1` על הטקסט מיישר את הרמקולים לקו אחד, וזה אותו קו שבו הם
     יושבים בשורות האפשרויות שמעל · כלומר הם לא זזים כשההסבר נפתח. */
  .s-g{display:flex;direction:ltr;align-items:center;gap:8px;
    text-align:left;font-size:.9rem;color:var(--ink-soft);padding:2px 0}
  .s-gt{flex:1;min-width:0}
  .s-g.key{color:var(--ink);font-weight:700}
  /* שורת המשפט באנגלית, מעל התרגום. `direction:ltr` על הבלוק ולא רק על ה-bdi,
     אחרת הנקודה בסוף המשפט נודדת לשמאלו במסך RTL. */
  .s-en{direction:ltr;text-align:left;font-size:1rem;line-height:1.6;margin-bottom:5px}
  /* ⚠ לא var(--green). אותה מדידה שכבר תועדה למעלה: הירוק הכללי #4e7d4e נותן 4.27:1
     על רקע הכרטיס, ומתחת לסף 4.5. טקסט מודגש ב-16px אינו "טקסט גדול" (הפטור מתחיל
     ב-18.66px מודגש), ולכן הפטור אינו חל כאן. #3f6a3f נמדד 5.58:1 ומאותה משפחה.
     החל גם על .s-tr b, שנשלח כבר עם הירוק החלש. */
  .s-en b, .s-tr b{color:#3f6a3f;font-weight:700}
  .s-tr{font-size:1rem;line-height:1.7}
  .s-why p{font-size:.94rem;line-height:1.65;margin-bottom:9px}
  .s-why p:last-child{margin-bottom:0}
  .s-why .vd{font-weight:700}
  .s-why .vd.bad{color:#b0462d}
  .s-why .vd.ok{color:#477247}
  .s-why code{direction:ltr;display:inline-block;font-family:"Heebo",sans-serif;font-weight:700;
    background:var(--paper-deep);border-radius:5px;padding:0 5px}
  .s-done{text-align:center;padding:6vh 0}
  .s-done .num{font-family:"Frank Ruhl Libre",serif;font-size:3.4rem;font-weight:700;color:var(--gold-ink)}
  .s-sum{font-size:.86rem;color:var(--ink-soft);margin-top:6px}

  /* QUIZ */
  .prog{height:6px;background:var(--paper-deep);border-radius:3px;overflow:hidden;margin-bottom:6px;box-shadow:var(--well)}
  .prog i{display:block;height:100%;background:linear-gradient(90deg,var(--gold),var(--accent));transition:.3s}
  .qmeta{display:flex;justify-content:space-between;font-size:.78rem;color:var(--ink-soft);margin-bottom:20px}
  .card{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:30px 24px;box-shadow:var(--lift-2);text-align:center}
  /* #76560f (הערך של --gold-ink, הוכהה מ-#8a6512 ב-2.10) ולא --gold: הזהב על הכרטיס = 2.61:1, מתחת ל-AA. */
  .q-kind{font-size:.72rem;letter-spacing:.12em;color:#76560f;font-weight:700;text-transform:uppercase;margin-bottom:14px}
  .q-text{font-family:"Frank Ruhl Libre",serif;font-size:clamp(1.4rem,4.6vw,1.9rem);font-weight:700;line-height:1.35}
  /* speaker sits beside the prompt, never inside it -- the prompt is also read by the
     print sheet and the exam, and it must stay pure text */
  .q-row{display:flex;align-items:flex-start;gap:10px}
  .q-row .q-text{flex:1;min-width:0}
  .say{flex:0 0 auto;background:transparent;border:1px solid var(--line);border-radius:10px;
    font-size:1.05rem;line-height:1;padding:8px 10px;color:var(--ink-soft);transition:transform .15s,scale .15s,opacity .15s,color .15s,background-color .15s,border-color .15s,box-shadow .15s,fill .15s,stroke .15s,filter .15s}
  @media (hover:hover) and (pointer:fine){.say:hover{border-color:var(--gold);color:var(--ink)}}
  .say.on{border-color:var(--gold);background:rgba(201,150,47,.12)}
  .say.hidden{display:none!important}
  .answer-input{width:100%;margin-top:22px;font-family:"Frank Ruhl Libre",serif;font-size:1.5rem;text-align:center;color:var(--ink);background:var(--paper);border:2px solid var(--line);border-radius:14px;padding:14px;outline:none;transition:transform .2s,scale .2s,opacity .2s,color .2s,background-color .2s,border-color .2s,box-shadow .2s,fill .2s,stroke .2s,filter .2s}
  .answer-input:focus{border-color:var(--gold)}
  .answer-input:disabled{opacity:.75}
  .actions{display:flex;gap:10px;margin-top:16px}
  .actions .btn{flex:1}
  .reveal-meaning{margin-top:20px;font-family:"Frank Ruhl Libre",serif;font-size:1.3rem;line-height:1.45;color:var(--ink);background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:16px;animation:rise .25s ease}
  .hint-btn{display:block;margin:14px auto 0;background:transparent;border:1px solid var(--line);color:#76560f;font-family:"Heebo";font-weight:500;font-size:.88rem;padding:8px 18px;border-radius:999px}
  @media (hover:hover) and (pointer:fine){.hint-btn:hover{border-color:var(--gold);background:rgba(201,150,47,.08)}}
  .hint-box{margin-top:12px;font-family:"Frank Ruhl Libre",serif;font-size:1.05rem;background:rgba(201,150,47,.1);border:1px dashed var(--gold);border-radius:12px;padding:12px}
  .feedback{margin-top:14px;animation:rise .3s ease}
  @keyframes rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
  .verdict{font-family:"Frank Ruhl Libre",serif;font-size:1.35rem;font-weight:700}
  .verdict.ok{color:var(--green)} .verdict.no{color:var(--accent)}
  .assoc-bar{display:flex;align-items:center;gap:10px;margin-top:10px}
  .assoc-bar .shr{display:inline-flex;align-items:center;gap:5px;font-size:.75rem;
    color:var(--ink-soft);cursor:pointer;margin-inline-start:10px}
  .assoc-bar .shr.hidden{display:none!important}
  .assoc-bar .st{font-size:.82rem;color:var(--green);font-weight:500}
  /* .assoc-peek ירדה 21.9.2026 (בריף השבעה, רכיב 1/6): #assocPeek עבר ל-.btn.btn-ghost.lg
     בתוך .rowb, כמו "מה אחרים כתבו" בקובץ המאושר (מסך-התרגול.html) */
  .assoc-others{margin-top:9px;display:flex;flex-direction:column;gap:6px}
  .assoc-others.hidden{display:none!important}
  .assoc-others .oth{background:var(--paper-deep);border-radius:10px;padding:8px 11px;
    font-size:.82rem;line-height:1.5}
  .assoc-others .oth.empty{color:var(--ink-soft);background:transparent;padding:4px 0}
  .also{margin-top:8px;font-size:.85rem;color:var(--ink-soft)}
  /* פירוש שכבר נכתב מול פירוש שחסר. שתי מחלקות ולא אחת, כדי שהכלל ינצח את
     `.rev-w span{color:var(--ink-soft)}` בלי !important. */
  /* לא var(--green). הירוק הכללי #4e7d4e נמדד 4.27:1 על רקע הכרטיס #f6f1e7 · מתחת לסף
     4.5, והטקסט כאן קטן (0.8rem ברשימת הסיכום) ולכן פטור "טקסט גדול" אינו חל. #3f6a3f
     נמדד 5.58:1 ונשאר מאותה משפחת צבע. הצבע הזה נושא מידע ולכן חייב להיקרא. */
  .sns.got{color:#3f6a3f;font-weight:600}
  .snsep{opacity:.35;margin:0 5px}
  /* בולט מ-.also הרגיל במשקל בלבד (tests/63 נועל font-weight:600) -- זו דרישה ולא הערת אגב.
     ⭐ 21.9.2026 · בריף השבעה, רכיב 4: color:var(--accent-deep) ירד -- הקובץ המאושר (מסך-התרגול.html,
     .fb .more) מציג את מספר הפירושים בדיו הרך, בלי כותרת אדומה נפרדת.
     ⭐ 21.9.2026 · board308 חלק 2: העוגן עצמו עבר מ-#fbMore (זר ל-.fb) לתוך ה-<span> של
     #feedback -- כמו בקובץ, שמצייר את השורה שם ולא מתחת לחלון. .sense-need ו-.more יושבים
     עכשיו על אותו <small> אחד ולא מקוננים, ולכן .fb .more (שטוח, לא #fbMore .sense-need
     .more הישן) נותן את font-size/margin/color, ו-.sense-need לבדה נותנת רק את המשקל
     (tests/63 נועל את שתי העובדות בנפרד: הסלקטור .sense-need קיים עם font-weight:600). */
  .sense-need{font-weight:600}
  .fb .more{display:block;font-weight:400;font-size:14px;margin-top:4px;color:var(--ink-soft)}
  .also b{color:var(--ink);font-weight:600}
  /* משפט הדוגמה: תווית · המשפט באנגלית · התרגום, שורה לכל אחד. המילה הנלמדת
     מודגשת בשני המשפטים, ולכן היא מוצגת ב-var(--ink) המלא ולא באפור של .also:
     אפור על אפור אינו הדגשה, וההדגשה כאן היא כל תפקיד השורה. */
  /* ⚠ יישור מפורש על הבלוק, ולא הסתמכות על ההורה: `.card` ממורכז ו-`.also` יורש ממנו,
     ולכן בלי הכלל הזה כל שורה קיבלה יישור אחר.
     הגרסה הקודמת יישרה כל שורה לתחילת השפה שלה · האנגלית לשמאל והעברית לימין. חגי ראה
     את התוצאה (12.8.2026) וקבע שהיא נראית מוזרה: שתי השורות נדחפות לקצוות מנוגדים,
     ובכרטיס צר הזוג נקרא כשני גושים נפרדים ולא כמשפט ותרגומו. שלוש השורות ממורכזות
     עכשיו על ציר אחד. `direction:ltr` נשאר על האנגלית · הוא קובע סדר תווים, לא יישור,
     ובלעדיו סימני הפיסוק בקצה המשפט קופצים למקום הלא נכון.
     ⚠ ניסוח ההערה: הגרסה הראשונה השתמשה במילה שהלקסיקון פוסל (`tests/47`), והבדיקה
     סורקת את **כל** הקובץ ולא רק טקסט ממשק. השער צודק, ולכן ההערה שונתה ולא השער.
     ⭐ 19.9 · התווית הקטנה בזהב ירדה. «משפט לדוגמה» הוא עכשיו כפתור בדיו עם חץ (`.lg-reveal.exb`),
     והמשפט בתיבה `.ex` שנפתחת בלחיצה, כמו בקובץ המאושר (מסך-התרגול.html:127-128). בעברית התיבה
     מיושרת לתחילת השורה, כמו בקובץ. באנגלית שתי השורות נשארות ממורכזות על ציר אחד, לפי ההכרעה
     של 12.8 שלמעלה (לקובץ המאושר אין משפט באנגלית). */
  .ex-sent .ex{text-align:start}
  .ex-sent .ex-en{display:block;direction:ltr;text-align:center;margin-bottom:2px}
  .ex-sent .ex-he{display:block}
  .ex-sent .ex-en+.ex-he{text-align:center}
  .ex-sent b{color:var(--ink);font-weight:700}
  .reveal{margin-top:8px;font-size:1.05rem}
  .reveal b{font-family:"Frank Ruhl Libre",serif}
  /* ⭐ 21.9.2026 · שער העיצוב (practice): margin-top ירד מהכפתור עצמו -- הוא היה כפול. מאז
     רכיב 5 (373e07d) .center#knewWrap כבר עוטף את הכפתור ונושא 12px משלו (שורה למטה), בדיוק
     כמו בקובץ המאושר; שם ל-#knew עצמו אין margin-top. האיפוס הגלובלי *{margin:0} משלים ל-0. */
  .was-right{background:transparent;border:1px solid var(--line);color:var(--ink-soft);border-radius:999px;padding:7px 16px;font-family:"Heebo";font-size:.85rem}
  @media (hover:hover) and (pointer:fine){.was-right:hover{border-color:var(--green);color:var(--green)}}
  /* המצב המסומן. הכפתור הוא מתג ולא פעולה חד-כיוונית, ולכן הוא חייב להיראות שונה כשהוא
     דלוק · אחרת "לחץ לביטול" הוא הרמז היחיד שמשהו קרה. */
  .was-right.on{border-color:var(--green);color:var(--green);background:rgba(47,133,90,.08)}
  /* ⭐ 21.9.2026 · בריף השבעה, רכיב 5: .center עוטף את "בעצם ידעתי" כמו בקובץ המאושר
     (מסך-התרגול.html, #knewWrap). */
  .center{display:flex;justify-content:center;margin-top:12px}

  /* ⭐ 21.9.2026 · בריף השבעה, רכיבים 1+6: האסוציאציה עוברת מסעיף גלוי-תמיד ("קו מקווקו
     מעל, תמיד פתוח") לתוכן שמתגלה בלחיצה על .pill#assocBtn (למטה, ליד .quiet), כמו בקובץ
     המאושר (מסך-התרגול.html, #assocBox). "מה אחרים כתבו" (#assocPeek) נשאר מקונן כאן,
     בתוך האסוציאציה הפתוחה בלבד -- זה בדיוק רכיב 6. */
  .quiet{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:16px;padding-top:16px;border-top:1px solid var(--line)}
  .assoc{margin-top:14px;display:flex;flex-direction:column;gap:10px}
  /* ⛔ color:var(--gold-ink) נשאר, ולא var(--ink-soft) של הקובץ: tests/84 נועל שש
     תוויות זהות ל---gold-ink מטעמי ניגודיות (--ink-soft לא נמדד על כל הרקעים שהתווית
     הזאת יושבת עליהם), וזה קובץ אסור לגעת בו כאן. שאר הערכים (גודל, יישור) מהקובץ. */
  /* ⭐ 21.9.2026 · board308 חלק 2: היה var(--gold-ink) -- הקובץ המאושר (מסך-התרגול.html,
     .assoc label) צובע את התווית הזאת בדיו הרך (--ink-soft), כמו כל תווית טופס. טקסט תמיד
     בדיו; זהב שמור לאייקונים ולמילוי פסים. */
  .assoc label{display:block;font-weight:500;font-size:14px;color:var(--ink-soft);text-align:center;margin-bottom:0}
  /* ⭐ 21.9.2026 · שער העיצוב (practice): font:inherit במקום font-family:"Heebo" קשיח, ואז רק
     font-size:16px נדרס -- מילה במילה כמו הקובץ המאושר. נמדד: font-family לבדו לא הספיק,
     כי textarea לא יורש line-height כברירת מחדל (מחשב "normal") -- רק קיצור font שלם מכריח
     ירושה גם של line-height. #quiz יורש 1.55, ולכן 16px*1.55=24.8px נופל כמו בקובץ, בלי מספר קבוע. */
  .assoc textarea{width:100%;min-height:74px;font:inherit;font-size:16px;text-align:center;padding:12px;border-radius:12px;border:1px solid var(--line-strong);background:var(--paper);color:var(--ink);resize:vertical;outline:none}
  .assoc textarea:focus{border-color:#a17826;box-shadow:0 0 0 3px rgba(161,120,38,.25)}
  .assoc .rowb{display:flex;gap:10px}
  .assoc .rowb .btn{flex:1;min-height:46px;font-size:15px}
  /* .del-live ירדה 21.9.2026 (בריף השבעה, רכיב 7) עם הכפתור: "מחק מהמאגר" יורד מכרטיס
     התרגול, והיכולת נשארת ב-#manage בלבד (#mDelete) */

  /* RESULTS */
  .res-head{text-align:center}
  .score-num{font-family:"Frank Ruhl Libre",serif;font-size:4rem;font-weight:900;color:var(--accent);line-height:1}
  .score-of{color:var(--ink-soft);margin-bottom:8px}
  .miss-list{display:flex;flex-direction:column;gap:7px;margin-top:8px}
  .miss-row{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:10px 14px;display:flex;gap:10px}
  .miss-row b{font-family:"Frank Ruhl Libre",serif;min-width:34%}
  .miss-row span{color:var(--ink-soft);font-size:.88rem}

  /* end-of-quiz review (correct verdicts per word) */
  .review-list{display:flex;flex-direction:column;gap:7px;max-height:440px;overflow:auto;margin-top:8px}
  .rev-row{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:9px 13px}
  .rev-row.wrong{border-color:var(--accent);background:rgba(181,72,46,.05)}
  .rev-w{flex:1;min-width:0}
  .rev-w b{font-family:"Frank Ruhl Libre",serif;font-weight:700;font-size:1.02rem;display:block}
  .rev-w span{color:var(--ink-soft);font-size:.8rem;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .rev-chip{flex:0 0 auto;border:1px solid var(--line);border-radius:999px;padding:7px 14px;font-family:"Heebo";font-weight:700;font-size:.82rem;transition:transform .15s,scale .15s,opacity .15s,color .15s,background-color .15s,border-color .15s,box-shadow .15s,fill .15s,stroke .15s,filter .15s;background:transparent}
  .rev-chip.ok{color:var(--green);border-color:var(--green);background:rgba(78,125,78,.09)}
  .rev-chip.no{color:var(--accent);border-color:var(--accent);background:rgba(181,72,46,.09)}
  /* ⚠ הניסוח הראשון היה padding:6px 9px, והוא נמדד ב-375px כ-41×29 · יעד מגע נמוך מהסף.
     הרמקול נשאר בגודל של .say, ומקבל רק מינימום מפורש כדי שהוא לא יתכווץ בשורה צפופה. */
  .rev-say{min-width:40px;min-height:40px}

  /* strength list */
  .strength-list{display:flex;flex-direction:column;gap:7px;max-height:360px;overflow:auto;margin-top:8px}
  .str-row{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:9px 13px}
  .str-row.is-new{border-color:var(--gold);background:rgba(201,150,47,.06)}
  .str-w{min-width:36%}
  .str-w b{font-family:"Frank Ruhl Libre",serif;font-weight:700;font-size:1.02rem;display:block}
  .str-w span{color:var(--ink-soft);font-size:.8rem}
  .dots{display:inline-flex;gap:4px}
  .dots i{width:10px;height:10px;border-radius:50%;background:var(--paper-deep);border:1px solid var(--line)}
  .dots i.on{background:linear-gradient(180deg,var(--gold),var(--accent));border-color:transparent}
  .str-meter{flex:1;text-align:left}
  .str-meter em{display:block;font-style:normal;font-size:.7rem;color:var(--ink-soft);margin-top:4px}

  /* history trend */
  .trend{display:flex;gap:7px;align-items:flex-end;height:84px;margin-top:12px}
  .tbar{flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;height:100%;gap:4px}
  .tbar i{display:block;width:100%;max-width:30px;background:linear-gradient(180deg,var(--gold),var(--accent));border-radius:5px 5px 0 0;min-height:5px}
  .tbar em{font-style:normal;font-size:.64rem;color:var(--ink-soft)}

  /* מתג בין «הוסף מילה» ל«ניהול מילים» (ביקורת/עיצוב-9.9/מסך-כלי-המורה.html, .modeseg) ·
     הכרעת חגי 19.9: המסך נבנה מחדש כמסך אחד. CSS מילה במילה מהקובץ המאושר, אותם שמות
     מחלקות; שני ה-section הקיימים (#add, #manage) לא נכתבו מחדש -- המתג רק עוטף אותם
     ומעביר ביניהם. tests/180. */
  .modeseg{display:flex;padding:4px;border-radius:999px;position:relative;margin:18px 0 26px;background:rgba(255,255,255,.08)}
  .modeseg.lg{background:rgba(255,255,255,.08)}   /* w26-gate: .lg (רקע .05) מוגדר אחרי .modeseg באותה ספציפיות ודורס אותו -- כאן חוזר ל-.08 של הקובץ המאושר */
  .modeseg button{flex:1;background:none;border:0;cursor:pointer;height:48px;border-radius:999px;color:var(--ink);font-weight:600;font-size:15px;position:relative;z-index:1;transition:color .35s}
  .modeseg button{padding:1px 6px}   /* w26-gate: ביטול ירושה מהאיפוס *{padding:0}: ערך הדפדפן לכפתור, כמו בקובץ (אותה תבנית שורה 3430) */
  .modeseg button.on{color:#fff}
  .modeseg .thumb{position:absolute;top:4px;bottom:4px;inset-inline-start:4px;width:calc(50% - 4px);border-radius:999px;z-index:0;
    background:linear-gradient(180deg,rgba(160,58,36,.94),rgba(143,54,32,.96));
    box-shadow:inset 0 0 0 1px rgba(255,255,255,.38),inset 1.5px 1.5px 0 -.5px rgba(255,255,255,.8),inset -1px -1px 0 -.5px rgba(0,0,0,.2),0 8px 20px -10px rgba(143,54,32,.55);
    transition:transform .55s cubic-bezier(.22,.61,.36,1)}
  .modeseg[data-i="1"] .thumb{transform:translateX(-100%)}
  /* 8.10 · סטייה מכוונת מהקובץ המאושר (מסך-כלי-המורה.html, שם `transition:color .35s`; tests/180 נועל את החוק למעלה מילה במילה, ולכן הסטייה כאן כחוק נפרד): צבע הכפתור מתחלף
     פעם אחת כשקצה הידית עובר את מרכזו (≈110ms מתוך .55s), ר' #home .lseg. בלי זה הטקסט נעלם ≈60ms בכל מעבר (נמדד 2.04:1). */
  .modeseg button{transition:color 0s linear .11s}
  @media (prefers-reduced-motion:reduce){.modeseg .thumb,.modeseg button{transition:none}}   /* 8.10 · למתג לא הייתה חריגת reduce בכלל: הידית והצבע המשיכו לנוע */

  /* ═════════════════════════════════════════════════════════════════════════
     TEACHER-23.9:START · כלי המורה, העתקה מ-ביקורת/עיצוב-9.9/מסך-כלי-המורה.html
     ═════════════════════════════════════════════════════════════════════════
     הכרעת חגי 11.9: CSS מילה במילה, אותם שמות מחלקות. #add ו-#manage נשארים שני
     <section> (המתג .modeseg שכבר קיים קופץ ביניהם, tests/180) -- הפער שנשאר בין
     "מסך אחד עם שתי לשוניות" ל"שני מסכים עם מתג" הוא פער בנייה (screens.json,
     6554d106), לא עיצוב, ולא נוגעים בו כאן.
     ⭐ 24.9 · הקובץ המאושר עודכן: הרשימה שם עברה מ-.wordlist/.wrow שטוח ל-.m-group/.m-head/
     .m-body מקובצים לפי יחידה, סגורים כברירת מחדל -- אותם שמות מחלקות שכבר היו באפליקציה
     (renderManage). .m-head/.m-group/.m-body למטה עודכנו למראה של הקובץ (סמל שברון SVG
     מסתובב במקום ▾/◂, רקע עגול לסמל). renderManage (app.js) עצמה -- הקיבוץ, "סגור כברירת
     מחדל", "חיפוש פותח יחידות שנמצאו" -- כבר הייתה בנויה כך; מה שהשתנה הוא רק המראה
     והריבוי בעברית («מילה אחת»/«שתי מילים»/N, לא ${ws.length} מילים תמיד). */
  body:has(#add:not(.hidden),#manage:not(.hidden)){
    font-family:"Heebo","Arial Hebrew",Arial,sans-serif;font-size:17px;line-height:1.55;
    background-image:radial-gradient(340px 300px at 88% 40px,rgba(201,150,47,.30),transparent 70%),radial-gradient(320px 320px at 4% 420px,rgba(181,72,46,.22),transparent 70%),radial-gradient(340px 320px at 96% 800px,rgba(201,150,47,.24),transparent 70%),radial-gradient(320px 320px at 6% 1180px,rgba(181,72,46,.18),transparent 70%),radial-gradient(340px 320px at 94% 1560px,rgba(201,150,47,.22),transparent 70%);
    background-repeat:no-repeat}
  #add .topbar,#manage .topbar{padding:16px 0 6px;margin-bottom:0;gap:normal}
  #add .back,#manage .back{font-size:14px;color:var(--ink);border-radius:11px;padding:7px 13px 7px 9px;gap:7px}
  #add .back.lg,#manage .back.lg{background:rgba(255,255,255,.05)}
  #add .scope-head,#manage .scope-head{margin-top:12px;text-align:center}
  #add .scope-head h1,#manage .scope-head h1{font-family:"Frank Ruhl Libre","David Libre",serif;font-weight:700;font-size:28px;line-height:32.2px;text-align:center}
  #add .hint{font-family:"Heebo","Arial Hebrew",Arial,sans-serif;margin:0;text-align:center;font-size:13px;color:var(--ink-soft)}
  #manage .mgr-hint{font-family:"Heebo","Arial Hebrew",Arial,sans-serif;margin:0 0 16px;text-align:center;font-size:13px;color:var(--ink-soft)}
  .btn-full{width:100%;display:flex;align-items:center;justify-content:center;margin:22px 0 14px}

  /* טופס ההוספה · שדה המילה (var(--display), כמו הקובץ) ושדה הפירוש (var(--body)) */
  #addTerm{font-family:"Frank Ruhl Libre","David Libre",serif;font-size:32px;font-weight:700;color:var(--ink);
    border-radius:13px;border:1px solid #888276;padding:0 14px;height:74px;text-align:center;letter-spacing:-.32px}
  #addMeaning{font-family:"Heebo","Arial Hebrew",Arial,sans-serif;font-size:17px;color:var(--ink);
    border-radius:13px;border:1px solid #888276;padding:0 14px;text-align:center}
  /* gap:normal מבטל את .btn.lg של LG-SYSTEM שמוסיף gap:8px לכפתור עם אייקון -- כאן אין אייקון (כמו #pay .btn) */
  #addSave{font-family:"Heebo","Arial Hebrew",Arial,sans-serif;font-size:17px;font-weight:600;gap:normal;
    background-image:linear-gradient(rgba(160,58,36,.94),rgba(143,54,32,.96));
    box-shadow:inset 0 0 12px rgba(255,210,190,.1),inset 0 -8px 16px -12px rgba(0,0,0,.28),0 12px 28px -12px rgba(143,54,32,.6);
    padding:0 18px;letter-spacing:-.17px}

  /* ניהול מילים */
  #manage .units-hint{font-family:"Heebo","Arial Hebrew",Arial,sans-serif;font-size:13px;margin:0 0 8px;text-align:center;color:var(--ink-soft)}
  #manage .upick{margin-bottom:14px}
  #manage .upick-btn.lg{background:rgba(255,255,255,.16);padding:1px 6px}
  #manage .upick-menu.lg{background:rgba(255,253,248,.9)}
  #manage .upick-menu button{padding:1px 6px}
  #manage .upick-menu button.on{background-image:linear-gradient(180deg,rgba(160,58,36,.94),rgba(143,54,32,.96));background-color:transparent}
  #manage .search-input{width:100%;height:50px;padding:0 16px;border:0;border-radius:14px;font-size:15px;color:var(--ink);margin:0 0 18px;font-family:"Heebo","Arial Hebrew",Arial,sans-serif}
  #manage .search-input.lg{background:rgba(255,255,255,.16)}
  #manage .search-input::placeholder{color:var(--ink-soft)}   /* 2.10 נגישות: מילה במילה מ-.search-input::placeholder בקובץ המאושר (האפור של הדפדפן נתן 3.38 על הזכוכית) */
  #manage .manage-list{margin-top:0;gap:8px}
  #manage #mCount{font-family:"Heebo","Arial Hebrew",Arial,sans-serif;font-size:14.5px;font-weight:500;line-height:22.475px;color:var(--ink)}

  /* כפתור המחיקה (.btn-del) וכפתור השחזור (.restore) · מראה הקובץ, במקום btn-danger/btn-ghost */
  #manage .btn-del{display:inline-flex;align-items:center;gap:8px;border:0;border-radius:11px;background:none;cursor:pointer;
    padding:7px 14px 7px 8px;font-size:14.5px;font-weight:600;color:var(--ink);font-family:"Heebo","Arial Hebrew",Arial,sans-serif}
  #manage .btn-del .ic{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:rgba(181,72,46,.14);color:var(--accent);flex:none}
  #manage .btn-del .ic svg{width:15px;height:15px;stroke:currentColor;stroke-width:2.2;fill:none;stroke-linecap:round;stroke-linejoin:round}
  /* ⭐ 25.9 · האייקון (.arrc, לפני הטקסט) נוסף עכשיו כמו בקובץ המאושר. tests/32 (level-gate) היה
     נעול על טקסט צמוד ל-> בלי אייקון; עודכן לנעול את המילים "שחזור מחיקות" גם כשקודם להן
     אלמנט אייקון -- ראו index.html ו-tests/32-level-gate.test.js. */
  #manage .restore{display:flex;align-items:center;justify-content:center;gap:9px;margin:22px 0 0;background:none;border:0;cursor:pointer;
    font-size:14.5px;font-weight:500;color:var(--ink);padding:6px 4px;border-bottom:1px solid var(--gold);line-height:20.3px;
    border-radius:0;border-top:none;border-inline-start:none;border-inline-end:none;font-family:"Heebo","Arial Hebrew",Arial,sans-serif}
  #manage .restore .arrc{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;flex:none;transition:transform .3s var(--ease, cubic-bezier(.23,1,.32,1))}
  #manage .restore .arrc svg{width:14px;height:14px;stroke:var(--accent);stroke-width:2.4;fill:none;stroke-linecap:round;stroke-linejoin:round}
  @media (hover:hover) and (pointer:fine){#manage .restore:hover .arrc{transform:translateX(4px)}}
  /* ⭐ 25.9 · מה שחסר מול מסך-כלי-המורה.html (השוואה-322-ניהול-וכלי-המורה-25.9.md), מילה במילה מהקובץ
     ובאותם שמות מחלקות, תחומים ל-#add/#manage כי .field/.lbl/.opt כבר תפוסים במסכים אחרים.
     הפס העליון («800+», החץ ב«חזרה») והכותרת הקטנה «כלי מילים» משותפים לשתי הלשוניות, כמו בקובץ. */
  #add,#manage{--line-strong:#888276}
  #add .back,#manage .back{display:inline-flex;align-items:center}
  #add .back svg,#manage .back svg{width:16px;height:16px;stroke:currentColor;stroke-width:2;fill:none;stroke-linecap:round;stroke-linejoin:round}
  #add .brand,#manage .brand{font-family:"Frank Ruhl Libre","David Libre",serif;font-weight:700;font-size:20px;color:var(--accent)}
  #add .ltr,#manage .ltr{direction:ltr;unicode-bidi:isolate}
  #add .scope-head .k,#manage .scope-head .k{font-size:12px;letter-spacing:.2em;color:var(--ink-soft);font-weight:500;margin:0 0 6px}
  /* הקו הכתום שמתחת למתג · אין בקובץ. .rule נשאר ב-DOM כעוגן לזוגות #add/#manage .rule + p של שער העיצוב */
  #add .rule,#manage .rule{display:none}
  /* טופס ההוספה · .badge-row/.field/.lbl/.input של הקובץ, בלי הכרטיס הלבן (.add-form ירד מהסימון) */
  #add .badge-row{display:flex;align-items:center;justify-content:center;gap:10px;margin:4px 0 22px}
  #add .badge-tx{font-size:14px;color:var(--ink-soft)}
  #add .field{margin:0 0 16px}
  #add .field .lbl{display:flex;align-items:center;justify-content:center;gap:6px;font-size:13.5px;font-weight:500;color:var(--ink-soft);margin:0 0 7px}
  #add .field .lbl .req{width:6px;height:6px;border-radius:50%;background:var(--accent);flex:none}
  #add .field .lbl .opt{font-weight:400;color:var(--ink-soft)}   /* 2.10 נגישות: opacity:.8 ירד, 3.2 ⟵ AA */
  #add .input{display:block;width:100%;text-align:center;background:var(--paper);border:1px solid var(--line-strong);border-radius:13px;
    padding:0 14px;height:52px;font-size:17px;color:var(--ink);transition:border-color .2s,box-shadow .2s;font-family:"Heebo","Arial Hebrew",Arial,sans-serif}
  #add .input::placeholder{color:var(--ink-soft)}   /* 2.10 נגישות: opacity:.65 ירד (3.0 ⟵ 6.3), כמו כל שאר הרמזים בשדות */
  #add .input:focus{outline:0;border-color:#a17826;box-shadow:0 0 0 3px rgba(161,120,38,.16)}
  #add .input-word{font-family:"Frank Ruhl Libre","David Libre",serif;font-weight:700;font-size:32px;height:74px;letter-spacing:-.01em}
  #add #addSave{display:flex}   /* .btn-full{display:flex} בקובץ · .btn.lg המשותפת עושה אותו inline-flex, ואז המרווח שלו לא מתקפל עם השדה שמעליו (38px במקום 22px) */
  /* .panel{animation:fadein .4s var(--ease) both} של הקובץ · כניסה רכה של התוכן שמתחת למתג. ⚠ נמדד 25.9: בלי
     האנימציה הזכוכית של כותרות היחידות ושל שורת הבחירה דוגמת את הילת הרקע ברוויה כפולה ויוצאת צהבהבה
     (255,255,238 במקום 246,240,228 בקובץ) · עם האנימציה העטיפה היא שורש הרקע של הזכוכית, כמו בקובץ. */
  #add .panel,#manage .panel{animation:mGroupFadein .4s var(--ease, cubic-bezier(.23,1,.32,1)) both}
  @media (prefers-reduced-motion:reduce){#add .panel,#manage .panel{animation:none}}
  /* ניהול מילים · «N נבחרו · מחיקה» בתחתית (.selbar בקובץ) */
  #manage .selbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:16px 0 0;padding:10px 10px 10px 16px;border-radius:14px;
    animation:mGroupFadein .35s var(--ease, cubic-bezier(.23,1,.32,1)) both}
  #manage .selbar .cnt{font-size:14.5px;color:var(--ink);font-weight:500}
  @media (prefers-reduced-motion:reduce){#manage .selbar{animation:none}}
  /* TEACHER-23.9:END */

  /* manage */
  /* ⭐ בחירת יחידות בתפריט נפתח (ביקורת/עיצוב-9.9/מסך-כלי-המורה.html, אושר 10.9 15:45) ·
     טוקנים ומחלקת .lg קיימים בלבד -- אין כאן משתנה צבע חדש. הגרדיאנט של כפתור נבחר
     זהה לזה שכבר במסך (.ask-opts button.active / .seg button.active), ולכן ניגודיות
     הטקסט הלבן עליו כבר מאומתת במקום אחר ולא נבדקת כאן מחדש. */
  .upick{position:relative;margin:0 0 12px}
  .upick-btn{width:100%;height:46px;border:0;border-radius:14px;display:flex;align-items:center;
      justify-content:center;gap:8px;font:inherit;font-size:15px;font-weight:600;color:var(--ink);
      background:rgba(255,255,255,.16);cursor:pointer}
  .upick-btn .chev{width:18px;height:18px;stroke:var(--accent);stroke-width:2.2;fill:none;
      stroke-linecap:round;stroke-linejoin:round;transition:transform .3s ease}
  .upick[data-open="1"] .upick-btn .chev{transform:rotate(180deg)}
  .upick-menu{position:absolute;inset-inline:0;top:calc(100% + 6px);z-index:5;border-radius:14px;
      padding:6px;background:rgba(255,253,248,.92);display:grid;grid-template-columns:1fr 1fr;gap:4px}
  .upick-menu[hidden]{display:none}
  .upick-menu button{height:40px;border:0;border-radius:10px;background:none;font:inherit;
      font-size:14.5px;font-weight:500;color:var(--ink);cursor:pointer}
  .upick-menu button.on{color:#fff;font-weight:600;background:linear-gradient(180deg,var(--gold-ink),var(--accent))}
  .upick-menu button[data-u="all"]{grid-column:1/-1}
  .manage-list{display:flex;flex-direction:column;gap:6px;max-height:340px;overflow:auto;margin-top:10px}
  /* 24.9 · יושר עם .wrow/.chk/.wmid .w/.wmid .g של הקובץ המאושר (padding/radius/צל/גופנים) --
     בלי לגעת במבנה (input אמיתי, לא .chk מעוצב-יד; 4 ילדים, לא 3 עמודות grid) ובלי לגעת
     בהתנהגות (checked/onchange). זה מעבר לתחום המשימה (קיבוץ + ריבוי, לא עיצוב-מחדש של השורה)
     ולכן נשאר פער עיצוב מדווח, לא כישלון שקט -- הכפתור (m-known/m-undo) ממשיך לשבת בתוך
     .m-row עצמה, לא בעמודה השלישית הריקה של הקובץ. */
  .m-row{display:flex;align-items:center;gap:8px;background:var(--card);border:1px solid var(--line);border-radius:13px;padding:11px 10px;
    box-shadow:0 1px 0 rgba(255,255,255,.7) inset,0 10px 22px -20px rgba(44,38,32,.35)}
  /* appearance:none + רקע/צל ישירים (לא מחלקת lg): input אמיתי אינו תומך ב-::before/::after
     שהמערכת המשותפת נשענת עליהם, אז מעתיקים את שלוש התכונות הוויזואליות ישירות במקום.
     text-align:center מפורש כאן -- ב-.wrow הקובץ הוא <button> (מרכז כברירת מחדל), וב-.m-row
     זה <input>; בלי הצהרה מפורשת input מקבל start, לא center. */
  .m-row input{-webkit-appearance:none;appearance:none;width:34px;height:34px;border-radius:50%;flex:0 0 auto;font-family:inherit;
    margin:0;padding:1px 6px;text-align:center;background:rgba(255,255,255,.5);box-shadow:inset 0 0 0 1.5px var(--line);
    backdrop-filter:blur(9px) saturate(2) brightness(1.08);-webkit-backdrop-filter:blur(9px) saturate(2) brightness(1.08)}
  .m-row input:checked{accent-color:var(--accent);background:linear-gradient(180deg,rgba(160,58,36,.94),rgba(143,54,32,.96))}
  .m-row b{font-family:"Frank Ruhl Libre","David Libre",serif;font-weight:700;font-size:21px;line-height:1.25;min-width:32%;text-align:center}
  .m-row span{color:var(--ink-soft);font-size:14px;margin-top:2px;flex:1;text-align:center}
  /* "ידעתי" · מצב שבאמצע בין מחיקה לתרגול, ולכן הוא נראה כמו מתג ולא כמו פעולה הרסנית.
     flex:0 0 auto כדי שהוא לא יידחס כשהפירוש ארוך; הפירוש הוא שמתקצר, לא הכפתור. */
  .m-known{flex:0 0 auto;background:none;border:1px solid var(--line);color:var(--ink-soft);
           border-radius:999px;padding:4px 11px;font-size:.75rem;font-family:inherit;cursor:pointer}
  .m-known.on{border-color:var(--green);color:var(--green);background:color-mix(in srgb,var(--green) 12%,transparent)}
  .m-row .u{font-size:.66rem;color:var(--gold-ink);background:rgba(201,150,47,.1);border-radius:6px;padding:2px 7px;flex:0 0 auto}
  /* grouped-by-unit manage list · 24.9, מילה במילה ממסך-כלי-המורה.html (.m-head/.m-group/.m-body) */
  .m-group{margin-bottom:0}   /* 24.9 · אין כלל .m-group בקובץ המאושר בכלל -- ברירת המחדל היא 0, לא הריפוד הישן */
  .m-head{width:100%;display:grid;grid-template-columns:34px 1fr auto;align-items:center;gap:10px;
      border:0;border-radius:13px;padding:10px 10px 10px 14px;cursor:pointer;color:var(--ink);
      text-align:start;font:inherit;font-family:inherit}
  .m-head>*{position:relative;z-index:1}
  .m-head i{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:rgba(181,72,46,.13)}
  .m-head i svg{width:15px;height:15px;stroke:var(--accent);stroke-width:2.4;fill:none;stroke-linecap:round;stroke-linejoin:round;transition:transform .3s var(--ease, cubic-bezier(.23,1,.32,1))}
  .m-head[aria-expanded="true"] i svg{transform:rotate(-90deg)}
  .m-head b{font-family:"Frank Ruhl Libre","David Libre",serif;font-weight:700;font-size:19px;line-height:1.2}
  .m-head span{font-size:13px;color:var(--ink-soft)}
  /* ⭐ 28.9 · ביקורת/עיצוב-9.9/השלמות.html #3: "אחת נמחקה"/"N נמחקו" באפור כמו שאר השורה,
     לא בכתום -- בקובץ המאושר .ghead span אינו מבחין צבע בין החלקים. em נשאר בלי italic. */
  .m-head em{font-style:normal;color:inherit}
  .m-body{display:flex;flex-direction:column;gap:8px;margin:8px 0 10px;animation:mGroupFadein .3s var(--ease, cubic-bezier(.23,1,.32,1)) both}
  @keyframes mGroupFadein{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
  @media (prefers-reduced-motion:reduce){.m-body{animation:none}.m-head i svg{transition:none}}
  /* a deleted word is still listed -- this screen is the only way back for it */
  .m-row.is-gone{border-style:dashed;color:var(--ink-soft)}   /* 2.10 נגישות: בלי opacity (.62 הוריד את הדיו ל-4.3 ואת «↺ החזר» ל-2.7). המחיקה נראית בקו המקווקו, בקו על המילה ובדיו הרך */
  .m-row.is-gone b{text-decoration:line-through}
  .m-undo{flex:0 0 auto;font-family:inherit;font-size:.74rem;cursor:pointer;color:var(--green);
      background:transparent;border:1px solid var(--line);border-radius:8px;padding:3px 9px}
  @media (hover:hover) and (pointer:fine){.m-undo:hover{border-color:var(--green)}}
  .search{width:100%;font-family:"Heebo";font-size:1rem;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:11px 14px;outline:none;margin-top:8px}
  .search:focus{border-color:var(--gold)}
  .msg{margin-top:14px;text-align:center;font-size:.9rem;font-weight:500}
  .msg.ok{color:var(--green)} .msg.err{color:var(--accent)}
  .add-form{display:flex;flex-direction:column;gap:9px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:16px;margin-top:14px}
  .add-form input{font-family:"Heebo";font-size:1rem;background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:10px 12px;outline:none}
  .add-form input:focus{border-color:var(--gold)}

  /* round-size chooser */
  .ask{position:fixed;inset:0;z-index:60;background:rgba(44,38,32,.45);backdrop-filter:blur(3px);
       display:flex;align-items:center;justify-content:center;padding:20px;animation:rise .18s ease;overflow-y:auto}
  /* 9.10 נגישות (1.4.4) · חלון גבוה מהמסך (זום 200%, טלפון על הצד, הודעת שגיאה ארוכה) נגלל, והראש שלו לא נחתך.
     safe center ממרכז כשיש מקום, וכשאין מקום החלון מתחיל מלמעלה, בכל גובה מסך ובכל גובה חלון. דפדפן שאינו מכיר
     safe מקבל את אותה התנהגות מ-margin:auto. במסך רגיל המיקום והערכים המחושבים זהים ל-align-items:center. */
  @supports (align-items:safe center){.ask{align-items:safe center}}
  @supports not (align-items:safe center){.ask>*{margin:auto}}
  .ask-box{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:24px 22px;
       width:100%;max-width:360px;box-shadow:var(--shadow);text-align:center}
  .ask-box h3{font-family:"Frank Ruhl Libre",serif;font-size:1.35rem;font-weight:900}
  .ask-box p{color:var(--ink-soft);font-size:.82rem;margin-top:4px}
  .ask-opts{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:16px}
  .ask-opts button{font-family:"Heebo";font-weight:700;font-size:1.05rem;padding:14px 8px;border-radius:12px;
       border:1px solid var(--line);background:var(--paper);color:var(--ink);transition:transform .15s,scale .15s,opacity .15s,color .15s,background-color .15s,border-color .15s,box-shadow .15s,fill .15s,stroke .15s,filter .15s}
  @media (hover:hover) and (pointer:fine){.ask-opts button:hover{border-color:var(--gold);transform:translateY(-2px)}}
  .ask-opts button.active{background:linear-gradient(180deg,var(--gold-ink),var(--accent));color:#fff;border-color:transparent}
  /* five options in a two-column grid leaves the last one stranded beside a hole.
     "everything" is the odd one out anyway, so it takes the full width. */
  .ask-opts button.wide{grid-column:1/-1;font-size:.98rem}
  /* "אחר" opens a field rather than a browser prompt(): prompt() is styled by the OS, breaks
     the RTL layout, and is silently blocked in a standalone PWA on some Androids. */
  .size-custom{display:flex;gap:9px;margin-top:10px}
  .size-custom.hidden{display:none!important}
  .size-custom input{flex:1;min-width:0;font-family:"Heebo";font-size:1.05rem;font-weight:700;
       text-align:center;padding:14px 8px;border-radius:12px;border:1px solid var(--line);
       background:var(--paper);color:var(--ink);outline:none}
  .size-custom input:focus{border-color:var(--gold)}
  /* the native spinner lands on the wrong side in RTL and is unusable with a thumb anyway */
  .size-custom input::-webkit-outer-spin-button,
  .size-custom input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
  .size-custom input{-moz-appearance:textfield}
  .size-custom button{font-family:"Heebo";font-weight:700;font-size:1rem;padding:14px 18px;
       border-radius:12px;border:1px solid transparent;cursor:pointer;
       background:linear-gradient(180deg,var(--gold-ink),var(--accent));color:#fff}
  /* Styled as a text link, but it is a button and gets tapped with a thumb. Measured at
     127×20 before min-height was added -- half a finger. Nine buttons inherit this rule, and
     one of them (#mailAskResend) is the only way out for somebody whose confirmation mail
     never arrived. The padding grows the hit area without changing how it looks. */
  .ask-cancel{margin-top:14px;background:transparent;border:none;color:var(--ink-soft);
       font-family:"Heebo";font-size:.85rem;text-decoration:underline;
       min-height:44px;padding:6px 12px}
  /* ===== finishing a unit =====
     Above everything, because it should not be possible to miss and there is nothing else to
     do at that moment. The canvas sits BEHIND the card and ignores pointer events, so the
     bursts read as happening in the room rather than on top of the message. */
  .cheer{position:fixed;inset:0;z-index:90;display:flex;align-items:center;justify-content:center;
       padding:24px;background:radial-gradient(120% 90% at 50% 0%,#fffdf7 0%,#f6efe0 55%,#efe4d0 100%);
       animation:cheerIn .3s ease both}
  .cheer.hidden{display:none!important}
  @keyframes cheerIn{from{opacity:0}to{opacity:1}}
  .cheer-cv{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
  .cheer-box{position:relative;text-align:center;max-width:340px;width:100%;
       animation:cheerRise .5s cubic-bezier(.2,.9,.25,1) .08s both}
  @keyframes cheerRise{from{opacity:0;transform:translateY(16px) scale(.96)}
                       to{opacity:1;transform:none}}
  .cheer-ring{width:78px;height:78px;margin:0 auto 18px;border-radius:50%;
       display:flex;align-items:center;justify-content:center;
       background:linear-gradient(180deg,#5aa063,#3f7a4a);color:#fffdf8;font-size:2.1rem;
       box-shadow:0 10px 26px -10px rgba(63,122,74,.7),inset 0 1px 0 rgba(255,255,255,.4);
       animation:cheerPop .5s cubic-bezier(.2,1.5,.4,1) .18s both}
  @keyframes cheerPop{from{transform:scale(0)}to{transform:scale(1)}}
  .cheer-box h2{font-family:"Frank Ruhl Libre",serif;font-size:1.85rem;font-weight:900;
       color:var(--ink);line-height:1.2}
  .cheer-unit{margin-top:9px;font-size:.78rem;letter-spacing:.16em;color:var(--accent-deep);
       font-weight:700}
  .cheer-sub{margin-top:12px;font-size:.95rem;line-height:1.7;color:var(--ink-soft)}
  .cheer-box .ask-go{margin-top:24px}
  @media(prefers-reduced-motion:reduce){
    .cheer,.cheer-box,.cheer-ring{animation:none}
  }

  /* the "check your mail" modal.
     Above #auth, which is z-index 70 -- every other .ask sits at 60 and opens over the app, but
     this one is the only modal that opens while the login screen is still covering the page. */
  #mailAsk{z-index:80}
  .mail-box{text-align:center}
  .mail-ico{font-size:2.6rem;line-height:1;margin-bottom:10px}
  .mail-box p{margin-top:9px;font-size:.9rem;line-height:1.65;color:var(--ink-soft)}
  .mail-box p b{color:var(--ink)}
  .mail-to{font-family:"Heebo";font-weight:700;font-size:1rem!important;color:var(--accent)!important;
       word-break:break-all;background:rgba(201,150,47,.1);border-radius:9px;padding:9px 10px}
  .mail-tip{font-size:.8rem!important;border-top:1px solid var(--line);padding-top:11px;margin-top:14px!important}
  .ask-go{margin-top:18px;width:100%;font-family:"Heebo";font-weight:700;font-size:1rem;
       padding:15px;border-radius:12px;border:0;cursor:pointer;color:#fffdf8;
       display:block;text-align:center;text-decoration:none;
       background:linear-gradient(180deg,var(--gold-ink),var(--accent));
       box-shadow:0 8px 18px -9px rgba(166,60,38,.6)}
  /* כפתור סגירה בפינה, כי חגי ביקש X מפורש להזמנת הוואטסאפ. inset-inline-end = שמאל ב-RTL,
     המיקום המקובל ל-X. min 44px כדי שהאצבע תפגע בו. */
  #waAsk .ask-box{position:relative}
  .ask-x{position:absolute;top:8px;inset-inline-end:10px;background:transparent;border:0;
       color:var(--ink-soft);font-size:1.1rem;line-height:1;cursor:pointer;
       min-width:44px;min-height:44px;border-radius:10px}
  @media (hover:hover) and (pointer:fine){.ask-x:hover{color:var(--ink)}}

  /* ===== auth · "ענבר": near-black walnut, a single amber glow, thin rules, generous air.
     Full-bleed so it escapes .wrap, and it owns its own dark palette regardless of the app's. ===== */
  /* Was near-black while every other screen is cream -- the first thing a visitor saw looked
     like a different product from the one they landed in. Same palette now, and the orange
     stopped being the only bright thing on a dark field, so it can go back to being an accent. */
  /* The page was one flat cream field, so nothing on it could sit forward of anything else.
     It now has a DIRECTION of light -- warm from the top-right, a cooler blush at the lower
     left -- and the form rests on a surface that is lit by it. Still cream; just no longer flat. */
  /* ⭐ 2.10.2026 · מסך ההתחברות וההרשמה · העתקה של ביקורת/עיצוב-9.9/מסך-ההתחברות.html (אושר, «פיקס»).
     אותו מבנה ואותם ערכים, בשמות מחלקה עם au- כדי שלא יתנגשו עם .card .seg .head .in .fld הגלובליים.
     הזכוכית (.lg) והכפתור הראשי (.btn-primary.lg) מגיעים מהמערכת המשותפת, לא מעותק.
     הנוסחים שהתחלפו (21, ציוויים בזכר ⟵ נוסח שוויוני) נעולים ב-tests/350-login-form-copy.test.js. */
  #auth{position:fixed;inset:0;z-index:70;overflow-y:auto;color:var(--ink);
       display:flex;flex-direction:column;isolation:isolate;
       padding:max(30px,env(safe-area-inset-top)) 18px max(30px,env(safe-area-inset-bottom));
       font-size:17px;line-height:1.55;text-align:center;
       background-color:var(--paper);background-repeat:no-repeat;
       background-image:radial-gradient(60% 40% at 85% -5%,rgba(201,150,47,.18),transparent 70%),radial-gradient(50% 40% at 5% 45%,rgba(181,72,46,.14),transparent 70%),radial-gradient(50% 30% at 95% 85%,rgba(201,150,47,.14),transparent 70%)}
  #auth.hidden{display:none!important}
  #auth :focus-visible{outline:3px solid #a17826;outline-offset:3px;border-radius:6px}
  .au-inner{width:100%;max-width:392px;margin:auto}   /* margin:auto ולא justify-content:center · מרכז שגולש חותך את ראש המסך במכשיר נמוך */
  @keyframes auIn{from{opacity:0;transform:translateY(6px)}}
  @keyframes auSpin{to{transform:rotate(360deg)}}
  #auth .au-r{animation:auIn .45s cubic-bezier(.23,1,.32,1) both;animation-delay:var(--d,0s)}
  .au-top{display:flex;min-height:40px;padding-top:2px}
  #auth .au-back{display:inline-flex;align-items:center;gap:7px;border:0;border-radius:11px;color:var(--ink);font-family:"Heebo";font-size:14px;font-weight:500;cursor:pointer;padding:6px 13px 6px 9px;min-height:40px;transition:transform .12s ease}
  #auth .au-back:active{transform:scale(.97)}
  #auth .au-back svg{width:16px;height:16px;stroke:var(--accent);stroke-width:2.2;fill:none;stroke-linecap:round;stroke-linejoin:round}
  .au-head{margin:6px 0 0}
  .au-mark{margin:0;font-family:"Frank Ruhl Libre","David Libre",serif;font-size:12px;letter-spacing:.3em;color:var(--ink-soft)}
  .au-title{margin:2px 0 0;font-family:"Frank Ruhl Libre","David Libre",serif;font-weight:700;line-height:1.1;display:flex;flex-direction:column;align-items:center}
  .au-b8{font-size:46px;color:var(--accent);direction:ltr;unicode-bidi:isolate}
  .au-tg{font-size:21px;color:var(--ink);margin-top:2px}
  .au-sub{margin:8px 0 0;font-size:14px;line-height:1.55;color:var(--ink-soft)}
  .au-card{margin-top:14px;padding:4px 16px 14px;border-radius:16px}
  /* הלשוניות · כמוסה זכוכית וידית אדומה שגולשת (--i הוא האינדקס, --n מספר הלשוניות) */
  .au-seg{position:relative;display:flex;width:100%;margin:12px auto 12px;padding:4px;border-radius:999px;background:rgba(255,255,255,.13);backdrop-filter:blur(16px) saturate(170%);-webkit-backdrop-filter:blur(16px) saturate(170%);box-shadow:inset 0 0 0 1px rgba(255,255,255,.44),inset 1.5px 1.5px 0 -.5px rgba(255,255,255,.7),inset -1px -1px 0 -.5px rgba(0,0,0,.1),0 6px 16px -10px rgba(44,38,32,.3)}
  .au-seg .au-thumb{position:absolute;top:4px;bottom:4px;inset-inline-start:4px;width:calc((100% - 8px)/var(--n,2));border-radius:999px;z-index:0;background:linear-gradient(180deg,rgba(160,58,36,.94),rgba(143,54,32,.96));box-shadow:inset 0 0 0 1px rgba(255,255,255,.36),inset 1.5px 1.5px 0 -.5px rgba(255,255,255,.75),0 6px 14px -8px rgba(143,54,32,.6);transform:translateX(calc(var(--i,0)*-100%));transition:transform .55s cubic-bezier(.22,.61,.36,1)}
  .au-seg button{flex:1;position:relative;z-index:1;background:none;border:0;cursor:pointer;height:42px;border-radius:999px;font-family:"Heebo";font-weight:600;font-size:15px;color:var(--ink);padding:0 4px}
  .au-seg button.on{color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.25)}
  #authForm{display:block}
  .au-fld{margin:0 0 8px}
  .au-fld.hidden{display:none!important}
  .au-fld label{display:block;font-size:13.5px;font-weight:500;color:var(--ink-soft);margin:0 0 4px}
  .au-in{position:relative}
  .au-in input{width:100%;min-height:50px;text-align:center;font-family:"Heebo";font-size:17px;padding:0 46px;border-radius:12px;border:1px solid var(--line-strong);background:var(--paper);color:var(--ink)}
  .au-in input:focus{border-color:#a17826;outline:none;box-shadow:0 0 0 3px rgba(161,120,38,.25)}
  .au-in.bad input{border:1.5px solid var(--accent-deep);background:#fffdf8}
  .au-fi{position:absolute;inset-inline-start:9px;top:50%;margin-top:-14px;width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:rgba(181,72,46,.11);pointer-events:none}
  #auth .au-fi svg,#auth .au-fk svg,#auth .au-ar svg{fill:none;stroke:var(--accent);stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
  .au-fi svg{width:15px;height:15px}
  /* הכפתור הראשי · .btn.btn-primary.lg מהמערכת, כאן רק הרוחב והחץ */
  #auth .au-go{width:100%;margin-top:6px;min-height:54px;font-size:17px;gap:10px;padding:0 18px;cursor:pointer}
  #auth .au-go:disabled{opacity:1;cursor:progress}
  .au-ar{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:rgba(255,255,255,.92);box-shadow:0 1px 2px rgba(0,0,0,.2);text-shadow:none;transition:transform .3s cubic-bezier(.23,1,.32,1)}
  #auth .au-ar svg{width:16px;height:16px;stroke:var(--accent);stroke-width:2.2}
  #auth .au-ar svg.spin{animation:auSpin 1s linear infinite}
  @media (hover:hover) and (pointer:fine){#auth .au-go:hover .au-ar{transform:translateX(-4px)}}
  /* «שכחתי סיסמה» · כמוסת זכוכית קטנה מתחת לכפתור הראשי */
  #auth .au-fg{margin:8px auto 0;min-height:44px;font-family:"Heebo";font-size:15px;font-weight:500;width:auto;padding:0 18px 0 12px;border-radius:999px;display:flex;cursor:pointer}
  .au-fk{width:26px;height:26px;border-radius:50%;display:inline-grid;place-items:center;background:rgba(181,72,46,.12);flex:none}
  #auth .au-fk svg{width:14px;height:14px}
  .au-legal{margin:12px 0 0;font-size:13px;line-height:1.6;color:var(--ink-soft);text-align:center}
  #auth .au-legal{animation:auIn .45s cubic-bezier(.23,1,.32,1) both;animation-delay:.68s}
  /* הודעת הפרטיות של טופס ההרשמה (ס' 11 לחוק הגנת הפרטיות, תיקון 13) · מוצגת רק בלשונית ההרשמה.
     ⛔ הנוסח נשאר כמו באפליקציה (הכרעת חגי 1.10, tests/113): בקובץ העיצוב כתוב «לא נמסר לאף גורם אחר»
     והוא אינו נכון. כאן עוצבה בלבד, כמו .priv שבקובץ. */
  .au-priv{margin:2px 0 10px;padding:9px 12px;border-radius:12px;background:var(--paper-deep);font-size:12.5px;line-height:1.6;color:var(--ink-soft);text-align:center}
  .au-priv a{color:var(--ink)}
  .au-legal a,.acc-legal a{color:var(--ink-soft)}
  .acc-legal{margin-top:26px;font-size:.8rem;line-height:1.7;color:var(--ink-soft)}
  /* הצהרת הגיל. align-items:flex-start כדי שהתיבה תיצמד לשורה הראשונה אם הטקסט נשבר,
     ולא תרחף באמצע. 20px ו-min-height:44px כי זו תיבה שנלחצת באגודל · הכפתורים במסכי
     ה-ask נמדדו 20 פיקסלים בדפדפן אמיתי, וזה חצי אצבע. */
  .au-check{display:flex;align-items:flex-start;gap:9px;margin-top:14px;min-height:44px;
       font-size:.82rem;line-height:1.5;color:#6b6155;cursor:pointer;text-align:right}
  .au-check input{width:20px;height:20px;margin:2px 0 0;flex:0 0 auto;accent-color:#b5651d;cursor:pointer}
  .au-check input[aria-invalid="true"]{outline:2px solid #a63c26;outline-offset:2px}
  /* ההודעה · טקסט תמיד בדיו, האייקון ב-::before כדי שלא לגעת ב-textContent ש-app.js כותב (ראו #clsJoinMsg).
     שגיאה = סימן קריאה, הצלחה = וי, «מתחבר…» בלי אייקון. */
  .au-msg{margin-top:16px;font-size:.88rem;line-height:1.55;text-align:center}
  .au-msg.hidden{display:none!important}
  :is(#authMsg,#mailAskMsg){margin:14px 0 0;padding:12px 14px;border-radius:12px;font-size:15px;line-height:1.5;color:var(--ink);display:flex;gap:10px;align-items:center;justify-content:center;background:var(--paper-deep);animation:auIn .45s cubic-bezier(.23,1,.32,1) both}
  :is(#authMsg,#mailAskMsg).err{background:rgba(181,72,46,.09)}
  :is(#authMsg,#mailAskMsg).ok{background:rgba(67,113,71,.10)}
  :is(#authMsg,#mailAskMsg).err::before,:is(#authMsg,#mailAskMsg).ok::before{content:"";flex:none;width:26px;height:26px;border-radius:50%;background-repeat:no-repeat;background-position:center;background-size:15px 15px}
  :is(#authMsg,#mailAskMsg).err::before{background-color:rgba(181,72,46,.12);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23b5482e' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 7.5v5.6M12 16.6v.1'/%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3C/svg%3E")}
  :is(#authMsg,#mailAskMsg).ok::before{background-color:rgba(67,113,71,.14);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%233f6942' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5.5 12.5l4.2 4.2L18.5 7.8'/%3E%3C/svg%3E")}
  @media (prefers-reduced-motion:reduce){#auth *,#auth *::before,#auth *::after,#mailAskMsg{animation:none!important;transition:none!important}}
  /* ⭐ שגיאה בתוך חלון, דפוס אחד (ביקורת/עיצוב-9.9/השלמות.html #15, אושר 10.9 17:10) ·
     האייקון הוא ::before דקורטיבי כדי לא לגעת ב-textContent הנקרא/נכתב על #clsJoinMsg
     בכמה מקומות ב-app.js, ולא לחזור על ה-"!" לקורא מסך (role=alert כבר מכריז את הטקסט).
     ⭐ 27.9 · השלמות.html #15 השלם: margin/color/text-align על המכל (תואם .errline),
     ו-.err על השדה עצמו -- מוצמד ל-#classAsk בלבד, כי #clsJoinMsg הוא היחיד שמציג
     את השגיאה הזאת. ⛔ בכוונה כאן ולא בבלוק "החלונות" (style.css, סמוך ל-.fld:focus
     של אותה קבוצה): tests/168 דורש שכל כלל בבלוק הזה יתחיל ב-:is(#...). */
  #clsJoinMsg{display:flex;align-items:center;justify-content:center;gap:8px;
    margin:8px 0 2px;font-size:14px;line-height:1.55;color:var(--ink);text-align:center}
  #clsJoinMsg::before{content:"!";flex:none;width:20px;height:20px;border-radius:50%;
    display:grid;place-items:center;background:rgba(181,72,46,.16);color:var(--accent);
    font-weight:700;font-size:13px;line-height:1}
  #classAsk .fld.err{border-color:rgba(181,72,46,.6);box-shadow:0 0 0 3px rgba(181,72,46,.14)}

  /* ⛔ נמדד בבדק בית 3: בלי שם משתמש ה-<b> הפנימי ריק, ומה שנשאר הוא הריפוד
     בלבד · 22×14 פיקסלים. זה כפתור לכל דבר (onclick למסך החשבון, aria-label
     "החשבון שלי"), ואין שום לוגיקה שמסתירה אותו כשהוא ריק. הרצפה היא WCAG
     2.5.8 (AA). כשיש שם הכפתור כבר גדול בהרבה, ולכן זה אינו נראה במצב הרגיל.
     אותו שיקול בדיוק כמו ההערה על 37 הפיקסלים כמה שורות מכאן. */
  .user-badge{display:flex;align-items:center;justify-content:center;gap:8px;font-size:.82rem;
       color:var(--ink-soft);min-width:24px;min-height:24px;
       background:transparent;border:1px solid transparent;border-radius:10px;padding:6px 10px;
       cursor:pointer;font-family:inherit}
  @media (hover:hover) and (pointer:fine){.user-badge:hover{border-color:var(--line);color:var(--ink)}}
  /* 37 פיקסלים נמדדו בדפדפן · מתחת לאצבע. .seg מעצב סרגלים שיושבים בתוך מסך תרגול
     ונלחצים פעם אחת; זה סרגל ניווט שנלחץ הלוך ושוב. */
  .acc-seg{margin:18px auto 4px;max-width:520px}
  .acc-seg button{min-height:44px}
  /* !important כי .pbtn מגדיר display:flex, ומחלקה שמסתירה חייבת לגבור עליו. הכלל
     נפרד מ-.hidden בכוונה: accProg ו-accAdmin מוסתרים מסיבות משלהם, ולשונית שהייתה
     מסירה את .hidden הייתה חושפת פאנל בקרה למי שאינו אדמין. */
  .tab-off{display:none !important}
  /* ציון דרך בכרטיס הסיום. צבע חם ולא ירוק · ירוק כבר שייך ל"בשליטה" בפס שמעליו,
     ושני ירוקים באותו כרטיס קוראים כאותו דבר. */
  .up-mile{margin-top:12px;padding:9px 12px;border-radius:12px;text-align:center;
       background:rgba(181,101,29,.10);border:1px solid rgba(181,101,29,.28);
       font-size:.86rem;line-height:1.5;color:var(--ink)}
  /* כרטיס המילה. גובה מינימלי קבוע כדי שחשיפת הפירוש לא תקפיץ את כל מסך הבית
     מתחתיו · קפיצה כזו גורמת ללחוץ בטעות על מה שהיה שם קודם. */
  .wcard{position:relative;margin:14px auto 0;max-width:520px;padding:14px 16px 13px;border-radius:18px;
       background:var(--card);border:1px solid var(--line);text-align:center;min-height:156px;
       display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}
  /* 44 ולא 34: זה נלחץ באגודל, ומטרה קטנה בפינה מייצרת החטאות לתוך הכרטיס עצמו. */
  .wc-x{position:absolute;top:0;inset-inline-end:0;width:44px;height:44px;
       background:transparent;border:0;border-radius:50%;font-size:.8rem;line-height:1;
       color:var(--ink-soft);opacity:.55;cursor:pointer}
  @media (hover:hover) and (pointer:fine){.wc-x:hover{opacity:1;background:var(--line)}}
  .wc-kicker{font-size:.66rem;letter-spacing:2px;color:var(--ink-soft);margin-bottom:6px}
  .wc-term{font-size:1.3rem;font-weight:700;line-height:1.35;margin-bottom:11px;color:var(--ink)}
  /* הרמקול נעוץ לשמאל למעלה כמו בתרגול (‏inset-inline-end ב-RTL הוא שמאל, בדיוק כמו
     ב-.wc-x מעליו). נעוץ ולא flex: עם flex:1 המילה נדחקה ימינה בחצי רוחב הכפתור וחדלה
     להיות ממורכזת מול הכותרת וכפתור "גלה את הפירוש" · נמדד. הריפוד הסימטרי שומר על
     המרכוז וגם מונע ממילה ארוכה לרוץ מתחת לכפתור. */
  .wc-row{position:relative;width:100%;padding-inline:45px;margin-bottom:11px}
  .wc-row .wc-term{margin-bottom:0}
  /* 20% קטן מהרמקול שבמסכי התרגול: שם הוא לצד השאלה והוא הפעולה, כאן הוא כפתור משני
     בכרטיס תצוגה. הערכים הם 0.8 מהמקור, כולל הפינה. */
  .wc-row .say{position:absolute;inset-inline-end:0;top:0;
    font-size:.84rem;padding:6px 8px;border-radius:8px}
  .wc-reveal{background:transparent;border:1px dashed var(--line);border-radius:12px;
       min-height:44px;padding:8px 18px;font-family:"Heebo";font-size:.84rem;
       color:var(--ink-soft);cursor:pointer}
  @media (hover:hover) and (pointer:fine){.wc-reveal:hover{border-color:var(--accent);color:var(--ink)}}
  .wc-mean{font-size:.92rem;line-height:1.55;color:var(--ink);margin-bottom:11px}
  .wc-acts{display:flex;gap:8px;justify-content:center;flex-wrap:wrap}
  /* wc-prac ולא wc-go · ראו את ההערה ב-#wcActs. שם מחלקה שחוזר פעמיים בגיליון אחד
     נפתר לטובת האחרון, וזה מה שהפך את הכפתור הזה לעיגול. */
  .wc-prac,.wc-alt{white-space:nowrap;flex:0 0 auto}
  .wc-prac{background:var(--accent);color:#fff;border:0;border-radius:12px;min-height:44px;
       padding:10px 16px;font-family:"Heebo";font-size:.85rem;cursor:pointer}
  .wc-alt{background:transparent;border:1px solid var(--line);border-radius:12px;min-height:44px;
       padding:10px 14px;font-family:"Heebo";font-size:.85rem;color:var(--ink-soft);cursor:pointer}
  /* התג של "הבאה בתור". position:relative על האריח כדי שהתג ייצמד אליו, ו-overflow
     גלוי כדי שלא ייחתך. הצבע הוא accent ולא ירוק: זו הצעה, לא הישג. */
  .tile{position:relative}
  .tile.next{border-color:var(--accent)}
  .tile-tag{position:absolute;top:-9px;inset-inline-start:50%;transform:translateX(50%);
       background:var(--accent);color:#fff;font-size:.62rem;line-height:1;white-space:nowrap;
       padding:4px 8px;border-radius:999px;font-family:"Heebo";letter-spacing:.2px}
  /* משתמשת דיווחה שלא ידעה שיש הגדרות בכלל, כי הדרך היחידה פנימה הייתה ללחוץ על השם
     שלה. שם אינו נראה כמו כפתור. הגלגל נוסף לצדו ולא במקומו: מי שכבר למד את הדרך
     הישנה לא מאבד אותה. 44 פיקסלים כי זה נלחץ באגודל. */
  .gear-btn{background:transparent;border:1px solid transparent;border-radius:10px;
       min-width:44px;min-height:44px;font-size:1.05rem;line-height:1;color:var(--ink-soft);
       cursor:pointer;margin-inline-start:4px}
  @media (hover:hover) and (pointer:fine){.gear-btn:hover{border-color:var(--line);color:var(--ink)}}
  /* account screen */
  .acc-card{background:var(--card);border:1px solid var(--line);border-radius:14px;
       padding:4px 16px;margin-bottom:22px}
  .acc-row{display:flex;justify-content:space-between;align-items:center;gap:12px;
       padding:13px 0;border-bottom:1px solid var(--line);font-size:.9rem}
  .acc-row:last-child{border-bottom:none}
  .acc-row span{color:var(--ink-soft)}
  .acc-row b{font-weight:600;text-align:start;direction:ltr;unicode-bidi:plaintext}
  .acc-h{font-family:"Frank Ruhl Libre",serif;font-size:1.05rem;margin:26px 0 10px;color:var(--ink)}
  /* the destructive action must not look like the two ordinary ones above it */
  .pbtn.danger-tile{border-color:#d8a99c}
  .pbtn.danger-tile .tx b{color:#a33f28}
  .acc-soon{margin-top:26px;font-size:.8rem;line-height:1.7;color:var(--ink-soft)}
  .user-badge b{color:var(--ink)}

  /* admin */
  .adm-row{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 14px;
       margin-bottom:8px}
  .adm-top{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
  .adm-top b{font-family:"Frank Ruhl Libre",serif;font-size:1.05rem}
  .adm-top .mail{color:var(--ink-soft);font-size:.82rem;direction:ltr}
  .adm-tag{font-size:.62rem;letter-spacing:.06em;background:var(--accent);color:#fff;
       border-radius:5px;padding:2px 6px;font-weight:700}
  /* תג הכיתה · שקוף עם מסגרת ולא מלא. שני תגים מלאים באותו אדום ליד השם
     נקראים כשתי אזהרות, ותג הכיתה הוא שיוך ולא התרעה. */
  .adm-tag.cls{background:transparent;color:var(--gold-ink);border:1px solid var(--gold);
       font-weight:600;letter-spacing:0}
  /* open-report counter on the "בקרה" button. Sits inline rather than floating over the corner:
     the topbar buttons are small and a corner dot would clip on narrow phones. */
  .adm-badge{display:inline-flex;align-items:center;justify-content:center;min-width:19px;height:19px;
       padding:0 5px;margin-inline-start:6px;border-radius:999px;background:#b5482e;color:#fff;
       font-size:.68rem;font-weight:800;line-height:1;vertical-align:middle;
       animation:badgePulse 1.7s ease-out 3}
  /* The pulse animates only the outer ring, never scale or opacity. A scale-in entrance froze at
     scale(0) when the badge was appended while its screen was still display:none -- an invisible
     counter is worse than no counter, so the resting state must not depend on the animation. */
  @keyframes badgePulse{0%{box-shadow:0 0 0 0 rgba(181,72,46,.55)}
       70%{box-shadow:0 0 0 9px rgba(181,72,46,0)}100%{box-shadow:0 0 0 0 rgba(181,72,46,0)}}
  @media (prefers-reduced-motion:reduce){.adm-badge{animation:none}}
  .adm-meta{display:flex;gap:14px;flex-wrap:wrap;font-size:.76rem;color:var(--ink-soft);margin-top:6px}
  .adm-meta i{font-style:normal;color:var(--ink);font-weight:600}
  .adm-sub{margin-top:8px;display:inline-block;font-size:.72rem;padding:2px 9px;border-radius:999px;
    border:1px solid var(--line);color:var(--ink-soft)}
  .adm-sub.ok{border-color:#4e7d4e;color:#3f6b4a}
  .adm-sub.due{border-color:var(--accent);color:var(--accent)}
  .adm-sub.off{border-color:var(--line);color:var(--ink-soft)}
  .adm-acts{margin-top:9px;display:flex;flex-wrap:wrap;gap:6px}
  /* ⭐ 25.9 · שלושת מצבי המנוי (.adm-subacts) כבר אינם מאחורי המתג «כלים למנויים» · המתג ירד
     (הכרעת 24.9 (1)), והבורר גלוי בתוך אזור הפעולות שנפתח ב-⋮ (ADMIN-23.9 למטה). */
  /* המענה למדווח · פעולה חיובית, ולכן ירוק ולא האדום של .danger. הוא מופיע רק על
     דיווח שכבר סומן "טופל", ושם הוא הצעד הבא ולא אזהרה. */
  .adm-acts button.adm-reply{border-color:rgba(78,125,78,.5);color:var(--green)}
  @media (hover:hover) and (pointer:fine){.adm-acts button.adm-reply:hover{border-color:var(--green);background:rgba(78,125,78,.08)}}
  .adm-acts button.danger{border-color:rgba(181,72,46,.45);color:var(--accent)}
  @media (hover:hover) and (pointer:fine){.adm-acts button.danger:hover{border-color:var(--accent);background:rgba(181,72,46,.07)}}
  .adm-acts button{background:transparent;border:1px solid var(--line);border-radius:999px;
       padding:5px 13px;font-family:"Heebo";font-size:.78rem;color:var(--ink-soft)}
  @media (hover:hover) and (pointer:fine){.adm-acts button:hover{border-color:var(--gold);color:var(--ink)}}
  /* admin toolbar -- search / sort / filter */
  /* ===== progress, one ring per language =====
     The ring carries three quantities at once: the filled arc is what is solid, the paler arc
     behind it is everything met, and the track is the rest. Reading a percentage and a
     breakdown off the same shape is the point -- two numbers side by side do not say which
     language is ahead, and a shape does it before you read a digit. */
  .acc-prog{margin:6px 0 22px}
  .acc-prog.hidden{display:none!important}
  .lp-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
  @media(max-width:330px){.lp-grid{grid-template-columns:1fr}}
  .lp-card{display:block;width:100%;text-align:center;cursor:pointer;
       background:var(--card);border:1px solid var(--line);border-radius:16px;
       padding:16px 10px 13px;font-family:inherit;transition:transform .2s,scale .2s,opacity .2s,color .2s,background-color .2s,border-color .2s,box-shadow .2s,fill .2s,stroke .2s,filter .2s;
       box-shadow:0 1px 2px rgba(120,84,48,.06)}
  @media (hover:hover) and (pointer:fine){.lp-card:hover{transform:translateY(-2px);border-color:var(--gold)}}
  /* the language you are actually in */
  .lp-card.on{border-color:var(--accent);
       background:linear-gradient(180deg,#fffdf8,#fdf5ec);
       box-shadow:0 1px 2px rgba(120,84,48,.08),0 10px 22px -14px rgba(166,60,38,.5)}
  .lp-ring{position:relative;width:112px;height:112px;margin:0 auto}
  .lp-ring svg{width:100%;height:100%;transform:rotate(-90deg)}
  .lp-ring circle{fill:none;stroke-width:11;stroke-linecap:round}
  .lp-bg{stroke:var(--paper-deep)}
  .lp-met{stroke:var(--gold);opacity:.45;transition:stroke-dasharray .7s cubic-bezier(.2,.8,.2,1)}
  .lp-sol{stroke:#4e8d55;transition:stroke-dasharray .7s cubic-bezier(.2,.8,.2,1) .1s}
  .lp-mid{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;
       justify-content:center;pointer-events:none}
  .lp-mid b{font-family:"Frank Ruhl Libre",serif;font-size:1.75rem;font-weight:900;
       color:var(--ink);line-height:1}
  .lp-mid b i{font-style:normal;font-size:.85rem;color:var(--ink-soft);margin-inline-start:1px}
  .lp-mid span{margin-top:2px;font-size:.74rem;color:var(--ink-soft)}
  .lp-legend{margin-top:11px;display:flex;flex-direction:column;gap:3px;
       font-size:.72rem;color:var(--ink-soft)}
  .lp-legend span{display:flex;align-items:center;gap:5px;justify-content:center}
  .lp-legend i{width:8px;height:8px;border-radius:50%;flex:none}
  .lp-legend i.s{background:#4e8d55}
  .lp-legend i.w{background:var(--gold)}
  .lp-legend i.n{background:var(--paper-deep);border:1px solid var(--line)}
  .lp-foot{margin-top:9px;padding-top:8px;border-top:1px solid var(--line);
       font-size:.68rem;color:#a2968a}
  /* the streak, under both -- it belongs to the person, not to a language */
  .lp-streak{margin-top:10px;display:flex;align-items:center;gap:10px;
       background:var(--card);border:1px solid var(--line);border-radius:14px;padding:12px 14px}
  .lp-streak b{font-family:"Frank Ruhl Libre",serif;font-size:1.5rem;font-weight:900;
       color:var(--ink);line-height:1}
  .lp-streak>span{font-size:.74rem;color:var(--ink-soft)}
  .lp-week{margin-inline-start:auto;display:flex;gap:4px}
  .lp-week i{width:17px;height:26px;border-radius:6px;background:var(--paper-deep);
       display:flex;align-items:flex-end;justify-content:center;padding-bottom:2px}
  .lp-week i.on{background:linear-gradient(180deg,var(--gold),var(--accent))}
  .lp-week i.today{outline:2px solid var(--accent);outline-offset:1px}
  .lp-week em{font-style:normal;font-size:.56rem;color:var(--ink-soft)}
  .lp-week i.on em{color:#fffdf8}
  /* the top request, as the top action.
     ⭐ נבנה מחדש 21.8.2026, והכול נמדד באפליקציה החיה ב-375px לפני ואחרי:
     · הכותרת הקבועה הוצגה ב-17.92px משקל 900 והמספר המשתנה ב-13.12px משקל 400.
       מה שזהה בכל כניסה היה גדול ב-37% מהסיבה היחידה ללחוץ. המספר הוא הכותרת עכשיו.
     · העיגול היה 38px מלא · פי 2.3 מסה מהכותרת שהוא מצביע עליה. הפך לחץ דק.
     · הגרדיאנט מדד 1.15:1 מקצה לקצה, מתחת לסף שבו העין מבחינה בהפרש. ירד.
     · שני כפתורים זהים = אין ראשי. רק העליון מקבל קצה זהב.
     · 80px ⇒ 66px לכל אחד.
     ⛔ ולמה .wc-go נשאר בשמו: הוא מוגדר גם ליד #wcActs, ומחלקה חדשה בשם דומה
        יורשת את העיגול ונשברת. זה כבר קרה ל-wcPractice. */
  .weak-cta{position:relative;display:grid;grid-template-columns:auto 1fr auto;
       align-items:center;column-gap:14px;width:100%;min-height:64px;
       margin:12px 0 0;padding:12px 16px;border-radius:14px;cursor:pointer;
       text-align:start;line-height:1.35;
       border:1px solid var(--line);background:var(--card);
       box-shadow:inset 0 1px 0 rgba(255,255,255,.9),0 1px 2px rgba(120,84,48,.07);
       transition:transform .09s cubic-bezier(.25,.46,.45,.94),
                  box-shadow .2s cubic-bezier(.215,.61,.355,1),
                  border-color .2s cubic-bezier(.215,.61,.355,1)}
  .weak-cta.hidden{display:none!important}
  /* המספר · Frank Ruhl Libre משקל 500, משקל שהגופן נושא ומעולם לא היה בשימוש */
  .wc-n{font-family:"Frank Ruhl Libre",serif;font-weight:500;font-size:2.1rem;
       line-height:1;letter-spacing:-.02em;color:var(--accent-deep);
       font-variant-numeric:tabular-nums;min-width:1.7em;text-align:center}
  .wc-tx{min-width:0}
  .wc-tx b{display:block;font-family:"Heebo",sans-serif;font-size:.98rem;
       font-weight:600;color:var(--ink);line-height:1.3}
  .wc-tx span{display:block;margin-top:2px;font-size:.78rem;color:var(--ink-soft);line-height:1.4}
  .wc-go{flex:none;width:auto;height:auto;border-radius:0;background:none;box-shadow:none;
       font-style:normal;font-size:1.05rem;line-height:1;color:var(--accent);opacity:.5;
       transition:transform .2s cubic-bezier(.215,.61,.355,1),opacity .2s}
  /* ⭐ 19.9 · שלושת הכללים של #homeWeak ו-#homeAcquired ירדו: הקצה הצבוע בצד (הלשונית שחגי מחק, DNA כלל 8)
     והמספר הקטן יותר. שתי השורות הן עכשיו `.cta.lg` של הבית המאוחד (HOME-19.9 בסוף הקובץ). */
  /* ⭐ תגובת לחיצה · לא היה בגיליון אף כלל :active, וכל 42 כללי ההצבעה יושבים
     מאחורי hover:hover שאינו נורה בטלפון לעולם. 90ms הוא בתוך חלון 80-150. */
  .weak-cta:active{transform:scale(.985)}
  .weak-cta:active .wc-go{transform:translateX(-3px);opacity:1}
  /* ⛔ כלל אחד לכל @media, ולא שניים בבלוק אחד · השער ב-tests/61 מוודא שהטקסט
     שלפני כל כלל :hover נגמר בדיוק בסייג, ולכן כלל שני באותו בלוק נספר כלא־מסויג.
     זו התבנית בכל 42 הכללים האחרים בגיליון. */
  @media (hover:hover) and (pointer:fine){.weak-cta:hover{box-shadow:inset 0 1px 0 rgba(255,255,255,.92),0 1px 2px rgba(120,84,48,.09),0 8px 18px -12px rgba(120,84,48,.28)}}
  @media (hover:hover) and (pointer:fine){.weak-cta:hover .wc-go{transform:translateX(-3px);opacity:1}}
  @media (prefers-reduced-motion:reduce){
    .weak-cta:active{transform:none;background:var(--paper-deep)}
    .wc-go{transition:none}}
  /* the morning glance -- five numbers, above the list, before any scrolling */
  .adm-glance{display:grid;grid-template-columns:repeat(auto-fit,minmax(96px,1fr));gap:8px;
       margin:2px 0 14px}
  .adm-g{background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:var(--lift-1);
       padding:12px 10px;text-align:center}
  .adm-g b{display:block;font-family:"Frank Ruhl Libre",serif;font-size:1.6rem;
       font-weight:900;color:var(--ink);line-height:1.1}
  .adm-g span{display:block;margin-top:4px;font-size:.74rem;color:var(--ink-soft);line-height:1.4}
  .adm-g i{display:block;margin-top:2px;font-size:.66rem;color:#a2968a;font-style:normal}
  /* the only one that is bad news when it is high */
  .adm-g.warn{border-color:rgba(166,60,38,.4);background:#fff8f4}
  .adm-g.warn b{color:var(--accent)}
  .adm-tools{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:2px 0 10px}
  .adm-tools input.adm-search,.adm-tools select{background:var(--card);border:1px solid var(--line);
       border-radius:999px;padding:8px 13px;font-family:"Heebo";color:var(--ink);min-width:0}
  .adm-tools input.adm-search{flex:1 1 200px;font-size:.86rem}
  .adm-tools input.adm-search::placeholder{color:var(--ink-soft)}
  .adm-tools select{flex:1 1 132px;font-size:.79rem;color:var(--ink-soft)}
  .adm-tools input.adm-date{background:var(--card);border:1px solid var(--line);border-radius:10px;
       padding:8px 11px;font-family:"Heebo";font-size:.79rem;color:var(--ink-soft);flex:1 1 132px}
  .adm-tools input.adm-search:focus,.adm-tools select:focus,
  .adm-tools input.adm-date:focus{outline:none;border-color:var(--gold);color:var(--ink)}
  .adm-count{font-size:.82rem;color:var(--ink-soft);margin-bottom:10px}
  .adm-count b{color:var(--accent);font-weight:700}
  @media (max-width:480px){ .adm-tools input.adm-search{flex-basis:100%} }

  /* level test */
  .lv-opts{display:flex;flex-direction:column;gap:9px;margin-top:22px}
  .lv-opts button{font-family:"Heebo";font-size:1.02rem;font-weight:500;text-align:right;
       background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:14px 16px;
       transition:transform .13s,scale .13s,opacity .13s,color .13s,background-color .13s,border-color .13s,box-shadow .13s,fill .13s,stroke .13s,filter .13s;color:var(--ink)}
  /* דיווח משתמשת (5.8.2026): "ברגע שבחרתי תשובה, בשאלה הבאה אותו ריבוע נשאר מסומן קצת".
     זה לא שריד מצב · lvRender כותב innerHTML מחדש, כך שהכפתורים נהרסים ונבנים, ושום
     מחלקה או פוקוס אינם שורדים. מה ששורד הוא ה-:hover עצמו: במסך מגע הדפדפן משאיר
     hover על מה שנמצא מתחת לאצבע, והכפתור החדש שנבנה באותו מקום יורש אותו. התוצאה היא
     מסגרת זהב והרמה על אפשרות אחת בלבד · בדיוק "מסומן קצת".
     hover:hover ו-pointer:fine ביחד: המדיה הזאת נכונה גם למכשירים היברידיים (מסך מגע
     עם עכבר), שבהם hover:hover לבדו עדיין מחזיר אמת באצבע.
     חל גם על מבחן היחידה · #exOpts נושא את אותה מחלקה. */
  @media (hover:hover) and (pointer:fine){
    .lv-opts button:hover{border-color:var(--gold);transform:translateY(-1px)}
  }
  .lv-opts button:disabled{opacity:.55;transform:none}
  .lv-opts button.right{background:rgba(78,125,78,.14);border-color:var(--green);font-weight:700}
  .lv-opts button.wrong{background:rgba(181,72,46,.12);border-color:var(--accent)}
  .lv-dunno{display:block;margin:14px auto 0;background:transparent;border:1px solid var(--line);
       color:var(--ink-soft);border-radius:999px;padding:8px 20px;font-family:"Heebo";font-size:.88rem}
  @media (hover:hover) and (pointer:fine){.lv-dunno:hover{border-color:var(--ink-soft);color:var(--ink)}}
  .lv-badge{font-family:"Frank Ruhl Libre",serif;font-size:3.4rem;font-weight:900;color:var(--accent);
       line-height:1;letter-spacing:.02em}
  /* ההמלצה מאיזו יחידה להתחיל · שורה אחת מתחת למשפט, בדיו מלא ולא ב---ink-soft:
     זו הפעולה שהלומד לוקח מהמסך, והמשפט שמעליה הוא ההסבר. */
  .lv-from{margin-top:10px;font-size:1rem;font-weight:600;color:var(--ink)}
  .lv-bands{display:flex;flex-direction:column;gap:7px;margin-top:24px}
  .lv-band{display:flex;align-items:center;gap:11px;background:var(--card);border:1px solid var(--line);
       border-radius:11px;padding:10px 14px}
  .lv-band b{font-family:"Cascadia Mono",Consolas,monospace;font-size:.86rem;width:26px;flex:0 0 auto}
  .lv-band .bar{flex:1;height:8px;background:var(--paper-deep);border-radius:4px;overflow:hidden}
  .lv-band .bar i{display:block;height:100%;background:linear-gradient(90deg,var(--gold),var(--accent))}
  .lv-band .pc{font-family:"Cascadia Mono",Consolas,monospace;font-size:.82rem;color:var(--ink-soft);
       width:42px;text-align:left;flex:0 0 auto}
  .lv-band .lbl{font-size:.78rem;color:var(--ink-soft);width:78px;flex:0 0 auto}
  .lv-offer{background:var(--card);border:1px solid var(--gold);border-radius:14px;padding:16px 18px;margin-top:20px}
  .lv-offer p{font-size:.92rem;line-height:1.55}

  /* build tag -- always know which version you're looking at */
  /* ⭐ 24.9 · ביקורת/עיצוב-9.9/השלמות.html #13 (אושר 10.9 17:10, יושם 24.9): גופן הגוף, לא מונו,
     ו-flex+gap כמו .build בקובץ -- זה גם מה שמוציא את הרווח לפני הפסיק ב-innerText (פריטי flex
     נפרדים סביב <b> וה-button), בלי לגעת במילים עצמן (app.js ליד renderBuildTag השיל את
     <span class="stale"> כדי שמספר הפריטים יהיה זהה לקובץ -- 4, לא 6). */
  .build-tag{text-align:center;padding:10px 0;font-size:12.5px;line-height:1.55;color:var(--ink-soft);
       font-family:"Heebo","Arial Hebrew",Arial,sans-serif;letter-spacing:normal;
       display:flex;align-items:center;justify-content:center;gap:8px}
  .build-tag b{font-weight:600;color:var(--ink)}
  .build-tag .stale{color:var(--accent);font-weight:700}
  /* ⭐ ביקורת/עיצוב-9.9/השלמות.html #13 (אושר 10.9 17:10) · כפתור רענון בתוך התג עצמו,
     lg (app.js) = הזכוכית המשותפת (LG-SYSTEM, שורה 1732) כמו בקובץ המאושר */
  .build-tag .pill{display:inline-flex;align-items:center;border:0;cursor:pointer;
    border-radius:999px;height:26px;padding:0 10px;font:inherit;font-size:12px;font-weight:600;gap:5px;
    color:var(--ink);background-image:none;
    vertical-align:middle;margin-inline-start:0}

  /* ⭐ 24.9 · ביקורת/עיצוב-9.9/השלמות.html #12 (העמוד אחרי מחיקת חשבון, אושר 10.9.2026).
     עמוד עצמאי לגמרי: document.body.innerHTML מוחלף כולו (app.js, ליד #delGo) -- אין מסך-הורה
     שמזריק --display/--body (אלה מוגדרים per-screen, לא ב-:root), ולכן הערכים כאן קשיחים בדיוק
     כמו בקובץ המאושר. --ink/--ink-soft/--accent כן גלובליים (:root, שורה 34-35), var() עובד. */
  .bye{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;
       text-align:center;padding:20px;font-family:"Heebo","Arial Hebrew",Arial,sans-serif;
       font-size:17px;line-height:1.55}
  .bye .brand{font-family:"Frank Ruhl Libre","David Libre",serif;font-weight:700;font-size:22px;
       color:var(--accent);margin:0 0 22px}
  /* ⭐ 28.9 · ביקורת/עיצוב-9.9/השלמות.html #12: "החשבון נמחק" עולה מ-<p> רגיל ל-<h2>
     בגופן הכותרות (app.js, ליד #delGo) -- שורת ההסבר נשארת <p> נפרד, בלי <br> ביניהם. */
  .bye h2{font-family:"Frank Ruhl Libre","David Libre",serif;font-weight:700;font-size:30px;margin:0 0 8px}
  .bye p{margin:0;font-size:16px}
  .bye p.soft{margin-top:10px;color:var(--ink-soft);font-size:14px}

  /* install call-to-action -- a real button, not an underlined hint that reads like an error */
  /* UNIT EXAM */
  .ex-parts{display:flex;flex-direction:column;gap:8px;margin-top:20px}
  .ex-part{display:flex;align-items:center;gap:11px;background:var(--card);border:1px solid var(--line);
    border-radius:12px;padding:11px 14px;font-size:.86rem}
  .ex-part b{font-family:"Cascadia Mono",Consolas,monospace;color:var(--accent);flex:0 0 auto}
  .ex-part span{color:var(--ink-soft);font-size:.8rem}
  .ex-fb{margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}
  .ex-fb .v{font-weight:700}
  /* 2.10 נגישות: על #efe8da --green נתן 3.94 ו---accent נתן 4.38 · --ok ו---accent-deep של #exam (#exFb יושב בתוכו) */
  .ex-fb .v.ok{color:var(--ok)} .ex-fb .v.no{color:var(--accent-deep)}
  .ex-fb .rv{font-size:.9rem;color:var(--ink-soft);margin-top:5px}
  .ex-break{display:flex;flex-direction:column;gap:7px;margin-top:22px}
  .ex-row{display:flex;align-items:center;gap:11px;background:var(--card);border:1px solid var(--line);
    border-radius:12px;padding:10px 14px;font-size:.86rem}
  .ex-row .nm{flex:1} .ex-row .sc{font-family:"Cascadia Mono",Consolas,monospace;font-size:.84rem;color:var(--ink-soft)}
  .ex-miss{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px 14px;
    margin-bottom:7px;font-size:.9rem}
  .ex-miss b{color:var(--accent)}
  .ex-miss .yours{font-size:.78rem;color:var(--ink-soft)}
  .ex-hist{font-size:.78rem;color:var(--ink-soft);margin-top:9px;text-align:center}

  /* PRINT SHEET -- invisible on screen, the whole page when printing */
  #sheet{display:none}
  /* Ctrl+P from anywhere used to print a blank page: the print rule hides the whole app and
     shows #sheet, which is empty until a worksheet is built. */
  @media print{
    #sheet:empty::after{content:"כדי להדפיס דף מבחן, פתח יחידה ולחץ \"דף מבחן להדפסה\".";
      display:block;padding:40px;font-size:14px;text-align:center;color:#444}
    #sizeAsk,#sheetAsk{display:none!important}

    /* Everything the app draws is irrelevant on paper; only the sheet prints. */
    body>.wrap,#auth,#installAsk,#fbFab,#fbAsk,.toast{display:none!important}
    body{background:#fff;color:#000;padding:0}
    #sheet{display:block!important;font-family:"Heebo","Arial Hebrew",Arial,sans-serif;font-size:11pt;line-height:1.6;color:#111}
    #sheet .sh-page{page-break-after:always;padding:14mm 12mm;background:#fff;border:1px solid #e3d8c4;border-radius:6px;box-shadow:0 10px 30px -14px rgba(44,38,32,.35)}
    #sheet .sh-page:last-child{page-break-after:auto}
    #sheet h1{font-family:"Frank Ruhl Libre","David Libre",serif;font-size:17pt;margin-bottom:2mm}
    #sheet .sh-meta{font-size:9.5pt;color:#555;border-bottom:none;padding-bottom:3mm;margin-bottom:5mm}
    #sheet .sh-fill{display:flex;gap:8mm;font-size:10pt;margin-bottom:6mm;border-top:1px solid #ddd;border-bottom:1px solid #ddd}
    #sheet .sh-fill span{flex:1;border-bottom:none;padding-bottom:1mm}
    #sheet .sh-inst{font-size:9.5pt;background:transparent;padding:3mm 4mm;margin-bottom:6mm;border-radius:0}
    #sheet ol{padding-inline-start:0}
    /* פיקס 28.9 (הכרעת העוזר האישי, החלטות-800plus.md ~13:40 ו-~15:00): שתי עמודות בשני
       הדפים, כמו בקובץ המאושר (.paper ol{grid-template-columns:1fr 1fr}) -- כולל הדף העברי,
       שקודם נשאר עמודה אחת כי ההנחה הישנה הייתה שפירוש עברי צריך את כל רוחב העמוד. בפועל
       הדף מדפיס את המילה בלבד (q()) והתלמיד כותב את התשובה על הקו -- בדיוק כמו באנגלית --
       ולכן אותה הצדקה חלה על שתי השפות. columns:2 ולא grid-template-columns: מספיק כשהתוצאה
       היא שתי עמודות (הבריף), ואין צורך להעתיק את מנגנון ה-CSS של הקובץ המאושר מילה במילה. */
    #sheet ol.two{columns:2;column-gap:9mm}
    #sheet ol.two li{break-inside:avoid}
    /* פיקס 28.9 (הכרעת העוזר האישי, החלטות-800plus.md שורה 372): בלי מספור בדף השאלות. flex
       על ה-li ולא list-item מוריד את ה-::marker (אין list-style-type: אין לו על מה לחול), והקו
       יושב לצד המילה באותה שורה במקום מתחתיה -- בדיוק כמו בקובץ המאושר (.paper li). */
    #sheet ol li{display:flex;align-items:baseline;gap:2mm;margin-bottom:5.5mm;page-break-inside:avoid}
    #sheet .sh-q{font-weight:700}
    #sheet .sh-q.ltr{direction:ltr;display:inline-block;text-align:left}
    #sheet .sh-line{flex:1;border-bottom:1px solid #999;height:6mm}
    #sheet .sh-key{columns:2;column-gap:10mm;font-size:10pt}
    #sheet .sh-key div{break-inside:avoid;margin-bottom:2mm}
    #sheet .sh-key b{font-weight:700}
    #sheet .sh-foot{margin-top:6mm;font-size:8.5pt;color:#767676;text-align:center}
  }

  /* ===== INTRO =====
     The landing page was a wall of eight identical grey boxes. It is the first thing a stranger
     sees and it had to earn the next tap, so it now reads as a printed page that is being set:
     the rule draws itself, the count runs up, the cards arrive one after another. Slow and
     small on purpose -- this is a study tool, not a launch page. Every motion is opt-out via
     prefers-reduced-motion, and every colour is already in the palette. */
  #intro{position:relative;overflow-x:clip}
  #intro::before{content:"";position:absolute;inset-block:-40px 40%;inset-inline:calc(50% - 50vw);z-index:-1;pointer-events:none;
    background:
      radial-gradient(60% 45% at 50% 0%, rgba(201,150,47,.13), transparent 70%),
      radial-gradient(40% 30% at 12% 18%, rgba(181,72,46,.07), transparent 70%);
    animation:wash 4.8s ease-in-out 1}   /* 9.10 נגישות (2.2.2): פעם אחת, פחות מ-5 שניות, ונגמרת במצב המנוחה */
  @keyframes wash{ 0%{opacity:.75;transform:translateY(0)} 50%{opacity:1;transform:translateY(-10px)} 100%{opacity:1;transform:translateY(0)} }

  .in-rise{opacity:0;animation:rise .7s cubic-bezier(.22,.8,.3,1) forwards}
  /* Two independent safety nets, because the CTA lives under this rule. `@supports`
     covers a browser that cannot run the animation at all; `.anim-done` is set from JS
     after 1.5s and covers an animation that exists but never advances. */
  @supports not (animation-name:rise){ .in-rise{opacity:1} }
  #intro.anim-done .in-rise{opacity:1}
  /* the intro reuses the shared `rise` keyframes defined above -- a second definition
     here silently overrode them for every other screen that animates in. */

  /* ⭐ 19.9 · הקו שנמתח מתחת ל«שנשאר איתך» ירד יחד עם הכותרת הישנה: «בלי קו זהב מתחת למילה»
     (DNA-עיצוב.md, כלל 8). הכותרת החדשה ושני שמות המבחנים בבלוק INTRO-19.9, בסוף הקובץ. */

  .in-stat{display:flex;align-items:baseline;justify-content:center;gap:9px;margin-top:16px}
  .in-stat b{font-family:"Frank Ruhl Libre",serif;font-size:clamp(2.4rem,11vw,3.4rem);font-weight:900;
    line-height:1;letter-spacing:-.03em;
    background:linear-gradient(100deg,var(--accent),var(--gold) 70%);
    -webkit-background-clip:text;background-clip:text;color:transparent;
    font-variant-numeric:tabular-nums}
  .in-stat span{font-size:.9rem;color:var(--ink-soft)}

  .feat-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:24px}
  @media (max-width:430px){ .feat-grid{grid-template-columns:1fr} }
  .feat{position:relative;overflow:hidden;background:var(--card);border:1px solid var(--line);
    border-radius:14px;padding:14px 16px 14px 15px;display:flex;gap:11px;align-items:flex-start;
    transition:transform .25s cubic-bezier(.22,.8,.3,1), box-shadow .25s, border-color .25s}
  /* a gold edge that grows from the top on hover -- the reading edge in RTL is the right one.
     ⛔ תוקן 21.8.2026: הקוד כתב `inset-inline-end` בזמן שההערה מעליו אומרת "הקצה
     הימני". נמדד בדפדפן תחת `direction:rtl` · `inset-inline-end` מחזיר את הקצה
     ה**שמאלי** ו-`inset-inline-start` את הימני. הפס ישב הפוך מהכוונה הכתובה. */
  .feat::before{content:"";position:absolute;inset-block:0;inset-inline-start:0;width:3px;
    background:linear-gradient(180deg,var(--gold),var(--accent));
    transform:scaleY(0);transform-origin:top;transition:transform .3s cubic-bezier(.22,.8,.3,1)}
  @media (hover:hover) and (pointer:fine){.feat:hover{transform:translateY(-3px);border-color:#d8c8a8;box-shadow:var(--shadow)}}
  @media (hover:hover) and (pointer:fine){.feat:hover::before{transform:scaleY(1)}}
  .feat i{flex:0 0 1.6rem;font-style:normal;font-size:1.15rem;line-height:1.35;opacity:.9}
  .feat div{display:flex;flex-direction:column;gap:3px;min-width:0}
  .feat b{font-family:"Frank Ruhl Libre",serif;font-size:1rem;font-weight:700}
  .feat span{font-size:.79rem;color:var(--ink-soft);line-height:1.5}
  /* ⚠ שמונת כרטיסי `.feat` ירדו מהסימון ב-9.9.2026 (הכרעת חגי · «במקומם כרטיס
     תרגול חי ושלושה בלוקים»), והכללים שמעל נשארו: `tests/84` מחזיק טענה על
     ‏`.feat::before` כאחד הקישוטים שאסור להכהות. הסרת הכללים והסרת הטענה הן
     שינוי אחד ולא שניים, ושער קיים אינו נגרר בסבב עיצוב. */

  /* ═══ מסך הכניסה · הסימון של 9.9.2026 ═══
     ⭐ מה שמופיע כאן הוא **פריסה בלבד**. הזכוכית, הכפתורים, השדה והכרטיס
     מגיעים ממערכת הזכוכית (`.lg` ,`.btn.lg` ,`.lg-field` ,`.lg-card`) ומ-
     ‏`.lg-fill` שבערכת הרכיבים · אין כאן שורת צל אחת, ואין כאן צבע חדש.
     ⛔ הכתום אינו נכנס לכאן על טקסט: הכותרת, שם המילה, כותרות הבלוקים
     והמשוב · כולם בדיו. החריג המאושר היחיד, שני שמות המבחנים בכותרת, יושב
     בבלוק INTRO-19.9 בסוף הקובץ. */

  /* כרטיס התרגול החי · המוצר עצמו בתוך המסך, לפני הרשמה */
  .in-demo{margin-top:22px;padding:20px 18px 16px}
  .in-demo-head{display:flex;justify-content:space-between;align-items:baseline;
    font-size:.72rem;letter-spacing:.14em;color:var(--ink-soft);
    padding-bottom:10px;border-bottom:1px solid var(--line)}
  .in-demo-prog{height:4px;margin-top:10px;border-radius:2px;background:var(--line);overflow:hidden}
  .in-demo-prog i{display:block;height:100%;width:0;background:var(--gold);
    transition:width .45s cubic-bezier(.22,.8,.3,1)}
  .in-demo-kind{margin-top:12px;font-size:.86rem;color:var(--ink-soft)}
  /* המילה · הגודל מקובץ העיצוב של מסך הכניסה. הכרטיס כאן תצוגה מקדימה
     וקטן מכרטיס התרגול, ולכן הוא אינו לוקח את המידה של כרטיס המילה. */
  .in-demo-word{font-family:"Frank Ruhl Libre",serif;font-weight:700;
    font-size:clamp(43px,11.7vw,61px);line-height:1.15;margin:4px 0 14px;
    word-break:break-word}
  .in-demo-actions{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:12px}
  .in-demo-actions .btn{width:100%;padding-inline:8px}
  @media (max-width:340px){.in-demo-actions{grid-template-columns:1fr}}
  /* ⛔ המשוב אינו נצבע בכתום. הרקע נושא את המצב · רקע אינו טקסט, והכלל של
     ‏9.9 מונה שבעה מקומות שהכתום מותר בהם ומשוב אינו אחד מהם. המילים
     «נכון» ו«לא בדיוק» הן שנושאות את המשמעות, ולא הצבע. */
  .in-demo-fb{min-height:50px;margin-top:12px;padding:12px 14px;
    border-radius:var(--lg-r-field);background:var(--paper-deep);
    font-size:.94rem;line-height:1.6;color:var(--ink)}
  .in-demo-fb b{font-family:"Frank Ruhl Libre",serif;font-weight:700;font-size:1.05rem}
  .in-demo-fb.ok{background:rgba(78,125,78,.12)}
  .in-demo-fb.ok b{color:var(--green)}
  .in-demo-fb.miss{background:rgba(181,72,46,.09)}
  .in-demo-fb.miss b{color:var(--ink)}
  /* ‏`.btn.lg` הוא `inline-flex` וסגוליותו גבוהה מ-`.btn-block`, ולכן רוחב
     מלא נקבע כאן ולא במחלקה הכללית · אחרת הכפתור יושב באמצע ברוחב הטקסט. */
  .in-demo-next{width:100%;margin-top:12px}
  /* .in-demo-note ירדה 21.9.2026 (בריף השבעה, רכיב 3) עם השורה שהיא עיצבה */
  /* ⛔ מודיפייר מקומי ולא שינוי של `.acc-legal` · אותה מחלקה משרתת את מסך
     החשבון ואת מסך הבית, והם סבבים נפרדים. */
  .in-legal{text-align:center}

  /* ⭐ 19.9 · שלושת הבלוקים עם הקו הזהב הקצר מעליהם הפכו לשלושה כרטיסי זכוכית (סבב 9 של הקובץ
     המאושר). הכללים שלהם בבלוק INTRO-19.9, בסוף הקובץ. ⛔ הכלל הישן `.in-claim::before` (הקו הזהב)
     ירד ולא נשאר מוסתר: ::before של הכרטיס הוא עכשיו שכבת האור של `.lg`, ורוחב 36px שלו היה חותך אותה. */

  /* the CTA breathes rather than pulses: a shadow that swells, no size change, so nothing jumps */
  #introTry{position:relative;animation:breathe 3.6s ease-in-out 1.4s 1}   /* 9.10 נגישות (2.2.2): פעימה אחת */
  /* side by side: neither is the main action -- the primary button above is -- and stacking two
     more full-width buttons under it makes the page read as three equal choices */
  .exam-row{cursor:pointer}
  .exam-row input{font-family:"Heebo";font-size:.86rem;border:1px solid var(--line);
       border-radius:9px;padding:7px 9px;background:var(--paper);color:var(--ink);
       flex:none;max-width:150px}
  /* the countdown on the home screen */
  /* ⭐ 24.9 · ביקורת/עיצוב-9.9/השלמות.html #17 (אושר 10.9 17:10, יושם 24.9): אותה זכוכית משותפת
     (LG-SYSTEM) כמו שאר הבית, לא המסגרת/הגרדיאנט הישנים. margin-top מאופס למטה (שורת
     #home .exam-pill), כי ההצהרה הכללית שם נותנת 12px לשלושתם יחד. */
  .exam-pill{display:flex;align-items:center;gap:12px;margin:0 0 10px;padding:12px 14px;
       border-radius:16px;border:0;text-align:center;
       background:rgba(255,255,255,.05);
       box-shadow:inset 0 0 14px rgba(255,255,255,.30),inset 0 -6px 12px -10px rgba(0,0,0,.10),0 8px 22px -14px rgba(44,38,32,.18);
       backdrop-filter:blur(9px) saturate(2) brightness(1.08);-webkit-backdrop-filter:blur(9px) saturate(2) brightness(1.08)}
  .exam-pill.hidden{display:none!important}
  /* ⭐ 28.9 · ביקורת/עיצוב-9.9/השלמות.html #17 (אייקון+שברון, אושר 10.9 17:10): אותה מחלקת
     bar-ico/bar-tx/bar-arr כמו upd-bar/stg-bar (style.css, שורה ~1739 ואילך) -- לא צורה
     חדשה. .bar-tx יורש את מה ש-.exam-pill span נתן קודם לצאצא הטקסטואלי היחיד. */
  .exam-pill .bar-ico{width:36px;height:36px;border-radius:999px;flex:none;display:grid;place-items:center;
       background:rgba(181,72,46,.14);box-shadow:inset 0 0 0 1px rgba(181,72,46,.18)}
  .exam-pill .bar-ico svg{width:18px;height:18px;fill:none;stroke:var(--accent);stroke-width:2.2;
       stroke-linecap:round;stroke-linejoin:round}
  .exam-pill .bar-arr{width:34px;height:34px;border-radius:50%;display:inline-grid;place-items:center;flex:none}
  .exam-pill .bar-arr svg{width:16px;height:16px;stroke:var(--accent);stroke-width:2.2;fill:none;
       stroke-linecap:round;stroke-linejoin:round}
  /* שלושת המספרים הם שלושה חלקים של אותה עובדה, ולכן הם באותו גודל. קודם הראשון הוצג
     ב-1.6rem והשניים האחרים ב-.82rem · מה שנקרא כמספר ענק עם שורת טקסט קטנה שבורה לצדו,
     ומשך את תשומת הלב לימים שנותרו במקום לעבודה שנותרה. ההדגשה נשארה · בעובי ובצבע. */
  .exam-pill .bar-tx{flex:1;font-size:15px;color:var(--ink);line-height:1.5}
  /* ⭐ 28.9 · ביקורת/עיצוב-9.9/השלמות.html #17: המספרים המודגשים בגופן הכותרות (.row .tx em
     בקובץ), לא בגופן הגוף -- קודם היה רק color+font-weight, בלי font-family/font-size. */
  .exam-pill em{font-style:normal;font-family:var(--display);font-weight:700;font-size:16px;color:var(--accent-deep);margin:0 2px}
  /* שורת ציון הדרך (examTip) יושבת מתחת למספרים ולא לצדם.
     ⚠ `min-width:100%` ולא `flex-basis:100%`. הגרסה הראשונה השתמשה ב-flex-basis,
     ונמדד בדפדפן שהיא לא שברה שורה בכלל: flex-shrink הוא 1 כברירת מחדל, ולכן הפריט
     התכווץ והתיישב לצד המספרים · שתי עמודות שכל אחת נשברת בתוך עצמה, וזה נקרא כטקסט
     מעורבב. min-width אינו ניתן לכיווץ, ולכן הוא באמת דוחף לשורה חדשה.
     שקטה מהמספרים בכוונה: זו הערת דרך, לא נתון. */
  /* ⭐ 27.9 · ביקורת/עיצוב-9.9/השלמות.html #17 (אושר 10.9 17:10): .pill-tip עברה מפריט
     flex-sibling (min-width:100% דחף אותה לשורה חדשה בתוך .exam-pill) לצאצא מקונן
     בתוך אותו span (בדיוק כמו .row .tx small בקובץ) -- display:block הוא זה שדוחף
     אותה לשורה חדשה עכשיו, כי היא כבר לא משתתפת ב-flex של ההורה. */
  .exam-pill .pill-tip{display:block;font-size:.8rem;opacity:.85;margin-top:-2px}
  .exam-pill.exam-past{cursor:pointer}
  /* בלי opacity: ‏0.9 על --ink-soft מוריד את הניגודיות מ-4.5 ל-3.87 ומפיל AA. */
  .w-note{margin-top:9px;font-size:.78rem;color:var(--ink-soft)}
  /* ⭐ 21.9.2026 · board308 חלק 3: היה grid עם שתי עמודות שוות (1fr 1fr), שכפה על
     «התחל בלי הרשמה» רוחב צר מדי ושברה אותו לשתי שורות. הקובץ המאושר (מסך-הכניסה.html,
     .cta) הוא flex פשוט בלי עמודות שוות -- כל כפתור ברוחב התוכן שלו, ורק הכפתור השני
     עובר לשורה חדשה אם אין מקום (flex-wrap), לא הטקסט שבתוך הראשון. flex:0 0 auto
     מונע מהדפדפן לדחוס בכל זאת מתחת לרוחב התוכן. */
  .in-two{display:flex;flex-wrap:wrap;gap:9px;margin-top:14px}
  .in-two>*{flex:0 0 auto}
  /* ⚠ .in-two .btn{width:100%;padding-inline:6px} ירד מכאן -- שריד מה-grid הישן (כל תא
     1fr היה צריך שהכפתור שלו ימלא אותו). עם flex+content-width הוא סותר את התיקון:
     width:100% על #introTry דוחס אותו לרוחב מלא ושולח את הכפתור השני לשורה הבאה, בדיוק
     התסמין שהיינו אמורים לתקן. #introTry כבר נושא padding-inline:22px משלו למטה. */
  @media(max-width:340px){.in-two{flex-direction:column;align-items:stretch}}
  /* 9.10 נגישות (2.2.2) · פריים אחד באמצע. ההתחלה והסוף הם הצל של הכפתור עצמו (מצב המנוחה), ולכן אין קפיצה כשהפעימה
     נעצרת. שלוש שכבות כמו במנוחה, כדי שהמעבר יהיה רציף. */
  @keyframes breathe{
    50%{box-shadow:inset 0 0 12px rgba(255,210,190,.1),inset 0 -8px 16px -12px rgba(0,0,0,.28),0 14px 34px -12px rgba(181,72,46,.8)}
  }
  @media (prefers-reduced-motion:reduce){
    #intro::before,.in-rise,#introTry{animation:none}
    .in-rise{opacity:1}
    .feat{transition:none}
  }
  /* ⭐ ביקורת/עיצוב-9.9/השלמות.html #5-6 (אושר 10.9 17:10): שני הבאנרים כרטיס זכוכית
     צף (.bar), לא פס אטום צמוד לקצוות. `.lg` (הכלל המשותף, LG-SYSTEM) נוסף ל-className
     ב-app.js ונותן את הזכוכית/הברק עצמם -- כאן רק המבנה (flex, ריפוד, פינות) והגוון. */
  /* ⚠ .lg.position:relative (LG-SYSTEM, למטה בקובץ) גובר בסדר המקור על class בודד באותה
     ספציפיות -- הסלקטור כאן חייב .lg (שני מחלקות) כדי ש-position:fixed באמת יחול, ולא רק
     יוזרק. נמדד 25.9: בלעדיו הבאנר יושב בזרימה הרגילה (position:relative בפועל), וההיסט
     (inset-inline+bottom) שנשאר תלוי בו דוחף את העמוד ברוחב (run.js, שער האזורים). */
  .upd-bar.lg, .stg-bar.lg{position:fixed;inset-inline:10px;bottom:calc(10px + env(safe-area-inset-bottom));
    display:flex;align-items:center;gap:12px;text-align:start;width:auto;max-width:none;border:0;
    border-radius:14px;padding:12px 14px;font-family:"Heebo","Arial Hebrew",Arial,sans-serif;font-size:14.5px;
    line-height:1.45;color:var(--ink);white-space:normal;overflow:hidden;box-sizing:border-box}
  /* ⚠ תוספת: כרטיס צף עם gap שמכיל שורת הסבר ארוכה (.bar-s, #6) -- בלי min-width:0 על
     הפריט הגמיש (bar-tx, למטה) תוכן ארוך דוחף את רוחב העמוד ומשבש את הצילום המלא
     (run.js, שער האזורים: "הצילום ... רוחב במקום 750"). overflow:hidden כאן הוא רשת
     ביטחון בלבד -- .bar-tx כבר אמור להתכווץ ולעטוף את הטקסט בעצמו. */
  /* a new build is ready but the moment was wrong -- one tap, no hunting for a reload button.
     ⚠ .upd-bar.lg (לא .upd-bar בלבד): מאותה סיבה כמו למעלה -- background הוא גם תכונה
     של .lg, וגובר בסדר המקור על class בודד. */
  .upd-bar.lg{z-index:200;cursor:pointer;background:rgba(201,150,47,.22);
    animation:updIn .35s cubic-bezier(.22,.8,.3,1)}
  .upd-bar{z-index:200}
  @keyframes updIn{ from{transform:translateY(140%)} to{transform:none} }
  @media (prefers-reduced-motion:reduce){ .upd-bar{animation:none} }

  /* STORAGE-FULL BAR -- stays until a write succeeds, unlike the toast it replaces */
  /* ⚠ margin-bottom:10px, לא 0: הקובץ המאושר מצמיד margin:0 בסגנון מוטבע רק לבאנר
     הגרסה (item 5, position:absolute בגיליון) -- באנר הזיכרון (item 6) הוא .bar.lg
     בלי דריסה, ושומר על margin-bottom:10px של .bar הכללי. אין השפעה על פריסה בפועל
     (position:fixed מוציא אותו מהזרימה), אבל run.js משווה גם margin מחושב. */
  .stg-bar{z-index:210;margin-bottom:10px}
  .stg-bar.hidden{display:none!important}
  /* ⭐ ביקורת/עיצוב-9.9/השלמות.html #5-6 (אושר 10.9 17:10) · כותרת מודגשת + שורת הסבר,
     בשני הבאנרים. מחלקות ייעודיות ולא תג `b`/`small` גולמי: ל-.stg-bar כבר יש `<b>`
     קיים באמצע משפט אחר (ענף האורח), וסימון display:block עליו היה שובר את המשפט ההוא.
     ⭐ .bar-s בלי font-weight/margin-top משלה (כמו בקובץ המאושר, .bar .tx small): יורשת
     420/0 מהאיפוס הכללי, בלי לדרוס אותם. */
  .upd-bar .bar-tx, .stg-bar .bar-tx{flex:1;min-width:0}
  .upd-bar .bar-t, .stg-bar .bar-t{display:block;font-weight:600;color:var(--ink)}
  .upd-bar .bar-s, .stg-bar .bar-s{display:block;font-size:13px;color:var(--ink-soft);line-height:1.45}
  /* אייקון עגול · רענון (זהב) בבאנר הגרסה, משולש אזהרה (אדום) בבאנר הזיכרון -- אותם
     SVG בדיוק כמו בתג הגרסה (#13, renderBuildTag) ובמצבי הכיתה (#16). ⭐ ערכי .bar.gold
     .ico.sm המדויקים של הקובץ המאושר (rgba(...,.22)/(...,.3)), לא ערך מוחלף. */
  .upd-bar .bar-ico, .stg-bar .bar-ico{width:36px;height:36px;border-radius:999px;flex:none;
    display:grid;place-items:center}
  .upd-bar .bar-ico{background:rgba(201,150,47,.22);box-shadow:inset 0 0 0 1px rgba(201,150,47,.3)}
  .upd-bar .bar-ico svg{width:18px;height:18px;fill:none;stroke:var(--gold);stroke-width:2.2;
    stroke-linecap:round;stroke-linejoin:round}
  .stg-bar .bar-ico{background:rgba(181,72,46,.14);box-shadow:inset 0 0 0 1px rgba(181,72,46,.18)}
  .stg-bar .bar-ico svg{width:18px;height:18px;fill:none;stroke:var(--accent);stroke-width:2.2;
    stroke-linecap:round;stroke-linejoin:round}
  .upd-bar .bar-arr{width:34px;height:34px;border-radius:50%;display:inline-grid;place-items:center;flex:none}
  .upd-bar .bar-arr svg{width:16px;height:16px;stroke:var(--gold);stroke-width:2.2;fill:none;
    stroke-linecap:round;stroke-linejoin:round}

  /* PREVIEW BAR */
  /* #3a2205 ולא לבן: לבן על הזהב = 2.66:1. אותו צמד כהה-על-זהב כמו כפתור המייל. */
  .pv-bar{position:sticky;top:env(safe-area-inset-top,0px);z-index:60;display:flex;align-items:center;gap:10px;
    background:var(--gold);color:#3a2205;padding:8px 14px;border-radius:0 0 12px 12px;
    font-size:.78rem;box-shadow:var(--shadow)}
  .pv-bar.hidden{display:none!important}
  .pv-bar span{flex:1}
  .pv-bar button{background:#fff;color:var(--ink);border:0;border-radius:999px;
    padding:5px 13px;font-size:.76rem;font-family:"Heebo";cursor:pointer}
  /* DASHBOARD -- the streak stands alone; everything else lives inside its own language card,
     so the two languages are never averaged into one number. */
  .dash-streak{display:flex;align-items:center;gap:16px;background:var(--card);
    border:1px solid var(--line);border-radius:14px;padding:12px 16px;margin-bottom:14px}
  .ds-left{display:flex;align-items:baseline;gap:7px;flex:0 0 auto}
  .ds-fire{font-size:1.15rem;line-height:1}
  .ds-left b{font-family:"Frank Ruhl Libre",serif;font-size:1.9rem;font-weight:900;line-height:1}
  .ds-lbl{font-size:.72rem;color:var(--ink-soft)}
  /* seven bars = the last seven days; a filled bar is a day you practised */
  .ds-week{display:flex;gap:5px;flex:1;min-width:0}
  .ds-week i{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;font-style:normal}
  .ds-week i::before{content:"";display:block;width:100%;height:7px;border-radius:4px;
    background:var(--paper-deep)}
  .ds-week i.on::before{background:linear-gradient(90deg,var(--gold),var(--accent))}
  .ds-week i em{font-style:normal;font-size:.6rem;color:var(--ink-soft);line-height:1}
  .ds-week i.now em{color:var(--accent);font-weight:700}
  .install-cta{display:flex;align-items:center;gap:13px;width:100%;margin-top:20px;
       background:var(--card);border:1px solid var(--gold);border-radius:16px;padding:14px 16px;
       text-align:right;transition:transform .18s,scale .18s,opacity .18s,color .18s,background-color .18s,border-color .18s,box-shadow .18s,fill .18s,stroke .18s,filter .18s;box-shadow:var(--shadow);font-family:"Heebo";
       text-decoration:none;color:inherit}
  @media (hover:hover) and (pointer:fine){.install-cta:hover{transform:translateY(-2px);background:rgba(201,150,47,.07)}}
  .install-cta.hidden{display:none!important}
  .install-cta .ic{font-size:1.5rem;line-height:1;flex:0 0 auto}
  .install-cta .tx{flex:1;display:flex;flex-direction:column;gap:1px}
  .install-cta .tx b{font-family:"Frank Ruhl Libre",serif;font-size:1.02rem;font-weight:700;color:var(--ink)}
  .install-cta .tx em{font-style:normal;font-size:.76rem;color:var(--ink-soft)}
  .install-cta .ar{color:var(--gold-ink);font-size:1.1rem;flex:0 0 auto;transition:transform .18s,scale .18s,opacity .18s,color .18s,background-color .18s,border-color .18s,box-shadow .18s,fill .18s,stroke .18s,filter .18s}
  @media (hover:hover) and (pointer:fine){.install-cta:hover .ar{transform:translateX(-4px)}}

  /* bug report -- a small persistent affordance; MVP users need it one tap away */
  /* lifted while the update bar is up -- the bar used to sit directly on top of it */
  body.has-upd .fb-fab{bottom:calc(74px + env(safe-area-inset-bottom))}
  /* ⭐ ביקורת/עיצוב-9.9/השלמות.html #14 (אושר 10.9 17:10) · הכפתור עובר לזכוכית (.lg,
     מוסף ל-className ב-index.html) במקום כרטיס אטום (var(--card)/var(--shadow)/מסגרת) --
     .fab בקובץ המאושר לא קובע רקע/מסגרת/צל בעצמו, .lg נותן את אלה. ⚠ padding:1px 6px
     ולא 0: בקובץ המאושר .fab אינו .btn ואינו מאופס-ריפוד, ונשאר עם ריפוד ה-button
     המובנה של הדפדפן (1px 6px) -- כאן מוצמד לאותו ערך במקום לאפס אותו כמו שאר הכפתורים. */
  /* ⭐ 28.9 · ביקורת/עיצוב-9.9/השלמות.html #14: inset-inline-end (שמאל ב-RTL), לא -start
     (ימין) -- הקובץ המאושר קובע .fab{inset-inline-end:14px}, ונמדד בעין שהכפתור יושב
     בפינה הימנית בפועל (הפוך מהקובץ). הגובה (16px מול 14px) נשאר: כבר תואם ב-0.05px, tolerancePx. */
  .fb-fab{position:fixed;inset-inline-end:16px;bottom:calc(16px + env(safe-area-inset-bottom));
       z-index:55;width:48px;height:48px;border-radius:50%;border:0;
       font-family:"Heebo","Arial Hebrew",Arial,sans-serif;padding:1px 6px;
       display:flex;align-items:center;justify-content:center;transition:transform .18s,scale .18s,opacity .18s,color .18s,background-color .18s,border-color .18s,box-shadow .18s,fill .18s,stroke .18s,filter .18s}
  /* ⭐ 28.9 · גל 329, פער #14 (ביקורת/דוחות/2026-09-19-פער-עיצוב, «גרסה 329»): השורש האמיתי
     לא היה הצד אלא שהכפתור לא צף בכלל -- .lg (שורה ~1914 בקובץ הזה) מגדיר position:relative
     באותה ספציפיות (מחלקה אחת) ומאוחר יותר במקור מ-.fb-fab{position:fixed} למעלה, ודורס אותו.
     getComputedStyle באתר החי החזיר position:relative, top:1645 -- הכפתור יושב בסוף ה-body,
     מתחת לקיפול, ו-16px ממנו חתוכים. אותו דפוס תיקון כמו .upd-bar.lg/.stg-bar.lg (שורה ~1722):
     מחלקה כפולה בספציפיות גבוהה יותר, בלי תלות בסדר המקור. ⚠ הצד (inset-inline-end, שמאל
     ב-rtl) כבר תואם את הקובץ המאושר -- ההיפוך מ-28.9 הבוקר (ההערה למעלה) נעשה על הסימפטום
     ונשאר נכון בטעות; אין צורך לגעת בו. */
  .fb-fab.lg{position:fixed}
  /* ⭐ 2.10.2026 · screens-fix · חגי: «כפתור הדיווח יושב מעל טקסט וכרטיסים וחופף להם» (צילומי ספארי, 390 ו-430).
     כפתור צף חופף לתוכן בכל גלילה, ולכן הוא יוצא מהזרימה: ילד אחרון של body, יושב מתחת למסך הגלוי, בפינה
     השמאלית, עם מרווח לפס הבית של האייפון. לא מכסה שום דבר, ונמצא בסוף כל מסך. */
  .fb-fab.lg{position:static;margin:12px auto calc(20px + env(safe-area-inset-bottom)) 16px;
       inset:auto;flex:none}
  body.has-upd .fb-fab.lg{bottom:auto}
  /* ⭐ אייקון SVG במקום אמוג'י */
  .fb-fab svg{width:22px;height:22px;stroke:var(--accent);stroke-width:1.8;fill:none;
       stroke-linecap:round;stroke-linejoin:round}
  @media (hover:hover) and (pointer:fine){.fb-fab:hover{transform:translateY(-3px) rotate(-8deg)}}
  .fb-fab.hidden{display:none!important}
  .fb-box{max-width:400px;text-align:right}
  .fb-box h3{text-align:center}
  .fb-box p{text-align:center}
  .fb-kinds{display:flex;gap:7px;margin-top:16px}
  .fb-kinds button{flex:1;font-family:"Heebo";font-size:.82rem;font-weight:700;padding:9px 4px;
       border-radius:10px;border:1px solid var(--line);background:var(--paper);color:var(--ink-soft);transition:transform .15s,scale .15s,opacity .15s,color .15s,background-color .15s,border-color .15s,box-shadow .15s,fill .15s,stroke .15s,filter .15s}
  .fb-kinds button.active{background:linear-gradient(180deg,var(--gold-ink),var(--accent));
       color:#fff;border-color:transparent}
  #fbBody{width:100%;margin-top:11px;font-family:"Heebo";font-size:.98rem;line-height:1.55;
       background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:12px;
       outline:none;resize:vertical;color:var(--ink);text-align:right}
  #fbBody:focus{border-color:var(--gold)}
  /* Was a monospace LTR block that looked like a console. It is now one quiet Hebrew line -- 
     the same information is still sent, it just no longer asks the reporter to parse it. */
  .fb-ctx{margin-top:10px;font-size:.74rem;color:var(--ink-soft);line-height:1.6;
       text-align:center}

  /* install-to-home-screen */
  .install-box{max-width:380px}
  .inst-icon{font-size:2.6rem;line-height:1;margin-bottom:6px}
  .install-box h3{font-size:1.3rem}
  .install-box p{color:var(--ink-soft);font-size:.88rem;margin-top:6px;line-height:1.5}
  #instAuto{margin-top:18px}
  .inst-steps{list-style:none;text-align:right;margin-top:16px;display:flex;
       flex-direction:column;gap:10px}
  .inst-steps li{display:flex;align-items:center;gap:10px;font-size:.92rem;
       background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:10px 12px}
  .inst-steps li span{flex:0 0 auto;width:23px;height:23px;border-radius:50%;
       background:linear-gradient(180deg,var(--gold-ink),var(--accent));color:#fff;font-weight:700;
       font-size:.78rem;display:flex;align-items:center;justify-content:center}
  .inst-steps li b{font-weight:700}
  .inst-manual{margin-top:14px;background:var(--paper);border:1px dashed var(--gold);
       border-radius:12px;padding:12px;font-size:.88rem}
  /* ⭐ 21.9.2026 · בריף השבעה, רכיב 2: שורת ה-.fine של הקובץ המאושר (חלונות-הפעלה-והדרכה.html,
     .dlg .fine) -- כאן תחת .install-box כי זה שם המיכל בפועל, לא .dlg. */
  .install-box .fine{font-size:13px;color:var(--ink-soft);margin:12px 0 0}

  /* ═══ ההודעה הקצרה בתחתית המסך (#toast) · מסך-הבית.html (אושר 21.9), מילה במילה ═══
     ⭐ 22.9.2026 · הכרעת העוזר האישי (פנקס ההחלטות, גל החלונות סעיף 3): כששני קבצים מאושרים סותרים,
     החדש גובר. לכן ההודעה לפי קובץ הבית, ולא לפי חלונות-הפעלה-והדרכה.html (10.9, קפסולת דיו עם נקודה
     זהובה). שני הכללים של .toast הם השורות של הקובץ כמו שהן, כולל z-index:9 (אין באפליקציה שכבה בין 9
     ל-50, ולכן הסדר מול שאר השכבות לא השתנה).
     מעבר לקובץ, כמו בחלונות: הגופן והגובה של ה-body בקובץ (המשפחה של --body, ו-1.55) והטוקנים --ink
     ו---ease, כי באפליקציה ההודעה יושבת מעל כל מסך, וכל מסך קובע ל-body טיפוגרפיה אחרת; והתנועה נכבית
     ב-reduce, כמו בכלל הגלובלי של הקובץ. */
  #toast{--ink:#2c2620;--ease:cubic-bezier(.23,1,.32,1);font-family:"Heebo","Arial Hebrew",Arial,sans-serif;line-height:1.55}
  .toast{position:fixed;inset-inline:0;bottom:calc(24px + env(safe-area-inset-bottom,0px));margin:0 auto;width:max-content;max-width:calc(100% - 36px);padding:12px 20px;border-radius:999px;font-size:15px;font-weight:500;background:rgba(255,253,248,.92);color:var(--ink);box-shadow:0 12px 30px -10px rgba(44,38,32,.35),inset 0 0 0 1px rgba(255,255,255,.6);opacity:0;transform:translateY(8px);transition:opacity .3s var(--ease),transform .3s var(--ease);pointer-events:none;z-index:9}
  .toast.show{opacity:1;transform:none}
  .toast.show.err{pointer-events:auto;cursor:pointer}   /* 9.10 נגישות (2.2.1): הודעת שגיאה נסגרת בלחיצה עליה */
  @media (prefers-reduced-motion:reduce){.toast{transition:none}}
  /* ═════════════════════════════════════════════════════════════════════════
     LG-SYSTEM:START · מערכת הזכוכית · 9.9.2026
     ═════════════════════════════════════════════════════════════════════════
     ⭐ למה מערכת אחת ולא בלוק לכל מסך: חמישה קובצי העיצוב שאושרו הגדירו את
     אותה זכוכית בדיוק, כל אחד בתוך עצמו · חמישה עותקים של אותן שש שורות צל.
     מסך שייבנה מחר היה מייצר עותק שישי, וכל תיקון היה צריך לרוץ בשישה מקומות.
     כאן הוא רץ במקום אחד.

     ⛔ המערכת נדלקת רק כשיש `lg` על האלמנט. `.btn` ,`.seg` ,`.card` ו-`.row`
     הקיימים באפליקציה נשארים בדיוק כפי שהם, ואף מסך קיים אינו נכנס לכאן.
     מסך חדש כותב `class="btn btn-primary lg"` · אותו סימון כמו בקובצי העיצוב.

     ⛔ שלושת הכללים שהשער נועל (tests/127-lg-system.test.js):
       1. הכתום מותר על סימן המותג, אייקונים, חצים, המקטע הנבחר, מתגי הפעלה,
          הכפתור הראשי ומספרים גדולים · ועל שום טקסט אחר. הטקסט תמיד בדיו.
       2. פינות · 12 עד 14 לכפתורים ולשדות, 16 לכרטיסים.
       3. מתג גולש · האטה אחת משותפת, ושתי שכבות בלבד. בלי זכוכית עליו.

     ⚠ ספארי מקבל טשטוש · כרום מקבל גם שבירת אור דרך מסנן ה-SVG שב-index.html.
     דפדפן שאין בו טשטוש כלל מקבל משטח אטום קריא · הוא לא נשאר עם טקסט על שקוף.
  */
  :root{
    /* ⭐ ההאטה של המתג הגולש. הערך חורג מ-1 בציר Y, ולכן הידית עוברת את היעד
       וחוזרת · זה מה שהופך החלפת מקטע מקפיצה לגלישה. אותה האטה בכל המתגים. */
    --lg-glide:cubic-bezier(.22,1.15,.36,1);
    --lg-r-btn:14px;      /* כפתור */
    --lg-r-field:12px;    /* שדה */
    --lg-r-card:16px;     /* כרטיס */
  }

  /* ── הזכוכית · שלוש שכבות ─────────────────────────────────────────────────
     ⭐ 20.9 · גרסה ב («כמו אפל», הכרעת חגי 20.9, פנקס שורה 281): כמעט צלולה, זוהר פנימי אחיד
     במקום קו ספקולרי מכוון, והברק עבר מ-::after מלא לטבעת אור דקה על השפה בלבד (מסכה, למטה).
     חלה על כל מסך שנושא `.lg` — לא רק על #pay, ששם היא נכנסה קודם.
     1. אור · זוהר פנימי אחיד ורך, וההילה ב-::before.
     2. צל · עומק תחתון וצל נופל חם.
     3. הארה · טבעת אור על השפה ב-::after.
     ⛔ שלושתן ביחד. שכבה אחת לבדה נקראת כמלבן שקוף, לא כזכוכית. */
  .lg{position:relative;isolation:isolate;overflow:hidden;background:rgba(255,255,255,.05);
    backdrop-filter:blur(9px) saturate(200%) brightness(1.08);-webkit-backdrop-filter:blur(9px) saturate(200%) brightness(1.08);
    box-shadow:inset 0 0 14px rgba(255,255,255,.30),inset 0 -6px 12px -10px rgba(0,0,0,.10),0 8px 22px -14px rgba(44,38,32,.18)} /* 20.9 · «כמו אפל»: כמעט צלולה, והאור על השפה */
  .lg::before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;
    background:radial-gradient(130% 60% at 50% -12%,rgba(255,255,255,.40),rgba(255,255,255,0) 60%),linear-gradient(115deg,rgba(255,255,255,.20) 0%,rgba(255,255,255,0) 28%,rgba(255,255,255,0) 74%,rgba(255,255,255,.12) 100%)}
  /* ⚠ 20.9 · ::after הוא עכשיו מסכת טבעת (padding+mask), לא מלבן מלא: דריסה שמוסיפה רק
     background (כמו .btn-primary.lg::after שהיה כאן) צובעת את הטבעת ולא מעלימה אותה ·
     דריסה שרוצה להעלים אותה כותבת background:none (ר' #home/#account .wcard/.code). */
  .lg::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;
    background:linear-gradient(135deg,rgba(255,255,255,.95) 0%,rgba(255,255,255,.25) 28%,rgba(255,255,255,.08) 50%,rgba(255,255,255,.30) 74%,rgba(255,255,255,.85) 100%);
    padding:1.4px;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0)}
  /* התוכן מעל שתי שכבות הקישוט. בלי זה הטקסט נבלע מתחת ל-::after. */
  .lg>*{position:relative;z-index:1}

  /* ⛔ 20.9 · «כמו אפל»: ענף שבירת האור האמיתית (שהיה כאן, דרך מסנן ה-SVG ב-index.html) ירד.
     טבעת האור ב-.lg::after למעלה מחליפה אותה בכל הדפדפנים גם יחד, ולכן אין יותר טיפול נפרד
     לכרום · שני הדפדפנים מקבלים עכשיו בדיוק אותו backdrop-filter. מארח המסנן (svg.lg-lens)
     נשאר ב-index.html בינתיים ואין כלל שקורא לו · יורד בדחיפה נפרדת. */
  /* ⛔ ובכיוון ההפוך · דפדפן בלי טשטוש בכלל. בלי הכלל הזה הרקע נשאר
     rgba(255,255,255,.16) ומה שמאחוריו עובר דרכו חד · טקסט על טקסט. */
  @supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
    .lg{background:rgba(255,253,248,.86)}
  }

  /* ── כפתורים ─────────────────────────────────────────────────────────────
     ⛔ הצירוף `.btn.lg` ולא `.btn` לבדו · `.btn` הקיים משרת עשרות כפתורים
     באפליקציה החיה, והמערכת הזאת לא נוגעת בהם. */
  .btn.lg{display:inline-flex;align-items:center;justify-content:center;gap:8px;
    font-weight:600;font-size:1rem;border:0;border-radius:var(--lg-r-btn);
    padding:0 18px;min-height:52px;letter-spacing:-.01em;color:var(--ink);
    transition:transform .12s ease,filter .2s ease}
  .btn.lg:active{transform:scale(.97)}
  .btn.lg:disabled{opacity:.45;transform:none;cursor:not-allowed}
  /* ⭐ 20.9 · הכפתור הראשי · זכוכית צבועה באדום עמוק, לא צבע שטוח (גרסה ב, כמו .lg למעלה).
     ⛔ בלי ::after משלו: הוא יורש את טבעת האור המשותפת של .lg::after כמו שהיא · הראש המשותף
     (_ראש-משותף.txt) אינו מגדיר לו גרסה נפרדת. דריסה כאן שמוסיפה background הייתה צובעת את
     הטבעת בגרדיאנט הישן במקום להיעלם לתוכה — בדיוק המלכודת שתועדה למעלה ב-.lg::after. */
  .btn-primary.lg{color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.25);
    background:linear-gradient(180deg,rgba(160,58,36,.94),rgba(143,54,32,.96));
    box-shadow:inset 0 0 12px rgba(255,210,190,.1),inset 0 -8px 16px -12px rgba(0,0,0,.28),0 12px 28px -12px rgba(143,54,32,.6)}
  .btn-primary.lg::before{background:radial-gradient(130% 70% at 50% -10%,rgba(255,255,255,.16),rgba(255,255,255,0) 60%),
    radial-gradient(90% 50% at 50% 115%,rgba(255,200,180,.18),rgba(255,255,255,0) 60%)}
  .btn-ghost.lg{background:rgba(255,255,255,.16);border:0;color:var(--ink)}
  /* ⭐ כפתור חזרה בשורת הכותרת · `.topbar .back` הישן (ספציפיות 0,2,0) גובר על `.lg` (0,1,0)
     ומשאיר רקע שקוף, כלומר כפתור בלי גוון הזכוכית (#quitQuiz, נמדד 10.9). אותו דפוס כמו
     `.btn-ghost.lg` שמעליו: הצירוף עם lg גובר, וכפתורי החזרה בלי lg נשארים כמו שהם (tests/147). */
  .topbar .back.lg{background:rgba(255,255,255,.16);border:0;color:var(--ink)}
  /* ⚠ שאילתה לכל כלל ולא שניים באחת · שער ה-hover הדביק דורש שהסייג
     יעמוד בדיוק לפני הכלל, וכלל שני באותה שאילתה נשאר חשוף. */
  @media (hover:hover) and (pointer:fine){.btn-primary.lg:hover{filter:brightness(1.06)}}
  @media (hover:hover) and (pointer:fine){.btn-ghost.lg:hover{filter:brightness(1.03)}}
  /* כפתור קטן · יציאה, חזרה, פעולה משנית בשורת הכותרת */
  .btn.lg.sm{min-height:38px;padding:0 13px;font-size:.88rem;font-weight:500;border-radius:var(--lg-r-field)}
  .btn.lg svg{width:16px;height:16px;stroke:currentColor;stroke-width:2;fill:none;
    stroke-linecap:round;stroke-linejoin:round;flex:none}

  /* ── כרטיס ───────────────────────────────────────────────────────────────
     ⛔ ממורכז, ובלי פס צבע בצד. «לשונית» צבועה בצד יצרה שני מוקדי מבט
     בכרטיס אחד, והכרטיס נקרא כהודעת מערכת. */
  .lg-card{border-radius:var(--lg-r-card);padding:18px;text-align:center;color:var(--ink)}
  .lg-card>.k{font-size:.75rem;letter-spacing:.14em;color:var(--ink-soft);font-weight:500;margin-bottom:6px}
  .lg-card>h3{font-family:"Frank Ruhl Libre",serif;font-weight:700;font-size:1.35rem;line-height:1.15}
  /* אריח נתון · מספר גדול ותווית מתחתיו */
  .lg-tile{border-radius:var(--lg-r-card);padding:16px 16px 14px;text-align:center;color:var(--ink)}
  .lg-tile .l{font-size:.8rem;color:var(--ink-soft);display:block;margin-top:4px}
  /* ⭐ מספר גדול · אחד משבעת המקומות שהכתום מותר בהם */
  .lg-num,.lg-tile .n,.lg-row .n{font-family:"Frank Ruhl Libre",serif;font-weight:700;
    font-size:2.1rem;line-height:1;display:block;color:var(--accent)}
  /* ⭐ סימן המותג · מקום שני שהכתום מותר בו */
  .lg-brand{font-family:"Frank Ruhl Libre",serif;font-weight:700;font-size:1.25rem;
    color:var(--accent);direction:ltr;unicode-bidi:isolate}

  /* ── שורת פעולה ─────────────────────────────────────────────────────────── */
  .lg-row{display:flex;align-items:center;gap:14px;width:100%;text-align:start;
    border:0;border-radius:var(--lg-r-card);padding:14px 16px;cursor:pointer;color:var(--ink)}
  .lg-row .tx{flex:1;font-size:1rem;font-weight:600}
  .lg-row .tx small{display:block;font-weight:400;color:var(--ink-soft);font-size:.8rem;margin-top:2px}
  /* ⭐ חץ · מקום שלישי שהכתום מותר בו */
  .lg-row .go{font-size:1.15rem;color:var(--accent);flex:none}
  .lg-row .n{min-width:52px;font-size:1.85rem}
  /* השורה הראשית · אותה זכוכית צבועה כמו הכפתור הראשי */
  .lg-row.hot{color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.2);
    background:linear-gradient(180deg,rgba(160,58,36,.94),rgba(143,54,32,.96))}
  .lg-row.hot .n,.lg-row.hot .go{color:#fff}
  .lg-row.hot .tx small{color:rgba(255,255,255,.82)}
  .lg-row.hot.lg::before{background:radial-gradient(130% 70% at 50% -10%,rgba(255,255,255,.14),rgba(255,255,255,0) 60%)}
  /* ⭐ אייקון · רקע כתום, סמל לבן. מקום רביעי שהכתום מותר בו. */
  .lg-ic{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;flex:none;
    background:linear-gradient(180deg,rgba(160,58,36,.85),rgba(143,54,32,.85));
    color:#fff;font-size:1.05rem;box-shadow:inset 0 1px 0 rgba(255,255,255,.45)}
  .lg-ic svg{width:18px;height:18px;stroke:currentColor;stroke-width:2;fill:none;
    stroke-linecap:round;stroke-linejoin:round}

  /* ── שדה ─────────────────────────────────────────────────────────────────
     ⛔ ממורכז. השדה באפליקציה הזאת מקבל מילה אחת, לא משפט. */
  .lg-field{width:100%;text-align:center;font:inherit;font-size:1.15rem;
    padding:13px 14px;min-height:52px;border-radius:var(--lg-r-field);
    border:1px solid var(--line);border-bottom-color:var(--ink-soft);
    background:var(--paper);color:var(--ink)}
  .lg-field:focus{border-color:var(--gold);outline:none;box-shadow:0 0 0 3px rgba(201,150,47,.25)}
  .lg-field::placeholder{color:var(--ink-soft);opacity:1}

  /* ── מתג מקטעים · גולש ───────────────────────────────────────────────────
     ⛔ שתי שכבות בלבד · מסילה וידית. בלי `.lg` ובלי ::before/::after עליו:
     שלוש שכבות מתחת לידית שזזה קראו כלכלוך שנגרר איתה.
     ⭐ הידית זזה ב-transform בלבד · המקטעים אינם זזים, ולכן אין קפיצת פריסה.
     ⚠ RTL · המקטע הראשון בימין, ולכן ההזזה היא translateX שלילי. */
  .lg-seg{display:flex;padding:3px;border-radius:var(--lg-r-btn);position:relative;
    background:rgba(44,38,32,.07);
    backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
    box-shadow:inset 0 0 0 1px rgba(255,255,255,.35)}
  .lg-seg>.thumb{position:absolute;top:3px;bottom:3px;inset-inline-start:3px;z-index:0;
    width:calc(50% - 3px);border-radius:11px;background:rgba(255,253,248,.85);
    box-shadow:0 1px 2px rgba(44,38,32,.12),0 8px 16px -8px rgba(44,38,32,.3),
      inset 0 0 0 1px rgba(255,255,255,.9),inset 0 1.5px 0 rgba(255,255,255,1),
      inset 0 -3px 0 var(--accent);
    transition:transform .55s var(--lg-glide)}
  .lg-seg[data-n="3"]>.thumb{width:calc((100% - 6px)/3)}
  .lg-seg[data-n="4"]>.thumb{width:calc((100% - 6px)/4)}
  .lg-seg[data-i="1"]>.thumb{transform:translateX(-100%)}
  .lg-seg[data-i="2"]>.thumb{transform:translateX(-200%)}
  .lg-seg[data-i="3"]>.thumb{transform:translateX(-300%)}
  .lg-seg input{display:none}
  .lg-seg label,.lg-seg button{flex:1;position:relative;z-index:1;cursor:pointer;user-select:none;
    display:flex;align-items:center;justify-content:center;gap:8px;min-height:44px;
    border:0;background:none;border-radius:11px;font:inherit;font-weight:600;
    color:var(--ink-soft);transition:color .25s}
  .lg-seg label small,.lg-seg button small{font-weight:400;font-size:.75rem;color:var(--ink-soft)}
  /* ⭐ המקטע הנבחר · מקום חמישי שהכתום מותר בו */
  .lg-seg input:checked+label,.lg-seg button.on{color:var(--accent)}

  /* ── מתג הפעלה · גולש ────────────────────────────────────────────────────
     ⭐ מקום שישי שהכתום מותר בו · המסילה הדולקת. שתי שכבות: מסילה וידית. */
  .lg-tog{width:50px;height:30px;border-radius:999px;background:rgba(44,38,32,.18);
    position:relative;flex:none;border:0;cursor:pointer;transition:background .3s}
  .lg-tog>i{position:absolute;top:3px;inset-inline-start:3px;width:24px;height:24px;
    border-radius:50%;background:#fff;box-shadow:0 2px 6px rgba(0,0,0,.25);
    transition:transform .35s var(--lg-glide)}
  .lg-tog.on{background:var(--accent)}
  .lg-tog.on>i{transform:translateX(-20px)}

  /* ── כוכב הסימון ─────────────────────────────────────────────────────────
     בזהב ולא בכתום · הוא סימון של הלומד, לא פעולה ראשית של המסך. */
  .lg-star{position:relative;cursor:pointer;user-select:none;text-align:center;display:inline-block}
  .lg-star input{position:absolute;opacity:0;width:0;height:0}
  .lg-star svg{width:30px;height:30px;fill:none;stroke:var(--ink-soft);stroke-width:1.6;
    display:block;margin:0 auto;transition:transform .3s,scale .3s,opacity .3s,color .3s,background-color .3s,border-color .3s,box-shadow .3s,fill .3s,stroke .3s,filter .3s}
  .lg-star input:checked~svg{fill:var(--gold);stroke:var(--gold)}
  .lg-star .lbl{display:block;font-size:.7rem;color:var(--ink-soft);margin-top:1px}
  .lg-star input:checked~.lbl{color:var(--ink)}

  /* ── קישור שנפתח ─────────────────────────────────────────────────────────
     ⚠ בקובץ מסך הבית הקישור הזה היה כתום. הכלל של 9.9 מונה שבעה מקומות
     שהכתום מותר בהם, וקישור אינו אחד מהם · ולכן כאן הוא בדיו עם קו זהב
     מתחתיו, בדיוק כמו «משפט לדוגמה» בקובץ מסך התרגול. */
  .lg-reveal{display:inline-block;background:none;border:0;padding:6px 8px;
    color:var(--ink);font:inherit;font-size:.92rem;font-weight:500;cursor:pointer;
    border-bottom:1px solid var(--gold)}
  .lg-reveal .chev{display:inline-block;color:var(--gold);transition:transform .3s}
  .lg-reveal.open .chev{transform:rotate(180deg)}

  /* מארח מסנן שבירת האור · אינו תופס מקום ואינו נקרא */
  .lg-lens{position:absolute;width:0;height:0;overflow:hidden}

  @media (prefers-reduced-motion:reduce){
    .lg-seg>.thumb,.lg-seg label,.lg-seg button,.lg-tog>i,.btn.lg,.lg-star svg,.lg-reveal .chev{transition:none}
    .btn.lg:active{transform:none}
  }
  /* LG-SYSTEM:END */

  /* ═════════════════════════════════════════════════════════════════════════
     KIT-9.9:START · ארבעת רכיבי הערכה שאושרו 9.9.2026 ואינם זכוכית
     ═════════════════════════════════════════════════════════════════════════
     ⛔ אחרי `LG-SYSTEM:END` ולא בתוכו · הבלוק שמעל הוא הזכוכית עצמה, וארבעת
     אלה הם רכיבים בודדים מ-`ביקורת/עיצוב-9.9/ערכת-רכיבים.html` שאין עליהם
     שכבת זכוכית. ארבעה מתוך שמונה · שלושה כבר במערכת שמעל, ואחד לא אושר:
       כוכב לסימון ⟵ `.lg-star` · מתג מקטעים ⟵ `.lg-seg`
       משפט לדוגמה ⟵ `.lg-reveal` · הלב ⟵ «נשאר כאן רק לתיעוד», ולכן לא נבנה.

     ⭐ למה הארבעה נכנסים היום ולא בסבב של המסך שיצרוך אותם: הערכה אושרה
     כיחידה אחת. `.lg-fill` נצרך כבר עכשיו במסך הכניסה; שלושת האחרים ממתינים
     למסך היחידה, למסך הכיתה ולמסך הטעינה · והם כאן כדי שמי שיבנה אותם מחר
     יקרא מחלקה קיימת במקום להעתיק CSS מקובץ העיצוב. זו התקלה בדיוק שמערכת
     הזכוכית נבנתה כדי למנוע, והיא אינה נמנעת כשחצי מהערכה נשאר בחוץ.

     ⛔ כל סלקטור כאן נושא `lg-` · אף מסך קיים אינו רואה מכאן דבר.
     ⚠ כל כלל `:hover` בשאילתת מדיה משלו · `tests/61` דורש שהסייג יעמוד
     **בדיוק** לפני הכלל, וכלל שני באותה שאילתה נשאר חשוף.
     ⚠ זהב של טקסט הוא `--gold-ink` ולא `--gold` · ‏`--gold` על נייר הוא
     ‏2.37:1 ונופל AA (`tests/17`, `tests/84`). קובץ העיצוב כתב `--gold` כי
     הפלטה שלו אינה מחזיקה את גרסת הדיו. המילוי עצמו נשאר `--gold` מלא ·
     אין עליו טקסט עד שהוא מתמלא, ואז הטקסט הופך לדיו.
  */
  :root{
    /* ההאטה של ערכת הרכיבים · אחת לארבעתם, מתוך קובץ הערכה. ⛔ אינה
       `--lg-glide`: זו האטה שחורגת מ-1 ומיועדת לידית שגולשת, וכאן אין ידית. */
    --lg-kit-ease:cubic-bezier(.23,1,.32,1);
  }

  /* ── 1 · כפתור זהב שמתמלא ────────────────────────────────────────────────
     מסך הכניסה · הכפתור המשני «יש לי חשבון». המילוי יוצא מהמרכז.
     ⛔ `z-index:-1` על המילוי, ולכן הכפתור עצמו חייב `isolation:isolate` ·
     בלעדיו המילוי צולל מתחת לרקע שמאחוריו ואינו נראה כלל. */
  .lg-fill{position:relative;isolation:isolate;overflow:hidden;cursor:pointer;
    font:inherit;font-weight:500;font-size:1rem;color:var(--gold-ink);
    padding:12px 28px;min-height:44px;background:transparent;
    border:2px solid var(--gold);border-radius:34px;
    transition:color .3s var(--lg-kit-ease),transform .3s var(--lg-kit-ease),box-shadow .3s var(--lg-kit-ease)}
  .lg-fill::before{content:"";position:absolute;inset:0;margin:auto;z-index:-1;
    width:50px;height:50px;border-radius:inherit;background:var(--gold);
    transform:scale(0);transition:transform .6s var(--lg-kit-ease)}
  .lg-fill:active{color:var(--ink);transform:scale(1.06);box-shadow:0 0 20px rgba(201,150,47,.35)}
  .lg-fill:active::before{transform:scale(3)}
  @media (hover:hover) and (pointer:fine){.lg-fill:hover{color:var(--ink);transform:scale(1.06);box-shadow:0 0 20px rgba(201,150,47,.35)}}
  @media (hover:hover) and (pointer:fine){.lg-fill:hover::before{transform:scale(3)}}

  /* ── 2 · הורדת דף מבחן ───────────────────────────────────────────────────
     מסך היחידה · «דף מבחן להדפסה». שכבת ההורדה מחליקה למטה והחץ קופץ.
     ⭐ 30.9 · הצרכן חובר: #pbSheet במסך היחידה (0cea52e2). */
  .lg-dl{position:relative;z-index:1;border:0;padding:0;background:transparent;
    color:var(--ink);font:inherit;font-family:"Heebo","Arial Hebrew",Arial,sans-serif;line-height:normal;font-weight:500;font-size:.94rem;cursor:pointer;
    border-radius:6px;overflow:hidden}
  .lg-dl .docs{display:flex;align-items:center;justify-content:center;gap:10px;
    min-height:44px;padding:0 14px;border-radius:6px;
    background:var(--card);border:1px solid var(--ink);
    transition:transform .5s cubic-bezier(.77,0,.175,1)}
  .lg-dl .dl{position:absolute;inset:0;z-index:-1;display:flex;align-items:center;
    justify-content:center;border-radius:6px;max-width:90%;margin:0 auto;
    background:var(--accent);color:#fff;transition:transform .5s cubic-bezier(.77,0,.175,1)}
  .lg-dl:active .dl{transform:translateY(100%)}
  @media (hover:hover) and (pointer:fine){.lg-dl:hover .dl{transform:translateY(100%)}}
  @media (hover:hover) and (pointer:fine){.lg-dl:hover{box-shadow:0 12px 24px -12px rgba(44,38,32,.5)}}
  .lg-dl .dl svg{animation:lgBob 1s infinite}
  @keyframes lgBob{0%,100%{transform:translateY(0)}50%{transform:translateY(-15%)}}
  .lg-dl svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:2;
    stroke-linecap:round;stroke-linejoin:round;flex:none}
  /* ⭐ #pbSheet · הכיתוב המקורי של הכפתור נשמר במלואו (כותרת + שורת הסבר): הקובץ המאושר מציג
     רק «דף מבחן להדפסה», והשורה השנייה נשארת מתחת לו כדי לא לשנות טקסט. הכפתור ברוחב מלא
     כמו שאר כפתורי המסך (העמודה .practice-btns מותחת אותו), והכיתוב ממורכז (חגי 9.9: מלל ממורכז). */
  .lg-dl .lg-dl-tx{display:block;text-align:center;flex:1}
  .lg-dl .lg-dl-tx b{display:block;font-weight:500;font-size:.94rem}
  .lg-dl .lg-dl-tx small{display:block;font-size:.78rem;font-weight:400;color:var(--ink-soft)}
  .lg-dl .docs{justify-content:center}

  /* ── 3 · שיתוף בוואטסאפ ──────────────────────────────────────────────────
     מסך הכיתה · «העתק קישור לתלמידות». בועה שעולה ומתיישרת.
     ⛔ הצבע היחיד שאינו מהפלטה הוא ירוק וואטסאפ, והוא על הסמל בלבד.
     ⚠ ממתין לצרכן · מסך הכיתה הוא סבב נפרד. */
  .lg-share{position:relative;display:inline-flex;align-items:center;justify-content:center;
    gap:8px;min-height:44px;padding:11px 18px;border:1px solid var(--line);
    border-radius:var(--lg-r-field);background:var(--card);color:var(--ink);
    font:inherit;font-weight:500;font-size:.94rem;cursor:pointer;
    transition:border-color .3s var(--lg-kit-ease)}
  .lg-share svg{width:18px;height:18px;flex:none}
  .lg-share .pop{position:absolute;left:50%;bottom:calc(100% + 10px);
    transform:translate(-50%,10px) skewY(8deg);opacity:0;pointer-events:none;
    background:#f1e3bf;color:var(--ink);border-radius:var(--lg-r-field);
    padding:8px 12px;font-size:.86rem;white-space:nowrap;
    box-shadow:0 8px 20px rgba(44,38,32,.18);
    transition:transform .45s var(--lg-kit-ease),opacity .45s var(--lg-kit-ease)}
  .lg-share .pop::after{content:"";position:absolute;left:50%;bottom:-5px;
    width:10px;height:10px;background:#f1e3bf;transform:translateX(-50%) rotate(45deg)}
  .lg-share:active .pop{opacity:1;transform:translate(-50%,0) skewY(0)}
  @media (hover:hover) and (pointer:fine){.lg-share:hover .pop{opacity:1;transform:translate(-50%,0) skewY(0)}}
  @media (hover:hover) and (pointer:fine){.lg-share:hover{border-color:var(--ink)}}

  /* ── 4 · ספר שמדפדף ──────────────────────────────────────────────────────
     מסך הטעינה · במקום «רגע…». חמישה דפים, מחזור 3 שניות, תזמון מפורש לכל
     דף ב---d. ⛔ בלי הרמה באוויר · דף שנחת שוכב, ואינו נראה עד שתורו חוזר.
     ⚠ ממתין לצרכן · מסך הטעינה הוא סבב נפרד. */
  .lg-scene{width:180px;height:126px;display:grid;place-items:center;
    perspective:900px;perspective-origin:50% 30%}
  .lg-book{position:relative;width:164px;height:104px;
    transform:rotateX(52deg) rotateZ(-4deg);transform-style:preserve-3d}
  .lg-book .cover{position:absolute;inset:0;border-radius:5px;background:var(--accent);
    box-shadow:0 14px 22px -8px rgba(44,38,32,.5),inset 0 0 0 3px var(--accent-deep);
    transform:translateZ(-3px)}
  .lg-book .stack,.lg-book .leaf{position:absolute;top:6px;bottom:6px;
    width:calc(50% - 8px);background:var(--card);
    background-image:repeating-linear-gradient(var(--line) 0 1.5px,transparent 1.5px 7px);
    background-size:68% 58%;background-repeat:no-repeat;background-position:center}
  .lg-book .stack{border-radius:2px;transform:translateZ(0)}
  .lg-book .stack.r{right:6px;box-shadow:inset -2px 0 0 rgba(44,38,32,.05),1px 1px 0 var(--line),2px 2px 0 var(--card),3px 3px 0 var(--line),4px 4px 0 var(--card),5px 5px 0 var(--line)}
  .lg-book .stack.l{left:6px;box-shadow:inset 2px 0 0 rgba(44,38,32,.05),-1px 1px 0 var(--line),-2px 2px 0 var(--card),-3px 3px 0 var(--line),-4px 4px 0 var(--card),-5px 5px 0 var(--line)}
  .lg-book .leaf{left:50%;border-radius:0 2px 2px 0;transform-origin:0 50%;
    transform-style:preserve-3d;backface-visibility:visible;
    transform:translateZ(var(--z,1px));
    animation:lgLeaf 3s infinite;animation-delay:var(--d,0s);will-change:transform,opacity}
  .lg-book .leaf::after{content:"";position:absolute;inset:0;border-radius:inherit;opacity:0;
    background:linear-gradient(90deg,rgba(44,38,32,.22),rgba(44,38,32,.04) 60%,transparent);
    animation:lgShade 3s cubic-bezier(.45,0,.55,1) infinite;animation-delay:var(--d,0s)}
  @keyframes lgLeaf{
    0%{rotate:y 0deg;opacity:1;animation-timing-function:cubic-bezier(.5,.05,.55,.95)}
    60%{rotate:y -180deg;opacity:1}
    60.2%{rotate:y -180deg;opacity:0}
    99.8%{rotate:y -180deg;opacity:0}
    100%{rotate:y 0deg;opacity:0}}
  @keyframes lgShade{0%{opacity:0}30%{opacity:1}60%,100%{opacity:0}}

  @media (prefers-reduced-motion:reduce){
    .lg-fill,.lg-fill::before,.lg-dl .docs,.lg-dl .dl,.lg-share .pop{transition:none}
    .lg-fill:active{transform:none}
    .lg-dl .dl svg,.lg-book .leaf,.lg-book .leaf::after{animation:none}
  }
  /* KIT-9.9:END */

  /* ═════════════════════════════════════════════════════════════════════════
     PILL-KIT:START · כדור זכוכית משותף · 21.9.2026
     ═════════════════════════════════════════════════════════════════════════
     מקור: אותו CSS מילה במילה, חוזר זהה בשלושת הקבצים שמשתמשים בו (מסך-התרגול.html,
     מסך-הכניסה.html, מסך-הבית.html) · «רכיב .pill חדש בערכה» בבריף השבעה. מועתק פעם
     אחת לכאן במקום לשכפל בכל מסך שצורך אותו.
     ⛔ אחרי `KIT-9.9:END` ולא בתוכו: tests/131 דורש שכל סלקטור בתוך KIT-9.9 ישא lg,
     ו-.pill אינו רכיב זכוכית (הוא נבנה עם lg בנוסף, class="pill lg", כמו בקובץ המאושר).
     נגישות: min-height 44px (הבריף, «כל הכדורים בגובה 44px»), האייקון הכתום עיטורי גרידא
     ולכן aria-hidden בכל שימוש. */
  .pill{display:inline-flex;align-items:center;gap:8px;border:0;border-radius:999px;min-height:44px;padding:0 16px 0 14px;font-family:var(--body);font-size:15px;font-weight:500;color:var(--ink);cursor:pointer;transition:transform .12s ease,filter .2s ease}
  .pill:active{transform:scale(.97)}
  .pill>*{position:relative;z-index:1}
  .pill .ic{width:26px;height:26px;border-radius:50%;display:inline-grid;place-items:center;flex:none;background:rgba(181,72,46,.12)}
  .pill .ic svg{width:15px;height:15px;stroke:var(--accent);stroke-width:1.9;fill:none;stroke-linecap:round;stroke-linejoin:round}
  /* PILL-KIT:END */

  /* ═════════════════════════════════════════════════════════════════════════
     PAY-9.9:START · מסלול הרכישה · 9.9.2026
     ═════════════════════════════════════════════════════════════════════════
     ⛔ **אחרי `KIT-9.9:END` ולא בתוך אף אחד משני הבלוקים שמעל.** שניהם
     נעולים בשער (`tests/127`), ושפת הזכוכית עצמה אינה משתנה כאן.

     ⭐ מה שנשאר כאן: `.trial-bar`, מרווח עליון לפס ההתנסות שבמסך הבית.
     ⭐ 19.9: מסך הרכישה עצמו עבר לבלוק BUY-19.9 שמתחת, בהעתקה של הספק המאושר. ארבעת הכללים שהיו
     כאן לרשימה, להודעת העצירה, לשורת הקבלה ולתיבת האישור ירדו איתו, כי המחלקות שלהם כבר אינן בשימוש.
     ⛔ אין כאן `color` כתום על טקסט ואין `:hover`. */
  .trial-bar{margin-top:14px}
  /* PAY-9.9:END */

  /* ═════════════════════════════════════════════════════════════════════════
     BUY-19.9:START  מסלול הרכישה, העתקה של הספק שחגי אישר  19.9.2026
     ═════════════════════════════════════════════════════════════════════════
     מקור: ביקורת/עיצוב-9.9/מסלול-הרכישה.html (סבב 1, «זה מעולה, אני מאשר את זה», עם זכוכית מוארת
     קצת יותר כהה). הכרעת חגי 11.9: ה-CSS נכנס מילה במילה ובאותם שמות מחלקות, ורק ההתנהגות מתחברת
     לקוד הקיים. tests/149 משווה כל כלל כאן לספק, הצהרה אחרי הצהרה.

     ⛔ איך זה לא נוגע במסך אחר: כל כלל נעול תחת #pay, בסדר של הספק, ולכן גם המפל בתוך המסך הוא של
     הספק. ⚠ שלושה שינויים מכניים בלבד: `#pay ` לפני כל סלקטור, :root נהיה #pay, ושבעת שמות
     האנימציה מקבלים `pay-` (לאפליקציה כבר יש rise ו-land בערכים אחרים, ושם זהה היה משנה מסכים אחרים).
     מה שנוסף מעבר לספק מסומן ⚠ ליד הכלל שלו, וכל אחד כזה נמדד בכרום ב-375 מול הספק
     (scripts/design-parity, הרשומה buy). */
  #pay{
    color-scheme:light only;
    --paper:#f6f1e7; --paper-deep:#efe8da; --card:#fffdf8; --ink:#2c2620; --ink-soft:#5e564a;
    --gold:#c9962f; --gold-soft:#f1e3bf; --gold-text:#83621f; --accent:#b5482e; --accent-deep:#8f3620;
    --line:#e3d8c4; --line-strong:#888276; --ok:#437147; --ok-deep:#3f6942; --focus:#a17826;
    --display:"Frank Ruhl Libre","David Libre",serif; --body:"Heebo","Arial Hebrew",Arial,sans-serif;
    --ease:cubic-bezier(.23,1,.32,1); --glide:cubic-bezier(.22,.61,.36,1);
    --primary:linear-gradient(180deg,rgba(160,58,36,.94),rgba(143,54,32,.96));
    --primary-shadow:inset 0 0 12px rgba(255,210,190,.1),inset 0 -8px 16px -12px rgba(0,0,0,.28),0 12px 28px -12px rgba(143,54,32,.6);
    /* הגוון הפנימי של הכרטיסייה שנבחרה. הכרעת חגי 19.9: «זכוכית מוארת, אבל קצת יותר כהה». בסבב 1 היה .11 */
    --lit-tint:rgba(181,72,46,.15);
  }
  /* ⭐ תיקון 25.9 (ביקורת · codes-fix, ממצא 1): body:has(#SCREEN:not(.hidden)) שכל שאר המסכים
     העליונים מקבלים (boot/add/manage/suspended/canceled/quiz/intro/home/account/results/sent/
     level/exam/admin, למעלה ולמטה בקובץ) היה חסר ל-#pay -- הגוף נשאר ב-16px/Heebo רגיל ובלי
     ההילות כשמסלול הרכישה פתוח. font-family/font-size/line-height זהים בשני הספקים העצמאיים
     של #pay (מסלול-הרכישה.html ורכיבי-קודים.html, שורות 19/23 בהתאמה: 17px, 1.55). ה-gradient
     כאן מילה במילה מ-רכיבי-קודים.html (body{}, שורה 24) -- הקובץ שהמסך codes נבדק מולו כאן
     (זוג "stage") -- ולא מ-מסלול-הרכישה.html (שם הוא קצר יותר, 5 שכבות במקום 8, כי אותו עמוד
     עצמאי נמוך יותר משלושת מסכי רכיבי-קודים.html זה מתחת לזה). מסך «buy» העצמאי (screens.json)
     אינו בודק body כלל, ולכן שני הספקים אינם מתנגשים. */
  body:has(#pay:not(.hidden)){
    font-family:"Heebo","Arial Hebrew",Arial,sans-serif;font-size:17px;line-height:1.55;
    background-image:radial-gradient(340px 300px at 88% 40px,rgba(201,150,47,.30),transparent 70%),radial-gradient(320px 320px at 4% 420px,rgba(181,72,46,.22),transparent 70%),radial-gradient(340px 320px at 96% 800px,rgba(201,150,47,.24),transparent 70%),radial-gradient(320px 320px at 6% 1180px,rgba(181,72,46,.18),transparent 70%),radial-gradient(340px 320px at 94% 1560px,rgba(201,150,47,.22),transparent 70%),radial-gradient(320px 320px at 8% 1940px,rgba(181,72,46,.18),transparent 70%),radial-gradient(340px 320px at 92% 2320px,rgba(201,150,47,.22),transparent 70%),radial-gradient(320px 320px at 6% 2700px,rgba(181,72,46,.18),transparent 70%);
    background-repeat:no-repeat}
  #pay button{font-family:var(--body)}
  #pay :focus-visible{outline:3px solid var(--focus);outline-offset:3px;border-radius:6px}
  /* ===== זגוגית בשלוש שכבות · מועתק מ-_ראש-משותף.txt ===== */
  #pay .lg{position:relative;isolation:isolate;overflow:hidden;background:rgba(255,255,255,.05);
    backdrop-filter:blur(9px) saturate(200%) brightness(1.08);-webkit-backdrop-filter:blur(9px) saturate(200%) brightness(1.08);
    box-shadow:inset 0 0 14px rgba(255,255,255,.30),inset 0 -6px 12px -10px rgba(0,0,0,.10),0 8px 22px -14px rgba(44,38,32,.18)}
  #pay .lg::before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:radial-gradient(130% 60% at 50% -12%,rgba(255,255,255,.40),rgba(255,255,255,0) 60%),linear-gradient(115deg,rgba(255,255,255,.20) 0%,rgba(255,255,255,0) 28%,rgba(255,255,255,0) 74%,rgba(255,255,255,.12) 100%)}
  #pay .lg::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:linear-gradient(135deg,rgba(255,255,255,.95) 0%,rgba(255,255,255,.25) 28%,rgba(255,255,255,.08) 50%,rgba(255,255,255,.30) 74%,rgba(255,255,255,.85) 100%);
    padding:1.4px;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0)}
  /* ⚠ תוספת: דפדפן בלי טשטוש בכלל מקבל משטח אטום ולא טקסט על טקסט, כמו ב-LG-SYSTEM (אין לו מקבילה בספק).
     לפני הכפתורים, הודעת העצירה והכפתור הנעול, שהרקע שלהם גובר עליו. */
  @supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){#pay .lg{background:rgba(255,253,248,.86)}}
  #pay .lg>*{position:relative;z-index:1}
  #pay .btn{position:relative;width:100%;display:inline-flex;align-items:center;justify-content:center;font-weight:600;font-size:17px;border-radius:14px;padding:0 18px;border:0;cursor:pointer;min-height:52px;letter-spacing:-.01em;color:var(--ink);transition:transform .12s ease,filter .2s ease}
  #pay .btn{gap:normal}   /* ⚠ ביטול ירושה: .btn.lg של LG-SYSTEM מוסיף gap:8px, והספק אינו */
  /* ⚠ ביטול ירושה: .btn-primary:hover המשותף מרים את הכפתור ב-2px, והספק אינו. לפני :active, כדי שהלחיצה תגבר */
  @media (hover:hover) and (pointer:fine){#pay .btn-primary:hover{transform:none}}
  #pay .btn:active{transform:scale(.97)}
  #pay .btn-primary{color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.25);background:var(--primary);box-shadow:var(--primary-shadow)}
  #pay .btn-primary.lg::before{background:radial-gradient(130% 70% at 50% -10%,rgba(255,255,255,.16),rgba(255,255,255,0) 60%),radial-gradient(90% 50% at 50% 115%,rgba(255,200,180,.18),rgba(255,255,255,0) 60%)}
  @media (hover:hover) and (pointer:fine){#pay .btn-primary:hover,#pay .fillbtn.on:hover{filter:brightness(1.06)}}
  /* כפתור ראשי שנפתח: גוון חלש עד שאפשר ללחוץ, ואז האדום העמוק מתמלא מהמרכז */
  #pay .fillbtn{background:rgba(181,72,46,.10);color:var(--ink-soft);transition:transform .12s ease,filter .2s ease,color .35s var(--ease) .1s,box-shadow .55s var(--ease)}
  #pay .fillbtn .fill{position:absolute;inset:0;border-radius:inherit;z-index:1;
    background:radial-gradient(130% 70% at 50% -10%,rgba(255,255,255,.16),rgba(255,255,255,0) 60%),var(--primary);
    box-shadow:inset 0 0 0 1px rgba(255,255,255,.38),inset 1.5px 1.5px 0 -.5px rgba(255,255,255,.8),inset -1px -1px 0 -.5px rgba(0,0,0,.2),inset 0 -8px 16px -12px rgba(0,0,0,.25);
    clip-path:circle(0% at 50% 50%);transition:clip-path .6s var(--ease)}
  #pay .fillbtn .lbl{position:relative;z-index:2}
  #pay .fillbtn.on{color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.25);box-shadow:var(--primary-shadow)}
  #pay .fillbtn.on .fill{clip-path:circle(75% at 50% 50%)}
  #pay .fillbtn:disabled{cursor:not-allowed}
  #pay .fillbtn:disabled{opacity:1}   /* ⚠ ביטול ירושה: .btn.lg:disabled של LG-SYSTEM מחליש ל-.45; בספק הכפתור הנעול מלא, בגוון חלש ובדיו רך */
  @keyframes pay-rise{from{opacity:0;transform:translateY(6px)}}
  @keyframes pay-out{to{opacity:0;transform:translateY(-6px)}}
  @keyframes pay-land{from{opacity:0;transform:translateY(8px)}}
  @keyframes pay-fly{from{opacity:0;transform:scale(.72)}}
  @keyframes pay-spin{from{transform:rotate(-90deg)}to{transform:rotate(270deg)}}
  @keyframes pay-blink{50%{opacity:.2}}
  @keyframes pay-burst{0%{transform:translate(0,0) scale(.4) rotate(0);opacity:0}8%{opacity:1}100%{transform:translate(var(--dx),var(--dy)) scale(1) rotate(260deg);opacity:0}}
  #pay .brand{font-family:var(--display);font-weight:700;font-size:20px;color:var(--accent);direction:ltr;unicode-bidi:isolate}
  /* ===== המסך: הבמה, נייר ושתי ההילות של מסך הבית שהזכוכית שוברת ===== */
  #pay .screen{position:relative;border-radius:48px;overflow:hidden;overflow:clip;aspect-ratio:375/812;display:flex;flex-direction:column;
    background-color:var(--paper);color:var(--ink);font-size:17px;line-height:1.55;
    background-image:radial-gradient(60% 40% at 85% -5%,rgba(201,150,47,.18),transparent 70%),radial-gradient(50% 40% at 5% 45%,rgba(181,72,46,.14),transparent 70%);background-repeat:no-repeat}
  /* ⚠ התאמה אחת: בספק זה מסך של טלפון (פינה 48 ויחס 375:812), וכאן זה המסך כולו. והגופן מגיע
     מה-body של הספק, שבאפליקציה אינו גוף הדף. ב-375 הגובה זהה: 812 בשניהם */
  #pay .screen{border-radius:0;aspect-ratio:auto;min-height:100vh;font-family:var(--body);-webkit-font-smoothing:antialiased}
  /* ===== האפליקציה בתוך המסך ===== */
  #pay .app{flex:1;display:flex;flex-direction:column;padding:0 18px 34px;position:relative}
  #pay .app{width:100%;max-width:520px;margin-inline:auto}   /* ⚠ תוספת למחשב: הטור של מסך התרגול. בטלפון אין לה השפעה */
  #pay .app.enter .r{animation:pay-rise var(--d,.45s) var(--ease) both}
  #pay .top{display:flex;align-items:center;justify-content:space-between;min-height:44px;padding-top:4px}
  #pay .back{display:inline-flex;align-items:center;gap:7px;border:0;border-radius:11px;color:var(--ink);font-size:14px;font-weight:500;cursor:pointer;padding:7px 13px 7px 9px;transition:opacity .3s var(--ease),transform .12s ease}
  #pay .back:active{transform:scale(.97)}
  #pay .back svg{width:16px;height:16px;stroke:currentColor;stroke-width:2;fill:none;stroke-linecap:round;stroke-linejoin:round}
  #pay .back.gone{opacity:0;pointer-events:none}
  #pay .head{text-align:center;margin:18px 0 0}
  #pay .ico{width:52px;height:52px;border-radius:50%;margin:0 auto 12px;display:grid;place-items:center;background:rgba(181,72,46,.13);box-shadow:inset 0 0 0 1px rgba(181,72,46,.16),0 0 0 8px rgba(181,72,46,.05)}
  #pay .ico svg{width:26px;height:26px;fill:none;stroke:var(--accent);stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
  #pay .head h1{font-family:var(--display);font-weight:700;font-size:30px;line-height:1.15;margin:0;text-wrap:balance}
  #pay .head .sub{margin:6px 0 0;font-size:15px;color:var(--ink-soft)}
  /* ===== שלוש הכרטיסיות · כל אחת זגוגית בפני עצמה, והבחירה גולשת ביניהן ===== */
  #pay .plans{position:relative;isolation:isolate;display:flex;flex-direction:column;gap:10px;margin:22px 0 0}
  #pay .pane{position:absolute;top:0;left:0;right:0;height:var(--h,88px);border-radius:16px;z-index:1;pointer-events:none;opacity:0;transform:translateY(var(--y,0px));
    transition:transform .55s var(--glide),height .35s var(--ease),opacity .35s var(--ease)}
  #pay .pane.snap{transition:none}
  #pay .plans.has .pane{opacity:1}
  #pay .pane i{position:absolute;inset:0;border-radius:inherit;transition:opacity .35s var(--ease)}
  #pay .pane .pa{background:linear-gradient(180deg,rgba(255,255,255,.64),rgba(255,255,255,.34)),linear-gradient(var(--lit-tint),var(--lit-tint));
    box-shadow:inset 0 0 0 1px rgba(255,255,255,.85),inset 1.5px 1.5px 0 -.5px #fff,inset -1px -1px 0 -.5px rgba(0,0,0,.08)}
  #pay .plan{position:relative;display:grid;grid-template-columns:64px 1fr 64px;align-items:center;min-height:88px;padding:10px 4px;border:0;border-radius:16px;background:none;cursor:pointer;color:var(--ink);font:inherit;text-align:center;-webkit-tap-highlight-color:transparent}
  #pay .plan .glass{position:absolute;inset:0;border-radius:inherit;z-index:0}
  #pay .plan>:not(.glass){position:relative;z-index:2}
  #pay .mid{display:flex;flex-direction:column;align-items:center}
  #pay .per{display:inline-flex;align-items:baseline;gap:6px;line-height:1}
  #pay .per .n{font-family:var(--display);font-weight:700;font-size:34px;line-height:1;color:var(--accent);font-variant-numeric:tabular-nums}
  #pay .per .u{font-size:16px;font-weight:500;color:var(--ink)}
  #pay .amt{font-family:var(--display);font-weight:700;font-size:21px;line-height:1.2;color:var(--ink);margin-top:5px}
  #pay .plan .n,#pay .plan .u,#pay .plan .amt{transition:color .3s ease .1s,text-shadow .3s ease .1s}
  #pay .end{justify-self:center}
  #pay .tag{display:inline-block;font-size:12px;font-weight:600;padding:5px 12px;border-radius:999px;color:var(--ink);line-height:1.3;white-space:nowrap}
  /* עיגול הבחירה · מועתק מ-השלמות.html (.chk), עם מילוי מהמרכז ווי שנכתב */
  #pay .chk{justify-self:center;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:rgba(255,255,255,.5);box-shadow:inset 0 0 0 1px var(--line)}
  #pay .chk i{position:absolute;inset:0;border-radius:50%;background:var(--primary);box-shadow:inset 0 0 0 1px rgba(255,255,255,.4),inset 1px 1px 0 -.5px rgba(255,255,255,.7);transform:scale(0);transition:transform .35s var(--ease),background-color .3s}
  #pay .chk svg{position:relative;width:15px;height:15px;stroke:#fff;stroke-width:2.6;fill:none;stroke-linecap:round;stroke-linejoin:round}
  #pay .chk svg path,#pay .box svg path,#pay .tick path{stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset .3s ease}
  #pay .plan.on .chk i{transform:scale(1)}
  #pay .plan.on .chk svg path{stroke-dashoffset:0;transition-delay:.14s}
  #pay .acts{display:flex;flex-direction:column;gap:9px;margin:18px 0 0}
  /* ===== לפני התשלום ===== */
  #pay .views{flex:1;display:grid}
  #pay .view{grid-area:1/1;display:flex;flex-direction:column;min-width:0}
  #pay .view.off{visibility:hidden}
  #pay .v-form.leave>*{animation:pay-out .26s var(--ease) both}
  #pay .sum{margin:18px 0 0;border-radius:16px;padding:16px 16px 14px;text-align:center}
  #pay .sum .k{margin:0 0 6px;font-size:12px;letter-spacing:.14em;color:var(--ink-soft);font-weight:500}
  #pay .sumv{display:flex;flex-direction:column;align-items:center}
  #pay .sumv.swap{animation:pay-rise .38s var(--ease) both}
  #pay .sum .per .n{font-size:48px}
  #pay .sum .per .u{font-size:17px}
  #pay .sum .amt{font-size:24px;margin-top:6px}
  #pay .rcpt{display:flex;align-items:center;justify-content:center;gap:7px;margin:14px 0 0;padding:12px 0 0;border-top:1px solid rgba(44,38,32,.08);font-size:13.5px;line-height:1.4;color:var(--ink-soft)}
  #pay .rcpt svg{flex:none;width:16px;height:16px;stroke:var(--accent);stroke-width:1.8;fill:none;stroke-linecap:round;stroke-linejoin:round}
  /* תיבת האישור · זגוגית, ובסימון האדום מתמלא מהמרכז והווי נכתב */
  #pay .terms{display:block;margin:18px auto 0;max-width:296px;text-align:center;font-size:14.5px;line-height:1.65;color:var(--ink);cursor:pointer;text-wrap:balance;-webkit-tap-highlight-color:transparent}
  #pay .terms input{position:absolute;opacity:0;width:1px;height:1px;margin:0;pointer-events:none}
  #pay .box{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:7px;vertical-align:-6px;margin-inline-end:8px;
    box-shadow:inset 0 0 0 1.25px var(--line-strong),inset 1.5px 1.5px 0 -.5px rgba(255,255,255,.9),0 4px 10px -6px rgba(44,38,32,.35)}
  #pay .box i{position:absolute;inset:0;border-radius:inherit;background:var(--primary);box-shadow:inset 0 0 0 1px rgba(255,255,255,.4);transform:scale(0);transition:transform .35s var(--ease)}
  #pay .box svg{position:relative;z-index:2;width:14px;height:14px;stroke:#fff;stroke-width:2.8;fill:none;stroke-linecap:round;stroke-linejoin:round}
  #pay .terms input:checked+.box i{transform:scale(1)}
  #pay .terms input:checked+.box svg path{stroke-dashoffset:0;transition-delay:.14s}
  #pay .terms input:focus-visible+.box{outline:3px solid var(--focus);outline-offset:3px}
  #pay .terms a{color:var(--ink);font-weight:500;text-decoration:none;border-bottom:1px solid var(--gold)}
  /* הודעת העצירה · כרטיס זגוגית בגוון זהב חלש, בלי קו מקווקו */
  #pay .stop{margin:4px 0 0;border-radius:16px;padding:14px 16px 13px;text-align:center;background:linear-gradient(rgba(201,150,47,.12),rgba(201,150,47,.12)),rgba(255,255,255,.16)}
  #pay .stop.land{animation:pay-land .45s var(--ease) both}
  #pay .stop .ico{width:36px;height:36px;margin:0 auto 8px;box-shadow:inset 0 0 0 1px rgba(181,72,46,.16)}
  #pay .stop .ico svg{width:18px;height:18px}
  #pay .stop b{display:block;font-family:var(--display);font-weight:700;font-size:17px;line-height:1.3}
  #pay .stop p{margin:4px 0 0;font-size:13.5px;line-height:1.55;color:var(--ink-soft);text-wrap:balance}
  /* ===== טעינה והצלחה · טבעת אחת שמסתובבת, נסגרת והופכת לווי ===== */
  #pay .v-done{align-items:center;justify-content:center;text-align:center;padding:0 0 30px}
  #pay .ringwrap{position:relative;width:108px;height:108px;flex:none}
  #pay .v-done.in .ringwrap{animation:pay-fly .55s var(--ease) both}
  #pay .ring{position:absolute;inset:0;border-radius:50%;display:grid;place-items:center}
  #pay .ring .arc{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg);z-index:1}
  #pay .ring .arc circle{fill:none;stroke-width:5}
  #pay .ring .trk{stroke:rgba(44,38,32,.08)}
  #pay .ring .fg{stroke:var(--accent);stroke-linecap:round;stroke-dasharray:24 100;transition:stroke-dasharray .8s var(--ease),stroke .6s ease}
  #pay .v-done.wait .ring .arc{animation:pay-spin 2.6s linear infinite}
  #pay .v-done.ok .ring .fg{stroke-dasharray:100 100;stroke:var(--ok)}
  #pay .ring .tick{position:relative;z-index:2;width:42px;height:42px;fill:none;stroke:var(--ok);stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}
  #pay .tick path{transition-duration:.4s}
  #pay .v-done.ok .tick path{stroke-dashoffset:0;transition-delay:.7s}
  /* החגיגה · מועתק מ-השלמות.html (.cheer .dots), פעם אחת כשהטבעת נסגרת */
  #pay .burst{position:absolute;left:50%;top:50%;width:0;height:0;z-index:0}
  #pay .burst i{position:absolute;left:-4px;top:-4px;width:8px;height:8px;border-radius:2px;opacity:0}
  #pay .burst i:nth-child(odd){background:var(--accent)}
  #pay .burst i:nth-child(even){background:var(--gold);border-radius:50%}
  #pay .burst i:nth-child(1){--dx:-150px;--dy:-120px;--t:0s}
  #pay .burst i:nth-child(2){--dx:150px;--dy:-110px;--t:.15s}
  #pay .burst i:nth-child(3){--dx:-170px;--dy:20px;--t:.3s}
  #pay .burst i:nth-child(4){--dx:170px;--dy:30px;--t:.05s}
  #pay .burst i:nth-child(5){--dx:-90px;--dy:-160px;--t:.4s}
  #pay .burst i:nth-child(6){--dx:90px;--dy:-165px;--t:.25s}
  #pay .burst i:nth-child(7){--dx:-130px;--dy:120px;--t:.5s}
  #pay .burst i:nth-child(8){--dx:130px;--dy:110px;--t:.35s}
  #pay .burst i:nth-child(9){--dx:0px;--dy:-180px;--t:.45s}
  #pay .burst i:nth-child(10){--dx:20px;--dy:150px;--t:.2s}
  #pay .v-done.ok .burst i{animation:pay-burst 1.8s cubic-bezier(.1,.7,.3,1) calc(.65s + var(--t)) both}
  /* ⚠ בסבב 1 הכלל היה .swap לבד, ותפס גם את האנימציה של הסיכום (.sumv.swap): בחירה בכרטיסייה אחרת הפכה את הסיכום לתא אחד, והספרות עלו זו על זו */
  #pay .v-done .swap{display:grid;justify-items:center;margin:22px 0 0}
  #pay .v-done .swap>*{grid-area:1/1}
  #pay .msg{margin:0;align-self:center;font-size:17px;font-weight:500;color:var(--ink)}
  #pay .msg::after{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--gold);margin-inline-start:8px;vertical-align:middle;animation:pay-blink 1s infinite}
  #pay .okh{margin:0;font-family:var(--display);font-weight:700;font-size:30px;line-height:1.15;visibility:hidden}
  #pay .okt{margin:12px 0 0;font-size:14px;font-weight:600;padding:6px 16px;border-radius:999px;color:var(--ink);visibility:hidden}
  #pay .v-done .acts{width:100%;visibility:hidden}
  #pay .v-done.in .msg{animation:pay-rise .5s var(--ease) .12s both}
  #pay .v-done.ok .msg{animation:pay-out .25s var(--ease) both}
  #pay .v-done.ok .okh{visibility:visible;animation:pay-rise .5s var(--ease) .8s both}
  #pay .v-done.ok .okt{visibility:visible;animation:pay-rise .55s var(--ease) .9s both}
  #pay .v-done.ok .acts{visibility:visible;animation:pay-rise .6s var(--ease) 1s both}
  @media (max-width:380px){
    #pay .plan{grid-template-columns:52px 1fr 60px}
  }
  @media (prefers-reduced-motion:reduce){
    #pay *,#pay *::before,#pay *::after{animation:none!important;transition:none!important}
    #pay .v-done.ok .msg{visibility:hidden}
  }
  /* ⚠ תוספת: המסך הוא כל המכשיר, בלי הריפוד והרוחב של .wrap. דפדפן בלי :has() נשאר עם .wrap הרגיל */
  .wrap:has(>#pay:not(.hidden)){max-width:none;padding:0}
  /* BUY-19.9:END */

  /* ═════════════════════════════════════════════════════════════════════════
     LOCK-24.9:START · שני מסכי הנעילה · העתקה של הקובץ המאושר · 24.9.2026
     ═════════════════════════════════════════════════════════════════════════
     מקור: ביקורת/עיצוב-9.9/מסך-מנוי-מושהה.html (סבב הנעילה 24.9: שני מסכים ושדה הקוד, הכרעות העוזר
     האישי בפנקס 24.9 · הכרעת חגי 22.9 05:45: ביטול פעיל = «המנוי בוטל», חיוב שנכשל או ניסיון שנגמר =
     «הגישה מושהית»). הכרעת חגי 11.9: ה-CSS נכנס מילה במילה ובאותם שמות מחלקות, המבנה נכנס ל-index.html
     כמו בקובץ, ורק מזהים וחיבורים ל-JS משתנים. מחליף את ארבעת הבלוקים של המסך הקודם (LOCKED-9.9,
     LOCKED-19.9, LOCKED-20.9, LOCKED-WAVED-20.9), שנכתבו כולם תחת #locked, שירד.

     ⛔ איך זה לא נוגע במסך אחר: כל כלל נעול תחת #suspended או #canceled (:is), או תחת ה-body וה-.wrap
       כשאחד מהם פתוח (:has). tests/183 בודק שכל כלל של הקובץ נמצא כאן כלשונו.
     ⚠ מה שנוסף מעבר לקובץ, וכל אחד מסומן ליד הכלל שלו: «ביטול ירושה» מ-LG-SYSTEM (כמו ב-LEVEL-10.9),
       :hover עטוף, keyframes בשם ייחודי (lock-rise, כי rise הגלובלי הוא 8px ושם זהה היה דורס אותו),
       תנועה שנכבית ב-reduce, משטח אטום לדפדפן בלי טשטוש, והריפוד של ספארי באייפון.
     ⚠ מה שבקובץ ואינו כאן: .sep (הקו בין שני המסכים בקובץ ההדגמה · כאן מוצג מסך אחד בכל פעם),
       ו-*{box-sizing} ו-html{direction} (כבר חלים על כל האפליקציה). */
  :is(#suspended,#canceled){
    --paper:#f6f1e7; --paper-deep:#efe8da; --card:#fffdf8; --ink:#2c2620; --ink-soft:#5e564a;
    --gold:#c9962f; --gold-soft:#f1e3bf; --accent:#b5482e; --accent-deep:#8f3620; --line:#e3d8c4; --ok:#437147; --ok-deep:#3f6942;
    --display:"Frank Ruhl Libre","David Libre",serif; --body:"Heebo","Arial Hebrew",Arial,sans-serif; --ease:cubic-bezier(.23,1,.32,1);
    color:var(--ink);font-family:var(--body);font-size:17px;line-height:1.55}
  /* הבמה · ההילות של ה-body בקובץ, רק כשאחד המסכים פתוח (ה-body משותף לכל המסכים) */
  body:has(:is(#suspended,#canceled):not(.hidden)){
    font-family:"Heebo","Arial Hebrew",Arial,sans-serif;font-size:17px;line-height:1.55;
    background-image:radial-gradient(340px 300px at 88% 40px,rgba(201,150,47,.30),transparent 70%),radial-gradient(320px 320px at 4% 420px,rgba(181,72,46,.22),transparent 70%),radial-gradient(340px 320px at 96% 800px,rgba(201,150,47,.24),transparent 70%),radial-gradient(320px 320px at 6% 1180px,rgba(181,72,46,.18),transparent 70%),radial-gradient(340px 320px at 94% 1560px,rgba(201,150,47,.22),transparent 70%);
    background-repeat:no-repeat}
  .wrap:has(>:is(#suspended,#canceled):not(.hidden)){max-width:520px;margin:0 auto;padding:24px 18px 40px;min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}
  body.ios-web .wrap:has(>:is(#suspended,#canceled):not(.hidden)){padding-bottom:calc(40px + 68px)}   /* ⚠ תוספת: שורת הכתובת של ספארי (ר' body.ios-web .wrap למעלה) */
  /* המסך אינו יוצר קופסה, והילדים שלו הם ילדי הטור הממורכז, כמו ב-.wrap של הקובץ (אותו פתרון כמו #level) */
  :is(#suspended,#canceled):not(.hidden){display:contents}

  :is(#suspended,#canceled) .lg{position:relative;isolation:isolate;overflow:hidden;background:rgba(255,255,255,.05);
    backdrop-filter:blur(9px) saturate(200%) brightness(1.08);-webkit-backdrop-filter:blur(9px) saturate(200%) brightness(1.08);
    box-shadow:inset 0 0 14px rgba(255,255,255,.30),inset 0 -6px 12px -10px rgba(0,0,0,.10),0 8px 22px -14px rgba(44,38,32,.18)} /* 20.9 · «כמו אפל»: כמעט צלולה, והאור על השפה */
  @supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){:is(#suspended,#canceled) .lg{background:rgba(255,253,248,.86)}}   /* ⚠ תוספת: דפדפן בלי טשטוש, כמו LG-SYSTEM */
  :is(#suspended,#canceled) .lg::before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:radial-gradient(130% 60% at 50% -12%,rgba(255,255,255,.40),rgba(255,255,255,0) 60%),linear-gradient(115deg,rgba(255,255,255,.20) 0%,rgba(255,255,255,0) 28%,rgba(255,255,255,0) 74%,rgba(255,255,255,.12) 100%)}
  :is(#suspended,#canceled) .lg::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:linear-gradient(135deg,rgba(255,255,255,.95) 0%,rgba(255,255,255,.25) 28%,rgba(255,255,255,.08) 50%,rgba(255,255,255,.30) 74%,rgba(255,255,255,.85) 100%);
    padding:1.4px;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0)} /* טבעת האור על השפה · מחליפה את שבירת האור שספארי לא תומך בה */
  :is(#suspended,#canceled) .lg>*{position:relative;z-index:1}

  :is(#suspended,#canceled) .btn{font-family:inherit;font-weight:600;font-size:17px;border-radius:14px;padding:0 18px;border:0;cursor:pointer;min-height:52px;letter-spacing:-.01em;transition:transform .12s ease,filter .2s ease}
  :is(#suspended,#canceled) .btn{display:inline-block;align-items:normal;justify-content:normal;gap:normal}   /* ⚠ ביטול ירושה מ-.btn.lg של LG-SYSTEM (inline-flex, gap), כמו ב-LEVEL-10.9 */
  @media (hover:hover) and (pointer:fine){:is(#suspended,#canceled) .btn-primary:hover{transform:none}}   /* ⚠ ביטול ירושה מ-.btn-primary:hover המשותפת · לפני :active */
  :is(#suspended,#canceled) .btn:active{transform:scale(.97)}
  /* 19.9 · צבע הדיו של .btn עלה לכאן, לפני .btn-primary (הערת הקובץ: אחרת הוא דורס את הלבן של הכפתור הראשי) */
  :is(#suspended,#canceled) .btn{color:var(--ink)}
  :is(#suspended,#canceled) .btn-primary{color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.25);background:linear-gradient(180deg,rgba(160,58,36,.94),rgba(143,54,32,.96));
    box-shadow:inset 0 0 12px rgba(255,210,190,.1),inset 0 -8px 16px -12px rgba(0,0,0,.28),0 12px 28px -12px rgba(143,54,32,.6)}
  @media (hover:hover) and (pointer:fine){:is(#suspended,#canceled) .btn-primary:hover{filter:brightness(1.06)}}
  :is(#suspended,#canceled) .btn-primary.lg::before{background:radial-gradient(130% 70% at 50% -10%,rgba(255,255,255,.16),rgba(255,255,255,0) 60%),radial-gradient(90% 50% at 50% 115%,rgba(255,200,180,.18),rgba(255,255,255,0) 60%)}
  :is(#suspended,#canceled) .btn-ghost{color:var(--ink)}
  @media (hover:hover) and (pointer:fine){:is(#suspended,#canceled) .btn-ghost:hover{filter:brightness(1.03)}}

  /* ===== מסכי הנעילה · שניים · הכרעת חגי 22.9 (ביטול פעיל = «המנוי בוטל» · חיוב שנכשל או ניסיון שנגמר = «הגישה מושהית») ===== */
  :is(#suspended,#canceled) button{font-family:var(--body)}
  :is(#suspended,#canceled) .btn>*{position:relative;z-index:1}
  :is(#suspended,#canceled) :focus-visible{outline:3px solid #a17826;outline-offset:3px;border-radius:6px}
  @keyframes lock-rise{from{opacity:0;transform:translateY(6px)}}   /* rise של הקובץ · ⚠ בשם ייחודי, ר' הכותרת */

  :is(#suspended,#canceled) .brand{font-family:var(--display);font-weight:700;font-size:20px;color:var(--accent);direction:ltr;margin:0 0 30px;animation:lock-rise .4s var(--ease) both}

  :is(#suspended,#canceled) .lock{width:96px;height:96px;border-radius:50%;display:grid;place-items:center;margin:0 auto;background:rgba(181,72,46,.13);box-shadow:0 0 0 10px rgba(181,72,46,.06);animation:lock-rise .45s var(--ease) both}
  :is(#suspended,#canceled) .lock svg{width:40px;height:40px;stroke:var(--accent);stroke-width:1.7;fill:none;stroke-linecap:round;stroke-linejoin:round}

  :is(#suspended,#canceled) h1{font-family:var(--display);font-weight:700;font-size:32px;margin:22px 0 0;line-height:1.15;text-wrap:balance;animation:lock-rise .5s var(--ease) both}
  :is(#suspended,#canceled) .p1{margin:14px 0 0;font-size:16.5px;font-weight:500;color:var(--ink);max-width:20em;text-wrap:balance;animation:lock-rise .55s var(--ease) both}
  :is(#suspended,#canceled) .p2{margin:6px 0 0;font-size:15px;color:var(--ink-soft);max-width:21em;line-height:1.5;text-wrap:balance;animation:lock-rise .6s var(--ease) both}

  :is(#suspended,#canceled) .field{width:100%;max-width:340px;margin:26px auto 0;border-radius:13px;border:1px solid var(--line);background:var(--paper);padding:12px 14px;animation:lock-rise .65s var(--ease) both}
  :is(#suspended,#canceled) .field .k{display:block;font-size:12px;letter-spacing:.14em;color:var(--ink-soft);font-weight:500;margin:0 0 3px}
  :is(#suspended,#canceled) .field .v{display:block;font-family:var(--display);font-weight:700;font-size:19px;color:var(--ink);direction:ltr;unicode-bidi:isolate;word-break:break-all}

  /* שדה הקוד · אותו רכיב בכל המסכים (נעילה, רכישה, חשבון) · מפרט 23.9 §4 */
  :is(#suspended,#canceled) .code{width:100%;max-width:340px;margin:16px auto 0;border-radius:16px;padding:16px 14px 14px;animation:lock-rise .7s var(--ease) both}
  :is(#suspended,#canceled) .code>*{position:relative;z-index:1}
  :is(#suspended,#canceled) .code .t{display:block;font-family:var(--display);font-weight:700;font-size:19px;margin:0 0 10px}
  :is(#suspended,#canceled) .code .row{display:grid;grid-template-columns:1fr 104px;gap:8px}
  :is(#suspended,#canceled) .code input{width:100%;height:50px;border-radius:12px;border:1px solid var(--line);background:var(--paper);padding:0 14px;font-family:ui-monospace,"SF Mono",Menlo,Consolas,monospace;font-size:19px;letter-spacing:.14em;color:var(--ink);direction:ltr;text-align:center;text-transform:uppercase}
  :is(#suspended,#canceled) .code input::placeholder{color:var(--ink-soft);letter-spacing:.14em;font-size:17px}
  :is(#suspended,#canceled) .code input:focus{outline:0;border-color:#a17826;box-shadow:0 0 0 3px rgba(161,120,38,.22)}
  :is(#suspended,#canceled) .code .btn{min-height:50px;padding:0 12px;font-size:16px}
  :is(#suspended,#canceled) .code .btn[disabled]{opacity:.45;cursor:default;filter:none}
  :is(#suspended,#canceled) .code .res{margin:10px 0 0;min-height:1.4em;font-size:14.5px;color:var(--ink)}
  :is(#suspended,#canceled) .code .res.ok{color:var(--ok-deep);font-weight:500}
  /* הצטרפות דרך מורה · שורה סגורה, נפתחת לשדה קוד כיתה באותו רכיב */
  :is(#suspended,#canceled) .code .via{margin:8px 0 0}
  :is(#suspended,#canceled) .code .via .btn{width:100%;font-size:15px;font-weight:500;min-height:44px}
  :is(#suspended,#canceled) .code .via .btn svg{width:15px;height:15px;margin-inline-start:6px;margin-inline-end:0;transition:transform .3s var(--ease)}
  :is(#suspended,#canceled) .code .via[data-open="1"] .btn svg{transform:rotate(180deg)}
  :is(#suspended,#canceled) .code .via .more{display:none;margin:10px 0 0}
  :is(#suspended,#canceled) .code .via[data-open="1"] .more{display:block;animation:lock-rise .3s var(--ease) both}
  :is(#suspended,#canceled) .code .via .hint{margin:8px 0 0;font-size:13.5px;color:var(--ink-soft);line-height:1.45}

  :is(#suspended,#canceled) .acts{width:100%;max-width:340px;display:flex;flex-direction:column;gap:10px;margin:22px auto 0;animation:lock-rise .75s var(--ease) both}
  :is(#suspended,#canceled) .btn-block{width:100%}
  :is(#suspended,#canceled) .btn svg{width:19px;height:19px;vertical-align:-4px;margin-inline-end:8px;stroke:currentColor;stroke-width:1.9;fill:none;stroke-linecap:round;stroke-linejoin:round}
  /* ⚠ תוספת: הכניסה המדורגת והסיבוב של החץ נכבים ב-reduce (מפרט 23.9 §5) */
  @media (prefers-reduced-motion:reduce){
    :is(#suspended,#canceled) :is(.brand,.lock,h1,.p1,.p2,.field,.code,.acts){animation:none}
    :is(#suspended,#canceled) .code .via[data-open="1"] .more{animation:none}
    :is(#suspended,#canceled) .code .via .btn svg{transition:none}
    :is(#suspended,#canceled) .btn:active{transform:none}
  }
  /* LOCK-24.9:END */

  /* ═════════════════════════════════════════════════════════════════════════
     REVIEW-9.9:START · שתי הדרכים לחזור למילה שכבר ידעת · 9.9.2026
     ═════════════════════════════════════════════════════════════════════════
     ⛔ **אחרי `KIT-9.9:END` ו-`PAY-9.9:END`, ולא בתוך אף בלוק נעול.** שפת
     הזכוכית עצמה אינה משתנה כאן · שני הרכיבים החדשים הם `.lg-row.lg` כמו
     שהוא, וכל מה שמתווסף הוא פריסה.

     ⭐ ארבעה כללים בלבד, ולכל אחד נימוק:
       · `.rev-note` · עוטף · `.lg-row` הוא הכפתור, וה-✕ יושב מעליו בהצמדה.
         בלי `position:relative` על העוטף ה-✕ היה נצמד למסך ולא לשורה.
         ⛔ ולא בתוך הכפתור · כפתור בתוך כפתור אינו HTML תקין, וקורא מסך
         מכריז על השורה כולה כמטרה אחת.
       · `.rev-note .lg-row` · ריפוד בצד ההתחלה, שם ה-✕ עומד · בלעדיו
         האייקון נכנס מתחתיו.
       · `.rev-x` · 44×44, אותה רצפת מגע בדיוק שכבר נמדדה ל-`.wc-x`.
       · `.rev-cta` · מרווח עליון · `.lg-row` אינו קובע מרווח בין שכנים,
         בדיוק מה ש-`.pay-list` פותר שם ב-gap.

     ⛔ אין כאן `color` כתום על שום טקסט · הכתום מגיע מהמערכת שמעל
     (`.lg-ic` · `.lg-row .n` · `.lg-row .go`). ⛔ ואין כאן `:hover`. */
  .rev-note{position:relative;margin-top:14px}
  /* RTL · ה-✕ בפינת ההתחלה, כלומר ימין. */
  .rev-note .lg-row{padding-inline-start:48px}
  .rev-x{position:absolute;top:0;inset-inline-start:0;z-index:2;width:44px;height:44px;
       display:grid;place-items:center;border:0;background:none;cursor:pointer;
       color:var(--ink-soft);font-size:.95rem;line-height:1;border-radius:12px}
  .rev-cta{margin-top:10px}
  /* REVIEW-9.9:END */

  /* ═════════════════════════════════════════════════════════════════════════
     PRACTICE-10.9:START · מסך התרגול · העתקה של הקובץ המאושר · 11.9.2026
     ═════════════════════════════════════════════════════════════════════════
     מקור: ביקורת/עיצוב-9.9/מסך-התרגול.html. הכרעת חגי 11.9 11:00: ה-CSS נכנס מילה במילה ובאותם שמות
     מחלקות, המבנה נכנס ל-index.html כמו בקובץ, ורק מזהים וחיבורים ל-JS משתנים. הבלוק הזה מחליף את
     עיצוב 10.9 של המסך, שהלביש זכוכית על ה-DOM הישן.

     ⛔ איך זה לא נוגע במסך אחר: כל כלל כאן נעול תחת #quiz, והכללים המקוריים של `.card` ,`.prog`,
     `.actions` ,`.btn` ,`.say` ו-`.lg` לא השתנו. הסדר הוא הסדר של הקובץ, ולכן גם המפל שבתוך המסך הוא
     של הקובץ: `.lg` גובר על הצל של `.exit`, ו-`.btn-primary` גובר על הרקע של `.lg`.

     ⚠ מה שנוסף מעבר לקובץ, וכל אחד מסומן ליד הכלל שלו:
       · «ביטול ירושה» · כלל משותף של האפליקציה מצהיר על אותה מחלקה מאפיין שהקובץ אינו מצהיר
         (`.card{text-align}` ,`.prog{box-shadow}` ,`.btn.lg{gap}` ,`.lg>*{z-index}`), או שהאיפוס הגלובלי
         `*{margin:0;padding:0}` מוחק ברירת מחדל של הדפדפן שהקובץ נשען עליה. הערך שנכתב הוא הערך שהקובץ
         המאושר מקבל בפועל, כפי שנמדד בכרום ב-375.
       · כל כלל :hover עטוף בשאילתה (hover:hover) and (pointer:fine) (tests/61), וכל תנועה נכבית תחת
         prefers-reduced-motion (tests/147). בלי ריחוף ובלי reduce הערכים זהים לקובץ.
       · ההתאמות שנמדדו כנחוצות, בסוף הבלוק ובבלוק STAR-10.9. */

  /* :root וה-body של הקובץ, על המסך בלבד. ⚠ --ink-soft ו---paper-deep של הקובץ שונים מה-:root של
     האפליקציה (שם #5e564a ו-#efe7d6, בגלל ניגודיות על --paper-deep, tests/17). במסך הזה אין טקסט
     ב---ink-soft על --paper-deep (נמדד על כל טקסט גלוי), ולכן הערכים של הקובץ נכנסים כמו שהם. */
  #quiz{
    --paper:#f6f1e7; --paper-deep:#efe8da; --card:#fffdf8; --ink:#2c2620; --ink-soft:#5e564a;
    --gold:#c9962f; --gold-soft:#f1e3bf; --accent:#b5482e; --accent-deep:#8f3620; --line:#e3d8c4; --ok:#437147; --line-strong:#888276; --ok-deep:#3f6942;
    --display:"Frank Ruhl Libre","David Libre",serif; --body:"Heebo","Arial Hebrew",Arial,sans-serif; --ease:cubic-bezier(.23,1,.32,1);
    color:var(--ink);font-family:var(--body);font-size:17px;line-height:1.55}
  /* הדף · בקובץ `.wrap` הוא טור בגובה המסך, ושורת התחתית נדחפת לתחתיתו. באפליקציה `.wrap` משותף לכל
     המסכים, ולכן הכלל חל רק כשמסך התרגול פתוח, ו-#quiz עצמו אינו יוצר קופסה: הילדים שלו הם ילדי הטור,
     כמו בקובץ. דפדפן בלי :has() נשאר עם הפריסה הרגילה של `.wrap`. */
  .wrap:has(>#quiz:not(.hidden)){max-width:520px;margin:0 auto;padding:0 18px 60px;min-height:100vh;display:flex;flex-direction:column}
  /* ספארי באייפון כאתר: התוספת לשורת הכתובת (body.ios-web .wrap, למעלה בקובץ) נשמרת גם במסך הזה */
  body.ios-web .wrap:has(>#quiz:not(.hidden)){padding-bottom:calc(60px + 68px)}
  /* ⭐ 22.9.2026 · ההילות לאורך כל המסך, גם כאן. ה-body של הקובץ (מסך-התרגול.html, שורות 12-13)
     מצייר את אותן חמש הילות קבועות כמו הבית, החשבון, הכניסה והנעילה, ולמסך התרגול הן לא הועתקו
     מעולם: נמדד על גרסה 309 ב-x=744 (פיקסל מכשיר) · בקובץ rgb(236,220,189), באפליקציה הנייר החלק
     rgb(245,240,230). מילה במילה מה-body של הקובץ, בדיוק כמו body:has(#home…) למטה, ורק כשמסך
     התרגול פתוח (לפני תשובה ואחריה), כי ה-body משותף. דפדפן בלי :has() נשאר עם הנייר השטוח. */
  body:has(#quiz:not(.hidden)){
    font-family:"Heebo","Arial Hebrew",Arial,sans-serif;font-size:17px;line-height:1.55;
    background-image:radial-gradient(340px 300px at 88% 40px,rgba(201,150,47,.30),transparent 70%),radial-gradient(320px 320px at 4% 420px,rgba(181,72,46,.22),transparent 70%),radial-gradient(340px 320px at 96% 800px,rgba(201,150,47,.24),transparent 70%),radial-gradient(320px 320px at 6% 1180px,rgba(181,72,46,.18),transparent 70%),radial-gradient(340px 320px at 94% 1560px,rgba(201,150,47,.22),transparent 70%);
    background-repeat:no-repeat}
  #quiz:not(.hidden){display:contents}
  #quiz button{font-family:var(--body)}
  #quiz :focus-visible{outline:3px solid #a17826;outline-offset:3px;border-radius:6px}

  /* topbar */
  #quiz .top{display:flex;align-items:center;justify-content:space-between;padding:16px 0 10px}
  #quiz .exit{display:inline-flex;align-items:center;gap:7px;border:0;border-radius:11px;color:var(--ink);font-size:14px;font-weight:500;cursor:pointer;padding:7px 13px 7px 9px;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:inset 0 1px 0 rgba(255,255,255,.7),0 1px 2px rgba(44,38,32,.06);transition:transform .25s var(--ease),scale .25s var(--ease),opacity .25s var(--ease),color .25s var(--ease),background-color .25s var(--ease),border-color .25s var(--ease),box-shadow .25s var(--ease),fill .25s var(--ease),stroke .25s var(--ease),filter .25s var(--ease)}
  @media (hover:hover) and (pointer:fine){#quiz .exit:hover{filter:brightness(1.04)}}
  #quiz .exit svg{width:16px;height:16px;stroke:currentColor;stroke-width:2;fill:none;stroke-linecap:round}
  #quiz .scope{font-family:var(--display);font-weight:700;font-size:18px}
  #quiz .prog{height:3px;background:var(--line);border-radius:2px;overflow:hidden}
  #quiz .prog{margin-bottom:0;box-shadow:none}   /* ביטול ירושה מ-.prog המשותפת */
  #quiz .prog i{display:block;height:100%;width:20%;background:var(--gold);transition:width .5s var(--ease)}
  #quiz .meta{display:flex;justify-content:space-between;font-size:12px;letter-spacing:.14em;color:var(--ink-soft);padding:10px 2px 0;font-variant-numeric:tabular-nums}

  /* card */
  #quiz .card{position:relative;margin:26px 0 0;background:var(--card);border:1px solid var(--line);border-radius:8px;padding:26px 22px 22px;box-shadow:0 1px 0 rgba(255,255,255,.7) inset,0 24px 48px -36px rgba(44,38,32,.35);outline:1px solid var(--card);outline-offset:-5px}
  #quiz .card{text-align:start}   /* ביטול ירושה מ-.card המשותפת */
  #quiz .kind{font-size:14px;color:var(--ink-soft);text-align:center;letter-spacing:.04em;margin:0}
  #quiz .word{font-family:var(--display);font-weight:700;font-size:clamp(45px,12.6vw,65px);line-height:1.15;text-align:center;margin:20px 0 20px}
  #quiz .inp{width:100%;text-align:center;font:inherit;font-size:20px;padding:13px 14px;border-radius:12px;border:1px solid var(--line-strong);background:var(--paper);color:var(--ink);min-height:52px}
  #quiz .inp:focus{border-color:#a17826;outline:none;box-shadow:0 0 0 3px rgba(161,120,38,.25)}
  #quiz .inp::placeholder{color:var(--ink-soft)}   /* 2.10 נגישות: בלי הכלל, האפור של הדפדפן (#757575) נתן 4.09 על הנייר */
  #quiz .actions{display:flex;gap:10px;margin-top:12px}
  #quiz .actions .btn{flex:1}
  /* ⭐ 21.9.2026 · שער העיצוב (practice): שני כפתורי האסוציאציה (שמירה / מה אחרים כתבו) קטנים
     יותר בקובץ המאושר (.assoc .rowb .btn, למעלה ב-QUIZ המשותף) -- הכלל שם קיים אבל #quiz .btn
     למטה מנצח אותו בספציפיות (מזהה מול מחלקה), ולכן צריך פה עותק עם #quiz כדי לחזור ל-15px. */
  #quiz .assoc .rowb .btn{font-size:15px}
  /* ⭐ 20.9 · wave-d: הפעם עם הרשאה על tests/147 גם יחד (בריף המבקר) — #quiz עובר ל«כמו אפל»
     מילה במילה מהקובץ המאושר (ביקורת/עיצוב-9.9/מסך-התרגול.html, אחרי 06afe47), כמו כל מסך אחר.
     נשאר בלוק מפורש (ולא מחיקה + ירושה מ-LG-SYSTEM): .btn-ghost.lg המשותפת נועלת רקע .16 על
     כפתורי רוח (tests/147 §6, «הבקרה»), והבלוק המפורש כאן, עם #quiz בספציפיות, גובר גם עליה —
     בדיוק כמו בקובץ המאושר, ששם `.lg` (שורה 38) מוגדר אחרי `.exit` (שורה 21) ומנצח באותה ספציפיות. */
  /* ===== Liquid Glass · שלוש השכבות של אפל: אור עליון · צל · הארה פנימית ===== */
  #quiz .lg{position:relative;isolation:isolate;overflow:hidden;
    background:rgba(255,255,255,.05);
    backdrop-filter:blur(9px) saturate(200%) brightness(1.08);-webkit-backdrop-filter:blur(9px) saturate(200%) brightness(1.08);
    box-shadow:inset 0 0 14px rgba(255,255,255,.30),inset 0 -6px 12px -10px rgba(0,0,0,.10),0 8px 22px -14px rgba(44,38,32,.18)} /* 20.9 · «כמו אפל»: כמעט צלולה, והאור על השפה */
  #quiz .lg::before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;
    background:radial-gradient(130% 60% at 50% -12%,rgba(255,255,255,.40),rgba(255,255,255,0) 60%),
               linear-gradient(115deg,rgba(255,255,255,.20) 0%,rgba(255,255,255,0) 28%,rgba(255,255,255,0) 74%,rgba(255,255,255,.12) 100%)}
  /* ⚠ בלי #quiz .lg::after משלה: הקובץ המאושר (שורות 42-43) והמערכת המשותפת (LG-SYSTEM) מגדירים
     טבעת אור זהה על השפה · אין כאן דריסה שצריכה לרדת, #quiz יורש את המשותפת כמו שהיא. */
  /* דפדפן בלי טשטוש בכלל: משטח אטום ולא טקסט על טקסט, כמו ב-LG-SYSTEM (אין לו מקבילה בקובץ).
     לפני `.btn-primary`, שגובר עליו. ⚠ .86 לא השתנה ב«כמו אפל» — נשאר כמו שהיה. */
  @supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){#quiz .lg{background:rgba(255,253,248,.86)}}
  /* ביטול ירושה מ-`.lg>*` של LG-SYSTEM: בקובץ הילדים של הזכוכית אינם מורמים מעל שכבות ההארה */
  #quiz .lg>*{z-index:auto}
  #quiz .lg>:not(.lg){position:static}
  #quiz .btn{font-weight:600;font-size:17px;border-radius:14px;padding:0 18px;border:0;cursor:pointer;min-height:52px;letter-spacing:-.01em;transition:transform .12s ease,filter .2s ease}
  #quiz .btn{display:inline-block;align-items:normal;justify-content:normal;gap:normal}   /* ביטול ירושה מ-.btn.lg של LG-SYSTEM */
  @media (hover:hover) and (pointer:fine){#quiz .btn-primary:hover{transform:none}}   /* ביטול ירושה מ-.btn-primary:hover המשותפת · לפני :active */
  #quiz .btn:active{transform:scale(.97)}
  #quiz .btn-primary{color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.25);background:linear-gradient(180deg,rgba(160,58,36,.94),rgba(143,54,32,.96)); /* האדום עצמו לא זז ב«כמו אפל» */
    box-shadow:inset 0 0 12px rgba(255,210,190,.1),inset 0 -8px 16px -12px rgba(0,0,0,.28),0 12px 28px -12px rgba(143,54,32,.6)} /* 20.9 · «כמו אפל»: אותה שפה, בגוון האדום */
  @media (hover:hover) and (pointer:fine){#quiz .btn-primary:hover{filter:brightness(1.06)}}
  #quiz .btn-primary.lg::before{background:radial-gradient(130% 70% at 50% -10%,rgba(255,255,255,.16),rgba(255,255,255,0) 60%),radial-gradient(90% 50% at 50% 115%,rgba(255,200,180,.18),rgba(255,255,255,0) 60%)}
  #quiz .btn-ghost{color:var(--ink)}
  @media (hover:hover) and (pointer:fine){#quiz .btn-ghost:hover{filter:brightness(1.03)}}
  #quiz .hint{display:inline-flex;align-items:center;gap:7px;margin:14px auto 0;background:none;border:1px solid transparent;border-radius:999px;color:var(--ink-soft);font-size:14px;font-weight:500;cursor:pointer;padding:6px 14px 6px 10px;transition:transform .3s var(--ease),scale .3s var(--ease),opacity .3s var(--ease),color .3s var(--ease),background-color .3s var(--ease),border-color .3s var(--ease),box-shadow .3s var(--ease),fill .3s var(--ease),stroke .3s var(--ease),filter .3s var(--ease)}
  #quiz .hint-wrap{text-align:center}
  #quiz .hint svg{width:18px;height:18px;stroke:var(--ink-soft);stroke-width:1.7;fill:none;stroke-linecap:round;stroke-linejoin:round;transition:transform .35s var(--ease),scale .35s var(--ease),opacity .35s var(--ease),color .35s var(--ease),background-color .35s var(--ease),border-color .35s var(--ease),box-shadow .35s var(--ease),fill .35s var(--ease),stroke .35s var(--ease),filter .35s var(--ease)}
  #quiz .hint.on{color:var(--ink)}
  #quiz .hint.on svg{fill:var(--gold);stroke:var(--gold);filter:drop-shadow(0 0 6px rgba(201,150,47,.9))}

  /* feedback */
  #quiz .fb{margin-top:16px;padding:14px 16px;border-radius:12px;font-size:16px;display:flex;gap:10px;align-items:flex-start;background:var(--paper-deep)}
  #quiz .fb.ok{background:rgba(74,124,78,.10)}
  #quiz .fb.ok b{color:var(--ok-deep)}
  #quiz .fb.miss{background:rgba(181,72,46,.09)}
  #quiz .fb.miss b{color:var(--accent-deep)}
  #quiz .fb b{font-family:var(--display);font-weight:700;font-size:18px;white-space:nowrap}
  #quiz .fb.show{animation:land .45s var(--ease)}
  @keyframes land{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
  #quiz .ex{margin-top:10px;padding:10px 12px;border-radius:12px;background:var(--paper-deep);font-size:15px;line-height:1.6}
  #quiz .ex b{font-family:var(--display)}
  /* ⭐ 19.9 · «משפט לדוגמה» · `.exb` של הקובץ (שורות 79-81) על `.lg-reveal` של LG-SYSTEM, בלי עותק
     שני שלו. `.lg-reveal` נותן את הרקע והמסגרת האפסיים, הריפוד, הדיו, המשקל, הקו הזהב והחץ שמסתובב.
     ⚠ ארבעת הערכים כאן הם של הקובץ, ו-`.lg-reveal` אינו נותן אותם: שורה משלו באמצע (display ו-margin),
     15px ולא .92rem, ו«ביטול ירושה» של line-height: `font:inherit` של `.lg-reveal` מוריש 1.55 מ-#quiz,
     ובקובץ הכפתור נשאר על normal של הדפדפן. נמדד בכרום ב-375 מול #exb (design-parity, הזוגות ex*). */
  #quiz .exb{display:block;margin:12px auto 0;font-size:15px;line-height:normal}
  #quiz .next{width:100%;margin-top:14px;display:inline-flex;align-items:center;justify-content:center;gap:10px}
  #quiz .arr{width:34px;height:34px;border-radius:50%;display:inline-grid;place-items:center;flex:none;transition:transform .3s var(--ease)}
  #quiz .arr svg{width:16px;height:16px;stroke:var(--accent);stroke-width:2.2;fill:none;stroke-linecap:round;stroke-linejoin:round}
  #quiz .arr svg{flex:0 1 auto}   /* ביטול ירושה מ-.btn.lg svg של LG-SYSTEM */
  @media (hover:hover) and (pointer:fine){#quiz .next:hover .arr{transform:translateX(-3px)}}
  /* מה שמוצג אחרי מענה ואין לו מקבילה בקובץ (גם:, הפירוש המלא, "מה שכתבת מתאים"): ממורכז,
     כמו שהיה בכרטיס עד היום. «משפט לדוגמה» יושב גם הוא ב-#fbMore, אבל יש לו מקבילה (.exb ו-.ex
     למעלה) ולכן אינו מיושר כאן. ⚠ האסוציאציה (#quiet/#assocBox) ירדה מ-#fbMore ברכיבים 1+6 --
     היא אח סטטי של #fbMore ב-DOM היום, לא ילד שלו, ולכן הכלל הזה כבר לא נוגע בה כלל.
     ⭐ 21.9.2026 · שער העיצוב (practice, אחרי 373e07d): «בעצם ידעתי» (רכיב 5, #knewWrap) קיבל
     מקבילה משלו בקובץ המאושר, ובקובץ אין לו text-align משלו (יורש start מהכרטיס). הכלל הבא
     מוציא אותו מהמירכוז הכללי שמעליו -- בלי הבדל חזותי (הילד היחיד ב-.center ממורכז ממילא
     ב-justify-content), רק בערך המחושב שהשער מודד.
     ⭐ board308 חלק 2: «למילה יש N פירושים» (רכיב 4) עבר לגור בתוך #feedback עצמו (ר' .fb
     .more למעלה) ואינו ילד של #fbMore יותר, ולכן הכלל המקביל שהיה כאן (#fbMore .sense-need
     .more) ירד -- אין יותר על מה שיחול. */
  #fbMore{text-align:center}
  #fbMore .center{text-align:start}

  /* say · bottom */
  #quiz .say{position:absolute;top:16px;inset-inline-end:14px;background:none;border:1px solid var(--line);border-radius:50%;width:34px;height:34px;cursor:pointer;color:var(--ink-soft);font-size:15px}
  #quiz .say{line-height:normal;padding:1px 6px;flex:0 1 auto;transition-duration:0s}   /* ביטול ירושה מ-.say המשותפת: ערכי הדפדפן לכפתור, כמו בקובץ */
  #quiz .say.on{border-color:var(--gold);background:rgba(201,150,47,.12)}   /* בזמן הקראה (TTS.say) · אין לו מקבילה בקובץ */
  #quiz .foot{margin-top:auto;padding-top:26px;font-size:12px;color:var(--ink-soft);text-align:center;letter-spacing:.02em}
  #quiz .foot{margin-bottom:1em}   /* ביטול ירושה: ה-margin של <p> מהדפדפן, שהאיפוס הגלובלי מוחק */
  #quiz .foot b{color:var(--ink);font-weight:500}

  /* ⭐ התאמות שנמדדו כנחוצות (practice-fix 10.9, ונמדדו שוב על המבנה הזה · ביקורת/דוחות/practice-copy.md)
     · הפירוש כשאלה (כיוון פירוש ⟵ מילה): בגודל של המילה הוא הגיע ל-9 שורות ודחף את «בדיקה» מתחת
       למקלדת. q-gloss נקבע ב-renderCard, בגודל ובמרווח השורות שהיו למסך לפני העיצוב (`.q-text`).
       בלי 1.35 השורה הראשונה של הפירוש צמודה לתווית «לסמן לחיזוק» ב-375 (נמדד בפיקסלים, 1.5px).
     · מילה שלא נכנסת לרוחב מוקטנת ב-fitQText (app.js). q-break נדלק רק כשגם בגודל הרצפה מילה אחת
       רחבה מהכרטיס: עדיף שבירה באמצע המילה על גלישה מהמסך. */
  #quiz .word.q-gloss{font-size:clamp(1.4rem,4.6vw,1.9rem);line-height:1.35}
  #quiz .word.q-break{overflow-wrap:anywhere}
  @media (prefers-reduced-motion:reduce){
    #quiz .exit,#quiz .prog i,#quiz .btn,#quiz .hint,#quiz .hint svg,#quiz .arr{transition:none}
    #quiz .btn:active{transform:none}
    #quiz .fb.show{animation:none}
    @media (hover:hover) and (pointer:fine){#quiz .next:hover .arr{transform:none}}
  }

  /* PRACTICE-10.9:END */

  /* ═════════════════════════════════════════════════════════════════════════
     STAR-10.9:START · הכוכב «לסמן לחיזוק» · מהקובץ המאושר · 11.9.2026
     ═════════════════════════════════════════════════════════════════════════
     מקור: מסך-התרגול.html שורות 89-96. ⚠ כפתור עם aria-pressed ולא תיבת סימון בתוך label: זה מתג
     שהמצב שלו נקרא מהרשומה בכל כרטיס (renderCard), וקורא מסך מכריז אם הוא לחוץ. לכן `input:checked~`
     הופך ל-`[aria-pressed="true"]`, ולכפתור נוסף איפוס של סגנון הכפתור של הדפדפן, כדי שהערכים
     המחושבים יהיו של ה-label שבקובץ. */
  #quiz .star{position:absolute;top:14px;inset-inline-start:14px;cursor:pointer;user-select:none;text-align:center}
  #quiz .star{margin:0;padding:0;border:0;background:none;color:inherit;font:inherit;-webkit-user-select:none}   /* כפתור ולא label */
  #quiz .star svg{width:30px;height:30px;fill:none;stroke:var(--ink-soft);stroke-width:1.6;transition:transform .3s,scale .3s,opacity .3s,color .3s,background-color .3s,border-color .3s,box-shadow .3s,fill .3s,stroke .3s,filter .3s;display:block;margin:0 auto}
  @media (hover:hover) and (pointer:fine){#quiz .star:hover svg{transform:scale(1.1)}}
  #quiz .star[aria-pressed="true"] svg{fill:var(--gold);stroke:var(--gold)}
  #quiz .star .lbl{display:block;font-size:11px;color:var(--ink-soft);margin-top:1px}
  #quiz .star[aria-pressed="true"] .lbl{color:var(--ink)}
  /* ⭐ התאמה שנמדדה: התווית «לסמן לחיזוק» (שער הלקסיקון, tests/47) רחבה בערך פי שניים מ«לחיזוק»
     שבקובץ, ובלי מרווח היא נוגעת בשורת ההוראה. השורה שומרת 50px מעמודת הכוכב משני הצדדים, ולכן
     נשארת ממורכזת, והרמקול בפינה השנייה לא נוגע בה. מתחת לכ-357px היא נשברת לשתי שורות מאוזנות. */
  #quiz .kind{padding-inline:50px;text-wrap:balance}
  @media (prefers-reduced-motion:reduce){
    #quiz .star svg{transition:none}
    @media (hover:hover) and (pointer:fine){#quiz .star:hover svg{transform:none}}
  }

  /* STAR-10.9:END */

  /* ═════════════════════════════════════════════════════════════════════════
     INTRO-19.9:START · מסך הכניסה · סבב 9 של הקובץ המאושר · 19.9.2026
     ═════════════════════════════════════════════════════════════════════════
     מקור: ביקורת/עיצוב-9.9/מסך-הכניסה.html (סבב 9, «פיקס» 10.9 16:30 בפנקס ההחלטות). מה שסבב 9 שינה
     במסך נכנס כאן בערכים של הקובץ: הכותרת עם שני שמות המבחנים, השורה שמעליה והתיאור, שלושת כרטיסי
     הזכוכית, שדה התשובה בלי קצה כהה, והפוטר בלי קווים. כל ערך נמדד בכרום ב-375 מול הקובץ
     (scripts/design-parity, הרשומה intro).

     ⛔ איך זה לא נוגע במסך אחר: כל כלל נעול תחת #intro, והמחלקות המשותפות (`.w-title` ,`.kicker`,
     `.acc-legal` ,`.lg-field` ,`.lg`) לא השתנו. מה שנוסף מעבר לקובץ מסומן ⚠ ליד הכלל שלו.
     ⭐ כתום על טקסט: רק שני שמות המבחנים בכותרת, החריג המאושר היחיד (DNA-עיצוב.md, כלל 7). נמדד
     מפיקסלים בכרום (ביקורת/דוחות/wave-a.md): 4.75:1 על נייר נקי, כמו בקובץ. מתחת להילה של המסך הזה
     (#intro::before, בשיא ההנפשה) הפיקסל הכהה ביותר נותן 4.23:1, כמו «שנשאר איתך» הכתום שהיה כאן
     לפני (4.26:1). הכותרת 40px במשקל 700, טקסט גדול, והסף שלו ב-AA הוא 3:1. */
  #intro{
    --line-strong:#888276;
    --display:"Frank Ruhl Libre","David Libre","Times New Roman",serif;
    --body:"Heebo","Arial Hebrew",Arial,sans-serif}
  /* ⭐ 21.9.2026 · board308 חלק 3: ‏.wrap הכללי נושא padding-top:22px (שורה 95 בערך), וכאן
     הוא מצטבר מעל ה-padding-top:22px של #intro .kicker עצמה (שורה למטה) -- 44px במקום 22,
     בדיוק פער ה-22px שנמדד (הלוגו ב-y≈60 במקום 38). בקובץ המאושר ה-.wrap שלו מתחיל מ-0
     למעלה (padding:0 22px 72px) ומסתמך רק על ריפוד ה-header/kicker; ‏#home ו-#quiz כבר
     מאפסים את זה כל אחד אצלו מאותה סיבה בדיוק. */
  .wrap:has(>#intro:not(.hidden)){padding-top:0}
  /* ⭐ 21.9.2026 · board308 חלק 1: הקובץ המאושר (מסך-הכניסה.html, שורות 14-15) מצייר על ה-body
     חמש הילות רקע קבועות, בדיוק כמו הבית והנעילה (זהב בפינה הימנית העליונה, אדום משמאל) —
     ולכאן, למסך הכניסה, הן לא הועתקו מעולם: אין אפילו כלל אחד. מזהב עד ה-line-height (1.6,
     ולא 1.55 של הבית/הנעילה) — מילה במילה מהקובץ. רק כשהכניסה פתוחה, כי ה-body משותף. */
  body:has(#intro:not(.hidden)){
    font-family:"Heebo","Arial Hebrew",Arial,sans-serif;font-size:17px;line-height:1.6;
    background-image:radial-gradient(340px 300px at 88% 40px,rgba(201,150,47,.30),transparent 70%),radial-gradient(320px 320px at 4% 420px,rgba(181,72,46,.22),transparent 70%),radial-gradient(340px 320px at 96% 800px,rgba(201,150,47,.24),transparent 70%),radial-gradient(320px 320px at 6% 1180px,rgba(181,72,46,.18),transparent 70%),radial-gradient(340px 320px at 94% 1560px,rgba(201,150,47,.22),transparent 70%);
    background-repeat:no-repeat}
  /* הפוקוס של הקובץ, בזהב הכהה של שאר האפליקציה. ⚠ בלי ה-border-radius:6px שלו על כל רכיב: בקובץ כל
     כפתור ושדה מחזירים לעצמם את הפינה בכלל מאוחר יותר, וכאן הכלל של #intro היה גובר עליהם. */
  #intro :focus-visible{outline:3px solid #a17826;outline-offset:3px}
  #intro a:focus-visible{border-radius:6px}

  /* הכותרת, השורה שמעליה והתיאור · מיושרים לתחילת השורה, כמו בקובץ */
  #intro .welcome-head{text-align:start;margin-bottom:0}
  /* ⭐ 20.9.2026 · שער העיצוב גרסה 2 (מצאי רכיבים, לא רק pairs נבחרים) מדד ש-.kicker לא נתן
     ל-«800+» את השורה העליונה שלו עם הקו מתחתיה, כמו בקובץ (header.bar + .brand). הקו והגופן
     נוספים מילה במילה מהקובץ. .kicker שומר את השם שלו (tests/131:319 בודק
     את המחרוזת `class="kicker"` במסך). */
  /* wave-d, 20.9: topBar קיבל זוג ב-screens.json (approved=header.bar, app=#intro .kicker).
     header.bar בקובץ אין לו טיפוגרפיה משלו, הוא יורש מ-body -- שש התכונות למטה הן בדיוק
     הערך המורש הזה, מילה במילה, בלי לגעת ב-.kicker הכללי (שורה 113) שמשרת מסכים אחרים. */
  #intro .kicker{padding:22px 0 10px;margin:0;border-bottom:1px solid var(--line);
    font-family:var(--body);font-size:17px;font-weight:400;line-height:1.6;color:var(--ink);letter-spacing:normal}
  /* ⚠ .kicker הכללי (שורה 113) צובע זהב #76560f (היה #8a6512 עד 2.10) לתווית קטנה באותיות גדולות — נכון לתוויות
     כמו «יחידה 4», לא לסימן המותג. .brand דורס במפורש.
     ⭐ 21.9.2026 · חגי אישר במפורש (בריף השבעה) שהלוגו «800+» בכניסה ובנעילה חוזר לכתום
     כמו בקובץ המאושר (color:var(--accent) · מסך-הכניסה.html, .brand). זה מבטל את ההכרעה
     הקודמת שהחזיקה אותו בדיו כדי לעבור את tests/131 — הבדיקה עצמה עודכנה (מותרים + נעילת
     צבע) כחלק מהמשימה הזאת. ניגודיות נמדדה בפועל, נוסחת WCAG על #b5482e/#f6f1e7: 4.745:1 —
     מעל 3:1 (טקסט גדול, 22px/700) וגם מעל 4.5:1 (טקסט רגיל). */
  #intro .kicker .brand{font-family:var(--display);font-weight:700;font-size:22px;letter-spacing:.04em;color:var(--accent);text-transform:none}
  #intro .in-eyebrow{font-family:var(--body);font-size:12px;letter-spacing:.22em;color:var(--ink-soft);margin:0 0 14px;font-weight:500;line-height:1.6}
  #intro .w-title{font-family:var(--display);font-weight:700;font-size:clamp(40px,9.5vw,58px);line-height:1.08;margin:0 0 18px;text-wrap:balance;letter-spacing:-.005em}
  #intro .w-title em{font-style:normal;color:var(--accent)}
  #intro .w-title .nw{white-space:nowrap}
  #intro .in-lede{font-family:var(--body);font-size:18px;color:var(--ink-soft);margin:0 0 26px;max-width:34ch;font-weight:400;line-height:1.6}

  /* שדה התשובה בכרטיס החי · `.inp` של הקובץ: קו #888276 מכל הצדדים, בלי הקצה הכהה של `.lg-field`.
     ⚠ ה-placeholder נשאר בדיו הרך של `.lg-field` (5.3:1 על הנייר). בקובץ הוא האפור של הדפדפן, כ-2.3:1. */
  #intro .lg-field{font-family:var(--body);font-size:19px;line-height:1.6;padding:12px 14px;border-radius:12px;border:1px solid var(--line-strong);background:var(--paper);color:var(--ink);min-height:50px}
  #intro .lg-field:focus{border-color:#a17826;outline:none;box-shadow:0 0 0 3px rgba(161,120,38,.25)}

  /* שלושת הכרטיסים · `.claims` ו-`.claim.lg` של הקובץ. כל כרטיס זגוגית בפני עצמו, `.lg` מהמערכת */
  #intro .in-claims{font-family:var(--body);font-size:17px;line-height:1.6;margin-top:56px;display:grid;gap:16px}
  #intro .in-claim{padding:22px 20px 20px;border-radius:var(--lg-r-card);text-align:start}
  /* ⚠ ביטול ירושה: בקובץ הכניסה אין את מסנן שבירת האור (#lens), ולכן הזכוכית שם היא טשטוש בלבד */
  #intro .in-claim.lg{backdrop-filter:blur(9px) saturate(200%) brightness(1.08);-webkit-backdrop-filter:blur(9px) saturate(200%) brightness(1.08)} /* 20.9 · גרסה ב */
  #intro .in-claim.lg::before{background:radial-gradient(130% 70% at 50% -10%,rgba(255,255,255,.6),rgba(255,255,255,0) 60%)}
  #intro .in-claim h2{font-family:var(--display);font-weight:700;font-size:27px;margin:0 0 8px;line-height:1.2}
  #intro .in-claim p{margin:0;color:var(--ink-soft);max-width:38ch}
  @media (min-width:720px){#intro .in-claims{grid-template-columns:1fr 1fr 1fr;gap:28px}}

  /* הפוטר · `.foot` של הקובץ: שורה אחת ממורכזת, בלי קו מעליה ובלי קו מתחת לקישורים */
  #intro .in-legal{font-family:var(--body);line-height:1.6;margin-top:56px;padding-top:18px;font-size:13px;color:var(--ink-soft);display:flex;flex-wrap:wrap;gap:8px 20px;letter-spacing:.02em;justify-content:center;text-align:center}
  #intro .in-legal a{text-decoration:none}
  /* INTRO-19.9:END */

  /* ═════════════════════════════════════════════════════════════════════════
     INTRO-WAVED-20.9:START · מסך הכניסה · שאר פערי שער העיצוב גרסה 2 · wave-d · 20.9.2026
     ═════════════════════════════════════════════════════════════════════════
     מקור: ביקורת/עיצוב-9.9/מסך-הכניסה.html. אחרי INTRO-19.9:END. כל כלל נעול תחת #intro /
     #introTry / #introAuth / #introDemo* / #introDemoCheck / #introDemoSkip · לא נוגע ב-.lg,
     .lg-card, .btn.lg, .lg-fill עצמם (המערכת המשותפת לכל מסך), רק בערכים הממוחשבים של
     האלמנטים הספציפיים האלה במסך הזה.

     ⭐ סעיף 1 הישן (color של סימן המותג) נסגר 21.9.2026 · חגי אישר במפורש שהלוגו חוזר
     לכתום כמו בקובץ (ר' ההערה ליד #intro .kicker .brand למעלה, כולל מדידת הניגודיות
     והעדכון התואם ב-tests/131).
     ⭐ סעיף 2 הישן (topBar) נסגר · הזוג נוסף ב-screens.json (approved=header.bar,
     app=#intro .kicker, intro.states.js attest1) ו-#intro .kicker למעלה מחזיר את שש
     התכונות שהיו חסרות. גם ctaPrimary/ctaSecondary/demoCheckBtn/demoSkipBtn עודכנו
     כאן מהזכוכית הישנה ל«כמו אפל» (ר' ההערות ליד כל כלל למטה) -- שרידי הגרסה הקודמת
     של wave-d, שנכתבה לפני שהזכוכית עברה גרסה באותו יום.
     ⭐ 20.9 · פער שלישי שהיה כאן (backdrop-filter על שני כפתורי הכרטיס, url(#lens) בכרום מול
     blur בקובץ) נסגר מעצמו: ענף ה-#lens ירד מכל האתר, ושני הכפתורים מקבלים עכשיו את אותו
     טשטוש רגיל כמו הקובץ, בלי חריג. */

  /* לוגו 800+ למעלה · חסר רק line-height (35.2px = 22px×1.6, כמו body של הקובץ) */
  #intro .kicker .brand{line-height:1.6}

  /* כפתור «התחל בלי הרשמה» · מקבל lg מה-HTML (btn-primary lg כמו בקובץ). font-size/padding-inline
     חוזרים לערכי הקובץ (.btn.lg נותן 1rem/18px, לא 17px/22px) · gap מאופס כי לילד יחיד (span)
     אין מה לרווח · box-shadow חוזר לשלוש השכבות של .btn-primary בקובץ (ר' עדכון wave-d מתחת). */
  #introTry{font-family:var(--body);font-size:17px;padding-inline:22px;gap:normal;
    box-shadow:inset 0 0 12px rgba(255,210,190,.1),inset 0 -8px 16px -12px rgba(0,0,0,.28),0 12px 28px -12px rgba(143,54,32,.6)}
  /* wave-d, 20.9: box-shadow למעלה עודכן משש השכבות הישנות לגרסת «כמו אפל» (06afe47), אותו
     ערך מדויק כמו .btn-primary בקובץ ובכל מסך אחר. ⚠ שיניים לא נשארות: #introTry נושא גם
     animation:breathe (למעלה בקובץ הזה) שמחליף את ה-box-shadow בזמן ריצה בין שני מצבי פעימה
     (rgba(181,72,46,.55/.8), בלי שכבות ה-inset) -- שער העיצוב תמיד יתפוס כאן פער כלשהו כי
     האפליקציה פועמת ואין בקובץ המאושר שום אנימציה על הכפתור. הפעימה היא תוספת מכוונת (יש לה
     חריגת prefers-reduced-motion משלה), לא זכוכית ישנה שנשכחה -- אינה מטופלת כאן. */

  /* כפתור «יש לי חשבון» · כפתור הזהב שמתמלא (`.lg-fill`, רכיב 1 בערכת הרכיבים המאושרת).
     ⭐ הכרעת חגי 29.9.2026 19:15 ושוב 30.9: «כפתור 'יש לי חשבון' במסך הפתיחה מתמלא בזהב
     (כמו בערכת הרכיבים)». זה מחליף את ההערה הקודמת כאן (קובץ מסך הכניסה, btn-ghost, גבר על
     הערכה והמילוי כובה עם `::before{content:none}`): המילוי דלוק. המראה כולו מגיע מ-`.lg-fill`
     (גבול זהב, גלולה, מילוי שיוצא מהמרכז ב-hover/active). כאן רק גופן וגובה זהים ל-#introTry
     שלידו: min-height:52px כי `.lg-fill` נותנת 44px והשניים יושבים באותה שורה. */
  #introAuth{font-family:var(--body);font-size:17px;line-height:normal;min-height:52px}

  /* כרטיס התרגול החי, המעטפת · בקובץ זה כרטיס נייר (`.demo`), לא זכוכית · lg/lg-card נשארים
     ב-HTML (tests/131 דורש אותם), והחריגה כאן הופכת אותם לנייר בפועל: רקע קרם אטום, מסגרת
     דקה, צל עדין וללא backdrop-filter · ::before/::after (שכבות האור/ההארה של .lg) מבוטלות
     כדי שלא יצוירו מעל הנייר. text-align חוזר ל-start (בקובץ, לא ממורכז כמו lg-card), וכל
     ילד שבקובץ *כן* ממורכז (המילה, «מה הפירוש?», שדה התשובה) מקבל text-align:center נפרד. */
  #introDemo{font-family:var(--body);font-size:17px;line-height:1.6;text-align:start;
    background:var(--card);border:1px solid var(--line);border-radius:16px;
    margin:40px 0 8px;padding:24px 22px 20px;
    box-shadow:0 1px 0 rgba(255,255,255,.7) inset,0 24px 48px -36px rgba(44,38,32,.35);
    outline:1px solid var(--card);outline-offset:-5px;
    backdrop-filter:none;-webkit-backdrop-filter:none}
  #introDemo::before,#introDemo::after{content:none}

  #introDemo .in-demo-head{font-family:var(--body);font-size:12px;line-height:19.2px;padding-bottom:12px;letter-spacing:1.92px}
  #introDemo .in-demo-prog{margin-top:14px}
  #introDemo .in-demo-kind{font-family:var(--body);font-size:14px;line-height:22.4px;margin-top:22px;letter-spacing:.56px;text-align:center}
  #introDemo .in-demo-word{font-family:var(--display);margin:6px 0 18px;text-align:center}
  #introDemo .lg-field{text-align:center}

  /* כפתורי הכרטיס · font-size/padding-inline/gap כמו למעלה. «בדיקה» מקבל גם את תיקון
     ה-box-shadow (כמו introTry, אותה סיבה בדיוק, ר' עדכון wave-d מתחת) · אין כאן תיקון
     ל-backdrop-filter · הוא קטן ובלתי-נראה בפועל, ותיקון שלו רק כאן פוגע בעקביות מול
     .lg-field ומול ה-lg-card שעל אותו כרטיס בדיוק, ששניהם משתמשים בשבירת האור האמיתית של הכרום. */
  #introDemoCheck{font-family:var(--body);font-size:17px;padding-inline:22px;gap:normal;
    box-shadow:inset 0 0 12px rgba(255,210,190,.1),inset 0 -8px 16px -12px rgba(0,0,0,.28),0 12px 28px -12px rgba(143,54,32,.6)}
  /* wave-d, 20.9: box-shadow עודכן לגרסת «כמו אפל», אותה סיבה בדיוק כמו #introTry למעלה --
     כרטיס התרגול החי אין לו animation:breathe, ולכן כאן הפער נסגר לגמרי, בלי שן שנשארת. */
  #introDemoSkip{font-family:var(--body);font-size:17px;padding-inline:22px;gap:normal;background:rgba(255,255,255,.05)}
  /* wave-d, 20.9: background נוסף -- בלעדיו הכפתור יורש .btn-ghost.lg{background:rgba(255,255,255,.16)}
     (LG-SYSTEM, המשותפת -- .16 הוא ברירת המחדל הנכונה שם, tests/147 §6 נועל אותה) · קובץ מסך
     הכניסה מבקש .05 לכפתור הזה כמו כל .btn-ghost אחר בו, בלי דריסה משלו -- אותו דפוס כמו
     #introAuth למעלה ו-#quiz .btn-ghost (PRACTICE-10.9). */

  /* ⭐ 21.9.2026 · בריף השבעה, רכיב 3: «פתח חשבון» יורד מ-.in-two ועובר לכדור זכוכית מתחת
     לשני הכפתורים, כמו בקובץ המאושר (.under + .pill#openAccount). .pill עצמו מהערכה
     המשותפת (PILL-KIT למעלה) -- כאן רק המיכל ושורת ה-.fine, מילה במילה מהקובץ. */
  #intro .under{display:flex;margin-top:12px}
  #intro .fine{font-family:var(--body);font-size:13px;color:var(--ink-soft);margin:12px 0 0;max-width:34ch;line-height:1.6}
  /* INTRO-WAVED-20.9:END */

  /* ═════════════════════════════════════════════════════════════════════════
     HOME-21.9:START · הבית המאוחד · העתקה של הקובץ המאושר · 21.9.2026
     ═════════════════════════════════════════════════════════════════════════
     מקור: ביקורת/עיצוב-9.9/מסך-הבית.html («פיקס» של חגי על סבב 3, 21.9.2026). מחליף את הבלוק
     שהיה כאן (HOME-19.9, «פיקס» 9.9 13:05 סבב 4): המתג חוזר לרדיו+label של הקובץ (במקום כפתורים
     עם role=tab), הרצף עובר למלבן רחב עם האש (`.streakw`), ושתי היחידות/השורות/מילות-הקישור/השלמת-
     המשפטים עוברות לריבועי קטגוריה (`.cats`/`.cat`) שפותחים פאנל (`.panel`) בלחיצה. ה-CSS נכנס מילה
     במילה ובאותם שמות מחלקות שבקובץ, פרט ל-`.seg`→`.lseg` (התנגשות עם `.seg` המשותפת בתוך #home,
     ראו למטה). כל ערך נמדד בכרום ב-375 מול הקובץ (scripts/design-parity, הרשומה home -- מאמת נפרד
     ירשום את הרכיבים החדשים).

     ⛔ איך זה לא נוגע במסך אחר: כל כלל נעול תחת #home, או תחת ה-body כשהבית פתוח (:has). המחלקות
     המשותפות (`.tile` ,`.grid` ,`.wcard` ,`.reveal` ,`.brand` ,`.btn` ,`.lg`) לא השתנו.
     ⚠ מה שנוסף מעבר לקובץ מסומן ⚠ ליד הכלל שלו. «ביטול ירושה» = כלל משותף של האפליקציה מצהיר על
       מאפיין שהקובץ אינו מצהיר, והערך שנכתב הוא מה שהקובץ מקבל בפועל (נמדד בכרום).
     ⚠ ובכוונה שונה מהקובץ: הילדים של הזכוכית מעל שכבות ההארה (`.lg>*` של LG-SYSTEM, כמו בקובץ
       החשבון). בקובץ הבית הכלל חסר, והברק הלבן עובר מעל הטקסט · ניגודיות נמוכה יותר בלי סיבה. */

  /* :root וה-body של הקובץ. ⚠ --paper-deep של הקובץ שונה מה-:root של האפליקציה, ואין בבית טקסט עליו. */
  #home{
    --paper:#f6f1e7; --paper-deep:#efe8da; --card:#fffdf8; --ink:#2c2620; --ink-soft:#5e564a;
    --gold:#c9962f; --gold-soft:#f1e3bf; --accent:#b5482e; --accent-deep:#8f3620; --line:#e3d8c4; --ok:#437147;
    --display:"Frank Ruhl Libre","David Libre",serif; --body:"Heebo","Arial Hebrew",Arial,sans-serif; --ease:cubic-bezier(.23,1,.32,1);
    color:var(--ink);font-family:var(--body);font-size:17px;line-height:1.55}
  /* הבמה · שתי ההילות של הקובץ (.18 ו-.14 · הבית, החשבון והטעינה חזקים יותר משאר המסכים, DNA §2),
     רק כשהבית פתוח, כי ה-body משותף. דפדפן בלי :has() נשאר עם הנייר השטוח. */
  body:has(#home:not(.hidden)){
    font-family:"Heebo","Arial Hebrew",Arial,sans-serif;font-size:17px;line-height:1.55;
    background-image:radial-gradient(340px 300px at 88% 40px,rgba(201,150,47,.30),transparent 70%),radial-gradient(320px 320px at 4% 420px,rgba(181,72,46,.22),transparent 70%),radial-gradient(340px 320px at 96% 800px,rgba(201,150,47,.24),transparent 70%),radial-gradient(320px 320px at 6% 1180px,rgba(181,72,46,.18),transparent 70%),radial-gradient(340px 320px at 94% 1560px,rgba(201,150,47,.22),transparent 70%);
    background-repeat:no-repeat}
  /* ‏.wrap של הקובץ · ⚠ ה-.wrap של האפליקציה משותף, ולכן רק כשהבית פתוח */
  .wrap:has(>#home:not(.hidden)){max-width:520px;margin:0 auto;padding:0 18px 64px}
  body.ios-web .wrap:has(>#home:not(.hidden)){padding-bottom:calc(64px + 68px)}
  #home button{font-family:var(--body)}
  /* הפוקוס של הקובץ, בזהב הכהה. ⚠ בלי ה-border-radius:6px שלו, כמו ב-#intro: כאן הוא היה גובר על
     הפינות של רכיבי המערכת שאינם בבלוק הזה (lg-row, ✕) */
  #home :focus-visible{outline:3px solid #a17826;outline-offset:3px}
  #home a:focus-visible{border-radius:6px}
  #home .ltr{direction:ltr;unicode-bidi:isolate}

  /* liquid glass · שלוש השכבות של LG-SYSTEM כמו שהן. ⚠ ביטול ירושה: בקובץ הבית אין את מסנן שבירת
     האור (#lens), ולכן הזכוכית כאן היא טשטוש בלבד */
  #home .lg{backdrop-filter:blur(9px) saturate(200%) brightness(1.08);-webkit-backdrop-filter:blur(9px) saturate(200%) brightness(1.08)} /* 20.9 · גרסה ב */
  #home .btn{font-weight:600;font-size:16px;border-radius:14px;padding:0 18px;border:0;cursor:pointer;min-height:50px;letter-spacing:-.01em;transition:transform .12s ease,filter .2s ease;color:var(--ink)}
  #home .btn{display:inline-block;gap:normal}   /* ביטול ירושה מ-.btn.lg של LG-SYSTEM */
  @media (hover:hover) and (pointer:fine){#home .btn-primary:hover{transform:none}}   /* ביטול ירושה מ-.btn-primary:hover המשותפת · לפני :active */
  #home .btn:active{transform:scale(.97)}
  #home .btn>*{position:relative;z-index:1}
  #home .btn-primary{color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.25);background:linear-gradient(180deg,rgba(160,58,36,.94),rgba(143,54,32,.96));
    box-shadow:inset 0 0 12px rgba(255,210,190,.1),inset 0 -8px 16px -12px rgba(0,0,0,.28),0 12px 28px -12px rgba(143,54,32,.6)}
  #home .btn-primary.lg::before{background:radial-gradient(130% 70% at 50% -10%,rgba(255,255,255,.16),rgba(255,255,255,0) 60%)}

  /* top */
  #home .top{display:flex;align-items:center;justify-content:space-between;padding:16px 0 6px}
  #home .brand{font-family:var(--display);font-weight:700;font-size:20px;color:var(--accent)}
  #home .avatar{height:38px;padding:0 14px;border-radius:12px;display:grid;place-items:center;font-weight:600;font-size:14px;border:0;cursor:pointer;color:#fff;background:linear-gradient(180deg,rgba(160,58,36,.94),rgba(143,54,32,.96))!important}
  /* ⚠ תוספת: «בקרה» לאדמין בלבד יושב ליד הכפתור עם השם (בקובץ אין אדמין) */
  #home .top-acts{display:flex;align-items:center;gap:8px}
  /* ⭐ 2.10.2026 · screens-fix · שם ארוך נחתך נקי בתוך הכפתור (בלי «…» ובלי גלישה מהשורה) */
  #home .avatar #userBadge{display:block;max-width:9.5em;overflow:hidden;white-space:nowrap;text-overflow:clip}
  #home .top-acts{min-width:0}
  #home .hello{margin:18px 0 0}
  #home .hello .k{font-size:12px;letter-spacing:.2em;color:var(--ink-soft);font-weight:500;margin:0 0 6px}
  #home .hello h1{font-family:var(--display);font-weight:700;font-size:34px;margin:0;line-height:1.1}
  /* ⭐ 2.10.2026 · screens-fix · שם ארוך בלי רווחים שבר את רוחב הדף (441px במסך של 390) והרקע נגמר לפני הקצה */
  #home .hello h1{overflow-wrap:anywhere;min-width:0;max-width:100%}
  #home .hello h1 em{font-style:normal;color:var(--ink)}
  #home .hello p{margin:6px 0 0;color:var(--ink-soft);font-size:15px}

  /* language segment · two entrances · 21.9 «פיקס» סבב 3: חזרה לרדיו+label של הקובץ המאושר עצמו
     (`.seg` שם), בשם `.lseg` כדי לא להתנגש עם `.seg` המשותפת (examAskOpts ואחרות בתוך #home, שאינה
     בנויה מ-thumb/input). כל ערך זהה למקור, כולל הידית האדומה. */
  #home .lseg{display:flex;padding:3px;border-radius:14px;margin:18px 0 0;position:relative;background:rgba(44,38,32,.07);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:inset 0 0 0 1px rgba(255,255,255,.35)}
  /* ⚠ opacity:0 ולא display:none · הקלט חייב להיות ממוקם וגלוי-למקלדת כדי לקבל פוקוס וטאב (הכרעת הבריף) */
  #home .lseg input{position:absolute;opacity:0;pointer-events:none}
  /* ⭐ 8.10 · צבע התווית מתחלף בנקודה אחת, בדיוק כשקצה הידית עובר את מרכז התווית, ולא נמרח על 250ms.
     הידית גולשת .55s ב-cubic-bezier(.22,.61,.36,1) וחוצה חצי מרחק אחרי כ-110ms; התווית (וה-small שבתוכה,
     שבעבר החליף צבע מיד וללא מעבר) מחליפה צבע באותו רגע: delay .11s ומשך 0, כך שבשום דגימה אין טקסט
     לבן על המסילה הבהירה או דיו כהה על הידית האדומה. ⛔ אם משך הידית או העקומה משתנים, ה-delay חייב להשתנות איתם. */
  #home .lseg label{flex:1;cursor:pointer;user-select:none;height:44px;display:flex;align-items:center;justify-content:center;gap:8px;border-radius:11px;color:var(--ink);font-weight:600;font-size:16px;transition:color 0s linear .11s;position:relative;z-index:1}
  #home .lseg label small{font-weight:400;font-size:12px;color:var(--ink);transition:color 0s linear .11s}   /* ניגודיות: הדיו הרך על המסילה, כמו הקובץ */
  #home .lseg input:checked+label,#home .lseg input:checked+label small{color:#fff}
  #home .lseg input:focus-visible+label{outline:3px solid #a17826;outline-offset:2px}
  #home .lseg .thumb{position:absolute;top:3px;bottom:3px;inset-inline-start:3px;width:calc(50% - 3px);border-radius:11px;background:linear-gradient(180deg,rgba(160,58,36,.94),rgba(143,54,32,.96));box-shadow:inset 0 0 0 1px rgba(255,255,255,.3),0 6px 14px -6px rgba(143,54,32,.6);transition:transform .55s cubic-bezier(.22,.61,.36,1);z-index:0}
  #home .lseg.en .thumb{transform:translateX(-100%)}

  /* streak · 21.9 «פיקס» סבב 3: מלבן רחב עם האש, מחליף את .row2 (שני אריחים) */
  #home .streakw{display:flex;align-items:center;gap:16px;border-radius:16px;padding:16px 18px;margin:18px 0 0}
  #home .streakw .flame{width:56px;height:56px;flex:none;filter:drop-shadow(0 3px 6px rgba(181,72,46,.35))}
  #home .streakw .tx{flex:1;min-width:0}
  #home .streakw .top2{display:flex;align-items:baseline;gap:10px}
  #home .streakw .n{font-family:var(--display);font-weight:700;font-size:44px;line-height:1;color:var(--accent)}
  #home .streakw .l{font-size:17px;font-weight:600}
  #home .week{display:flex;gap:5px;margin-top:10px}
  #home .week i{flex:1;height:6px;border-radius:3px;background:rgba(44,38,32,.12);overflow:hidden}
  #home .week i.on::before{content:"";display:block;height:100%;border-radius:3px;background:linear-gradient(270deg,#c9962f,#b5482e);transform-origin:right;animation:homeFill .5s var(--ease) backwards}
  #home .week i:nth-child(2)::before{animation-delay:.12s}
  #home .week i:nth-child(3)::before{animation-delay:.24s}
  #home .week i:nth-child(4)::before{animation-delay:.36s}
  /* ⭐ מושן: fill לפסים ו-rise לפאנל (בהמשך הבלוק), keyframes בלבד, ⛔ וכבויים ב-prefers-reduced-motion
     (למטה). שמות ייחודיים (home-) כדי לא לדרוס @keyframes rise הגלובלי (style.css, שורה 528) שבו
     משתמשים מסכים אחרים -- @keyframes fill לא היה קיים קודם. */
  @keyframes homeFill{from{transform:scaleX(0)}}
  @keyframes homeRise{from{opacity:0;transform:translateY(6px)}}

  #home .wcard{margin:12px 0 0;border-radius:16px;padding:18px 18px 16px;text-align:center}
  /* ביטול ירושה מ-.wcard המשותפת (כרטיס המילה של 21.8): טור flex, גובה מינימלי, מסגרת ורוחב */
  #home .wcard{display:block;gap:normal;min-height:0;max-width:none;border:0}
  #home .wcard .k{font-size:13px;letter-spacing:.04em;color:var(--ink-soft);font-weight:500;margin:0 0 6px}
  /* ⭐ 28.9 · ביקורת/עיצוב-9.9/השלמות.html #18: .wc-word עוטפת את המילה ואת הרמקול (flex,
     כמו .wcard .w בקובץ) כדי שהרמקול יישב צמוד למילה משמאלה, לא בפינה מוחלטת של הכרטיס.
     ⚠ margin-bottom נשאר על .t עצמה, לא על .wc-word: הזוג wcT (screens.json:home, 0 פערים)
     נועל את המרווח על #wcTerm עצמו -- כצאצא flex הוא עדיין מגדיל את גובה .wc-word באותה
     מידה, כי מרווח על צאצא flex נכלל בגובה השורה. */
  #home .wcard .wc-word{display:flex;align-items:center;justify-content:center;gap:12px}
  #home .wcard .t{font-family:var(--display);font-weight:700;font-size:40px;line-height:1.1;margin:0 0 10px}
  /* «גלה את הפירוש» · כפתור זכוכית שקוף בגובה ובגודל של שני הכפתורים שמחליפים אותו (DNA §8.2) */
  #home .wcard .reveal{min-height:46px;font-size:15px;padding:0 22px}
  #home .wcard .reveal{margin-top:0}   /* ביטול ירושה מ-.reveal המשותפת */
  #home .wcard .mean{font-size:17px;margin:8px 0 0}
  #home .wcard .acts{display:flex;gap:10px;margin-top:12px}
  #home .wcard .acts .btn{flex:1;min-height:46px;font-size:15px}
  /* ⭐ ניגודיות: בכרטיס הכפתור הראשי צר, «תרגל מילים שקשות לי» נשבר לשתי שורות, והשורה העליונה יושבת בתוך
     הברק. נמדד מפיקסלים בכרום ב-375: 3.68:1 בקובץ ובאפליקציה. בלי שתי שכבות הברק הלבן, 5.04:1. הקובץ עודכן */
  #home .wcard .acts .btn-primary.lg::before,#home .wcard .acts .btn-primary.lg::after{background:none}
  /* ⚠ תוספת: ✕ (סגירה להיום) אינו בקובץ, ונשאר בפינה (.wc-x, position:absolute למטה).
     הרמקול (אנגלית בלבד) עבר מפינה מוחלטת (עד 27.9) לזרם, צמוד למילה ב-.wc-word שלמעלה --
     ⭐ 28.9 · ביקורת/עיצוב-9.9/השלמות.html #18: בקובץ הרמקול צמוד למילה משמאלה, לא בפינה. */
  /* ⭐ ביקורת/עיצוב-9.9/השלמות.html #18 (אושר 10.9 17:10): הרמקול הופך לאייקון SVG בעיגול
     שקוף, בלי מסגרת/ריפוד/רקע -- כמו הקובץ (.say). מוצמד ל-#home .wcard בלבד: .say
     המשותפת (style.css) משרתת גם #lvSay/#exSay שלא נגעתי בהם. */
  #home .wcard .say{width:40px;height:40px;min-width:44px;min-height:44px;border-radius:50%;flex:none;
    border:0;padding:1px 6px;display:grid;place-items:center;color:#000;
    font-family:"Heebo","Arial Hebrew",Arial,sans-serif;font-size:13.3333px;line-height:normal}
  #home .wcard .say svg{width:19px;height:19px;stroke:var(--accent);stroke-width:2;fill:none;
    stroke-linecap:round;stroke-linejoin:round}
  @media (hover:hover) and (pointer:fine){#home .wcard .say:hover{border-color:transparent;color:inherit}}
  /* ✕ בפינה: `.lg>*` של LG-SYSTEM היה מחזיר אותו לזרם (position:relative) ודוחף את הכרטיס 44px למטה.
     ⚠ ניגודיות: בשקיפות .55 הוא נמדד 2.31:1, מתחת ל-3:1 של רכיב גרפי, ולכן בלי שקיפות */
  #home .wcard .wc-x{position:absolute;opacity:1}

  /* ⭐ 21.9 · ריבועי קטגוריות בשתי הכניסות · כפתורי מעבר (aria-expanded) שפותחים פאנל למטה */
  #home .cats{display:grid;gap:10px;margin:12px 0 0}
  #home .cats.c2{grid-template-columns:1fr 1fr}
  #home .cats.c3{grid-template-columns:repeat(3,1fr)}
  #home .cat{border:0;border-radius:16px;aspect-ratio:1/1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:10px 8px;cursor:pointer;color:var(--ink);font-weight:600;font-size:15px;line-height:1.25;text-align:center;transition:transform .12s ease}
  #home .cat:active{transform:scale(.97)}   /* ⚠ תוספת: אין .cat:active מפורש בקובץ; אותה הבהוב-לחיצה כמו .btn */
  #home .cats.c2 .cat{font-size:18px;gap:14px}
  #home .cat>*{position:relative;z-index:1}
  #home .cat .ic{width:46px;height:46px;border-radius:50%;background:rgba(181,72,46,.12);display:grid;place-items:center;flex:none}
  #home .cats.c2 .cat .ic{width:60px;height:60px}
  #home .cat .ic svg{width:24px;height:24px;stroke:#b5482e;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
  #home .cats.c2 .cat .ic svg{width:30px;height:30px}
  /* הריבוע הוא כפתור מעבר: הנבחר מואר וקצת כהה יותר, והסמל מתמלא */
  #home .cat .ic,#home .cat .ic svg{transition:background-color .3s var(--ease),stroke .3s var(--ease)}
  #home .cat[aria-expanded="true"]{background:rgba(143,54,32,.10);box-shadow:inset 0 0 18px rgba(255,255,255,.45),inset 0 -6px 12px -10px rgba(0,0,0,.12),0 10px 24px -14px rgba(143,54,32,.4)}
  #home .cat[aria-expanded="true"] .ic{background:linear-gradient(180deg,rgba(160,58,36,.94),rgba(143,54,32,.96))}
  #home .cat[aria-expanded="true"] .ic svg{stroke:#fff}
  #home .panel{animation:homeRise .45s var(--ease) backwards}
  #home .cat .tag{font-size:11px;font-weight:500;color:var(--ink);padding:2px 10px;border-radius:999px;background:rgba(44,38,32,.08)}

  /* two big CTAs */
  #home .cta{display:flex;align-items:center;gap:14px;width:100%;text-align:start;border:0;border-radius:16px;padding:14px 16px;margin:12px 0 0;cursor:pointer;color:var(--ink)}
  #home .cta .n{font-family:var(--display);font-weight:700;font-size:30px;min-width:52px;line-height:1;color:var(--accent)}
  #home .cta.hot{background:linear-gradient(180deg,rgba(160,58,36,.94),rgba(143,54,32,.96));color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.2)}
  #home .cta.hot .n,#home .cta.hot .go{color:#fff}
  #home .cta.hot .tx small{color:#fff}   /* ניגודיות: rgba(255,255,255,.8) של הקובץ נמדד 4.35:1, לבן 5.81:1. הקובץ עודכן */
  #home .cta.hot.lg::before{background:radial-gradient(130% 70% at 50% -10%,rgba(255,255,255,.14),rgba(255,255,255,0) 60%)}
  #home .cta .tx{flex:1;font-size:16px;font-weight:600}
  #home .cta .tx small{display:block;font-weight:400;color:var(--ink-soft);font-size:13px;margin-top:2px}
  #home .cta .go{font-size:20px;color:var(--ink-soft)}
  #home .after{margin-top:16px}   /* ⭐ 21.9 · עוטף שלוש השורות מתחת ליחידות, כלשון הקובץ */

  /* ⭐ 21.9.2026 · בריף השבעה, רכיב 8: קבוצת הוואטסאפ יורדת מ-.cta (הכרטיסים הגדולים) ועוברת
     ל-.wa, הזכוכית הירוקה של הקובץ המאושר (מסך-הבית.html) -- כפתור אחד בתחתית הבית, ורק שם.
     ⚠ תוספת: היא נשארת קישור <a> ולא כפתור (עובד גם בלי JS, נפתח ישירות לוואטסאפ), ולכן בלי
     קו תחתון כמו קודם. */
  #home .wa{width:100%;margin-top:12px;display:flex;align-items:center;justify-content:center;gap:10px;min-height:56px;text-align:start;background:rgba(37,211,102,.14);color:#1f6b3a;box-shadow:inset 0 0 14px rgba(255,255,255,.35),0 10px 24px -14px rgba(31,107,58,.45)}
  #home .wa svg{width:22px;height:22px;fill:#1f6b3a;flex:none}
  #home .wa small{display:block;font-size:12px;font-weight:400;color:#1f6b3a}
  #home a.wa{text-decoration:none}

  /* units */
  #home .sec{font-family:var(--display);font-weight:700;font-size:20px;margin:28px 0 10px;display:flex;justify-content:space-between;align-items:baseline;color:var(--ink)}
  #home .csec{font-family:var(--display);font-weight:700;font-size:20px;margin:28px 0 10px;color:var(--ink)}
  #home .sec span{font-family:var(--body);font-weight:400;font-size:13px;color:var(--ink-soft)}
  #home .grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
  #home .unit{border:0;border-radius:14px;padding:14px 14px 12px;text-align:start;cursor:pointer;color:var(--ink)}
  #home .unit b{font-family:var(--display);font-weight:700;font-size:20px;display:block;position:relative;z-index:1}
  #home .unit span{font-size:12px;color:var(--ink-soft);display:block;margin-top:2px;position:relative;z-index:1}
  #home .unit .p{height:4px;border-radius:2px;background:rgba(44,38,32,.12);margin-top:10px;overflow:hidden;position:relative;z-index:1}
  #home .unit .p i{display:block;height:100%;background:var(--pc,var(--accent));transform-origin:right;animation:homeFill 1.1s var(--ease) .4s backwards}
  /* ⭐ 21.9 17:44 · הכרעת חגי (ⓐ): .all (homeAll, "כל המאגר") חוזר עם הכפתור, בלי שינוי מהערך שהיה */
  #home .all{margin-top:10px;width:100%}

  /* ⭐ 21.9 · בחירת אורך ורמות בפאנל השלמת המשפטים, מועתק ממסך-השלמת-משפטים.html (המתג שם
     נקרא .seg, כאן .len כדי לא להתנגש בשם עם המתג המשותף) */
  #home .lenrow{display:flex;align-items:center;justify-content:center;gap:12px;margin:0 0 18px}
  #home .len{position:relative;display:inline-grid;grid-auto-flow:column;grid-auto-columns:1fr;border-radius:999px;padding:4px;isolation:isolate}
  #home .len.lg{background:rgba(255,255,255,.08);backdrop-filter:blur(18px) saturate(190%) brightness(1.05);-webkit-backdrop-filter:blur(18px) saturate(190%) brightness(1.05);box-shadow:inset 0 0 0 1px rgba(255,255,255,.45),inset 1.5px 1.5px 0 -.5px rgba(255,255,255,.9),inset -1px -1px 0 -.5px rgba(0,0,0,.1),0 10px 26px -14px rgba(44,38,32,.3)}
  #home .len.lg::before,#home .len.lg::after{content:none}
  #home .len .knob{position:absolute;top:4px;bottom:4px;inset-inline-start:4px;width:calc(50% - 4px);border-radius:999px;opacity:.9;background:linear-gradient(180deg,rgba(160,58,36,.94),rgba(143,54,32,.96));box-shadow:inset 0 0 0 1px rgba(255,255,255,.38),inset 1.5px 1.5px 0 -.5px rgba(255,255,255,.8),0 6px 14px -6px rgba(143,54,32,.6);transition:transform .55s cubic-bezier(.22,.61,.36,1);z-index:0}
  #home .len[data-on="1"] .knob{transform:translateX(-100%)}
  #home .len button{position:relative;z-index:1;background:none;border:0;padding:8px 18px;border-radius:999px;font-size:15px;font-weight:600;color:var(--ink);cursor:pointer;transition:color .3s;white-space:nowrap;min-height:40px}
  #home .len button.on{color:#fff}
  #home .bands{display:flex;flex-direction:column;gap:10px}
  #home .band{display:grid;grid-template-columns:48px 1fr auto;align-items:center;gap:12px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px 14px;text-align:start;cursor:pointer;color:var(--ink);box-shadow:0 1px 0 rgba(255,255,255,.7) inset,0 12px 28px -24px rgba(44,38,32,.4);transition:transform .2s var(--ease),box-shadow .2s}
  #home .band:active{transform:scale(.97)}
  #home .band .ic{width:48px;height:48px;border-radius:12px;display:grid;place-items:center;background:var(--paper-deep)}
  #home .band .ic svg{width:24px;height:24px;stroke:var(--accent);stroke-width:1.8;fill:none;stroke-linecap:round;stroke-linejoin:round}
  #home .band b{display:block;font-family:var(--display);font-size:19px;font-weight:700}
  #home .band b em{font-style:normal;font-family:var(--body);font-weight:600;font-size:13px;margin-inline-start:8px;vertical-align:2px;color:var(--pc)}
  #home .band span{display:block;font-size:13.5px;color:var(--ink-soft);margin-top:2px}
  #home .band .bar{height:5px;border-radius:3px;background:rgba(44,38,32,.12);overflow:hidden;margin-top:8px}
  #home .band .bar i{display:block;height:100%;border-radius:3px;background:var(--pc);transform-origin:right;animation:homeFill 1.1s var(--ease) .2s backwards}
  #home .band .arr{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;color:var(--accent);background:rgba(181,72,46,.08);box-shadow:inset 0 0 0 1px rgba(255,255,255,.6),inset 1px 1px 0 -.5px rgba(255,255,255,.9),0 4px 10px -6px rgba(181,72,46,.5)}
  #home .band .arr svg{width:18px;height:18px;stroke:currentColor;stroke-width:2.2;fill:none;stroke-linecap:round;stroke-linejoin:round}
  #home .band .ic,#home .band>span{margin-top:0}
  #home .band.done .ic svg{stroke:var(--ok)}

  #home .tools{display:flex;gap:10px;margin-top:24px}
  #home .tools .btn{flex:1;min-height:46px;font-size:15px;font-weight:500}
  #home .legal{margin:26px 0 0;font-size:12px;color:var(--ink-soft);text-align:center}
  #home .legal a{color:inherit;text-decoration:none;border-bottom:1px solid var(--line);margin:0 6px}

  /* ⚠ תוספות: הרכיבים שאין בקובץ ונשארו (ראו ההערה בראש #home ב-index.html) יושבים ברווח של הקובץ */
  #home .trial-bar,#home .rev-note{margin-top:12px}
  /* ⭐ 24.9 · השלמות.html #17: margin-top 0, לא 12px כמו trial-bar/rev-note -- ביטול ירושה מהשורה
     שמעליה בכוונה (עצמה נשארה כמו שהיא, כדי לא לגעת בשני הרכיבים האחרים). */
  #home .exam-pill{margin-top:0}
  /* ⚠ ניגודיות: שורת הטיפ בספירת המבחן בשקיפות .85 נמדדה 3.96:1 על ההילה של הבית. בלי שקיפות עוברת */
  #home .exam-pill .pill-tip{opacity:1}

  @media (prefers-reduced-motion:reduce){
    #home .lseg .thumb,#home .lseg label,#home .lseg label small,#home .btn{transition:none}
    #home .btn:active{transform:none}
    #home .week i.on::before,#home .unit .p i,#home .band .bar i,#home .panel{animation:none}
    #home .len .knob,#home .cat .ic,#home .cat .ic svg{transition:none}
  }
  /* HOME-21.9:END */

  /* ═════════════════════════════════════════════════════════════════════════
     ACCOUNT-19.9:START · החשבון בשלוש לשוניות · העתקה של הקובץ המאושר · 19.9.2026
     ═════════════════════════════════════════════════════════════════════════
     מקור: ביקורת/עיצוב-9.9/מסך-החשבון.html («פיקס» 9.9 13:45, סבב 4). הכרעת חגי 11.9 11:00: ה-CSS נכנס
     מילה במילה ובאותם שמות מחלקות, ורק מזהים וחיבורים ל-JS משתנים. מסך הכיתה (#class) ירד והפך ללשונית
     השלישית. כל ערך נמדד בכרום ב-375 מול הקובץ (scripts/design-parity, הרשומה account).

     ⭐ ההכרעה המאוחרת גוברת על הקובץ, והקובץ עודכן אליה באותו קומיט (DNA-עיצוב.md §8.1, ו«מתגים גולשים
       חלקים יותר בכל המסכים», 10.9): ידית המתג אדומה, .55s cubic-bezier(.22,.61,.36,1), הטקסט הנבחר לבן
       והשאר בדיו, וגם העיגול של מתג ההפעלה (.tog) גולש באותה האטה, כמו במסך הניהול.
     ⛔ איך זה לא נוגע במסך אחר: כל כלל נעול תחת #account, או תחת ה-body כשהחשבון פתוח (:has). המחלקות
       המשותפות (`.card` ,`.row` ,`.brand` ,`.btn` ,`.lg` ,`.lg-seg` ,`.acc-legal` ,`.msg`) לא השתנו.
     ⚠ «ביטול ירושה» = כלל משותף של האפליקציה מצהיר על מאפיין שהקובץ אינו מצהיר, והערך שנכתב הוא מה
       שהקובץ מקבל בפועל (נמדד בכרום). מה שנוסף מעבר לקובץ מסומן ⚠ ליד הכלל שלו. */

  #account{
    --paper:#f6f1e7; --paper-deep:#efe8da; --card:#fffdf8; --ink:#2c2620; --ink-soft:#5e564a;
    --gold:#c9962f; --gold-soft:#f1e3bf; --accent:#b5482e; --accent-deep:#8f3620; --line:#e3d8c4; --ok:#437147; --ok-deep:#3f6942;
    --display:"Frank Ruhl Libre","David Libre",serif; --body:"Heebo","Arial Hebrew",Arial,sans-serif; --ease:cubic-bezier(.23,1,.32,1);
    color:var(--ink);font-family:var(--body);font-size:17px;line-height:1.5}
  /* הבמה · אותן שתי הילות כמו בבית (.18 ו-.14, DNA §2), רק כשהחשבון פתוח */
  body:has(#account:not(.hidden)){
    font-family:"Heebo","Arial Hebrew",Arial,sans-serif;font-size:17px;line-height:1.5;
    background-image:radial-gradient(340px 300px at 88% 40px,rgba(201,150,47,.30),transparent 70%),radial-gradient(320px 320px at 4% 420px,rgba(181,72,46,.22),transparent 70%),radial-gradient(340px 320px at 96% 800px,rgba(201,150,47,.24),transparent 70%),radial-gradient(320px 320px at 6% 1180px,rgba(181,72,46,.18),transparent 70%),radial-gradient(340px 320px at 94% 1560px,rgba(201,150,47,.22),transparent 70%);
    background-repeat:no-repeat}
  .wrap:has(>#account:not(.hidden)){max-width:520px;margin:0 auto;padding:0 18px 64px}
  body.ios-web .wrap:has(>#account:not(.hidden)){padding-bottom:calc(64px + 68px)}
  #account button{font-family:var(--body)}
  #account :focus-visible{outline:3px solid #a17826;outline-offset:3px}
  #account a:focus-visible{border-radius:6px}
  #account .ltr{direction:ltr;unicode-bidi:isolate}

  /* liquid glass · LG-SYSTEM כמו שהוא. ⚠ ביטול ירושה: בקובץ החשבון אין את מסנן שבירת האור (#lens) */
  #account .lg{backdrop-filter:blur(9px) saturate(200%) brightness(1.08);-webkit-backdrop-filter:blur(9px) saturate(200%) brightness(1.08)} /* 20.9 · גרסה ב */
  #account .btn{font-weight:600;font-size:16px;border-radius:14px;padding:0 18px;border:0;cursor:pointer;min-height:48px;letter-spacing:-.01em;transition:transform .12s ease,filter .2s ease;color:var(--ink)}
  @media (hover:hover) and (pointer:fine){#account .btn-primary:hover{transform:none}}   /* ביטול ירושה מ-.btn-primary:hover המשותפת · לפני :active */
  #account .btn:active{transform:scale(.97)}
  #account .btn-primary{color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.25);background:linear-gradient(180deg,rgba(160,58,36,.94),rgba(143,54,32,.96));box-shadow:inset 0 0 12px rgba(255,210,190,.1),inset 0 -8px 16px -12px rgba(0,0,0,.28),0 12px 28px -12px rgba(143,54,32,.6)}
  #account .btn-primary.lg::before{background:radial-gradient(130% 70% at 50% -10%,rgba(255,255,255,.16),rgba(255,255,255,0) 60%)}

  /* top */
  #account .top{display:flex;align-items:center;justify-content:space-between;padding:16px 0 6px}
  #account .back{display:inline-flex;align-items:center;gap:7px;border:0;border-radius:11px;color:var(--ink);font-size:14px;font-weight:500;cursor:pointer;padding:7px 13px 7px 9px}
  #account .back svg{width:16px;height:16px;stroke:currentColor;stroke-width:2;fill:none;stroke-linecap:round;stroke-linejoin:round}
  #account .brand{font-family:var(--display);font-weight:700;font-size:20px;color:var(--accent)}
  #account .head{text-align:center;margin:14px 0 0}
  #account .head .k{font-size:12px;letter-spacing:.2em;color:var(--ink-soft);font-weight:500;margin:0 0 6px}
  #account .head h1{font-family:var(--display);font-weight:700;font-size:32px;margin:0;line-height:1.1;color:var(--ink)}
  #account .head p{margin:4px 0 0;color:var(--ink-soft);font-size:14px}

  /* segment · three tabs · glide · `.lg-seg` של LG-SYSTEM בערכים של הקובץ, והידית האדומה של §8.1 */
  #account .lg-seg{display:flex;padding:3px;border-radius:14px;margin:18px 0 0;position:relative;background:rgba(44,38,32,.07)}
  #account .lg-seg{backdrop-filter:none;-webkit-backdrop-filter:none;box-shadow:none}   /* ביטול ירושה: המסילה של החשבון בלי הטשטוש והשפה של LG-SYSTEM */
  #account .lg-seg button{flex:1;background:none;border:0;cursor:pointer;height:42px;border-radius:11px;color:var(--ink);font-weight:600;font-size:15px;position:relative;z-index:1;transition:color 0s linear .11s}   /* צבע מתחלף כשקצה הידית עוברת את מרכז המקטע (≈110ms מתוך .55s), ר' #home .lseg */
  #account .lg-seg button{display:inline-block;gap:normal;line-height:normal;min-height:0}   /* ביטול ירושה מ-.lg-seg button של LG-SYSTEM (flex, gap ו-font:inherit) */
  #account .lg-seg button,#account .tog{padding:1px 6px}   /* ביטול ירושה: האיפוס הגלובלי (*{padding:0}) מוחק את ריפוד הכפתור של הדפדפן, שהקובץ נשען עליו */
  #account .lg-seg button.on{color:#fff}
  #account .lg-seg>.thumb{position:absolute;top:3px;bottom:3px;inset-inline-start:3px;width:calc((100% - 6px)/3);border-radius:11px;background:linear-gradient(180deg,rgba(160,58,36,.94),rgba(143,54,32,.96));box-shadow:inset 0 0 0 1px rgba(255,255,255,.3),0 6px 14px -6px rgba(143,54,32,.6);transition:transform .55s cubic-bezier(.22,.61,.36,1);z-index:0}
  /* ⚠ תוספת: למי שאינו מורה אין «הכיתה שלי», והמתג שני מקטעים */
  #account .lg-seg[data-n="2"]>.thumb{width:calc(50% - 3px)}
  #account .lg-seg[data-i="1"]>.thumb{transform:translateX(-100%)}
  #account .lg-seg[data-i="2"]>.thumb{transform:translateX(-200%)}

  /* panels */
  #account .panel{margin-top:16px}
  #account .card{border-radius:16px;padding:6px 16px}
  #account .card{border:0;text-align:start}   /* ביטול ירושה מ-.card המשותפת (כרטיס התרגול) */
  #account .row{display:flex;justify-content:space-between;align-items:center;padding:12px 0;border-bottom:1px solid rgba(44,38,32,.08);font-size:15px}
  #account .row{gap:normal}   /* ביטול ירושה מ-.row המשותפת */
  #account .row>*{flex:0 1 auto}   /* ביטול ירושה מ-.row>* המשותפת */
  #account .row:last-child{border-bottom:0}
  #account .row span{color:var(--ink-soft)}
  #account .row b{font-weight:600;color:var(--ink)}
  #account .row input[type=date]{font:inherit;border:0;background:transparent;color:var(--ink);font-weight:600;text-align:end}
  #account .row input[type=date]{padding:0 1px 0 0}   /* ביטול ירושה: ריפוד השדה של הדפדפן, שהאיפוס הגלובלי מוחק */
  #account .h{font-family:var(--display);font-weight:700;font-size:19px;color:var(--ink);margin:22px 0 8px}
  #account .list{display:flex;flex-direction:column;gap:8px}
  #account .item{display:flex;align-items:center;gap:12px;width:100%;text-align:start;border:0;border-radius:14px;padding:12px 14px;cursor:pointer;color:var(--ink)}
  #account .item .ic{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;background:linear-gradient(180deg,rgba(160,58,36,.85),rgba(143,54,32,.85));color:#fff;font-size:17px;flex:none;box-shadow:inset 0 1px 0 rgba(255,255,255,.45)}
  #account .item .tx{flex:1;font-size:15px;font-weight:600}
  #account .item .tx small{display:block;font-weight:400;color:var(--ink-soft);font-size:12.5px;margin-top:1px}
  /* wave-d, 20.9 · שער העיצוב גרסה 2: #accNotifSub תלוי-מצב (app.js, NOTIF.granted) — «הודעה
     קצרה בבוקר שמזכירה לתרגל» (כמו בקובץ המאושר) במצב «ניתן לבקש», אבל הנוסח הארוך יותר
     של מצב «ניתנה» (פרופיל הבדיקה) נשפך לשורה שנייה ומזיז את כל המסך ב-19px. שני הנוסחים
     כבר מוצהרים כלגיטימיים (screens.json: notifSmall, «פער מצב, לא פער עיצובי») — לא נוגעים
     בטקסט. מה שכן פריסה: לתת לשורה השנייה שגולשת קיצור בשלוש נקודות, כמו שהשורה האחת
     של הקובץ המאושר תמיד נראית — בלי לשנות גודל/צבע/משקל שכבר תואמים (הזוג הזה מעל). */
  #accNotifSub{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  #account .item .go{color:var(--accent);font-size:18px}
  #account .item.danger .ic{background:rgba(181,72,46,.14)}
  #account .item.danger .ic{color:var(--accent)}   /* ניגודיות: הסמל ⎋ בלבן על הרקע האדמדם נמדד 1.26:1 (לא נראה). «אייקון צבוע ברקע אדמדם» (9.9 18:55), 3:1 לרכיב גרפי. הקובץ עודכן */
  #account .item.danger .tx{color:var(--ink)}

  /* toggle */
  #account .tog{width:50px;height:30px;border-radius:15px;background:rgba(44,38,32,.18);position:relative;flex:none;transition:background .3s;cursor:pointer;border:0}
  #account .tog i{position:absolute;top:3px;inset-inline-start:3px;width:24px;height:24px;border-radius:50%;background:#fff;box-shadow:0 2px 6px rgba(0,0,0,.25);transition:transform .55s cubic-bezier(.22,.61,.36,1)}
  #account .tog.on{background:var(--accent)}
  #account .tog.on i{transform:translateX(-20px)}
  /* ⚠ תוספת: מתג שאין מה לעשות בו (התראות חסומות בדפדפן) · השורה שלידו אומרת למה */
  #account .tog:disabled{opacity:.45;cursor:not-allowed}

  /* small segment · direction */
  #account .mini{display:flex;padding:3px;border-radius:11px;position:relative;background:rgba(44,38,32,.07);box-shadow:inset 0 0 0 1px rgba(255,255,255,.35);flex:none}
  #account .mini button{background:none;border:0;cursor:pointer;height:30px;padding:0 10px;border-radius:8px;font-size:13px;font-weight:600;color:var(--ink-soft);position:relative;z-index:1}
  #account .mini button.on{color:#fff;background:linear-gradient(180deg,rgba(181,72,46,.92),rgba(143,54,32,.96));box-shadow:0 1px 2px rgba(44,38,32,.12)}
  /* ב-375 שלושת הכיוונים לא נכנסו לצד הכותרת, ו«מעורב» נחתך בקצה הכרטיס, גם בקובץ (נמדד בכרום). המתג יורד
     לשורה משלו, מתחת לטקסט, והקובץ עודכן */
  #account .item.dir{flex-wrap:wrap}
  #account .item.dir .mini{flex:1 0 100%}
  #account .item.dir .mini button{flex:1 1 auto;white-space:nowrap}

  /* class */
  #account .code{border-radius:16px;padding:18px;text-align:center}
  #account .code .k{font-size:12px;letter-spacing:.2em;color:var(--ink-soft);font-weight:500;margin:0 0 6px}
  #account .code .c{font-family:var(--display);font-weight:700;font-size:44px;letter-spacing:.12em;line-height:1;margin:0 0 14px;color:var(--accent)}
  #account .code .acts{display:flex;gap:10px}
  #account .code .acts .btn{flex:1;min-height:46px;font-size:15px;display:inline-flex;align-items:center;justify-content:center;gap:8px}
  /* ניגודיות: הכפתור הראשי צר, הטקסט נשבר לשתי שורות, והשורה העליונה יושבת בברק · 3.99:1 (בקובץ 3.93:1). בלי הברק עובר. הקובץ עודכן */
  #account .code .acts .btn-primary.lg::before,#account .code .acts .btn-primary.lg::after{background:none}
  #account .share{position:relative}
  /* ביטול ירושה מ-.btn.lg svg של LG-SYSTEM (16px, קו, בלי מילוי): הסמל של וואטסאפ הוא מילוי ירוק, 18px, ומתכווץ כמו בקובץ */
  #account .share svg{width:18px;height:18px;fill:#25d366;stroke:none;stroke-width:1px;flex:0 1 auto}
  #account .share .pop{position:absolute;left:50%;bottom:calc(100% + 10px);transform:translate(-50%,10px) skewY(8deg);opacity:0;transition:transform .45s var(--ease),scale .45s var(--ease),opacity .45s var(--ease),color .45s var(--ease),background-color .45s var(--ease),border-color .45s var(--ease),box-shadow .45s var(--ease),fill .45s var(--ease),stroke .45s var(--ease),filter .45s var(--ease);background:var(--gold-soft);color:var(--ink);border-radius:8px;padding:6px 10px;font-size:13px;white-space:nowrap;pointer-events:none}
  @media (hover:hover) and (pointer:fine){#account .share:hover .pop{opacity:1;transform:translate(-50%,0) skewY(0)}}
  #account .share:active .pop{opacity:1;transform:translate(-50%,0) skewY(0)}
  /* ⚠ תוספת: שדה הגיבוי לקישור, כשהעתקה ללוח נכשלת (clsCopyLink) */
  #account #clsLinkBox{width:100%;margin-top:12px;font:inherit;font-size:14px;padding:10px 12px;border-radius:12px;border:1px solid #888276;background:var(--paper);color:var(--ink)}
  #account .cap{font-size:12px;color:var(--ink-soft);margin:8px 0 0;text-align:center}
  #account .stu{border-radius:14px;padding:12px 14px}
  #account .stu-top{display:flex;justify-content:space-between;align-items:center;font-size:16px}
  /* ⚠ תוספת: «הכי פעיל השבוע» / «לא תרגל השבוע» יושבים ליד «N לחזרה», באותו תג */
  #account .stu-tags{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
  #account .stu-n{font-size:13px;font-weight:600;color:var(--ok-deep);background:rgba(67,113,71,.12);padding:3px 9px;border-radius:999px}
  #account .stu-n.warn{color:var(--accent-deep);background:rgba(181,72,46,.12)}   /* ניגודיות: --accent נמדד 4.17:1. האדום העמוק, כמו «שגוי» בתיקוני 11.9. הקובץ עודכן */
  #account .days{display:flex;gap:6px;margin:10px 0 6px}
  #account .days i{flex:1;height:30px;border-radius:8px;display:grid;place-items:center;font-style:normal;font-size:13px;font-weight:600;color:var(--ink-soft);background:rgba(44,38,32,.07)}
  #account .days i.on{color:#fff;background:linear-gradient(180deg,rgba(160,58,36,.94),rgba(143,54,32,.96))}   /* ניגודיות: הגרדיאנט הבהיר נמדד 3.63:1 מתחת לאות היום. האדום של הכפתור הראשי. הקובץ עודכן */
  #account .stu small{display:block;font-size:12.5px;color:var(--ink-soft)}
  /* ⚠ תוספת: הודעת טעינה או «עדיין לא הצטרף אף תלמיד» ברשימה (clsMsg) */
  #account #clsBody .msg{margin:0;padding:12px 0}
  /* ⭐ ביקורת/עיצוב-9.9/השלמות.html #16 (אושר 10.9 17:10): שלושת מצבי "הכיתה שלי"
     עטופים בכרטיס זכוכית (.cls). ⛔ .msg הכללית (שורה 926) משרתת גם מסכים אחרים --
     כאן רק ביטול ה-padding שהוגדר לה למעלה, בתוך הכרטיס. */
  /* ⭐ line-height מוצמד ל-1.55 (הקובץ המאושר, body) ולא 1.5 שיורש מ-#account (הכרעה קיימת
     ונעולה של מסך "חשבון" עצמו) -- כאן, בתוך .cls בלבד, בלי לגעת ב-#account הכללי. */
  #account #clsBody .cls{border-radius:16px;padding:18px 16px;text-align:center;margin:0 0 10px;line-height:1.55}
  #account #clsBody .cls .msg{padding:0;font-size:15px;line-height:1.55;color:var(--ink);font-weight:400}
  /* ⭐ 28.9 · גל 329, פער #16: תיבת קוד ההצטרפות במצב "ריק" (ביקורת/עיצוב-9.9/השלמות.html
     .cls .code) הייתה חסרה כאן לגמרי -- הכרעה קודמת (extras, screens.json) הניחה שהקוד
     שכבר מוצג למעלה ב-#clsCode (הכרטיס הראשי, .panel .code.lg) מספיק, אבל דוח 28.9 (גל 329)
     מצא שהקובץ המאושר מציג אותו שוב כאן, בתוך הכרטיס הריק עצמו. app.js (openClass) כבר
     מחזיק את הקוד (clsCode) בזיכרון -- כאן רק העיצוב, בדיוק כמו הקובץ המאושר. */
  #account #clsBody .cls .code{display:inline-block;margin:10px 0 0;padding:8px 16px;border-radius:12px;
    border:1px solid var(--line);background:var(--paper);font-family:var(--display);font-weight:700;
    font-size:20px;direction:ltr;letter-spacing:.12em}
  #account #clsBody .cls .ico{width:46px;height:46px;border-radius:999px;margin:0 auto 8px;display:grid;place-items:center;
    background:rgba(181,72,46,.14);box-shadow:inset 0 0 0 1px rgba(181,72,46,.18)}
  #account #clsBody .cls .ico svg{width:23px;height:23px;fill:none;stroke:var(--accent);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
  #account #clsBody .cls .sk{height:14px;border-radius:7px;margin:8px auto;
    background:linear-gradient(90deg,rgba(44,38,32,.08),rgba(44,38,32,.16),rgba(44,38,32,.08));
    background-size:200% 100%;animation:cls-sk 1.6s linear infinite}
  @keyframes cls-sk{from{background-position:200% 0}to{background-position:-200% 0}}
  @media (prefers-reduced-motion:reduce){#account #clsBody .cls .sk{animation:none}}
  #account #clsBody .cls .acts{margin-top:10px;display:flex;justify-content:center}
  #account #clsBody .cls .acts .btn.sm{min-height:42px;font-size:15px;padding:0 14px;border-radius:12px}

  /* הקישורים המשפטיים · `.legal` של הקובץ על `.acc-legal` (tests/20 נועל את המחלקה הזאת בחשבון) */
  #account .acc-legal{margin:26px 0 0;font-size:12px;color:var(--ink-soft);text-align:center}
  #account .acc-legal{line-height:inherit}   /* ביטול ירושה מ-.acc-legal המשותפת */
  #account .acc-legal .sep{display:inline-block;width:4px;height:4px;border-radius:50%;background:var(--line);margin:0 8px;vertical-align:middle}
  #account .acc-legal a{color:inherit;text-decoration:none;border-bottom:1px solid var(--line);margin:0 5px}

  @media (prefers-reduced-motion:reduce){
    #account .lg-seg>.thumb,#account .lg-seg button,#account .tog,#account .tog i,#account .btn,#account .share .pop{transition:none}
    #account .btn:active{transform:none}
  }
  /* ACCOUNT-19.9:END */

  /* ═════════════════════════════════════════════════════════════════════════
     RESULTS-10.9:START · מסך סיכום הסבב · העתקה של הקובץ המאושר · 22.9.2026
     ═════════════════════════════════════════════════════════════════════════
     מקור: ביקורת/עיצוב-9.9/מסך-הסיכום.html (אושר 10.9 13:00, סבב 5). הכרעת חגי 11.9 11:00: ה-CSS
     נכנס מילה במילה ובאותם שמות מחלקות, המבנה נכנס ל-index.html כמו בקובץ, ורק מזהים וחיבורים ל-JS
     משתנים. המספרים מהסבב האמיתי (finishRound, refreshResultCounts, renderUnitProgress, renderReview).
     מחליף את .res-head/.score-num, את כרטיס התצוגה המקדימה של השיתוף ואת .review-list במסך הזה;
     הכללים הישנים נשארים למעלה, כי מסכים אחרים עדיין משתמשים בהם.

     ⛔ איך זה לא נוגע במסך אחר: כל כלל נעול תחת #results, והכללים המשותפים של .btn ,.lg ,.row ,.say,
     .kicker ,.rev-row ,.rev-chip ו-.up-card לא השתנו. הסדר הוא הסדר של הקובץ, ולכן גם המפל שבתוך
     המסך הוא של הקובץ: .btn-primary ו-.btn-wa גוברים על הרקע של .lg.
     ⚠ מה שנוסף מעבר לקובץ, וכל אחד מסומן ליד הכלל שלו:
       · «ביטול ירושה» · כלל משותף של האפליקציה מצהיר על אותה מחלקה מאפיין שהקובץ אינו מצהיר, או
         שהאיפוס הגלובלי *{margin:0;padding:0} מוחק ברירת מחדל של הדפדפן. הערך הוא מה שהקובץ המאושר
         מקבל בפועל, כפי שנמדד בכרום ב-375.
       · כל :hover עטוף ב-(hover:hover) and (pointer:fine) (tests/61), וכל תנועה נכבית ב-reduce.
       · transition:all של .mark נפרש לרשימת התכונות המפורשת של האפליקציה (59d2423). אותה תנועה. */
  #results{
    --paper:#f6f1e7; --paper-deep:#efe8da; --card:#fffdf8; --ink:#2c2620; --ink-soft:#5e564a;
    --gold:#c9962f; --gold-soft:#f1e3bf; --accent:#b5482e; --accent-deep:#8f3620; --line:#e3d8c4; --ok:#437147;
    --display:"Frank Ruhl Libre","David Libre",serif; --body:"Heebo","Arial Hebrew",Arial,sans-serif; --ease:cubic-bezier(.23,1,.32,1);
    color:var(--ink);font-family:var(--body);font-size:17px;line-height:1.55}
  /* ה-body של הקובץ (שורות 16-17): חמש ההילות הקבועות, כמו בבית ובתרגול, רק כשהסיכום פתוח */
  body:has(#results:not(.hidden)){
    font-family:"Heebo","Arial Hebrew",Arial,sans-serif;font-size:17px;line-height:1.55;
    background-image:radial-gradient(340px 300px at 88% 40px,rgba(201,150,47,.30),transparent 70%),radial-gradient(320px 320px at 4% 420px,rgba(181,72,46,.22),transparent 70%),radial-gradient(340px 320px at 96% 800px,rgba(201,150,47,.24),transparent 70%),radial-gradient(320px 320px at 6% 1180px,rgba(181,72,46,.18),transparent 70%),radial-gradient(340px 320px at 94% 1560px,rgba(201,150,47,.22),transparent 70%);
    background-repeat:no-repeat}
  /* הדף · `.wrap` של הקובץ הוא טור בגובה המסך. כמו #quiz: רק כשהסיכום פתוח, ו-#results עצמו אינו
     יוצר קופסה. ספארי באייפון כאתר שומר את התוספת לשורת הכתובת. */
  .wrap:has(>#results:not(.hidden)){max-width:520px;margin:0 auto;padding:0 18px 60px;min-height:100vh;display:flex;flex-direction:column}
  body.ios-web .wrap:has(>#results:not(.hidden)){padding-bottom:calc(60px + 68px)}
  #results:not(.hidden){display:contents}
  #results button{font-family:var(--body)}
  #results :focus-visible{outline:3px solid #a17826;outline-offset:3px;border-radius:6px}
  /* ===== Liquid Glass ===== · ::before ו-::after זהים לאלה של LG-SYSTEM ולכן אינם מועתקים שוב.
     #results .lg כן, כדי לגבור על .btn-ghost.lg המשותפת (רקע .16), כמו #quiz .lg. */
  #results .lg{position:relative;isolation:isolate;overflow:hidden;background:rgba(255,255,255,.05);
    backdrop-filter:blur(9px) saturate(200%) brightness(1.08);-webkit-backdrop-filter:blur(9px) saturate(200%) brightness(1.08);
    box-shadow:inset 0 0 14px rgba(255,255,255,.30),inset 0 -6px 12px -10px rgba(0,0,0,.10),0 8px 22px -14px rgba(44,38,32,.18)} /* 20.9 · «כמו אפל»: כמעט צלולה, והאור על השפה */
  /* דפדפן בלי טשטוש בכלל: משטח אטום, כמו ב-LG-SYSTEM (אין לו מקבילה בקובץ). לפני .btn-primary, שגובר עליו */
  @supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){#results .lg{background:rgba(255,253,248,.86)}}
  /* ביטול ירושה מ-`.lg>*` של LG-SYSTEM: בקובץ הילדים של הזכוכית אינם מורמים מעל שכבות ההארה */
  #results .lg>*{z-index:auto}
  #results .lg>:not(.lg){position:static}
  #results .btn{font-weight:600;font-size:17px;border-radius:14px;padding:0 18px;border:0;cursor:pointer;min-height:52px;letter-spacing:-.01em;transition:transform .12s ease,filter .2s ease}
  #results .btn{display:inline-block;align-items:normal;justify-content:normal;gap:normal}   /* ביטול ירושה מ-.btn.lg של LG-SYSTEM */
  @media (hover:hover) and (pointer:fine){#results .btn-primary:hover{transform:none}}   /* ביטול ירושה מ-.btn-primary:hover המשותפת · לפני :active */
  #results .btn:active{transform:scale(.97)}
  #results .btn-primary{color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.25);background:linear-gradient(180deg,rgba(160,58,36,.94),rgba(143,54,32,.96));
    box-shadow:inset 0 0 12px rgba(255,210,190,.1),inset 0 -8px 16px -12px rgba(0,0,0,.28),0 12px 28px -12px rgba(143,54,32,.6)}
  @media (hover:hover) and (pointer:fine){#results .btn-primary:hover{filter:brightness(1.06)}}
  #results .btn-primary.lg::before{background:radial-gradient(130% 70% at 50% -10%,rgba(255,255,255,.16),rgba(255,255,255,0) 60%),radial-gradient(90% 50% at 50% 115%,rgba(255,200,180,.18),rgba(255,255,255,0) 60%)}
  #results .btn-ghost{color:var(--ink)}
  @media (hover:hover) and (pointer:fine){#results .btn-ghost:hover{filter:brightness(1.03)}}

  /* ===== סיכום הסבב ===== */
  #results .top{display:flex;align-items:center;justify-content:space-between;padding:16px 0 6px}
  #results .exit{display:inline-flex;align-items:center;gap:7px;border:0;border-radius:11px;color:var(--ink);font-size:14px;font-weight:500;cursor:pointer;padding:7px 13px 7px 9px}
  #results .exit svg{width:16px;height:16px;stroke:currentColor;stroke-width:2;fill:none;stroke-linecap:round}
  #results .scope{font-family:var(--display);font-weight:700;font-size:18px}

  #results .hero{text-align:center;padding:18px 0 6px}
  #results .ring,#exam .ring{position:relative;width:168px;height:168px;margin:0 auto}
  #results .ring svg,#exam .ring svg{width:100%;height:100%;transform:rotate(-90deg)}
  #results .ring circle,#exam .ring circle{fill:none;stroke-width:9;stroke-linecap:round}
  #results .ring .bg,#exam .ring .bg{stroke:var(--line)}
  #results .ring .fg,#exam .ring .fg{stroke:var(--ok);stroke-dasharray:452;stroke-dashoffset:var(--off,452);animation:ringfill 1.3s var(--ease) .25s both}
  @keyframes ringfill{from{stroke-dashoffset:452}}
  #results .ring .num,#exam .ring .num{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;width:100%}
  #results .ring .num b,#exam .ring .num b{display:block;width:100%;text-align:center;font-family:var(--display);font-weight:700;font-size:58px;line-height:1;direction:ltr;font-variant-numeric:tabular-nums}
  #results .ring .num span,#exam .ring .num span{display:block;width:100%;text-align:center;font-size:14px;color:var(--ink-soft);margin-top:4px}
  #results .kicker{font-size:14px;letter-spacing:.12em;color:var(--ink-soft);margin:0 0 12px}
  #results .kicker{font-weight:400;text-transform:none}   /* ביטול ירושה מ-.kicker המשותפת (זהב, 700, אותיות גדולות) */
  #results .lead{font-family:var(--display);font-weight:700;font-size:24px;margin:18px 0 4px;text-wrap:balance}
  #results .sub{margin:0;color:var(--ink-soft);font-size:15px}
  #results .streak{display:inline-flex;align-items:center;gap:6px;margin-top:12px;padding:6px 14px;border-radius:999px;font-size:14px;font-weight:500;color:var(--ink)}
  #results .streak .flame{width:20px;height:20px;filter:drop-shadow(0 1px 2px rgba(181,72,46,.35))}

  /* התקדמות היחידה · צבע לפי אחוז, בלי מספר */
  #results .unit{margin:22px 0 0;text-align:center}
  #results .unit p{margin:0 0 8px;font-size:15px;color:var(--ink)}
  #results .unit p b{font-family:var(--display);font-size:19px;font-variant-numeric:tabular-nums;margin-inline-end:4px}
  #results .bar{height:8px;border-radius:5px;background:var(--line);overflow:hidden}
  #results .bar i{display:block;height:100%;width:var(--w,0);border-radius:5px;animation:barfill 1.1s var(--ease) .5s both}
  @keyframes barfill{from{width:0}}

  /* המילים שנכנסו לחזרות · שורה ממורכזת, בלי פס צד */
  #results .sec{margin:26px 0 0}
  #results .sec h2{font-family:var(--display);font-weight:700;font-size:19px;margin:0 0 4px;text-align:center}
  #results .sec .note{display:block;margin:0 0 12px;text-align:center;font-size:13.5px;color:var(--ink-soft)}
  #results .row{display:grid;grid-template-columns:44px 1fr 44px;align-items:center;gap:8px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px 10px;margin-top:8px;box-shadow:0 1px 0 rgba(255,255,255,.7) inset,0 10px 24px -20px rgba(44,38,32,.35)}
  #results .row>*{flex:0 1 auto}   /* ביטול ירושה מ-.row>* המשותפת */
  #results .row .w{font-family:var(--display);font-weight:700;font-size:20px;text-align:center;line-height:1.2}
  #results .row .g{font-size:14px;color:var(--ink-soft);text-align:center;margin-top:2px}
  #results .row .mid{min-width:0}
  #results .mark{width:40px;height:40px;border-radius:50%;border:0;cursor:pointer;display:grid;place-items:center;background:var(--paper);color:var(--ink-soft);transition:transform .3s var(--ease),scale .3s var(--ease),opacity .3s var(--ease),color .3s var(--ease),background-color .3s var(--ease),border-color .3s var(--ease),box-shadow .3s var(--ease),fill .3s var(--ease),stroke .3s var(--ease),filter .3s var(--ease)}
  #results .mark{padding:1px 6px;font-size:13.3333px;font-weight:400}   /* ביטול ירושה מ-.rev-chip המשותפת (המחלקה נשארת לחיבור ב-app.js): ערכי הדפדפן לכפתור, כמו בקובץ */
  #results .mark:active{transform:none}   /* ביטול ירושה מ-.rev-chip:active המשותפת */
  #results .mark svg{width:18px;height:18px;stroke:currentColor;stroke-width:2.4;fill:none;stroke-linecap:round;stroke-linejoin:round}
  #results .row.ok .mark{background:rgba(67,113,71,.14);color:var(--ok)}
  #results .row.miss .mark{background:rgba(181,72,46,.12);color:var(--accent)}
  #results .row .say{width:40px;height:40px;min-width:44px;min-height:44px;border-radius:50%;border:1px solid var(--line);background:none;color:var(--ink-soft);cursor:pointer;display:grid;place-items:center}
  #results .row .say{padding:1px 6px;font-size:13.3333px;line-height:normal;transition:none}   /* ביטול ירושה מ-.say המשותפת: ערכי הדפדפן לכפתור, כמו בקובץ */
  #results .row .say.on{border-color:var(--gold);background:rgba(201,150,47,.12)}   /* בזמן הקראה (TTS.say), כמו #quiz .say.on · אין לו מקבילה בקובץ */
  #results .row .say svg{width:18px;height:18px;stroke:currentColor;stroke-width:1.8;fill:none;stroke-linecap:round;stroke-linejoin:round}
  #results .all{margin:12px 0 0;text-align:center;font-size:15px}

  #results .acts{display:flex;flex-direction:column;gap:10px;margin:26px 0 0}
  /* וואטסאפ · ירוק זוהר של המותג */
  #results .btn-wa{color:#1f6b3a;text-shadow:0 1px 0 rgba(255,255,255,.5);background:rgba(37,211,102,.14);
    box-shadow:inset 0 0 0 1px rgba(255,255,255,.5),inset 1.5px 1.5px 0 -.5px rgba(255,255,255,.9),inset -1px -1px 0 -.5px rgba(0,0,0,.08),inset 0 -8px 16px -12px rgba(0,0,0,.1),0 10px 24px -14px rgba(31,107,58,.35)}
  @media (hover:hover) and (pointer:fine){#results .btn-wa:hover{filter:brightness(1.03)}}
  #results .btn-wa.lg::before{background:radial-gradient(130% 70% at 50% -10%,rgba(255,255,255,.55),rgba(255,255,255,0) 60%)}
  #results .btn-wa.lg::after{background:linear-gradient(115deg,rgba(255,255,255,.2) 0%,rgba(255,255,255,0) 30%,rgba(255,255,255,0) 70%,rgba(255,255,255,.1) 100%)}
  #results .btn-wa svg{width:20px;height:20px;vertical-align:-5px;margin-inline-end:8px;fill:currentColor}
  #results .btn-wa svg{stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;flex:0 1 auto}   /* ביטול ירושה מ-.btn.lg svg של LG-SYSTEM (קו 2px בלי מילוי) */
  #results .btn .arr{display:inline-block;margin-inline-start:6px;transition:transform .3s var(--ease)}
  @media (hover:hover) and (pointer:fine){#results .btn:hover .arr{transform:translateX(-4px)}}
  #results .btn-ghost .arr{color:var(--accent)}

  @media (prefers-reduced-motion:reduce){
    #results .btn,#results .mark,#results .btn .arr{transition:none}
    #results .btn:active{transform:none}
    #results .ring .fg,#exam .ring .fg,#results .bar i{animation:none}
    @media (hover:hover) and (pointer:fine){#results .btn:hover .arr{transform:none}}
  }
  /* RESULTS-10.9:END */
  /* ═════════════════════════════════════════════════════════════════════════
     DIALOGS-10.9:START · החלונות · העתקה של שני הקבצים המאושרים · 22.9.2026
     ═════════════════════════════════════════════════════════════════════════
     מקור: ביקורת/עיצוב-9.9/חלונות-חשבון-וכיתה.html (A, אושר 10.9 15:45) ו-חלונות-הפעלה-והדרכה.html
     (B, אושר 10.9 15:30). הכרעת חגי 11.9 11:00: ה-CSS נכנס מילה במילה ובאותם שמות מחלקות, המבנה
     נכנס ל-index.html כמו בקובץ, ורק המזהים וה-JS מתחברים.

     ⛔ איך זה לא נוגע במסך אחר: כל כלל נעול תחת מזהי החלונות. שני הקבצים מגדירים את אותן מחלקות
     (.dlg .acts .btn .ltr) בערכים שונים, ולכן לכל קובץ רשימה משלו, בסדר של הקובץ:
       A = #classAsk #delAsk #sizeAsk #sheetAsk #cfmAsk
       B = #notifAsk #installAsk #mailAsk #waAsk #vidAsk #lvAsk #fbAsk #sqAsk #examAsk (הכרטיס בבית)
     ⭐ 22.9.2026 · #cfmAsk הוא חלון האישור שמחליף את confirm() של הדפדפן (הכרעת העוזר האישי, גל החלונות
       סעיף 4). הוא אינו חלון נפרד בקובץ, אלא המבנה של «למחוק את החשבון?» מקובץ A, ולכן הוא ברשימה של A
       ומקבל את הכללים שלו בלי כלל משלו.
     ⚠ מה שנוסף מעבר לקבצים, וכל אחד מסומן ליד הכלל שלו:
       · הרקע של שכבת החלון: הקבצים מציגים את החלון על הנייר של העמוד עם ההילות, והשכבה הכהה הישנה
         (.ask, rgba(44,38,32,.45)) הפכה את הזכוכית השקופה לאפורה והורידה את הטקסט המשני מתחת ל-AA.
         השכבה של החלונות האלה היא ה-body של הקבצים. רוחב החלון הוא עמודת הקובץ (עד 360px, שוליים 18px).
       · «ביטול ירושה» · כלל משותף של האפליקציה מצהיר על אותה מחלקה מאפיין שהקובץ אינו מצהיר, או
         שהאיפוס הגלובלי *{margin:0;padding:0} מוחק ברירת מחדל של הדפדפן. הערך הוא מה שהקובץ המאושר
         מקבל בפועל, כפי שנמדד בכרום ב-375.
       · שמות ה-@keyframes (fade ⟵ dlg-fade, rise ⟵ dlg-rise): rise כבר קיים באפליקציה בערכים אחרים,
         והעתקה בשמו הייתה דורסת אותו בכל המסכים. אותם ערכים בדיוק.
       · כל :hover עטוף ב-(hover:hover) and (pointer:fine) (tests/61), וכל תנועה נכבית ב-reduce.
       · ✕ של הוואטסאפ והסרטון (חגי ביקש, tests/51 ו-56) אינו בקובץ: נשאר בפינה כמו קודם. */

  /* ── משותף · ה-:root וה-body של שני הקבצים (שורות 5-13): הטוקנים, הגופן והגודל ── */
  :is(#classAsk,#delAsk,#sizeAsk,#sheetAsk,#cfmAsk,#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk,#examAsk){
    --paper:#f6f1e7; --paper-deep:#efe8da; --card:#fffdf8; --ink:#2c2620; --ink-soft:#5e564a;
    --gold:#c9962f; --gold-soft:#f1e3bf; --accent:#b5482e; --accent-deep:#8f3620; --line:#e3d8c4; --ok:#437147; --line-strong:#888276; --gold-text:#83621f;
    --display:"Frank Ruhl Libre","David Libre",serif; --body:"Heebo","Arial Hebrew",Arial,sans-serif; --ease:cubic-bezier(.23,1,.32,1);
    color:var(--ink);font-family:var(--body);font-size:17px;line-height:1.55}
  /* מעבר לקבצים · השכבה: הנייר וההילות של ה-body בקבצים במקום הכהה של .ask, ועמודת הקובץ לחלון */
  :is(#classAsk,#delAsk,#sizeAsk,#sheetAsk,#cfmAsk,#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk){
    background-color:var(--paper);
    background-image:radial-gradient(340px 300px at 88% 40px,rgba(201,150,47,.30),transparent 70%),radial-gradient(320px 320px at 4% 420px,rgba(181,72,46,.22),transparent 70%),radial-gradient(340px 320px at 96% 800px,rgba(201,150,47,.24),transparent 70%),radial-gradient(320px 320px at 6% 1180px,rgba(181,72,46,.18),transparent 70%),radial-gradient(340px 320px at 94% 1560px,rgba(201,150,47,.22),transparent 70%);
    background-repeat:no-repeat;padding:20px 18px}
  :is(#classAsk,#delAsk,#sizeAsk,#sheetAsk,#cfmAsk,#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk)>.dlg{width:100%;max-width:360px;min-width:0;min-height:0}

  /* ═════ A · חלונות-חשבון-וכיתה.html ═════ */
  /* .lg של הקובץ (שורות 14-16) · ::before, ::after ו-.lg>* זהים לאלה של LG-SYSTEM ולכן אינם מועתקים
     שוב. .lg כן, כדי לגבור על .btn-ghost.lg המשותפת (רקע .16), כמו #results .lg. */
  :is(#classAsk,#delAsk,#sizeAsk,#sheetAsk,#cfmAsk) .lg{position:relative;isolation:isolate;overflow:hidden;background:rgba(255,255,255,.05);
    backdrop-filter:blur(9px) saturate(200%) brightness(1.08);-webkit-backdrop-filter:blur(9px) saturate(200%) brightness(1.08);
    box-shadow:inset 0 0 14px rgba(255,255,255,.30),inset 0 -6px 12px -10px rgba(0,0,0,.10),0 8px 22px -14px rgba(44,38,32,.18)} /* 20.9 · «כמו אפל»: כמעט צלולה, והאור על השפה */
  /* דפדפן בלי טשטוש בכלל: משטח אטום, כמו ב-LG-SYSTEM (אין לו מקבילה בקובץ) */
  @supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){:is(#classAsk,#delAsk,#sizeAsk,#sheetAsk,#cfmAsk) .lg{background:rgba(255,253,248,.86)}}
  /* גופן הכפתורים · ⭐ 22.9.2026, הכרעת העוזר האישי (גל החלונות סעיף 1): «זה חסר בקובץ ולא בחירה».
     font-family:inherit הוא עכשיו חלק מ-.btn של הקובץ עצמו (fd52ffc, 8a4dd69), ולכן הוא בכלל שלמטה מילה
     במילה. עד היום כאן היה font-family:revert, כלומר גופן ברירת המחדל של הדפדפן לכפתור (Arial), כמו
     בקובץ שלא היה בו כלל גופן לכפתורים. ⛔ font-family ולא הקיצור font: הקיצור יורש גם line-height,
     וזה שבר את השער בתרגול ובמנוי המושהה כשנוסה בקבצים. */
  :is(#classAsk,#delAsk,#sizeAsk,#sheetAsk,#cfmAsk) .btn{font-family:inherit;font-weight:600;font-size:17px;border-radius:14px;padding:0 18px;border:0;cursor:pointer;min-height:52px;letter-spacing:-.01em;transition:transform .12s ease,filter .2s ease}
  :is(#classAsk,#delAsk,#sizeAsk,#sheetAsk,#cfmAsk) .btn{gap:normal}   /* ביטול ירושה: gap של .btn.lg ב-LG-SYSTEM */
  @media (hover:hover) and (pointer:fine){:is(#classAsk,#delAsk,#sizeAsk,#sheetAsk,#cfmAsk) .btn-primary:hover{transform:none}}   /* ביטול ירושה מ-.btn-primary:hover המשותפת · לפני :active */
  :is(#classAsk,#delAsk,#sizeAsk,#sheetAsk,#cfmAsk) .btn:active{transform:scale(.97)}
  :is(#classAsk,#delAsk,#sizeAsk,#sheetAsk,#cfmAsk) .btn-primary{color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.25);background:linear-gradient(180deg,rgba(160,58,36,.94),rgba(143,54,32,.96));
    box-shadow:inset 0 0 12px rgba(255,210,190,.1),inset 0 -8px 16px -12px rgba(0,0,0,.28),0 12px 28px -12px rgba(143,54,32,.6)}
  @media (hover:hover) and (pointer:fine){:is(#classAsk,#delAsk,#sizeAsk,#sheetAsk,#cfmAsk) .btn-primary:hover{filter:brightness(1.06)}}
  :is(#classAsk,#delAsk,#sizeAsk,#sheetAsk,#cfmAsk) .btn-ghost{color:var(--ink)}
  @media (hover:hover) and (pointer:fine){:is(#classAsk,#delAsk,#sizeAsk,#sheetAsk,#cfmAsk) .btn-ghost:hover{filter:brightness(1.03)}}
  :is(#classAsk,#delAsk,#sizeAsk,#sheetAsk,#cfmAsk) :focus-visible{outline:3px solid #a17826;outline-offset:3px;border-radius:6px}

  /* ===== החלון ===== */
  :is(#classAsk,#delAsk,#sizeAsk,#sheetAsk,#cfmAsk) .dlg{border-radius:16px;padding:22px 18px 18px;text-align:center;animation:dlg-fade .4s var(--ease) both}
  @keyframes dlg-fade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
  :is(#classAsk,#delAsk,#sizeAsk,#sheetAsk,#cfmAsk) .ico{width:46px;height:46px;border-radius:999px;margin:0 auto 12px;display:grid;place-items:center;
    background:rgba(181,72,46,.14);box-shadow:inset 0 0 0 1px rgba(181,72,46,.18)}
  :is(#classAsk,#delAsk,#sizeAsk,#sheetAsk,#cfmAsk) .ico svg{width:23px;height:23px;fill:none;stroke:var(--accent);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
  :is(#classAsk,#delAsk,#sizeAsk,#sheetAsk,#cfmAsk) .dlg h3{font-family:var(--display);font-weight:700;font-size:23px;line-height:1.25;margin:0 0 6px;color:var(--ink)}
  :is(#classAsk,#delAsk,#sizeAsk,#sheetAsk,#cfmAsk) .dlg p{margin:0 0 10px;font-size:15px;line-height:1.6;color:var(--ink)}
  :is(#classAsk,#delAsk,#sizeAsk,#sheetAsk,#cfmAsk) .dlg p.soft{color:var(--ink-soft);font-size:13.5px}
  :is(#classAsk,#delAsk,#sizeAsk,#sheetAsk,#cfmAsk) .dlg a{color:var(--ink);text-decoration:none;border-bottom:1px solid var(--gold)}
  :is(#classAsk,#delAsk,#sizeAsk,#sheetAsk,#cfmAsk) .ltr{direction:ltr;unicode-bidi:isolate}

  /* שדה · ממורכז, רקע נייר, פוקוס זהב */
  :is(#classAsk,#delAsk,#sizeAsk,#sheetAsk,#cfmAsk) .fld{width:100%;height:50px;margin:12px 0 4px;border-radius:12px;border:1px solid var(--line-strong);background:var(--paper);
    font:inherit;font-size:16px;font-weight:500;color:var(--ink);text-align:center;outline:0;transition:border-color .2s,box-shadow .2s}
  :is(#classAsk,#delAsk,#sizeAsk,#sheetAsk,#cfmAsk) .fld{padding:1px 2px}   /* ביטול ירושה מהאיפוס *{padding:0}: ערך הדפדפן לשדה, כמו בקובץ */
  :is(#classAsk,#delAsk,#sizeAsk,#sheetAsk,#cfmAsk) .fld::placeholder{color:var(--ink-soft);font-weight:400}
  :is(#classAsk,#delAsk,#sizeAsk,#sheetAsk,#cfmAsk) .fld:focus{border-color:#a17826;box-shadow:0 0 0 3px rgba(161,120,38,.22)}

  /* כפתורים */
  :is(#classAsk,#delAsk,#sizeAsk,#sheetAsk,#cfmAsk) .acts{display:flex;flex-direction:column;gap:9px;margin-top:14px}
  :is(#classAsk,#delAsk,#sizeAsk,#sheetAsk,#cfmAsk) .acts .btn{width:100%;display:inline-flex;align-items:center;justify-content:center}
  :is(#classAsk,#delAsk,#sizeAsk,#sheetAsk,#cfmAsk) .btn-danger{color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.3);background:linear-gradient(180deg,rgba(143,54,32,.97),rgba(112,40,23,.98));
    box-shadow:inset 0 0 0 1px rgba(255,255,255,.34),inset 1.5px 1.5px 0 -.5px rgba(255,255,255,.7),inset -1px -1px 0 -.5px rgba(0,0,0,.24),inset 0 -8px 16px -12px rgba(0,0,0,.3),0 12px 30px -10px rgba(112,40,23,.6),0 1px 1px rgba(0,0,0,.06)}
  @media (hover:hover) and (pointer:fine){:is(#classAsk,#delAsk,#sizeAsk,#sheetAsk,#cfmAsk) .btn-danger:hover{filter:brightness(1.07)}}
  :is(#classAsk,#delAsk,#sizeAsk,#sheetAsk,#cfmAsk) .btn-danger.lg::before{background:radial-gradient(130% 70% at 50% -10%,rgba(255,255,255,.14),rgba(255,255,255,0) 60%)}
  :is(#classAsk,#delAsk,#sizeAsk,#sheetAsk,#cfmAsk) .btn-stay{font-size:16px;font-weight:600}

  /* רשימת מה נמחק · ממורכזת */
  :is(#classAsk,#delAsk,#sizeAsk,#sheetAsk,#cfmAsk) .gone{margin:12px 0 2px;padding:12px 10px;border-radius:12px;background:var(--paper);border:1px solid var(--line);
    list-style:none;display:flex;flex-direction:column;gap:6px;text-align:center;font-size:14.5px;color:var(--ink)}
  :is(#classAsk,#delAsk,#sizeAsk,#sheetAsk,#cfmAsk) .gone li::before{content:"";display:inline-block;width:5px;height:5px;border-radius:50%;background:var(--accent);margin-inline-end:8px;vertical-align:middle}
  :is(#classAsk,#delAsk,#sizeAsk,#sheetAsk,#cfmAsk) .warn{font-weight:700;color:var(--ink)}

  /* מתג מקטעים גולש · ארבעה מקטעים */
  :is(#classAsk,#delAsk,#sizeAsk,#sheetAsk,#cfmAsk) .seg4{position:relative;display:flex;padding:4px;border-radius:999px;margin:14px 0 2px;
    background:rgba(255,255,255,.13);backdrop-filter:blur(16px) saturate(170%);-webkit-backdrop-filter:blur(16px) saturate(170%);
    box-shadow:inset 0 0 0 1px rgba(255,255,255,.44),inset 1.5px 1.5px 0 -.5px rgba(255,255,255,.7),inset -1px -1px 0 -.5px rgba(0,0,0,.1),0 6px 16px -10px rgba(44,38,32,.3)}
  :is(#classAsk,#delAsk,#sizeAsk,#sheetAsk,#cfmAsk) .seg4 .thumb{position:absolute;top:4px;bottom:4px;inset-inline-start:4px;width:calc((100% - 8px)/4);border-radius:999px;z-index:0;
    background:linear-gradient(180deg,rgba(160,58,36,.94),rgba(143,54,32,.96));
    box-shadow:inset 0 0 0 1px rgba(255,255,255,.36),inset 1.5px 1.5px 0 -.5px rgba(255,255,255,.75),0 6px 14px -8px rgba(143,54,32,.6);
    transition:transform .55s cubic-bezier(.22,.61,.36,1)}
  :is(#classAsk,#delAsk,#sizeAsk,#sheetAsk,#cfmAsk) .seg4[data-i="1"] .thumb{transform:translateX(-100%)}
  :is(#classAsk,#delAsk,#sizeAsk,#sheetAsk,#cfmAsk) .seg4[data-i="2"] .thumb{transform:translateX(-200%)}
  :is(#classAsk,#delAsk,#sizeAsk,#sheetAsk,#cfmAsk) .seg4[data-i="3"] .thumb{transform:translateX(-300%)}
  :is(#classAsk,#delAsk,#sizeAsk,#sheetAsk,#cfmAsk) .seg4[data-i="4"] .thumb{transform:translateX(-400%)}   /* מעבר לקובץ: מקטע חמישי («אחר» בגודל הסבב). רוחב הידית נקבע ב-renderSeg4 */
  :is(#classAsk,#delAsk,#sizeAsk,#sheetAsk,#cfmAsk) .seg4 button{flex:1;position:relative;z-index:1;background:none;border:0;cursor:pointer;height:40px;border-radius:999px;
    font:inherit;font-weight:600;font-size:15px;color:var(--ink);transition:color .25s}
  :is(#classAsk,#delAsk,#sizeAsk,#sheetAsk,#cfmAsk) .seg4 button{padding:1px 6px}   /* ביטול ירושה מהאיפוס *{padding:0}: ערך הדפדפן לכפתור, כמו בקובץ */
  /* 8.10 · סטייה מכוונת מהקובץ המאושר (`transition:color .25s`; tests/168 נועל את החוק למעלה מילה במילה): הצבע מתחלף פעם אחת כשקצה הידית עוברת את מרכז המקטע הסמוך (≈110ms מתוך .55s), ר' #home .lseg */
  :is(#classAsk,#delAsk,#sizeAsk,#sheetAsk,#cfmAsk) .seg4 button{transition:color 0s linear .11s}
  :is(#classAsk,#delAsk,#sizeAsk,#sheetAsk,#cfmAsk) .seg4 button.on{color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.25)}
  :is(#classAsk,#delAsk,#sizeAsk,#sheetAsk,#cfmAsk) .seg4 button span{display:inline-block;transition:transform .3s var(--ease)}
  :is(#classAsk,#delAsk,#sizeAsk,#sheetAsk,#cfmAsk) .seg4 button:active span{transform:scale(.95)}
  @media (prefers-reduced-motion:reduce){:is(#classAsk,#delAsk,#sizeAsk,#sheetAsk,#cfmAsk) .seg4 .thumb,:is(#classAsk,#delAsk,#sizeAsk,#sheetAsk,#cfmAsk) .dlg{transition:none!important;animation:none!important}}

  /* ═════ B · חלונות-הפעלה-והדרכה.html ═════ */
  :is(#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk,#examAsk) .lg{position:relative;isolation:isolate;overflow:hidden;background:rgba(255,255,255,.05);
    backdrop-filter:blur(9px) saturate(200%) brightness(1.08);-webkit-backdrop-filter:blur(9px) saturate(200%) brightness(1.08);
    box-shadow:inset 0 0 14px rgba(255,255,255,.30),inset 0 -6px 12px -10px rgba(0,0,0,.10),0 8px 22px -14px rgba(44,38,32,.18)} /* 20.9 · «כמו אפל»: כמעט צלולה, והאור על השפה */
  @supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){:is(#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk,#examAsk) .lg{background:rgba(255,253,248,.86)}}
  /* 22.9.2026 · font-family:inherit הוא חלק מ-.btn של הקובץ (fd52ffc, 8a4dd69), ולכן כאן מילה במילה. הערך המחושב לא השתנה: button{font-family} של הקובץ כבר נתן את הגופן של החלון */
  :is(#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk,#examAsk) .btn{font-family:inherit;font-weight:600;font-size:17px;border-radius:14px;padding:0 18px;border:0;cursor:pointer;min-height:52px;letter-spacing:-.01em;transition:transform .12s ease,filter .2s ease}
  :is(#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk,#examAsk) .btn{gap:normal}   /* ביטול ירושה מ-.btn.lg של LG-SYSTEM */
  @media (hover:hover) and (pointer:fine){:is(#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk,#examAsk) .btn-primary:hover{transform:none}}   /* ביטול ירושה מ-.btn-primary:hover המשותפת · לפני :active */
  :is(#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk,#examAsk) .btn:active{transform:scale(.97)}
  :is(#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk,#examAsk) .btn-primary{color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.25);background:linear-gradient(180deg,rgba(160,58,36,.94),rgba(143,54,32,.96));
    box-shadow:inset 0 0 12px rgba(255,210,190,.1),inset 0 -8px 16px -12px rgba(0,0,0,.28),0 12px 28px -12px rgba(143,54,32,.6)}
  @media (hover:hover) and (pointer:fine){:is(#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk,#examAsk) .btn-primary:hover{filter:brightness(1.06)}}
  :is(#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk,#examAsk) .btn-ghost{color:var(--ink)}
  @media (hover:hover) and (pointer:fine){:is(#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk,#examAsk) .btn-ghost:hover{filter:brightness(1.03)}}

  /* ===== החלונות · שכבה מקומית מעל הראש המשותף ===== */
  :is(#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk,#examAsk) :is(button,textarea){font-family:var(--body)}
  :is(#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk,#examAsk) :focus-visible{outline:3px solid #a17826;outline-offset:3px;border-radius:6px}
  :is(#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk,#examAsk) .ltr{direction:ltr;unicode-bidi:isolate}
  :is(#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk,#examAsk) .btn{min-height:48px;font-size:16px}

  :is(#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk,#examAsk) .dlg{border-radius:16px;padding:22px 20px 20px;text-align:center;animation:dlg-rise .4s var(--ease) both}
  @keyframes dlg-rise{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

  /* אייקון · עיגול אדום בהיר */
  :is(#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk,#examAsk) .ic{width:60px;height:60px;border-radius:50%;margin:0 auto 12px;display:grid;place-items:center;
    background:radial-gradient(90% 90% at 50% 15%,rgba(181,72,46,.18),rgba(181,72,46,.11));
    box-shadow:inset 0 0 0 1px rgba(181,72,46,.16)}
  :is(#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk,#examAsk) .ic svg{width:29px;height:29px;fill:none;stroke:var(--accent);stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
  :is(#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk,#examAsk) .ic.wa{background:radial-gradient(90% 90% at 50% 15%,rgba(37,211,102,.20),rgba(37,211,102,.13));box-shadow:inset 0 0 0 1px rgba(37,211,102,.20)}
  :is(#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk,#examAsk) .ic.wa svg{stroke:#137a3a}

  :is(#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk,#examAsk) .kick{font-size:11.5px;letter-spacing:.2em;color:var(--gold-text);font-weight:500;margin:0 0 6px}
  :is(#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk,#examAsk) .dlg h3{font-family:var(--display);font-weight:700;font-size:22px;margin:0 0 8px;line-height:1.25;color:var(--ink)}
  :is(#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk,#examAsk) .dlg p{margin:0 0 8px;font-size:15px;line-height:1.55;color:var(--ink)}
  :is(#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk,#examAsk) .dlg p:last-of-type{margin-bottom:0}
  /* 21.9 · החלון מופיע פעם אחת, ואחר כך ההתקנה רק בהגדרות, ולכן השורה שמפנה לשם (חגי, 20.9) */
  :is(#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk,#examAsk) .dlg .fine{font-size:13px;color:var(--ink-soft);margin:12px 0 0}
  :is(#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk,#examAsk) .tip{font-size:13px;color:var(--ink-soft);line-height:1.5}
  :is(#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk,#examAsk) .mail-to{font-family:var(--display);font-weight:700;font-size:17px;color:var(--ink);margin:0 0 10px}
  /* ביטול ירושה מ-.mail-to המשותפת (כתום, !important, רקע זהב ומסגרת): הערכים שהקובץ מקבל בפועל,
     אחרי ש-.dlg p (ספציפי יותר) גובר על .mail-to בגודל ובצבע */
  :is(#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk,#examAsk) .dlg p.mail-to{font-size:15px!important;color:var(--ink)!important;background:none;border-radius:0;padding:0;word-break:normal}

  :is(#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk,#examAsk) .acts{display:flex;flex-direction:column;gap:9px;margin-top:16px}
  :is(#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk,#examAsk) .acts .btn{width:100%;display:inline-flex;align-items:center;justify-content:center;text-decoration:none}
  :is(#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk,#examAsk) a.btn{font-family:inherit}   /* ביטול ירושה מ-.btn המשותפת (Heebo לבד): בקובץ הקישור יורש את הגופן של החלון */
  :is(#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk,#examAsk) .acts .btn.sm{min-height:42px;font-size:14px;font-weight:500}
  :is(#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk,#examAsk) .acts .btn.sm{padding:0 18px;border-radius:14px}   /* ביטול ירושה מ-.btn.lg.sm של LG-SYSTEM */

  /* התקנה · שלושה צעדים */
  :is(#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk,#examAsk) .steps{list-style:none;margin:14px 0 0;padding:0;text-align:start;display:flex;flex-direction:column;gap:9px}
  :is(#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk,#examAsk) .steps li{display:flex;align-items:flex-start;gap:10px;font-size:14.5px;line-height:1.45;color:var(--ink)}
  :is(#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk,#examAsk) .steps li b{font-weight:600}
  :is(#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk,#examAsk) .steps .n{flex:none;width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font-size:13px;font-weight:700;color:#fff;
    background:linear-gradient(180deg,rgba(160,58,36,.95),rgba(143,54,32,.95));box-shadow:inset 0 1px 0 rgba(255,255,255,.45)}
  :is(#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk,#examAsk) .steps svg{width:15px;height:15px;fill:none;stroke:var(--accent);stroke-width:2;vertical-align:-3px}

  /* משוב · סוג הדיווח, שדה, ורשימת מה נשלח */
  :is(#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk,#examAsk) .kinds{display:flex;gap:7px;margin:14px 0 10px}
  :is(#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk,#examAsk) .kinds .k{flex:1;min-height:40px;border:0;border-radius:12px;cursor:pointer;font-size:14px;font-weight:600;color:var(--ink);padding:0 6px}
  :is(#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk,#examAsk) .kinds .k.on{color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.25);
    background:linear-gradient(180deg,rgba(160,58,36,.94),rgba(143,54,32,.96));
    box-shadow:inset 0 0 0 1px rgba(255,255,255,.38),inset 1.5px 1.5px 0 -.5px rgba(255,255,255,.8),0 8px 18px -8px rgba(143,54,32,.55)}
  :is(#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk,#examAsk) textarea{width:100%;min-height:96px;resize:vertical;border-radius:12px;border:1px solid var(--line);background:var(--paper);
    color:var(--ink);font-size:15px;line-height:1.5;padding:11px 12px;text-align:center}
  :is(#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk,#examAsk) textarea{margin:0}   /* ביטול ירושה מ-#fbBody הישן (margin-top:11px) */
  :is(#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk,#examAsk) textarea::placeholder{color:var(--ink-soft)}
  :is(#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk,#examAsk) textarea:focus{outline:0;border-color:#a17826;box-shadow:0 0 0 3px rgba(161,120,38,.22)}
  :is(#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk,#examAsk) .ctx{font-size:12.5px;color:var(--ink-soft);line-height:1.5;margin:10px 0 0}

  /* איך היה המבחן · ארבע אפשרויות */
  :is(#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk,#examAsk) .opts{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:14px}
  :is(#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk,#examAsk) .opts .btn{min-height:44px;font-size:15px;width:100%}
  :is(#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk,#examAsk) .opts .btn{align-items:normal;justify-content:normal}   /* ביטול ירושה מ-.btn.lg של LG-SYSTEM */
  @media (prefers-reduced-motion:reduce){:is(#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk,#examAsk) .dlg{animation:none}}

  /* מעבר לקובץ · «איך היה המבחן» יושב בזרימה של הבית: אותו ריווח שהיה לו כפס (#home .exam-pill, 12px) */
  :is(#examAsk){margin-top:12px}
  /* מעבר לקבצים · ✕ של הוואטסאפ והסרטון (חגי ביקש אותו במפורש, tests/51 ו-56) נשאר בפינה: .lg>* של
     הזכוכית היה מוריד אותו לזרימה, מעל האייקון */
  :is(#waAsk,#vidAsk) .ask-x{position:absolute}
  /* כל תנועה נכבית ב-reduce (הבריף, נגישות): הכפתורים, השדה והמתג, מעבר למה שהקבצים עצמם מכבים */
  @media (prefers-reduced-motion:reduce){
    :is(#classAsk,#delAsk,#sizeAsk,#sheetAsk,#cfmAsk,#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk,#examAsk) :is(.btn,.fld,.seg4 button,.seg4 button span){transition:none}
    :is(#classAsk,#delAsk,#sizeAsk,#sheetAsk,#cfmAsk,#notifAsk,#installAsk,#mailAsk,#waAsk,#vidAsk,#lvAsk,#fbAsk,#sqAsk,#examAsk) .btn:active{transform:none}
    :is(#classAsk,#delAsk,#sizeAsk,#sheetAsk,#cfmAsk) .seg4 button:active span{transform:none}
  }
  /* DIALOGS-10.9:END */
  /* ═════════════════════════════════════════════════════════════════════════
     SENT-10.9:START · השלמת המשפטים · העתקה של הקובץ המאושר · 22.9.2026
     ═════════════════════════════════════════════════════════════════════════
     מקור: ביקורת/עיצוב-9.9/מסך-השלמת-משפטים.html (אושר 10.9 13:20, סבב 5). הכרעת חגי 11.9 11:00: ה-CSS
     נכנס מילה במילה ובאותם שמות מחלקות, המבנה נכנס ל-index.html כמו בקובץ, ורק מזהים וחיבורים ל-JS
     משתנים. מחליף את .topbar ,.qmeta ,.s-len ,.pbtn ,.s-sent ,.s-w ,.s-gloss ,.s-opt ו-.actions במסך הזה;
     הכללים הישנים נשארים למעלה, כי מילות הקישור (#conn) עדיין משתמשות בהם.

     ⛔ איך זה לא נוגע במסך אחר: כל כלל נעול תחת #sent, או תחת ה-body כשהמסך פתוח (:has). הסדר הוא
     הסדר של הקובץ, ולכן גם המפל שבתוך המסך הוא של הקובץ: .lg גובר על הצל של .exit, ו-.btn-primary
     גובר על הרקע של .lg.
     ⚠ מה שנוסף מעבר לקובץ, וכל אחד מסומן ליד הכלל שלו:
       · «ביטול ירושה» · כלל משותף של האפליקציה מצהיר על אותה מחלקה מאפיין שהקובץ אינו מצהיר, או
         שהאיפוס הגלובלי *{margin:0;padding:0} מוחק ברירת מחדל של הדפדפן. הערך הוא מה שהקובץ המאושר
         מקבל בפועל, כפי שנמדד בכרום ב-375.
       · כללי .btn של הקובץ נכתבים כאן עם .lg (בקובץ כל .btn הוא .lg): כך כפתורי מסך סוף הסבב
         (#sentDone, אין לו מקבילה בקובץ) נשארים כמו שהיו ואינם מעוצבים מחדש.
       · כל :hover עטוף ב-(hover:hover) and (pointer:fine) (tests/61), וכל תנועה נכבית ב-reduce.
       · transition:all של הקובץ נפרש לרשימת התכונות המפורשת של האפליקציה (59d2423). אותה תנועה.
       · נגישות (AA): .exp .vd.bad בצבע שכבר נמדד באפליקציה (#b0462d, ‏4.58:1 על --paper-deep) ולא
         ב---accent של הקובץ (4.38:1, מתחת ל-4.5 לטקסט של 17px). tests/84 נועל את שניהם.
       · @keyframes land מוגדר זהה בבלוק PRACTICE-10.9 ואינו מוגדר כאן שוב. fade מוגדר כאן, וגם
         LEVEL-10.9 למטה נשען עליו (אותם ערכים בשני הקבצים).
     ⚠ מה שבקובץ ואינו כאן: .hint ו-.foot (אין להם רכיב במסך הזה באפליקציה, ראו ההערה ב-index.html). */
  #sent{
    --paper:#f6f1e7; --paper-deep:#efe8da; --card:#fffdf8; --ink:#2c2620; --ink-soft:#5e564a;
    --gold:#c9962f; --gold-soft:#f1e3bf; --accent:#b5482e; --accent-deep:#8f3620; --line:#e3d8c4; --ok:#437147; --ok-deep:#3f6942;
    --display:"Frank Ruhl Libre","David Libre",serif; --body:"Heebo","Arial Hebrew",Arial,sans-serif; --ease:cubic-bezier(.23,1,.32,1);
    color:var(--ink);font-family:var(--body);font-size:17px;line-height:1.55}
  /* ה-body של הקובץ (שורות 12-13): חמש ההילות הקבועות, כמו בתרגול ובסיכום, רק כשהמסך פתוח */
  body:has(#sent:not(.hidden)){
    font-family:"Heebo","Arial Hebrew",Arial,sans-serif;font-size:17px;line-height:1.55;
    background-image:radial-gradient(340px 300px at 88% 40px,rgba(201,150,47,.30),transparent 70%),radial-gradient(320px 320px at 4% 420px,rgba(181,72,46,.22),transparent 70%),radial-gradient(340px 320px at 96% 800px,rgba(201,150,47,.24),transparent 70%),radial-gradient(320px 320px at 6% 1180px,rgba(181,72,46,.18),transparent 70%),radial-gradient(340px 320px at 94% 1560px,rgba(201,150,47,.22),transparent 70%);
    background-repeat:no-repeat}
  /* הדף · `.wrap` של הקובץ הוא טור בגובה המסך. כמו #quiz: רק כשהמסך פתוח, ו-#sent עצמו אינו יוצר קופסה */
  .wrap:has(>#sent:not(.hidden)){max-width:520px;margin:0 auto;padding:0 18px 60px;min-height:100vh;display:flex;flex-direction:column}
  body.ios-web .wrap:has(>#sent:not(.hidden)){padding-bottom:calc(60px + 68px)}
  #sent:not(.hidden){display:contents}
  /* ===== Liquid Glass ===== · ::before ו-::after זהים לאלה של LG-SYSTEM ולכן אינם מועתקים שוב.
     #sent .lg כן, כדי לגבור על .btn-ghost.lg המשותפת (רקע .16), כמו #results .lg. */
  #sent .lg{position:relative;isolation:isolate;overflow:hidden;background:rgba(255,255,255,.05);
    backdrop-filter:blur(9px) saturate(200%) brightness(1.08);-webkit-backdrop-filter:blur(9px) saturate(200%) brightness(1.08);
    box-shadow:inset 0 0 14px rgba(255,255,255,.30),inset 0 -6px 12px -10px rgba(0,0,0,.10),0 8px 22px -14px rgba(44,38,32,.18)} /* 20.9 · «כמו אפל»: כמעט צלולה, והאור על השפה */
  /* דפדפן בלי טשטוש בכלל: משטח אטום, כמו ב-LG-SYSTEM (אין לו מקבילה בקובץ). לפני .btn-primary, שגובר עליו */
  @supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){#sent .lg{background:rgba(255,253,248,.86)}}
  /* ביטול ירושה מ-`.lg>*` של LG-SYSTEM: בקובץ הילדים של הזכוכית אינם מורמים מעל שכבות ההארה.
     ⚠ ב-:where() ובספציפיות של מזהה בלבד, כדי שהמתג (.seg button ו-.knob, שהקובץ ממקם בעצמו) יגבר */
  #sent :where(.lg)>*{z-index:auto}
  #sent :where(.lg)>:where(:not(.lg)){position:static}
  #sent .btn.lg{font-family:inherit;font-weight:600;font-size:17px;border-radius:14px;padding:0 18px;border:0;cursor:pointer;min-height:52px;letter-spacing:-.01em;transition:transform .12s ease,filter .2s ease}
  #sent .btn.lg{display:inline-block;align-items:normal;justify-content:normal;gap:normal}   /* ביטול ירושה מ-.btn.lg של LG-SYSTEM */
  @media (hover:hover) and (pointer:fine){#sent .btn-primary.lg:hover{transform:none}}   /* ביטול ירושה מ-.btn-primary:hover המשותפת · לפני :active */
  #sent .btn.lg:active{transform:scale(.97)}
  #sent .btn-primary.lg{color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.25);background:linear-gradient(180deg,rgba(160,58,36,.94),rgba(143,54,32,.96));
    box-shadow:inset 0 0 12px rgba(255,210,190,.1),inset 0 -8px 16px -12px rgba(0,0,0,.28),0 12px 28px -12px rgba(143,54,32,.6)}
  @media (hover:hover) and (pointer:fine){#sent .btn-primary.lg:hover{filter:brightness(1.06)}}
  #sent .btn-primary.lg::before{background:radial-gradient(130% 70% at 50% -10%,rgba(255,255,255,.16),rgba(255,255,255,0) 60%),radial-gradient(90% 50% at 50% 115%,rgba(255,200,180,.18),rgba(255,255,255,0) 60%)}
  #sent .btn-ghost.lg{color:var(--ink)}
  @media (hover:hover) and (pointer:fine){#sent .btn-ghost.lg:hover{filter:brightness(1.03)}}

  /* ===== השלמת משפטים ===== */
  #sent button{font-family:var(--body)}
  #sent :focus-visible{outline:3px solid #a17826;outline-offset:3px;border-radius:6px}
  #sent .top{display:flex;align-items:center;justify-content:space-between;padding:16px 0 10px}
  #sent .exit{display:inline-flex;align-items:center;gap:7px;border:0;border-radius:11px;color:var(--ink);font-size:14px;font-weight:500;cursor:pointer;padding:7px 13px 7px 9px}
  #sent .exit svg{width:16px;height:16px;stroke:currentColor;stroke-width:2;fill:none;stroke-linecap:round}
  #sent .scope{font-family:var(--display);font-weight:700;font-size:18px}
  #sent .prog{height:3px;background:var(--line);border-radius:2px;overflow:hidden}
  #sent .prog{margin-bottom:0;box-shadow:none}   /* ביטול ירושה מ-.prog המשותפת */
  #sent .prog i{display:block;height:100%;width:0;background:var(--gold);transition:width .5s var(--ease)}
  #sent .meta{display:flex;justify-content:space-between;font-size:12px;letter-spacing:.14em;color:var(--ink-soft);padding:10px 2px 0;font-variant-numeric:tabular-nums}

  /* --- מסך א · בחירה --- */
  #sent .lead{font-family:var(--display);font-weight:700;font-size:24px;text-align:center;margin:22px 0 4px;text-wrap:balance}
  #sent .sub{text-align:center;color:var(--ink-soft);font-size:15px;margin:0 0 22px}
  #sent .lenrow{display:flex;align-items:center;justify-content:center;gap:12px;margin:0 0 18px}
  /* מתג זכוכית גולש · שתי שכבות */
  #sent .seg{position:relative;display:inline-grid;grid-auto-flow:column;grid-auto-columns:1fr;border-radius:999px;padding:4px;isolation:isolate}
  #sent .seg{gap:normal;border:0}   /* ביטול ירושה מ-.seg המשותפת (רווח 6px ומסגרת) */
  #sent .seg.lg{background:rgba(255,255,255,.08);backdrop-filter:blur(18px) saturate(190%) brightness(1.05);-webkit-backdrop-filter:blur(18px) saturate(190%) brightness(1.05);box-shadow:inset 0 0 0 1px rgba(255,255,255,.45),inset 1.5px 1.5px 0 -.5px rgba(255,255,255,.9),inset -1px -1px 0 -.5px rgba(0,0,0,.1),0 10px 26px -14px rgba(44,38,32,.3)}
  #sent .seg .knob{opacity:.9}
  #sent .seg .knob{position:absolute;top:4px;bottom:4px;inset-inline-start:4px;width:calc(50% - 4px);border-radius:999px;background:linear-gradient(180deg,rgba(160,58,36,.94),rgba(143,54,32,.96));box-shadow:inset 0 0 0 1px rgba(255,255,255,.38),inset 1.5px 1.5px 0 -.5px rgba(255,255,255,.8),0 6px 14px -6px rgba(143,54,32,.6);transition:transform .55s cubic-bezier(.22,.61,.36,1);z-index:0}
  #sent .seg[data-on="1"] .knob{transform:translateX(-100%)}
  #sent .seg button{position:relative;z-index:1;background:none;border:0;padding:8px 18px;border-radius:999px;font-size:15px;font-weight:600;color:var(--ink);cursor:pointer;transition:color .3s;white-space:nowrap}
  #sent .seg button:active{transform:none}   /* ביטול ירושה מ-.seg button:active המשותפת · בקובץ הידית היא התגובה */
  #sent .seg button.on{color:#fff}
  #sent .bands{display:flex;flex-direction:column;gap:10px}
  #sent .band{display:grid;grid-template-columns:48px 1fr auto;align-items:center;gap:12px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px 14px;text-align:start;cursor:pointer;box-shadow:0 1px 0 rgba(255,255,255,.7) inset,0 12px 28px -24px rgba(44,38,32,.4);transition:transform .2s var(--ease),box-shadow .2s}
  @media (hover:hover) and (pointer:fine){#sent .band:hover{transform:translateY(-1px);box-shadow:0 1px 0 rgba(255,255,255,.7) inset,0 16px 32px -22px rgba(44,38,32,.45)}}
  #sent .band .ic{width:48px;height:48px;border-radius:12px;display:grid;place-items:center;background:var(--paper-deep)}
  #sent .band .ic svg{width:24px;height:24px;stroke:var(--accent);stroke-width:1.8;fill:none;stroke-linecap:round;stroke-linejoin:round}
  #sent .band b{display:block;font-family:var(--display);font-size:19px;font-weight:700}
  #sent .band b em{font-style:normal;font-family:var(--body);font-weight:600;font-size:13px;margin-inline-start:8px;vertical-align:2px;color:var(--pc)}
  #sent .band span{display:block;font-size:13.5px;color:var(--ink-soft);margin-top:2px}
  #sent .band .bar{height:5px;border-radius:3px;background:rgba(44,38,32,.12);overflow:hidden;margin-top:8px}
  #sent .band .bar i{display:block;height:100%;border-radius:3px;background:var(--pc)}
  #sent .band .arr{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;color:var(--accent);background:rgba(181,72,46,.08);box-shadow:inset 0 0 0 1px rgba(255,255,255,.6),inset 1px 1px 0 -.5px rgba(255,255,255,.9),0 4px 10px -6px rgba(181,72,46,.5);transition:transform .3s var(--ease),scale .3s var(--ease),opacity .3s var(--ease),color .3s var(--ease),background-color .3s var(--ease),border-color .3s var(--ease),box-shadow .3s var(--ease),fill .3s var(--ease),stroke .3s var(--ease),filter .3s var(--ease)}
  #sent .band .arr svg{width:18px;height:18px;stroke:currentColor;stroke-width:2.2;fill:none;stroke-linecap:round;stroke-linejoin:round;transition:transform .3s var(--ease)}
  @media (hover:hover) and (pointer:fine){#sent .band:hover .arr{background:rgba(181,72,46,.14);box-shadow:inset 0 0 0 1px rgba(255,255,255,.7),0 6px 14px -6px rgba(181,72,46,.6)}}
  @media (hover:hover) and (pointer:fine){#sent .band:hover .arr svg{transform:translateX(-3px)}}
  #sent .band.done .ic svg{stroke:var(--ok)}

  /* --- מסך ב · השאלה --- */
  #sent .card{position:relative;margin:26px 0 0;background:var(--card);border:1px solid var(--line);border-radius:8px;padding:24px 22px 22px;box-shadow:0 1px 0 rgba(255,255,255,.7) inset,0 24px 48px -36px rgba(44,38,32,.35);outline:1px solid var(--card);outline-offset:-5px}
  #sent .card{text-align:start}   /* ביטול ירושה מ-.card המשותפת */
  #sent .kind{font-size:14px;color:var(--ink-soft);text-align:center;letter-spacing:.04em;margin:0 0 14px}
  #sent .sent{direction:ltr;text-align:left;font-size:21px;line-height:1.7;margin:0;font-family:"Frank Ruhl Libre",Georgia,serif;font-weight:400}
  /* ⚠ נגישות: המילים הן חלק מהמשפט (WCAG 2.5.8, חריג «בתוך משפט»), ומה שנבחר נאמר גם בטקסט · המילה
     עצמה נכתבת בבועת הפירוש (#sentGlossW). לכן הכללים של הקובץ כמו שהם, בלי הריפוד והמסגרת של .s-w */
  #sent .sent .w{background:none;border:0;padding:0;font:inherit;color:inherit;cursor:pointer;border-bottom:1px dotted rgba(115,106,92,.5);border-radius:0}
  #sent .sent .w.on{background:var(--gold-soft);border-bottom-color:var(--gold)}
  #sent .sent .bl{display:inline-block;min-width:88px;border-bottom:2px solid var(--accent);text-align:center;color:var(--accent);font-weight:700;transition:transform .3s var(--ease),scale .3s var(--ease),opacity .3s var(--ease),color .3s var(--ease),background-color .3s var(--ease),border-color .3s var(--ease),box-shadow .3s var(--ease),fill .3s var(--ease),stroke .3s var(--ease),filter .3s var(--ease)}
  /* ⭐ 2.10.2026 · screens-fix · המילה שנחשפה: הדגשה נקייה בצבע המותג, בלי הקו הירוק שמתחתיה ובלי הרוחב
     המינימלי של החסר, ובלי הקווים המנוקדים של שאר המילים (נשארים רק בזמן השאלה, כי הם הרמז «הקש לפירוש») */
  #sent .sent .bl.filled{border-bottom-color:var(--ok);color:var(--ok)}
  #sent .sent .bl.filled{min-width:0;border-bottom:0;color:var(--accent);background:var(--accent-soft,rgba(181,72,46,.12));border-radius:6px;padding:0 6px}
  #sent .sent.ans .w{border-bottom:0}
  /* ⚠ אין לו מקבילה בקובץ: מספור שני החסרים בפריט זוג (sentTextHtml), בגודל שהיה לו עד היום */
  #sent .sent .bl sup{font-size:.62em;font-weight:700;vertical-align:super;margin-inline-start:1px}
  #sent .tap{font-size:13px;color:var(--ink-soft);text-align:center;margin:12px 0 0}
  #sent .gloss{display:flex;align-items:center;justify-content:center;gap:10px;margin:12px auto 0;padding:9px 14px;border-radius:12px;background:var(--paper-deep);font-size:15px;max-width:100%}
  #sent .gloss b{font-family:"Frank Ruhl Libre",serif;direction:ltr}
  #sent .gloss .x{background:none;border:0;color:var(--ink-soft);cursor:pointer;font-size:14px;padding:0 4px;min-width:44px;min-height:44px}
  #sent .opts{display:flex;flex-direction:column;gap:10px;margin-top:18px}
  #sent .opt{display:grid;grid-template-columns:1fr auto;align-items:center;gap:10px;min-height:52px;padding:0 16px;border-radius:14px;border:0;font-size:18px;font-weight:600;color:var(--ink);cursor:pointer;text-align:left;direction:ltr;transition:transform .25s var(--ease),scale .25s var(--ease),opacity .25s var(--ease),color .25s var(--ease),background-color .25s var(--ease),border-color .25s var(--ease),box-shadow .25s var(--ease),fill .25s var(--ease),stroke .25s var(--ease),filter .25s var(--ease)}
  @media (hover:hover) and (pointer:fine){#sent .opt:hover:not(:disabled){filter:brightness(1.03)}}
  #sent .opt:disabled{cursor:default}
  #sent .opt .mk{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;opacity:0;transform:scale(.6);transition:transform .3s var(--ease),scale .3s var(--ease),opacity .3s var(--ease),color .3s var(--ease),background-color .3s var(--ease),border-color .3s var(--ease),box-shadow .3s var(--ease),fill .3s var(--ease),stroke .3s var(--ease),filter .3s var(--ease)}
  #sent .opt .mk svg{width:15px;height:15px;stroke:#fff;stroke-width:2.6;fill:none;stroke-linecap:round;stroke-linejoin:round}
  #sent .opt.right{box-shadow:inset 0 0 0 2px var(--ok),0 1px 0 rgba(255,255,255,.7) inset}
  #sent .opt.right .mk{opacity:1;transform:none;background:var(--ok)}
  #sent .opt.wrong{box-shadow:inset 0 0 0 2px var(--accent),0 1px 0 rgba(255,255,255,.7) inset;opacity:.85}
  #sent .opt.wrong .mk{opacity:1;transform:none;background:var(--accent)}
  #sent .opt.dim{opacity:.45}
  #sent .say{width:36px;height:36px;min-width:44px;min-height:44px;border-radius:50%;border:1px solid var(--line);background:none;color:var(--ink-soft);cursor:pointer;display:grid;place-items:center;flex:none}
  #sent .say{padding:1px 6px;font-size:13.3333px;line-height:normal;transition:none}   /* ביטול ירושה מ-.say המשותפת: ערכי הדפדפן לכפתור, כמו בקובץ */
  @media (hover:hover) and (pointer:fine){#sent .say:hover{border-color:var(--line);color:var(--ink-soft)}}   /* ביטול ירושה מ-.say:hover המשותפת */
  #sent .say.on{border-color:var(--gold);background:rgba(201,150,47,.12)}   /* בזמן הקראה (TTS.say), כמו #quiz .say.on · אין לו מקבילה בקובץ */
  #sent .say svg{width:17px;height:17px;stroke:currentColor;stroke-width:1.8;fill:none;stroke-linecap:round;stroke-linejoin:round}
  #sent .optrow{display:grid;grid-template-columns:1fr 36px;gap:8px;align-items:center}
  /* ההסבר */
  #sent .exp{margin-top:16px;padding:14px 16px;border-radius:12px;background:var(--paper-deep);font-size:15.5px;line-height:1.65;animation:land .45s var(--ease)}
  #sent .exp .vd{font-family:var(--display);font-weight:700;font-size:17px;margin:0 0 2px}
  #sent .exp .vd.ok{color:var(--ok-deep)}
  #sent .exp .vd.bad{color:#b0462d}   /* ⚠ נגישות: בקובץ var(--accent), ‏4.38:1 על --paper-deep. הערך הנמדד של האפליקציה (.s-why .vd.bad, tests/84) */
  #sent .exp p{margin:0 0 10px}
  #sent .exp p:last-child{margin:0}
  #sent .exp code{font:inherit;font-weight:700;direction:ltr;unicode-bidi:isolate}
  #sent .exp .tr{margin-top:10px;padding-top:10px;border-top:1px solid var(--line);color:var(--ink-soft);font-size:14.5px}
  #sent .exp .tr b{color:var(--ink)}
  #sent .next{width:100%;margin-top:14px}
  #sent .foot{margin-top:auto;padding-top:26px;font-size:12px;color:var(--ink-soft);text-align:center}
  #sent .foot{margin-bottom:1em}   /* ביטול ירושה: ה-margin של <p> מהדפדפן, שהאיפוס הגלובלי מוחק · אותו דפוס כמו #quiz .foot */
  #sent .foot b{color:var(--ink);font-weight:500}
  /* ⭐ 27.9 · עברית: #sent נבנה במקור למשפט אנגלי (LTR קבוע, כמו #conn מול .s-sent למעלה
     -- אותו שורש בדיוק, אותו תיקון). app.js מוסיף מחלקת .he ל-#sent כשLANG==='he'
     (startSentRound), וזה חוזר ל-RTL -- שהוא ממילא ברירת המחדל של האפליקציה כולה, לא כיוון
     חדש. הספציפיות (#sent.he גובר על #sent) לא תלויה בסדר הכללים בקובץ. */
  #sent.he .sent{direction:rtl;text-align:right}
  #sent.he .opt{direction:rtl;text-align:right}
  #sent.he .exp code{direction:rtl;unicode-bidi:plaintext}
  /* מעבר בין שני המסכים */
  #sent .screen{animation:fade .4s var(--ease)}
  @keyframes fade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
  /* ⚠ אין לו מקבילה בקובץ: «המילים» ו«המשפט» שנשארו בהסבר יושבים מתחת לתרגום של הקובץ, בתוך
     .s-exp ובכללים הישנים שלו (למעלה בקובץ), בלי כלל חדש כאן. #sent .foot כן נבנה (gate-w3c 23.9),
     ומוצג רק לסוג מילת קישור "example" · ראו ההערה ב-index.html מעל #sentFoot. */

  @media (prefers-reduced-motion:reduce){
    #sent .screen,#sent .exp{animation:none}
    #sent .prog i,#sent .btn.lg,#sent .seg .knob,#sent .seg button,#sent .band,#sent .band .arr,#sent .band .arr svg,#sent .sent .bl,#sent .opt,#sent .opt .mk{transition:none}
    #sent .btn.lg:active{transform:none}
    @media (hover:hover) and (pointer:fine){#sent .band:hover{transform:none}}
    @media (hover:hover) and (pointer:fine){#sent .band:hover .arr svg{transform:none}}
  }
  /* SENT-10.9:END */
  /* ═════════════════════════════════════════════════════════════════════════
     LEVEL-10.9:START · מבחן הרמה · העתקה של הקובץ המאושר · 22.9.2026
     ═════════════════════════════════════════════════════════════════════════
     מקור: ביקורת/עיצוב-9.9/מסך-מבחן-הרמה.html (אושר 10.9 14:20, סבב 6). הכרעת חגי 11.9 11:00: ה-CSS
     נכנס מילה במילה ובאותם שמות מחלקות, המבנה נכנס ל-index.html כמו בקובץ, ורק מזהים וחיבורים ל-JS
     משתנים. מחליף את .topbar ,.welcome-head ,.q-row ,.lv-opts ,.lv-dunno ,.lv-badge ,.lv-bands ו-.lv-offer
     במסך הזה; הכללים הישנים נשארים למעלה, כי מבחן היחידה (#exOpts) עדיין נושא את .lv-opts.

     ⛔ איך זה לא נוגע במסך אחר: כל כלל נעול תחת #level, או תחת ה-body כשהמסך פתוח (:has).
     ⚠ מה שנוסף מעבר לקובץ, וכל אחד מסומן ליד הכלל שלו: «ביטול ירושה» (כמו ב-SENT-10.9), :hover עטוף,
       תנועה שנכבית ב-reduce (המחוג כבר בקובץ עצמו), transition:all נפרש, המילה בכיוון שלה במבחן העברי,
       ומשוב נכון/שגוי של האפליקציה בכללים של מסך-השלמת-משפטים.html.
     ⚠ מה שבקובץ ואינו כאן: .intro .pre ,.foot ,.badge small ,.lead ,.sub ,.from .unit ,.from .arr ,.offer h2
       ו-.band.off (אין להם רכיב בקובץ עצמו, רק כללים), ו-.hint של הראש המשותף. */
  #level{
    --paper:#f6f1e7; --paper-deep:#efe8da; --card:#fffdf8; --ink:#2c2620; --ink-soft:#5e564a;
    --gold:#c9962f; --gold-soft:#f1e3bf; --accent:#b5482e; --accent-deep:#8f3620; --line:#e3d8c4; --ok:#437147;
    --display:"Frank Ruhl Libre","David Libre",serif; --body:"Heebo","Arial Hebrew",Arial,sans-serif; --ease:cubic-bezier(.23,1,.32,1);
    color:var(--ink);font-family:var(--body);font-size:17px;line-height:1.55}
  body:has(#level:not(.hidden)){
    font-family:"Heebo","Arial Hebrew",Arial,sans-serif;font-size:17px;line-height:1.55;
    background-image:radial-gradient(340px 300px at 88% 40px,rgba(201,150,47,.30),transparent 70%),radial-gradient(320px 320px at 4% 420px,rgba(181,72,46,.22),transparent 70%),radial-gradient(340px 320px at 96% 800px,rgba(201,150,47,.24),transparent 70%),radial-gradient(320px 320px at 6% 1180px,rgba(181,72,46,.18),transparent 70%),radial-gradient(340px 320px at 94% 1560px,rgba(201,150,47,.22),transparent 70%);
    background-repeat:no-repeat}
  .wrap:has(>#level:not(.hidden)){max-width:520px;margin:0 auto;padding:0 18px 60px;min-height:100vh;display:flex;flex-direction:column}
  body.ios-web .wrap:has(>#level:not(.hidden)){padding-bottom:calc(60px + 68px)}
  #level:not(.hidden){display:contents}
  #level .lg{position:relative;isolation:isolate;overflow:hidden;background:rgba(255,255,255,.05);
    backdrop-filter:blur(9px) saturate(200%) brightness(1.08);-webkit-backdrop-filter:blur(9px) saturate(200%) brightness(1.08);
    box-shadow:inset 0 0 14px rgba(255,255,255,.30),inset 0 -6px 12px -10px rgba(0,0,0,.10),0 8px 22px -14px rgba(44,38,32,.18)} /* 20.9 · «כמו אפל»: כמעט צלולה, והאור על השפה */
  @supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){#level .lg{background:rgba(255,253,248,.86)}}
  /* ביטול ירושה מ-`.lg>*` של LG-SYSTEM, כמו ב-SENT-10.9 (ובספציפיות של מזהה בלבד: .badge svg ממוקם בקובץ) */
  #level :where(.lg)>*{z-index:auto}
  #level :where(.lg)>:where(:not(.lg)){position:static}
  #level .btn{font-family:inherit;font-weight:600;font-size:17px;border-radius:14px;padding:0 18px;border:0;cursor:pointer;min-height:52px;letter-spacing:-.01em;transition:transform .12s ease,filter .2s ease}
  #level .btn{display:inline-block;align-items:normal;justify-content:normal;gap:normal}   /* ביטול ירושה מ-.btn.lg של LG-SYSTEM */
  @media (hover:hover) and (pointer:fine){#level .btn-primary:hover{transform:none}}   /* ביטול ירושה מ-.btn-primary:hover המשותפת · לפני :active */
  #level .btn:active{transform:scale(.97)}
  #level .btn-primary{color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.25);background:linear-gradient(180deg,rgba(160,58,36,.94),rgba(143,54,32,.96));
    box-shadow:inset 0 0 12px rgba(255,210,190,.1),inset 0 -8px 16px -12px rgba(0,0,0,.28),0 12px 28px -12px rgba(143,54,32,.6)}
  @media (hover:hover) and (pointer:fine){#level .btn-primary:hover{filter:brightness(1.06)}}
  #level .btn-primary.lg::before{background:radial-gradient(130% 70% at 50% -10%,rgba(255,255,255,.16),rgba(255,255,255,0) 60%),radial-gradient(90% 50% at 50% 115%,rgba(255,200,180,.18),rgba(255,255,255,0) 60%)}
  #level .btn-ghost{color:var(--ink)}
  @media (hover:hover) and (pointer:fine){#level .btn-ghost:hover{filter:brightness(1.03)}}

  /* ===== מבחן הרמה ===== */
  #level button{font-family:var(--body)}
  #level :focus-visible{outline:3px solid #a17826;outline-offset:3px;border-radius:6px}
  #level .top{display:flex;align-items:center;justify-content:space-between;padding:16px 0 10px}
  #level .exit{display:inline-flex;align-items:center;gap:7px;border:0;border-radius:11px;color:var(--ink);font-size:14px;font-weight:500;cursor:pointer;padding:7px 13px 7px 9px}
  #level .exit svg{width:16px;height:16px;stroke:currentColor;stroke-width:2;fill:none;stroke-linecap:round}
  #level .scope{font-family:var(--display);font-weight:700;font-size:18px}
  #level .prog{height:3px;background:var(--line);border-radius:2px;overflow:hidden}
  #level .prog{margin-bottom:0;box-shadow:none}   /* ביטול ירושה מ-.prog המשותפת */
  #level .prog i{display:block;height:100%;width:0;background:var(--gold);transition:width .5s var(--ease)}
  #level .meta{display:flex;justify-content:space-between;font-size:12px;letter-spacing:.14em;color:var(--ink-soft);padding:10px 2px 0;font-variant-numeric:tabular-nums}
  #level .screen{animation:fade .4s var(--ease)}   /* @keyframes fade · מוגדר ב-SENT-10.9, אותם ערכים */

  /* --- פתיחה --- */
  #level .intro{text-align:center;padding:8vh 0 0}
  #level .kicker{font-size:13px;letter-spacing:.14em;color:var(--ink-soft);margin:0 0 12px}
  #level .kicker{font-weight:400;text-transform:none}   /* ביטול ירושה מ-.kicker המשותפת (זהב, 700, אותיות גדולות) */
  #level .intro h1{font-family:var(--display);font-weight:700;font-size:30px;line-height:1.2;margin:0 0 12px;text-wrap:balance}
  #level .intro p{color:var(--ink-soft);font-size:16px;line-height:1.6;margin:0 auto 26px;max-width:38ch}
  #level .intro .btn{width:100%}
  #level .later{width:100%;margin-top:10px}
  /* המד · מתכוונן · מראה ימנית לעברית */
  #level .gauge{display:block;width:130px;height:76px;margin:0 auto 22px}
  #level .gauge .needle{transform-origin:60px 62px;animation:sweep 2.8s linear infinite alternate}
  @keyframes sweep{from{transform:rotate(88deg)}to{transform:rotate(-88deg)}}
  #level .gauge .fill{stroke-dasharray:158;stroke-dashoffset:158;animation:gfill 2.8s linear infinite alternate}
  @keyframes gfill{from{stroke-dashoffset:158}to{stroke-dashoffset:0}}

  /* --- שאלה --- */
  #level .card{position:relative;margin:26px 0 0;background:var(--card);border:1px solid var(--line);border-radius:8px;padding:26px 22px 22px;box-shadow:0 1px 0 rgba(255,255,255,.7) inset,0 24px 48px -36px rgba(44,38,32,.35);outline:1px solid var(--card);outline-offset:-5px}
  #level .card{text-align:start}   /* ביטול ירושה מ-.card המשותפת */
  #level .kind{font-size:14px;color:var(--ink-soft);text-align:center;letter-spacing:.04em;margin:0}
  #level .word{font-family:var(--display);font-weight:700;font-size:clamp(40px,11vw,56px);line-height:1.15;text-align:center;margin:10px 0 18px;direction:ltr}
  #level .word[dir="rtl"]{direction:rtl}   /* ⚠ מעבר לקובץ: במבחן בעברית המילה עברית (lvRender קובע dir ו-lang) */
  #level .say{position:absolute;top:16px;inset-inline-end:14px;background:none;border:1px solid var(--line);border-radius:50%;width:34px;height:34px;min-width:44px;min-height:44px;cursor:pointer;color:var(--ink-soft);display:grid;place-items:center}
  #level .say{padding:1px 6px;font-size:13.3333px;line-height:normal;flex:0 1 auto;transition:none}   /* ביטול ירושה מ-.say המשותפת: ערכי הדפדפן לכפתור, כמו בקובץ */
  @media (hover:hover) and (pointer:fine){#level .say:hover{border-color:var(--line);color:var(--ink-soft)}}   /* ביטול ירושה מ-.say:hover המשותפת */
  #level .say.on{border-color:var(--gold);background:rgba(201,150,47,.12)}   /* בזמן הקראה (TTS.say) · אין לו מקבילה בקובץ */
  #level .say svg{width:17px;height:17px;stroke:currentColor;stroke-width:1.8;fill:none;stroke-linecap:round;stroke-linejoin:round}
  #level .opts{display:flex;flex-direction:column;gap:10px}
  #level .opt{min-height:52px;padding:0 16px;border-radius:14px;border:0;font-size:17px;font-weight:600;color:var(--ink);cursor:pointer;text-align:center;transition:transform .25s var(--ease),scale .25s var(--ease),opacity .25s var(--ease),color .25s var(--ease),background-color .25s var(--ease),border-color .25s var(--ease),box-shadow .25s var(--ease),fill .25s var(--ease),stroke .25s var(--ease),filter .25s var(--ease)}
  @media (hover:hover) and (pointer:fine){#level .opt:hover:not(:disabled){filter:brightness(1.03)}}
  #level .opt:disabled{cursor:default}
  #level .opt.pick{box-shadow:inset 0 0 0 2px var(--gold),0 1px 0 rgba(255,255,255,.7) inset}
  /* ⚠ מעבר לקובץ: המשוב של האפליקציה אחרי בחירה (lvPick, «לא יודע»), בכללים של מסך-השלמת-משפטים.html
     מילה במילה (.opt.right ,.opt.wrong). בקובץ הזה הבחירה מסומנת בזהב בלבד (.pick) */
  #level .opt.right{box-shadow:inset 0 0 0 2px var(--ok),0 1px 0 rgba(255,255,255,.7) inset}
  #level .opt.wrong{box-shadow:inset 0 0 0 2px var(--accent),0 1px 0 rgba(255,255,255,.7) inset;opacity:.85}
  #level .dunno{width:100%;margin-top:12px}
  /* 9.10 נגישות (2.2.1) · «המילה הבאה» תופס את המקום של «לא יודע» אחרי תשובה, באותם מרווחים */
  #level .next{width:100%;margin-top:12px}

  /* --- תוצאה --- */
  #level .res{text-align:center;padding:14px 0 0}
  #level .badge{position:relative;width:150px;height:150px;margin:8px auto 0;display:grid;place-items:center;border-radius:50%}
  #level .badge svg{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg)}
  #level .badge circle{fill:none;stroke-width:8;stroke-linecap:round}
  #level .badge .bg{stroke:var(--line)}
  #level .badge .fg{stroke:var(--ok);stroke-dasharray:408;stroke-dashoffset:var(--off,408);animation:ring 2.6s var(--ease) .3s both}
  @keyframes ring{from{stroke-dashoffset:408}}
  #level .badge b{font-family:var(--display);font-weight:700;font-size:56px;line-height:1;direction:ltr}
  /* ההמלצה · מאיזו יחידה להתחיל */
  #level .from{display:block;margin:0 auto 10px;font-family:var(--display);font-size:22px;font-weight:700;color:var(--ink);line-height:1.2}
  /* אופציה א · מדליה */
  #level .medal{width:96px;height:96px;margin:4px auto 14px;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;background:radial-gradient(circle at 50% 30%,#fff7e0,#f1e3bf 70%);box-shadow:inset 0 0 0 3px rgba(201,150,47,.55),inset 0 0 0 7px #fffdf8,0 10px 24px -12px rgba(201,150,47,.6)}
  #level .medal small{font-size:12px;letter-spacing:.08em;color:var(--ink-soft);line-height:1}
  #level .medal b{font-family:var(--display);font-size:44px;line-height:1;color:var(--ink)}
  /* הרצועות */
  #level .bands{margin:24px 0 0;display:flex;flex-direction:column;gap:7px}
  #level .band{display:grid;grid-template-columns:36px 1fr 64px;align-items:center;gap:10px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:9px 12px;font-size:14px}
  #level .band b{font-family:var(--display);font-size:17px;direction:ltr;text-align:center}
  #level .band .n{display:block;color:var(--ink-soft);text-align:start;min-width:0}
  #level .band .bar{display:block;height:5px;border-radius:3px;background:rgba(44,38,32,.12);overflow:hidden;margin-top:6px}
  #level .band .bar i{display:block;height:100%;border-radius:3px;background:var(--pc)}
  #level .band .pc{text-align:center;font-variant-numeric:tabular-nums;color:var(--ink)}
  #level .band .pc svg{width:14px;height:14px;stroke:var(--ok);stroke-width:2.6;fill:none;stroke-linecap:round;stroke-linejoin:round;vertical-align:-2px;margin-inline-start:3px}
  /* ההצעה · להוציא מילים מוכרות */
  #level .offer{margin:22px 0 0;border-radius:18px;padding:22px 18px 18px;text-align:center;background:rgba(255,255,255,.28)}
  #level .offer.lg{box-shadow:inset 0 0 0 1px rgba(255,255,255,.5),inset 1.5px 1.5px 0 -.5px rgba(255,255,255,.9),inset 0 -8px 16px -12px rgba(0,0,0,.12),0 0 0 3px rgba(201,150,47,.18),0 16px 36px -14px rgba(201,150,47,.45)}
  #level .offer p{margin:0 0 14px;font-size:15px;color:var(--ink-soft);line-height:1.6}
  #level .offer .row{display:flex;gap:10px}
  #level .offer .row .btn{flex:1;line-height:1.25}
  #level .acts{margin:22px 0 0}
  #level .acts .btn{width:100%}
  #level .btn .arr{display:inline-block;margin-inline-start:6px;transition:transform .3s var(--ease)}
  @media (hover:hover) and (pointer:fine){#level .btn:hover .arr{transform:translateX(-4px)}}
  @media (prefers-reduced-motion:reduce){#level .gauge .needle{animation:none!important;transform:rotate(0deg)}#level .gauge .fill{animation:none!important;stroke-dashoffset:0}}
  /* כל תנועה נכבית ב-reduce (הבריף, נגישות), מעבר למחוג שהקובץ עצמו מכבה */
  @media (prefers-reduced-motion:reduce){
    #level .screen,#level .badge .fg{animation:none}
    #level .prog i,#level .btn,#level .opt,#level .btn .arr{transition:none}
    #level .btn:active{transform:none}
    @media (hover:hover) and (pointer:fine){#level .btn:hover .arr{transform:none}}
  }
  /* LEVEL-10.9:END */

  /* ═════════════════════════════════════════════════════════════════════════
     EXAM-23.9:START · מבחן היחידה · העתקה של הקובץ המאושר · 23.9.2026, סבב 2 אחרי שער שלב 2
     ═════════════════════════════════════════════════════════════════════════
     מקור: ביקורת/עיצוב-9.9/מסך-מבחן-היחידה.html. אותו נוהל כמו LEVEL-10.9: ה-CSS נכנס מילה
     במילה ובאותם שמות מחלקות, תחת #exam בלבד (הקובץ הזה נשען על אותה מערכת .lg/.btn/רקע-הדף
     בדיוק כמו הקובץ המאושר של מבחן הרמה -- אותם ערכים, לא מקרה). המזהים נשארים אלה ש-app.js
     כבר כותב אליהם -- רק המחלקות וה-CSS מתחלפים.

     ⛔ איך זה לא נוגע במסך אחר: כל כלל נעול תחת #exam, או תחת body/.wrap כשהמסך פתוח (:has).
     ⚠ מה שנוסף מעבר לקובץ, כמו ב-LEVEL-10.9: «ביטול ירושה» מהמחלקות הישנות שנשארות על האלמנטים
       לצורך זוגות screens.json (.topbar ,.row ,.ex-part ,.ex-miss) -- הן פותרות את הבורר, אבל
       הכללים הישנים שלהן דולפים תכונות (gap ,margin ,color ,border-radius) שהקובץ לא מכיר.
     ⚠ מה שלא מומש, ומדוע: מסנן העדשה (url(#lens), @supports) -- שיפור שרואים רק בדפדפנים בודדים,
       דורש הזרקת SVG לעמוד; .chip/.ic/.dunno(באפשרויות)/.ring/.into/.ask/.seg .knob/.print/.live/
       #prac .arr/.exit svg -- כולם extras מוצהרים בצד "approved" ב-screens.json (row b3553c50).
       #exBreak (פירוט לפי סוג שאלה, אין לו מקבילה בקובץ) -- extras מוצהר בצד "app".
     ⚠ #exSay: הזוג "say" מודד נראות. בקובץ המאושר הרמקול מוצג לכל שאלה מסוג recognise, בלי
       תלות בשפה. באפליקציה הוא מותנה גם ב-LANG==='en' (bindSay/exRender): הקראה מוצעת רק
       למילה באנגלית, לא לעברית -- כי הפרומפט בעברית הוא שפת האם של הלומד. זו הבחנה קיימת
       בהתנהגות האפליקציה ולא תקלת עיצוב; לא שיניתי אותה. במצב הקבוע של השער (LANG='he') הרכיב
       נשאר מוסתר, והזוג מדווח פער "מוצג/מוסתר" -- מדווח כאן, לא נעקף. הסגנון הבסיסי (מיקום,
       גודל, צבע) עדיין תואם לקובץ, לקראת מבחן באנגלית שבו הוא כן ייחשף. */
  #exam{
    --paper:#f6f1e7; --paper-deep:#efe8da; --card:#fffdf8; --ink:#2c2620; --ink-soft:#5e564a;
    --gold:#c9962f; --gold-soft:#f1e3bf; --accent:#b5482e; --accent-deep:#8f3620; --line:#e3d8c4; --ok:#437147; --line-strong:#888276; --ok-deep:#3f6942;
    --display:"Frank Ruhl Libre","David Libre",serif; --body:"Heebo","Arial Hebrew",Arial,sans-serif; --ease:cubic-bezier(.23,1,.32,1);
    color:var(--ink);font-family:var(--body);font-size:17px;line-height:1.55}
  body:has(#exam:not(.hidden)){
    font-family:"Heebo","Arial Hebrew",Arial,sans-serif;font-size:17px;line-height:1.55;
    background-image:radial-gradient(340px 300px at 88% 40px,rgba(201,150,47,.30),transparent 70%),radial-gradient(320px 320px at 4% 420px,rgba(181,72,46,.22),transparent 70%),radial-gradient(340px 320px at 96% 800px,rgba(201,150,47,.24),transparent 70%),radial-gradient(320px 320px at 6% 1180px,rgba(181,72,46,.18),transparent 70%),radial-gradient(340px 320px at 94% 1560px,rgba(201,150,47,.22),transparent 70%);
    background-repeat:no-repeat}
  .wrap:has(>#exam:not(.hidden)){max-width:520px;margin:0 auto;padding:0 18px 60px;min-height:100vh;display:flex;flex-direction:column}
  body.ios-web .wrap:has(>#exam:not(.hidden)){padding-bottom:calc(60px + 68px)}
  #exam:not(.hidden){display:contents}
  #exam .lg{position:relative;isolation:isolate;overflow:hidden;background:rgba(255,255,255,.05);
    backdrop-filter:blur(9px) saturate(200%) brightness(1.08);-webkit-backdrop-filter:blur(9px) saturate(200%) brightness(1.08);
    box-shadow:inset 0 0 14px rgba(255,255,255,.30),inset 0 -6px 12px -10px rgba(0,0,0,.10),0 8px 22px -14px rgba(44,38,32,.18)}
  @supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){#exam .lg{background:rgba(255,253,248,.86)}}
  #exam :where(.lg)>*{z-index:auto}
  #exam :where(.lg)>:where(:not(.lg)){position:static}
  #exam .btn{font-family:inherit;font-weight:600;font-size:17px;border-radius:14px;padding:0 18px;border:0;cursor:pointer;min-height:52px;letter-spacing:-.01em;transition:transform .12s ease,filter .2s ease}
  #exam .btn{display:inline-block;align-items:normal;justify-content:normal;gap:normal}   /* ביטול ירושה מ-.btn.lg של LG-SYSTEM */
  @media (hover:hover) and (pointer:fine){#exam .btn-primary:hover{transform:none}}
  #exam .btn:active{transform:scale(.97)}
  #exam .btn-primary{color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.25);background:linear-gradient(180deg,rgba(160,58,36,.94),rgba(143,54,32,.96));
    box-shadow:inset 0 0 12px rgba(255,210,190,.1),inset 0 -8px 16px -12px rgba(0,0,0,.28),0 12px 28px -12px rgba(143,54,32,.6)}
  @media (hover:hover) and (pointer:fine){#exam .btn-primary:hover{filter:brightness(1.06)}}
  #exam .btn-primary.lg::before{background:radial-gradient(130% 70% at 50% -10%,rgba(255,255,255,.16),rgba(255,255,255,0) 60%),radial-gradient(90% 50% at 50% 115%,rgba(255,200,180,.18),rgba(255,255,255,0) 60%)}
  #exam .btn-ghost{color:var(--ink)}
  @media (hover:hover) and (pointer:fine){#exam .btn-ghost:hover{filter:brightness(1.03)}}

  #exam button{font-family:var(--body)}
  #exam :focus-visible{outline:3px solid #a17826;outline-offset:3px;border-radius:6px}
  #exam .screen{animation:fade .4s var(--ease)}   /* @keyframes fade · מוגדר ב-SENT-10.9/LEVEL-10.9, אותם ערכים */

  #exam .top{display:flex;align-items:center;justify-content:space-between;padding:16px 0 10px}
  #exam .top{margin-bottom:0;gap:normal}   /* ביטול ירושה מ-.topbar המשותפת (נשארת על #exExit/#exCount לצורך זוג "top") */
  #exam .exit{display:inline-flex;align-items:center;gap:7px;border:0;border-radius:11px;color:var(--ink);font-size:14px;font-weight:500;cursor:pointer;padding:7px 13px 7px 9px}
  #exam .scope{font-family:var(--display);font-weight:700;font-size:18px}
  /* ⭐ #exCount משרת שני תפקידים לפי מצב (החוזה: scope בפתיחה, cnt בשאלה). exRender מוסיף
     מחלקת cnt, openExam מסירה אותה -- .scope.cnt (שתי מחלקות) גוברת בספציפיות על .scope לבדה. */
  #exam .scope.cnt{font-family:var(--body);font-weight:400;font-size:12px;letter-spacing:.14em;color:var(--ink-soft);font-variant-numeric:tabular-nums}
  #exam .prog{height:3px;background:var(--line);border-radius:2px;overflow:hidden}
  #exam .prog{margin-bottom:0;box-shadow:none}   /* ביטול ירושה מ-.prog המשותפת */
  #exam .prog i{display:block;height:100%;width:0;background:var(--gold);transition:width .5s var(--ease)}

  #exam .intro{text-align:center;padding:5vh 0 0}
  #exam .intro h1{font-family:var(--display);font-weight:700;font-size:30px;line-height:1.2;margin:0 0 10px;text-wrap:balance}
  #exam .intro .sub{color:var(--ink-soft);font-size:16px;line-height:1.6;margin:0 auto;max-width:34ch;text-wrap:balance}
  #exam .intro .btn{width:100%;margin-top:18px}
  #exam .intro .back{width:100%;margin-top:10px}

  /* ⭐ 24.9 · ביקורת/עיצוב-9.9/השלמות.html #10 (מבחן ליחידה עם פחות מ-8 מילים, אושר 10.9.2026).
     #exKicker אינו בזוגות מסך-מבחן-היחידה.html (extras שם, b3553c50 · "ממתין לסבב עיצוב") ולכן
     מותר לעצב ללא תנאי. h1/.sub/#exCancel כן שייכים לזוגות אחרים באותו מסך (introH1/introSub/back,
     כבר 0 פערים ונעולים מול מסך-מבחן-היחידה.html -- tests/148 ו-e12d4dd) · ⛔ לכן כל שינוי עליהם
     כאן ננעל תחת .ex-empty (openExam, app.js: המחלקה עולה רק כשביחידה פחות מ-8 מילים), כדי לא
     לגעת במסך הרגיל (מתג האורך וכרטיסי החלקים) שכבר תואם את הקובץ שלו. */
  #exam .kicker{font-size:12px;font-weight:500;letter-spacing:.2em;line-height:1.55;
       color:var(--ink-soft);text-transform:none}

  /* ⭐ הכרעת חגי (ביקורת/עיצוב-9.9/השלמות.html #10): כותרת מבחן היחידה אחידה, "מבחן יחידה N",
     בלי כותרת קטנה מעליה. #exKicker (extras מוצהר, row b3553c50) שייך למסך הרגיל בלבד --
     כאן, תחת .ex-empty, הוא מוסתר בלבד ב-CSS (טקסט נשאר ב-DOM, textContent לא משתנה ב-JS). */
  #exam #exIntro.ex-empty .kicker{display:none}
  #exam #exIntro.ex-empty h1{line-height:1.55;margin:2px 0 0}
  /* ⭐ 28.9 · הטקסט המשולב (כותרת+תיאור) עבר מ-#exSub ל-#exEmptyCard (h3+p): #exSub נשאר ב-DOM
     (openExam מרוקן את textContent שלו), ולכן הוא מוסתר כאן כדי לא להשאיר שורה ריקה. */
  #exam #exIntro.ex-empty .sub{display:none}
  /* כרטיס זכוכית נפרד, לא #exIntro עצמו: כותרת העמוד (#exTitle) נשארת מעליו, לא בתוכו --
     בדיוק המבנה של הקובץ המאושר (.exhead h2 מעל .dlg). */
  #exam #exEmptyCard{border-radius:16px;padding:22px 18px 18px;text-align:center;margin-top:18px;
       background:rgba(255,255,255,.05);
       box-shadow:inset 0 0 14px rgba(255,255,255,.30),inset 0 -6px 12px -10px rgba(0,0,0,.10),0 8px 22px -14px rgba(44,38,32,.18);
       backdrop-filter:blur(9px) saturate(2) brightness(1.08);-webkit-backdrop-filter:blur(9px) saturate(2) brightness(1.08)}
  #exam #exEmptyCard .ico{width:46px;height:46px;border-radius:999px;margin:0 auto 12px;display:grid;place-items:center;
       background:rgba(181,72,46,.14);box-shadow:inset 0 0 0 1px rgba(181,72,46,.18)}
  #exam #exEmptyCard .ico svg{width:23px;height:23px;fill:none;stroke:var(--accent);stroke-width:1.8;
       stroke-linecap:round;stroke-linejoin:round}
  #exam #exEmptyCard h3{font-family:var(--display);font-weight:700;font-size:23px;line-height:1.25;margin:0 0 6px}
  #exam #exEmptyCard p{margin:0 0 10px;font-size:15px;line-height:1.6;color:var(--ink)}

  #exam .seg{position:relative;display:grid;grid-auto-flow:column;grid-auto-columns:1fr;border-radius:999px;padding:4px;isolation:isolate;margin:20px auto 0;width:100%}
  #exam .seg{background:none;border:0;box-shadow:none;gap:normal}   /* ביטול ירושה מ-.seg המשותפת (רקע/מסגרת/צל/gap אחרים) */
  #exam .seg.lg{background:rgba(255,255,255,.08);backdrop-filter:blur(18px) saturate(190%) brightness(1.05);-webkit-backdrop-filter:blur(18px) saturate(190%) brightness(1.05);
    box-shadow:inset 0 0 0 1px rgba(255,255,255,.45),inset 1.5px 1.5px 0 -.5px rgba(255,255,255,.9),inset -1px -1px 0 -.5px rgba(0,0,0,.1),0 10px 26px -14px rgba(44,38,32,.3)}
  #exam .seg button{position:relative;z-index:1;background:none;border:0;padding:0 6px;min-height:44px;border-radius:999px;font-size:16px;font-weight:600;color:var(--ink);cursor:pointer;transition:color .3s;white-space:nowrap}
  /* .active (שם האפליקציה למצב נבחר) נשאר כפי שהוא -- הרקע שלו מחליף את הידית הגולשת (.knob,
     extras) שלא מומשה; בלעדיו טקסט לבן על .on ללא רקע היה נעלם. לא נוגעים בכלל המשותף. */

  #exam .parts{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:16px 0 0}
  #exam .part{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:14px 6px 12px;text-align:center;
    box-shadow:0 1px 0 rgba(255,255,255,.7) inset,0 14px 30px -26px rgba(44,38,32,.5)}
  #exam .part{display:block;gap:normal;font-size:17px;line-height:1.55}   /* ביטול ירושה מ-.ex-part המשותפת (display:flex, gap:11px) -- נשארת לצורך זוג "part" */
  #exam .part b{display:block;font-family:var(--display);font-weight:700;font-size:24px;line-height:1;font-variant-numeric:tabular-nums;color:var(--ink)}
  #exam .part .de{display:block;font-size:12.5px;color:var(--ink-soft);margin-top:3px;line-height:1.4}

  #exam .card{position:relative;margin:22px 0 0;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:22px 20px 20px;text-align:center;
    box-shadow:0 1px 0 rgba(255,255,255,.7) inset,0 24px 48px -36px rgba(44,38,32,.35)}
  #exam .say{position:absolute;top:18px;inset-inline-end:16px;border:0;border-radius:50%;width:36px;height:36px;min-width:44px;min-height:44px;cursor:pointer;display:grid;place-items:center;background:rgba(181,72,46,.11);color:var(--accent)}
  #exam .say{font-size:13.3333px;line-height:normal;padding:1px 6px}   /* ביטול ירושה מ-.say המשותפת: ערכי הדפדפן לכפתור, כמו בקובץ (חסר כאן בלבד -- w23-asm3-אימות.md §1) */
  #exam .kind{font-size:14.5px;color:var(--ink-soft);text-align:center;margin:12px 0 0}
  #exam .word{font-family:var(--display);font-weight:700;font-size:clamp(40px,11.5vw,54px);line-height:1.15;text-align:center;margin:8px 0 18px}
  #exam .word.phrase{font-size:clamp(25px,7vw,32px);line-height:1.3;margin:10px 0 18px}
  #exam .opts{display:flex;flex-direction:column;gap:10px}
  #exam .opt{min-height:52px;padding:0 16px;border-radius:14px;border:0;font-size:17px;font-weight:600;color:var(--ink);cursor:pointer;text-align:center;transition:box-shadow .25s var(--ease),filter .2s ease}
  @media (hover:hover) and (pointer:fine){#exam .opts button.opt:hover:not(:disabled){filter:brightness(1.03)}}
  #exam .opt:disabled{cursor:default}
  /* ⚠ exAnswer (app.js) מסמנת תשובה נכונה/שגויה ב-.right/.wrong ולא ב-.good/.bad כמו הקובץ (שם
     קיים) -- אותו מנגנון, שם קלט שונה שכבר יש לו בדיקות תלויות. שני השמות מקבלים כאן אותו עיצוב. */
  #exam .opt.good,#exam .opt.right{box-shadow:inset 0 0 0 2px var(--ok),0 1px 0 rgba(255,255,255,.7) inset}
  #exam .opt.bad,#exam .opt.wrong{box-shadow:inset 0 0 0 2px var(--accent),0 1px 0 rgba(255,255,255,.7) inset}
  #exam .inp{width:100%;text-align:center;font:inherit;font-size:20px;padding:13px 14px;border-radius:12px;border:1px solid var(--line-strong);background:var(--paper);color:var(--ink);min-height:52px}
  #exam .inp:focus{border-color:#a17826;outline:none;box-shadow:0 0 0 3px rgba(161,120,38,.25)}
  #exam .inp::placeholder{color:var(--ink-soft)}   /* 2.10 נגישות: כמו #quiz .inp */
  #exam .actions{display:flex;gap:10px;margin-top:12px}
  #exam .actions .btn{flex:1}
  #exam .fb{margin-top:16px;padding:14px 16px;border-radius:14px;font-size:16px;display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center;background:var(--paper-deep)}
  #exam .fb.ok{background:rgba(67,113,71,.12)}
  #exam .fb.ok b{color:var(--ok-deep)}
  #exam .fb.miss{background:rgba(181,72,46,.10)}
  #exam .fb.miss b{color:var(--accent-deep)}
  #exam .fb b{font-family:var(--display);font-weight:700;font-size:19px}
  #exam .fb span{color:var(--ink);line-height:1.5}

  #exam .res{text-align:center;padding:14px 0 0}
  #exam .res .kicker{font-size:13px;letter-spacing:.14em;color:var(--ink-soft);margin:0 0 14px;font-weight:400;text-transform:none}   /* ביטול ירושה מ-.kicker המשותפת (זהב, 700, אותיות גדולות) */
  #exam #exScore{font-family:var(--display);font-weight:700;font-size:58px;line-height:1;color:var(--ink);letter-spacing:normal;font-variant-numeric:tabular-nums}
  #exam .lead{font-family:var(--display);font-weight:700;font-size:24px;margin:18px 0 0;text-wrap:balance;color:var(--ink)}
  #exam .sec{margin:26px 0 0}
  #exam .section-t{font-family:var(--display);font-weight:700;font-size:19px;margin:0 0 12px;text-align:center;letter-spacing:normal;text-transform:none;color:var(--ink)}   /* ביטול ירושה מ-.section-t המשותפת (שורה 181) -- כאן זו h2 של הקובץ, לא תווית קטנה */
  #exam .ex-miss{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:11px 10px;margin-top:9px;margin-bottom:0;
    box-shadow:0 1px 0 rgba(255,255,255,.7) inset,0 10px 24px -20px rgba(44,38,32,.35);font-size:17px;gap:8px}   /* ביטול ירושה מ-.ex-miss המשותפת (רדיוס/ריפוד/צל/גופן/gap שונים) -- נשארת לצורך זוג missedRow */
  #exam .acts{margin:26px 0 0;gap:normal}   /* ביטול ירושה מ-.row המשותפת (gap:10px) -- נשארת לצורך זוג actsWrap */
  #exam .acts .btn{width:100%}
  #exam .acts .pair{display:flex;gap:10px;margin-top:10px}
  #exam .acts .pair .btn{flex:1}

  /* ⭐ 29.9.2026 · b9ca4748 + f79e5533 · הרכיבים של מסך-מבחן-היחידה.html שנבנו עכשיו: .ic ,.chip ,.dunno ,.into
     (הטבעת .ring משותפת עם #results, שורות 3453 ואילך: אותו כלל, שני בוררים). */
  #exam .ic{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:rgba(181,72,46,.11);color:var(--accent);flex:0 0 auto}
  #exam .ic svg{width:16px;height:16px;stroke:currentColor;stroke-width:1.9;fill:none;stroke-linecap:round;stroke-linejoin:round}
  #exam .chip{display:inline-flex;align-items:center;gap:8px;border-radius:999px;padding:5px 14px 5px 6px;font-size:14px;font-weight:600;color:var(--ink)}
  #exam .chip .ic{width:24px;height:24px}
  #exam .chip .ic svg{width:13px;height:13px}
  #exam .dunno{width:100%;margin-top:12px}
  #exam .next{width:100%;margin-top:14px}   /* 9.10 נגישות (2.2.1) · כמו #sent .next */
  #exam .dunno .ic{width:24px;height:24px;display:inline-grid;vertical-align:-7px;margin-inline-end:7px}
  #exam .dunno .ic svg{width:14px;height:14px}
  #exam .into{display:inline-flex;align-items:center;gap:9px;margin:14px auto 0;padding:8px 16px 8px 8px;border-radius:999px;font-size:15px;font-weight:500;color:var(--ink)}
  #exam .into .ic{width:28px;height:28px}
  #exam .ex-miss .kd{display:inline-block;margin-inline-start:8px;padding:1px 10px;border-radius:999px;font-size:12.5px;font-weight:600;color:var(--ink-soft);background:rgba(181,72,46,.09)}
  @media (prefers-reduced-motion:reduce){#exam .screen{animation:none}#exam .prog i,#exam .btn,#exam .opt{transition:none}}
  /* EXAM-23.9:END */

  /* ═════════════════════════════════════════════════════════════════════════
     ADMIN-23.9:START  מסך הניהול, העתקה של הקובץ שחגי אישר  23.9.2026
     ═════════════════════════════════════════════════════════════════════════
     מקור: ביקורת/עיצוב-9.9/מסך-הניהול.html (e09bc26a). הכרעת חגי 11.9: ה-CSS נכנס מילה במילה
     ובאותם שמות מחלקות, המבנה נכנס לרינדור (app.js: openAdmin/renderAdminUsers), ורק ההתנהגות
     מתחברת לקוד הקיים. ⛔ שני יוצאים מהכלל "אותם שמות", שניהם כי בדיקה קיימת נעולה על השם הישן:
     תג התפקיד/הכיתה נשאר .adm-tag (לא .role-tag, tests/123) ועטיפת שלושת כפתורי המנוי נשארת
     .adm-subacts (לא נגזרת מהקובץ בכלל). שני הכפתורים היחידים שהיו כאן -- איפוס סיסמה ומחיקת
     נתונים -- מסוגננים דרך [data-reset]/[data-del] ולא דרך מחלקה, כי admActs() לא נוגעים בה.
     ⭐ הזכוכית (.lg) לא מוגדרת כאן בכלל: המערכת המשותפת (LG-SYSTEM למעלה בקובץ) נדלקת על כל
     אלמנט שמקבל class="lg" בסימון, בדיוק כמו בקובץ המאושר עצמו.
     ⭐ 24.9 · סבב חלק ב: הקובץ המאושר עודכן והוסיף מקביל לרוב מה שהיה כאן "בלי זוג" -- .sub-tag
     (תג המצב, החליף את .adm-sub), .tools/.sel/.date (מיון ו"לא נכנסו מאז", עכשיו שורה נפרדת
     במקום בתוך .adm-tools הכללי), .substate/.seg (שלוש לשוניות מצב החיוב, החליפו את שלושת
     הכפתורים בתוך admActs), והמקטע "דיווחי באגים ומשוב" (#admFb, טרם עודכן למחלקות fbcard/kind/
     mail/body/ctx של הקובץ -- עדיין בסגנון adm-row/adm-top/adm-acts הישן, הנוסח כן עודכן).
     ⛔ מה שעדיין נשאר בלי מקביל בקובץ: .adm-g i (השורה השלישית בכרטיס הסיכום -- אין השורה הזו יותר, שלושה
     תאים בלבד כמו בקובץ). */
  /* 25.9 · .wrap של הקובץ (max-width:520px, padding:0 18px 64px) · בלי זה הריפוד המשותף (22px למעלה)
     הוריד את כל שורת הכותרת, «800+» ו«חזרה» ישבו נמוך מהקובץ. אותו כלל לכלי המורה, שחולק את אותו .wrap. */
  .wrap:has(>:is(#admin,#add,#manage):not(.hidden)){max-width:520px;margin:0 auto;padding:0 18px 64px}
  body.ios-web .wrap:has(>:is(#admin,#add,#manage):not(.hidden)){padding-bottom:calc(64px + 68px)}
  #admin{--line-strong:#888276;--ok:#437147;font-size:17px;line-height:1.55;font-family:"Heebo","Arial Hebrew",Arial,sans-serif}   /* --ok נוסף 24.9 ל-.sub-tag, כמו --line-strong כבר */
  body:has(#admin:not(.hidden)){
    font-family:"Heebo","Arial Hebrew",Arial,sans-serif;font-size:17px;line-height:1.55;
    background-image:radial-gradient(340px 300px at 88% 40px,rgba(201,150,47,.30),transparent 70%),radial-gradient(320px 320px at 4% 420px,rgba(181,72,46,.22),transparent 70%),radial-gradient(340px 320px at 96% 800px,rgba(201,150,47,.24),transparent 70%),radial-gradient(320px 320px at 6% 1180px,rgba(181,72,46,.18),transparent 70%),radial-gradient(340px 320px at 94% 1560px,rgba(201,150,47,.22),transparent 70%);
    background-repeat:no-repeat}
  #admin .topbar{padding:16px 0 6px;margin-bottom:0;gap:normal}
  #admin .back{display:inline-flex;align-items:center;gap:7px;padding:7px 13px 7px 9px;font-size:14px;color:var(--ink);border-radius:11px}
  #admin .back svg{width:16px;height:16px;stroke:currentColor;stroke-width:2;fill:none;stroke-linecap:round;stroke-linejoin:round}
  #admin .back.lg{background:rgba(255,255,255,.05)}   /* ביטול ירושה: .topbar .back.lg המשותפת נועלת .16 */
  #admin .brand{font-family:"Frank Ruhl Libre","David Libre",serif;font-weight:700;font-size:20px;color:var(--accent)}
  #admin .ltr{direction:ltr;unicode-bidi:isolate}   /* 24.9 · «800+» הוצג הפוך: אין #home/#account כלל scoped כאן, זהה להם */
  #admin .scope-head{margin-top:14px;text-align:center}
  #admin .scope-head .k{font-size:12px;letter-spacing:.2em;color:var(--ink-soft);font-weight:500;margin:0 0 6px}   /* 24.9 · «ניהול», הכותרת הקטנה שהיתה חסרה */
  #admin .rule{display:none}   /* 24.9 · הקובץ המאושר (מסך-הניהול.html, .head) בלי קו זהב מתחת ל«משתמשים»; .rule המשותפת מיועדת למסכי scope-head אחרים */
  #admin .scope-head h1{font-family:"Frank Ruhl Libre","David Libre",serif;font-weight:700;font-size:32px;margin:0;line-height:1.1;color:var(--ink)}

  /* שורת הסיכום · .adm-glance/.adm-g נשארים (ארבע מדידות אמיתיות, לא שלוש כבקובץ -- אין
     מקביל אחד-לאחד, ראו הדוח), רק העיצוב עובר לזה של .stats/.stat */
  #adminBody .adm-glance{display:flex;border-radius:16px;padding:18px 6px;margin:18px 0 0;gap:normal}
  #adminBody .adm-g{border:0;box-shadow:none;border-radius:0;padding:0;flex:1;display:flex;flex-direction:column;gap:4px;text-align:center;background:rgba(0,0,0,0);backdrop-filter:none;-webkit-backdrop-filter:none}
  #adminBody .adm-g+.adm-g{border-inline-start:1px solid var(--line)}
  #adminBody .adm-g.warn{background:none}   /* ה-lg הצבוע כבר מדגיש; המלבן הבהיר הישן נגד זכוכית נראה כתלונה גרפית */
  #adminBody .adm-g.warn b{color:var(--ink)}
  #adminBody .adm-g b{font-family:"Frank Ruhl Libre","David Libre",serif;font-weight:700;font-size:29px;color:var(--ink);line-height:1}
  #adminBody .adm-g span{font-size:12px;color:var(--ink-soft);margin-top:0;line-height:18.6px}

  /* חיפוש וסינון · #admSearch יושב לבדו בתוך .search-wrap (היה בתוך .adm-tools הכללי עם כל
     השאר); #admFilter עומד לבדו בשורה נפרדת, ברוחב מלא. #admSort ו-#admSince עברו ל-.adm-tools
     החדשה (מראה .tools/.sel/.date מהקובץ, 24.9). .adm-toggle ("כלים למנויים") ירד ב-25.9 (הכרעת 24.9). */
  #adminBody .adm-tools{margin-top:14px;margin-bottom:0;gap:normal}
  #admSearch{width:100%;height:48px;border:1px solid var(--line-strong);border-radius:14px;background:var(--paper);color:var(--ink);font-size:15px;text-align:center;padding:0 44px;min-height:48px;font-family:"Heebo","Arial Hebrew",Arial,sans-serif;line-height:23.25px}   /* 25.9 · width/height מ-.search בקובץ: בלעדיהם השדה נדחס לרוחב הטבעי שלו והסמל נשאר מחוצה לו */
  #admSearch::placeholder{color:var(--ink-soft)}
  /* #admFilter · 23.9 העוזר האישי: מ-<select> ל-4 לשוניות (.fseg בקובץ: .seg, שונה השם כדי
     לא להתנגש עם .seg המשותפת -- כמו .modeseg/.lseg). ⭐ הכרעה על #admFilter: 4 הלשוניות הן
     ארבעת המסננים הפשוטים שיש להם case קיים ב-admFilterSort (all/active7/never/admins) --
     "מורים" לא נכנס (אין role==='teacher' מסונן, ולא רק עיצוב שונה) ו"לא נכנסו מאז תאריך"
     לא נכנס (תלוי בשדה #admSince, לא לשונית קבועה). שניהם נשארים בקוד בדיוק כמו "חסומים"
     (הכרעת w25-admin): מסנן שלא מוצג לא נמחק, הוא רק לא מוצג. אין מפתח חדש ב-localStorage --
     admView.filter נשאר במשתנה בזיכרון כמו קודם. */
  #admFilter{display:flex;padding:3px;border-radius:14px;margin:14px 0 0;position:relative;font-size:17px;line-height:1.55}
  #admFilter button{flex:1;background:none;border:0;cursor:pointer;height:40px;border-radius:11px;color:var(--ink);font-weight:600;font-size:13px;position:relative;z-index:1;transition:color .25s;padding:0 2px;font-family:"Heebo","Arial Hebrew",Arial,sans-serif}
  #admFilter button.on{color:#fff}
  /* ⭐ 29.9 · תג «חסום» (.block-tag, מסך-הניהול.html שורה 118) */
  #admUserList .block-tag{font-size:12px;font-weight:600;padding:5px 13px;border-radius:999px;color:var(--ink);background:rgba(181,72,46,.14)}
  #admFilter .thumb{position:absolute;top:3px;bottom:3px;inset-inline-start:3px;width:calc((100% - 6px)/5);border-radius:11px;
    background:linear-gradient(180deg,rgba(160,58,36,.94),rgba(143,54,32,.96));
    box-shadow:inset 0 0 0 1px rgba(255,255,255,.3),0 6px 14px -6px rgba(143,54,32,.6);
    transition:transform .55s cubic-bezier(.22,.61,.36,1);z-index:0}
  #admFilter[data-i="1"] .thumb{transform:translateX(-100%)}
  #admFilter[data-i="2"] .thumb{transform:translateX(-200%)}
  #admFilter[data-i="3"] .thumb{transform:translateX(-300%)}
  #admFilter[data-i="4"] .thumb{transform:translateX(-400%)}
  #adminBody .adm-count{font-size:13px;color:var(--ink-soft);text-align:center;margin:16px 0 0}
  #adminBody .adm-count b{color:inherit;font-weight:400}   /* ביטול ירושה: .adm-count b המשותפת מצבעת בכתום ומדגישה -- בקובץ הספירה טקסט רגיל */
  #admUserList{display:flex;flex-direction:column;gap:12px;margin-top:10px}

  /* כרטיס המשתמש */
  #admUserList .ucard{padding:20px 16px 16px;display:flex;flex-direction:column;align-items:center;text-align:center;border-radius:16px}
  #admUserList .more{position:absolute;top:10px;inset-inline-start:10px;width:34px;height:34px;border-radius:50%;border:0;cursor:pointer;color:var(--ink);font-size:17px;line-height:1;display:grid;place-items:center;background:transparent}
  #admUserList .avatar{width:46px;height:46px;border-radius:50%;display:grid;place-items:center;color:#fff;font-family:"Frank Ruhl Libre","David Libre",serif;font-weight:700;font-size:18px;
    background:linear-gradient(180deg,rgba(160,58,36,.9),rgba(143,54,32,.9));box-shadow:inset 0 1px 0 rgba(255,255,255,.45);margin-bottom:8px}
  #admUserList .name{font-family:"Frank Ruhl Libre","David Libre",serif;font-weight:700;font-size:18px;color:var(--ink)}
  #admUserList .email{font-size:13px;color:var(--ink-soft);margin-top:2px}
  #admUserList .meta{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;font-size:12.5px;color:var(--ink-soft);margin-top:6px;gap:normal}
  #admUserList .meta .sep{display:inline-block;width:4px;height:4px;border-radius:50%;background:var(--line);margin:0 7px}
  #admUserList .tags{display:flex;gap:6px;margin-top:10px;flex-wrap:wrap;justify-content:center}
  /* .adm-tag נשאר השם (tests/123: admTags() כותבת class="adm-tag") -- רק המראה עובר ל-.role-tag */
  #admUserList .adm-tag{font-size:12px;font-weight:600;padding:5px 13px;border-radius:999px;color:var(--ink);background:rgba(255,255,255,.05);letter-spacing:0;
    border:0;box-shadow:inset 0 0 14px rgba(255,255,255,.30),inset 0 -6px 12px -10px rgba(0,0,0,.10),0 8px 22px -14px rgba(44,38,32,.18);
    backdrop-filter:blur(9px) saturate(200%) brightness(1.08);-webkit-backdrop-filter:blur(9px) saturate(200%) brightness(1.08)}
  #admUserList .adm-tag.cls{color:var(--ink);border:0}

  /* פאנל הפעולות · נחשף על ידי ⋮ (.more). .arow/.tog חדשים; admActs() (איפוס סיסמה, מחיקת
     נתונים, ושלושת כפתורי .adm-subacts) ממשיכה להזין את אותו פאנל בלי שינוי. */
  #admUserList .actions{width:100%;margin-top:16px;padding-top:14px;border-top:1px solid rgba(44,38,32,.08);display:flex;flex-direction:column;gap:8px;animation:adminFadein .4s var(--ease)}
  @keyframes adminFadein{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
  #admUserList .arow{display:flex;align-items:center;justify-content:space-between;padding:4px 6px}
  #admUserList .arow span{font-size:14px;font-weight:600;color:var(--ink)}
  #admUserList .tog{width:46px;height:28px;border-radius:14px;background:rgba(44,38,32,.18);position:relative;flex:none;transition:background .3s;cursor:pointer;border:0;padding:1px 6px}
  #admUserList .tog i{position:absolute;top:3px;inset-inline-start:3px;width:22px;height:22px;border-radius:50%;background:#fff;box-shadow:0 2px 6px rgba(0,0,0,.25);transition:transform .55s cubic-bezier(.22,.61,.36,1)}
  #admUserList .tog.on{background:var(--accent)}
  #admUserList .tog.on i{transform:translateX(-18px)}
  /* כפתור פעולה משני · .aitem בקובץ, וגם איפוס סיסמה הקיים (בלי מחלקה, admActs() לא נוגעים בה) */
  #admUserList .aitem,#admUserList [data-reset]{display:flex;align-items:center;gap:10px;width:100%;border:0;border-radius:12px;padding:10px 12px;cursor:pointer;background:rgba(44,38,32,.05);color:var(--ink);font-size:14px;font-weight:600;font-family:"Heebo","Arial Hebrew",Arial,sans-serif;text-align:start}
  /* ⭐ מכסת כיתה בכרטיס מורה (5b29c70c) · שורה אחת: תווית, שדה מספר, שמירה. שורת .aitem רגילה סביבה */
  #admUserList .adm-quota{display:flex;align-items:center;gap:10px;border-radius:12px;padding:6px 12px;background:rgba(44,38,32,.05);color:var(--ink);font-size:14px;font-weight:600;font-family:"Heebo","Arial Hebrew",Arial,sans-serif}
  #admUserList .adm-quota label{flex:1}
  #admUserList .adm-quota input{width:72px;border:1px solid rgba(44,38,32,.18);border-radius:8px;padding:6px 8px;font:inherit;text-align:center;background:#fff;color:var(--ink)}
  #admUserList .adm-quota .aitem{width:auto;padding:8px 14px;background:var(--accent);color:#fff}
  /* ⭐ 7.10 · רשימת תלמידי הכיתה בכרטיס המורה (בלי מחלקות חדשות): שדה תאריך רחב משדה המספר, והשורה נשברת בטלפון צר.
     כל תלמיד הוא קופסה משלו ([data-stu]): צרה מעט משורות הפעולות של המורה, ברקע בהיר משלה. */
  #admUserList .adm-quota:has(input[type="date"]){flex-wrap:wrap;justify-content:center}
  #admUserList .adm-quota input[type="date"]{width:auto;min-width:0;flex:none;font-size:14px}
  #admUserList [data-stu]{display:flex;flex-direction:column;gap:8px;margin-inline:6px;padding:12px 8px;border-radius:16px;background:rgba(255,255,255,.62);box-shadow:inset 0 0 0 1px rgba(255,255,255,.75),0 8px 18px -14px rgba(44,38,32,.3)}
  #admUserList [data-stu] .arow{justify-content:center;padding:0}
  #admUserList [data-stu] .arow span{font-size:15px;font-weight:700}
  #admUserList [data-stu] .tags{margin-top:0}
  #admUserList [data-stu]>.aitem{justify-content:center;text-align:center}
  #admUserList [data-stu] .adm-quota{padding:4px 6px;gap:4px;flex-wrap:nowrap}
  #admUserList [data-stu] .adm-quota label{flex:none}
  #admUserList [data-stu] .adm-quota input[type="date"]{flex:1 1 0;min-width:0;padding:6px 4px}
  #admUserList [data-stu] .adm-quota .aitem{padding:8px 10px}
  /* ⭐ 8.10 · דוח חודשי בכרטיס המורה: אותה קופסה בהירה כמו תלמיד, בלי מחלקות חדשות. חודש, לכל כיתה מספר ושמות, מחיר למקום, סכום והעתקה */
  #admUserList [data-rpt]{display:flex;flex-direction:column;gap:8px;margin-inline:6px;padding:12px 8px;border-radius:16px;background:rgba(255,255,255,.62);box-shadow:inset 0 0 0 1px rgba(255,255,255,.75),0 8px 18px -14px rgba(44,38,32,.3)}
  #admUserList [data-rpt] [data-rcls]{display:flex;flex-direction:column;gap:8px}
  #admUserList [data-rpt] [data-rcls]+[data-rcls]{padding-top:10px;border-top:1px solid rgba(44,38,32,.1)}
  #admUserList [data-rpt] .arow{justify-content:center;padding:0}
  #admUserList [data-rpt] .arow span{font-size:15px;font-weight:700}
  #admUserList [data-rpt]>.aitem{justify-content:center;text-align:center}
  #admUserList [data-rpt] .adm-quota{padding:4px 6px;gap:4px;flex-wrap:nowrap}
  #admUserList [data-rpt] .adm-quota label{flex:none}
  #admUserList [data-rpt] .adm-quota input[type="month"],#admUserList [data-rpt] .adm-quota input[type="number"]{flex:1 1 0;min-width:0;padding:6px 4px}
  #admUserList [data-rpt] .adm-quota .aitem{padding:8px 10px}
  #admUserList .cap{margin:0;font-size:13px;color:var(--ink-soft);text-align:center}
  /* כפתור פעולה מסוכנת · .aitem.danger בקובץ: «חסימה» ו«מחיקת נתונים» (25.9: מחיקת נתונים עברה
     מהכפתור הממוסגר הישן לשורת .aitem.danger עם הפח בשבב, כמו בקובץ). רקע האייטם הרגיל, והשבב
     אדמדם (aic.danger למטה). */
  #admUserList .aitem.danger{background:rgba(44,38,32,.05);color:var(--ink)}
  /* שבב האייקון · כל ארבע השורות (חסימה, הפוך למורה, איפוס סיסמה, מחיקת נתונים) */
  #admUserList .aitem .aic{width:28px;height:28px;border-radius:8px;display:grid;place-items:center;font-size:14px;flex:none;color:#fff;
    background:linear-gradient(180deg,rgba(160,58,36,.85),rgba(143,54,32,.85))}
  #admUserList .aitem.danger .aic{background:rgba(181,72,46,.16);color:var(--accent-deep)}
  /* ⛔ חסימה/הפוך למורה (data-noop) הן תצוגה בלבד -- אין תכונת חסימה או שינוי תפקיד באפליקציה.
     בלי דהייה: "בונים את המראה בלבד" (הבריף) פירושו המראה של הקובץ המאושר, לא מראה מנוטרל --
     הקליק עצמו מודה בכך דרך toast, במקום שהמסך יטען ציפייה שהעין לא יכולה לתפוס. */

  /* ⭐ 24.9 · סבב חלק ב: תג המצב, מצב החיוב כשלוש לשוניות, שורת החיפוש/הסינון/הכלים, ודיווחי
     באגים -- רכיבים שהיו רק באפליקציה וקיבלו היום מקביל בקובץ המאושר. */
  #admUserList .adm-subacts{display:block;margin:0 0 4px}   /* 25.9 · .substate{margin:0 0 4px} בקובץ · העטיפה של בורר המצב */
  #admUserList .sub-tag{display:inline-flex;align-items:center;gap:7px;font-size:12px;font-weight:600;padding:5px 13px;border-radius:999px;color:var(--ink)}
  #admUserList .sub-tag i{width:7px;height:7px;border-radius:50%;background:var(--ok);flex:none}
  #admUserList .sub-tag.due i{background:var(--accent)}
  #admUserList .sub-tag.off i{background:var(--ink-soft)}

  /* מצב החיוב · שלוש לשוניות במקום שלושת הכפתורים הישנים, אותה פעולה (data-sub/data-st) בדיוק.
     .adm-sseg ולא .seg -- התנגשות עם .seg המשותפת, כמו .fseg/#admFilter. הידית <i>, לא <span>:
     ראו ההערה ליד admActs() ב-app.js. */
  #admUserList .adm-sseg{display:flex;padding:3px;border-radius:14px;margin:0;position:relative}
  #admUserList .adm-sseg button{flex:1;background:none;border:0;cursor:pointer;height:36px;border-radius:11px;color:var(--ink);font-weight:600;font-size:12.5px;position:relative;z-index:1;transition:color .25s;padding:0 2px;font-family:"Heebo","Arial Hebrew",Arial,sans-serif}
  #admUserList .adm-sseg button.on{color:#fff}
  #admUserList .adm-sseg .thumb{position:absolute;top:3px;bottom:3px;inset-inline-start:3px;width:calc((100% - 6px)/3);border-radius:11px;
    background:linear-gradient(180deg,rgba(160,58,36,.94),rgba(143,54,32,.96));
    box-shadow:inset 0 0 0 1px rgba(255,255,255,.3),0 6px 14px -6px rgba(143,54,32,.6);
    transition:transform .55s cubic-bezier(.22,.61,.36,1);z-index:0}
  #admUserList .adm-sseg[data-i="1"] .thumb{transform:translateX(-100%)}
  #admUserList .adm-sseg[data-i="2"] .thumb{transform:translateX(-200%)}
  @media (prefers-reduced-motion:reduce){#admUserList .adm-sseg .thumb{transition:none}}

  /* חיפוש לבדו · #admFilter כבר עומד בשורה משלו (התוצג הישן, .adm-tools, כלל את כולם יחד) */
  #adminBody .search-wrap{margin-top:14px;position:relative}
  #adminBody .search-wrap svg{position:absolute;top:50%;inset-inline-end:16px;transform:translateY(-50%);width:17px;height:17px;stroke:var(--ink-soft);fill:none;stroke-width:2;stroke-linecap:round;pointer-events:none}
  /* מיון + "לא נכנסו מאז" · שורה נפרדת מתחת לבורר הסינון, כמו .tools בקובץ */
  #adminBody .adm-tools{display:flex;gap:8px;margin:10px 0 0}
  #adminBody .adm-tools .sel{flex:1;position:relative}
  #adminBody .adm-tools .sel select{width:100%;height:44px;border-radius:12px;border:1px solid var(--line-strong);background:var(--paper);color:var(--ink);font:inherit;font-size:14px;padding:0 36px 0 14px;appearance:none;-webkit-appearance:none;text-align:center;text-align-last:center;font-family:"Heebo","Arial Hebrew",Arial,sans-serif}
  #adminBody .adm-tools .sel svg{position:absolute;top:50%;inset-inline-end:14px;transform:translateY(-50%);width:14px;height:14px;stroke:var(--ink-soft);fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}
  #adminBody .adm-date{height:44px;border-radius:12px;border:1px solid var(--line-strong);background:var(--paper);color:var(--ink);font:inherit;font-size:14px;flex:0 0 150px;padding:0 12px;direction:ltr;font-family:"Heebo","Arial Hebrew",Arial,sans-serif}

  /* ⭐ 24.9 · «דיווחי באגים ומשוב» -- .section-t/.adm-row/.adm-top/.mail/.fb-ctx/.adm-acts הם
     שמות ישנים מלפני הקובץ המאושר (tests לא נועלות אף אחד מהם); רק המראה עובר לזה של
     .sec-t/.fbcard/.row/.kind/.mail/.body/.ctx/.acts .aitem. .lg על .adm-row (app.js) מדליק
     את הזכוכית באותה מערכת משותפת כמו .ucard. */
  #adminBody .section-t{font-family:"Frank Ruhl Libre","David Libre",serif;font-weight:700;font-size:20px;margin:30px 0 4px;text-align:center;color:var(--ink);letter-spacing:normal}
  #admFb>p{font-size:13px;color:var(--ink-soft);text-align:center;margin:0 0 2px}
  #admFb>p>b{color:var(--accent-deep);font-family:"Frank Ruhl Libre","David Libre",serif;font-size:15px}
  #admFb .adm-row{border:0;border-radius:16px;padding:16px 16px 14px;text-align:center;margin:12px 0 0}
  #admFb .adm-top{display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap}
  #admFb .adm-top b{font-size:12px;font-weight:600;padding:4px 12px;border-radius:999px;color:var(--ink);background:rgba(181,72,46,.12);font-family:"Heebo","Arial Hebrew",Arial,sans-serif}
  #admFb .mail{font-size:12.5px;color:var(--ink-soft)}
  #admFb .adm-row.done,#admFb .adm-row.done .adm-top b{color:var(--ink-soft)}   /* 2.10 נגישות: דיווח שטופל בדיו הרך ולא opacity:.6 (2.0 עד 4.0), כמו .fbcard.done בקובץ */
  #admFb .adm-row>p{font-size:15px;line-height:1.5;margin:10px 0 8px;white-space:pre-wrap}
  #admFb .fb-ctx{font-size:12px;line-height:1.55;color:var(--ink-soft);margin:12px 0}
  #admFb .adm-acts{display:flex;gap:8px;margin-top:12px;justify-content:center;flex-wrap:nowrap}   /* 25.9 · .fbcard .acts בקובץ: שני הכפתורים זה לצד זה (.adm-acts המשותפת גולשת לשורה חדשה) */
  #admFb .adm-acts button{display:flex;align-items:center;gap:10px;justify-content:center;text-align:center;width:100%;
    border:0;border-radius:12px;padding:10px 12px;cursor:pointer;background:rgba(44,38,32,.05);color:var(--ink);
    font-size:14px;font-weight:600;font-family:"Heebo","Arial Hebrew",Arial,sans-serif}
  /* ⭐ 25.9 · .aitem .aic של הקובץ בכפתורי הדיווח («סימון כטופל», «החזרה לפתוח», «תשובה למדווח») */
  #admFb .aitem .aic{width:28px;height:28px;border-radius:8px;display:grid;place-items:center;font-size:14px;flex:none;color:#fff;
    background:linear-gradient(180deg,rgba(160,58,36,.85),rgba(143,54,32,.85))}
  /* ⭐ 25.9 · «טופל» כתג שקוף (.role-tag.lg בקובץ), לא הכתום המלא של .adm-tag המשותפת · אותו מראה
     כמו תגי התפקיד בכרטיס המשתמש */
  #admFb .adm-tag{font-size:12px;font-weight:600;padding:5px 13px;border-radius:999px;color:var(--ink);background:rgba(255,255,255,.05);letter-spacing:0;
    border:0;box-shadow:inset 0 0 14px rgba(255,255,255,.30),inset 0 -6px 12px -10px rgba(0,0,0,.10),0 8px 22px -14px rgba(44,38,32,.18);
    backdrop-filter:blur(9px) saturate(200%) brightness(1.08);-webkit-backdrop-filter:blur(9px) saturate(200%) brightness(1.08)}

  @media (prefers-reduced-motion:reduce){#admUserList .actions{animation:none}}
  /* ADMIN-23.9:END */

  /* ═════════════════════════════════════════════════════════════════════════
     CODEQ-25.9:START · «יש לך קוד?» ברכישה ובחשבון, ומסך «קודים» בניהול · 25.9.2026
     ═════════════════════════════════════════════════════════════════════════
     מקור: ביקורת/עיצוב-9.9/רכיבי-קודים.html (sha256 de22c396…, «פיקס» חגי 25.9 בבוקר). הכרעת חגי
     11.9: אותם שמות מחלקות, ורק ההתנהגות מתחברת. שדה הקוד עצמו (.codeq .code) הוא שימוש חוזר
     ב-.code של מסכי הנעילה (LOCK-24.9 למעלה, מסך-מנוי-מושהה.html) -- ולא הועתק שוב מהקובץ, רק נפתח
     ל-#pay ול-#account דרך העטיפה .codeq. ⚠ ב-#account כבר קיים .code אחר (קוד הכיתה של המורה, שורה
     3166 למעלה) -- ולכן כל כלל כאן נעול תחת .codeq .code ולא תחת .code לבד, כדי לא לדרוס אותו.
     ⚠ .seg הגלובלית (שורה 141) אינה הבורר הגולש של הקובץ -- כמו .lg-seg/.adm-sseg/#admFilter כבר
     עשו, הבורר כאן נקרא .cd-seg כדי לא להתנגש. .pill/.kcard/.newcode/.reveal/.klist/.sub-tag/.aitem
     נעולים תחת #adminBody, ששם הם לא מתנגשים עם שום דבר ברשימת המשתמשים. */

  /* ===== «יש לך קוד?» · השורה המקופלת, זהה במסלול הרכישה ובחשבון =====
     ⭐ תיקון 25.9 (ביקורת · codes-fix): line-height:1.55 נוסף כאן במפורש -- #account{...line-
     height:1.5} (שורה 3070) גובר על ה-body:has(#account) המשותף (1.55) בתוך #account כולו, וזה
     תואם את מסך-החשבון.html שלו; אבל רכיבי-קודים.html (הספק של .codeq עצמו) לא מצהיר line-height
     על .codeq בכלל ויורש 1.55 מה-body שלו. כאן זה נעול לרכיב הזה בלבד, בלי לגעת ב-#account{}
     הרחבה ובלי להשפיע על שאר תוכן החשבון. */
  :is(#pay,#account) .codeq{width:100%;max-width:340px;margin:12px auto 0;text-align:center;line-height:1.55}
  :is(#pay,#account) .codeq>.btn{width:100%;font-size:15px;font-weight:500;min-height:44px}
  /* ⚠ ביטול ירושה: .btn-ghost.lg (רקע .16, LG-SYSTEM) ו-.btn.lg (gap:8px) גוברים על .lg הבסיסית
     (רקע .05) ועל .btn (בלי gap) -- ל-#pay יש כבר #pay .lg{background:.05}/#pay .btn{gap:normal}
     רחבים שסוגרים את זה לבד (ולכן לא הופיע שם בדוח); ל-#account אין מקבילה רחבה, ולכן כאן זה
     נעול ישירות על כפתורי .codeq בלבד (לא על כל .btn/.lg של #account). */
  :is(#pay,#account) .codeq>.btn{background:rgba(255,255,255,.05)}
  :is(#pay,#account) .codeq .btn{gap:normal}
  :is(#pay,#account) .codeq>.btn svg{width:15px;height:15px;margin-inline-start:6px;margin-inline-end:0;transition:transform .3s var(--ease);stroke-width:1.9}
  :is(#pay,#account) .codeq[data-open="1"]>.btn svg{transform:rotate(180deg)}
  :is(#pay,#account) .codeq .code{display:none;margin-top:10px}
  :is(#pay,#account) .codeq[data-open="1"] .code{display:block;animation:rise .3s var(--ease) both}
  /* ⚠ @keyframes rise כבר גלובלית (שורה 565) -- לא מוגדרת כאן שוב, כדי לא לדרוס אותה בכל האפליקציה */
  /* ⭐ תיקון 25.9: display:block חסר -- בקובץ הוא מגיע בירושה מ-.code .t{display:block} המשותפת
     (שורה 69, הכותרת של שדה הקוד בכל המסכים), אבל אצלנו הגרסה המשותפת המקבילה נעולה תחת
     :is(#suspended,#canceled) בלבד (LOCK-24.9) ולא חלה על #pay/#account -- בלי display:block
     ה-<label> נשאר inline, וגובהו הנמדד (getComputedStyle().height) הוא "auto" ולא ערך פיקסלים,
     מה שהזיז את גובה .code/.codeq כולם בכ-0.25-0.6px. */
  :is(#pay,#account) .codeq .code .t{display:block;font-size:12px;letter-spacing:.14em;color:var(--ink-soft);font-weight:500;font-family:var(--body);margin:0 0 8px}
  /* ⭐ תיקון 25.9: «8 תווים, אותיות ומספרים» עבר מ-sr-only ל-<span class="hint"> גלוי (index.html) --
     העיצוב כאן מילה במילה מ-.code .hint של הקובץ. */
  /* display:block: הקובץ משתמש ב-<p>, וכאן זה <span> (כדי לא לגעת בשם התג ב-index.html) -- בלי
     block, רוחב/גובה מחושבים מדווחים "auto" (ערך המחרוזת, לא פיקסלים) על אלמנט inline, ולא נכנסים
     להשוואת הפיקסלים כלל. */
  :is(#pay,#account) .codeq .code .hint{display:block;margin:8px 0 0;font-size:13.5px;color:var(--ink-soft);line-height:1.45}

  /* ===== שדה הקוד עצמו · מילה במילה מ-.code של מסכי הנעילה, נעול תחת .codeq כדי לא להתנגש
     עם .code הקיים תחת #account (קוד הכיתה) ===== */
  /* ⭐ תיקון 25.9: margin הוסר מכאן -- הוא דרס את margin-top:10px של הכלל למעלה (התנגשות בין שתי
     הצהרות עם אותו סלקטור בדיוק; זו המאוחרת מביניהן, אז ניצחה). width/max-width/border-radius/
     padding/line-height נשארים כאן (הקובץ אינו מצהיר עליהם ב-.codeq .code הספציפי, אבל הם צריכים
     לחול, ו-margin-top:10px של הכלל הראשון עכשיו חוזר לנצח לבד). */
  :is(#pay,#account) .codeq .code{width:100%;max-width:340px;border-radius:16px;padding:16px 14px 14px;line-height:1.55}
  :is(#pay,#account) .codeq .code>*{position:relative;z-index:1}
  /* ⚠ ביטול ירושה: #account .row{padding:12px 0;border-bottom:1px solid rgba(44,38,32,.08);
     font-size:15px} (שורה 3121, לשורות "שם משתמש"/"נרשמת" בכרטיס הפרופיל) תופסת גם את .row הזה
     כי היא סלקטור רחב לפי מחלקה בלבד -- הספק לא מצהיר עליהם כאן, אז הם חוזרים לברירת המחדל. */
  :is(#pay,#account) .codeq .code .row{display:grid;grid-template-columns:1fr 104px;gap:8px;font-size:17px;padding:0;border-bottom:none}
  :is(#pay,#account) .codeq .code input{width:100%;height:50px;border-radius:12px;border:1px solid var(--line);background:var(--paper);padding:0 14px;font-family:ui-monospace,"SF Mono",Menlo,Consolas,monospace;font-size:19px;letter-spacing:.14em;color:var(--ink);direction:ltr;text-align:center;text-transform:uppercase}
  :is(#pay,#account) .codeq .code input::placeholder{color:var(--ink-soft);letter-spacing:.14em;font-size:17px}
  :is(#pay,#account) .codeq .code input:focus{outline:0;border-color:var(--focus,#a17826);box-shadow:0 0 0 3px rgba(161,120,38,.22)}
  :is(#pay,#account) .codeq .code .btn{min-height:50px;padding:0 12px;font-size:16px}
  /* ⚠ ביטול ירושה: #account .row span{color:var(--ink-soft)} (שורה 3125, לתוויות "שם משתמש" וכו')
     תפסה גם את ה-span בתוך כפתור «הפעלה» כי הוא בתוך .row (אפילו נעוץ ברמה עמוקה יותר, בתוך
     הכפתור) -- color:inherit מחזיר אותו לצבע הכפתור עצמו (לבן על .btn-primary, כמו הקובץ). */
  :is(#pay,#account) .codeq .code .btn span{color:inherit}
  :is(#pay,#account) .codeq .code .btn[disabled]{opacity:.45;cursor:default;filter:none}
  :is(#pay,#account) .codeq .code .res{margin:10px 0 0;min-height:1.4em;font-size:14.5px;color:var(--ink)}
  :is(#pay,#account) .codeq .code .res.ok{color:var(--ok-deep);font-weight:500}
  @media (prefers-reduced-motion:reduce){
    :is(#pay,#account) .codeq>.btn svg{transition:none}
    :is(#pay,#account) .codeq[data-open="1"] .code{animation:none}
  }

  /* ===== מסך «קודים» בניהול · #adminNav הבורר בין «משתמשים» ל«קודים» (חדש, אין לו מקביל בקובץ) ·
     ⭐ 25.9 (הכרעת חגי: ב) מתג הזכוכית -- אותו .cd-seg שמוגדר תחת #adminBody למטה (kindSeg/daysSeg),
     כאן רק מורחב ל-#adminNav (מחוץ ל-#adminBody) כדי לא לכפול את הכללים. ===== */

  /* שלושת תאי הסיכום · .stats/.stat של הקובץ (שונה מ-.adm-glance/.adm-g של מסך המשתמשים, קיימים זה
     לצד זה בלי להתנגש כי הם לעולם לא מוצגים יחד) */
  #adminBody .stats{border-radius:16px;padding:18px 6px;margin-top:18px;display:flex}
  /* ⚠ ביטול ירושה: .card המשותפת (שורה 542, כרטיס התרגול) נועלת border:1px solid var(--line) ו-
     text-align:center -- #codesStats נושא גם class="card" (לזכוכית/רדיוס בלבד), והספק לא מבקש
     גבול או מרכוז כאן. אותו דפוס בדיוק כמו #account .card (שורה 3120). */
  #adminBody .stats{border:0;text-align:start}
  #adminBody .stat{flex:1;text-align:center;display:flex;flex-direction:column;gap:4px}
  #adminBody .stat+.stat{border-inline-start:1px solid var(--line)}
  #adminBody .stat b{font-family:"Frank Ruhl Libre","David Libre",serif;font-weight:700;font-size:29px;color:var(--ink);line-height:1;font-variant-numeric:tabular-nums}
  #adminBody .stat span{font-size:12px;color:var(--ink-soft)}

  /* קוד חדש · טופס קצר: סוג, ימים או מכסה, הערה, ותוקף להפעלה */
  #adminBody .newcode{border-radius:16px;padding:18px 16px 16px;margin-top:16px;text-align:center}
  #adminBody .newcode .t{display:block;font-family:"Frank Ruhl Libre","David Libre",serif;font-weight:700;font-size:19px;margin:0 0 4px}
  #adminBody .fl{display:block;font-size:12px;letter-spacing:.14em;color:var(--ink-soft);font-weight:500;margin:16px 0 8px}
  /* ⭐ תיקון 25.9: .newcode .seg button{height:40px;font-size:14px} של הקובץ היה חסר -- בלעדיו
     kindSeg/daysSeg ירשו רק את ברירת המחדל הכללית של .cd-seg (42px/15px, למטה), וההידית הגולשת
     (top:3/bottom:3 בתוך המעטפת) גבהה בהתאם. .cd-seg.days גובר בנפרד (13.5px, כבר קיים). */
  #adminBody .newcode .cd-seg button{height:40px;font-size:14px}
  #adminBody .newcode .cd-seg.days button{font-size:13.5px}
  #adminBody .qty{display:grid;grid-template-columns:48px 1fr 48px;gap:8px;align-items:center;max-width:220px;margin:0 auto}
  /* ⚠ ביטול ירושה: *{padding:0} (שורה 52) מוחק את ריפוד ברירת המחדל של הדפדפן לכפתור/למספר, שהספק
     סומך עליו כי הוא לא מאפס padding בכלל -- אותו דפוס בדיוק כמו .modeseg button (שורה 707). */
  #adminBody .qty button{height:48px;border:0;border-radius:12px;cursor:pointer;font-size:22px;color:var(--accent);line-height:1;padding:1px 6px}
  #adminBody .qty input{width:100%;height:48px;border-radius:12px;border:1px solid var(--line-strong);background:var(--paper);color:var(--ink);font-family:"Frank Ruhl Libre","David Libre",serif;font-weight:700;font-size:22px;text-align:center;-moz-appearance:textfield;padding:1px 2px}
  #adminBody .qty input::-webkit-outer-spin-button,#adminBody .qty input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
  #adminBody .newcode .cap{margin:8px 0 0;font-size:13px;color:var(--ink-soft)}
  #adminBody .newcode .txt,#adminBody .newcode .date{width:100%;height:48px;border-radius:12px;border:1px solid var(--line-strong);background:var(--paper);color:var(--ink);font:inherit;font-size:15px;text-align:center;padding:0 14px}
  #adminBody .newcode .txt::placeholder{color:var(--ink-soft)}
  #adminBody .newcode .date{direction:ltr;text-align:center;font-variant-numeric:tabular-nums}
  #adminBody .newcode .acts{margin-top:18px}
  /* ⚠ ביטול ירושה: .btn הגלובלית (שורה 130) נועלת font-family:"Heebo" (בלי Arial Hebrew) ו-
     font-size:1rem (16px) -- הספק מבקש את גופן הגוף המלא ב-17px (button{font-family:var(--body)}
     + .btn{font-size:17px} בקובץ). gap:normal מבטל את .btn.lg{gap:8px} של LG-SYSTEM (אין כאן
     אייקון, בדיוק כמו #pay .btn). */
  #adminBody .newcode .acts .btn{font-family:"Heebo","Arial Hebrew",Arial,sans-serif;font-size:17px;gap:normal}
  #adminBody .mode{display:none}
  #adminBody .mode.on{display:block;animation:rise .3s cubic-bezier(.23,1,.32,1) both}

  /* בורר גולש · .cd-seg, כמו .seg בקובץ (שם שונה כדי לא להתנגש עם .seg הגלובלית, כמו .lg-seg/.adm-sseg)
     · #adminNav (הבורר משתמשים/קודים, מחוץ ל-#adminBody) מצטרף לאותם כללים ולא מכפיל אותם. */
  #adminNav, #adminBody .cd-seg{display:flex;padding:3px;border-radius:14px;margin:12px 0 0;position:relative;background:rgba(44,38,32,.07)}
  #adminNav button, #adminBody .cd-seg button{flex:1;min-width:0;background:none;border:0;cursor:pointer;height:42px;border-radius:11px;color:var(--ink);font-weight:600;font-size:15px;position:relative;z-index:1;transition:color .25s;padding:0 2px;white-space:nowrap;font-family:"Heebo","Arial Hebrew",Arial,sans-serif}
  #adminNav button.on, #adminBody .cd-seg button.on{color:#fff}
  #adminNav .thumb, #adminBody .cd-seg .thumb{position:absolute;top:3px;bottom:3px;inset-inline-start:3px;width:calc((100% - 6px)/var(--n,3));border-radius:11px;background:linear-gradient(180deg,rgba(160,58,36,.94),rgba(143,54,32,.96));box-shadow:inset 0 0 0 1px rgba(255,255,255,.3),0 6px 14px -6px rgba(143,54,32,.6);transition:transform .55s cubic-bezier(.22,.61,.36,1);z-index:0}
  #adminNav[data-i="1"] .thumb, #adminBody .cd-seg[data-i="1"] .thumb{transform:translateX(-100%)}
  /* ⭐ 11.10 · הידית של #adminNav הוגדרה רק עד data-i="1" (הבורר מחוץ ל-#adminBody, ולכן שני הכללים שלמטה לא חלו עליו).
     ב«יחידות» (data-i="2") הידית נשארה מתחת ל«משתמשים» והכיתוב הלבן של הלשונית הפעילה נפל על רקע בהיר. עכשיו כל ארבע הלשוניות. */
  #adminNav[data-i="2"] .thumb, #adminBody .cd-seg[data-i="2"] .thumb{transform:translateX(-200%)}
  #adminNav[data-i="3"] .thumb, #adminBody .cd-seg[data-i="3"] .thumb{transform:translateX(-300%)}
  #adminNav button:focus-visible{outline:3px solid #a17826;outline-offset:-3px}
  @media (prefers-reduced-motion:reduce){#adminNav .thumb, #adminBody .cd-seg .thumb{transition:none}}

  /* הקוד שנוצר · מוצג פעם אחת, בכתום כמו קוד הכיתה */
  #adminBody .reveal{border-radius:16px;padding:18px 16px 16px;margin-top:12px;text-align:center;background:linear-gradient(rgba(201,150,47,.12),rgba(201,150,47,.12)),rgba(255,255,255,.05);animation:rise .45s cubic-bezier(.23,1,.32,1) both}
  /* ⚠ ביטול ירושה: .reveal גלובלית (שורה 620, רכיב "גילוי תשובה" בתרגול/השלמת משפטים -- לא קשור)
     נועלת font-size:1.05rem (16.8px) -- אין לה קשר לכרטיס «הקוד מוכן» חוץ מאותו שם מחלקה, אבל
     #adminBody .reveal כאן לא הצהיר font-size בכלל, אז הירושה מ-#admin{font-size:17px} הפסידה לה. */
  #adminBody .reveal{font-size:17px}
  #adminBody .reveal .t{display:block;font-family:"Frank Ruhl Libre","David Libre",serif;font-weight:700;font-size:19px;margin:0 0 8px}
  #adminBody .reveal .c{font-family:ui-monospace,"SF Mono",Menlo,Consolas,monospace;font-weight:700;font-size:34px;letter-spacing:.14em;line-height:1.1;margin:0;color:var(--accent);direction:ltr;unicode-bidi:isolate}
  #adminBody .reveal .what{margin:8px 0 0;font-size:14.5px;color:var(--ink)}
  #adminBody .reveal .acts{flex-direction:row;gap:10px;margin-top:14px;display:flex}
  /* ⚠ ביטול ירושה: .btn הגלובלית נועלת font-family:"Heebo" בלי Arial Hebrew (כמו ב-.newcode .acts
     .btn למעלה) -- font-size/gap כאן כבר תואמים לקובץ (.reveal .acts .btn{font-size:15px;gap:8px},
     אין צורך לגעת בהם. */
  #adminBody .reveal .acts .btn{flex:1;min-height:46px;font-size:15px;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-family:"Heebo","Arial Hebrew",Arial,sans-serif}
  #adminBody .reveal .acts .btn svg{margin:0;width:18px;height:18px;stroke:currentColor;stroke-width:1.9;fill:none;stroke-linecap:round;stroke-linejoin:round}
  /* ⚠ ביטול ירושה: .btn-ghost.lg{background:rgba(255,255,255,.16)} (LG-SYSTEM) גוברת על .lg{background:
     rgba(255,255,255,.05)} הבסיסית -- הקובץ מבקש .05 לכפתור «סגירה» כמו כל .btn-ghost אחר בו, בלי
     דריסה משלו (אותו דפוס כמו #introDemoSkip/.codeq>.btn למעלה). */
  #closeReveal{background:rgba(255,255,255,.05)}
  #adminBody .reveal .hint{margin:12px 0 0;font-size:13px;color:var(--ink-soft);line-height:1.45}
  @media (prefers-reduced-motion:reduce){#adminBody .reveal{animation:none}}

  /* «כל הקודים» · הכותרת והסיכום, כמו .sec-t/.sec-sum בקובץ (שם שונה מ-.section-t הקיים ל«דיווחים») */
  #adminBody .sec-t{font-family:"Frank Ruhl Libre","David Libre",serif;font-weight:700;font-size:20px;margin:30px 0 4px;text-align:center;color:var(--ink)}
  #adminBody .sec-sum{font-size:13px;color:var(--ink-soft);text-align:center;margin:0 0 2px}
  #adminBody .sec-sum b{color:var(--accent-deep);font-family:"Frank Ruhl Libre","David Libre",serif;font-size:15px}

  /* רשימת הקודים · כרטיס זכוכית לכל קוד, ממורכז */
  #adminBody .klist{display:flex;flex-direction:column;gap:12px;margin-top:10px}
  #adminBody .kcard{border-radius:16px;padding:16px 16px 14px;text-align:center}
  #adminBody .kcard.off,#adminBody .kcard.off .pill,#adminBody .kcard.off .sub-tag{color:var(--ink-soft)}
  #adminBody .kcard .tags{display:flex;gap:6px;flex-wrap:wrap;justify-content:center}
  /* ⚠ ביטול ירושה: .pill הגלובלית (שורה 2110, כפתורי הכרטיסיות ברכישה) נועלת min-height:44px ו-
     gap:8px -- זה תג טקסט בלבד כאן (span, לא כפתור), והגובה התנפח ל-44px במקום 28.6px הטבעי;
     .sub-tag השכן (אותו .tags, display:flex בלי align-items) נמתח יחד איתו (stretch, ברירת המחדל)
     ולכן גם הוא הראה 44px בדוח בלי שום כלל שנוגע בו ישירות. */
  #adminBody .pill{display:inline-flex;align-items:center;font-size:12px;font-weight:600;padding:5px 13px;border-radius:999px;color:var(--ink);border:0;background:rgba(255,255,255,.05);
    box-shadow:inset 0 0 14px rgba(255,255,255,.30),inset 0 -6px 12px -10px rgba(0,0,0,.10),0 8px 22px -14px rgba(44,38,32,.18);
    backdrop-filter:blur(9px) saturate(200%) brightness(1.08);-webkit-backdrop-filter:blur(9px) saturate(200%) brightness(1.08);
    min-height:0;gap:normal}
  #adminBody .kcard .note{font-family:"Frank Ruhl Libre","David Libre",serif;font-weight:700;font-size:18px;margin:10px 0 0}
  #adminBody .kcard .meta{display:flex;align-items:center;justify-content:center;font-size:12.5px;color:var(--ink-soft);margin-top:6px;flex-wrap:wrap}
  #adminBody .kcard .meta .dot{display:inline-block;width:4px;height:4px;border-radius:50%;background:var(--line);margin:0 7px}
  #adminBody .sub-tag{display:inline-flex;align-items:center;gap:7px;font-size:12px;font-weight:600;padding:5px 13px;border-radius:999px;color:var(--ink)}
  #adminBody .sub-tag i{width:7px;height:7px;border-radius:50%;background:var(--ok);flex:none}
  #adminBody .sub-tag.due i{background:var(--accent)}
  #adminBody .sub-tag.off i{background:var(--ink-soft)}
  #adminBody .kcard .kacts{display:flex;gap:8px;margin-top:12px}
  #adminBody .kcard .aitem{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;border:0;border-radius:12px;padding:10px 12px;cursor:pointer;background:rgba(44,38,32,.05);color:var(--ink);font-size:14px;font-weight:600;font-family:"Heebo","Arial Hebrew",Arial,sans-serif}
  #adminBody .kcard .aitem .aic{width:28px;height:28px;border-radius:8px;display:grid;place-items:center;font-size:14px;flex:none;color:#fff;background:linear-gradient(180deg,rgba(160,58,36,.85),rgba(143,54,32,.85))}
  #adminBody .kcard .aitem.danger .aic{background:rgba(181,72,46,.16);color:var(--accent-deep)}
  /* ADMIN Codes CSS bridges var(--focus)/var(--line-strong) already set by the shared #admin{...} rule above (line 4015) */
  /* CODEQ-25.9:END */

/* ⭐ מסך הרכבת יחידות לכיתה בניהול (cb41142d) · רכיבים של האפליקציה בלבד, על אותם כרטיסים ושדות של מסך הקודים */
#adminBody .cu-box{display:flex;flex-direction:column;gap:6px}
#adminBody .cu-unit{padding:16px;margin-top:12px;display:flex;flex-direction:column;gap:6px;text-align:center}
#adminBody .cu-unit .acts{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-top:6px}
#adminBody .cu-pick{margin-top:10px;display:flex;flex-direction:column;gap:6px}
#adminBody .cu-res{display:flex;flex-direction:column;gap:6px;max-height:320px;overflow:auto;margin-top:6px}
#adminBody .cu-w{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap;width:100%;min-height:44px;padding:8px 12px;border:1px solid var(--line);border-radius:12px;background:var(--card);color:var(--ink);cursor:pointer;text-align:center;font:inherit;transition:background .3s var(--ease),box-shadow .3s var(--ease)}
#adminBody .cu-w b{font-weight:700}
#adminBody .cu-w span{font-size:12.5px;color:var(--ink-soft)}
#adminBody .cu-w i{font-style:normal;font-size:12px;color:var(--ink-soft)}
#adminBody .cu-w.on{background:rgba(181,72,46,.11);box-shadow:inset 0 0 0 1.5px var(--accent)}
#adminBody .cu-w:disabled{opacity:.55;cursor:not-allowed}
@media (prefers-reduced-motion:reduce){#adminBody .cu-w{transition:none}}

/* ⭐ 46.sql · בורר הכיתות של מורה עם יותר מכיתה אחת (רכיב «מתג מקטעים»): שורות נשברות כשיש הרבה כיתות */
#accP2 .cls-pick{flex-wrap:wrap;margin:0 0 14px}
#accP2 .cls-pick button{min-height:44px}

/* ===== ריווח עליון לפי האזור הבטוח של המכשיר · 2.10.2026 =====
   באייפון, באפליקציה מותקנת, הפס העליון של מסכי התרגול («יחידה 5» ו«יציאה») נראה מתחת לשעון.
   הריווח נקבע עד עכשיו פעם אחת על ה-body (env(safe-area-inset-top)), ולכן כל פס עליון היה תלוי
   בו בלי לציין זאת בעצמו. כאן הריווח עובר אל הפס עצמו: המסך שיש לו פס כזה מקבל את הריווח עליו,
   וה-body מוותר על הריווח הכפול (בדפדפן רגיל env() הוא 0, ולכן המיקום זהה לקודם).
   ⛔ פס עליון חדש שנוסף לכאן חייב לכלול env(safe-area-inset-top): tests/safe-area-top.test.js. */
body:has(:is(#stats,#quiz,#home,#account,#results,#sent,#para,#level,#exam,#pay,#add,#manage,#admin,#intro,#suspended,#canceled,#scope,#mode,#conn):not(.hidden)){
  padding-top:0}
#stats .top,#quiz .top,#home .top,#account .top,#results .top,#sent .top,#level .top,#exam .top{
  padding-top:calc(16px + env(safe-area-inset-top,0px))}
#pay .top{padding-top:calc(4px + env(safe-area-inset-top,0px));min-height:calc(44px + env(safe-area-inset-top,0px))}
#add .topbar,#manage .topbar,#admin .topbar{padding-top:calc(16px + env(safe-area-inset-top,0px))}
/* מסכים בלי פס .top: הריווח על העטיפה .wrap שלהם (הערך הקודם של ה-padding-top + האזור הבטוח). */
.wrap:has(>:is(#suspended,#canceled):not(.hidden)){padding-top:calc(24px + env(safe-area-inset-top,0px))}
.wrap:has(>#intro:not(.hidden)){padding-top:env(safe-area-inset-top,0px)}
.wrap:has(>:is(#scope,#mode,#conn):not(.hidden)){padding-top:calc(22px + env(safe-area-inset-top,0px))}

/* פס התצוגה המקדימה (.pv-bar) דביק ומקבל top לפי האזור הבטוח בכלל שלו, למעלה. */

/* ===== פסקת תרגול (#para) · עיצוב-9.9/פסקת-תרגול/index.html ·  סימון המילים עדין מהמוקאפ (הערת חגי 2.10) ===== */
#para{
  --paper:#f6f1e7; --paper-deep:#efe8da; --card:#fffdf8; --ink:#2c2620; --ink-soft:#5e564a;
  --gold:#c9962f; --gold-text:#83621f; --accent:#b5482e; --accent-deep:#8f3620; --line:#e3d8c4; --line-strong:#888276; --ok:#437147; --ok-deep:#3f6942; --focus:#a17826;
  --display:"Frank Ruhl Libre","David Libre",serif; --body:"Heebo","Arial Hebrew",Arial,sans-serif; --serif:"Frank Ruhl Libre",Georgia,serif;
  --ease:cubic-bezier(.23,1,.32,1);
  --primary:linear-gradient(180deg,rgba(160,58,36,.94),rgba(143,54,32,.96));
  color:var(--ink);font-family:var(--body);font-size:17px;line-height:1.55}
body:has(#para:not(.hidden)){background-image:radial-gradient(340px 300px at 88% 40px,rgba(201,150,47,.30),transparent 70%),radial-gradient(320px 320px at 4% 420px,rgba(181,72,46,.22),transparent 70%),radial-gradient(340px 320px at 96% 800px,rgba(201,150,47,.24),transparent 70%);background-repeat:no-repeat}
.wrap:has(>#para:not(.hidden)){max-width:520px;margin:0 auto;padding:0 18px 60px;min-height:100vh;display:flex;flex-direction:column}
body.ios-web .wrap:has(>#para:not(.hidden)){padding-bottom:calc(60px + 68px)}
.wrap:has(>#para:not(.hidden)){padding-top:calc(16px + env(safe-area-inset-top,0px))}
#para:not(.hidden){display:flex;flex-direction:column;flex:1}
#para .lg{position:relative;isolation:isolate;overflow:hidden;background:rgba(255,255,255,.16);
  backdrop-filter:blur(14px) saturate(180%) brightness(1.04);-webkit-backdrop-filter:blur(14px) saturate(180%) brightness(1.04);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.32),inset 1.5px 1.5px 0 -.5px rgba(255,255,255,.85),inset -1px -1px 0 -.5px rgba(0,0,0,.16),inset 0 -8px 16px -12px rgba(0,0,0,.18),0 12px 30px -10px rgba(44,38,32,.28),0 1px 1px rgba(0,0,0,.04)}
#para .lg::before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;
  background:radial-gradient(130% 70% at 50% -10%,rgba(255,255,255,.55),rgba(255,255,255,0) 60%),radial-gradient(90% 50% at 50% 115%,rgba(255,255,255,.22),rgba(255,255,255,0) 60%)}
#para .lg::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;padding:0;-webkit-mask:none;mask:none;
  background:linear-gradient(115deg,rgba(255,255,255,.28) 0%,rgba(255,255,255,0) 30%,rgba(255,255,255,0) 70%,rgba(255,255,255,.14) 100%)}
#para .lg>*{position:relative;z-index:1}
#para button{font-family:var(--body)}
#para :focus-visible{outline:3px solid var(--focus);outline-offset:3px;border-radius:6px}
#para .btn{position:relative;width:100%;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-weight:600;font-size:17px;border-radius:14px;padding:0 18px;border:0;cursor:pointer;min-height:52px;letter-spacing:-.01em;color:var(--ink);transition:transform .12s ease,filter .2s ease}
#para .btn:active{transform:scale(.97)}
#para .btn-primary{color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.25);background:var(--primary);box-shadow:inset 0 0 0 1px rgba(255,255,255,.38),inset 1.5px 1.5px 0 -.5px rgba(255,255,255,.8),inset -1px -1px 0 -.5px rgba(0,0,0,.2),inset 0 -8px 16px -12px rgba(0,0,0,.25),0 12px 30px -10px rgba(143,54,32,.6),0 1px 1px rgba(0,0,0,.06)}
#para .btn-primary.lg::before{background:radial-gradient(130% 70% at 50% -10%,rgba(255,255,255,.16),rgba(255,255,255,0) 60%),radial-gradient(90% 50% at 50% 115%,rgba(255,200,180,.18),rgba(255,255,255,0) 60%)}
#para .btn-primary.lg::after{background:linear-gradient(115deg,rgba(255,255,255,.18) 0%,rgba(255,255,255,0) 30%,rgba(255,255,255,0) 70%,rgba(255,255,255,.08) 100%)}
#para .btn svg{width:18px;height:18px;flex:none;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
@media (hover:hover) and (pointer:fine){#para .btn-primary:hover{filter:brightness(1.06)}}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){#para .lg{background:rgba(255,253,248,.86)}}
@keyframes pr-rise{from{opacity:0;transform:translateY(6px)}}
@keyframes pr-land{from{opacity:0;transform:translateY(8px)}}
@keyframes pr-fillring{from{stroke-dasharray:0 100}}
@keyframes pr-fillbar{from{transform:scaleX(0)}}
@keyframes pr-burst{0%{transform:translate(0,0) scale(.4) rotate(0);opacity:0}8%{opacity:1}100%{transform:translate(var(--dx),var(--dy)) scale(1) rotate(260deg);opacity:0}}
#para .pr-app{flex:1;display:flex;flex-direction:column;padding:0 18px 34px}
#para .pr-top{display:flex;align-items:center;justify-content:space-between;min-height:44px;padding-top:4px}
#para .pr-back{display:inline-flex;align-items:center;gap:7px;border:0;border-radius:11px;color:var(--ink);font-size:14px;font-weight:500;cursor:pointer;padding:9px 13px 9px 10px;transition:transform .12s ease}
#para .pr-back:active{transform:scale(.97)}
#para .pr-back svg{width:16px;height:16px;stroke:var(--accent);stroke-width:2.2;fill:none;stroke-linecap:round;stroke-linejoin:round}
#para .pr-view{display:flex;flex-direction:column;flex:1}
#para .pr-view.pr-in>*{animation:pr-rise .45s var(--ease) both}
#para .pr-view.pr-in>*:nth-child(2){animation-delay:.06s}
#para .pr-view.pr-in>*:nth-child(3){animation-delay:.12s}
#para .pr-view.pr-in>*:nth-child(4){animation-delay:.18s}
#para .pr-view.pr-in>*:nth-child(5){animation-delay:.24s}
#para .pr-view.pr-in>*:nth-child(6){animation-delay:.3s}
#para .pr-head{text-align:center;margin:16px 0 0}
#para .pr-ico{width:52px;height:52px;border-radius:50%;margin:0 auto 12px;display:grid;place-items:center;background:rgba(181,72,46,.13);box-shadow:inset 0 0 0 1px rgba(181,72,46,.16),0 0 0 8px rgba(181,72,46,.05)}
#para .pr-ico svg{width:26px;height:26px;fill:none;stroke:var(--accent);stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
#para .pr-head h1{font-family:var(--display);font-weight:700;font-size:30px;line-height:1.15;margin:0;text-wrap:balance}
#para .pr-head .pr-sub{margin:8px auto 0;max-width:19em;font-size:15.5px;color:var(--ink);text-wrap:balance}
#para .pr-k{margin:0;font-size:12px;letter-spacing:.14em;color:var(--ink-soft);font-weight:500;text-align:center}
#para .pr-card{border-radius:16px;padding:16px;text-align:center}
#para .pr-acts{display:flex;flex-direction:column;gap:9px;margin-top:auto;padding-top:18px}
#para .pr-next{margin:24px 0 0}
#para .pr-next h2{font-family:var(--display);font-weight:700;font-size:26px;line-height:1.2;margin:6px 0 0;direction:ltr;unicode-bidi:isolate}
#para .pr-steps{display:flex;justify-content:center;gap:8px;margin:14px 0 0;flex-wrap:wrap}
#para .pr-chip{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:500;padding:5px 12px;border-radius:999px;color:var(--ink)}
#para .pr-chip i{width:7px;height:7px;border-radius:50%;background:var(--accent);flex:none}
#para .pr-intro-note{margin:14px auto 0;max-width:22em;font-size:14.5px;line-height:1.6;color:var(--ink-soft);text-align:center;text-wrap:balance}
#para .pr-para{margin:14px 0 0;padding:16px 16px 18px;border-radius:16px;background:var(--card);box-shadow:inset 0 0 0 1px var(--line),0 24px 48px -36px rgba(44,38,32,.35);outline:1px solid var(--card);outline-offset:-5px}
#para .pr-para .pr-en{direction:ltr;text-align:left;font-family:var(--serif);font-size:18px;line-height:1.9;margin:0}
#para .pr-para .pr-tr{margin:14px 0 0;padding-top:12px;border-top:1px solid var(--line);direction:rtl;text-align:center;font-size:15.5px;line-height:1.75;animation:pr-land .45s var(--ease) both}
#para .pr-w{font:inherit;color:var(--ink);font-weight:inherit;background:rgba(181,72,46,.05);border:0;border-radius:4px;padding:0 2px;margin:0;cursor:pointer;text-decoration:underline dotted var(--accent);text-decoration-thickness:2px;text-underline-offset:5px;transition:background .3s var(--ease),color .3s var(--ease),transform .12s ease;line-height:inherit}
#para .pr-w:active{transform:scale(.97)}
#para .pr-w.pr-sel{text-decoration-color:transparent;color:#fff;border-radius:6px;background:var(--primary);box-shadow:inset 0 0 0 1px rgba(255,255,255,.4),0 4px 10px -4px rgba(143,54,32,.6);text-shadow:0 1px 1px rgba(0,0,0,.25)}
#para .pr-gloss{margin:12px 0 0;min-height:76px;border-radius:16px;padding:12px 16px;text-align:center;display:flex;flex-direction:column;justify-content:center}
#para .pr-gloss .pr-gw{font-family:var(--serif);font-weight:600;font-size:20px;direction:ltr;unicode-bidi:isolate;line-height:1.3}
#para .pr-gloss .pr-gh{font-family:var(--display);font-weight:700;font-size:22px;line-height:1.3;margin-top:2px}
#para .pr-gloss .pr-empty{font-size:14.5px;color:var(--ink-soft);margin:0}
#para .pr-gloss .pr-swap{animation:pr-land .35s var(--ease) both}
#para .pr-trbtn{margin-top:12px}
#para .pr-trbtn svg{transition:transform .35s var(--ease);stroke:var(--accent)}
#para .pr-trbtn[aria-expanded="true"] svg{transform:rotate(180deg)}
#para .pr-prog{display:flex;align-items:center;gap:10px;margin:14px 0 0}
#para .pr-prog .pr-bars{flex:1;display:flex;gap:6px}
#para .pr-prog .pr-bar{flex:1;height:6px;border-radius:999px;background:rgba(44,38,32,.1);overflow:hidden}
#para .pr-prog .pr-bar i{display:block;height:100%;border-radius:inherit;background:var(--accent);transform-origin:right;transform:scaleX(0)}
#para .pr-prog .pr-bar.done i{transform:scaleX(1);animation:pr-fillbar 1.1s var(--ease) both}
#para .pr-prog .pr-bar.cur i{transform:scaleX(.12)}
#para .pr-prog .pr-cnt{font-size:13px;font-weight:500;color:var(--ink-soft);white-space:nowrap}
#para .pr-qwrap{text-align:center}
#para .pr-qtype{display:inline-block;margin:16px auto 0;font-size:12.5px;font-weight:600;padding:5px 14px;border-radius:999px;color:var(--ink)}
#para .pr-q{margin:12px 0 0;font-family:var(--serif);font-weight:600;font-size:20px;line-height:1.5;direction:ltr;text-align:center}
#para .pr-q .pr-blank{display:inline-block;min-width:3.4em;border-bottom:2px solid var(--line-strong);margin-inline:2px;color:var(--ink)}
#para .pr-q .pr-blank.pr-filled{border-bottom-color:var(--ok)}
#para .pr-opts{display:flex;flex-direction:column;gap:10px;margin:18px 0 0}
#para .pr-opt{width:100%;min-height:52px;border:0;border-radius:14px;cursor:pointer;font-family:var(--serif);font-size:18px;font-weight:600;color:var(--ink);direction:ltr;text-align:center;padding:8px 14px;display:flex;align-items:center;justify-content:center;gap:8px;transition:transform .12s ease,background-color .35s var(--ease),opacity .35s var(--ease)}
#para .pr-opt:active{transform:scale(.97)}
#para .pr-opt .pr-mk{width:20px;height:20px;flex:none;fill:none;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}
#para .pr-opt.pr-right{background-color:rgba(67,113,71,.16)}
#para .pr-opt.pr-right .pr-mk{stroke:var(--ok-deep)}
#para .pr-opt.pr-wrong{background-color:rgba(181,72,46,.13)}
#para .pr-opt.pr-wrong .pr-mk{stroke:var(--accent-deep)}
#para .pr-opt[aria-disabled="true"]{cursor:default}
#para .pr-opt.pr-dim{opacity:.6}
#para .pr-fb{margin:14px 0 0;border-radius:16px;padding:13px 16px;text-align:center;animation:pr-land .45s var(--ease) both}
#para .pr-fb.pr-ok{background:linear-gradient(rgba(67,113,71,.10),rgba(67,113,71,.10)),rgba(255,255,255,.16)}
#para .pr-fb.pr-no{background:linear-gradient(rgba(181,72,46,.09),rgba(181,72,46,.09)),rgba(255,255,255,.16)}
#para .pr-fb b{display:block;font-family:var(--display);font-weight:700;font-size:19px;line-height:1.3}
#para .pr-fb.pr-ok b{color:var(--ok-deep)}
#para .pr-fb.pr-no b{color:var(--accent-deep)}
#para .pr-fb p{margin:4px 0 0;font-size:15px;line-height:1.55;text-wrap:balance}
#para .pr-v-done{align-items:center;text-align:center}
#para .pr-ringwrap{position:relative;width:132px;height:132px;margin:26px 0 0;flex:none}
#para .pr-ring{position:absolute;inset:0;border-radius:50%;display:grid;place-items:center}
#para .pr-ring svg.pr-arc{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg);z-index:1}
#para .pr-ring circle{fill:none;stroke-width:6}
#para .pr-ring .pr-trk{stroke:rgba(44,38,32,.08)}
#para .pr-ring .pr-fg{stroke:var(--ok);stroke-linecap:round;animation:pr-fillring 1.3s var(--ease) .3s both}
#para .pr-ring .pr-num{position:relative;z-index:2;font-family:var(--display);font-weight:700;font-size:40px;line-height:1;color:var(--ok-deep);direction:ltr}
#para .pr-ring .pr-num small{font-size:20px;color:var(--ink-soft)}
#para .pr-burst{position:absolute;left:50%;top:50%;width:0;height:0;z-index:0}
#para .pr-burst i{position:absolute;left:-4px;top:-4px;width:8px;height:8px;border-radius:2px;opacity:0;animation:pr-burst 1.8s cubic-bezier(.1,.7,.3,1) calc(.5s + var(--t)) both}
#para .pr-burst i:nth-child(odd){background:var(--accent)}
#para .pr-burst i:nth-child(even){background:var(--gold);border-radius:50%}
#para .pr-burst i:nth-child(1){--dx:-150px;--dy:-120px;--t:0s}
#para .pr-burst i:nth-child(2){--dx:150px;--dy:-110px;--t:.15s}
#para .pr-burst i:nth-child(3){--dx:-170px;--dy:20px;--t:.3s}
#para .pr-burst i:nth-child(4){--dx:170px;--dy:30px;--t:.05s}
#para .pr-burst i:nth-child(5){--dx:-90px;--dy:-160px;--t:.4s}
#para .pr-burst i:nth-child(6){--dx:90px;--dy:-165px;--t:.25s}
#para .pr-burst i:nth-child(7){--dx:-130px;--dy:120px;--t:.5s}
#para .pr-burst i:nth-child(8){--dx:130px;--dy:110px;--t:.35s}
#para .pr-burst i:nth-child(9){--dx:0px;--dy:-180px;--t:.45s}
#para .pr-burst i:nth-child(10){--dx:20px;--dy:150px;--t:.2s}
#para .pr-v-done h1{font-family:var(--display);font-weight:700;font-size:30px;line-height:1.15;margin:22px 0 0}
#para .pr-v-done .pr-res{margin:8px 0 0;font-size:16px;color:var(--ink);max-width:19em;text-wrap:balance}
#para .pr-v-done .pr-acts{width:100%}
#para .pr-empty-ico{width:84px;height:84px;margin:34px auto 0;border-radius:50%;display:grid;place-items:center;background:rgba(181,72,46,.13);box-shadow:inset 0 0 0 1px rgba(181,72,46,.16),0 0 0 12px rgba(181,72,46,.05)}
#para .pr-empty-ico svg{width:40px;height:40px;fill:none;stroke:var(--accent);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
#para .pr-app{padding:0 0 34px}
#para .pr-prog .pr-bars{direction:rtl}
@media (prefers-reduced-motion:reduce){#para *,#para *::before,#para *::after{animation:none!important;transition:none!important}}
#para [hidden]{display:none!important}
#para .pr-brand{font-family:var(--display);font-weight:700;font-size:20px;color:var(--accent);direction:ltr;unicode-bidi:isolate}
#para .pr-view{min-height:calc(100vh - 120px)}

/* ===== 3.10.2026 · ביקורת קורא מסך ומקלדת =====
   בוחן המילים (#sqCard) וחגיגת היחידה (#cheer) הם חלונות עכשיו, והמיקוד נכנס אליהם: אותה טבעת זהב של כל
   החלונות. שדה התאריך בטופס הקודים היה בלי טבעת. וכותרת שקיבלה מיקוד מהקוד אחרי מעבר מסך (focusTop
   ב-app.js) אינה כפתור, ולכן בלי טבעת. */
:is(#sqCard,#cheer) :focus-visible{outline:3px solid #a17826;outline-offset:3px;border-radius:6px}
#adminBody .newcode .date:focus-within{outline:3px solid #a17826;outline-offset:3px}
[data-sr-focus]:focus{outline:none!important}
/* 3.10.2026 · הכרעת חגי («מאשר») אחרי הבדיקה באייפון: במתג השפה VoiceOver הקריא את האימוג'י באנגלית
   (book, input symbol for letters). ה-label מוסתר מקורא המסך (aria-hidden) והשם יושב על הקלט עצמו
   (aria-label). כדי שנגיעה במתג תמצא את הקלט, הוא מכסה את החצי שלו. הוא נשאר שקוף ולא לחיץ, והמראה
   לא משתנה. בלי רכיב חדש, ולכן בלי שינוי בהשוואה לקובץ המאושר. */
#home .lseg input{top:0;bottom:0;width:50%;height:100%;margin:0}
#home .lseg #langHe{inset-inline-start:0}
#home .lseg #langEn{inset-inline-end:0}

/* נגן סרטון ההדרכה בתוך האפליקציה (#vidPlay) · 3.10. מסגרת זכוכית כמו חלונות ההזמנה, ו-✕ של .ask-x. הסרטון 9:16 ולא גבוה מהמסך. */
#vidPlay{padding:20px 18px;--ink:#2c2620;--gold:#c9962f}
#vidPlay>.dlg{width:100%;max-width:360px;min-width:0;position:relative;isolation:isolate;overflow:hidden;border-radius:16px;padding:44px 12px 12px;background:rgba(255,253,248,.82);backdrop-filter:blur(9px) saturate(200%);-webkit-backdrop-filter:blur(9px) saturate(200%);box-shadow:inset 0 0 14px rgba(255,255,255,.30),0 8px 22px -14px rgba(44,38,32,.18)}
#vidPlay .ask-x{position:absolute;min-width:44px;min-height:44px}
#vidPlay video{display:block;width:100%;max-height:min(70vh,640px);border-radius:12px;background:#000;object-fit:contain}
#vidPlay :focus-visible{outline:3px solid #a17826;outline-offset:3px;border-radius:6px}
/* 9.10 נגישות (2.4.7) · טבעת המיקוד הזהובה של שאר המסכים גם בבחירת התרגול (#mode), בהוספת מילה (#add), בניהול מילים
   (#manage) ובפס ההצצה (#pvBar, כפתור «פתח חשבון»). עד היום היו שם טבעת ברירת המחדל של הדפדפן. */
:is(#mode,#add,#manage,#pvBar) :focus-visible{outline:3px solid #a17826;outline-offset:3px}
/* בפס ההצצה הרקע זהב, וטבעת זהובה במרחק 3px ממנו כמעט לא נראית (1.5:1). צמודה לכפתור הלבן היא 4:1 מולו. */
#pvBar :focus-visible{outline-offset:0}
/* שדות הוספת המילה: #add .input:focus (למעלה) מאפס את outline בספציפיות גבוהה יותר, ולכן הטבעת חוזרת כאן באותה ספציפיות */
#add .input:focus-visible{outline:3px solid #a17826;outline-offset:3px}
/* 9.10 נגישות (1.4.1) · ה-✓/✗ של השלמת המשפטים (#sent .opt .mk) גם במבחן הרמה ובמבחן היחידה, כדי שנכון/שגוי לא יהיה בצבע בלבד.
   כאן ולא בבלוקים של המסכים: הבלוקים הם העתק של הקבצים המאושרים, והסימן אינו בקבצים. */
:is(#level,#exam) .opt .mk{display:inline-grid;place-items:center;width:26px;height:26px;border-radius:50%;margin-inline-start:8px;vertical-align:middle}
:is(#level,#exam) .opt .mk svg{width:15px;height:15px;stroke:#fff;stroke-width:2.6;fill:none;stroke-linecap:round;stroke-linejoin:round}
:is(#level,#exam) .opt.right .mk{background:var(--ok)}
:is(#level,#exam) .opt.wrong .mk{background:var(--accent)}
