@qumra/fanar 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +34 -0
- package/dist/chunk-SFA2EQFK.js +159 -0
- package/dist/index.d.ts +3172 -0
- package/dist/index.js +8086 -0
- package/dist/lib.d.ts +44 -0
- package/dist/lib.js +92 -0
- package/dist/tokens.css +658 -0
- package/dist/tokens.d.ts +164 -0
- package/dist/tokens.js +20 -0
- package/dist/tokens.json +2006 -0
- package/package.json +129 -0
package/dist/tokens.css
ADDED
|
@@ -0,0 +1,658 @@
|
|
|
1
|
+
/* ============================================================================
|
|
2
|
+
توكنز قمرة — تنزل في أي app بـ@import "@qumra/manara/tokens.css"
|
|
3
|
+
منقولة من v2 — منقولة حرفياً من Qumra Web App v2.dc.html (سطر 16-17).
|
|
4
|
+
دي مش إعادة تفسير: نفس الأسماء ونفس القيم، عشان أي مقارنة مع الملف
|
|
5
|
+
الأصلي تطلع مطابقة مش "قريبة".
|
|
6
|
+
========================================================================== */
|
|
7
|
+
|
|
8
|
+
@custom-variant dark (&:where([data-theme="dark"], [data-theme="dark"] *));
|
|
9
|
+
|
|
10
|
+
@theme static {
|
|
11
|
+
--font-sans: "Alexandria", system-ui, sans-serif;
|
|
12
|
+
|
|
13
|
+
/* الأسطح والنصوص — بتتقلب في الوضع الداكن (تحت) */
|
|
14
|
+
--color-surface: #ffffff;
|
|
15
|
+
--color-bg: #f7f9f9;
|
|
16
|
+
--color-line: #edf1f1;
|
|
17
|
+
--color-hover: #f2f6f6;
|
|
18
|
+
--color-ink: #020809;
|
|
19
|
+
--color-ink2: #3d4545;
|
|
20
|
+
/* سلّم النص: 20.2 / 9.8 / 5.6 / 4.9 — أربع درجات كلها فوق 4.5:1.
|
|
21
|
+
muted2 كان #a5b0b0 = 2.23:1، يعني تسميات الرسوم والنص البديل
|
|
22
|
+
مكانوش بيتقروا. مفيش مساحة لدرجة خامسة تحت — العتبة بتقفل السلّم. */
|
|
23
|
+
--color-muted: #5f6a6a;
|
|
24
|
+
--color-muted2: #687373;
|
|
25
|
+
/* حدّ عناصر التحكّم — لازم 3:1 (المعيار 1.4.11). كان #d9e0e0 = 1.34:1،
|
|
26
|
+
يعني الشيك بوكس الفاضي مكانش ليه أي وجود بصري. الكروت والفواصل
|
|
27
|
+
بتستخدم --color-line فمتأثرتش. */
|
|
28
|
+
--color-border: #7f8c8c;
|
|
29
|
+
--color-soft: #eaf2f3;
|
|
30
|
+
--color-soft2: #dceded;
|
|
31
|
+
--color-brand-ink: #0f4a4e;
|
|
32
|
+
|
|
33
|
+
/* ── تعبئة هيكل التحميل ────────────────────────────────────────────────
|
|
34
|
+
العصا اللي بتقف مكان النصّ لحدّ ما يوصل.
|
|
35
|
+
|
|
36
|
+
كانت `--color-hover`، وهو **لون حالة مرور** لا تعبئة — وعلى السطح
|
|
37
|
+
بيدّي 1.09:1 في الفاتح و1.14:1 في الداكن. فرق زي ده مايتشافش.
|
|
38
|
+
النتيجة كانت هيكل موجود في الـDOM وغايب عن العين.
|
|
39
|
+
|
|
40
|
+
والمدى ضيّق من الطرفين: تحت 1.2 مايتقريش، وفوق 1.6 بيتقري **محتوى**
|
|
41
|
+
لا انتظاراً — بلوك رمادي صريح بيبان كأنه صورة أو صندوق فاضي، فالعين
|
|
42
|
+
بتستنّى منه معنى بدل ما تعدّي عليه. القيم مقيسة على السطح:
|
|
43
|
+
|
|
44
|
+
فاتح #d6dcdc على #ffffff = 1.39 · 1.26 عند حضيض النبض
|
|
45
|
+
داكن #2c3232 على #101718 = 1.39 · 1.24 عند حضيض النبض
|
|
46
|
+
|
|
47
|
+
والرقمان متساويان عن قصد: الهيكل لازم يبان بنفس القوة في الوضعين،
|
|
48
|
+
وإلا الشاشة الواحدة بتتقري «بتحمّل» في وضع و«فاضية» في التاني.
|
|
49
|
+
|
|
50
|
+
── وليه توكن مستقلّ لا `soft2` ────────────────────────────────────────
|
|
51
|
+
`soft2` مسحته تركوازي — هو سطح العلامة الناعم. الهيكل بيه بياخد لون
|
|
52
|
+
هوية، وهو المفروض **حياد**: مساحة محجوزة لا عنصر له معنى. ده رمادي
|
|
53
|
+
مائل للبرودة (R أقلّ من G وB بستّ درجات) فيتناغم مع اللوحة بلا ما
|
|
54
|
+
ينتمي لها. */
|
|
55
|
+
--color-skeleton: #d6dcdc;
|
|
56
|
+
|
|
57
|
+
/* ألوان ثابتة مكتوبة صراحةً في v2 (مش متغيّرة مع الثيم) */
|
|
58
|
+
--color-brand: #207982;
|
|
59
|
+
--color-brand-hover: #1a646c;
|
|
60
|
+
--color-brand-100: #a5c9cc;
|
|
61
|
+
--color-brand-900: #0a2528;
|
|
62
|
+
--color-brand-deep: #0b3b3e;
|
|
63
|
+
/* خلفية فاتحة بمسحة تركوازي — لوحات العرض وحالة المرور على الكروت
|
|
64
|
+
الكبيرة. كانت #F4FAF8 مكتوبة بالإيد في شاشات الحسابات. */
|
|
65
|
+
--color-tint: #f4faf8;
|
|
66
|
+
/* درجة أعمق شوية — أرضية كروت التسويق في صفحة الهبوط. `tint` أرضية
|
|
67
|
+
القسم كله و`tint2` الكرت اللي جوّه، فالكرت يبان عليها. كانت
|
|
68
|
+
#EFF6F3 مكتوبة بالإيد ١٢ مرة في `Qumra Landing.dc.html`.
|
|
69
|
+
زي `tint` مالهاش قيمة داكنة — الاتنين أرضيات تسويقية فاتحة بالتعريف. */
|
|
70
|
+
--color-tint2: #eff6f3;
|
|
71
|
+
--color-mint: #7dd3c0;
|
|
72
|
+
|
|
73
|
+
/* ── ألوان الحالة ──────────────────────────────────────────────────────
|
|
74
|
+
كل واحدة ليها: نص (ink/اللون نفسه) + خلفية (bg) + حدّ (line).
|
|
75
|
+
التلاتة بيتقلبوا مع الثيم — من غير كده الشارة بتفضل بيضا وبتلمع
|
|
76
|
+
جوّه شاشة سودة حتى لو التباين جوّاها عدّى. */
|
|
77
|
+
--color-amber: #f8ac33;
|
|
78
|
+
--color-amber-bg: #fef6e9;
|
|
79
|
+
--color-amber-ink: #85570f;
|
|
80
|
+
--color-amber-line: #fbd79a;
|
|
81
|
+
--color-amber-900: #3d2a05;
|
|
82
|
+
/* المرور على تعبئة عنبرية — زرار «ابدأ النمو» والشارات في صفحة الهبوط.
|
|
83
|
+
كانت #DE9219 مكتوبة بالإيد. مع `amber-900` فوقها بتدّي 5.37:1.
|
|
84
|
+
ثابت مش بيتقلب — نفس منطق `amber` نفسه كتعبئة. */
|
|
85
|
+
--color-amber-hover: #de9219;
|
|
86
|
+
--color-green: #1e7a45;
|
|
87
|
+
--color-green-bg: #f1faf4;
|
|
88
|
+
--color-green-bg2: #e9f6ee;
|
|
89
|
+
--color-green-line: #bfe6ce;
|
|
90
|
+
--color-violet: #4b3e8e;
|
|
91
|
+
--color-violet-bg: #edeaf6;
|
|
92
|
+
--color-violet-line: #ded8ef;
|
|
93
|
+
|
|
94
|
+
/* تعبئة صريحة بنص أبيض فوقها — نفس دور --color-danger.
|
|
95
|
+
`green`/`violet` لوحدهم ألوان نص وبيتقلبوا، فمينفعش يشيلوا أبيض
|
|
96
|
+
في الوضع الداكن (كان بيدّي 1.90 و2.04). دول ثابتين وبيعدّوا:
|
|
97
|
+
green-solid أبيض فوقه 5.35 · كعنصر 3.39–5.35
|
|
98
|
+
violet-solid أبيض فوقه 5.33 · كعنصر 3.41–5.33 */
|
|
99
|
+
--color-green-solid: #1e7a45;
|
|
100
|
+
--color-violet-solid: #6d5eb8;
|
|
101
|
+
|
|
102
|
+
/* ── الأحمر: دورين، توكنين ─────────────────────────────────────────────
|
|
103
|
+
`red` لون نص — لازم يعدّي 4.5:1 على السطح، فبيتقلب في الوضع الداكن (تحت).
|
|
104
|
+
`danger` لون تعبئة وحدّ — لازم يعدّي 3:1 كعنصر، والنص الأبيض فوقه 4.5:1.
|
|
105
|
+
قيمة واحدة بتعدّي في الوضعين فمش محتاجة تتقلب:
|
|
106
|
+
كعنصر 4.90 فاتح / 3.70 داكن · أبيض فوقه 4.90
|
|
107
|
+
كانت #D6493B مكتوبة بالإيد في ٩ مواضع، والأبيض فوقها 4.31 — تحت العتبة. */
|
|
108
|
+
--color-red: #8e2b20;
|
|
109
|
+
--color-red-bg: #fdecea;
|
|
110
|
+
--color-red-line: #f3c9c4;
|
|
111
|
+
--color-danger: #c94134;
|
|
112
|
+
/* ── إضافة فنار — مش في منارة ───────────────────────────────────────────
|
|
113
|
+
`danger` كان الشاذ الوحيد: `brand` و`amber` كلٌّ منهم له `-hover`
|
|
114
|
+
مخصّص، و`danger` كان بيستعير `--color-red` في الـhover.
|
|
115
|
+
|
|
116
|
+
و`--color-red` **بيتقلب في الوضع الداكن** من `#8e2b20` (أحمر غامق)
|
|
117
|
+
لـ`#f3a79e` (وردي فاتح) — لأنه لون **نص** هناك لا تعبئة. فزرّ الحذف
|
|
118
|
+
في الداكن، أول ما الماوس يعدّي عليه، كان بيبقى أبيض على وردي فاتح
|
|
119
|
+
= **1.94**. نصّه عملياً مش مقروء.
|
|
120
|
+
|
|
121
|
+
القيمة مشتقّة لا مختارة: نسب القنوات بتاعة `brand → brand-hover`
|
|
122
|
+
مطبّقة على `danger`. النتيجة في نفس نطاق النظام (سطوع ٠.٦٤ مقابل
|
|
123
|
+
٠.٦٧ و٠.٧٣)، والأبيض فوقها **6.73** بدل 4.9. */
|
|
124
|
+
--color-danger-hover: #a3362b;
|
|
125
|
+
/* أحمر فاتح ثابت — للأرضيات الداكنة دايماً (التوست على bg-night).
|
|
126
|
+
مش بيتقلب لأن أرضيته مش بتتقلب. نفس منطق --color-brand-100. */
|
|
127
|
+
--color-red-100: #f3a79e;
|
|
128
|
+
--color-night: #0b0f12;
|
|
129
|
+
--color-hero-body: #bfd9d8;
|
|
130
|
+
--color-hero-meta: #8fb3b2;
|
|
131
|
+
--color-hero-dim: #5e7a79;
|
|
132
|
+
--color-hero-text: #d7e3e2;
|
|
133
|
+
|
|
134
|
+
/* ── سلّم الخط ─────────────────────────────────────────────────────────
|
|
135
|
+
١٢ درجة، أعداد صحيحة بس. الـREADME كان بيوعد بالسلّم ده من غير ما
|
|
136
|
+
يبقى موجود، فالمكوّنات اخترعت ١٦ مقاس منهم ٨ كسرية — و12.5px
|
|
137
|
+
و13.5px لوحدهم كانوا ٣٥ استخدام. */
|
|
138
|
+
--text-micro: 11px;
|
|
139
|
+
--text-caption: 12px;
|
|
140
|
+
--text-ui: 13px;
|
|
141
|
+
--text-body: 14px;
|
|
142
|
+
--text-lead: 15px;
|
|
143
|
+
/* الحقل الكبير — تحت ١٦ بيخلّي iOS يعمل zoom تلقائي على الحقل */
|
|
144
|
+
--text-base: 16px;
|
|
145
|
+
/* ── الدرجة الوحيدة اللي بتصطدم بـTailwind ─────────────────────────────
|
|
146
|
+
كل أسماء السلّم مخترَعة (micro · ui · body · lead · h4…) إلا `base`
|
|
147
|
+
— ده اسم مقاس مدمج، وTailwind بيعرّف معاه `--text-base--line-height`
|
|
148
|
+
بـ1.5. فتجاوز `--text-base` بياخد المقاس ويسيب ارتفاع السطر، وأداة
|
|
149
|
+
`text-base` بتطبع الاتنين.
|
|
150
|
+
|
|
151
|
+
والنتيجة إن الأداة بتغلب قاعدة ارتفاع السطر بتاعة الحقول (تحت في
|
|
152
|
+
`@layer base`) — الأدوات بتغلب الأساس مهما كانت الأولوية — فيرجع
|
|
153
|
+
الحقل الكبير لـ1.5 وتتقصّ ذيول «ي» و«ج» ١٫٨٥px. والباقي سليم لأن
|
|
154
|
+
أسماءه مالهاش نظير مدمج.
|
|
155
|
+
|
|
156
|
+
`initial` بتشيل الاقتران فتطبع الأداة المقاس بس زي بقية السلّم. */
|
|
157
|
+
--text-base--line-height: initial;
|
|
158
|
+
--text-h4: 17px;
|
|
159
|
+
--text-h3: 20px;
|
|
160
|
+
--text-h2: 24px;
|
|
161
|
+
--text-h1: 30px;
|
|
162
|
+
--text-display: 36px;
|
|
163
|
+
--text-hero: 44px;
|
|
164
|
+
/* ── درجتين تسويقيتين ─────────────────────────────────────────────────
|
|
165
|
+
صفحة الهبوط سلّمها أكبر من سلّم اللوحة — اللوحة بتعرض بيانات كتير
|
|
166
|
+
في مساحة ضيقة، والهبوط بيعرض جملة واحدة على شاشة كاملة. المرجع
|
|
167
|
+
فيه ١٠ مقاسات بره السلّم؛ تمانية منهم بيتقرّبوا لدرجة موجودة
|
|
168
|
+
(38→display · 34→display · 29→h1 · 27→h2 · 25→h2 · 21→h3 · 19→h3
|
|
169
|
+
· 18→h4)، والاتنين دول مالهمش أقرب من ٤px فبيتضافوا.
|
|
170
|
+
مالهمش استخدام جوّه اللوحة — لو ظهروا فيها يبقى فيه غلط. */
|
|
171
|
+
--text-title: 40px;
|
|
172
|
+
--text-mega: 54px;
|
|
173
|
+
|
|
174
|
+
/* ── نصف القطر ─────────────────────────────────────────────────────────
|
|
175
|
+
٨ درجات بأدوار مسمّاة. السلّم ده **مشتقّ من الاستخدام الفعلي** مش
|
|
176
|
+
مفروض عليه: كان فيه ١٧ قيمة مختلفة في ٣١٧ موضع عبر المونوريبو،
|
|
177
|
+
والدرجات دي بتبلعهم بإزاحة ٢px كحد أقصى — يعني توحيد مش إعادة تصميم.
|
|
178
|
+
|
|
179
|
+
ملف الهوية القديم كان بيوعد بأربع قيم بس (9 · 13 · 18 · كامل)، وده
|
|
180
|
+
كان هيغيّر شكل ١٥١ استخدام في العنقود ٧–٩ لوحده. الأدوار أهم من
|
|
181
|
+
عدد الدرجات: الزرار الصغيّر مش كرت، والكرت مش قسم. */
|
|
182
|
+
/* ── عرض الحاويات ──────────────────────────────────────────────────────
|
|
183
|
+
مقاسان لا أكثر، وبأسماء لا بأرقام مكتوبة في الصفحات.
|
|
184
|
+
|
|
185
|
+
`shell` سقف اللوحة كلّها؛ و`page` عمود القراءة: كل صفحة تُقرأ سطراً
|
|
186
|
+
بعد سطر — تفصيل، أو نموذج، أو إعدادات — تأخذه، وكل صفحة جدولها هو
|
|
187
|
+
محتواها تأخذ `shell` كاملاً.
|
|
188
|
+
|
|
189
|
+
كان في المشروع أربعة مقاسات (٨٨٠ · ٩٢٠ · ٩٨٠ · ٥٨٠) مكتوبة بالإيد
|
|
190
|
+
في ستّ عشرة شاشة. الفرق بين ٨٨٠ و٩٢٠ لا يُقرأ سبباً — يُقرأ سهواً،
|
|
191
|
+
والتنقّل بين صفحتين متجاورتين يُظهر الحافّة وهي تقفز أربعين بكسل.
|
|
192
|
+
والرقم المكتوب بالإيد يعود يتفرّق: التوكن يمنع عودته. */
|
|
193
|
+
/* ── الفلسفة اتغيّرت: مفيش عصر ────────────────────────────────────
|
|
194
|
+
`page` كان ٨٨٠px كعمود قراءة، و`shell` ١٤٤٠. النتيجة إن تفاصيل
|
|
195
|
+
الطلب ومحرّر المنتج والإعدادات — ٢٤ شاشة — بيتحشروا في تلت الشاشة
|
|
196
|
+
على ٢٧ بوصة، والفراغ حواليهم بيتقري صفحة مش مخلّصة لا عمود مقصود.
|
|
197
|
+
|
|
198
|
+
الاتنين بقوا واحد: الصفحة بتاخد عرضها كامل لحد السقف. والسقف باقي
|
|
199
|
+
لأن غيابه مش «بلا حاوية» — هو حاوية بعرض الشاشة: صفّ «تسمية ← قيمة»
|
|
200
|
+
على ٣٤٤٠px بيبعد طرفيه تلات آلاف بكسل، والعين بتلفّ بدل ما تمسح.
|
|
201
|
+
|
|
202
|
+
لو رجعنا لعمود القراءة يوماً: `--container-page` يرجع ٨٨٠ وبس —
|
|
203
|
+
الـ٢٤ شاشة بتقراه من التوكن مش مكتوب فيها. */
|
|
204
|
+
--container-page: 1600px;
|
|
205
|
+
--container-shell: 1600px;
|
|
206
|
+
|
|
207
|
+
/* عرض السطر لا عرض الحاوية — سقف على النصّ حتى لا يمتدّ السطر
|
|
208
|
+
فيضيع طرفه على العين. درجتان: `note` للسطر أو السطرين تحت
|
|
209
|
+
عنوان أو في حالة فارغة، و`lead` للفقرة القائمة بنفسها.
|
|
210
|
+
كانت ستّ قيم (٣٢٠ · ٣٣٠ · ٣٤٠ · ٣٨٠ · ٤٦٠ · ٥٢٠) لا يفرّق
|
|
211
|
+
بينها شيء يُقصد. */
|
|
212
|
+
--container-note: 340px;
|
|
213
|
+
--container-lead: 520px;
|
|
214
|
+
|
|
215
|
+
--radius-mark: 3px;
|
|
216
|
+
--radius-xs: 5px;
|
|
217
|
+
--radius-sm: 7px;
|
|
218
|
+
--radius-field: 9px;
|
|
219
|
+
--radius-card: 12px;
|
|
220
|
+
--radius-lg: 14px;
|
|
221
|
+
--radius-section: 18px;
|
|
222
|
+
--radius-full: 999px;
|
|
223
|
+
|
|
224
|
+
/* ── الظل ──────────────────────────────────────────────────────────────
|
|
225
|
+
الأربعة الأولى بتستخدم `--shadow-color` فبتتقلب مع الثيم — دي ظلال
|
|
226
|
+
جوّه الصفحة، ولازم تقوى في الوضع الداكن عشان تفضل مقروءة.
|
|
227
|
+
|
|
228
|
+
التلاتة الأخيرة قيمها ثابتة عن قصد: دي طبقات فوق أرضية معتّمة
|
|
229
|
+
أصلاً (backdrop)، فالخلفية اللي وراها مش بتتغيّر مع الثيم. */
|
|
230
|
+
--shadow-raise: 0 1px 3px var(--shadow-color);
|
|
231
|
+
--shadow-tip: 0 6px 18px var(--shadow-color);
|
|
232
|
+
--shadow-panel: 0 10px 30px var(--shadow-color);
|
|
233
|
+
--shadow-pop: 0 18px 44px var(--shadow-color);
|
|
234
|
+
|
|
235
|
+
--shadow-modal: 0 24px 60px rgb(2 8 9 / 0.28);
|
|
236
|
+
--shadow-toast: 0 16px 40px rgb(2 8 9 / 0.26);
|
|
237
|
+
/* طالع من تحت — الإزاحة سالبة، والخط الداخلي بيدّي حافة علوية للشيت */
|
|
238
|
+
--shadow-sheet: 0 -14px 40px rgb(2 8 9 / 0.28), inset 0 1px 0 rgb(255 255 255 / 0.06);
|
|
239
|
+
|
|
240
|
+
/* ── ألوان الكود — Visual Studio Code ──────────────────────────────────
|
|
241
|
+
التوثيق وسط تاني: الكود مش نص عادي، والتلوين فيه **بنية** مش زينة —
|
|
242
|
+
بيفرّق الوسم عن السمة عن القيمة، وده اللي بيخلّي المطوّر يمسح مقطع
|
|
243
|
+
من عشر أسطر بنظرة. وعشان كده ليه توكنز مستقلة مش استعارة من ألوان
|
|
244
|
+
الحالة: `--color-green` معناه «نجح»، ولو النص بين علامتين اقتباس
|
|
245
|
+
أخضر لنفس السبب يبقى المعنى اتخفّف.
|
|
246
|
+
|
|
247
|
+
── ليه ألوان محرّر جاهز مش ألوان قمرة ──────────────────────────────
|
|
248
|
+
دي الحتة الوحيدة في النظام اللي **المرجع فيها بره قمرة**، والسبب إن
|
|
249
|
+
المستخدم هنا مطوّر بيقضّي يومه في محرّر. لوحة قمرة على مقطع كود
|
|
250
|
+
معناها إنه يقرا بنية بلون مش متعوّد عليه، وبعدين ينسخه فيلاقيه
|
|
251
|
+
بلون تاني في محرّره. التطابق مع المحرّر بيوفّر الترجمة دي.
|
|
252
|
+
القيم من `light_plus` و`dark_plus` حرفياً — أي «تقريب» بيضيّع
|
|
253
|
+
السبب كله.
|
|
254
|
+
|
|
255
|
+
ست أدوار مش خمسة: الكلمة المحجوزة (`const` · `import`) اتفصلت عن
|
|
256
|
+
الوسم لأنها كانت **مش ملوّنة أصلاً**، ودي أوضح فرق بين المقطع هنا
|
|
257
|
+
وبين نفسه في المحرّر.
|
|
258
|
+
|
|
259
|
+
── وليه داكن حتى في الوضع الفاتح ───────────────────────────────────
|
|
260
|
+
دي القيم الوحيدة في الملف اللي **مابتتقلبش مع الثيم**، ومعاها سبب
|
|
261
|
+
زي `--color-tint` و`--color-red-100` بالظبط: أرضيتها مش أرضية
|
|
262
|
+
الصفحة.
|
|
263
|
+
|
|
264
|
+
بلوك الكود مش «فقرة بخط تاني» — هو **نافذة محرّر متحطّة في
|
|
265
|
+
الصفحة**، والمحرّر داكن عند أغلب اللي هيقروا. لو اتقلب مع الثيم
|
|
266
|
+
بيبقى قطعة من الصفحة، ولو فضل داكن بيتقري مقتطع من المكان اللي
|
|
267
|
+
الكود ده رايح ليه.
|
|
268
|
+
|
|
269
|
+
والمقطع نفسه بيتنسخ ويتلزق في المحرّر — فالتطابق بيوفّر ترجمة
|
|
270
|
+
بصرية مرتين: وانت بتقراه، ولما تشوفه هناك.
|
|
271
|
+
|
|
272
|
+
التباين على `code-bg` — السبعة كلهم فوق 4.5:
|
|
273
|
+
11.12 · 5.59 · 8.09 · 11.05 · 6.24 · 9.70 · 4.95 */
|
|
274
|
+
--color-code-bg: #1f1f1f; /* أرضية المحرّر نفسها */
|
|
275
|
+
--color-code-plain: #d4d4d4; /* النص العادي — لون المحرّر مش لون الصفحة */
|
|
276
|
+
--color-code-key: #569cd6; /* `const` · `import` · `return` · `true` */
|
|
277
|
+
--color-code-tag: #4ec9b0; /* اسم الوسم والمكوّن — `<Button` */
|
|
278
|
+
--color-code-attr: #9cdcfe; /* اسم السمة، اسم الخاصية في JSON */
|
|
279
|
+
--color-code-str: #ce9178; /* النص بين علامتين */
|
|
280
|
+
--color-code-num: #b5cea8; /* الرقم */
|
|
281
|
+
--color-code-note: #6a9955; /* التعليق */
|
|
282
|
+
/* طاقم البلوك — شريط العنوان وزرار النسخ والفاصل الداخلي.
|
|
283
|
+
`muted2` و`line` بتوع الصفحة مش شغّالين هنا: أرضيتهم بتتقلب وأرضية
|
|
284
|
+
البلوك لأ، فـ`muted2` في الوضع الفاتح كان بيدّي 3.37 على الأسود.
|
|
285
|
+
دول مقاسين على `#1f1f1f` وبس. */
|
|
286
|
+
--color-code-dim: #858585; /* 4.47 على code-bg */
|
|
287
|
+
--color-code-line: #303031; /* الفاصل الداخلي — حدّ لوحة المحرّر */
|
|
288
|
+
|
|
289
|
+
/* أرضية الكود المضمّن جوّه جملة — **بتتقلب** مع الثيم عكس اللي فوق.
|
|
290
|
+
الكلمة جوّه فقرة عربية مش نافذة محرّر: أرضية سودة حواليها بتقطع
|
|
291
|
+
السطر وبتسحب العين لها بدل ما تخلّيها تكمّل قراية. الفرق في
|
|
292
|
+
الدور مش في الوسط. */
|
|
293
|
+
--color-code-chip: #f4f7f7;
|
|
294
|
+
|
|
295
|
+
--animate-qfade: qfade 0.16s ease-out;
|
|
296
|
+
--animate-qslide: qslidein 0.22s ease-out;
|
|
297
|
+
/* ظهور من أسفل — للبطاقات التي تُقحم نفسها على المستخدم. أبطأ من
|
|
298
|
+
`qfade` عمداً: ما يظهر بلا طلب يجب أن يُرى وهو يظهر، لا أن يجد
|
|
299
|
+
المستخدم نفسه أمامه. */
|
|
300
|
+
--animate-tip: tip-in 0.26s cubic-bezier(0.2, 0.8, 0.2, 1);
|
|
301
|
+
/* الشريط السفليّ يطلع من تحت الشاشة — حركة تقول «جئت من هنا» */
|
|
302
|
+
--animate-tip-up: tip-up 0.3s cubic-bezier(0.2, 0.9, 0.2, 1);
|
|
303
|
+
/* درج جانبي — نسختان لأن `transform` لا ينقلب مع اتجاه الصفحة:
|
|
304
|
+
اللوح على الحافّة الطرفية، وهي اليمين في LTR واليسار في RTL. */
|
|
305
|
+
--animate-drawer: drawer-ltr 0.32s cubic-bezier(0.2, 0.9, 0.2, 1);
|
|
306
|
+
--animate-drawer-rtl: drawer-rtl 0.32s cubic-bezier(0.2, 0.9, 0.2, 1);
|
|
307
|
+
/* شريط الحفظ — ينزلق من فوق ويطلع من فوق. الحركة تقول إنه حلّ محلّ
|
|
308
|
+
ما كان هنا، لا إنه طبقة جديدة فوقه. أسرع من الدرج لأنه لا ينتظر
|
|
309
|
+
قراءة: المستخدم يعرف أنه عدّل، والشريط يؤكّد لا يُخبر. */
|
|
310
|
+
--animate-savebar: savebar-in 0.2s cubic-bezier(0.2, 0.8, 0.2, 1);
|
|
311
|
+
|
|
312
|
+
/* ── نبض الهيكل ────────────────────────────────────────────────────────
|
|
313
|
+
`animate-pulse` بتاع Tailwind بينزّل الشفافية لـ**٥٠٪**، وده بياكل
|
|
314
|
+
نصّ الفرق بين التعبئة والسطح: هيكل بـ1.39 بيوصل 1.12 عند الحضيض —
|
|
315
|
+
يعني بيختفي ويرجع مع كل دورة.
|
|
316
|
+
|
|
317
|
+
السبب إن الشفافية معمولة للعناصر اللي تباينها عالي أصلاً (نصّ، صورة).
|
|
318
|
+
والهيكل بالتعريف **خافت**، فنسبة النزول لازم تبقى أقلّ.
|
|
319
|
+
|
|
320
|
+
٧٠٪ بتسيب 1.26 عند الحضيض — الحركة لسه بتتشاف والعصا مابتغيبش.
|
|
321
|
+
و1.6s أبطأ من 2s بتاعة Tailwind لأن الحركة الأضيق محتاجة وقت أطول
|
|
322
|
+
عشان تتقري كنبض لا كوميض. */
|
|
323
|
+
--animate-skeleton: skeleton-pulse 1.6s ease-in-out infinite;
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
:root {
|
|
327
|
+
/* ── إعلان الوضع للمتصفّح ────────────────────────────────────────────
|
|
328
|
+
المتصفّح بيرسم أجزاء **مش إحنا اللي بنلوّنها**: قائمة `<select>`
|
|
329
|
+
المنبثقة، وشريط التمرير، ومنتقي التاريخ، وأرضية الملء التلقائي،
|
|
330
|
+
وحلقة التركيز الافتراضية. دي بترسمها المنصّة لا الـCSS بتاعنا.
|
|
331
|
+
|
|
332
|
+
من غير `color-scheme` المتصفّح بيفترض **فاتح دايماً** — فقائمة
|
|
333
|
+
`<select>` في الوضع الداكن بتطلع بنصّ غامق على أرضية غامقة، والخيار
|
|
334
|
+
المحدَّد شريط أزرق فاضي بلا كلام. مافيش أي CSS على `<option>` بيصلّح
|
|
335
|
+
ده: العنصر بيترسم برّه الصفحة.
|
|
336
|
+
|
|
337
|
+
والسطر ده هو الإصلاح الوحيد — وبيشتغل على الخمس حاجات مرّة واحدة. */
|
|
338
|
+
color-scheme: light;
|
|
339
|
+
|
|
340
|
+
--shadow-color: rgb(2 8 9 / 0.14);
|
|
341
|
+
/* اتجاه محاذاة الأرقام — بيتقلب مع اتجاه الصفحة */
|
|
342
|
+
--num-align: right;
|
|
343
|
+
/* ── الرقم اللي ليه لاحقة ──────────────────────────────────────────────
|
|
344
|
+
`far` = ناحية **نهاية الصفحة**، وهي ناحية اللاحقة.
|
|
345
|
+
و`pad-right`/`pad-left` **فيزيائيين عن قصد**: الحقل نفسه
|
|
346
|
+
`direction: ltr` (من `[data-num]`)، فأي حشو منطقي (`pe-`) بيتحسب
|
|
347
|
+
على LTR ويروح الناحية الغلط — وده اللي كان بيخلّي الرقم يتراكب
|
|
348
|
+
على «ج.م». */
|
|
349
|
+
--num-align-far: left;
|
|
350
|
+
--num-pad-right: 0.875rem;
|
|
351
|
+
--num-pad-left: 3.5rem;
|
|
352
|
+
/* ونفس الحكاية مع الأيقونة السابقة: الأيقونة بتتحطّ بحساب اتجاه
|
|
353
|
+
**الصفحة** (`start-3.5` على الغلاف)، والحشو بحساب `ltr` بتاع الرقم
|
|
354
|
+
— فالاتنين بيقعوا في ناحية واحدة والرقم بيتراكب على الأيقونة. */
|
|
355
|
+
--num-icon-pad-right: 2.5rem;
|
|
356
|
+
--num-icon-pad-left: 0.875rem;
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
html[dir="ltr"] {
|
|
360
|
+
--num-align: left;
|
|
361
|
+
--num-align-far: right;
|
|
362
|
+
--num-icon-pad-right: 0.875rem;
|
|
363
|
+
--num-icon-pad-left: 2.5rem;
|
|
364
|
+
--num-pad-right: 3.5rem;
|
|
365
|
+
--num-pad-left: 0.875rem;
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
html[data-theme="dark"] {
|
|
369
|
+
/* الشرح عند القيمة الفاتحة في `:root` */
|
|
370
|
+
color-scheme: dark;
|
|
371
|
+
|
|
372
|
+
--color-surface: #101718;
|
|
373
|
+
--color-bg: #0a0f10;
|
|
374
|
+
--color-line: #1e2829;
|
|
375
|
+
--color-hover: #1a2425;
|
|
376
|
+
--color-ink: #f2f6f6;
|
|
377
|
+
--color-ink2: #c7d1d1;
|
|
378
|
+
--color-muted: #93a0a0;
|
|
379
|
+
--color-muted2: #7a8787;
|
|
380
|
+
--color-border: #5e6b6c;
|
|
381
|
+
--color-soft: #12363a;
|
|
382
|
+
--color-soft2: #17454a;
|
|
383
|
+
--color-brand-ink: #7dd3c0;
|
|
384
|
+
/* الهيكل — نفس التباين بالظبط (1.39) مقلوباً. الشرح عند القيمة الفاتحة. */
|
|
385
|
+
--color-skeleton: #2c3232;
|
|
386
|
+
--shadow-color: rgb(0 0 0 / 0.55);
|
|
387
|
+
|
|
388
|
+
/* الأحمر النصّي لازم يتقلب — #8e2b20 على #101718 بيدّي 2.17:1،
|
|
389
|
+
يعني رسالة الخطأ مكانتش بتتقري أصلاً. البديل 9.36:1. */
|
|
390
|
+
--color-red: #f3a79e;
|
|
391
|
+
--color-red-bg: #2c1613;
|
|
392
|
+
--color-red-line: #5c2a24;
|
|
393
|
+
|
|
394
|
+
/* باقي ألوان الحالة — نفس المنطق. الأرقام دي نص على خلفيته. */
|
|
395
|
+
--color-amber: #f8ac33; /* 8.33 على amber-bg */
|
|
396
|
+
--color-amber-bg: #2b2009;
|
|
397
|
+
--color-amber-ink: #f5c77a; /* 10.15 */
|
|
398
|
+
--color-amber-line: #5c4415;
|
|
399
|
+
--color-green: #6ecf9a; /* 8.03 على green-bg2 */
|
|
400
|
+
--color-green-bg: #0d2119;
|
|
401
|
+
--color-green-bg2: #102a22;
|
|
402
|
+
--color-green-line: #245140;
|
|
403
|
+
--color-violet: #b9aeea; /* 8.24 على violet-bg */
|
|
404
|
+
--color-violet-bg: #1e1a33;
|
|
405
|
+
--color-violet-line: #38305c;
|
|
406
|
+
|
|
407
|
+
/* ألوان الكود مش هنا — هي ثابتة في `@theme static` فوق ومابتتقلبش.
|
|
408
|
+
الوحيد اللي بيتقلب هو أرضية الكود المضمّن جوّه الجُمل. */
|
|
409
|
+
--color-code-chip: #17201f;
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
/* خطوط رأسية باهتة كل ٧٤px — بتدّي عمق للأرضية الداكنة من غير صورة.
|
|
413
|
+
موجودة في `Qumra Accounts.dc.html` و`Qumra Landing.dc.html` بنفس القيم،
|
|
414
|
+
فمكانها هنا مش جوّه تطبيق. تشتغل على الأرضيات الداكنة بس — الخطوط
|
|
415
|
+
بيضا بشفافية ٣.٥٪. */
|
|
416
|
+
@utility rule-grid {
|
|
417
|
+
background-image: repeating-linear-gradient(
|
|
418
|
+
90deg,
|
|
419
|
+
rgb(255 255 255 / 0.035) 0 1px,
|
|
420
|
+
transparent 1px 74px
|
|
421
|
+
);
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
/* نبض الهيكل — الشرح عند `--animate-skeleton` */
|
|
425
|
+
@keyframes skeleton-pulse {
|
|
426
|
+
0%, 100% { opacity: 1; }
|
|
427
|
+
50% { opacity: 0.7; }
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
@keyframes qfade {
|
|
431
|
+
from { opacity: 0; transform: translateY(-6px); }
|
|
432
|
+
to { opacity: 1; transform: none; }
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
@keyframes sheet-up {
|
|
436
|
+
from { transform: translateY(100%); }
|
|
437
|
+
to { transform: translateY(0); }
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
@keyframes drawer-ltr {
|
|
441
|
+
from { transform: translateX(100%); }
|
|
442
|
+
to { transform: none; }
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
@keyframes drawer-rtl {
|
|
446
|
+
from { transform: translateX(-100%); }
|
|
447
|
+
to { transform: none; }
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
@keyframes tip-up {
|
|
451
|
+
from { transform: translateY(100%); }
|
|
452
|
+
to { transform: none; }
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
@keyframes tip-in {
|
|
456
|
+
from { opacity: 0; transform: translateY(12px); }
|
|
457
|
+
to { opacity: 1; transform: none; }
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
@keyframes savebar-in {
|
|
461
|
+
from { opacity: 0; transform: translateY(-10px); }
|
|
462
|
+
to { opacity: 1; transform: none; }
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
@keyframes qslidein {
|
|
466
|
+
from { transform: translateX(-100%); }
|
|
467
|
+
to { transform: none; }
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
/* ظهور بسيط — للقوايم المنسدلة والتولتيب والطبقات */
|
|
471
|
+
@keyframes fade-in {
|
|
472
|
+
from { opacity: 0; }
|
|
473
|
+
to { opacity: 1; }
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
/* التوست بيطلع من تحت شوية — بيربط الحركة بمكانه في الشاشة */
|
|
477
|
+
@keyframes toast-in {
|
|
478
|
+
from { opacity: 0; transform: translateY(10px) scale(.97); }
|
|
479
|
+
to { opacity: 1; transform: none; }
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
/* شريط تحميل غير محدّد — بيروح ويرجع بدل ما يدّعي نسبة مايعرفهاش.
|
|
483
|
+
منطقيّ الاتجاه: `inset-inline-start` بيتقلب مع الصفحة لوحده. */
|
|
484
|
+
@keyframes qload {
|
|
485
|
+
0% { inset-inline-start: -35%; }
|
|
486
|
+
100% { inset-inline-start: 100%; }
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
@layer base {
|
|
490
|
+
html,
|
|
491
|
+
body {
|
|
492
|
+
height: 100%;
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
/* ── ذيول الحروف العربية داخل الحقول ──────────────────────────────────
|
|
496
|
+
الحقل يقصّ ما يخرج عن صندوقه، وصندوق نصّه ارتفاعه ارتفاع السطر. وفي
|
|
497
|
+
Alexandria ينزل ذيل «ي» و«ج» و«ص» تحت خطّ القاعدة أكثر ممّا يتركه
|
|
498
|
+
سطر بارتفاع 1.5 — فيُقصّ الذيل قصّاً مستوياً ويُقرأ الحرف ناقصاً.
|
|
499
|
+
اللاتينية لا تُظهر العيب لأن ذيولها أقصر، ولذلك يمرّ بلا انتباه.
|
|
500
|
+
|
|
501
|
+
1.9 يسع أطول ذيل في السلّم كلّه. ولا يزيد ارتفاع الحقل: المتصفّح
|
|
502
|
+
يوسّط سطر الحقل المفرد في صندوقه، والسطر الأطول يأخذ من الفراغ
|
|
503
|
+
الموجود أصلاً. والقاعدة على العنصر نفسه لا على الصنف، فتغطّي كل
|
|
504
|
+
حقل في المشروع — في المكتبة أو مكتوباً بالإيد.
|
|
505
|
+
|
|
506
|
+
── والرقم مقيس لا مختار ────────────────────────────────────────────
|
|
507
|
+
القصّ يقع عند **صندوق السطر** لا صندوق الحقل — فالحقل قد يكون
|
|
508
|
+
٥٦px والسطر ٢٤px فيُقصّ الذيل وحوله فراغ. والحدّ الأدنى:
|
|
509
|
+
|
|
510
|
+
الصعود − الهبوط المعلَن + ٢ × هبوط الحبر
|
|
511
|
+
14 − 4 + 2×7.92 = 25.85px عند 14px ≈ 1.85
|
|
512
|
+
|
|
513
|
+
لأن نصف الرصاص يوزَّع أعلى وأسفل. و1.9 فوقه بشعرة.
|
|
514
|
+
|
|
515
|
+
── وأداة `leading-*` على حقل تكسر هذا كلّه ─────────────────────────
|
|
516
|
+
القاعدة في `@layer base`، والأدوات تغلب الأساس مهما كانت الأولويّة.
|
|
517
|
+
فكل `leading-[…]` أو `text-*` يحمل ارتفاع سطر مقترناً يعيد العيب
|
|
518
|
+
في مكانه. وقعت مرّتين: `--text-base` (انظر أعلى) و`leading-[1.7]`
|
|
519
|
+
في `AiComposer` — والاثنتان كانتا تقصّان ذيل «ي». */
|
|
520
|
+
input:not([type='checkbox']):not([type='radio']):not([type='range']),
|
|
521
|
+
textarea,
|
|
522
|
+
select {
|
|
523
|
+
line-height: 1.9;
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
body {
|
|
527
|
+
margin: 0;
|
|
528
|
+
background: var(--color-bg);
|
|
529
|
+
color: var(--color-ink);
|
|
530
|
+
font-family: var(--font-sans);
|
|
531
|
+
-webkit-font-smoothing: antialiased;
|
|
532
|
+
overflow: hidden;
|
|
533
|
+
}
|
|
534
|
+
|
|
535
|
+
a {
|
|
536
|
+
color: var(--color-brand);
|
|
537
|
+
text-decoration: none;
|
|
538
|
+
}
|
|
539
|
+
a:hover {
|
|
540
|
+
color: var(--color-brand-hover);
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
input {
|
|
544
|
+
font-family: inherit;
|
|
545
|
+
}
|
|
546
|
+
|
|
547
|
+
/* حلقة تركيز موحّدة — v2 مكانش فيها، وده الشيء الوحيد اللي بزوّده
|
|
548
|
+
على الأصل لأن التصميم من غيره مش قابل للتنقّل بالكيبورد. */
|
|
549
|
+
:focus-visible {
|
|
550
|
+
outline: 2px solid var(--color-brand);
|
|
551
|
+
outline-offset: 2px;
|
|
552
|
+
border-radius: 6px;
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
::-webkit-scrollbar {
|
|
556
|
+
width: 8px;
|
|
557
|
+
height: 8px;
|
|
558
|
+
}
|
|
559
|
+
::-webkit-scrollbar-thumb {
|
|
560
|
+
background: var(--color-border);
|
|
561
|
+
border-radius: 999px;
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
/* الأرقام جوّه نص عربي.
|
|
565
|
+
`isolate` بيمنع الرقم من إنه يتلخبط مع اللي حواليه، و`tabular-nums`
|
|
566
|
+
بيخلّي الخانات بعرض واحد فالأعمدة تفضل مصطفّة. والمحاذاة متثبّتة على
|
|
567
|
+
اتجاه الصفحة بمتغيّر، ولأنها في @layer base أي كلاس محاذاة
|
|
568
|
+
(text-end / text-center) لسه بيكسبها.
|
|
569
|
+
|
|
570
|
+
── وليه مافيش `direction: ltr` هنا ──────────────────────────────────
|
|
571
|
+
كان موجود، وكان بيقلب كل مبلغ في المنصة: «34,330 ج.م» بتتقرا في
|
|
572
|
+
العربي من اليمين — الرقم يمين والرمز شماله. و`ltr` كان بيحطّ الرقم
|
|
573
|
+
شمال والرمز يمينه، فتُقرأ «ج.م ثم 34,330» زي «$34,330» الإنجليزية.
|
|
574
|
+
|
|
575
|
+
والرقم الخالص مابيفرقش معاه اتجاه العنصر — خانة واحدة بتتعرض LTR
|
|
576
|
+
في الحالتين. اللي بيحتاج `ltr` فعلاً هو النصّ المركّب اللي فيه أكتر
|
|
577
|
+
من مقطع: تليفون، ورمز تخزيني، ورقم طلب — ودول مكتوب عليهم
|
|
578
|
+
`dir="ltr"` صراحةً في مكانهم أصلاً.
|
|
579
|
+
|
|
580
|
+
وبيفضل على الحقول، لأن اتجاه الحقل بيحكم حركة علامة الإدخال وهي
|
|
581
|
+
بتكتب أرقام — ومش مسألة عرض. */
|
|
582
|
+
[data-num] {
|
|
583
|
+
unicode-bidi: isolate;
|
|
584
|
+
font-variant-numeric: tabular-nums;
|
|
585
|
+
text-align: var(--num-align);
|
|
586
|
+
}
|
|
587
|
+
|
|
588
|
+
input[data-num],
|
|
589
|
+
textarea[data-num] {
|
|
590
|
+
direction: ltr;
|
|
591
|
+
}
|
|
592
|
+
|
|
593
|
+
/* ── سهم حقل الرقم ────────────────────────────────────────────────────
|
|
594
|
+
تحكّم المتصفّح الأصلي مقفول في كل حقل `type="number"`.
|
|
595
|
+
|
|
596
|
+
مش تجميل — تلات أسباب:
|
|
597
|
+
|
|
598
|
+
١. **بيصطدم باللاحقة.** الحقل بلاحقة («ج.م») بيحجز مساحة في
|
|
599
|
+
نهايته بـ`pe-14`، والسهم بيتحطّ في نفس المكان من غير ما يعرف
|
|
600
|
+
إن فيه حاجة هناك. الاتنين بيتراكبوا.
|
|
601
|
+
|
|
602
|
+
٢. **موضعه بيتلخبط مع `[data-num]`.** الحقل جوّه صفحة عربية
|
|
603
|
+
والرقم `direction: ltr` — فالسهم بيتحطّ ناحية والقيمة ناحية،
|
|
604
|
+
والنتيجة سهم في نصّ الحقل زي ما في اللقطة.
|
|
605
|
+
|
|
606
|
+
٣. **مقاسه من نظام التشغيل.** ١٥ بكسل تقريباً وبيتغيّر بين
|
|
607
|
+
المتصفّحات، ومستحيل يعدّي حدّ الهدف اللمسي (٢٤ بكسل).
|
|
608
|
+
|
|
609
|
+
اللي عايز يزوّد وينقّص بزرار بيحطّ زرارين ظاهرين — دي عناصر
|
|
610
|
+
التحكّم بتاعتنا وليها حجم ومسافة مقروءين، مش أسهم النظام. */
|
|
611
|
+
input[type='number'] {
|
|
612
|
+
appearance: textfield;
|
|
613
|
+
-moz-appearance: textfield;
|
|
614
|
+
}
|
|
615
|
+
|
|
616
|
+
|
|
617
|
+
input[type='number']::-webkit-outer-spin-button,
|
|
618
|
+
input[type='number']::-webkit-inner-spin-button {
|
|
619
|
+
appearance: none;
|
|
620
|
+
-webkit-appearance: none;
|
|
621
|
+
margin: 0;
|
|
622
|
+
}
|
|
623
|
+
|
|
624
|
+
@media (prefers-reduced-motion: reduce) {
|
|
625
|
+
*,
|
|
626
|
+
*::before,
|
|
627
|
+
*::after {
|
|
628
|
+
animation-duration: 0.01ms !important;
|
|
629
|
+
transition-duration: 0.01ms !important;
|
|
630
|
+
}
|
|
631
|
+
}
|
|
632
|
+
}
|
|
633
|
+
|
|
634
|
+
/* ── الرقم بلاحقة ────────────────────────────────────────────────────────
|
|
635
|
+
الرقم لوحده بيتحاذى ناحية بداية الصفحة (`--num-align`) — ده صح في عمود
|
|
636
|
+
جدول: كل الأرقام بتصطفّ تحت بعضها فالمقارنة بينها بنظرة.
|
|
637
|
+
|
|
638
|
+
لكن الحقل اللي ليه لاحقة («ج.م») مختلف: اللاحقة عنصر مطلق في **نهاية**
|
|
639
|
+
الحقل، والرقم في **بدايته** — فبينهم عرض الحقل كله. النتيجة إنك تقرا
|
|
640
|
+
«٠» وتقطع ٣٩٠ بكسل عشان تلاقي «ج.م».
|
|
641
|
+
|
|
642
|
+
هنا الرقم بيتحاذى ناحية اللاحقة فيلزق فيها، والوحدة بتبقى على شماله في
|
|
643
|
+
العربي — «١٢٥٠ ج.م» زي ما بتتكتب.
|
|
644
|
+
|
|
645
|
+
── وليه بره `@layer base` ────────────────────────────────────────────
|
|
646
|
+
الطبقات بتكسب على التخصيص: أي كلاس utility من Tailwind بيغلب أي قاعدة
|
|
647
|
+
في `base` مهما كان تخصيصها. والحقل عليه `pe-14`، فالقاعدة دي لازم تبقى
|
|
648
|
+
بعد الطبقات عشان تكسبه. */
|
|
649
|
+
[data-num][data-suffix] {
|
|
650
|
+
text-align: var(--num-align-far);
|
|
651
|
+
padding-right: var(--num-pad-right);
|
|
652
|
+
padding-left: var(--num-pad-left);
|
|
653
|
+
}
|
|
654
|
+
|
|
655
|
+
[data-num][data-icon] {
|
|
656
|
+
padding-right: var(--num-icon-pad-right);
|
|
657
|
+
padding-left: var(--num-icon-pad-left);
|
|
658
|
+
}
|