/**
 * tokens.css — لایه‌ی canonical توکن‌های بصری «سامانه مدیریت مطب»
 *
 * طراح: طاها خیراندیش | kookeno.com
 * مرجع: docs/05_Design_System_CSS.md (بخش‌های ۲ تا ۷)
 * ساخته‌شده در: STEP 211 (نسخه ۲.۵۹.۰)
 *
 * ═══════════════════════════════════════════════════════════════════════
 * قانون این فایل در فاز فعلی
 * ═══════════════════════════════════════════════════════════════════════
 *
 * ۱. همه‌ی مقادیر «مقدار امروز»اند، نه مقدار آرمانی سند. هدف این فایل در
 *    STEP 211 فقط «خانه‌دار کردن» است: یک خانه‌ی canonical برای توکن‌ها
 *    ساخته می‌شود تا موج‌های بعدی جایی برای مهاجرت داشته باشند.
 *
 * ۲. این فایل **اولین** وابستگی زنجیره است (قبل از admin.css و booking-front.css).
 *    یعنی هر تعریف تکراری در فایل‌های بعدی (colors-v2.css، spacing-grid.css،
 *    typography-v2.css، admin.css، patient-portal.css و تزریق inline تم‌ساز)
 *    **برنده می‌مانَد**. این عمدی است و تضمین می‌کند خروجی computed-style
 *    ذره‌ای عوض نشود. حذف تعریف‌های تکراری کار موج‌های بعدی است.
 *
 * ۳. تنها اثر زنده‌ی این فایل، تعریف ۲۶ متغیری است که امروز مصرف می‌شوند ولی
 *    هیچ‌جا تعریف نشده‌اند و فقط به‌خاطر fallback داخل var() کار می‌کنند
 *    (شکننده‌ترین نقطه‌ی سیستم — درس هاتفیکس ۱.۹.۱). هرکدام **دقیقا** با
 *    همان مقدار fallback امروزشان تعریف شده‌اند ⇒ خروجی یکسان.
 *    این موارد با نشان «SAFE» علامت خورده‌اند.
 *
 * ۴. ۹ متغیر دیگر که fallbackهای **متعارض** دارند عمدا تعریف نشده‌اند، چون
 *    هر مقداری انتخاب شود، دست‌کم یکی از محل‌های مصرف عوض می‌شود. فهرست کامل
 *    در docs/progress/step-211-design-system-tokens.md بخش «تعارض fallback».
 *
 * ۵. این فایل صفر اعلان اجباری (important) و صفر خاصیت فیزیکی (left/right) دارد.
 */

