/* ==========================================================================
   MEDI — توکن‌های طراحی. تنها منبع رنگ، شکل و تایپوگرافی.

   از `base.html` روی هر صفحه بارگذاری می‌شود. هیچ stylesheet دیگری اجازه‌ی
   نوشتن رنگ خام (hex یا rgba) را ندارد؛ `tests/test_theme_tokens.py` این را
   اجبار می‌کند.

   دو لایه، و فقط دو تا:

     ۱. رَمپ   — مقدارهای واقعی. **عوض کردن تم یعنی عوض کردن همین بلوک، و
                 هیچ فایل دیگری.** هر خانواده یک نردبان مرتب از روشن به تیره
                 است؛ عددها پله‌اند، نه مقدار.
     ۲. نقش‌ها — چیزی که کد می‌گوید: سطح، جوهر، تأکید، وضعیت، خط. کد هرگز نام
                 یک رنگ را صدا نمی‌زند، فقط کارِ آن را.

   چرا نقش، و نه نام رنگ: اگر در کد بنویسی `--blue-600` و فردا تم زرد شود،
   آن توکن باید مقدار زرد بگیرد و اسمش دروغ می‌شود. `--accent` دروغ نمی‌گوید.

   کنتراست: همه‌ی جفت‌های متن/زمینه‌ی این رَمپ با WCAG سنجیده شده‌اند —
   متن ۴.۵:۱، حاشیه‌ی ورودی ۳:۱. اگر مقداری را عوض کردی، دوباره بسنج.
   ========================================================================== */

