/* ============================================================
   تَك — كسوة التطبيق · بوابة ١: الديوانية (جوال أولًا)

   هذا الملف يملك **الهندسة السائلة** وحدها: وين يقعد كل جسم،
   وكيف يتنفّس الإيقاع الرأسي مع طول الشاشة، وميزانية الحافّة
   الآمنة، وأي سلّم ينحسب من النَفَس ‎--g‎ — بما فيه سلالم الكسوة
   السائلة، مكتوبةً ‎clamp()‎ وبالـrem فترث رفعة الجذر العربية.
   وما يملك ولا صبغةً ولا نورًا ولا وزنًا ولا نصف قطر ولا **أي
   مقاس مطلق**: ولا ‎#hex‎، ولا ‎rgba()‎، ولا ‎box-shadow‎، ولا
   ‎drop-shadow‎، ولا ‎font-weight‎، ولا ‎border-radius‎، ولا مقاس
   نصٍّ ثابت بالبكسل. هذي كلها من العدّة أو ما توجد.

   (تصحيحان ٢٠٢٦-٠٧-٢٨. الأول: كان مكتوبًا «لا يملك ولا قيمة
    تصميمية» والملف يحمل ٢٨px و٧٠٠ وظلَّ نصٍّ وظلَّين بالبكسل
    وتدرّجًا نحاسيًّا يتيمًا. والثاني، الجولة ٤: انصلحت الجملة
    إلى «ولا مقاس نصّ» — وشُحنت ثلاثة مقاسات نصّ هنا. الجملة
    انكسرت مرّتين لأنها كانت تمنع ما لا يُمنع. الآن الحدّ مكتوب
    كما يقدر البناء أن يحقّقه: الهندسة السائلة ملك الكسوة —
    وحدها هي اللي تعرف طول الشاشة — والصبغة والضوء والوزن
    والنصف والمقاس المطلق ليست ملكها أبدًا.)

   هو خمسة أشياء:
     ١ · يستورد القالب — design/tak/tokens.css ثم components.css
     ٢ · يربط فتحات الصور (--im-*) لأن القالب ما يعرف وين الخامات
     ٣ · يركّب صفحة الديوانية من مكوّنات القالب
     ٤ · يمسك الإيقاع الرأسي السائل (--g) وميزانية الحواف الآمنة
     ٥ · السلالم السائلة اللي تربط الكسوة بالنَفَس

   ورفعة الجذر ما تعيش هنا: بيتها tokens.css §٧-ب، ومكتوبة
   **نسبةً** على جذر القارئ لا رقمًا بالبكسل.

   فالمسار كامل ومتتبَّع، والاتجاه واحد ولا ينعكس:
     design/tak/tokens.css → components.css → styles/tak.css
     → index.html
     وkit/tokens.json يُولَّد **من** tokens.css، ما هو مصدرًا لها.
     (كان مكتوبًا هنا العكس — kit/tokens.json أولًا — وهو نفس
      فخّ الأولوية اللي أعلن السجلّ إغلاقه ثلاث مرّات. انصلح
      ٢٠٢٦-٠٧-٢٨ · الجولة ٤. المولّد:
      node design/tak/gen-tokens-json.mjs --write)
   ============================================================ */
@import url("../../../design/tak/tokens.css");
@import url("../../../design/tak/components.css");

/* ---------- ربط الخامات ----------
   عطب مقيس (٢٠٢٦-٠٧-٢٨): الـurl() جوّا خاصيّة مخصّصة ينحلّ نسبةً
   للملف اللي *يستعملها*، مو اللي يعلنها. فـ--im-weave معلنة هنا
   ومستعملة في design/tak/components.css، فكانت تنحلّ إلى
   design/assets/weave-night.jpg — أي ٤٠٤. الجوخ ما انعرض ولا مرّة
   واحدة من يوم ما انبنت الردهة، والأرض اللي شفناها كانت لون اللوح
   والمصباح وحدهما. ولهذا انقرأت «تدرّج أخضر سادّ».
   الحلّ: القاعدة اللي تستعمل الفتحة تعيش هنا، جنب الإعلان. */
.tak{--im-weave:url("../assets/weave-najdi-v4.jpg");--im-back:url("../assets/back-v7-bone.jpg")}
.tk-ground{background-image:var(--im-weave),
                           linear-gradient(var(--weave-plate),var(--weave-plate))}
/* ونفس العطب كان قاعدًا على ظهر الورقة يومًا كامل بعد ما انصلح
   الجوخ: ‎--im-back‎ انعلنت هنا وانستُعملت في
   ‎design/tak/components.css‎، فانحلّت إلى ‎design/assets/back-v3.jpg‎
   — مجلّدٌ ما هو موجودًا. مقيسًا: ‎node _probe/fan.mjs‎ يطبع
   ‎HTTP 404‎ على الرابط المحلول، وemb% = صفر على الأربع ورقات.
   فالقاعدة اللي تستعمل الفتحة نزلت هنا، جنب الإعلان، مثل
   ‎.tk-ground‎ بالضبط. وطبقتا القالب تجيان مرمَّزتين
   (‎--lit-card‎ · ‎--card-bed‎) فما تنكتب ولا واحدة منهما مرّتين،
   والوهج يبقى **فوق** الخامة كما كان في القالب. */
.tkback.has-art>.fc{background:
  var(--lit-card),
  var(--im-back) center/cover no-repeat,
  var(--card-bed)}

/* الرفعة العربية تعيش في العدّة، لا هنا: tokens.css §٧-ب يحطّ
   html{font-size:112.5%} (=١٨٫٠٠px على متصفّح افتراضه ١٦) ويكتب
   كل مقاس نصّي بالـrem. هالملف تخطيط وحده، فما يملك ولا مقاسًا:
   الثلاثة اللي كانت مكتوبة px فيه — النداء وعنوان الدفتر وأرقامه —
   انتقلت للـrem بالجولة ٤، وقبلها كان الدفتر ياخذ صفر رفعة.
   اللي يبقى للملف هنا لون الخلفية. */
html{background:var(--s-void)}
html,body{margin:0;padding:0}
body{min-height:100svh;-webkit-text-size-adjust:100%;background:transparent}
::selection{background:var(--a);color:var(--ink)}

/* ============================================================
   الديوانية — عمود واحد، بلا تمرير.

   ═══ العطب اللي كان مكتومًا: الحواف الآمنة ما كان لها ميزانية ═══
   الصفحة تُشحن بـviewport-fit=cover، والغرفة تزيد الحافّة العليا
   والسفلى على حشوتها — بس الإيقاع الرأسي ما كان يخصم شيئًا مقابلها.
   يعني كل رقم «صفر تمرير» بالجولة ٢ كان رقم حافّة-صفر: مقيسًا
   على متصفّح، لا على تطبيق مثبّت. مقيس على بناء الجولة ٢:
     390×844 + 47/34 → تمرير ٣٠px      (آيفون ١٢/١٣/١٤ · PWA)
     393×852 + 59/34 → تمرير ٤٢px      (آيفون ١٥ برو · الجزيرة)
     390×844 + 59/34 → ٤٢ · 360×800 + 47/34 → ٣٤ · 430×932 + 59/34 → ٥
   والعطب ما هو تاريخًا: القسم A0 في _probe/insets.html يعيد
   فرض القاعدة القديمة حرفيًّا على البناء الحالي، فينطلع اليوم
   ٣١ · ٤٣ · ٤٣ · ٢٩ · ١٢ على نفس الترتيب. يعني الميزانية هي
   اللي تشيل التمرير، مو إن التخطيط صار أقصر بالصدفة.
   العلاج مو زيادة قاعدة: الحافّة تُخصم من النَفَس نفسه. الطول
   اللي ياخذه العمود فعلًا هو --vh = 100svh − الحافّتين، والنَفَس
   ينحسب منه. فلمّا تكبر الحافّة، ينقبض الإيقاع بدل ما يفيض.
   وعلّة إعلان --sa-t/--sa-b كخاصيّتين مسمّاتين إن env() ما تنقاس
   في أي مختبر — أما الخاصيّتان فتنكتب فوقهما قيمة، فتصير
   الميزانية قابلة للاختبار. هذا هو الفرق بين رقم ورجاء.

   --g = clamp(0px, --vh × 0.01 − 6.4px, 2.6px)
   على ٦٤٠ فما تحت النَفَس صفر — التخطيط ينزل لأرضياته المقيسة؛
   وكل ما طال العمود فتح؛ وفوق ٩٠٠ يوقف — الطاولة ما تنفخ.
   دالة متّصلة، فما فيه ارتفاع بلا تخطيط ولا قفزة بين ٨٠١ و٨٠٧.

   ═══ صفّان من الجدول اللي كان هنا كانا كاذبَين ═══
   كان مكتوبًا «375×667 sa 47/34 → ٠ / ٠٫٨» و«320×568 → ١٧px».
   المقيس على نفس البناء: ١٦px و٣٤px. و_probe/insets.html نفسه
   كان يطبع ١٦ — أي إن المِسبار كان يناقض التعليق جنبه. أُعيد
   قياس كل صفّ من جديد على شجرة العمل هذي، وما يُكتب إلا المقيس.

   ═══ الطريقة، عشان الرقم ينعاد ═══
   الصفحة تُفتح على مقاس عرض/طول مفروضٍ بـCDP
   (Emulation.setDeviceMetricsOverride) لا بـ--window-size:
   المتصفّح المقطوع الرأس عنده أرضية عرض ~٥٣٢px، فرندرٌ مباشر
   على ٣٩٠ يخطّط على ٥٣٢ ويقصّ الصورة — تخطيطٌ آخر مصوَّرٌ من
   كوّة. تحقّق: الفعل الأساسي هنا يقع على ٤٣٫٠٠–٣٤٦٫٦٧ بكسل
   كسوة، وهو موضعه الحقيقي. ثم يُنتظر document.fonts.ready،
   والحركة مطفيّة على مستوى المتصفّح (prefers-reduced-motion)
   لأن أول إطار من tk-rise فيه scale(.94) — و getBoundingClientRect
   يرجّع الصندوق *بعد* التحويل، فأي قياس أثناء الدخول يطلع
   ٠٫٩٤ من الحقيقة.

   ═══ التمرير والأرضية: رقمٌ واحد، بيتٌ واحد، رِجٌّ واحد ═══
   ٢٠٢٦-٠٧-٢٨ · الجولة ٥.
   كان هنا جدولان بخمسةٍ وعشرين رقمًا مضبوطًا باليد: صفوف تمرير
   بحافّة وبلا حافّة، وفضلات ذيل، و«أرضية القعود ٥٩٢px» ومعها
   خمسة صفوف مشتقّة منها. **والأرضية كانت غلطًا، والخمسة كلها
   غلطٌ بنفس المقدار** — ستّة بكسل تحت الحقيقة، كل صفٍّ منها،
   لأنها انشتقّت من أرضيةٍ واحدة خاطئة. وفي نفس اللحظة كان
   MOLD يقول ٥٩٨ وcomponents.css يقول ٦٠٩: ثلاثة ملفّات، ثلاث
   أرضيات، ولا واحدة منها تنعاد بأمرٍ يُكتب.

   فالأرقام انحذفت، ما انصلحت. القاعدة اللي طلعت من هالجولة:
   **رقمٌ يقدر الرِّج يولّده ما ينكتب نصًّا** — لأن المكتوب
   ينبَتّ عن مصدره بأول تعديل، والمشتقّ منه ينبَتّ معه صامتًا.

   الأرضية تعيش في MOLD.md وحده، وتنعاد بهذا الأمر:
     _probe/gates.html?gates=390x604,390x603
   والبوابات كلها بنفس الرِّج، والحافّة الآمنة تنحقن بـ‎?sa=t,b‎:
     _probe/gates.html?sa=47,34&gates=…
   والتسمية تحت كل إطار تطبع التمرير المقيس: صفر أخضر، وغيره
   أحمر. الأرضية مذكورة على **الطول المتاح** (الشاشة ناقص
   الحافّتين)، لا على طول الشاشة — وهذا هو الفرق اللي كتم عطب
   الجولة ٢ كامله.

   واللي يبقى هنا مبدأ لا رقم: تحت الأرضية الصفحة **تمرّر ولا
   تقصّ**، ومكتوبٌ لا مخفيّ. وجُرّب شراء الأرضية بجعل --g سالبًا
   فانرفض بالقياس: min-height في صفّ الرمز ينزل تحت هدف اللمس
   ٤٤، والحشوات تنقصّ عند الصفر بلا ما تُعلن — فالمكسب وهمٌ
   محسوب غلط. التمرير أشرف من القصّ، وأشرف من رقمٍ اشتُري
   بكسر قانون.
   ============================================================ */