:root {

	/* ═══════════════════════════════════════════════════════════════════
	 * ۲. رنگ
	 * ═══════════════════════════════════════════════════════════════════ */

	/* ── ۲٫۳ رنگ‌های مقدس (قانون رنگ STEP 109 — مقدارشان هرگز عوض نمی‌شود) ── */
	--clinic-brand-purple: #4B2E83; /* بنفش برند   */
	--clinic-brand-lilac:  #F3E8FF; /* یاسی روشن   */
	--clinic-brand-green:  #22A06B; /* سبز موفقیت  */
	--clinic-brand-white:  #FFFFFF; /* سفید        */
	--clinic-brand-coral:  #D98282; /* صورتی مرجانی */

	/*
	 * ── ۲٫۲ رمپ خنثی ──
	 * ⚠️ مقادیر فعلی = همان خانواده‌ی خاکستری موجود در colors-v2.css (که ریشه‌ی
	 * Tailwind دارد و طبق سند «خارج از پالت مستند پروژه» است). طبق سند، این رمپ
	 * باید از فام برند با اشباع بسیار پایین **تولید** شود (OKLCH، بدون کتابخانه).
	 * تا آن زمان این نام‌ها فقط «مقصد نام‌گذاری» برای موج بعدی‌اند و هیچ‌جا مصرف
	 * نمی‌شوند ⇒ صفر اثر بصری.
	 */
	--clinic-neutral-50:  #F9FAFB;
	--clinic-neutral-100: #F3F4F6;
	--clinic-neutral-200: #E5E7EB;
	--clinic-neutral-300: #D1D5DB;
	--clinic-neutral-400: #9CA3AF;
	--clinic-neutral-500: #6B7280;
	--clinic-neutral-600: #4B5563;
	--clinic-neutral-700: #374151;
	--clinic-neutral-800: #1F2937;
	--clinic-neutral-900: #111827;

	/*
	 * ── ۲٫۴ نگاشت معنایی ──
	 * این نام‌ها امروز در admin.css / colors-v2.css / تزریق تم‌ساز هم تعریف
	 * شده‌اند و آن‌ها (که بعدتر بار می‌شوند) برنده‌اند. مقادیر زیر آینه‌ی دقیق
	 * همان‌هاست تا اگر روزی تعریف تکراری حذف شد، چیزی نشکند.
	 */
	--clinic-primary:   #4B2E83;
	--clinic-bg:        #FFFFFF;
	--clinic-bg-light:  #F3E8FF;
	--clinic-success:   #22A06B;
	--clinic-warning:   #D98282;
	--clinic-text:      #2B2240;
	--clinic-muted:     #6b6480;
	--clinic-border:    #ece7f4;

	/*
	 * ── SAFE: متغیرهای رنگی که امروز مصرف می‌شوند ولی تعریف‌نشده‌اند ──
	 * مقدار = دقیقا همان fallback یکسانِ همه‌ی محل‌های مصرف.
	 */
	--clinic-soft:           #F3E8FF; /* SAFE · ۴ مصرف  · fallback: #F3E8FF */
	--clinic-primary-050:    #F3E8FF; /* SAFE · ۲ مصرف  · fallback: #F3E8FF */
	--clinic-line:           #ccc;    /* SAFE · ۲ مصرف  · fallback: #ccc    */
	--clinic-bg-soft:        #f5f5f5; /* SAFE · ۱ مصرف  · fallback: #f5f5f5 */
	--clinic-card-hover:     #f3e8ff; /* SAFE · ۱ مصرف  · fallback: #f3e8ff */
	--clinic-muted-on-dark:  #d8d2e6; /* SAFE · ۱ مصرف  · fallback: #d8d2e6 */
	--clinic-success-soft:   #dff5ea; /* SAFE · ۱ مصرف  · fallback: #dff5ea */
	--clinic-warn-strong:    #B26A00; /* SAFE · ۱ مصرف  · fallback: #B26A00 */

	/*
	 * ── STEP 234: دو توکنِ گمشده‌ی جعبه‌ی هشدار ──
	 *
	 * `.clinic-notice--warning` از `var(--clinic-warning-50, --clinic-bg-light)`
	 * پس‌زمینه می‌گرفت و متنش را روی **خودِ** `--clinic-warning` (#D98282)
	 * می‌گذاشت. آن توکن هرگز تعریف نشده بود، پس در عمل کورالِ روشن روی یاسیِ
	 * روشن می‌نشست: کنتراست حدود ۲:۱، بسیار زیرِ گیتِ ۴٫۵:۱ سندِ
	 * `COLOR_CONTRAST_RULE`. کورالِ برند دست‌نخورده می‌مانَد و فقط نقشش از
	 * «رنگِ متن» به «نوارِ کناری» تغییر می‌کند — همان الگوی STEP 187.
	 */
	--clinic-warning-50:   #fdf2f2; /* پس‌زمینه‌ی جعبه‌ی هشدار */
	--clinic-warning-ink:  #7A2727; /* متن روی آن پس‌زمینه · اندازه‌گیریِ CDP: ۹٫۴۳:۱ */

	/*
	 * ── STEP 214: هفت متغیرِ دارای fallbackِ متعارض ──
	 *
	 * STEP 211 این‌ها را عمدا تعریف نکرد چون محل‌های مصرف، fallbackهای متفاوتی
	 * داشتند و انتخابِ یک مقدار بدون تحلیل، ظاهر را تکان می‌داد. حالا هرکدام با
	 * جدول کامل (مسیر:خط، سلکتور، زنده/مرده، نقش معنایی) بررسی و مقدارش انتخاب شد.
	 * جزئیات و دلیل هر انتخاب: docs/progress/step-214-token-conflicts.md
	 *
	 * قاعده انتخاب به ترتیب: پالت مستند ← بیشترین محل مصرف ← بهترین کنتراست.
	 * استثنای مستند: هرجا «بیشترین مصرف» با قانون کنتراست ۴٫۵:۱ تعارض داشت،
	 * قانون کنتراست برنده شد (گیت سخت بند ۲٫۴).
	 */
	/*
	 * STEP 218 — پذیرش رسمی رمپ خنثی.
	 *
	 * رمپ `--clinic-neutral-*` تعریف شده بود ولی **صفر مصرف‌کننده** داشت، چون همه
	 * جای کد از توکن معنایی با fallback استفاده می‌کرد. به‌جای بازنویسی صدها
	 * fallbackِ هرگز-اجرانشده، توکن معنایی از خودِ رمپ مشتق می‌شود. مقدار دقیقا
	 * همان است (`--clinic-neutral-500` = `#6B7280`) پس صفر اختلاف بصری، ولی از
	 * این پس رمپ منبع واقعی است و تغییر یک گام، همه مصرف‌کننده‌ها را می‌برد.
	 */
	--clinic-text-muted:  var( --clinic-neutral-500 ); /* متن کم‌رنگ · ۲۲ مصرف */
	--clinic-crm-on-hero: #FFFFFF; /* متن روی هدر بنفش پرونده · ۱۶ مصرف · #fff و #FFFFFF یکی شدند (فقط نگارشی) */
	--clinic-surface:     #FFFFFF; /* سطح کارت · ۱۳ مصرف · ۱۱ زنده با #fff؛ ۲ مصرف تیره مرده بود و حذف شد */
	--clinic-crm-muted:   #6b6480; /* متن کم‌رنگ پرونده · ۶ مصرف با ۵ مقدار متفاوت · = --clinic-muted پروژه */
	--clinic-crm-line:    #ddd;    /* خط جداکننده پرونده · ۳ مصرف · تساوی ⇒ بیشترین کنتراست */
	--clinic-danger:      #B42318; /* قرمز خطا · ۲ مصرف · تساوی ⇒ بیشترین کنتراست */
	--clinic-radius:      15px;    /* شعاع مودال · ۳ مصرف · ۲ با همین مقدار (اکثریت) */

	/*
	 * ═══ STEP 217 موج ۰ — توکن‌های تازه برای مهاجرت موج‌های بعد ═══
	 *
	 * این‌ها از جدول نگاشت فاز ۰ آمده‌اند: مقادیر خامی که در کد تکرار می‌شوند ولی
	 * هیچ توکن معادلی نداشتند. نام‌ها **معنایی**اند نه رنگی (طبق قانون سند).
	 *
	 * ⚠️ در موج ۰ فقط **تعریف** می‌شوند و هیچ مصرف‌کننده‌ای عوض نمی‌شود ⇒ صفر تغییر
	 * بصری. مصرفشان کار موج ۱ است.
	 *
	 * کنتراست هر کدام روی پس‌زمینه‌های واقعی محصول از پیش محاسبه شد
	 * (tools/design-system/contrast.mjs --table). مقدار روبه‌روی هر توکن نشان
	 * می‌دهد روی چه پس‌زمینه‌ای مجاز است **متن** باشد.
	 */
	--clinic-text-soft:    #5b6270; /* متن کمکی روشن‌تر · ۲۰ مصرف · متن مجاز روی سفید ۶٫۱۳ · یاسی ۵٫۲ · خاکستری ۵٫۵۷ */
	--clinic-ink-slate:    #2b2f36; /* متن تیره نوار ابزار چاپ · ۱۹ مصرف · سفید ۱۳٫۴۴ · یاسی ۱۱٫۳۹ */
	--clinic-border-soft:  #ece8f5; /* حاشیه بسیار کم‌رنگ · ۱۴ مصرف · فقط حاشیه و سطح، هرگز متن */
	--clinic-danger-soft:  #b45454; /* قرمز ملایم · ۱۲ مصرف · متن فقط روی سفید (۴٫۸۴)، روی یاسی مجاز نیست (۴٫۱) */
	--clinic-neutral-line: #e2e2e2; /* خط خنثی · ۱۲ مصرف · فقط حاشیه، هرگز متن */
	--clinic-success-ink:  #06281b; /* متن روی سبز · ۵ مصرف · سبز ۴٫۷۵ · سفید ۱۵٫۸۲ */

	/*
	 * ── STEP 225: نشان «وضعیت حیات» (بیمار فوت‌شده) ──
	 *
	 * جفت رنگ **نقش‌محور** نه رنگ‌محور، طبق قرارداد STEP 223-B. عمدا از رمپ
	 * خنثی مستند ساخته شده و نه از پالت برند: صورتی مرجانی #D98282 در این
	 * پروژه معنای «هشدار بالینی» دارد و استفاده از آن برای وضعیت حیات، معنای
	 * رنگ را در کل رابط مبهم می‌کند.
	 *
	 * پس‌زمینه و متن **کنار هم** تعریف می‌شوند تا هیچ مصرف‌کننده‌ای نتواند یکی
	 * را بدون دیگری بردارد (قاعده ۷ اصول فنی). کنتراست اندازه‌گیری‌شده:
	 *   متن روی پس‌زمینه نشان (#374151 روی #E5E7EB) = ۸٫۵۹:۱
	 *   همان متن روی سفید                           = ۱۰٫۳۱:۱
	 *   همان متن روی یاسی #F3E8FF (ردیف hover فهرست) = ۹٫۱۳:۱
	 * هر سه بالاتر از گیت ۴٫۵ ⇒ در هر سه حالت عادی/hover/active خوانا.
	 */
	--clinic-deceased-bg:  var( --clinic-neutral-200 ); /* #E5E7EB */
	--clinic-deceased-ink: var( --clinic-neutral-700 ); /* #374151 */

	/*
	 * ── SAFE: حالت active دکمه‌ها (STEP 66) ──
	 * عمدا به‌صورت ارجاع به توکن hover نوشته شده‌اند، نه مقدار ثابت، چون این
	 * توکن‌ها را تم‌ساز به‌صورت پویا از رنگ انتخابی کاربر می‌سازد. مقدار ثابت،
	 * تم‌پذیری را می‌شکست.
	 */
	--clinic-btn-primary-active-bg:     var(--clinic-btn-primary-hover-bg);
	--clinic-btn-primary-active-text:   var(--clinic-btn-primary-hover-text, #fff);
	--clinic-btn-secondary-active-bg:   var(--clinic-btn-secondary-hover-bg);
	--clinic-btn-secondary-active-text: var(--clinic-btn-secondary-hover-text, #fff);
	--clinic-btn-success-active-bg:     var(--clinic-btn-success-hover-bg);
	--clinic-btn-success-active-text:   var(--clinic-btn-success-hover-text, #fff);
	--clinic-btn-danger-active-bg:      var(--clinic-btn-danger-hover-bg);
	--clinic-btn-danger-active-text:    var(--clinic-btn-danger-hover-text, #fff);
	--clinic-btn-ghost-active-bg:       var(--clinic-btn-ghost-hover-bg);
	--clinic-btn-ghost-active-text:     var(--clinic-btn-ghost-hover-text, #fff);


	/* ═══════════════════════════════════════════════════════════════════
	 * ۳. فاصله — مقیاس ۲ پیکسلی (تصمیم مستند سند، بخش ۳)
	 * نام‌های تازه‌اند و امروز هیچ مصرفی ندارند ⇒ صفر اثر بصری.
	 * ═══════════════════════════════════════════════════════════════════ */
	--clinic-space-1:   2px;  /* جابه‌جایی ریز        */
	--clinic-space-2:   4px;  /* فاصله‌ی آیکون تا متن */
	--clinic-space-3:   6px;  /* فاصله‌ی داخل چیپ     */
	--clinic-space-4:   8px;  /* فاصله‌ی استاندارد کوچک */
	--clinic-space-5:  10px;  /* پدینگ افقی فیلد     */
	--clinic-space-6:  12px;  /* پدینگ عمودی دکمه    */
	--clinic-space-7:  14px;  /* پدینگ فیلد          */
	--clinic-space-8:  16px;  /* پدینگ استاندارد     */
	--clinic-space-9:  18px;
	--clinic-space-10: 20px;
	--clinic-space-12: 24px;  /* پدینگ کارت          */
	--clinic-space-16: 32px;  /* فاصله‌ی بین گروه‌ها  */
	--clinic-space-20: 40px;  /* فاصله‌ی بین سکشن‌ها  */
	--clinic-space-24: 48px;
	--clinic-space-32: 64px;

	/* SAFE — عرض ستون فرم رزرو (۲ مصرف · fallback: 320px) */
	--clinic-bw-col: 320px;
	/* SAFE — تعداد ستون ردیف (۱ مصرف · fallback: 3) */
	--clinic-row-cols: 3;


	/* ═══════════════════════════════════════════════════════════════════
	 * ۴. شعاع
	 * ═══════════════════════════════════════════════════════════════════
	 *
	 * ⚠️ انحراف عمدی از جدول هدف سند (بخش ۴): مقادیر زیر «مقدار امروز»اند.
	 * دو مورد md و lg امروز واقعا مصرف می‌شوند (۱۹ اعلان) و مقدارشان از
	 * fallback فعلی می‌آید (۱۲px و ۱۴px)؛ نگاشتشان به مقیاس هدف سند
	 * (۱۰px و ۱۲px) خروجی را عوض می‌کرد و قانون مطلق این STEP را می‌شکست.
	 * همچنین pill امروز در admin.css برابر 10px است نه 999px.
	 * هم‌سان‌سازی با مقیاس هدف، کار موج بعدی است.
	 */
	--clinic-radius-2xs:    2px;    /* = --radius-xs امروز    */
	--clinic-radius-xs:     4px;    /* = --radius-sm امروز    */
	--clinic-radius-sm:     8px;    /* = --radius-md امروز    */
	--clinic-radius-md:    12px;    /* SAFE · ۱۸ مصرف · fallback: 12px */
	--clinic-radius-lg:    14px;    /* SAFE · ۱ مصرف  · fallback: 14px */
	--clinic-radius-xl:    16px;    /* = --radius-xl امروز    */
	--clinic-radius-2xl:   20px;    /* = --radius-2xl امروز   */

	/*
	 * STEP 223-B — شعاع **نقش داده** (نوار پیشرفت، چیپ وضعیت، اسکلت بارگذاری).
	 *
	 * قرارداد نقش STEP 221: «داده: کوچک، هرگز pill». پیش از این هر پنج مصرف‌کننده
	 * از `--clinic-radius-pill` می‌خواندند، یعنی داده و کنش یک مقیاس داشتند.
	 *
	 * دو توکن، نه یکی — با دلیل هندسی اندازه‌گیری‌شده: مرورگر شعاع را به **نصف
	 * کوچک‌ترین ضلع** محدود می‌کند. نوار پیشرفت ۱۰px ارتفاع دارد، پس ۸px روی آن
	 * به ۵px بریده می‌شود و عملا کپسول دیده می‌شود — یعنی مقدار از مقیاس بسته
	 * می‌آمد ولی نتیجه بصری همان pill بود. برای همین نوار نازک ۴px می‌گیرد تا
	 * تفاوت واقعا دیده شود، و چیپ متنی (ارتفاع ~۲۶px) ۸px مقدار مستند موکاپ.
	 */
	--clinic-radius-data:     var( --clinic-radius-sm );  /* چیپ وضعیت، اسکلت */
	--clinic-radius-data-bar: var( --clinic-radius-xs );  /* نوار نازک پیشرفت */
	/*
	 * STEP 215-B — شعاع pill به مقدار سند برگشت.
	 *
	 * تشخیص STEP 214: مقدار ۱۰px یک «رگرسیون خاموش» بود، نه تصمیم. شاهدش این است
	 * که ۶۰ محل مصرف، fallback ‏۹۹۹px نوشته‌اند — کسی در ۶۰ نقطه fallback «کاملا
	 * گرد» نمی‌نویسد مگر اینکه انتظار pill داشته باشد. ولی چون متغیر همیشه تعریف
	 * شده بود، آن fallback هرگز اجرا نمی‌شد و خروجی همه‌جا ۱۰px می‌ماند.
	 *
	 * ایمنی: مرورگر شعاع را به نصف کوچک‌ترین ضلع محدود می‌کند. اندازه‌گیری CDP روی
	 * همه مصرف‌کننده‌ها نشان داد بلندترینشان ۴۹px است ⇒ ۹۹۹px حداکثر به ۲۵px تبدیل
	 * می‌شود و هیچ عنصری بدشکل نمی‌شود. صفر استثنا لازم شد.
	 * جزئیات: docs/progress/step-215b-design.md
	 */
	/*
	 * ═══ STEP 219 کامپوننت ۲ — توکن واریانت دکمه ═══
	 *
	 * `hero-btn` و `paction` دکمه تکراری نبودند، **واریانت اندازه** بودند. برای
	 * ثبت رسمی‌شان در سیستم، مقدارهای هاردکدشان توکن می‌شوند. سه مقدار روی مقیاس
	 * موجود نمی‌نشینند (۱۳px · ۱۰px · ۶px) و **گرد کردن ممنوع است**، پس توکن
	 * معنایی مخصوص خودشان تعریف شد. مقدار عینا همان امروز ⇒ صفر اختلاف بصری.
	 */
	/*
	 * ═══ STEP 220 — توکن دکمه طبق موکاپ ═══
	 *
	 * موکاپ برای دکمه `font-size: var(--clinic-fs-sm)` می‌گوید و در موکاپ آن توکن
	 * ۱۳px است، ولی در محصول ۱۲px است و alias قدیمی `--fs-xs` هم به همان اشاره
	 * می‌کند (۱۱ محل مصرف). تغییر مقیاس سراسری، ۱۱ نقطه بی‌ربط را تکان می‌داد،
	 * پس توکن اختصاصی دکمه تعریف شد که **مقدار رندرشده موکاپ** را می‌دهد.
	 * ناهم‌ترازی خودِ مقیاس در فهرست استثنا ثبت شد.
	 */
	--clinic-btn-fs:          13px;  /* اندازه فونت دکمه — مقدار رندرشده موکاپ */
	/*
	 * STEP 221 قاعده ۶ کارفرما — کف ارتفاع دکمه.
	 *
	 * 🔴 تعارض ثبت‌شده: موکاپ ۴۰px می‌گوید و STEP 219 هدف لمسی موبایل را عمدا
	 * بالا برد. کارفرما ۲۰px خواسته. چون این یک **کف** است و ارتفاع طبیعی دکمه
	 * (پدینگ ۸+۸ به‌علاوه ارتفاع خط) حدود ۳۴px است، ۲۰px روی دسکتاپ اثر بصری
	 * ندارد و فقط قید را برمی‌دارد. هدف لمسی روی عرض حداکثر ۷۶۸ جدا حفظ می‌شود.
	 */
	--clinic-btn-min-h:       20px;
	--clinic-btn-hero-fs:     13px;  /* دکمه هدر پرونده — بین fs-sm و fs-md */
	--clinic-btn-hero-radius: var( --clinic-radius-pill );  /* STEP 221 نقش کنش: هر دکمه pill (عیب د۲) */
	--clinic-btn-xs-radius:   var( --clinic-radius-pill );  /* STEP 221 نقش کنش: دکمه ریز هم pill (عیب د۱) */

	--clinic-radius-pill:  999px;   /* سند بخش ۴: دکمه pill — **تنها منبع pill** */
	/* STEP 223-B — `--clinic-radius-full` دیگر مقدارِ مستقلِ 9999px نیست بلکه از
	 * pill مشتق می‌شود. دو مقدارِ 999px و 9999px بصری یکی بودند (مرورگر شعاع را
	 * به نصفِ کوچک‌ترین ضلع محدود می‌کند) ولی «دو مقیاسِ موازی» می‌ساختند: بج‌ها
	 * از full و دکمه‌ها از pill می‌خواندند، پس تغییرِ یکی دیگری را جا می‌گذاشت. */
	--clinic-radius-full: var( --clinic-radius-pill );
	--clinic-radius-circle: 50%;


	/* ═══════════════════════════════════════════════════════════════════
	 * ۵. سایه — نقشه‌ی معنایی عمق
	 * همه‌ی این نام‌ها در colors-v2.css هم تعریف شده‌اند و آن برنده است؛
	 * مقادیر زیر آینه‌ی دقیق همان‌هاست.
	 * ═══════════════════════════════════════════════════════════════════ */
	--clinic-elev-flat:    var(--clinic-elev-1);
	--clinic-elev-rest:    var(--clinic-elev-2);
	--clinic-elev-hover:   var(--clinic-elev-3);
	--clinic-elev-overlay: var(--clinic-elev-5);
	/* تازه — سند برای مودال توکن جدا می‌خواهد؛ امروز مصرفی ندارد. */
	--clinic-elev-modal:   var(--clinic-elev-5);


	/* ═══════════════════════════════════════════════════════════════════
	 * ۶. حرکت
	 * هر چهار مدت و هر دو منحنی تازه‌اند و امروز هیچ مصرفی ندارند ⇒ صفر اثر.
	 * ⚠️ قاعده‌ی prefers-reduced-motion عمدا در این STEP اضافه نشده، چون رفتار
	 * را عوض می‌کند و قانون مطلق «صفر تغییر» را می‌شکند. موکول به موج بعدی.
	 * ═══════════════════════════════════════════════════════════════════ */
	--clinic-ease-standard:   cubic-bezier(0.4, 0, 0.2, 1);
	--clinic-ease-emphasized: cubic-bezier(0.2, 0, 0, 1);
	--clinic-motion-micro: 150ms; /* hover، focus، تغییر رنگ */
	--clinic-motion-base:  200ms; /* باز و بسته شدن          */
	--clinic-motion-enter: 300ms; /* ورود مودال              */
	--clinic-motion-exit:  200ms; /* خروج                    */


	/* ═══════════════════════════════════════════════════════════════════
	 * ۷. تایپوگرافی
	 * ═══════════════════════════════════════════════════════════════════ */

	/* ── مقیاس اندازه (فاز الف سند: استخراج‌شده از مصرف واقعی کد) ── */
	--clinic-fs-2xs: 10px;
	--clinic-fs-xs:  11px;
	--clinic-fs-sm:  12px;
	--clinic-fs-md:  14px;
	--clinic-fs-lg:  15px;
	--clinic-fs-xl:  16px;
	--clinic-fs-2xl: 18px;
	--clinic-fs-3xl: 20px;
	--clinic-fs-4xl: 22px;
	/* پله‌های بالاتر — میزبان مقیاس قدیمی --fs-2xl تا --fs-5xl */
	--clinic-fs-5xl: 24px;
	--clinic-fs-6xl: 28px;
	--clinic-fs-7xl: 32px;
	--clinic-fs-8xl: 36px;

	/*
	 * ── SAFE: توکن‌های اندازه‌ی متن که تم‌ساز کنترلشان می‌کند (STEP 112-F) ──
	 * تم‌ساز این‌ها را در هر بارگذاری emit می‌کند و چون بعدتر می‌آید برنده است
	 * (base=14 · h1=26 · h2=22 · h3=18 · h4=16). مقادیر زیر دقیقا برابر
	 * fallback امروزشان است تا در نبود تزریق تم‌ساز هم چیزی عوض نشود.
	 * ⚠️ --clinic-fs-h3 عمدا تعریف نشده: fallback متعارض دارد (17px | var(--fs-3xl)).
	 */
	--clinic-fs-base: var(--fs-md);  /* SAFE · عینا همان fallback امروز (= 16px) */
	--clinic-fs-h1:   var(--fs-5xl); /* SAFE · عینا همان fallback امروز (= 36px) */
	--clinic-fs-h2:   var(--fs-4xl); /* SAFE · عینا همان fallback امروز (= 32px) */
	--clinic-fs-h4:   var(--fs-2xl); /* SAFE · عینا همان fallback امروز (= 24px) */

	/* ── وزن ── */
	--clinic-fw-light:      300;
	--clinic-fw-normal:     400;
	--clinic-fw-medium:     500;
	--clinic-fw-semibold:   600;
	--clinic-fw-bold:       700;
	--clinic-fw-extrabold:  800;

	/*
	 * ── ارتفاع خط ──
	 * مقادیر امروز مقیاس --lh-* (که در typography-v2.css تعریف شده) عینا
	 * آینه شده‌اند. مقیاس هدف سند (۱ / ۱٫۳ / ۱٫۵ / ۱٫۷ / ۱٫۸۵) با این‌ها
	 * یکی نیست و هم‌سان‌سازی‌اش کار موج بعدی است.
	 */
	--clinic-lh-none:    1;
	--clinic-lh-tight:   1.25;
	--clinic-lh-snug:    1.375;
	--clinic-lh-normal:  1.5;
	--clinic-lh-relaxed: 1.625;
	--clinic-lh-loose:   2;

	/*
	 * ── فاصله‌ی حروف ──
	 * ⚠️ مقادیر امروز عینا حفظ شده‌اند. سند حکم می‌دهد letter-spacing روی متن
	 * فارسی باید صفر باشد (مقدار مثبت اتصال حروف را می‌شکند)، ولی صفرکردن
	 * این توکن‌ها خروجی را عوض می‌کند و در این STEP ممنوع است. موکول به موج
	 * تایپوگرافی، همراه با ۱۳ نقض مستقیم در فایل‌های دیگر.
	 */
	--clinic-ls-tighter: -0.05em;
	--clinic-ls-tight:   -0.025em;
	--clinic-ls-normal:  0;
	--clinic-ls-wide:    0.025em;
	--clinic-ls-wider:   0.05em;


	/* ═══════════════════════════════════════════════════════════════════
	 * alias های منسوخ — نام‌فضاهای موازی
	 * ═══════════════════════════════════════════════════════════════════
	 *
	 * پروژه امروز چهار نام‌فضای موازی دارد. هرکدام به توکن canonical
	 * **هم‌ارزش امروزش** نگاشت شده تا حتی اگر تعریف اصلی حذف شود، مقدار
	 * محاسبه‌شده عوض نشود. همه‌ی این نام‌ها در فایل‌های بعدی هم تعریف
	 * شده‌اند (spacing-grid.css · typography-v2.css · patient-portal.css)
	 * و آن‌ها برنده‌اند ⇒ این بلوک امروز کاملا خنثی است.
	 */

	/* منسوخ، در موج ۲ حذف می‌شود — نام‌فضای --radius-* (spacing-grid.css) */
	--radius-xs:   var(--clinic-radius-2xs);   /* 2px    */
	--radius-sm:   var(--clinic-radius-xs);    /* 4px    */
	--radius-md:   var(--clinic-radius-sm);    /* 8px    */
	--radius-lg:   var(--clinic-radius-md);    /* 12px   */
	--radius-xl:   var(--clinic-radius-xl);    /* 16px   */
	--radius-2xl:  var(--clinic-radius-2xl);   /* 20px   */
	--radius-full: var(--clinic-radius-full);  /* = --clinic-radius-pill (STEP 223-B) */

	/* منسوخ، در موج ۲ حذف می‌شود — نام‌فضای --cp-* (patient-portal.css) */
	--cp-radius: var(--clinic-border-radius, 16px);

	/* منسوخ، در موج ۲ حذف می‌شود — نام‌فضای --fs-* (typography-v2.css) */
	--fs-xs:  var(--clinic-fs-sm);   /* 12px */
	--fs-sm:  var(--clinic-fs-md);   /* 14px */
	--fs-md:  var(--clinic-fs-xl);   /* 16px */
	--fs-lg:  var(--clinic-fs-2xl);  /* 18px */
	--fs-xl:  var(--clinic-fs-3xl);  /* 20px */
	--fs-2xl: var(--clinic-fs-5xl);  /* 24px */
	--fs-3xl: var(--clinic-fs-6xl);  /* 28px */
	--fs-4xl: var(--clinic-fs-7xl);  /* 32px */
	--fs-5xl: var(--clinic-fs-8xl);  /* 36px */

	/* منسوخ، در موج ۲ حذف می‌شود — نام‌فضای --fw-* (typography-v2.css) */
	--fw-light:      var(--clinic-fw-light);
	--fw-normal:     var(--clinic-fw-normal);
	--fw-medium:     var(--clinic-fw-medium);
	--fw-semibold:   var(--clinic-fw-semibold);
	--fw-bold:       var(--clinic-fw-bold);
	--fw-extrabold:  var(--clinic-fw-extrabold);

	/* منسوخ، در موج ۲ حذف می‌شود — نام‌فضای --lh-* (typography-v2.css) */
	--lh-tight:   var(--clinic-lh-tight);
	--lh-snug:    var(--clinic-lh-snug);
	--lh-normal:  var(--clinic-lh-normal);
	--lh-relaxed: var(--clinic-lh-relaxed);
	--lh-loose:   var(--clinic-lh-loose);

	/* منسوخ، در موج ۲ حذف می‌شود — نام‌فضای --ls-* (typography-v2.css) */
	--ls-tighter: var(--clinic-ls-tighter);
	--ls-tight:   var(--clinic-ls-tight);
	--ls-normal:  var(--clinic-ls-normal);
	--ls-wide:    var(--clinic-ls-wide);
	--ls-wider:   var(--clinic-ls-wider);

}