:root {

  /* ========================================================================
     ۱. رَمپ — تمام تم، در یک بلوک
     ======================================================================== */


  /* شن — خنثای گرم. زمینه‌ی همه‌چیز. */
  --sand-00: #ffffff;
  --sand-05: #fcfaf5;
  --sand-10: #f7f4ec;
  --sand-15: #f2ede1;
  --sand-20: #eeeadf;
  --sand-30: #dbd3c0;
  --sand-40: #c2b9a3;
  --sand-50: #8b8170;
  --sand-60: #6d6557;
  --sand-70: #5c554a;
  --sand-80: #403b33;
  --sand-90: #2a2721;

  /* مریم‌گلی — رنگ برند. ۶۰ پایین‌ترین پله‌ای است که روی زمینه‌ی روشن متن می‌شود. */
  --sage-05: #eef3ec;
  --sage-10: #dce7dc;
  --sage-20: #c3d6c4;
  --sage-30: #a3c0a6;
  --sage-40: #82a889;
  --sage-50: #6a9b7f;
  --sage-60: #4a7159;
  --sage-70: #3d6350;
  --sage-80: #2e4d3e;
  --sage-90: #22382d;

  /* رُس — خطا و خطر. گرم شده تا با بقیه هم‌خانواده باشد. */
  --clay-05: #fbeeec;
  --clay-20: #f0cfc9;
  --clay-40: #cf7f72;
  --clay-50: #b5544a;
  --clay-60: #973f36;
  --clay-70: #79312a;

  /* کهربا — هشدار و «هنوز نه». */
  --amber-05: #fdf5e4;
  --amber-20: #f2e0b7;
  --amber-40: #d8a63c;
  --amber-50: #a8780e;
  --amber-60: #855f0b;
  --amber-70: #664909;

  /* خاک‌رُس سوخته — نشانه‌ی ویرایشی. برچسب «fig.»، خط کوتاه کنارش، بج شمارش.
     نه وضعیت است و نه اقدام: فقط چیزی را در صفحه علامت می‌زند. اگر کهربا را
     برای این کار به‌کار می‌بردیم، هر خط تزئینی شبیه یک هشدار خوانده می‌شد. */
  --terra-05: #fbf0e8;
  --terra-20: #ecd3c0;
  --terra-50: #a8663f;   /* ۴.۱:۱ روی زمینه — فقط خط و نشانه، نه متن */
  --terra-60: #8a5230;   /* ۵.۷:۱ روی زمینه — این یکی متن می‌شود */

  /* آسمان — فقط اطلاع‌رسانی. هرگز اقدام؛ برند دیگر سبز است. */
  --sky-05: #eef3f8;
  --sky-20: #cfdcea;
  --sky-40: #7c9fbf;
  --sky-50: #57809f;
  --sky-60: #3f6383;
  --sky-70: #2d4a63;

  /* آلو — فقط وضعیت «تأخیری» در گراف سناریو. */
  --plum-05: #f4eff7;
  --plum-40: #a886bd;
  --plum-50: #82609b;
  --plum-60: #644878;

  /* شب — سورمه‌ایِ زمینه‌ی کنسول و جوهرِ روی شیشه (DECISIONS، صدونودوششم). نه
     وضعیت است و نه اقدام: سطح و جوهر است، مثل شن. سنجیده با WCAG: ۶۰ و ۷۰ و ۸۰
     روی شن متن می‌شوند (۱۰٫۴، ۱۳٫۱ و ۱۵٫۳ به ۱)؛ ۰۵ و ۲۰ روی ۹۰ متن می‌شوند
     (۱۵٫۵ و ۹٫۸ به ۱). **۴۰ برای متن نیست**: نه روی شن به ۴٫۵ می‌رسد و نه
     روی ۹۰. */
  --night-05: #eceff6;
  --night-20: #b7c0da;
  --night-40: #6b7ba8;
  --night-60: #2a3a70;
  --night-70: #1d2b57;
  --night-80: #152043;
  --night-90: #0e1630;

  /* رنگِ داده — دو پله‌ی پررنگ‌ترِ هم‌خانواده‌ی شب و آسمانی، فقط برای سری‌های نمودار (DECISIONS ۳۲۵). پالتِ MEDI عمداً
     کم‌رنگ است و هیچ جفتی از رَمپ‌ها از وارسیِ رنگِ نمودار (کفِ شدتِ رنگ) رد نمی‌شد؛ این جفت همه‌ی شش وارسی را گذراند. */
  --data-indigo: #4f5bd5;
  --data-teal: #1e9bc4;
  /* صدف، لاجورد و رز — میزِ یکپارچه‌ی هوش مصنوعی (DECISIONS ۳۲۶؛ مالک: «آبی صورتی یا آبی صدفی، تمیز و مدرن»). زمینه‌ی
     صدفی، لاجورد برای کار و هزینه‌ی واقعی، رز برای اعتبار و آنچه کم شد. جفتِ ۵۰ِ لاجورد و رز همه‌ی وارسی‌های
     `validate_palette.js` را روی زمینه‌ی روشن گذراند (CVD ΔE ۱۶٫۲). ۶۰ِ صدف پایین‌ترین پله‌ی متن روی سفید است. */
  --pearl-00: #ffffff;
  --pearl-05: #f5f6fb;
  --pearl-10: #eceff8;
  --pearl-20: #dfe4f1;
  --pearl-60: #5a6488;
  --azure-10: #e7ecfd;
  --azure-20: #c9d4fa;
  --azure-50: #3b5bdb;
  --azure-60: #2e48b8;
  --azure-80: #1c2a6e;
  --azure-90: #111a47;
  --rose-10: #fbe8f0;
  --rose-20: #f5c8da;
  --rose-50: #d6487e;
  --rose-60: #ad2f62;
  --azure-a10: rgba(59,91,219,0.10);
  --azure-a22: rgba(59,91,219,0.22);
  --rose-a14: rgba(214,72,126,0.14);
  --pearl-a00: rgba(245,246,251,0);
  /* یاسی و صورتیِ نرم (مالک، ۲۰۲۶-۱۰-۲۷: «پس‌زمینه … رو به یاسی یا کمی رو به صورتی»). جفتِ مخزن (۵۰ و ۴۰) در
     سنجشِ کوررنگی ΔE ۱۰٫۶ است و همیشه با برچسب کنارش می‌آید. */
  --lilac-05: #f8f6fc;
  --lilac-10: #efecfa;
  --lilac-20: #e3def4;
  --lilac-50: #8b80dc;
  --lilac-60: #6d63c9;
  --pink-40: #e48bb4;
  --lilac-a10: rgba(139,128,220,0.12);
  --lilac-a22: rgba(139,128,220,0.26);
  --pink-a14: rgba(228,139,180,0.16);
  /* زغال: صفحه‌ی دستگاهِ اکو (DECISIONS ۲۶۲). سیاهِ خنثی، نه سرمه‌ای: خاکستریِ تصویرِ صوتی روی آن رنگ نمی‌گیرد. */
  --coal-80: #1c1f23;
  --coal-90: #0c0e10;
  --coal-95: #050607;

  /* شفاف‌های روشن — روی سطح تیره. */
  --white-a90: rgba(255,255,255,0.9);
  --white-a62: rgba(255,255,255,0.62);
  --white-a22: rgba(255,255,255,0.22);
  --white-a14: rgba(255,255,255,0.14);
  --white-a08: rgba(255,255,255,0.08);
  --white-a00: rgba(255,255,255,0);

  /* شفاف‌های رنگی — «آب‌رنگ» زمینه. هرکدام همان پله‌ی رَمپ است با شفافیت،
     چون گرادیان به مقدارِ شفاف نیاز دارد و var() نمی‌تواند به یک hex شفافیت
     اضافه کند. دو سرِ هر گرادیان اینجاست: رنگ، و همان رنگ با آلفای صفر —
     وگرنه مرورگر به خاکستری میل می‌کند و لبه‌ی گرادیان کثیف می‌شود. */
  --sky-a44: rgba(207,220,234,0.44);
  --sky-a00: rgba(207,220,234,0);
  --sand-a40: rgba(238,234,223,0.40);
  --sand-a00: rgba(238,234,223,0);
  /* نوار بالا که محتوا از زیرش رد می‌شود: نه مات، نه شفاف. */
  --sand-a85: rgba(247,244,236,0.85);

  /* شفاف‌های تیره — سایه و پرده. */
  --ink-a94: rgba(42,39,33,0.94);
  --ink-a74: rgba(42,39,33,0.74);
  --ink-a44: rgba(42,39,33,0.44);
  --ink-a18: rgba(42,39,33,0.18);
  --ink-a12: rgba(42,39,33,0.12);
  --ink-a06: rgba(42,39,33,0.06);
  --ink-a00: rgba(42,39,33,0);

  /* مریم‌گلی — رنگ برند. ۶۰ پایین‌ترین پله‌ای است که روی زمینه‌ی روشن متن می‌شود. */
  --sage-a18: rgba(79,122,98,0.18);
  --sage-a12: rgba(79,122,98,0.12);
  --sage-a06: rgba(79,122,98,0.06);
  --sage-a50: rgba(79,122,98,0.50);          /* شیشه‌ی سبز: آواتارِ نوارِ کنسول */

  /* شیشه‌ی کرم — پله‌ی ۰۵ِ شن با شفافیت. شیشه‌ی نوارِ کنسول از بالا به پایین
     مات‌تر می‌شود، چون ردیفِ پایینش متنِ کم‌رنگ‌تر دارد و وقتی نوار جمع شود
     روی لبه‌ی تیره‌ی عکس می‌افتد. */
  --sand-a92: rgba(252,250,245,0.92);
  --sand-a78: rgba(252,250,245,0.78);
  --sand-a50: rgba(252,250,245,0.50);

  /* نورِ گرم — پله‌ی ۰۵ِ کهربا با شفافیت. نوری که روی عکس می‌گردد و روی شیشه
     دنبالِ نشانگر می‌آید. هشدار نیست؛ فقط گرم‌تر از سفید است. */
  --amber-a62: rgba(253,245,228,0.62);
  --amber-a00: rgba(253,245,228,0);

  /* شفاف‌های شب — غروبِ پایینِ عکس، سایه‌ی زیرِ شیشه، خطِ روی شیشه. */
  --night-a78: rgba(14,22,48,0.78);
  --night-a45: rgba(14,22,48,0.45);
  --night-a34: rgba(14,22,48,0.34);
  --night-a15: rgba(14,22,48,0.15);
  --night-a00: rgba(14,22,48,0);

  /* نورِ مانیتور و شیشه‌ی تیره — پله‌ی ۳۰ِ مریم‌گلی و پله‌ی ۰۵ِ شن با شفافیت. خطِ نوار، درخششِ دورش و شبکه‌ی
     کم‌رنگِ صفحه‌ی ساختِ موتورهای کیس؛ و لبه و تنِ شیشه‌ای که روی شب می‌نشیند (DECISIONS ۲۳۷). */
  --mint-a85: rgba(163,192,166,0.85);
  --mint-a22: rgba(163,192,166,0.22);
  --mint-a08: rgba(163,192,166,0.08);
  --sand-a28: rgba(252,250,245,0.28);
  --sand-a12: rgba(252,250,245,0.12);
  --sand-a06: rgba(252,250,245,0.06);
  /* نورِ فیلم — پله‌ی ۲۰ِ آسمانی با شفافیت: نورِ نگاتوسکوپ و نمایشگرِ اتاقِ گزارش (DECISIONS ۲۳۸). */
  --sky-a85: rgba(207,220,234,0.85);
  --sky-a22: rgba(207,220,234,0.22);
  --sky-a08: rgba(207,220,234,0.08);

  /* ========================================================================
     ۲. نقش‌ها — تنها چیزی که کد اجازه دارد صدا بزند
     ======================================================================== */

  --surface-card: var(--sand-00);            /* کارت مات، بالاترین سطح */
  --surface-raised: var(--sand-05);          /* کارت کمی گرم‌تر، ردیف دوم */
  --surface-page: var(--sand-10);            /* زمینه‌ی صفحه */
  --surface-sunken: var(--sand-15);          /* ناحیه‌ی فرورفته، نوار ابزار */
  --surface-sunken-2: var(--sand-20);        /* فرورفته‌تر، جداکننده‌ی بخش */
  --surface-dark: var(--sage-90);            /* سایدبار و نوار تیره */
  --surface-dark-2: var(--sage-80);          /* گرادیان سایدبار، سر دیگر */
  --surface-veil: var(--white-a62);          /* کارت نیمه‌شفاف روی رسانه */
  --surface-overlay: var(--ink-a74);         /* پرده‌ی روی صفحه */

  --ink-strongest: var(--sand-90);           /* عنوان */
  --ink-strong: var(--sand-80);              /* متن اصلی */
  --ink: var(--sand-70);                     /* متن فرعی */
  --ink-muted: var(--sand-60);               /* متن کم‌اهمیت */
  --ink-faint: var(--sand-50);               /* متن غیرفعال */
  --ink-inverse: var(--sand-00);             /* متن روی سطح تیره */
  --ink-inverse-muted: var(--sage-20);       /* متن فرعی روی سطح تیره */
  --ink-inverse-faint: var(--sage-40);       /* متن کم‌رنگ روی سطح تیره */

  --accent: var(--sage-60);                  /* دکمه، لینک، متنِ برند */
  --accent-strong: var(--sage-70);           /* حالت فشرده‌ی دکمه */
  --accent-soft: var(--sage-10);             /* بج و زمینه‌ی ملایم */
  --accent-faint: var(--sage-05);            /* هاله */

  --on-accent: var(--sand-00);               /* متن روی دکمه */

  --ok: var(--sage-60);                      /* موفقیت — همان برند است */
  --ok-soft: var(--sage-10);              
  --ok-faint: var(--sage-05);             

  --warn: var(--amber-60);                   /* هشدار */
  --warn-soft: var(--amber-20);           
  --warn-faint: var(--amber-05);          

  --danger: var(--clay-60);                  /* خطا */
  --danger-soft: var(--clay-20);          
  --danger-faint: var(--clay-05);         

  --info: var(--sky-60);                     /* اطلاع‌رسانی، هرگز اقدام */
  --info-soft: var(--sky-20);             
  --info-faint: var(--sky-05);            

  --pending: var(--plum-60);                 /* «تأخیری» در گراف */
  --pending-faint: var(--plum-05);

  --mark: var(--terra-60);                   /* متن نشانه‌ی ویرایشی */
  --mark-line: var(--terra-50);              /* خط کوتاه — غیرمتنی */
  --mark-soft: var(--terra-20);              /* حاشیه‌ی بج */
  --mark-faint: var(--terra-05);             /* زمینه‌ی بج */

  --paper-cool: var(--sky-a44);              /* آب‌رنگ سرد، گوشه‌ی صفحه */
  --paper-cool-end: var(--sky-a00);
  --paper-warm: var(--sand-a40);             /* آب‌رنگ گرم، وسط صفحه */
  --paper-warm-end: var(--sand-a00);
  --paper-veil: var(--sand-a85);             /* نوار چسبان بالا */

  --line-field: var(--sand-50);              /* حاشیهٔ ورودی — باید دیده شود */
  --line-strong: var(--sand-40);             /* خط پررنگ، جداکننده‌ی اصلی */
  --line: var(--sand-30);                    /* خط معمول */
  --line-soft: var(--sand-20);               /* خط کم‌رنگ */
  --line-faint: var(--ink-a06);              /* خط بسیار کم‌رنگ */
  --line-inverse: var(--white-a14);          /* خط روی سطح تیره */

  /* نوار قلب — کاغذ سند است و در هر حالتی روشن می‌ماند (طرح-محصول-نوار-قلب §۵‑۱).
     خانه‌ها صورتیِ کم‌رنگ، موج تیره؛ رنگِ علامت و جواب مالِ مرحله‌های بعد است. */
  --ecg-paper: var(--sand-00);
  --ecg-grid-minor: var(--clay-20);
  --ecg-grid-major: var(--clay-40);
  --ecg-trace: var(--sand-90);
  --ecg-ink: var(--sand-80);
  --ecg-hot: var(--sky-50);                  /* نقطه‌ی داغ، فقط در نسخه‌ی استاد */
  --ecg-mark: var(--terra-60);               /* علامتِ دانشجو روی نوار */
  --ecg-unreviewed-bg: var(--warn-faint);    /* نشانِ «بازبینی‌نشده توسطِ استاد» */
  --ecg-unreviewed-ink: var(--warn);
  --ecg-approved-bg: var(--ok-faint);        /* نشانِ «تأییدشده توسطِ استاد» */
  --ecg-approved-ink: var(--ok);

  /* باشگاهِ نوار (DECISIONS ۳۱۸): اطلسِ موتور، تنظیم‌هایش و دستیار. فضای سرد و روشنِ اتاقِ نوار، نه خاکی (مالک،
     ۲۰۲۶-۱۰-۲۶: «رنگ‌ها خیلی خاکی‌اند، هارمونی را بهتر کن»): آبیِ کم‌رنگ تا یاسی تا صورتیِ کاغذِ نوار، با سبزآبیِ
     مانیتور برای کار. فقط درونِ `.ecg-club` جای جوهر و سطح و خطِ خانه را می‌گیرند؛ کاغذِ نوار همان می‌ماند. */
  --ecg-club-ground: linear-gradient(165deg, #e8f1f6 0%, #eef0fa 52%, #fbeef1 100%);   /* زمینه‌ی صفحه */
  --ecg-club-gridline: rgba(77, 119, 168, 0.07);   /* خانه‌های کم‌رنگِ زمینه، یادی از کاغذِ نوار */
  --ecg-club-ink-strongest: #172233;
  --ecg-club-ink-strong: #243247;
  --ecg-club-ink: #3a475a;
  --ecg-club-ink-muted: #556275;
  --ecg-club-ink-faint: #6b778a;             /* ۴٫۶ به ۱ روی سفید: برای متنِ ریز هم خواناست */
  --ecg-club-sunken: #eef3f8;
  --ecg-club-sunken-2: #e4ebf3;
  --ecg-club-line: #d3dce6;
  --ecg-club-line-soft: #e3e9f0;
  --ecg-club-line-field: #8592a3;            /* لبه‌ی خانه‌ی فرم: ۳ به ۱ روی سفید */
  --ecg-club-accent: #0e7c72;                /* سبزآبیِ مانیتور: دکمه، انتخاب، فشرده */
  --ecg-club-accent-strong: #0a5f57;
  --ecg-club-accent-soft: #dcf2ee;
  --ecg-club-accent-faint: #eff9f7;
  --ecg-club-focus: rgba(14, 124, 114, 0.28);
  --ecg-club-shadow: 0 18px 40px -24px rgba(28, 48, 88, 0.30);
  --ecg-club-on: var(--ecg-club-accent-soft);   /* نوارِ بازِ قفسه */
  --ecg-club-on-line: #a9dcd4;
  --ecg-club-on-ink: var(--ecg-club-accent-strong);
  --ecg-club-engine-bg: var(--sky-05);       /* نشانِ «کشیده‌ی موتور» */
  --ecg-club-engine-ink: var(--sky-60);
  --ecg-club-change-bg: var(--sky-05);       /* «چه عوض شد»: نوشته‌ی کد از عددهای موتور، نه مدل */
  --ecg-club-change-line: var(--sky-20);
  --ecg-club-change-ink: var(--sky-70);
  --ecg-club-mark: var(--sky-60);            /* یافته‌ای که دستیار روی نوار روشن می‌کند */
  --ecg-club-machine: var(--sand-70);        /* خطِ دستگاه زیرِ نوار */

  --focus-ring: var(--sage-a18);             /* حلقه‌ی فوکوس */

  --shade-strong: var(--ink-a18);            /* سایه */
  --shade: var(--ink-a12);                
  --shade-soft: var(--ink-a06);           
  --shade-none: var(--ink-a00);              /* پایان گرادیان سایه */

  --veil-strong: var(--ink-a94);          
  --veil: var(--ink-a44);                 

  --glow: var(--white-a22);                  /* درخشش روی سطح تیره */
  --glow-soft: var(--white-a08);          
  --glow-none: var(--white-a00);             /* پایان گرادیان روشن */

  --wash: var(--white-a90);                  /* پوشش شیری روی رسانه */

  /* نوارِ کنسول: شیشه، رنگ، شب (DECISIONS، صدونودوششم). چهار ماده دارد —
     شیشه روی عکس، ضربه‌ی قلم‌مو، کاغذ (همان `--surface-page`)، و شب. */
  --surface-night: var(--night-90);          /* زمینه‌ی کنسول، بیرونِ برگه */
  --ink-on-glass: var(--night-80);           /* متن روی شیشه */
  --ink-on-glass-muted: var(--night-60);     /* متنِ فرعی روی شیشه */
  --ink-on-glass-thin: var(--night-70);      /* متنِ فرعی روی شیشه‌ی نازک */
  --paint: var(--night-80);                  /* ضربه‌ی قلم‌مو روی بخشِ باز */
  --paint-end: var(--night-70);              /* سرِ دیگرِ ضربه؛ ضربه‌ی زیرینِ لبه */
  --on-paint: var(--sand-05);                /* متن روی ضربه‌ی قلم‌مو */
  --glass: var(--sand-a50);                  /* شیشه، بالا */
  --glass-deep: var(--sand-a78);             /* شیشه، پایین؛ منوی بازشونده */
  --glass-dense: var(--sand-a92);            /* برگه‌ی بخش‌ها روی موبایل */
  --glass-solid: var(--sand-05);             /* وقتی مرورگر تاری ندارد */
  --glass-edge: var(--white-a90);            /* لبه‌ی روشنِ شیشه */
  --glass-shade: var(--night-a45);           /* سایه‌ی زیرِ شیشه */
  --glass-line: var(--night-a15);            /* خط روی شیشه */
  --glass-wash: var(--white-a62);            /* ردِ روشنی که دنبالِ نشانگر می‌آید */
  --glass-tint: var(--sage-a50);             /* آواتار */
  --halo: var(--sand-a85);                   /* هاله‌ی پشتِ متن روی شیشه‌ی نازک */
  --sunlight: var(--amber-a62);              /* نورِ روی عکس و روی شیشه */
  --sunlight-none: var(--amber-a00);
  --dusk: var(--night-a78);                  /* غروبِ پایینِ عکس */
  --dusk-none: var(--night-a00);
  --vignette: var(--night-a34);              /* گوشه‌های تیره‌ی عکس */

  /* ابزارهای ساختِ استاد (DECISIONS ۳۲۳): هر ابزار رنگِ خودش را دارد، از رَمپ‌های همین پالت، تا روی «دسترسیِ استادها»
     با یک نگاه شناخته شود. `-2` سرِ روشنِ گرادیان است. ابزارِ بسته رنگش را از دست می‌دهد و هاشورِ شن می‌گیرد. */
  --tool-studio: var(--night-60);
  --tool-studio-2: var(--night-40);
  --tool-surgcase: var(--sky-60);
  --tool-surgcase-2: var(--sky-40);
  --tool-rxcase: var(--sage-60);
  --tool-rxcase-2: var(--sage-40);
  --tool-radpath: var(--plum-60);
  --tool-radpath-2: var(--plum-40);
  --tool-teaching: var(--amber-50);
  --tool-teaching-2: var(--amber-40);
  --tool-prompts: var(--clay-50);
  --tool-prompts-2: var(--clay-40);
  --tool-off: var(--sand-30);                /* هاشورِ ابزارِ بسته */
  --tool-off-2: var(--sand-20);
  --tool-off-ink: var(--sand-50);            /* نشانه‌ی ابزارِ بسته */
  --tool-chip: var(--night-a45);             /* برچسبِ روی نوارِ رنگی: متنِ سفید روی هر شش رنگ خوانا می‌ماند */
  --on-tool: var(--sand-00);                 /* نشانه و متن روی نوارِ رنگی، دستگیره‌ی کلید */

  /* سرِ تیره‌ی یک میز (DECISIONS ۳۲۳): کادرِ شبی که نامِ واحد و شمارش را بالای کارت‌ها نگه می‌دارد. */
  --hero: var(--night-60);
  --hero-end: var(--night-90);
  --hero-ink: var(--sand-00);
  --hero-ink-muted: var(--night-20);
  --hero-meter: var(--sky-40);               /* حلقه‌ی شمارش */
  --hero-meter-track: var(--white-a14);
  --hero-meter-core: var(--night-80);

  /* میزِ اعتبار (DECISIONS ۳۲۵): زمینه‌ی سردِ روشن به‌جای کاغذِ کرم (مالک: «کرم بودنش رو مخمه»)، کارتِ سفید با لبه و سایه‌ی
     کوتاهِ شبی، و دو سریِ نمودار — استادها شب، دانشجوها آسمانی؛ با `validate_palette.js`ِ skillِ dataviz سنجیده شد. */
  --desk-ground: var(--night-05);
  --desk-card: var(--sand-00);
  --desk-line: var(--night-a15);
  --desk-shadow: 0 1px 2px var(--night-a15), 0 10px 24px -18px var(--night-a45);
  --series-teachers: var(--data-indigo);
  --series-students: var(--data-teal);

  /* میزِ یکپارچه‌ی هوش مصنوعی (DECISIONS ۳۲۶): صدف و لاجورد و رز. */
  --hub-ground: var(--lilac-05);
  --hub-card: var(--pearl-00);
  --hub-sunken: var(--lilac-10);
  --hub-wash-a: var(--lilac-a10);
  --hub-wash-b: var(--pink-a14);
  --hub-star: var(--lilac-a22);
  /* مخزنِ توکن (DECISIONS ۳۴۳): مصرف‌شده، داده‌شده به افراد، آزاد. */
  --hub-tank-spent: var(--lilac-50);
  --hub-tank-given: var(--pink-40);
  --hub-tank-free: var(--lilac-10);
  --hub-lilac-strong: var(--lilac-60);
  --hub-line: var(--pearl-20);
  --hub-ink: var(--azure-90);
  --hub-ink-muted: var(--pearl-60);
  --hub-accent: var(--azure-50);
  --hub-accent-strong: var(--azure-60);
  --hub-accent-soft: var(--azure-10);
  --hub-accent-ring: var(--azure-a22);
  --hub-rose: var(--rose-50);
  --hub-rose-strong: var(--rose-60);
  --hub-rose-soft: var(--rose-10);
  --hub-hero: var(--azure-80);
  --hub-hero-end: var(--azure-90);
  --hub-glow: var(--rose-a14);
  --hub-shadow: 0 1px 2px var(--azure-a10), 0 12px 28px -20px var(--azure-a22);
  --series-cost: var(--azure-50);
  --series-covered: var(--rose-50);

  /* درِ رنگی (DECISIONS ۳۲۳): دکمه‌ای که به میزِ دیگری می‌برد، و نشانِ عددِ منتظرِ آن. */
  --door: var(--sky-60);
  --door-end: var(--night-70);
  --on-door: var(--sand-00);
  --badge: var(--amber-40);
  --on-badge: var(--sand-90);

  /* صحنه‌ی شب: صفحه‌ی ساختِ موتورهای کیس (DECISIONS ۲۳۷). سه ماده دارد — شب، شیشه‌ی تیره روی شب، و نورِ مانیتور.
     متنِ روی شب کرم است؛ پله‌های کم‌رنگ‌ترش فقط برای متنِ فرعی و خط. */
  --scene-night: var(--night-90);            /* زمینه */
  --scene-night-end: var(--night-70);        /* سرِ دیگرِ گرادیانِ زمینه */
  --scene-haze: var(--sage-a50);             /* مهِ سبز پشتِ تصویر */
  --scene-ink: var(--sand-05);               /* متن */
  --scene-ink-muted: var(--sand-a78);        /* متنِ فرعی */
  --scene-ink-faint: var(--sand-a50);        /* متنِ کم‌رنگ، جانگه‌دار */
  --scene-line: var(--sand-a28);             /* لبه‌ی شیشه، خطِ فیلد */
  --scene-line-faint: var(--sand-a12);       /* خطِ میانِ ردیف‌ها */
  --scene-glass: var(--sand-a06);            /* تنِ کارتِ شیشه‌ای */
  --scene-glass-lift: var(--sand-a12);       /* شیشه‌ی روشن‌تر: روی تصویر، و ردیفی که نشانگر رویش است */
  --scene-field: var(--night-a45);           /* تنِ فیلد */
  --scene-bar: var(--night-a78);             /* نوارِ چسبانِ تأیید */
  --scene-trace: var(--sage-30);             /* خطِ مانیتور، و هرچه «درست» و «زنده» است */
  --scene-trace-glow: var(--mint-a85);       /* درخششِ خط */
  --scene-trace-dim: var(--mint-a22);        /* خطِ نرفته، حلقه‌ی فوکوس */
  --scene-grid: var(--mint-a08);             /* شبکه‌ی کم‌رنگِ مانیتور */
  --scene-warn: var(--amber-40);             /* هشدار روی شب */
  --scene-danger: var(--clay-40);            /* خطا و برگشت‌ناپذیر روی شب */
  --scene-shadow: var(--night-a78);          /* سایه‌ی زیرِ تصویر و نوار */
  --on-scene-ink: var(--night-90);           /* متن روی دکمه‌ی کرم */
  /* نورِ دومِ صحنه: فیلم. رادیولوژی و پاتولوژی به‌جای سبزِ مانیتور نورِ سردِ نگاتوسکوپ دارند (DECISIONS ۲۳۸).
     اطلاع‌رسانی است، نه اقدام: دکمه‌ی روشنِ صفحه همان کرم می‌ماند. */
  --scene-film: var(--sky-20);               /* خط و عددِ روشن */
  --scene-film-glow: var(--sky-a85);         /* درخششِ خط */
  --scene-film-dim: var(--sky-a22);          /* خطِ نرفته، حلقه‌ی فوکوس */
  --scene-film-grid: var(--sky-a08);         /* شبکه‌ی کم‌رنگ */
  --scene-film-haze: var(--sky-a22);         /* مهِ سرد پشتِ تصویر */
  --star: var(--sand-05);                    /* ستاره‌ها — `console.js` از همین‌جا می‌خواند */
  --star-warm: var(--amber-20);
  --star-leaf: var(--sage-20);
  --pulse-line: var(--sage-10);              /* نوارِ قلبِ روی لبه‌ی عکس */
  /* اتاقِ اکوی «آناتومی» (DECISIONS ۲۶۲): دو صفحه‌ی دستگاه روی زمینه‌ای روشن و آرام. */
  --echo-screen: var(--coal-95);            /* خودِ صفحه‌ی اکو */
  --echo-bezel: var(--coal-80);             /* لبه‌ی شیشه‌ی صفحه */
  --echo-ground: var(--sand-10);            /* زمینه‌ی اتاق */
  --echo-ground-glow: var(--sky-a22);       /* نورِ سردِ گوشه‌ی بالا */
  --echo-ground-warm: var(--sand-a40);      /* گرمای گوشه‌ی پایین */
  --echo-disease: var(--mark);              /* هرچه مالِ صفحه‌ی بیمار است */
  --echo-caliper: var(--amber-40);          /* کالیپرِ دانشجو روی صفحه‌ی شب (مثلِ زردِ دستگاه) */
  --echo-truth: var(--sage-30);             /* شبحِ جوابِ درست؛ همان سبزِ «درست و زنده»ِ مانیتور */
  /* اتاقِ کلیه (DECISIONS ۲۷۰): همان زمینه و شیشه‌ی اکو؛ نقشه‌ی اطلس روی شیشه‌ی شب با رنگِ هر بافت. */
  --kidney-map-cortex: var(--clay-40);      /* قشر */
  --kidney-map-medulla: var(--plum-50);     /* هرم */
  --kidney-map-sinus: var(--amber-20);      /* چربیِ سینوس و ناف */
  --kidney-map-fat: var(--amber-50);        /* چربیِ دورِ کلیه و زیرِ پوست */
  --kidney-map-fluid: var(--sky-40);        /* ادرار و کیست */
  --kidney-map-stone: var(--sand-05);       /* سنگ */
  --kidney-map-liver: var(--clay-70);       /* کبد */
  --kidney-map-muscle: var(--night-60);     /* عضله و پوست */
  --kidney-map-vessel: var(--clay-60);      /* رگ‌های ناف */
  --kidney-map-line: var(--sand-a28);       /* مرزِ ناحیه‌ها روی نقشه */
  --kidney-map-collecting: var(--sky-20);   /* دستگاهِ جمع‌کننده‌ی خالیِ اطلس: فقط خطِ دور */
  /* مدلِ سه‌بعدیِ کلیه (DECISIONS ۲۷۲) */
  --kidney-3d-ground: var(--echo-screen);   /* پس‌زمینه‌ی مدل */
  --kidney-3d-sky: var(--sky-05);           /* نورِ بالا */
  --kidney-3d-earth: var(--clay-70);        /* نورِ پایین */
  --kidney-3d-key: var(--sand-05);          /* نورِ اصلی */
  --kidney-3d-collecting: var(--sky-20);    /* کالیس‌ها، لگنچه و حالب */
  --kidney-3d-artery: var(--terra-60);      /* سرخرگِ کلیه */
  --kidney-3d-vein: var(--sky-60);          /* سیاهرگِ کلیه */
  --kidney-3d-probe: var(--sand-40);        /* پروب */
  --kidney-3d-beam: var(--amber-40);        /* خطِ دورِ بادبزنِ پرتو */
  /* دستیارِ اتاقِ کلیه (DECISIONS ۲۷۳) */
  --kidney-mark: var(--amber-40);           /* علامتِ دستیار روی تصویرِ موتور */
  --echo-arrow: var(--amber-40);            /* فلشِ دانشجو روی صفحه‌ی اکو (DECISIONS ۲۷۶) */
  --kidney-pin: var(--amber-40);            /* پینِ برچسب روی تصویرِ واقعی */
  --kidney-real: var(--sage-30);            /* نشانِ «تصویرِ واقعی» */
  --kidney-engine: var(--sky-20);           /* نشانِ «تصویرِ موتور» */
  /* جنین‌شناسیِ کلیه (DECISIONS ۲۸۱) */
  --embryo-3d-ground: var(--echo-screen);   /* پس‌زمینه‌ی سه مدل */
  --embryo-plane: var(--sky-40);            /* صفحه‌ی برش روی بدن */
  --embryo-plane-handle: var(--sky-20);     /* دستگیره‌ی صفحه‌ی برش */
  --embryo-forms: var(--clay-40);           /* خطِ «ساخته می‌شود» */
  --embryo-forms-strong: var(--clay-50);    /* مرحله‌ی یکی‌درمیان، تا مرزِ دو مرحله دیده شود */
  --embryo-check: var(--sky-50);            /* خطِ «بررسی» */
  --embryo-drug: var(--amber-40);           /* خطِ «دارو» */
  --embryo-drug-strong: var(--amber-60);    /* NSAID روی همان خط */
  --embryo-mark: var(--plum-50);            /* ◆ و بازه‌ی تشخیصِ بیماری روی نوارِ هفته */
  --embryo-mark-glow: var(--amber-40);      /* درخششِ جزئی که دستیار روی مدل نشان می‌دهد */
  --embryo-caliper: var(--amber-20);        /* خط و نقطه‌های کالیپر روی سونو */
  --embryo-sono-ink: var(--sand-05);        /* نوشته روی تصویرِ سونو */
  --kidney-right: var(--sage-30);           /* جوابِ درست */
  --kidney-wrong: var(--clay-40);           /* جوابِ نادرست */
  --mask-thin: var(--ink-a74);               /* ماسک: جایی که شیشه نازک می‌شود */
  --mask-solid: var(--sand-90);              /* ماسک: جایی که کامل است */

  /* ========================================================================
     شکل و تایپوگرافی
     ======================================================================== */
  --radius-lg: 22px;
  --radius-md: 14px;
  --radius-pill: 999px;

  /* لبه‌ی ویرایشی — تقریباً تیز. گوشه‌ی گرد صفحه را شبیه یک اپلیکیشن می‌کند،
     لبه‌ی تیز شبیه یک صفحه‌ی چاپ‌شده. کنسول دومی را می‌خواهد. */
  --radius-edge: 3px;
  --radius-edge-lg: 5px;

  --shadow-card: 0 18px 44px -22px var(--shade-strong);
  --shadow-cta: 0 12px 24px -12px var(--shade-strong);
  --shadow-cta-green: 0 12px 24px -12px var(--shade-strong);
  --shadow-lift: 0 44px 88px -60px var(--shade-strong);   /* سایه‌ی بلند و نرم */

  /* حرکت. یک منحنی، سه مدت — تا هر جزء صفحه با همان ریتم بالا بیاید. */
  --ease-rise: cubic-bezier(0.2, 0.75, 0.2, 1);
  --dur-quick: 240ms;
  --dur-rise: 620ms;
  --dur-rise-slow: 900ms;

  /* ------------------------------------------------------------------------
     فونت‌ها

     `--font` فونت امروزِ پرتال، تیوتور و استودیو است و دست‌نخورده می‌ماند.
     دو تای بعدی جفتی‌اند که در صفحه‌ی عمومی انتخاب و پسندیده شد؛ کنسول هم
     همان‌ها را برمی‌دارد تا محصول یک صدا داشته باشد، نه دو تا.

     مونو عمداً فونت سیستم است: برچسب‌های لاتینِ ۱۰ پیکسلی با فاصله‌ی زیاد،
     و در آن اندازه هیچ‌کس Consolas را از IBM Plex Mono تشخیص نمی‌دهد. یک
     درخواست HTTP کمتر، و یک وابستگی کمتر.
     ------------------------------------------------------------------------ */
  --font: "Vazirmatn", "Segoe UI", Tahoma, "Iranian Sans", sans-serif;
  --font-text: "Cairo", "Vazirmatn", "Segoe UI", Tahoma, sans-serif;
  --font-display: "Markazi Text", "Cairo", "Vazirmatn", "Segoe UI", serif;
  --font-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
}