/* overflow:clip مو hidden — في RTL يصير hidden صندوق تمرير،
   وأصل التمرير على اليمين، فتنزاح الصفحة كلها وتتقصّ.
   clip يقصّ بلا ما يصير صندوق تمرير.
   وما بقي شي يحتاج قصًّا غير الورقتين النازفتين وحدهما.

   ═══ الثقب اللي كان تحته (٢٠٢٦-٠٧-٢٨ · الجولة ٤) ═══
   overflow:clip ما وصل سفاري إلا ١٦. وسفاري ١٥ وما دونه ما يفهم
   الكلمة أصلًا فيرميها ويرجع للافتراض visible — يعني الورقة
   اللي نزفها بقصد (تنقاس −٤٣٫٦px يسار حافّة الشاشة على ٣٩٠)
   تصير تمريرًا أفقيًّا على مستوى الصفحة كاملة، وفي RTL هذا
   بالضبط الفخّ اللي فوق: صندوق تمرير أصله على اليمين.
   وأول علاج كُتب هنا كان clip-path:inset(0) — **وقيس ففشل.**
   clip-path يقصّ الرسم ولا يمسّ منطقة التمرير: مقيسًا، الصفحة
   تبقى scrollWidth ٤٣٤ مقابل ٣٩٠ ويطلع تمرير أفقي ٤٤px، تمامًا
   مثل ما لو ما كان فيه علاج أصلًا. الفرق الوحيد إن المقصوص
   يصير فراغًا يُمرَّر له بدل ورقة. كُتب هذا هنا لأن الجولة
   كلها قامت على «قيس، ثم اكتب» — وهذا واحد وقعتُ فيه أنا.

   العلاج المقيس: overflow:hidden على الغرفة، خلف @supports.
   وفخّ الـRTL اللي فوق حقيقي، بس شروطه ما تتحقّق هنا، والثلاثة
   مقيسة لا مفترضة:
     ١ · الرندر مطابق بكسلًا لبكسل لـoverflow:clip — ١٨ بكسل
         من ٢٬٩٦٢٬٤٤٠ يختلف بدرجة قناة واحدة (تنعيم حواف).
     ٢ · تمرير الصفحة صفر في المحورين، و.room scrollLeft صفر.
     ٣ · **ما فيه ولا عنصر قابل للتركيز خارج صندوق الغرفة.**
         الوحيد اللي ينزف هو ظهر الورقة وأبناؤه، وكلهم داخل
         aria-hidden="true" وpointer-events:none وما يستقبلون
         تركيزًا. وهذا هو بالضبط اللي ينزع فتيل الفخّ: صندوق
         التمرير ما ينزاح إلا لمّا يُطلب منه إظهار شي بداخله،
         وما فيه شي يقدر يطلب.

   ═══ والميثاق انعدّل، ما انلفّ عليه (٢٠٢٦-٠٧-٢٨ · الجولة ٥) ═══
   الشروط الثلاثة فوق مقيسة وصحيحة — والعطب إنها كانت **حجّةً
   محلّيةً ضد قانون عامّ**: MOLD كانت تقول «overflow:hidden ممنوع
   على أي حاوية عربية» منعًا مسطّحًا، وهذا الملف يشحنه خلف
   @supports ويشرح ليش. قانونٌ يُلتفّ عليه محلّيًّا بدل ما ينعدّل
   هو الطريقة اللي تموت فيها المواثيق: اللي بعدك يقرا المنع، ثم
   يلقى الاستثناء، فيتعلّم إن الميثاق مجرّد رأي.
   فالمنع انعدّل في MOLD إلى ما يحميه فعلًا — آليّتان: قصّ
   التشكيل، وصندوق التمرير الـRTL — وسُمّيت الحالة الوحيدة اللي
   يُسمح فيها: احتياطُ سفاري ≤١٥ خلف @supports، على صندوق ما هو
   حاوية نصّ، وبالشروط الثلاثة **مقيسةً** لا مفترضة.
   الملفّان نصف قانون واحد، وكلٌّ يسمّي الثاني:
     MOLD.md — «العربي شرط لا ذوق» ← فقرة overflow:hidden. */
.room{position:relative;z-index:10;min-height:100svh;overflow:clip;
  --sa-t:env(safe-area-inset-top, 0px);
  --sa-b:env(safe-area-inset-bottom, 0px);
  --vh:calc(100svh - var(--sa-t) - var(--sa-b));   /* الطول اللي ياخذه العمود فعلًا */
  --g:clamp(0px, var(--vh) * 0.01 - 6.4px, 2.6px);
  display:flex;flex-direction:column;
  padding:var(--sa-t) 20px calc(var(--sa-b) + 12px + 3.2 * var(--g));
  max-width:430px;margin-inline:auto}
@supports not (overflow:clip){.room{overflow:hidden}}

/* ---------- منطقة العلامة ---------- */
/* ملاحظة صنعة: ما نوسّع هالصندوق بهامش سالب. أي عنصر أعرض من
   الغرفة في RTL يخلّي الصفحة كلها تنزاح يمين وتتقصّ — الورقة
   تنزف بإزاحة سالبة داخل صندوق بمقاسه، والغرفة تقصّها.
   والمنطقة صارت عمودًا بالتدفّق بدل ثلاثة عناصر مطلقة، فأي جسم
   يطول ينزّل اللي تحته بدل ما يتراكب معه.
   (كان مكتوبًا هنا «لو طال النداء سطرين نزل اللوح تحته». النداء
   انشال بحكم صاحب البيت، فما بقي في عمود المسرح إلا العلامة —
   والرزمة مطلقة فوقه ما تاخذ منه بكسلًا. السبب باقٍ والمثال راح:
   ‎.stage‎ اليوم صندوقٌ ارتفاعه ارتفاع العلامة وحدها، مقيسًا في
   ‎_probe/a-rects.html‎ عند ‎.stage‎ و‎.tkmark-img‎.) */
/* الطيّة اللي وفّرها الدفتر ما راحت للفراغ تحت — رجعت للإيقاع.
   وكلها معاملات على --g، فما تكلّف الشاشات القصيرة ولا بكسل:
   على ٦٦٧ بحافّة النَفَس صفر فما زاد شي. هذا هو شغل الدالة:
   تحوّل فرق الشاشة إلى نَفَس، لا إلى فراغ في الذيل.
   ═══ والرقم اللي كان هنا انشال، وسببه يستاهل الكتابة ═══
   (٢٠٢٦-٠٧-٢٩ · الجولة ٨.) كان مكتوبًا «فضلة الذيل صارت
   ٤٩٫٩–٥٤٫٦ على كل بوابة»، ومعه «على ٨٤٤ يزيد ٥٥px». ورِجّه —
   عمود ‎slack‎ في ‎_probe/insets.html‎ — كان **ميّتًا**: انشال
   النداء، وبقي في الرِّج سطرٌ ينادي ‎getComputedStyle(q('.lede'))‎
   بلا حارس، فيرمي ‎TypeError‎ ويموت القسمان A وC كلهما قبل ما
   يطبعا سطرًا. يعني الرقم المكتوب هنا ما كان له شاهدٌ يقدر يُسأل
   من يوم ما انشال النداء — وهذا أسوأ من رقمٍ قديم: رقمٌ قديم
   يُكشف أول تشغيلة، ورقمٌ رِجُّه ميّت ما فيه تشغيلة أصلًا.
   انصلح الحارس، وطلع المقيس: ‎١٠٢٫٦–١٢٥٫٤‎ على البوابات الأربع.
   والفرق كله من حذف النداء والسطر السند — أي إن العدد تضاعف
   تقريبًا وما تحرّك ولا معامل في هذا الملف.
   والرقم ما ينكتب هنا مرّةً ثانية: يُقرا من العمود.
     node/msedge → _probe/insets.html  §A عمود slack، و§C «grow (slack)» */
.stage{position:relative;flex:0 0 auto;
  display:flex;flex-direction:column;align-items:flex-start;
  padding-block-start:calc(8px + 19 * var(--g));
  gap:calc(11 * var(--g));
  /* المسافة بين قاع المسرح وقمّة اللوح — تنقرا مرّتين: هنا، وفي
     موضع الورقة المرميّة اللي تنقاس منها. اسمٌ واحد، فما تزيغ. */
  --stage-gap:calc(9px + 21.6 * var(--g));
  margin-block-end:var(--stage-gap)}
/* الرزمة — جهاز الورق الوحيد بالشاشة، ومحلّ توقيعنا الأكبر.
   مطلقة داخل .stage، فما تاخذ ولا بكسل من الإيقاع الرأسي، ومقاسها
   مربوط بنَفَس التخطيط نفسه (--g) فتتنفّس معه:
     640→74px · 667→76.9 · 750→85.9 · 844→96.0 */
/* السلّم ينكتب مرّةً وحدة في ‎--fan-bw‎، و‎--bw‎ ياخذه — عشان
   الورقة المرميّة تحت (§٦) تقدر تشتقّ مقاسها **منه** بدل ما
   تعيد كتابة الرامب. نفس علّة ‎--stage-gap‎ فوق: اسمٌ واحد،
   فما يزيغ رقمٌ عن أخيه. */
.tkfan{z-index:2;--fan-bw:calc(74px + 10.8 * var(--g));--bw:var(--fan-bw)}
/* ---------- الورقة المرميّة — الرزمة تلمس الطاولة ----------
   الرزمة كانت محبوسة في الـ٢١٪ العليا وما تلمس مساحة اللعب ولا
   مرّة: أقوى إشارة «لعبة» بالشاشة، وواقفة برّا. والحزّة اللي
   تاكل ركن اللوح الأعلى-يمين كانت تُقرا ركنًا مرسومًا، لأن ما
   وراها إلا الطاولة.
   الآن الورقة الرابعة تنزل تحت الشريحة وتدخل *خلف* اللوح
   (الرزمة z2 واللوح z3)، فتبان شريطًا فوق حافّته ثم تطلع من
   العضّة نفسها. فالعضّة تصير قصًّا حقيقيًّا في جسم، لا زخرفة.

   وين تقعد بالضبط، ولماذا هذي الأرقام:
   ١ · top:calc(100% + …) — الرزمة بطول .stage كامل، و.stage
       ما له حشوة سفلى، فقاعه = قاع آخر جسمٍ فيه بالضبط على كل
       بوابة. كان ذاك الجسم «النداء»؛ النداء انشال، وصار قاع
       المسرح **قاع العلامة**. والشرط اللي بُنيت له الجملة ما
       تغيّر: الورقة تبدأ تحت آخر جسمٍ في المسرح دايمًا، ما تمرّ
       ورا حرف عربي أبدًا. ولو مرّت، فالسرير تحت الحبر يصير ورقًا
       (لمعة ٠٫٨) و--tx عليه ينمحي — فهذا الشرط قانون، مو ذوق.
       والقاع نفسه مقيسٌ لا مفترض: ‎_probe/a-rects.html‎ يطبع
       ‎.stage‎ و‎.tkmark-img‎ في نفس التفريغ، فالمطابقة تُقرا.
   ٢ · inset-inline-start:0 — في RTL البداية يمين، فحافّة الورقة
       اليمنى تنطبق على حافّة اللوح اليمنى مهما تغيّر --bw.
       بالنسبة المئوية ما كانت تنضبط: --o نسبة من ٣٥٠ والورقة
       عرضها يتنفّس، فالطرفان ما يلتقيان إلا على بوابة وحدة.
       (وهذا نصف العطب وحده انصلح يومها — الورقة الرابعة نُقلت
        للبكسل وبقيت الثلاث الظاهرة على نسبة المسرح، فبقي شكل
        الرزمة يتغيّر مع البوابة: المكشوف من كل ورقة ٤٥٫٦٪ على
        ٣٦٠×٨٠٠ و٥٦٫٧٪ على ٣٧٥×٦٦٧، مقيسًا بـ‎node _probe/fan.mjs‎.
        النصف الثاني انصلح ٢٠٢٦-٠٧-٢٩ · الجولة ١: ‎--o‎ صارت نسبةً
        من الورقة نفسها — التعليل في ‎components.css‎ عند ‎.tkfan>*‎.)
   ٣ · الدوران **صفر** على هالورقة وحدها، وهذا انقاس ما انذوّق
       (٢٠٢٦-٠٧-٢٨ · الجولة ٥). كان ٨deg، ومكتوبًا جنبه إنه
       «يكمّل سلّم الرزمة، ٩ درجات لكل ورقة: ٢٤- · ١٥- · ٦- · …».
       والادّعاء نفسه ما كان صحيحًا: السلّم لو مشى ٩ درجات لطلعت
       الرابعة ٣+ لا ٨+. لكن العلّة الحقيقية مو حسابية:
       هالورقة **ما تنشاف إلا من نافذة العضّة** — واللي انقرا
       على الشاشة «ورقة مكرمشة» لا «ورقة تحت قصّة».
       والسبب هندسي: محيط النافذة هو درجة الحزّة نفسها (سلّم
       بزوايا قائمة)، فأي مالئٍ لها ياخذ شكلها هي. ولمّا تكون
       حوافّ الورقة **مايلة**، تقطع الدرجة بزاوية، فيقرا التقاطع
       طيّةً في ورق. رُندرت خمس زوايا وانتُظر لها بمقاس ٣× على
       ٣٩٠×٨٤٤ (‎_probe/out/bite-compare*.png‎): ٨+ · ٥+ · ٣+ ·
       ٤- كلها تُقرا شريطًا مطويًّا، و**صفر** أنظفها بفرق واضح —
       لأن حوافّ الورقة تصير موازيةً لحوافّ اللوح، فالدرجة تُقرا
       قصّةً في اللوح لا كرمشةً في الورق.
       وصفر يضيّق صندوق الورقة كذلك (الدوران يوسّع المحيط)، فتبعد
       عن حدّ اللوح بدل ما تقرب منه — أي إنه يخدم قانون الحافّة
       بدل ما يزاحمه.
       **وما انقفل تمامًا، ومكتوبٌ لا مُدَّعى:** حتى على صفر،
       المكشوف يُقرا شكلًا كريميًّا مدرَّجًا أكثر ممّا يُقرا ورقةً
       — لأن الشكل شكل النافذة. الحلّ الكامل يبي إمّا سحب الورقة
       من النافذة كلها (وتضيع «الرزمة تلمس مساحة اللعب» اللي
       انبنت لها الجولة ٤) أو مكوّنًا جديدًا، والجولة ٥ ما تبني.
       مسجَّل للجولة الجاية.
   ٤ · الورقة تقعد **تحت** قمّة اللوح، مو فوقها. القاعدة الشاحنة
       اليوم ‎top:calc(100% + var(--stage-gap) + 6px)‎.
       (كان مكتوبًا هنا «+2px» ومعه مقياسان — «كلمة تَك تبدأ على
       بُعد ٤١٫٩px من قمّة الورقة» و«عمق العضّة ٤٤» — والثلاثة
       انبتّوا عن مصدرهم: القاعدة تشحن ٦ لا ٢، والكلمة نفسها ما
       عادت تنرسم أصلًا (‎.tkback.has-art>.w{display:none}‎ —
       الظهر صار خامة)، والخامة انتقلت هالجولة. رقمٌ يصف كلمةً
       ما تنطبع ليس رقمًا، فانشال ولا انحطّ بديلٌ عنه: العدد
       الشاحن مكتوبٌ فوق، والباقي سبب.)
       والسبب باقٍ كما هو: أي جزءٍ من الورقة يطلع فوق حافّة اللوح
       يدخل نافذة العضّة من الأعلى، فيُقرا قصاصةً مقصوصة لا ورقةً
       مدسوسة. */
/* ٥ · الورقة تطلع **من نافذة العضّة**، ما تلفّ حول ركن اللوح.
      (تصحيح ٢٠٢٦-٠٧-٢٨ · الجولة ٤، بعد الدمج — انقاس على الشجرة
      المدموجة، لأن العطب ما يظهر إلا بعد ما تلتقي الورقة باللوح.)
      كانت الورقة تنزّ يمين حافّة اللوح وفوق قمّته،
      لأن دوران ٨deg يوسّع صندوقها. والنزّة تقعد ملاصقةً لحدّ اللوح
      من برّا، فالسرير تحت ذاك الحدّ يصير كرتونًا ناصعًا بدل جوخ —
      وحدٌّ مضيء على سرير مضيء ما يقدر يوصل ٣:١ أبدًا (نفس هندسة
      «ما فيه بكسل غامق يوصل ٣:١ على سرير غامق»، مقلوبة).
      وكان معه هنا جدولُ حوافٍّ من ذاك اليوم — ستّة أرقام تصف
      الحالة **قبل** العلاج، على هندسةٍ ما عادت موجودة (الدوران
      صار صفرًا، وانزياح الورقة تغيّر، والخامة تحتها تبدّلت
      هالجولة). انشالت الأرقام وبقي السبب: لا رقم في هذا الملف
      إلا وله رِجٌّ يعيد إنتاجه اليوم. وحال الحوافّ الشاحن يطبعه
      ‎python _probe/a-edge.py … --all … --state rest|open‎، وهو
      أخضر في الحالتين.
      العلاج مو استثناء بالقياس، بل هندسة: تُزاح الورقة داخلًا
      وتنزل (القاعدة تحت: ‎11px‎ و‎+6px‎)، فيصير صندوقها كامله
      **داخل** مستطيل اللوح. واللوح
      فوقها (z3 مقابل z2)، فما يبقى منها ظاهرًا إلا اللي تكشفه
      نافذة العضّة — وهي أصلًا ليست حافّة اللوح، ومستثناة بحقّها في
      كل جولة. الفكرة نفسها اللي أرادها التصميم («ورقة مدسوسة تطلع
      من الحزّة») بلا ما تلمس حدًّا. */
/* ٦ · الورقة المرميّة تنقاس **بالنافذة**، لا بالرزمة ·
      ٢٠٢٦-٠٧-٢٩ · الدورة ٣ · الجولة ١.
      نافذة الحزّة مربّعٌ ‎--nt‎ = ٥٨ في ركن اللوح الأعلى-يمين.
      وهالورقة الجسم الوحيد بالردهة اللي **ما ينشاف منه إلا ما
      تكشفه نافذة**، فالمقاس اللي يخدمها مقاس النافذة لا مقاس
      الرزمة — والرزمة تُشاف كاملةً فوق، وهالورقة ما تُشاف جنبها
      ولا مرّة، فما فيه موضعٌ تنقارن فيه العرضان.
      رقمان يخرجان من هذا، وكلاهما مقيسٌ لا مذوّق:
      أ · **العرض ٧٠٪ من الرزمة.** المكشوف من الورقة =
          مساحة النافذة ÷ مساحة الورقة، والعلامة تملأ الورقة
          (‎x٧٫٣–٩٢٫٦٪ y٥٫٢–٩٤٫٧٪‎ من الخامة، ‎node _probe/fan.mjs‎)
          — فنسبة العلامة المكشوفة تتحرّك بمقاس الورقة وحده،
          وما ينفع تتحرّك بالموضع: على ٩٦px النافذة تغطّي ١٩٪
          من الورقة مهما انزاحت داخل اللوح. الرقم الشاحن يطبعه
          عمود ‎emb%‎، والثلاث حالات (‎a6e364f‎ · الموروثة · هذي)
          في تقرير الجولة، من نفس الأمر بـ‎--css‎.
      ب · **حاشيةٌ من الطاولة على الطرفين، ١١px لكلٍّ.** كان
          الأعلى ٦px، فالكريمي يعبّي النافذة ويُقرا لسانًا
          ممزّقًا. الآن الطاولة تبان فوق الورقة ويمينها داخل
          نفس النافذة، فالنافذة تُقرا **فتحةً في اللوح تحتها
          ورقة**، لا حشوةً مقصوصة. وحافّة الورقة نفسها صارت
          تُقرا لأن ‎.tkcard>.fc‎ لبّسها ‎--rim-paper‎.
      وصندوق الورقة كله يبقى **داخل** مستطيل اللوح كما فرضت
      الجولة ٤ — والمقاس الأصغر يوسّع تلك المسافة، ما يضيّقها. */
/* ٦-ب · والـ٧٠٪ كانت مشتقّةً من حجّةٍ صحيحة عن **الورقة** وغلط عن
      **العلامة** · ٢٠٢٦-٠٧-٣١ · الدورة ٣ · الجولة ٣.
      الحجّة فوق (أ) تقول: نسبة المكشوف من الورقة = مساحة النافذة ÷
      مساحة الورقة، فما تتحرّك بالموضع. صحيحة. والخلاصة اللي بُنيت
      عليها — «فنسبة العلامة المكشوفة تتحرّك بمقاس الورقة وحده» —
      كانت تفترض علامةً **تملأ الورقة** (‎x٧٫٣–٩٢٫٦٪ y٥٫٢–٩٤٫٧٪‎)،
      وذاك الصندوق نفسه كان عطبًا في الرِّج: كان يقيس **الإطار
      الذهبي** لا العلامة، وانصلح في نفس الدورة. والعلامة الحقيقيّة
      على الظهر المشحون شريطٌ ضيّق حوالي منتصف الورقة — يطبع صندوقها
      ‎node _probe/fan.mjs‎ في سطر ‎emblem=‎ ولا ينكتب هنا.
      فالسؤال صار سؤال **موضع**، لا نسبة: النافذة تكشف من قمّة
      الورقة نزولًا بعمق الحزّة (٤٤px فيزيائيّة، ما تتنفّس)، والورقة
      تنزل ١١px تحت قمّة اللوح. يعني المكشوف رأسيًّا هو
      ‎[11, 11+عمق] ÷ طول الورقة‎ — وكل ما طالت الورقة نزل نصيبها
      المكشوف من قمّتها، حتى خرج منتصفها (وفيه العلامة) من النافذة
      تمامًا: ‎emb% 0.0‎ على البوابات الأربع، جولتين.
      والرافعتان اللي سمّاهما الموجز «الانتشار أو العدد» ما تنفعان
      هنا: العدد يعني حذف الورقة، والنافذة ترجع تكشف الجوخ — وهو
      عطب الجولة ٤ بالحرف؛ والانتشار يخصّ الثلاث الظاهرات لا هذي.
      الرافعة الثالثة هي المقاس، وهي **نفس رافعة (أ)** بالاتّجاه
      اللي كانت تطلبه أصلًا. ٧٠٪ → ٤٦٪، وما فيه رقمٌ ثانٍ تحرّك:
      الحاشية ١١px كما هي، والصندوق يبقى داخل مستطيل اللوح
      (والمقاس الأصغر يوسّع تلك المسافة كما يقول السطر فوق).
      والمقيس بعده — الأربع بوابات، عمود ‎emb%‎ وعمود ‎vis-v%‎ —
      من ‎node _probe/fan.mjs‎ وحده، وما ينكتب هنا. */
.tkfan>:last-child{inset-inline-end:auto;inset-inline-start:11px;
  --bw:calc(.46 * var(--fan-bw));
  top:calc(100% + var(--stage-gap) + 11px)}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;
  clip-path:inset(50%);white-space:nowrap;border:0}
.stage .tkmark{position:relative;z-index:5}
/* العلامة الجديدة — شكل ٧. المقاس مشتقّ من النَفَس مثل بقيّة المسرح،
   والعرض والطول متساويان (الشكل مربّع).
   ما تغيّر منه ولا رقم يوم صارت SVG مضمّنة بدل PNG (٢٠٢٦-٠٧-٢٩ ·
   الجولة ١): الصندوق المرسوم انقاس قبل وبعد على البوابات الأربع
   في الحالتين، ‎python _probe/a-boxdiff.py‎ — صفرٌ في كل خانة.
   وviewBox العلامة ١٩٢×١٩٢ = مقاس mark-192.png حرفًا بحرف، فنسبة
   العرض للطول ما تحرّكت وheight:auto يعطي نفس الرقم. */
.stage .tkmark-img{position:relative;z-index:5;display:block;
  width:clamp(104px, 92px + 5.6 * var(--g), 132px);height:auto;
  /* الحبر. الشكل صار يرث اللون — وهذا كل الغرض من الاستبدال — فلازم
     يُقال بأي لونٍ يرث. و#DDAE55 ليس صبغةً جديدة: هو **حبر العلامة
     المعتمدة نفسها**، منوال بكسلاتها المعتمة في mark-512.png، مقيسًا:
       python _probe/a-markink.py design/project-152/archive/v1-marks/mark-512.png
     وما انكتب رمزًا هنا إلا لأن أقرب صبغةٍ في العدّة تبعد عنه
     ΔE76 = ٧٫٨٩ (‎--a-pol‎) — وهذا فرقٌ تشوفه العين، فاستعمالها كان
     بيغيّر علامةً أقرّها صاحب البيت، لا بينقلها.
     يوم يحكم في لون العلامة، السطر يصير ‎color:var(--…)‎ وبس؛
     الشكل جاهزٌ له من اليوم. */
  /* الحبر — والختم يرثه، وهذا كل الغرض من كونه مضمَّنًا: الإطار
     والكلمة على ‎currentColor‎، والوجه على ‎--seal-face‎، والفتحة على
     ‎--aqeeq‎. ثلاثة رموزٍ من العدّة، وما فيه ‎#hex‎ في هذي الكسوة.
     و‎--mark-gold‎ اللي كان هنا **انشُطب مع جسمه** (٢٠٢٦-٠٧-٣١):
     كان ذهب العلامة ذات الورقتين، والعلامة تقاعدت بحكم صاحب البيت —
     ومقيسًا قبل ذلك، كان يحكم **صفر بكسل** على كل صفحةٍ في السلسلة،
     لأن مستهلِكه الوحيد كان ‎color:‎ على ‎<img>‎ والصورة لا ترث لونًا.
     ‎node _probe/a-govern.mjs‎ هو اللي أثبته وهو اللي يحرسه. */
  color:var(--seal-ink)}
/* ---------- النداء انشال، وقاعدته معه ----------
   (٢٠٢٦-٠٧-٢٩ · حكم صاحب البيت.) «اقعد، نبدأ الصكّة.» انشالت من
   المسرح، وما بقي إلا <h1 class="sr-only"> لقارئ الشاشة — وهو ما
   ياخذ سلّمًا ولا ظلًّا ولا لونًا.
   والقاعدة ‎h1.lede‎ قعدت هنا التزامًا كاملًا بعد ما مات جسمها:
   سلّمٌ سائل وظلٌّ ولونٌ لعنصرٍ ما يطابقه شي في الصفحة. وكسوةٌ
   ميّتة تُقرا حيّةً عند اللي يجي بعدك — يفتح الملف فيلقى للنداء
   سلّمًا مضبوطًا فيفترض إنه على الشاشة. انشالت.
   والعلّة اللي كانت مكتوبة هنا تبقى مكتوبة لأنها **قاعدة بيت لا
   واقعة**: أي سلّم خطٍّ ينكتب بالـrem لا بالـpx عشان الرفعة
   العربية ومقاس خطّ المتصفّح يمرّان منه، والزيادة السائلة وحدها
   تبقى بالبكسل فوق الأرضية لأنها دالة طول الشاشة لا دالة مقاس
   الخطّ. أرقام النداء نفسها (٢٣ و٢٨ وسقفها) انشالت مع النداء —
   ما لها رِجٌّ يعيد توليدها بعد اليوم، وما ينكتب رقمٌ بلا رِجّ.
   والعدّة باقية على ‎--ty-lede‎ و‎--tsh-lede‎: القالب يقدر يمسك
   مقاسًا ما تستعمله الكسوة اليوم. */

/* ---------- اللوح المحزوز ---------- */
/* ما عاد بمقاس مقفول. العرض سائل بسقف ٣٥٠ — على ٣٦٠ يملأ
   الغرفة (٣٢٠) بدل ما ينزّ ٣٠px تحت القصّ، وعلى ٣٩٠ فما فوق
   يبقى ٣٥٠ متوسّطًا كما كان. والطول من المحتوى: أي سطر زايد
   في زرّ أو حقل يطوّل اللوح، والحزّة تتبعه لأنها قناع مثبّت
   على الركن، مو مسارًا مرسومًا على ٤٢٠. */
.panel{position:relative;z-index:3;flex:0 0 auto;width:100%;max-width:350px;margin-inline:auto}
/* ---------- الحزّة صار لها ساكن ----------
   كان هنا calc(--pad-notch − 9px + 4.4g) ومكتوب جنبه اعتراف إن ٤٥
   «أقلّ رقم آمن»: رقمٌ مضبوط باليد يوم ما كانت هالمساحة فاضية —
   ٥٤px من العدم، وأكبر كتلة خالية بالتخطيط، ولسان الحزّة فوقها
   ما يحمل شيئًا.
   الآن الحشوة العليا = --pad-rail (١٠) وبس، ورِيل المقاعد يقعد
   في الدرجة نفسها بطول --notch-step (٤٤). ١٠ + ٤٤ = --pad-notch
   (٥٤) — نفس الخلوص القديم بالضبط، بس صار محتوى بدل فراغ.
   ولا رقم منهما مكتوب مرّتين: طول الرِّيل ياخذه المكوّن من
   --notch-step، وهذي الحشوة تاخذها من --pad-rail، والاثنان من
   نفس العدّة. فما فيه فرصة زيغ.
   والخلوص الأفقي للسان الحزّة من المكوّن كذلك (padding-right
   فيزيائي — الحزّة ما تنقلب بالـRTL). مقيس: أقرب مقعد يقعد على
   بُعد ٥٤px من حافّة اللوح اليمنى، وقاع الحزّة عند ذاك البعد
   أقلّ من ١px. */
/* ---------- والتداخل هنا سلّمٌ، مو تمركزٌ — بقصد ----------
   ٢٠٢٦-٠٧-٢٨ · الجولة ٥: كان هنا سردٌ كامل مبنيٌّ على أن الجلد
   يشحن ‎--nr:26px‎، وعلى «رقمين لسطح واحد» يبي تبليغًا وإصلاحًا
   عند وكيل آخر. الرقم انصلح في الجولة ٤ — الجلد يشحن
   ‎--nr:var(--r-sheet)‎ — فالسرد كله كان يحاجّ عن قيمة ما عاد لها
   وجود، ويُبلّغ عن عطب مقفول. انحذف. والصحيح منه هذا:
   الفعل الأساسي نصفه ‎--r-btn-1‎ (١٨) داخل صحيفة نصفها
   ‎--r-sheet‎ (٢٨) بحشوة ٢٢. والتمركز الحقيقي يبي حشوة = ٢٨ − ١٨
   = ١٠ بالضبط، وهي ‎--pad-rail‎ نفسها المشتقّة بالـcalc.
   وقاعدة الحشوة في القالب **حدٌّ أدنى لا مساواة**: «الأوسع مسموح
   والأضيق لا». فـ٢٢ ≥ ١٠ سليمة، وما هي زيغًا.
   وليش ما انحطّت ١٠ وخلاص: لأن الحشوة ما هي وحدها في المعادلة —
   ‎--pad-notch‎ (٥٤ = ‎--pad-rail‎ + ‎--notch-step‎) هو سقف الرفّ اللي
   يقعد عليه رِيل المقاعد تحت لسان الحزّة، وتضييق الحشوة الجانبية
   يوسّع الفعل الأساسي فيزيد نصيبه من ميزانية النحاس. والاتجاه
   الثاني ممنوع أصلًا: تثبيت الحشوة ٢٢ يعطي نصفًا داخليًّا ٦،
   والقالب يقول حرفيًّا «نصف قطر ٤–٦px على أداة = عيب تلقائي».
   فالسلّم مقصود: ٢٨ ← ١٨ ← ١٤ نزولًا، وما فيه ركن داخلي أعرض
   من حاضنه. */
.panel .pin{position:relative;z-index:1;
  padding-block:var(--pad-rail) calc(15px + 8 * var(--g));
  padding-inline:22px}
/* المسافة تحت الرِّيل — إيقاع رأسي، وهذا بيته.
   و--pin-inline معها: هي مرآة padding-inline على .pin فوق بسطرين،
   والمكوّن (§٨٫٥) يشتقّ منها خلوصه عن لسان الحزّة —
   padding-right = --pad-notch − --pin-inline. فالرقم اللي يتحرّك
   يتحرّك مرّةً وحدة وفي مكانٍ يشوف اللي يقلّده، وما فيه في المكوّن
   ولا هنا فرقٌ مكتوبٌ باليد يتعتّق. */
/* الزرّ الأساسي — صاحب البيت: «الكبير كان أحسن». فقد ارتفاعه
   لمّا انشال السطر السند، فيرجع بالطول مباشرةً لا بسطرٍ زائد.
   مشتقّ من النَفَس مثل بقيّة الإيقاع، فما يكسر أي بوابة.

   ═══ الرامب انقلب أرضيةً بدل سقف · ٢٠٢٦-٠٧-٣١ · الجولة ٣ ═══
   كان ‎clamp(56px, 56px + 12g, 88px)‎ — أي أن الفعل الأساسي على
   أقصر بوابة (٣٧٥×٦٦٧، والنَفَس هناك ٠٫٢٧) يقرا ٥٩٫٢٣، **وهو
   طول حقل الاسم نفسه زايد أربع بكسلات**. وقانون الوزن ٣–٥×،
   فالقراءة كانت ١٫٠٨٠× — تعادلًا، لا أفضليّة. والعلّة كانت في
   شكل الرامب لا في مقداره: كل مكسبه معلَّق على ‎--g‎، و‎--g‎ صفرٌ
   تقريبًا عند ٦٦٧ — يعني الزرّ يكبر على الشاشات اللي ما تحتاجه
   ويقعد صغيرًا على اللي تحتاجه.
   فالمكسب انتقل إلى **الأرضية**: ٥٦→٦٢، والمعامل ١٢→١٠ عشان
   السقف ٨٨ ما يتحرّك ولا ميزانية النحاس تنفخ. المقيس بعده على
   البوابات الأربع ٦٤٫٧ · ٧٦٫٠ · ٨٢٫٤ · ٨٨٫٠ — أي أطول على كل
   بوابةٍ إلا ٤٢٨ (٨٧٫١٩→٨٨٫٠٠، سقفٌ بلغته)، وهذا مقصود:
   صاحب البيت قال «الكبير أحسن» عن الزرّ، لا عن الرامب.
   وثمنه بكسلاته الستّ على أرضية اللا-تمرير (٥٤١→تُشتقّ في
   ‎node _probe/a-all.mjs‎، ما تنكتب هنا)، و٣٧٥×٥٥٣ لا يزال
   يقراها فوق الأرضية مغلوقًا — وهي في المصفوفة القياسيّة الآن
   فما عادت دعوى.
   وسلّم الأزرار ٥٦/٥٠/٤٤ في القالب ما تحرّك: ‎.tkb-1{min-height:56px}‎
   باقٍ كما هو، وهذا رامب تخطيطٍ في الجلد فوقه — والجلد يملك
   الهندسة السائلة وحدها. */
.panel .tkb-1{min-block-size:clamp(62px, 62px + 10 * var(--g), 88px)}
.panel .tkseats{--pin-inline:8px;margin-block-end:calc(9px + 4.9 * var(--g))}

/* ---------- تحت ٣٩٠: الهوامش تنقبض، والرِّيل ياخذ المكسب ----------
   الرِّيل يشيل جملةً واحدة على سطر واحد، بمقاس النظام (1rem) لا
   بمقاسٍ مخصوص — فعرضها ثابت والبوابة هي اللي تضيق. وطلبها اليوم
   أقلّ ممّا كان: راحت أربع ورقات وفرجتان، وبقي الكلام.
   والمكسب انشترى من الهوامش وحدها، لا من مقاس الحرف ولا من
   النصّ: هامش الغرفة ٢٠→١٢ وحشوة اللوح ٢٢→١٤. والقانون اللي
   ما انكسر: خلوص المحتوى عن عضّة الحزّة يبقى كما هو بالضبط —
   وما عاد يحتاج رقمًا يمشي معاه: --pin-inline تنزل ٢٢→١٤ هنا،
   وpadding-right في المكوّن مشتقّ منها (--pad-notch − هذي)
   فيرتفع وحده. والعضّة ٤٤ فيزيائية ما تتحرّك.
   (كان مكتوبًا هنا «١٤+٤٠ = ٢٢+٣٢»: مجموعٌ صحيح بفرقين مكتوبين
   باليد، وكفايته تعتمد على انتباه القارئ. الآن يعتمد على calc.)
   وفوق ٣٩٠ ما تغيّر شي: البوابة هناك تكفي بذاتها. */
@media (max-width:389px){
  .room{padding-inline:12px}
  .panel .pin{padding-inline:14px}
  .panel .tkseats{--pin-inline:2px}
}

/* الثانوي انكمش على كلمته، وهذا مصدر فرق الوزن كامله: زرّان
   بعرض كامل ما يقدران يختلفان إلا بالارتفاع. الطول باقٍ ٥٠ عشان
   سلّم الأزرار (٥٦/٥٠/٤٤) ما ينكسر، والمكسب من مكانين: الحشوة
   الجانبية ٢٢→١٨، والكلمة انقصرت لأن الرِّيل فوق صار يسمّي سيكل
   بالصورة.
   وقانون الوزن **ما ينكتب هنا**، ينُقل عنه (٢٠٢٦-٠٧-٢٩):
   نصّه الوحيد في ‎design/tak/MOLD.md‎ قانون ٢ — «الفعل الأساسي
   يفوق **أكبر أداة أخرى على شاشته** ٣–٥ أضعاف مساحةً، على كل
   بوابة»، والمقيس ضدّه يُسمّى **دورًا لا صنفًا**، لأن قانونًا
   يسمّي ‎.tkb-2‎ يسقط يوم ينتقل الصنف.
   وكان مكتوبًا هنا عكسه حرفيًّا — «ضدّ ‎.tkb-2‎ ولا شي غيره» —
   فالميثاق والكسوة يقولان قانونًا واحدًا بمحتوًى متعاكس، وهو
   بالضبط صنف العطب اللي أعلن السجلّ إغلاقه مرّتين. انشال النصّ،
   وبقي الإسناد.
   واللي يخصّ هذا الملف ملاحظة لا قانون: أثقل جسم بعد الفعل
   الأساسي في الردهة هو **الرزمة** (‎.tkfan‎)، وهي ليست أداةً،
   فهي خارج المقيس أصلًا — والفعل الأساسي ما يفوقها بثلاثة
   أضعاف. ملاحظة مسجّلة، مو امتثالًا يُدَّعى.
   والجدول اللي كان هنا (خمس بوابات بخمسة أرقام) انحذف بدل ما
   ينُسخ: يولّده الرِّج ولا ينكتب نصًّا، والحزّة على وجه الزرّ
   غيّرت مساحته أصلًا —
       ‎_probe/a-rects.html?w=320&h=568‎ … ‎?w=430&h=932‎
   بشرط ‎STABLE=true‎، وإلا فما فيه رقم. */
.panel .tkb-2{padding-inline:18px}
/* النائب العربي كان ينحاز يسار وهو فاضي لأن dir=auto ينحلّ ltr
   على قيمة فاضية — حقلان بسطر واحد بمحاذاتين متعاكستين. */
.tkfield-in:placeholder-shown{direction:rtl}

/* ============================================================
   سطر الاسم — سؤالٌ وخانة، لا حقلٌ بعرض اللوح
   ٢٠٢٦-٠٧-٣١ · الدورة ٣ · الجولة ٣.

   القانون: «الفعل الأساسي يفوق أكبر أداةٍ أخرى على شاشته ٣–٥
   أضعاف مساحةً، على كل بوابة» (MOLD قانون ٢). والمقارَن مقروءًا
   من التعداد هو ‎#playerName‎ على كل بوابة، وكان **بعرض اللوح
   كامله** — أي جسمَين بعرضٍ واحد، وما يقدران يختلفان إلا
   بالارتفاع، والارتفاعان ٥٩٫٢٣ و٥٤٫٨٤. القراءة ١٫٠٨٠×.
   والحلّان الوحيدان (والمدقّق سمّاهما): زرٌّ بطول ١٦٥px، أو
   حقلٌ يخرج من عرض اللوح. الأول يكسر شيئين مقيسَين — ميزانية
   اللون المحجوز (٣–٨٪ من بكسلات الشاشة) وأرضية اللا-تمرير —
   فانمشى الثاني.

   واللي كسبناه معه أكبر من الهندسة: النداء «وش نناديك؟» كان
   **نائبًا** (‎placeholder‎) واسم الوصول ‎aria-label="اسمك"‎ —
   أي أن المشهود غير المسموع، وهي الملاحظة الوحيدة المفتوحة على
   «عربيّة سليمة» في كشف الجولة ٢. صار ‎<label for>‎: يُقرا
   ويُسمع بنفس الكلمات، ويكبّر هدف اللمس (ضغطة على السؤال تركّز
   الخانة)، وينشال معه النائب فما بقي نصٌّ يُقصّ في خانةٍ ضيّقة.

   والعرض مشتقّ لا مذوّق: يقعد تحت مساحة الثانوي على البوابات
   القصار (فيبقى المقارَن هو الثانوي وما يتحرّك القانون معه)،
   ويتنفّس مع ‎--g‎ فوقها. الأرقام كلها من
   ‎node _probe/a-squint.mjs --gate <بوابة>‎ — التعداد يطبع
   المقارَن ونسبته، وما ينكتب رقمٌ هنا.
   والطول ما تغيّر ولا بكسل: الصفّ طوله طول البئر نفسه (٥٤٫٨٤)،
   والسؤال جنبه لا فوقه، فما دفعت الأرضية شيئًا مقابل هذا. */
.panel>.pin>.tkfield{display:flex;align-items:center;gap:12px}
.panel>.pin>.tkfield>.tkfield-lb{flex:1 1 auto;min-width:0;margin-block-end:0}
.panel>.pin>.tkfield>.tkfield-in{flex:0 0 auto;
  width:clamp(104px, 100px + 6 * var(--g), 116px)}
/* الإيقاع الرأسي ينمسك بـ‎.tkbite‎ لا بـ‎.tkb-1‎ (٢٠٢٦-٠٧-٢٨ ·
   الجولة ٥): الفعل الأساسي انلفّ بغلافٍ يحمل ظلّه بعد ما لبس
   الحزّة، فما عاد أخًا للحقل ولا للثانوي — وقاعدة الأخوّة اللي
   ما تلقى أخاها **ما تطلّع خطأً ولا يمسكها حارس**، تخلّي الفراغ
   يطيح صفرًا بصمت. هذا صنف العطب اللي يمشي جولة كاملة، فالمكتوب
   هنا للي يجي بعدنا: أي غلاف جديد حول أداة يلزمه مسحٌ لكل
   ‎+‎ و‎~‎ يذكرها. */
.panel .tkfield+.tkbite{margin-block-start:calc(12px + 6.4 * var(--g))}
.panel .tkbite+.tkb{margin-block-start:calc(10px + 2 * var(--g))}
/* الحشوة الرأسية ١١→١٠: الفعل الأساسي هو تسعة أعشار النحاس
   بالشاشة، وميزانية اللون المحجوز كانت فوق سقف ٨٪ (والحزّة الآن
   تاكل منه، فالرقم يُعاد توليده لا يُنسخ: ‎_probe/a-accent.py‎).
   الطول ما ينزل تحت --r-btn-1 × ٣ ولا تحت ٤٤ هدف اللمس بحال.
   والعرض على الغلاف والزرّ معًا: الغلاف كتلة فياخذ عرض اللوح
   وحده، والزرّ ‎width:100%‎ داخله كما كان — فلو انشال الغلاف
   يومًا بقي الزرّ ملء اللوح، ما ينكمش على كلمته. */
.panel .tkbite{width:100%}
.panel .tkb-1{width:100%;padding-block:10px}

/* ============================================================
   رمز الغرفة — سطر واحد بدل ثلاثة أجسام

   كان: خيط فاصل + حقل نصّ + زرّ. أي: أكبر جسمين داكنين بالشاشة
   بعد الفعل الأساسي (اختبار الغبش يحطّ البئرين في المرتبة ٢ و٣)
   كان أحدهما لطريقٍ يمشيه الأقلّ. ونصف الشاشة صار نموذجًا.
   صار: سطر هادي واحد، واللي يبي الرمز يفتحه.

   البناء <details> بحتة: ولا سطر جافاسكربت زايد. و<summary>
   يستقبل التركيز بنفسه، ويفتح بـEnter وSpace، وحلقة التركيز
   النحاسية تجي من .tkb:focus-visible مثل أي زرّ. ولو ما عرف
   المتصفّح <details> ظهر المحتوى كامل — «إذا ما اشتغل شي،
   كل شي ظاهر» محفوظة بالبناء لا بالرجاء.

   ═══ والحالة المفتوحة صار لها بيت (٢٠٢٦-٠٧-٢٩) ═══
   حكم صاحب البيت: فتح «عندك رمز؟» كان يخلّي الصفحة تمرّر.
   العلاج مو هنا — هو في §«الرفّ الواحد» آخر هذا الملف. وكان
   «الدفتر ينطوي لمّا تنفتح الطيّة»، ثم حكم صاحب البيت إن الدفتر
   ما ينطوي — ينزل وبس — فصار المسرح هو اللي يدفع. واللي يخصّ
   هالقسم ما تغيّر: **طول صفّ الرمز مُعلَنٌ** تحت، فاللي يقوم
   يقدر ينقاس عليه أيًّا كان.

   ═══ والجدول اللي كان هنا انحذف، ما انصلح ═══
   كان مكتوبًا هنا «طول اللوح ÷ طول الشاشة» على خمس بوابات، ومعه
   «ومفتوحًا يطلع ٥٥٫٣٪». الصفّ المفتوح مات بهذي الجولة لأن
   الحالة المفتوحة تغيّرت، وبقية الصفوف ما لها رِجٌّ يولّدها
   أصلًا: ولا مِسبار في ‎_probe/‎ يطبع نسبة لوحٍ إلى شاشة. فانحذفت
   كلها بدل ما ينصلح صفٌّ واحد — **رقمٌ يقدر الرِّج يولّده ما
   ينكتب نصًّا، ورقمٌ ما له رِجٌّ ما ينكتب أصلًا.**
   واللي ينقاس هنا شيئان، وكلٌّ بأمرٍ يُكتب:
     الهندسة — ‎_probe/a-rects.html?w=390&h=844&open‎  (STABLE=true)
     التمرير — ‎_probe/gates.html?open=1&sa=59,34‎
   ============================================================ */
.roomfold{margin-block-start:calc(11px + 3.6 * var(--g))}
/* display:flex (لا inline-flex) عشان التوسيط بـmargin-inline يمشي —
   نفس علّة .tkb-2 حرفيًّا. وتغيير display ينشل علامة القائمة في
   كروم وفَيَرفُكس، وسفاري تبي ::-webkit-details-marker صراحةً. */
.roomfold>summary{display:flex;width:fit-content;margin-inline:auto;list-style:none;
  padding-block:8px}   /* ٤٤٫١ طولًا — على هدف اللمس بالضبط، لا تحته */
.roomfold>summary::-webkit-details-marker{display:none}
/* السهم: حدّان فيزيائيّان مدوَّران — رمز حالة، مو ضوءًا ولا حرفًا،
   فما له زاوية شمس ولا ينقلب بالـRTL (السهم متماثل بعد الدوران). */
.roomfold>summary::after{content:"";width:7px;height:7px;flex:none;
  margin-block-start:-4px;
  border-right:2px solid var(--tx2);border-bottom:2px solid var(--tx2);
  transform:rotate(45deg);
  transition:transform var(--t-tint) var(--ease-out)}
.roomfold[open]>summary::after{transform:rotate(225deg);margin-block-start:2px}
/* مفتوحةً، السطر الهادي فوق يصير عنوان الحقل — فالمسافة بينهما
   قريبة بقصد. ومقيسة: كل بكسل هنا يطلع من ميزانية الحالة
   المفتوحة، وهي أطول حالة بالصفحة. */
.roomfold .joinrow{margin-block-start:calc(5px + 2 * var(--g))}
/* ---------- طول الصفّ مُعلَن، لا موروث (٢٠٢٦-٠٧-٢٩) ----------
   كان مكتوبًا ‎min-height:calc(46px + 3.92g)‎ وجنبه «٤٦ أرضية، و٥٤
   على ٨٤٤» — والسطران معًا كانا يصفان شيئًا ما يشحن. المقيس:
   طول ‎.tkfield-in‎ **الذاتي** من القالب ٥٤٫٨٤ على كل بوابة
   (٢٧٫٨٤ سطرًا + ٢٥ حشوةً + ٢ حدًّا)، فأرضيةٌ بـ‎min-height‎ ما
   تنزل تحته ولا مرّة، وما تعلو فوقه إلا على ٩٣٢ وحدها. يعني
   الصفّ كان ٥٤٫٨٤ ثابتًا على كل بوابة، والإعلان زينة.
   **الإعلان كان مقصودًا والخاصيّة غلطًا**، فصار ‎height‎.

   وهذا مو ترفًا: الرفّ اللي يقوم في §«الرفّ الواحد» آخر الملف
   ينقاس على صفٍّ **معلوم الطول**؛ صفٌّ طوله يجي من صندوق مكوّنٍ
   آخر ما ينقاس عليه شي.

   والمشحون فعلًا — مكتوبٌ كما هو، لا كما نتمنّاه: القالب يحطّ
   ‎.tkfield-in{min-height:52px}‎ وهي **أرضية صلبة تحت إعلاننا**،
   فالطول = ‎max(52, 46 + 3.92g)‎ ← ٥٢ على البوابات القصيرة،
   و٥٣٫٩٨ على ٣٩٠×٨٤٤، و٥٦٫١٩ على ٩٣٢. الأرضية أرضية القالب لا
   أرضيتنا، والكسوة ما تنقضها: صندوق البئر وخلوصه للتشكيل من
   ‎components.css‎ §الحقول، وله سببه المكتوب هناك.
   والمكسب المقيس من هالتصحيح ٢٫٨٤px على أقصر بوابة — صغير،
   ومكتوبٌ بحجمه.
   والحشوة الرأسية تنشال لأن حقل الإدخال يوسّط سطره الوحيد في
   صندوق المحتوى بنفسه: الخلوص فوق الحرف وتحته ١١٫٠٨px داخل
   الـ٥٢، أي عمليًّا نفس خلوص القالب (١٢/١٣)، ولا قصّ على شي —
   وما فيه ‎overflow‎ على هالصندوق أصلًا. والطول ما ينزل تحت هدف
   اللمس ٤٤ بحال. */
.joinrow{display:flex;gap:10px;align-items:stretch;
  --joinrow:calc(46px + 3.92 * var(--g))}
.joinrow .tkfield{flex:1 1 auto;min-width:0}
.joinrow .tkfield-in{height:var(--joinrow);padding-block:0}
/* والزرّ ما ياخذ الطول، ياخذه من الصفّ: ‎align-items:stretch‎ فوق.
   وهذا انقاس، ما انفترض — أول محاولة حطّت ‎height‎ على الاثنين،
   والطول الصريح **يبطّل الشدّ**، فطلع الحقل ٥٢ (أرضية القالب
   تحته) والزرّ ٤٦ جنبه: ستّة بكسلات فرق في صفٍّ واحد، بادية
   بالعين على ٣٧٥ و٣٢٠. الحقل يعلن الطول، والزرّ يشتدّ عليه —
   واحدٌ يقرّر ولا اثنان يتفقان بالصدفة. */
.joinrow .tkb-q{flex:0 0 96px}

/* ---------- الدفتر — سطر، مو لوحة أرقام ----------
   كان صحيفة بطبقتين: عنوان فوق وثلاثة أعمدة تحت. أكبر جسم
   بالثلث الأسفل يقول أرقامًا، والدعوة للّعب تحته وزنًا. وهذي
   إشارة «تطبيق» لا «طاولة». انطوى على شريط قصير: نفس المحتوى،
   ونفس دايرة القلم، بأقصر طول.
   دايرة القلم بقيت كما هي، وهي حكم صاحب البيت: ما تنشال، بس
   تنضبط. هندستها من صندوق الرقم نفسه (--ink-t/b/s/e في
   components.css)، فتصغر مع الرقم بلا ما ينكسر هامشها.
   وكلمات الأعمدة ١rem دايم — أرضية النصّ العربي، ما تنزل تحتها،
   وترث رفعة جذر القارئ كاملةً بلا سقف.
   والسطر ما ينفخ مثل الكتل: نَفَسه ربع نَفَس الباقي — شريط
   منطوٍ يبقى منطويًا مهما طالت الشاشة.

   ═══ حكمان من صاحب البيت (٢٠٢٦-٠٧-٢٩ · الجولة ٧) ═══
   «الدفتر ينكسر سطرين عند مقاسات، وما يصير» و«أرقام الدفتر ما
   تستعمل الفراغ — مايلة يمين». وهما عطبٌ واحد بوجهين، وعلاجهما
   واحد: البناء اللي كان يحكم الصفّ كان يقيس نفسه على محتواه
   بدل ما ياخذ الصحيفة.

   ١ · العنوان كان يزاحم الأعمدة على نفس المحور. وهذا يقفل
       الباب على «أعمدة متساوية» قفلًا حسابيًّا لا ذوقيًّا: أعرض
       عمود («قامت لك») لو تساوت الأعمدة عليه لطلب ثلاثة أضعافه،
       وما يبقى للعنوان مكان. فالعنوان انتقل سطرًا فوق — سطره
       هو، وخيطه معه — والأعمدة ورثت عرض الصحيفة كامل.
   ٢ · و.lg-cells كانت flex:0 1 auto: صندوقٌ بمقاس محتواه. فالفاضي
       ما ينوزّع، ينركم بطرفٍ واحد — والطرف في RTL هو اليسار.
       صارت شبكة ثلاثة أعمدة 1fr: تتساوى بالبناء، وما تقدر تميل.
   ٣ · واللفّ اللي انضاف بالجولة ٦ (‎flex-wrap:wrap‎) انشال. كان
       علاجًا لقارئٍ كبّر خطّ متصفّحه فطلع الصفّ برّا الغرفة
       و‎.room{overflow:clip}‎ ياكل «رقمك» و«٥٨٪» بصمت. واللفّ
       يمنع القصّ لكنه يكسر السطر — وكلاهما مرفوض. الشبكة تحلّ
       الاثنين معًا: ‎1fr = minmax(auto,1fr)‎، فالعمود ما ينزل
       تحت محتواه الأدنى، والزيادة تُردّ من العمودين الباقيين،
       والصفّ يبقى صفًّا واحدًا بلا قصّ.

   ═══ الأرقام كلها من رِجّ واحد، وأمرُه مكتوب ═══
     node _probe/ledger-fit.mjs
   يمشي البوابات الخمس × جذر ١٦/٢٠/٢٤، وعليها ٣٢٠×٥٦٨، ويطبع
   لكل خانة: عرض الصحيفة الداخلي، وعرض كل عمود، ومحتواه الأدنى،
   والفسحة، وخلوص دايرة القلم عن الفاصل، وعدد الصفوف، والقصّ.
   ما يُكتب هنا رقمٌ ما طلع منه.

   ═══ «الدفتر يقصّ رقمك على خطّ متصفّحٍ ٢٠» — ما انعاد ═══
   (٢٠٢٦-٠٧-٢٩ · الدورة ٣ · الجولة ١.) هذي شكوى لجنة التدقيق،
   وهي **العطب اللي انعالج هنا فوق** — لكن بمقاسٍ ثانٍ. انفحصت
   بالأمر نفسه، خمس بوابات × ثلاثة مقاسات، فطلعت كل خانة مطلوبة
   PASS: ما فيه قصّ، ولا تمرير أفقي، ولا عمودٌ محتواه أعرض منه،
   على جذر ٢٢٫٥ (= خطّ متصفّح ٢٠) في أي عرض. والخانة الوحيدة
   اللي يخرج فيها الصفّ من صندوق الصحيفة هي ‎٣٢٠×٥٦٨ على جذر ٢٧‎
   (= خطّ متصفّح **٢٤**) — وهي الخانة اللي يطبعها الرِّج ولا
   يحاسبها بحكم صاحب البيت، لأن عرضًا داخليًّا ٢٧٢px مع قارئٍ رفع
   خطّه ٥٠٪ ما يسعه صفٌّ واحد بلا قصّ عربي، وقصّ العربي ممنوع.
   وانضافت ٣٧٥×٥٥٣ للمصفوفة عشان الفرع الثالث ينسدّ: «بوابةٌ ما
   عند الرِّج» — عندَه الآن، وتمرّ على الثلاثة.
   فالجواب المكتوب هنا هو **«ما انعاد»**، بأمره، لا إصلاحٌ لعطبٍ
   ما انبان: علاجٌ يُشحن لعطبٍ ما يقدر أحدٌ يوريك إياه هو تغييرٌ
   بلا حارس، وهو بالضبط الشي اللي كلّف هالمشروع جولةً كل مرّة. */
.ledger{z-index:3;flex:0 0 auto;width:100%;max-width:350px;margin-inline:auto;
  margin-block-start:calc(6px + 14.75 * var(--g));
  display:grid;row-gap:calc(2px + 0.5 * var(--g));
  padding-block:calc(4px + 0.9 * var(--g)) calc(2px + 0.9 * var(--g))}
/* الحشوة العليا نزلت من ١١ لأن سببها راح: كانت تشيل نتوء دايرة
   القلم فوق صندوق الرقم (--ink-t). والنتوء الآن يعيش في فرجة
   الصفّين تحت سطر العنوان، لا في حرف الصحيفة. */

/* ═══ الرفعة العربية كانت تنقطع هنا بالضبط (٢٠٢٦-٠٧-٢٨ · الجولة ٤) ═══
   ثلاثة مقاسات بهالملف كانت مكتوبة px صريحة، فرفع الجذر ما يمرّ
   منها ولا بالمئة: الدفتر كله كان ياخذ صفر رفعة. الآن الأرضية
   بالـrem والزيادة السائلة بالبكسل فوقها: الرفعة تُحمل، والمنحنى
   السائل يعيش. والسقف بالـrem كذلك فما ينفلت على متصفّح جذره
   ٢٠px.
   والعنوان نزل سقفه من ١٫٢٥rem إلى ١٫١٢٥rem — أي إلى --ty-plate
   نفسها. صار سلّمًا للسعة لا تجاوزًا للعدّة: القالب يحطّ المقاس،
   والكسوة تقول متى الشاشة أقصر من أن تحمله. وثمنه انشترى به
   سطرُ العنوان نفسه. */
.ledger h2{font-size:clamp(1rem, calc(1rem + 1.1 * var(--g)), 1.125rem)}
.ledger .lg-cells{margin-block-start:0}
/* nowrap مو زينة: «قامت لك» كلمتان، ولو انكسرت لصار العمود
   سطرين — وهو نفس العطب اللي انشال، بمكان ثانٍ. الشبكة تضمن إن
   العمود ما ينضغط تحت مقاسه الأدنى، وnowrap تضمن إن مقاسه
   الأدنى كلمةٌ واحدة على سطر. */
.ledger .lg-cell .k{white-space:nowrap}
.ledger .n{font-size:clamp(1.21875rem, calc(1.21875rem + 0.16 * var(--g)), 1.3125rem)}
.grow{flex:1 1 auto;min-height:0}

/* ---------- الشاشات الضيّقة — الشريط ينقبض، ما ينزّ ----------
   تحت ٣٧٥ تنقبض حشوة الصحيفة ٢٠→١٢، فيرجع للأعمدة ١٦px من
   العرض. وهذا كل ما تبقّى من إغاثة كانت أطول: حشوة العمود
   ٧px انشالت لأن العمود ما عاد فيه حشوة أصلًا — الفاصل انتقل
   لنصّ فرجة الشبكة، فخلوص دايرة القلم عنه صار نصف فرجة بالبناء
   بدل ما يكون فرقًا بين حشوة وعرض.
   (وكان مكتوبًا هنا «العمود ٦٧٫٢ عرضًا والدايرة ٦١، فخلوصها
   ٣٫١px». المقيس على البناء اللي كان مشحونًا: العمود ٦٥٫٤١
   والدايرة ٧٨٫١٧ — أي إن الدايرة كانت تعبر الفاصل ولا تخلص عنه.
   رقمٌ مطمئنٌّ عن حالة ما كانت موجودة، وهذا أخطر من عطبٍ مكشوف.) */
@media (max-width:374px){
  .ledger{padding-inline:12px}
}

/* ---------- الشاشات العريضة — تكيّف ثانوي، مو تصميم ثانٍ ---------- */
@media (min-width:720px){
  .room{padding-inline:32px}
}

/* ============================================================
   الجوّال مضجوعًا — انقاس أولًا، ثم انعُولج بقدر ما يسمح القانون
   ٢٠٢٦-٠٧-٣١ · الدورة ٣ · الجولة ٢.

   ═══ الحال قبل هذا القسم، مقيسًا ═══
   ولا كلمة ‎landscape‎ ولا ‎orientation‎ في السلسلة المشحونة كلها،
   ولا بوابةٍ مضجوعة في أي رِجّ. والمقيس على أربع بوابات مضجوعة
   بحافّة ‎0/21‎ (وهي حافّة الآيفون مضجوعًا: ما فيه نتوء فوق،
   وشريط البيت تحت):
     مطويّة  926×428 y134 · 844×390 y172 · 667×375 y187 · 780×360 y202
     مفتوحة  926×428 y167 · 844×390 y205 · 667×375 y220 · 780×360 y235
   والأفقي صفرٌ في الاثنتي عشرة خليّة، والقياس مستقرّ — أي إن
   الصفحة **تمرّر ولا تقصّ**، وهو اللي يقوله MOLD عن كل ما تحت
   الأرضية. الأرقام تُقرا من الرِّج لا من هنا:
     ‎_probe/gates.html?gates=844x390,926x428,780x360,667x375&sa=0,21‎
   وهي خانةٌ في ‎node _probe/a-all.mjs‎ من هذي الجولة.

   ═══ وليش ما انشتري الصفر، مكتوبًا لا مُدَّعى ═══
   الطول المتاح مضجوعًا ٣٣٩–٤٠٧. وأرضية المطويّة ٥٤١، وهي —
   بنصّ MOLD — **ركامٌ من حدودٍ دنيا كلٌّ منها مكتوبٌ في قانون**:
   رفّ الحزّة، وهدف اللمس ٤٤ على السطر الهادي، وسلّم الأزرار
   ٥٦/٥٠/٤٤، وصندوق البئر، وسطر الدعم العربي ١rem×١٫٧٥. فما فيه
   ٢٠٠px تنطلع من عمودٍ واحد بلا ما يُسمّى القانون المكسور، و«ضيّق
   حشوة» مو متاحة. فاللي انشتري هو اللي يقدر البناء يعطيه: **عمودان
   بدل عمود**، والعرض مضجوعًا ٦٦٧–٩٢٦ والغرفة كانت تسقّفه عند ٤٣٠
   فتترك أكثر من نصف الشاشة فاضيًا.

   ═══ والدفتر هو اللي ينتقل، لا المسرح — وهذا شرطٌ لا ذوق ═══
   الورقة المرميّة تقعد بـ‎top:calc(100% + --stage-gap + 11px)‎ من
   **المسرح**، فتدخل خلف اللوح وتطلع من نافذة الحزّة. فلو انتقل
   المسرح لعمودٍ ثانٍ لطاحت الورقة على الطاولة وصارت نافذة الحزّة
   تكشف جوخًا — وهو بالضبط عطب الجولة ٤ («العضّة تُقرا ركنًا
   مرسومًا لأن ما وراها إلا الطاولة»). فالمسرح واللوح يبقيان فوق
   بعض في العمود الأول، والدفتر وحده ينتقل.

   وما يزال تحت الأرضية، ومكتوبٌ إنه كذلك: المكسب يُقرا في نفس
   الرِّج، والخليّة تبقى تمرّر. تمريرٌ أقصر ليس صفرًا، والصفر هنا
   ما يُشترى إلا بكسر قانون.
   ============================================================ */
@media (orientation:landscape) and (max-height:600px){
  .room{max-width:none;display:grid;justify-content:center;
    grid-template-columns:minmax(0,350px) minmax(0,350px);
    grid-template-rows:auto auto;
    align-content:start;column-gap:20px}
  .stage {grid-column:1;grid-row:1}
  .panel {grid-column:1;grid-row:2}
  .ledger{grid-column:2;grid-row:2;align-self:start;margin-block-start:0}
  /* الذيل شغلُه يبلع الفضلة في عمودٍ واحد. ما فيه فضلة هنا، وفي
     الشبكة يصير صفًّا ثالثًا فاضيًا يطوّل الصفحة. */
  .grow{display:none}
}

/* ============================================================
   الرفّ الواحد — الدفتر وصفّ الرمز ما يقعدان مع بعض

   ═══ حكم صاحب البيت (٢٠٢٦-٠٧-٢٩) ═══
   «فتح ‹عندك رمز؟› يخلّي الصفحة تمرّر. وهذا ما ينفع في تطبيق
    جوّال.» فالردهة تقعد في شاشة واحدة **مطويّةً ومفتوحةً**، على
   البوابات الأربع، والحافّة الآمنة شغّالة.

   ═══ ليش ما انشُري المكان من الإيقاع ═══
   الذيل ‎.grow‎ هو الوحيد اللي يقدر يبتلع الطيّة، وطوله يطبعه
   رِجٌّ يُكتب أمره — عمود ‎slack‎ في ‎_probe/insets.html‎ §A، ومعه
   ‎grow (slack)‎ في §C. **اقرا العمود، ولا تنقله هنا.** واللي
   يقوله شكل العمود، وهو المهمّ: الذيل **رقمٌ واحدٌ تقريبًا على
   البوابات الأربع كلها** — ما يفرق بين ٦٦٧ و٨٤٤ إلا كسورًا —
   وينزل صفرًا على اللي تحت الأرضية. وصفّ الرمز يطلبه ونصفه.
   والسبب بنيويّ لا عارض: داخل النطاق السائل (‎--g‎ من ٦٤٠ إلى
   ٩٠٠ طولًا متاحًا) مجموع معاملات ‎--g‎ في العمود **يزيد على ١٠٠
   لكل ١٠٠px**، فالإيقاع ياكل كل بكسل زايد وزيادة — ولهذا الذيل
   ما يكبر مع الشاشة داخل النطاق. وتحت ٦٤٠ ما فيه ذيل أصلًا لأن
   ‎--g‎ صفر. والاستثناء الوحيد فوق ٩٠٠، حيث ‎--g‎ يوقف عند ٢٫٦
   فيرجع الذيل يكبر بكسلًا ببكسل (وينقرا في نفس العمود على
   ٤٣٠×٩٣٢) — بس بواباتنا الأربع كلها **تحت** التسعمئة، فما
   ينفعنا. يعني ما فيه مكانٌ يُشترى من الإيقاع حيث نحتاجه:
   لازم جسمٌ يقوم.
   (وشراؤه بجعل ‎--g‎ سالبًا انرفض بالقياس في جولةٍ سابقة: هدف
    اللمس ينزل تحت ٤٤. والقصّ ممنوع أصلًا، والتمرير هو الشكوى.)

   ═══ الآليّة، بجملة — وانقلبت بحكمٍ ثانٍ، فتُكتب منقلبة ═══
   كانت: **«دفترك» ينطوي لمّا ينفتح «عندك رمز؟»**، فصفّ الرمز
   يقعد في رفٍّ موجود.
   وصارت (٢٠٢٦-٠٧-٢٩ · حكم صاحب البيت): **الدفتر ما ينطوي — ينزل
   وبس، والمسرح هو اللي يدفع.** «الدفتر ما يختفي» كلمته، والثمن
   انطلع من حشوة المسرح العليا وفجوته ومقاس العلامة (القواعد الثلاث
   في آخر هذا القسم)، ومن حذف النداء اللي طلب هو نفسه.
   وكل اللي تحت هذا السطر انكتب للآليّة **الأولى**. الحساب اللي
   يليه — «الرفّ اللي يقوم يتنفّس ١٤٫٧٥+٠٫٩+٠٫٩» — كان يعدّ رفًّا
   ما عاد يقوم؛ خُطّ ولا انمسح، لأن الخلاصة اللي تحته صحيحة وما
   تعتمد عليه: **الشرط المقيس هو الشرط، مو رقمًا يُحفظ.**

   وليش هي بنيويّة لا مضبوطة باليد: ما فيها طرح بكسلات على أطوال
   اليوم. الرفّ اللي يقوم — الدفتر وهامشه — يتنفّس ‎١٤٫٧٥ + ٠٫٩ + ٠٫٩‎
   من ‎--g‎، وصفّ الرمز اللي يقعد يتنفّس ‎٢ + ٣٫٩٢‎ منه **على الأكثر**
   (أرضية القالب ٥٢ تبلع نصيبه على البوابات القصيرة). فالفضل
   موجبٌ عند ‎--g = 0‎ ويكبر كل ما طالت الشاشة، والمعاملات كلها
   مكتوبة في هذا الملف لا مقدَّرة. ولو قصرت الصفحة ٢٠–٤٠px
   (الرِّيل والدفتر يتغيّران في نفس الجولة) قصرت الحالتان
   **سواءً**، لأن الفرق بينهما لا يمرّ على أي جسمٍ ثالث.
   والشرط المقيس هو الشرط، مو رقمٌ يُحفظ: **ولا خليّة حمراء على
   البوابات الأربع، مطويّةً ومفتوحةً، والحافّة الآمنة شغّالة.**
   وهذي هي الصياغة الصامدة. أما «المفتوحة ما تطول المطويّة» فكانت
   نتيجةً لآليّةٍ انقلبت، وانقلبت معها: المفتوحة اليوم **أطول**،
   لأن الدفتر ما عاد ينطوي. والأرضيتان المقيستان بالبحث الثنائي
   على ‎_probe/gates.html‎: المطويّة ‎٥٤١‎، والمفتوحة ‎٥٧٤‎ — وقبل
   حكم صاحب البيت كانتا ‎٥٩٧‎ و‎≤٥٧٦‎ بالترتيب المعكوس. الرقمان
   يعيشان في MOLD.md مع أمرَي توليدهما، وما ينكتبان هنا مرّتين.

   والحارس أمرٌ يُكتب، مو انتباه — وهذي هي الخلاصة اللي المشروع
   دفع ثمنها ثلاث مرّات: أي تغيير يقلب هالعلاقة يطلع خليّةً حمراء
   في نفس الرِّج اللي يطبع الأرضية، وهو صار يقيس الحالتين:
     ‎_probe/gates.html?open=1&sa=59,34‎
     ‎_probe/gates.html?sa=59,34‎          (نفس البوابات، مطويّة)

   ═══ ما لا ينكسر ═══
   ولا سطر جافاسكربت انضاف: الحالة تنقرا من ‎<details open>‎ نفسها،
   والصفحة باقية على سطرها الواحد. و‎:has()‎ مستعملة أصلًا في هذا
   النظام — ‎.tkbite‎ يرث حالة ابنه بها — فما هي اعتمادًا جديدًا.
   ودرجات الفشل كلها تنزل ناحية الظهور لا الإخفاء:
     · ما عرف المتصفّح ‎:has()‎ → القاعدتان تسقطان، فالمسرح يبقى
       على مقاسه المطويّ والصفحة ترجع تمرّر — ما يضيع محتوى.
     · ما عرف ‎<details>‎ → ما فيه ‎[open]‎ أصلًا، فالأبناء ظاهرون
       والدفتر ظاهر: «إذا ما اشتغل شي، كل شي ظاهر».
   والدفتر ما يروح ولا يرجع، فما فيه حركة دخولٍ تتكرّر عليه.

   ═══ وأثرٌ على رِجّ الحوافّ — انقلب هو كمان ═══
   (٢٠٢٦-٠٧-٢٩ · الجولة ٨.) كان مكتوبًا هنا: «‎a-edge.py‎ يعلن
   الدفتر صفًّا حالته ‎("rest",)‎ وحدها… **الدفتر ما له بكسل في
   الحالة المفتوحة أصلًا**. السطر ما يتغيّر، والسبب يتغيّر.»
   والجملة انقلبت مع الآليّة وما انتبه لها أحد: الدفتر ما ينطوي،
   فله بكسل، ومقيسًا على الشجرة المشحونة في الحالة المفتوحة على
   ٣٩٠×٨٤٤ يقعد عند ‎y = 603.69‎ وحرفه السفلي ‎697.16‎ — أي ١٤٧px
   **داخل** الإطار.
   يعني الصفّ كان يتخطّى جسمًا منرسمًا كامل، **ويطبع كلمة
   «skipped» وهو يتخطّاه** — وهذا بالضبط العطب اللي انبنى له
   عمود الحالات. وانمسح الصفّ بـ‎("rest","open")‎، وانقاس، فطلع
   ‎٣٫٤٦٠‎ — أوطأ حافّة في النظام. أي إن الجسم اللي كان يستثني
   نفسه هو الأرضية.
   والخلاصة: عمود الحالة صادقٌ ما دام السبب اللي خلّى الحالة غير
   منطبقة صادقًا. ويوم يغيّر صاحب البيت السلوك، **الصفّ جزءٌ من
   التغيير**، ما هو تعليقًا يتبعه.
   ============================================================ */
/* ٢٠٢٦-٠٧-٢٩ · بكلمة صاحب البيت: الدفتر ما يختفي لمّا ينفتح
   الرمز — ينزل وبس. اللي دفع ثمن الحالة المفتوحة هو حذف النداء
   من المسرح (طلب صاحب البيت نفسه)، وما تبقّى ياخذه المسرح من
   حشوته العليا وفجوته وحدهما. ولا شي ينمسح. */
.room:has(.roomfold[open]) .stage{
  padding-block-start:calc(4px + 9 * var(--g));
  --stage-gap:calc(5px + 11 * var(--g))}
.room:has(.roomfold[open]) .tkmark-img{
  width:clamp(88px, 78px + 4.4 * var(--g), 112px)}
