/**
 * سیستم طراحی و استایل پیشخوان سامانه مدیریت مطب.
 *
 * مطابق قانون قرمز پروژه (#۴)، هیچ مقدار ظاهری (رنگ، فونت، شعاع گوشه) هاردکد
 * نمی‌شود؛ همه‌چیز از متغیرهای CSS تعریف‌شده در :root خوانده می‌شود. تم‌ساز
 * (مرحله‌ی ۵) این متغیرها را به‌صورت زنده و ماندگار بازنویسی می‌کند.
 *
 * فهرست متغیرهای اصلی (قابل‌تنظیم در تم‌ساز):
 *   --clinic-primary        رنگ برند / هدر / دکمه‌ی اصلی   (var( --clinic-primary ))
 *   --clinic-bg-light       پس‌زمینه‌ی کارت / hover         (var( --clinic-bg-light ))
 *   --clinic-success        موفقیت / تأیید                  (var( --clinic-success ))
 *   --clinic-bg             پس‌زمینه‌ی اصلی                  (var( --clinic-bg ))
 *   --clinic-warning        هشدار ملایم / عناصر انسانی      (var( --clinic-warning ))
 *   --clinic-font-family    فونت رابط                       (Vazirmatn)
 *   --clinic-border-radius  شعاع گوشه‌ها                     (12px)
 */

:root {
	/* --- پنج رنگ پالت (قابل‌تنظیم در تم‌ساز) --- */
	--clinic-primary: #4B2E83;
	--clinic-bg-light: #F3E8FF;
	--clinic-success: #22A06B;
	--clinic-bg: #FFFFFF;
	--clinic-warning: #D98282;

	/* --- فونت و شعاع (قابل‌تنظیم در تم‌ساز) — STEP 79: پیش‌فرض «پیدا» (@font-face از inline_css) --- */
	--clinic-font-family: 'Peyda', 'Vazirmatn', 'IRANSans', Tahoma, sans-serif;
	--clinic-border-radius: 12px;

	/* --- متغیرهای پشتیبان (مشتق/ثابت) --- */
	--clinic-text: #2B2240;
	--clinic-muted: #6b6480;
	/* STEP 215-B: هم‌مقدار با tokens.css — سند بخش ۴ دکمه pill می‌خواهد. */
	--clinic-radius-pill: 999px;
	--clinic-space: 20px;
	--clinic-shadow: 0 4px 16px rgba(75, 46, 131, 0.08);
	--clinic-border: #ece7f4;

	/* --- مقیاس فاصله‌گذاری یکدست (مرحله‌ی ۲۶) --- */
	--clinic-spacing-xs: 8px;
	--clinic-spacing-sm: 12px;
	--clinic-spacing-md: 15px;
	--clinic-spacing-lg: 20px;

	/* رنگ قاب بوم دست‌نویس/امضا (قابل‌تغییر). */
	--clinic-ink-border: #333333;
}

/* ====================================================================
 * چیدمان پایه
 * ==================================================================== */
.clinic-wrap {
	font-family: var(--clinic-font-family);
	color: var(--clinic-text);
	max-width: 100% !important;
	/*
	 * STEP 221 قاعده ۱ کارفرما + نقش «سطح ریشه» — ظرف اصلی پلاگین شفاف است.
	 * پس‌زمینه کار کارت و پنل است، نه ظرف ریشه.
	 */
	background: transparent;
}

.clinic-title {
	color: var(--clinic-primary);
	font-weight: 700;
}

.clinic-intro {
	color: var(--clinic-muted);
	margin-bottom: var(--clinic-space);
}

/* ====================================================================
 * کامپوننت: اعلان (alert)
 * ==================================================================== */
.clinic-notice {
	padding: var( --clinic-space-6 ) var( --clinic-space-8 );
	border-radius: var(--clinic-border-radius);
	margin: var( --clinic-space-6 ) 0 var(--clinic-space);
	background: var(--clinic-bg-light);
}

.clinic-notice--success {
	border-inline-start: 4px solid var(--clinic-success);
	color: var(--clinic-success);
}

.clinic-notice--error {
	border-inline-start: 4px solid var(--clinic-warning);
	color: var(--clinic-warning);
}

/* STEP 234 — متن جعبه‌ی هشدار از توکنِ جوهرِ تیره می‌آید نه از خودِ کورال؛
   کورالِ برند نوارِ کناری می‌مانَد. پیش از این کورال روی یاسی حدود ۲:۱ بود.
   مقدارِ خام فقط fallbackِ همان توکن‌های tokens.css است. */
.clinic-notice--warning {
	border-inline-start: 4px solid var(--clinic-warning);
	color: var(--clinic-warning-ink, #7a2727);
	background: var(--clinic-warning-50, #fdf2f2);
}

/* STEP 187 — جعبه‌ی هشدارِ پسورد/بازگردانی: زمینه‌ی روشن + متنِ تیره‌ی خوانا + نوارِ کورالِ برند.
 * متن از توکنِ متنِ اصلی (تیره) روی زمینه‌ی روشن ⇒ کنتراست بالا (≥۴٫۵)؛ نوارِ کناری = رنگِ هشدارِ برند. */
.clinic-wrap .clinic-enc-warn {
	background: var(--clinic-bg-light, #F3F1F8);
	color: var(--clinic-text, #2b2f36);
	border-right: 4px solid var(--clinic-warning, #D98282);
	border-radius: var( --clinic-radius-sm );
	padding: var( --clinic-space-6 ) var( --clinic-space-7 );
	margin: var( --clinic-space-4 ) 0 var( --clinic-space-7 );
	line-height: 1.9;
}
.clinic-wrap .clinic-enc-warn strong {
	color: var(--clinic-primary, #4B2E83);
}
/* برچسبِ نوعِ رمزنگاری‌شده در فهرست بکاپ (STEP 185/187) */
.clinic-badge--warn {
	background: var(--clinic-bg-light, #F3F1F8);
	color: var(--clinic-primary, #4B2E83);
	border: 1px solid var(--clinic-warning, #D98282);
}

/* ====================================================================
 * کامپوننت: کارت گرد با سایه‌ی نرم
 * ==================================================================== */
.clinic-cards {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
	gap: var(--clinic-space);
}

.clinic-card {
	background: var(--clinic-bg);
	border: 1px solid var(--clinic-bg-light);
	border-radius: var(--clinic-border-radius);
	box-shadow: var(--clinic-shadow);
	padding: var(--clinic-space);
	display: flex;
	flex-direction: column;
	gap: var( --clinic-space-6 );
}

.clinic-card--core {
	background: var(--clinic-bg-light);
}

.clinic-card--empty {
	grid-column: 1 / -1;
	color: var(--clinic-muted);
	text-align: center;
}

.clinic-card__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var( --clinic-space-4 );
}

.clinic-card__name {
	color: var(--clinic-primary);
	font-size: 16px;
	margin: 0;
}

.clinic-card__desc {
	color: var(--clinic-muted);
	margin: 0;
	flex: 1;
	line-height: 1.9;
}

/* ====================================================================
 * کامپوننت: نشان (badge / pill)
 * ==================================================================== */
.clinic-badge {
	display: inline-block;
	padding: var( --clinic-space-2 ) var( --clinic-space-6 );
	border-radius: var(--clinic-radius-pill, 999px);
	font-size: 12px;
	white-space: nowrap;
}

.clinic-badge--core,
.clinic-badge--on {
	background: var(--clinic-success);
	color: var(--clinic-bg);
}

.clinic-badge--off {
	background: var(--clinic-warning);
	color: var(--clinic-bg);
}

/* ====================================================================
 * کامپوننت: دکمه‌ی pill
 * ==================================================================== */
/*
 * STEP 220 — این قاعده **قاعده پایه دوم و متعارض** دکمه بود.
 *
 * هر اعلانی که components-v2.css هم می‌دهد از اینجا حذف شد (چیدمان، پدینگ،
 * حاشیه، شعاع، اندازه فونت، اشاره‌گر، قلم، گذار). آن فایل دیرتر بار می‌شود، پس
 * این اعلان‌ها هرگز برنده نمی‌شدند و فقط منبع تعارض بودند — دقیقا همان چیزی که
 * شعاع را بین حالت‌ها واگرا می‌کرد.
 *
 * فقط دو اعلانی می‌ماند که پایه v2 نمی‌دهد.
 */
.clinic-btn {
	color: var(--clinic-bg);
	text-decoration: none;
}

.clinic-btn:hover {
	opacity: 0.9;
}

.clinic-btn--primary {
	background: var(--clinic-primary);
}

.clinic-btn--success {
	background: var(--clinic-success);
}

/*
 * STEP 220 — قاعده متعارض دوم دکمه خطر.
 *
 * این قاعده مستقیما رنگ **هشدار** را می‌نشاند و توکن `--clinic-btn-danger-bg`
 * را دور می‌زد، پس اصلاح توکن به تنهایی اثر نمی‌کرد. طبق فاز ۴ بند ۲ قاعده
 * اضافی حذف نشد بلکه به همان توکن وصل شد تا یک منبع بماند.
 */
.clinic-btn--danger {
	background: var(--clinic-btn-danger-bg);
}

.clinic-btn--ghost {
	background: transparent;
	color: var(--clinic-primary);
	border: 1px solid var(--clinic-primary);
}

/* ====================================================================
 * کامپوننت: فرم و input
 * ==================================================================== */
.clinic-label {
	display: block;
	margin: var(--clinic-spacing-md) 0 var(--clinic-spacing-xs);
	color: var(--clinic-primary);
	font-weight: 600;
}

/* STEP 76: قاعده‌ی استایلِ عمومیِ فیلد (input/select/textarea + :focus) به
 * forms-v2.css منتقل شد و توکن‌محور (--clinic-field-*) گشت — «یک منبعِ حقیقت».
 * شعاعِ pillِ قدیمی اینجا عملاً هرگز برنده نبود (forms-v2 می‌بُرد) ⇒ حذفش ظاهر را
 * عوض نمی‌کند. اینجا فقط props رفتاریِ textarea می‌ماند (نه استایلِ بصری). */
.clinic-textarea {
	resize: vertical;
	/* STEP 163: حذفِ direction/text-alignِ LTRِ تحمیلی (باگِ راست‌چینیِ متنِ فارسی).
	 * جهت اکنون از قاعده‌ی scope‌شده‌ی forms-v2 (پیش‌فرضِ RTL با احترام به [dir]) می‌آید. */
}

/* STEP 130: ردیفِ سه‌فیلدیِ جزئیاتِ نوبت (نوع/وضعیت/نوع بیمه) — دسکتاپ یک‌ردیفه.
 * لیبل بالای فیلد می‌ماند؛ یادداشت/دکمه‌ی ذخیره بیرونِ این گرید و تمام‌عرض. */
.appt-edit-row {
	display: grid;
	grid-template-columns: 1fr 1fr 1fr;
	gap: var(--clinic-spacing-md, 16px);
	align-items: end;
}
.appt-edit-row__field { min-width: 0; }
/* لیبلِ نخستِ هر ستون در گرید نباید فاصله‌ی بالاییِ نامتوازن بسازد. */
.appt-edit-row__field .clinic-label { margin-top: 0; }
.appt-edit-row .clinic-select { width: 100%; }
/* موبایل: تک‌ستونه (دسکتاپ نشکند — تله‌ی STEP 125). */
@media ( max-width: 768px ) {
	.appt-edit-row { grid-template-columns: 1fr; }
}

/* ════════════════════════════════════════════════════════════════════
 * STEP 141 — صفحه‌ی جزئیاتِ نوبت: لینک‌های سریع + اطلاعاتِ واردشده‌ی بیمار (فقط‌خواندنی) + تاریخچه.
 * رنگ‌ها از توکن (کنتراست‌محور)؛ دکمه‌ها `.clinic-btn` (گاردِ کنتراستِ STEP 140). موبایل تک‌ستونه.
 * ════════════════════════════════════════════════════════════════════ */
.appt-quick-links { display: flex; flex-wrap: wrap; gap: var( --clinic-space-4 ); align-items: center; margin: 0 0 var( --clinic-space-8 ); }
.appt-detail-card { margin-top: var( --clinic-space-8 ); }
.appt-detail-title { margin: 0 0 var( --clinic-space-6 ); font-size: var( --clinic-fs-h3, 17px ); font-weight: 700; color: var( --clinic-text, #2B2240 ); }
.appt-detail-empty { color: var( --clinic-text-muted, #6b7280 ); margin: var( --clinic-space-2 ) 0; }
/* گریدِ اطلاعاتِ واردشده — دسکتاپ سه‌ستونه، موبایل تک‌ستونه (تله‌ی STEP 125). */
.appt-info-grid { display: grid; grid-template-columns: repeat( 3, minmax( 0, 1fr ) ); gap: var( --clinic-space-6 ) var( --clinic-space-9 ); }
/* پس‌زمینه‌ی سفید + بوردر (نه یاسی): برچسبِ muted روی یاسی فقط ۴٫۱:۱ می‌شد؛ روی سفید ~۵٫۷:۱ خوانا. */
.appt-info-item { display: flex; flex-direction: column; gap: 3px; min-width: 0; padding: var( --clinic-space-4 ) var( --clinic-space-6 ); background: var( --clinic-surface, #fff ); border: 1px solid var( --clinic-border, #ece7f4 ); border-radius: 10px; }
.appt-info-item__label { font-size: 12px; color: var( --clinic-text-muted, #6b7280 ); }
.appt-info-item__value { font-weight: 600; color: var( --clinic-text, #2B2240 ); overflow-wrap: anywhere; }
@media ( max-width: 768px ) {
	.appt-info-grid { grid-template-columns: 1fr; }
}
/* جدولِ تاریخچه — دسکتاپ جدول، موبایل کارتِ لیبل‌محور (data-label، بدونِ اسکرولِ افقی). */
.appt-history-table__act { text-align: start; }
@media ( max-width: 768px ) {
	/* خنثی‌کردنِ min-width:560pxِ STEP 110 (اینجا کارت می‌خواهیم نه اسکرول). */
	.clinic-card > .appt-history-table.clinic-table { min-width: 0; }
	.appt-history-table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect( 0 0 0 0 ); white-space: nowrap; }
	.appt-history-table,
	.appt-history-table tbody,
	.appt-history-table tr,
	.appt-history-table td { display: block; width: 100%; min-width: 0; box-sizing: border-box; }
	.appt-history-table tr {
		border: 1px solid var( --clinic-border, #E5E0F0 );
		border-radius: var( --clinic-border-radius, 14px );
		margin-bottom: var( --clinic-space-6 );
		padding: var( --clinic-space-3 ) var( --clinic-space-6 );
		background: var( --clinic-surface, #fff );
	}
	.appt-history-table td {
		display: flex;
		justify-content: space-between;
		align-items: center;
		gap: var( --clinic-space-6 );
		border: none;
		padding: var( --clinic-space-4 ) 0;
		text-align: start;
	}
	.appt-history-table td::before {
		content: attr( data-label );
		font-weight: 600;
		color: var( --clinic-text-muted, #6b7280 );
		flex: 0 0 auto;
	}
	.appt-history-table td[data-label=""]::before { content: none; }
}

/* STEP 130: فهرستِ جلساتِ شیمی — دسکتاپ جدولِ شش‌ستونه، موبایل کارتِ لیبل‌محور. */
.clinic-chemo-empty { text-align: center; color: var( --clinic-text-muted, #6b7280 ); padding: 22px 0; }
@media ( max-width: 768px ) {
	/* جدول ⟶ کارت‌های لیبل‌محور (نه اسکرولِ افقی).
	 * سرستون به‌صورتِ visually-hidden جمع می‌شود (۱×۱) — نه left:-9999px — تا overflowِ افقی نسازد. */
	.clinic-chemo-list thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect( 0 0 0 0 ); white-space: nowrap; }
	/* خنثی‌کردنِ min-width:560px ـِ STEP 110 (اسکرولِ افقیِ جدول) — اینجا کارت می‌خواهیم نه اسکرول.
	 * مشخصه‌ی بالاتر (`.clinic-card > .x.y`) تا بر قاعده‌ی STEP 110 (`.clinic-card > .clinic-table`) غلبه کند. */
	.clinic-card > .clinic-chemo-list.clinic-table { min-width: 0; }
	.clinic-chemo-list,
	.clinic-chemo-list tbody,
	.clinic-chemo-list tr,
	.clinic-chemo-list td { display: block; width: 100%; min-width: 0; box-sizing: border-box; }
	.clinic-chemo-list tr {
		border: 1px solid var( --clinic-border, #E5E0F0 );
		border-radius: var( --clinic-border-radius, 14px );
		margin-bottom: var( --clinic-space-6 );
		padding: var( --clinic-space-3 ) var( --clinic-space-6 );
		background: var( --clinic-surface, #fff );
	}
	.clinic-chemo-list td {
		display: flex;
		justify-content: space-between;
		align-items: center;
		gap: var( --clinic-space-6 );
		border: none;
		padding: var( --clinic-space-4 ) 0;
		text-align: start;
	}
	.clinic-chemo-list td::before {
		content: attr( data-label );
		font-weight: 600;
		color: var( --clinic-text-muted, #6b7280 );
		flex: 0 0 auto;
	}
	/* STEP 133: سلولِ چک‌باکس در کارتِ موبایل — لیبلِ «انتخاب» + چک‌باکس در ردیفِ بالای کارت. */
	.clinic-chemo-list td.clinic-cb-col { width: 100%; text-align: start; }
	.clinic-chemo-list td.clinic-cb-col::before { content: "انتخاب"; }
}

/* ====================================================================
 * کامپوننت: جدول
 * ==================================================================== */
.clinic-info-table {
	width: 100%;
	border-collapse: collapse;
	margin: var( --clinic-space-6 ) 0;
}

.clinic-info-table th,
.clinic-info-table td {
	text-align: right;
	padding: var(--clinic-spacing-sm) var(--clinic-spacing-md);
	border-bottom: 1px solid var(--clinic-border);
}

.clinic-info-table th {
	color: var(--clinic-muted);
	width: 40%;
	font-weight: 600;
}

/* ====================================================================
 * کامپوننت: tabs
 * ==================================================================== */
.clinic-tabs__nav {
	display: flex;
	flex-wrap: wrap;
	gap: var( --clinic-space-3 );
	border-bottom: 2px solid var(--clinic-bg-light);
	margin: var(--clinic-space) 0 0;
	/* STEP 125/126 (CSS سفارشی): نیتِ `top:32px` چسبندگی بوده؛ `static` بی‌اثر بود ⇒ `sticky`.
	 * STEP 126: پدینگ/گردیِ کارت‌مانند + z-index از بلوکِ سفارشیِ کاربر (pos همان sticky می‌ماند). */
	position: sticky;
	top: var( --clinic-space-16 );
	z-index: 20;
	background: var(--clinic-bg, #fff);
	padding: var( --clinic-space-6 );
	border-radius: var( --clinic-radius-xl );
}
@media ( min-width: 783px ) {
	.clinic-tabs__nav { padding: var( --clinic-space-8 ); } /* پدینگِ سخاوتمندانه‌تر روی دسکتاپ (نزدیک به ۲۵px سفارشی). */
}
@media ( max-width: 782px ) {
	.clinic-tabs__nav { top: 46px; } /* ارتفاعِ نوارِ مدیریتِ موبایلِ وردپرس */
}

.clinic-tab {
	background: var(--clinic-bg, #ffffff) ;
	border: none;
	border-radius: var(--clinic-border-radius) ;
	padding: var( --clinic-space-5 ) var( --clinic-space-9 );
	cursor: pointer;
	font-family: var(--clinic-font-family);
	font-size: 14px;
	color: var(--clinic-muted);
}

.clinic-tab.is-active {
	background: var(--clinic-bg-light);
	color: var(--clinic-primary);
	font-weight: 700;
}

/* STEP 47: ردیف دومِ تب‌های ماژولی (لینک‌محور) + لیبلِ گروه */
.clinic-tabs__nav--modules {
	border-bottom: 1px dashed var(--clinic-border, #e0d8f0);
	margin-top: var( --clinic-space-2 );
	padding-bottom: var( --clinic-space-3 );
	align-items: center;
}

.clinic-tabs__group-label {
	width: 100%;
	font-size: 11px;
	color: var(--clinic-muted);
	padding: var( --clinic-space-4 ) var( --clinic-space-2 ) var( --clinic-space-1 );
	font-weight: 600;
}

a.clinic-tab {
	text-decoration: none;
	display: inline-flex;
	align-items: center;
	gap: var( --clinic-space-2 );
}

a.clinic-tab:hover {
	background: var(--clinic-bg-light);
}

.clinic-tabs__panel {
	display: none;
	padding: var(--clinic-space) 0;
}

.clinic-tabs__panel.is-active {
	display: block;
}

/* ====================================================================
 * کامپوننت: مودال
 * ==================================================================== */
.clinic-modal {
	display: none;
	position: fixed;
	inset: 0;
	z-index: 100000;
}

.clinic-modal.is-open {
	display: block;
}

.clinic-modal__backdrop {
	position: absolute;
	inset: 0;
	background: rgba(43, 34, 64, 0.5);
}

.clinic-modal__box {
	/* STEP 126 (CSS سفارشی): مودالِ ثابتِ وسط‌چین. `overflow-y:disable`ِ نامعتبرِ کاربر ⇒ `auto`
	 * اصلاح شد (اسکرولِ داخلیِ بدنه‌ی بلند، تله‌ی STEP 75 حفظ). variantهای عرض (--lg/--wide=920)
	 * چون پس از این قاعده‌اند max-width را override می‌کنند (مودالِ ثبتِ سریع سالم می‌ماند). */
	position: fixed;
	top: 50%;
	left: 50%; /* وسط‌چینِ متقارن (مستقل از جهت) با translate. */
	transform: translate(-50%, -50%);
	z-index: 9999;
	width: calc(100% - 32px);
	max-width: 480px;
	max-height: calc(100vh - 32px);
	overflow-y: auto;
	box-sizing: border-box;
	padding: var(--clinic-space);
	background: var(--clinic-bg, #FFFFFF);
	border-radius: var(--clinic-radius, 15px);
	box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
}
/* STEP 75: اندازه‌های استانداردِ مودال (sm/md/lg). */
.clinic-modal__box--sm { max-width: 480px; }
.clinic-modal__box--md { max-width: 720px; }
.clinic-modal__box--lg, .clinic-modal__box--wide { max-width: 920px; }

.clinic-modal__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin-bottom: var( --clinic-space-6 );
}

.clinic-modal__title {
	color: var(--clinic-primary);
	margin: 0;
	font-size: 16px;
}

.clinic-modal__close {
	background: transparent;
	border: none;
	cursor: pointer;
	font-size: 20px;
	color: var(--clinic-muted);
	line-height: 1;
}

/* ====================================================================
 * صفحه‌ی لایسنس
 * ==================================================================== */
.clinic-license-box {
	max-width: 640px;
	margin-top: var(--clinic-space);
}

.clinic-domain code {
	background: var(--clinic-bg-light);
	color: var(--clinic-primary);
	padding: var( --clinic-space-1 ) var( --clinic-space-4 );
	border-radius: var(--clinic-radius-pill, 999px);
}

.clinic-license-form {
	margin-top: var( --clinic-space-6 );
}

/* ====================================================================
 * صفحه‌ی درباره / طراح
 * ==================================================================== */
.clinic-about-card {
	min-height: 140px;
}

.clinic-about-link a {
	color: var(--clinic-primary);
	text-decoration: none;
	direction: ltr;
	display: inline-block;
}

.clinic-about-link a:hover {
	text-decoration: none; /* STEP 112-G */
}

.clinic-copyright {
	margin-top: var(--clinic-space);
	padding: var( --clinic-space-8 ) var(--clinic-space);
	background: var(--clinic-primary);
	color: var(--clinic-bg);
	border-radius: var(--clinic-border-radius);
	box-shadow: var(--clinic-shadow);
	display: flex;
	flex-wrap: wrap;
	gap: var( --clinic-space-3 ) var( --clinic-space-8 );
	align-items: center;
	justify-content: space-between;
}

.clinic-copyright__mark {
	font-weight: 700;
}

.clinic-copyright__by {
	color: var(--clinic-bg-light);
	font-size: 13px;
}

/* ====================================================================
 * صفحه‌ی نقش‌ها — ماتریس دسترسی
 * ==================================================================== */
.clinic-matrix-scroll {
	overflow-x: auto;
}

.clinic-matrix {
	width: 100%;
	border-collapse: collapse;
	margin-top: var( --clinic-space-6 );
}

.clinic-matrix th,
.clinic-matrix td {
	text-align: center;
	padding: var( --clinic-space-4 ) var( --clinic-space-5 );
	border: 1px solid var(--clinic-bg-light);
	font-size: 13px;
}

.clinic-matrix thead th {
	background: var(--clinic-primary);
	color: var(--clinic-bg);
}

.clinic-matrix__row-label {
	text-align: right;
	font-weight: 600;
	color: var(--clinic-text);
	white-space: nowrap;
}

.clinic-matrix__section td {
	background: var(--clinic-bg-light);
	color: var(--clinic-primary);
	font-weight: 700;
	text-align: right;
}

.clinic-cap-badge {
	display: inline-block;
	min-width: 20px;
	margin: 0 1px;
	padding: var( --clinic-space-1 ) var( --clinic-space-3 );
	border-radius: var(--clinic-radius-pill, 999px);
	background: var(--clinic-success);
	color: var(--clinic-bg);
	font-size: 12px;
}

.clinic-cap-badge--yes {
	background: var(--clinic-primary);
}

.clinic-cap-none {
	color: var(--clinic-muted);
}

/* فرم نقش سفارشی. */
.clinic-caps-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
	gap: var( --clinic-space-6 );
	margin: var( --clinic-space-6 ) 0;
}

.clinic-caps-group {
	/* STEP 221 قاعده ۳ کارفرما — فاصله بالای ۲۰px، از توکن نه عدد خام. */
	margin-top: var( --clinic-space-12 );
	border: 1px solid var(--clinic-bg-light);
	border-radius: var(--clinic-border-radius);
	padding: var( --clinic-space-5 ) var( --clinic-space-7 );
}

.clinic-caps-group legend {
	color: var(--clinic-primary);
	font-weight: 600;
	padding: 0 var( --clinic-space-3 );
}

.clinic-check {
	display: block;
	margin: var( --clinic-space-2 ) 0;
	color: var(--clinic-text);
}

/* ====================================================================
 * صفحه‌ی تم‌ساز
 * ==================================================================== */
.clinic-ds-layout {
	display: grid;
	grid-template-columns: minmax(280px, 1fr) minmax(280px, 1fr);
	gap: var(--clinic-space);
	align-items: start;
}

@media (max-width: 782px) {
	.clinic-ds-layout {
		grid-template-columns: 1fr;
	}
}

.clinic-color-row {
	display: flex;
	align-items: center;
	gap: var( --clinic-space-5 );
	margin-bottom: var( --clinic-space-5 );
}

.clinic-color-row label {
	flex: 1;
	color: var(--clinic-text);
}

.clinic-color-row input[type="color"] {
	width: 42px;
	height: 32px;
	border: 1px solid var(--clinic-bg-light);
	border-radius: var(--clinic-border-radius);
	padding: 0;
	cursor: pointer;
	background: var(--clinic-bg);
}

.clinic-color-hex {
	width: 110px;
	max-width: 110px;
	direction: ltr;
	text-align: left;
}

.clinic-range {
	width: 100%;
	max-width: 320px;
	accent-color: var(--clinic-primary);
}

.clinic-range-output {
	display: inline-block;
	min-width: 40px;
	color: var(--clinic-primary);
	font-weight: 700;
}

.clinic-ds-toolbar {
	display: flex;
	gap: var( --clinic-space-5 );
	margin-top: var(--clinic-space);
	flex-wrap: wrap;
}

/* STEP 64: بخشِ آپلودِ فونت سفارشی در تم‌ساز */
.clinic-custom-font-section {
	margin-top: var( --clinic-space-9 );
	padding-top: var( --clinic-space-8 );
	border-top: 1px dashed var(--clinic-border, #e5e5e5);
}
.clinic-custom-font-section h4 {
	margin: 0 0 var( --clinic-space-3 );
	font-family: var(--clinic-font-family);
}
.clinic-custom-font-section .description {
	font-size: 12px;
	color: var(--clinic-text-muted, #666);
	line-height: 1.9;
	margin: 0 0 var( --clinic-space-6 );
}
.clinic-custom-font-section .current-font-info {
	display: flex;
	align-items: center;
	gap: var( --clinic-space-5 );
	flex-wrap: wrap;
	background: var(--clinic-bg-light, #F3E8FF);
	border-radius: 10px;
	padding: var( --clinic-space-4 ) var( --clinic-space-6 );
	margin-bottom: var( --clinic-space-6 );
	font-size: 13px;
}
.clinic-font-upload-row {
	display: flex;
	gap: var( --clinic-space-4 );
	align-items: center;
	flex-wrap: wrap;
}
.clinic-font-upload-row input[type="text"] { flex: 1 1 160px; min-width: 140px; }
.clinic-btn--sm { padding: var( --clinic-space-2 ) var( --clinic-space-6 ); font-size: 12px; }
.clinic-font-msg { font-size: 12px; margin: var( --clinic-space-4 ) 0 0; min-height: 1em; }
.clinic-font-msg.is-ok { color: var(--clinic-success, #22A06B); }
.clinic-font-msg.is-err { color: var(--clinic-danger, #C0392B); }
.clinic-font-msg.is-warn { color: var(--clinic-warn-strong, #B26A00); }
.clinic-font-msg.is-info { color: var(--clinic-primary, #4B2E83); }
.clinic-custom-font-section .font-preview {
	margin-top: var( --clinic-space-6 );
	padding: var( --clinic-space-6 ) var( --clinic-space-8 );
	background: var(--clinic-bg, #fff);
	border: 1px solid var(--clinic-border, #eee);
	border-radius: 10px;
}

.clinic-preview {
	position: sticky;
	top: var( --clinic-space-20 );
}

.clinic-preview__swatches {
	display: flex;
	gap: var( --clinic-space-4 );
	flex-wrap: wrap;
	margin: var( --clinic-space-5 ) 0;
}

.clinic-swatch {
	width: 40px;
	height: 40px;
	border-radius: var(--clinic-border-radius);
	border: 1px solid rgba(0, 0, 0, 0.08);
}

.clinic-swatch--primary { background: var(--clinic-primary); }
.clinic-swatch--bg-light { background: var(--clinic-bg-light); }
.clinic-swatch--success { background: var(--clinic-success); }
.clinic-swatch--bg { background: var(--clinic-bg); }
.clinic-swatch--warning { background: var(--clinic-warning); }

/* ====================================================================
 * احراز هویت (front) — صفحات OTP
 * ==================================================================== */
.clinic-auth {
	max-width: 420px;
	margin: var( --clinic-space-20 ) auto;
}

.clinic-auth-box {
	background: var(--clinic-bg);
}

.clinic-auth-form {
	margin-top: var( --clinic-space-6 );
}

.clinic-auth-form .clinic-input {
	max-width: 100%;
}

.clinic-otp-input {
	letter-spacing: 0.5em;
	text-align: center;
	font-size: 20px;
}

/* ====================================================================
 * مدیریت بیماران
 * ==================================================================== */
.clinic-search-form {
	display: flex;
	gap: var( --clinic-space-4 );
	margin: var( --clinic-space-6 ) 0;
	max-width: 480px;
}

.clinic-search-form .clinic-input {
	margin-bottom: 0;
}

.clinic-table {
	width: 100%;
	border-collapse: collapse;
}

.clinic-table th,
.clinic-table td {
	text-align: right;
	padding: var(--clinic-spacing-sm) var(--clinic-spacing-md);
	border-bottom: 1px solid var(--clinic-border);
	vertical-align: middle;
}

.clinic-table thead th {
	background: var(--clinic-bg-light);
	color: var(--clinic-primary);
	font-weight: 700;
}

.clinic-table tbody tr:hover {
	background: var(--clinic-bg-light);
}

/*
 * 🔴 STEP 223-B — قواعد قدیمی `.clinic-pagination .page-numbers` **حذف شدند**.
 * صفحه‌بندی اکنون یک کامپوننت واحد است (`Clinic_Pagination`) و استایلش در
 * `components-v2.css` کنار بقیه کامپوننت‌ها زندگی می‌کند، نه اینجا.
 * چیدمان ریشه هم آنجاست تا دو منبع رقیب نماند.
 */

/* انتخابگر تصویر. */
.clinic-media {
	display: flex;
	align-items: center;
	gap: var( --clinic-space-5 );
	margin-bottom: var( --clinic-space-3 );
}

.clinic-media__preview {
	width: 64px;
	height: 64px;
	object-fit: cover;
	border-radius: var(--clinic-border-radius);
	border: 1px solid var(--clinic-bg-light);
}

/* ====================================================================
 * نوبت‌دهی
 * ==================================================================== */
.clinic-badge--pending {
	background: var(--clinic-warning);
	color: var(--clinic-bg);
}

/* STEP 67: «در انتظار تأیید» — رنگِ متمایزِ برند (بنفش) با متنِ خودکارِ خوانا (سیستمِ
 * توکنِ STEP 66). جدا از pendingِ مرجانی تا در لیست/صف فوراً قابلِ‌تشخیص باشد. */
.clinic-badge--awaiting_approval {
	background: var(--clinic-btn-primary-bg, var(--clinic-primary));
	color: var(--clinic-btn-primary-text, #fff);
}

/* STEP 68: «در انتظار پرداخت» — رنگِ هشدارِ متمایز (سبزِ روشن/info). */
.clinic-badge--awaiting_payment {
	background: var(--clinic-info, #0EA5E9);
	color: var( --clinic-text-inverse );
}
/* STEP 68: نشانِ وضعیتِ پرداخت در جزئیاتِ نوبت. */
.clinic-paybadge { display: inline-block; padding: var( --clinic-space-1 ) var( --clinic-space-5 ); border-radius: var(--clinic-radius-pill, 999px); font-size: 12px; }
.clinic-paybadge--paid { background: var(--clinic-success); color: var( --clinic-text-inverse ); }
.clinic-paybadge--at_clinic { background: var(--clinic-bg-light); color: var(--clinic-primary); }
.clinic-paybadge--unpaid { background: var(--clinic-bg-light); color: var(--clinic-muted); }

/* STEP 68: گامِ پرداختِ wizard. */
.clinic-booking .bw-pay-amount { font-size: 18px; font-weight: 700; color: var(--clinic-primary); margin: var( --clinic-space-4 ) 0; }
.clinic-booking .bw-pay-hint { color: var(--clinic-muted); font-size: 13px; }

.clinic-badge--done {
	background: var(--clinic-success);
	color: var(--clinic-bg);
}

.clinic-badge--cancelled {
	background: var(--clinic-muted);
	color: var(--clinic-bg);
}

.clinic-dot {
	display: inline-block;
	width: 10px;
	height: 10px;
	border-radius: var(--clinic-radius-pill, 999px);
	margin-left: var( --clinic-space-3 );
	vertical-align: middle;
}

.clinic-row-actions {
	display: flex;
	gap: var( --clinic-space-2 );
	flex-wrap: wrap;
	align-items: center;
}

.clinic-inline-form {
	display: inline;
}

.clinic-muted-text {
	color: var(--clinic-muted);
	font-size: 13px;
	font-weight: 400;
}

/* ====================================================================
 * داشبوردها
 * ==================================================================== */

/* رنگ لهجه‌ی هر نقش (از پالت). */
.clinic-dash {
	--clinic-accent: var(--clinic-primary);
}
.clinic-dash--doctor { --clinic-accent: var(--clinic-success); }
.clinic-dash--nurse { --clinic-accent: var(--clinic-warning); }
.clinic-dash--secretary { --clinic-accent: var(--clinic-primary); }
.clinic-dash--patient { --clinic-accent: var(--clinic-success); }

.clinic-dash .clinic-title {
	border-right: 5px solid var(--clinic-accent);
	padding-right: var( --clinic-space-5 );
}

/* کارت‌های آمار. */
.clinic-stats {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
	gap: var(--clinic-space);
	margin: var(--clinic-space) 0;
}

.clinic-stat {
	background: var(--clinic-bg);
	border: 1px solid var(--clinic-bg-light);
	border-top: 4px solid var(--clinic-accent);
	border-radius: var(--clinic-border-radius);
	box-shadow: var(--clinic-shadow);
	padding: var(--clinic-space);
	text-align: center;
}

.clinic-stat__num {
	display: block;
	font-size: 30px;
	font-weight: 700;
	color: var(--clinic-accent);
}

.clinic-stat__label {
	display: block;
	margin-top: var( --clinic-space-3 );
	color: var(--clinic-muted);
	font-size: 13px;
}

.clinic-stat--muted {
	border-top-color: var(--clinic-bg-light);
}

.clinic-stat--muted .clinic-stat__num {
	color: var(--clinic-muted);
}

/* چیدمان دو ستونی داشبورد. */
.clinic-dash-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
	gap: var(--clinic-space);
	margin-bottom: var(--clinic-space);
}

/* کارت‌های دسترسی سریع. */
.clinic-quicklinks {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
	gap: var( --clinic-space-6 );
	margin-top: var( --clinic-space-6 );
}

.clinic-quick {
	display: flex;
	align-items: center;
	gap: var( --clinic-space-5 );
	background: var(--clinic-bg-light);
	color: var(--clinic-primary);
	border-radius: var(--clinic-border-radius);
	padding: var( --clinic-space-7 ) var( --clinic-space-8 );
	text-decoration: none;
	transition: opacity 0.2s ease;
}

.clinic-quick:hover {
	opacity: 0.85;
}

.clinic-quick.is-soon {
	background: var(--clinic-bg);
	border: 1px dashed var(--clinic-bg-light);
	color: var(--clinic-muted);
	cursor: default;
}

.clinic-list {
	margin: 0;
	padding: 0;
	list-style: none;
}

.clinic-list li {
	padding: var( --clinic-space-4 ) 0;
	border-bottom: 1px solid var(--clinic-bg-light);
}

/* ====================================================================
 * پرونده‌ی پزشکی
 * ==================================================================== */
.clinic-prewrap {
	white-space: pre-wrap;
	line-height: 1.9;
	color: var(--clinic-text);
}

.clinic-vitals-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
	gap: var( --clinic-space-6 );
	margin-bottom: var( --clinic-space-6 );
}

/* ====================================================================
 * نسخه‌نویسی — اتوکامپلیت دارو
 * ==================================================================== */
.clinic-rx-results {
	max-width: 480px;
	border-radius: var(--clinic-border-radius);
	overflow: hidden;
	margin-bottom: var( --clinic-space-6 );
}

.clinic-rx-result {
	display: block;
	width: 100%;
	text-align: right;
	background: var(--clinic-bg-light);
	border: none;
	border-bottom: 1px solid var(--clinic-bg);
	padding: var( --clinic-space-4 ) var( --clinic-space-6 );
	cursor: pointer;
	font-family: var(--clinic-font-family);
	color: var(--clinic-text);
}

.clinic-rx-result:hover {
	background: var(--clinic-primary);
	color: var(--clinic-bg);
}

.clinic-rx-result.is-empty {
	cursor: default;
	color: var(--clinic-muted);
}

.clinic-rx-result.is-empty:hover {
	background: var(--clinic-bg-light);
	color: var(--clinic-muted);
}

.clinic-rx-table .clinic-input {
	max-width: 100%;
	margin-bottom: 0;
}

/* ====================================================================
 * اصلاحات UI (مرحله ۱۷): پایداری دکمه‌ها در hover + استایل بوم
 * ==================================================================== */

/* دکمه‌ها: شعاع pill و رنگ متن در hover/focus ثابت بماند (نه آبی پیش‌فرض وردپرس). */
a.clinic-btn,
a.clinic-btn:hover,
a.clinic-btn:focus,
a.clinic-btn:active,
.clinic-btn,
/*
 * 🔴 STEP 220 — این قاعده **علت دقیق باگ گزارش‌شده کارفرما** بود.
 *
 * `border-radius: pill` را فقط در hover و focus و active می‌داد. نتیجه: هر
 * دکمه‌ای که شعاع عادی‌اش pill نبود (مثل واریانت ریز با شعاع ۶px) با اولین
 * تماس ماوس گرد می‌شد و با رفتن ماوس برمی‌گشت — «در hover گوشه کاملا گرد،
 * در حالت عادی نه».
 *
 * طبق فاز ۴ بند ۲، اعلان شعاع **حذف** شد نه اینکه قاعده سومی رویش نوشته شود.
 * شعاع هرگز نباید وابسته به حالت باشد؛ پایه و واریانت آن را تعیین می‌کنند.
 * بقیه اعلان‌ها که واقعا خاصیت حالت‌اند (خط زیر، سایه، outline) می‌مانند.
 */
.clinic-btn:hover,
.clinic-btn:focus,
.clinic-btn:active {
	text-decoration: none;
	box-shadow: none;
	outline: none;
}

/* STEP 66 — متنِ هر واریانت از توکنِ متنِ خودش (شاملِ :focus که components-v2 آن را
 * پوشش نمی‌دهد). پیش‌تر اینجا var(--clinic-bg) (سفیدِ ثابت) اجبار می‌شد که کنتراستِ
 * خودکار را در رنگ‌های روشن می‌شکست. حالا هم‌راستا با توکن‌ها و کنتراستِ خودکار است. */
.clinic-btn--primary,
.clinic-btn--primary:hover,
.clinic-btn--primary:focus {
	color: var(--clinic-btn-primary-text, var(--clinic-bg));
}
.clinic-btn--success,
.clinic-btn--success:hover,
.clinic-btn--success:focus {
	color: var(--clinic-btn-success-text, var(--clinic-bg));
}
.clinic-btn--danger,
.clinic-btn--danger:hover,
.clinic-btn--danger:focus {
	color: var(--clinic-btn-danger-text, var(--clinic-bg));
}

/* دکمه‌ی ghost — کاملاً توکن‌محور. سلکتورِ a. تخصصِ بالاتر دارد (۰،۲،۱) و باید
 * بماند تا بر استایلِ لینکِ ادمین غلبه کند؛ اما حالا فقط از توکن‌ها می‌خواند.
 * fallbackها رفتارِ قدیمی را حفظ می‌کنند اگر colors-v2 (تعریف‌گرِ توکن) لود نشده باشد. */
a.clinic-btn--ghost,
.clinic-btn--ghost {
	color: var(--clinic-btn-ghost-text, var(--clinic-primary));
}

a.clinic-btn--ghost:hover,
a.clinic-btn--ghost:focus,
.clinic-btn--ghost:hover,
.clinic-btn--ghost:focus {
	background: var(--clinic-btn-ghost-hover-bg, var(--clinic-primary));
	color: var(--clinic-btn-ghost-hover-text, var(--clinic-bg));
	border-color: var(--clinic-btn-ghost-hover-bg, var(--clinic-primary));
}

/* بوم دست‌نویس/امضا: قاب مشخص + پس‌زمینه‌ی سفید + فاصله‌ی داخلی. */
.clinic-pad__canvas {
	border: 2px solid var(--clinic-ink-border);
	border-radius: var(--clinic-border-radius);
	background: var(--clinic-bg);
	padding: var( --clinic-space-5 );
	touch-action: none;
	max-width: 100%;
	cursor: crosshair;
}

/* ====================================================================
 * فرم‌های پویا و خط‌زمانی (مرحله ۱۷)
 * ==================================================================== */

/* ردیف‌های سازنده‌ی فیلد. */
.clinic-field-row {
	display: flex;
	flex-wrap: wrap;
	gap: var( --clinic-space-4 );
	align-items: center;
	background: var(--clinic-bg-light);
	border-radius: var(--clinic-border-radius);
	padding: var( --clinic-space-5 );
	margin-bottom: var( --clinic-space-4 );
}

.clinic-field-row .clinic-input,
.clinic-field-row .clinic-select {
	margin-bottom: 0;
	max-width: 220px;
}

/* خط‌زمانی. */
.clinic-timeline {
	list-style: none;
	margin: 0;
	padding: 0;
}

.clinic-tl {
	display: flex;
	flex-wrap: wrap;
	gap: var( --clinic-space-4 ) var( --clinic-space-8 );
	align-items: center;
	padding: var( --clinic-space-6 ) var( --clinic-space-7 );
	margin-bottom: var( --clinic-space-4 );
	background: var(--clinic-bg);
	border: 1px solid var(--clinic-bg-light);
	border-right: 5px solid var(--clinic-muted);
	border-radius: var(--clinic-border-radius);
}

.clinic-tl--appointment { border-right-color: var(--clinic-primary); }
.clinic-tl--prescription { border-right-color: var(--clinic-success); }
.clinic-tl--chemo { border-right-color: var(--clinic-warning); }
.clinic-tl--file { border-right-color: var(--clinic-muted); }
.clinic-tl--form { border-right-color: var(--clinic-primary); }

.clinic-tl__date {
	min-width: 110px;
	color: var(--clinic-muted);
	font-size: 13px;
}

.clinic-tl__type {
	display: inline-block;
	padding: var( --clinic-space-1 ) var( --clinic-space-5 );
	border-radius: var(--clinic-radius-pill, 999px);
	background: var(--clinic-bg-light);
	color: var(--clinic-primary);
	font-size: 12px;
}

.clinic-tl__label {
	color: var(--clinic-text);
}

/* ====================================================================
 * تقویم شمسی (jalali picker)
 * ==================================================================== */
.clinic-jdate {
	max-width: 200px;
	cursor: pointer;
	background: var(--clinic-bg);
}

.clinic-pad { position: relative; }
.clinic-color-row { position: relative; }

/* بوم دست‌نویس و امضا. */
.clinic-pad {
	margin-bottom: var( --clinic-space-6 );
}

.clinic-pad__canvas {
	border: 1px solid var(--clinic-bg-light);
	border-radius: var(--clinic-border-radius);
	background: var(--clinic-bg);
	touch-action: none;
	max-width: 100%;
	cursor: crosshair;
}

.clinic-pad__toolbar {
	display: flex;
	gap: var( --clinic-space-3 );
	margin-top: var( --clinic-space-3 );
	flex-wrap: wrap;
}

/* نمایش تصاویر بوم در صفحه‌ی مشاهده. */
.clinic-rx-canvas-view {
	display: flex;
	flex-wrap: wrap;
	gap: var(--clinic-space);
	align-items: flex-start;
	justify-content: space-between;
}

.clinic-rx-handwriting-img,
.clinic-rx-signature-img {
	max-width: 100%;
	border: 1px solid var(--clinic-bg-light);
	border-radius: var(--clinic-border-radius);
	background: var(--clinic-bg);
}

.clinic-rx-sign-block {
	text-align: center;
}

@media print {
	/* STEP H4 — پنهان‌سازیِ کاملِ کرومِ وردپرس + کنترل‌های تعاملی؛ فقط محتوای گزارش چاپ شود.
	 * علتِ «چاپِ ناقص با منو»: قبلاً فقط #adminmenumain پنهان می‌شد و حاشیه‌ی #wpcontent صفر نمی‌شد
	 * ⇒ منو/سایدبار می‌ماند و محتوا کج/فشرده می‌افتاد. اینجا همه‌ی کرومِ ادمین + دکمه/فیلترها پنهان و
	 * محتوا تمام‌عرض می‌شود. (فقط @media print ⇒ نمایشِ عادیِ صفحه دست‌نخورده — درسِ STEP 125.) */
	#adminmenumain,
	#adminmenuback,
	#adminmenuwrap,
	#wpadminbar,
	#wpfooter,
	#screen-meta,
	#screen-meta-links,
	.update-nag,
	.notice,
	.updated,
	.error,
	.no-print,
	.clinic-title .clinic-btn,
	.clinic-list-head__actions,
	.clinic-list-head__toolbar,
	.clinic-segfilter,
	.clinic-segperiods,
	.clinic-filterbar,
	.clinic-appt-filters,
	.clinic-pp-chips,
	.clinic-pager,
	.clinic-bulkbar,
	.clinic-help-trigger,
	.clinic-help-panel,
	.clinic-chatbot-toggle {
		display: none !important;
	}

	/* محتوا تمام‌عرض: حذفِ حاشیه‌ی جای‌گرفته‌ی منوی ادمین. */
	html.wp-toolbar { padding-top: 0 !important; }
	#wpcontent,
	#wpbody,
	#wpbody-content {
		margin: 0 !important;
		padding: 0 !important;
	}
	.wrap,
	.clinic-wrap {
		margin: 0 !important;
		padding: 0 !important;
		max-width: none !important;
		width: auto !important;
	}

	/* رنگِ خوانا روی کاغذِ سفید + چاپِ پس‌زمینه‌ها (رنگِ برند حفظ). */
	body {
		background: var( --clinic-bg ) !important;
	}
	* {
		-webkit-print-color-adjust: exact !important;
		print-color-adjust: exact !important;
	}

	.clinic-card {
		box-shadow: none !important;
		border-color: var(--clinic-line, #ccc);
		break-inside: avoid;
	}
	/* هر بلوکِ گزارش/کارت/جدول در مرزِ درست بشکند (سند نصفه نیفتد — درسِ چاپِ STEP F). */
	.clinic-segkpi,
	.clinic-stat,
	.clinic-table tr,
	[data-clinic-chart] {
		break-inside: avoid;
	}
}

/*
 * --------------------------------------------------------------------
 * مرحله‌ی ۲۰: داشبورد مالی، گزارش‌ها و نمودارها
 * --------------------------------------------------------------------
 */

.clinic-subtitle {
	color: var(--clinic-muted);
	margin: -8px 0 var(--clinic-space);
}

.clinic-grid {
	display: grid;
	gap: var(--clinic-space);
	margin-bottom: var(--clinic-space);
}

.clinic-grid--2col {
	grid-template-columns: 1fr 1fr;
}

@media (max-width: 900px) {
	.clinic-grid--2col {
		grid-template-columns: 1fr;
	}
}

/*
 * STEP 110 — ریسپانسیوِ پیشخوان: جدول‌های عریض روی موبایل به‌جای شکستنِ صفحه، **درونِ کارت**
 * اسکرولِ افقیِ کنترل‌شده می‌گیرند (الگوی wrapper بدونِ تغییرِ markup؛ کارت ظرفِ جدول است).
 * فقط موبایل/تبلت — دسکتاپ دست‌نخورد. min-width تا جدول واقعاً اسکرول‌پذیر شود نه فشرده.
 */
@media ( max-width: 782px ) {
	.clinic-card { overflow-x: auto; -webkit-overflow-scrolling: touch; }
	.clinic-card > .clinic-table { min-width: 560px; }
	/* هدف‌های لمسیِ ≥۴۴px روی موبایل (دکمه‌های پیشخوان). */
	.clinic-wrap .clinic-btn { min-height: 44px; }
}

.clinic-card__title {
	margin: 0 0 var( --clinic-space-6 );
	color: var(--clinic-primary);
	font-size: 15px;
}

.clinic-form--inline {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var( --clinic-space-6 );
}

.clinic-form--inline .clinic-label {
	margin: 0;
}

.clinic-form--inline p {
	margin: 0;
}

.clinic-chart-donut {
	display: flex;
	align-items: center;
	gap: var(--clinic-space);
	flex-wrap: wrap;
}

.clinic-chart-legend {
	list-style: none;
	margin: 0;
	padding: 0;
}

.clinic-chart-legend li {
	display: flex;
	align-items: center;
	gap: var( --clinic-space-4 );
	margin-bottom: var( --clinic-space-3 );
	color: var(--clinic-text);
}

.clinic-chart-legend__dot {
	width: 12px;
	height: 12px;
	border-radius: 50%;
	flex: 0 0 auto;
}

/*
 * --------------------------------------------------------------------
 * مرحله‌ی ۲۱: پیام‌رسانی (چت) و نظرسنجی (ستاره)
 * --------------------------------------------------------------------
 */

.clinic-chat {
	display: flex;
	flex-direction: column;
	gap: var( --clinic-space-5 );
	max-height: 460px;
	overflow-y: auto;
	padding: var( --clinic-space-2 );
	margin-bottom: var(--clinic-space);
}

.clinic-chat__bubble {
	max-width: 75%;
	padding: var( --clinic-space-5 ) var( --clinic-space-7 );
	border-radius: var(--clinic-border-radius);
	box-shadow: var(--clinic-shadow);
}

.clinic-chat__bubble--mine {
	align-self: flex-start;
	background: var(--clinic-primary);
	color: var( --clinic-text-inverse );
}

.clinic-chat__bubble--mine .clinic-chat__meta {
	color: rgba(255, 255, 255, 0.8);
}

.clinic-chat__bubble--theirs {
	align-self: flex-end;
	background: var(--clinic-bg-light);
	color: var(--clinic-text);
}

.clinic-chat__meta {
	display: flex;
	gap: var( --clinic-space-4 );
	font-size: 11px;
	color: var(--clinic-muted);
	margin-bottom: var( --clinic-space-2 );
}

.clinic-chat__text {
	line-height: 1.7;
	word-break: break-word;
}

/* امتیاز ستاره‌ای (radio پنهان + label) */
.clinic-stars {
	display: inline-flex;
	flex-direction: row-reverse;
	gap: var( --clinic-space-2 );
	font-size: 34px;
	line-height: 1;
	margin-bottom: var(--clinic-space);
}

.clinic-stars input {
	display: none;
}

.clinic-stars label {
	cursor: pointer;
	color: var(--clinic-muted-on-dark, #d8d2e6);
	transition: color 0.15s;
}

.clinic-stars label:hover,
.clinic-stars label:hover ~ label,
.clinic-stars input:checked ~ label {
	color: var(--clinic-warning);
}

/*
 * --------------------------------------------------------------------
 * مرحله‌ی ۲۴: پنل تنظیمات جامع (تب‌ها + سطح پیشرفته)
 * --------------------------------------------------------------------
 */

.clinic-tabs__nav .clinic-tab .dashicons {
	vertical-align: middle;
	margin-inline-end: var( --clinic-space-2 );
	font-size: 16px;
	width: 16px;
	height: 16px;
}

.clinic-advanced {
	border: 1px dashed var(--clinic-bg-light);
	border-radius: var(--clinic-border-radius);
	padding: var( --clinic-space-6 ) var( --clinic-space-8 );
	margin: var( --clinic-space-6 ) 0;
	background: rgba(243, 232, 255, 0.25);
}

.clinic-adv-toggle {
	margin: var( --clinic-space-5 ) 0;
}

/*
 * --------------------------------------------------------------------
 * مرحله‌ی ۲۶: مرکز آموزش (Help Center)
 * --------------------------------------------------------------------
 */

.clinic-help-link {
	display: inline-block;
	margin-inline-start: var(--clinic-spacing-md);
	padding: var( --clinic-space-2 ) var( --clinic-space-7 );
	font-size: 13px;
	font-weight: 600;
	border-radius: var(--clinic-radius-pill, 999px);
	background: var(--clinic-bg-light);
	color: var(--clinic-primary);
	text-decoration: none;
	vertical-align: middle;
}

.clinic-help-link:hover {
	background: var(--clinic-primary);
	color: var(--clinic-bg);
}

.clinic-help-list {
	display: grid;
	gap: var(--clinic-spacing-lg);
}

.clinic-help-cat .clinic-card__name .dashicons {
	vertical-align: middle;
	margin-inline-end: var( --clinic-space-3 );
	color: var(--clinic-primary);
}

.clinic-help-item {
	border-bottom: 1px solid var(--clinic-border);
	padding: var(--clinic-spacing-sm) 0;
	scroll-margin-top: 80px; /* STEP I1 — انکر زیرِ نوارِ چسبانِ ادمین ننشیند. */
}

.clinic-help-item:last-child {
	border-bottom: none;
}

/* STEP I1 — هایلایتِ موقتِ مقاله‌ی هدفِ دیپ‌لینک (ملایمِ یاسیِ برند؛ متن دست‌نخورده و خوانا). */
.clinic-help-item--flash {
	animation: clinic-help-flash 2.2s ease-out 1;
	border-radius: 10px;
}
@keyframes clinic-help-flash {
	0%, 30% { background: var(--clinic-primary-100, #EDE8FF); box-shadow: 0 0 0 2px var(--clinic-primary, #4B2E83); }
	100% { background: transparent; box-shadow: none; }
}
@media (prefers-reduced-motion: reduce) {
	.clinic-help-item--flash { animation: none; background: var(--clinic-primary-100, #EDE8FF); }
}

.clinic-help-item > summary {
	cursor: pointer;
	font-weight: 600;
	color: var(--clinic-text);
	list-style: none;
	padding: var( --clinic-space-2 ) 0;
}

.clinic-help-item > summary::-webkit-details-marker {
	display: none;
}

.clinic-help-item > summary::before {
	content: '+';
	display: inline-block;
	width: 1.4em;
	color: var(--clinic-primary);
	font-weight: 700;
}

.clinic-help-item[open] > summary::before {
	content: '−';
}

.clinic-help-answer {
	padding: var(--clinic-spacing-sm) var(--clinic-spacing-lg);
	color: var(--clinic-muted);
	line-height: 2;
}

/* TIER 1: چک‌باکس درون‌خطی (یادآور/تنظیمات) */
.clinic-check-inline {
	display: inline-flex;
	align-items: center;
	gap: var( --clinic-space-3 );
	margin-inline-end: var(--clinic-spacing-md);
}

/* TIER 3: نوار جستجوی سراسری + autocomplete */
.clinic-global-search-wrap { position: relative; display: inline-block; margin-inline-start: var(--clinic-spacing-md); }
.clinic-global-search-wrap .clinic-input { display: inline-block; width: 220px; margin: 0; padding: var( --clinic-space-3 ) var( --clinic-space-6 ); font-size: 13px; }
.clinic-search-suggest { position: absolute; z-index: 50; inset-inline-start: 0; top: 100%; min-width: 280px; background: var(--clinic-bg); border: 1px solid var(--clinic-border); border-radius: var(--clinic-border-radius); box-shadow: var(--clinic-shadow); max-height: 320px; overflow-y: auto; }
.clinic-search-suggest__item { display: block; padding: var( --clinic-space-4 ) var( --clinic-space-6 ); border-bottom: 1px solid var(--clinic-border); color: var(--clinic-text); text-decoration: none; font-size: 13px; }
.clinic-search-suggest__item:hover { background: var(--clinic-bg-light); }

/* TIER 3: مرکز اعلان‌ها */
.clinic-notif-list { list-style: none; margin: 0; padding: 0; }
.clinic-notif-item { border-bottom: 1px solid var(--clinic-border); }
.clinic-notif-item:last-child { border-bottom: none; }
.clinic-notif-item a { display: flex; align-items: center; gap: var( --clinic-space-5 ); padding: var( --clinic-space-6 ) var( --clinic-space-4 ); color: var(--clinic-text); text-decoration: none; }
.clinic-notif-item a:hover { background: var(--clinic-bg-light); }
.clinic-notif-text { flex: 1; }
.clinic-notif-icon { font-size: 18px; }
.clinic-notif--urgent { border-inline-start: 4px solid var(--clinic-warning); }
.clinic-notif--important { border-inline-start: 4px solid var(--clinic-amber, #e0a500); }
.clinic-notif--normal { border-inline-start: 4px solid var(--clinic-primary); }
.clinic-notif--low { border-inline-start: 4px solid var(--clinic-muted); }
.clinic-notif-empty { color: var(--clinic-muted); }

/* STEP 129: دکمه‌ی محبوب‌ها = آیکونِ ستاره‌ی دایره‌ای (بدونِ متن، در همه‌ی صفحات).
 * دایره‌ی برندِ بنفش + ستاره‌ی طلایی (کنتراست ~۷:۱ روی بنفش، مستقل از پس‌زمینه‌ی صفحه). */
.clinic-nav-pin {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 36px;
	height: 36px;
	padding: 0;
	border: none;
	border-radius: var( --clinic-radius-pill );
	background: var(--clinic-primary, #4B2E83);
	/* ستاره از currentColor خوانده می‌شود؛ fallbackِ literal برای زمانِ نبودِ colors-v2. */
	color: var(--clinic-gold, #FFD700);
	cursor: pointer;
	margin-inline-start: var(--clinic-spacing-sm, 12px);
	vertical-align: middle;
	line-height: 0;
	box-shadow: 0 1px 3px rgba(0, 0, 0, 0.18);
	flex: 0 0 auto;
}
.clinic-nav-pin svg { width: 20px; height: 20px; display: block; }
/* hover: دایره کمی تیره‌تر می‌شود (نه روشن) تا ستاره‌ی طلایی هرگز نامرئی نشود. */
.clinic-nav-pin:hover { background: color-mix( in srgb, var(--clinic-primary, #4B2E83), #000 16% ); }
.clinic-nav-pin:focus-visible { outline: 2px solid var(--clinic-gold, #FFD700); outline-offset: 2px; }

/* TIER 3: ویجت چت شناور */
.clinic-chatbot { position: fixed; inset-inline-end: var( --clinic-space-12 ); bottom: var( --clinic-space-12 ); z-index: 99999; font-family: var(--clinic-font-family); }
.clinic-chatbot-toggle { width: 54px; height: 54px; border-radius: 50%; border: none; background: var(--clinic-primary); color: var( --clinic-text-inverse ); font-size: 24px; cursor: pointer; box-shadow: var(--clinic-shadow); }
.clinic-chatbot-panel { position: absolute; inset-inline-end: 0; bottom: var( --clinic-space-32 ); width: 320px; max-width: 90vw; background: var(--clinic-bg); border: 1px solid var(--clinic-border); border-radius: var(--clinic-border-radius); box-shadow: 0 8px 24px rgba(0,0,0,0.2); overflow: hidden; }
.clinic-chatbot-head { background: var(--clinic-primary); color: var( --clinic-text-inverse ); padding: var( --clinic-space-6 ) var( --clinic-space-8 ); font-weight: 700; }
.clinic-chatbot-log { padding: var( --clinic-space-6 ); max-height: 320px; overflow-y: auto; display: flex; flex-direction: column; gap: var( --clinic-space-4 ); }
.clinic-chatbot-msg { padding: var( --clinic-space-4 ) var( --clinic-space-6 ); border-radius: var(--clinic-border-radius); font-size: 13px; line-height: 1.8; max-width: 85%; }
.clinic-chatbot-msg--user { align-self: flex-start; background: var(--clinic-primary); color: var( --clinic-text-inverse ); }
.clinic-chatbot-msg--bot { align-self: flex-end; background: var(--clinic-bg-light); color: var(--clinic-text); }
.clinic-chatbot-live { display: block; text-align: center; padding: var( --clinic-space-3 ); font-size: 12px; }
.clinic-chatbot-form { display: flex; gap: var( --clinic-space-3 ); padding: var( --clinic-space-5 ); border-top: 1px solid var(--clinic-border); }
.clinic-chatbot-form .clinic-input { margin: 0; }

/* TIER 3: برد کانبان وظایف */
.clinic-kanban { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--clinic-spacing-md); }
@media (max-width: 900px) { .clinic-kanban { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .clinic-kanban { grid-template-columns: 1fr; } }
.clinic-kanban-col { background: var(--clinic-bg-light); border-radius: var(--clinic-border-radius); padding: var(--clinic-spacing-sm); }
.clinic-kanban-col__title { margin: 0 0 var(--clinic-spacing-sm); color: var(--clinic-primary); font-size: 14px; }
.clinic-kanban-list { min-height: 80px; display: flex; flex-direction: column; gap: var( --clinic-space-4 ); }
.clinic-kanban-list.is-over { outline: 2px dashed var(--clinic-primary); border-radius: var(--clinic-border-radius); }
.clinic-kanban-card { background: var(--clinic-bg); border: 1px solid var(--clinic-border); border-radius: var(--clinic-border-radius); padding: var( --clinic-space-5 ); cursor: grab; box-shadow: var(--clinic-shadow); border-inline-start: 4px solid var(--clinic-muted); }
.clinic-kanban-card.is-dragging { opacity: 0.5; }
.clinic-kanban-meta { display: flex; flex-wrap: wrap; gap: var( --clinic-space-3 ); margin-top: var( --clinic-space-3 ); font-size: 12px; color: var(--clinic-muted); }
.clinic-pri--urgent { border-inline-start-color: var(--clinic-warning); }
.clinic-pri--high { border-inline-start-color: var(--clinic-amber, #e0a500); }
.clinic-pri--medium { border-inline-start-color: var(--clinic-primary); }
.clinic-pri--low { border-inline-start-color: var(--clinic-muted); }

/* بخش آموزش: دکمه‌ی نشان‌کردن */
.clinic-bookmark { background: none; border: none; cursor: pointer; font-size: 16px; color: var(--clinic-muted); float: left; }
.clinic-bookmark.is-on { color: var(--clinic-warning); }

/* چندزبانه: جهت چپ‌چین برای زبان انگلیسی */
body.clinic-ltr .clinic-wrap[dir="ltr"] { direction: ltr; text-align: left; }
body.clinic-ltr .clinic-wrap[dir="ltr"] .clinic-table th,
body.clinic-ltr .clinic-wrap[dir="ltr"] .clinic-table td,
body.clinic-ltr .clinic-wrap[dir="ltr"] .clinic-info-table th,
body.clinic-ltr .clinic-wrap[dir="ltr"] .clinic-info-table td { text-align: left; }

/*
 * --------------------------------------------------------------------
 * نسخه ۱.۲.۱: بهبود گوشه‌ها، دکمه‌ها، کارت‌ها و تقویم شمسی
 * --------------------------------------------------------------------
 */

:root {
	--clinic-border-radius-sm: 6px;
	--clinic-border-radius-lg: 16px;
}

/* اطمینان از فونت و گردی یکدست روی همه‌ی دکمه‌ها و ورودی‌ها */
.clinic-btn,
.clinic-input,
.clinic-select,
.clinic-textarea,
.clinic-badge,
.clinic-card,
.clinic-modal,
.clinic-notice {
	font-family: var(--clinic-font-family);
}

/* نشان‌ها گردی کوچک‌تر */
.clinic-badge {
	border-radius: var(--clinic-radius-pill, 999px);
}

/* جدول‌ها: گوشه‌های گرد با برش لبه‌ها */
.clinic-table {
	border-radius: var(--clinic-border-radius);
	overflow: hidden;
}

/* مقدار کارت‌های شاخص: مرکزچین و خوانا */
.clinic-card-value {
	line-height: 1.25;
}

.clinic-card--metric .clinic-card-content {
	text-align: center;
}

/* انتقال نرم روی دکمه‌ها (بدون تغییر گردی هنگام hover) */
.clinic-btn {
	transition: opacity 0.2s ease, box-shadow 0.2s ease, transform 0.1s ease;
}

.clinic-btn:active {
	transform: translateY(1px);
}

/* STEP 32: محفظه‌ی autocomplete پروتکل شیمی */
.clinic-autocomplete-wrap { position: relative; max-width: 360px; }
/* STEP 215-B: هر دو سر با خاصیت منطقی بسته می‌شوند (پیش‌تر یکی منطقی و یکی فیزیکی بود). */
.clinic-autocomplete-wrap .clinic-search-suggest { position: absolute; inset-inline: 0; top: 100%; z-index: 50; }

/*
 * --------------------------------------------------------------------
 * نسخه ۱.۲.۲ — STEP 30/31: تب‌های چسبان + فاصله‌های یکدست
 * --------------------------------------------------------------------
 */

/* نوار تب‌های هاب تنظیمات: چسبان به بالا + اسکرول افقی */
.clinic-tabs__nav {
	position: sticky;
	top: var( --clinic-space-16 ); /* زیر admin bar */
	z-index: 20;
	background: transparent;
}

@media screen and (max-width: 782px) {
	.clinic-tabs__nav {
		top: 46px;
	}
}

.clinic-tabs__panel {
	animation: clinic-fade-up 0.25s ease;
}

/* فاصله‌ی یکدست جداول (تکمیل STEP 31) */
.clinic-table th,
.clinic-table td {
	padding: var(--clinic-spacing-md) var(--clinic-spacing-md);
}

.clinic-table tbody tr {
	transition: background 0.18s ease;
}

/* فاصله‌ی بین کارت‌های شبکه‌ای */
.clinic-cards,
.clinic-grid {
	gap: var(--clinic-spacing-lg);
}

/* فرم: فاصله‌ی پایانی هر گروه */
.clinic-card form .clinic-label:first-child {
	margin-top: 0;
}

/* ============================================================
 * STEP 35 — جستجوی داشبورد، کارت ماژول‌ها، پرونده‌ی جامع (CRM)
 * ============================================================ */

/* نوار جستجوی بزرگ داشبورد */
.clinic-dashboard-search {
	display: flex;
	gap: var(--clinic-spacing-sm);
	align-items: center;
	margin: var(--clinic-spacing-md) 0;
}
.clinic-dashboard-search .clinic-search-main {
	flex: 1 1 auto;
	font-size: 1.05rem;
	padding: calc(var(--clinic-spacing-sm) ) ;
	border-radius: var(--clinic-radius-lg, 14px);
}
.clinic-dashboard-search .clinic-btn {
	flex: 0 0 auto;
}

/* کارت مدیریت ماژول‌ها در نوار کناری داشبورد */
.clinic-modules-card .clinic-card__desc {
	margin: var(--clinic-spacing-sm) 0;
}

/* پرونده‌ی جامع بیمار (CRM) */
.clinic-crm__header {
	display: flex;
	flex-wrap: wrap;
	gap: var(--clinic-spacing-md);
	align-items: center;
}
.clinic-crm__avatar {
	flex: 0 0 auto;
	width: 72px;
	height: 72px;
	border-radius: 50%;
	overflow: hidden;
	background: var(--clinic-bg-light);
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 2rem;
}
.clinic-crm__avatar img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}
.clinic-crm__id {
	flex: 1 1 240px;
}
.clinic-crm__id .clinic-title {
	margin: 0 0 var(--clinic-spacing-xs);
}
.clinic-crm__actions {
	display: flex;
	gap: var(--clinic-spacing-sm);
	flex-wrap: wrap;
}
.clinic-crm__stats {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: var(--clinic-spacing-md);
	margin: var(--clinic-spacing-md) 0;
}
.clinic-crm__stat {
	text-align: center;
	display: flex;
	flex-direction: column;
	gap: var(--clinic-spacing-xs);
	padding: var(--clinic-spacing-md);
}
.clinic-crm__stat-icon {
	font-size: 1.6rem;
}
.clinic-crm__stat-num {
	font-size: 1.5rem;
	font-weight: 700;
	color: var(--clinic-primary);
}
.clinic-crm__stat-label {
	color: var(--clinic-text-muted, #666);
	font-size: 0.9rem;
}
.clinic-crm__timeline {
	list-style: none;
	margin: 0;
	padding: 0;
}
.clinic-crm__timeline li {
	padding: var(--clinic-spacing-sm) 0;
	border-bottom: 1px solid var(--clinic-border, #eee);
	display: flex;
	gap: var(--clinic-spacing-sm);
	align-items: center;
}
.clinic-crm__timeline li:last-child {
	border-bottom: none;
}
.clinic-crm__dot {
	flex: 0 0 auto;
}

@media (max-width: 900px) {
	.clinic-crm__stats {
		grid-template-columns: repeat(2, 1fr);
	}
	.clinic-dashboard-search {
		flex-wrap: wrap;
	}
}

/* نشانگر نوبت‌های آزاد در فرم رزرو (STEP 43) */
.clinic-appt-slots {
	margin: var(--clinic-spacing-xs) 0 var(--clinic-spacing-md);
	font-size: 13px;
	font-weight: 600;
}
.clinic-appt-slots--ok {
	color: var(--clinic-success);
}
.clinic-appt-slots--full {
	color: var(--clinic-warning);
}

/* ============================================================
 * کانبانِ کاملِ ترلویی (STEP 38)
 * ============================================================ */
.kanban-filter-bar { display: flex; gap: var( --clinic-space-6 ); margin-bottom: var( --clinic-space-8 ); flex-wrap: wrap; align-items: center; }
.kanban-filter-bar input, .kanban-filter-bar select {
	padding: var( --clinic-space-3 ) var( --clinic-space-6 ); border: 1px solid var(--clinic-border); border-radius: var(--clinic-border-radius);
	font-family: var(--clinic-font-family); background: var(--clinic-bg); color: var(--clinic-text);
}

/* افزودنِ سریع */
.kanban-add-card { margin-top: var( --clinic-space-4 ); }
.kanban-add-trigger {
	width: 100%; padding: var( --clinic-space-4 ); background: transparent; border: 2px dashed var(--clinic-border);
	border-radius: var(--clinic-border-radius); cursor: pointer; color: var(--clinic-muted);
	font-family: var(--clinic-font-family); transition: border-color 0.2s, color 0.2s;
}
.kanban-add-trigger:hover { border-color: var(--clinic-primary); color: var(--clinic-primary); }
.kanban-add-form .kanban-new-title { width: 100%; padding: var( --clinic-space-4 ); border: 1px solid var(--clinic-border); border-radius: var(--clinic-border-radius); margin-bottom: var( --clinic-space-3 ); font-family: var(--clinic-font-family); }
.kanban-add-actions { display: flex; gap: var( --clinic-space-3 ); }

/* کارت: نوار لیبل + چک‌لیست */
.kanban-card-labels { display: flex; flex-wrap: wrap; gap: 3px; margin-bottom: var( --clinic-space-3 ); }
.kanban-label-badge { display: inline-flex; align-items: center; gap: var( --clinic-space-2 ); padding: var( --clinic-space-1 ) var( --clinic-space-5 ); border-radius: var(--clinic-radius-pill, 999px); font-size: 11px; color: var( --clinic-text-inverse ); }
.kanban-label-badge button { background: none; border: none; color: var( --clinic-text-inverse ); cursor: pointer; font-size: 11px; padding: 0; }
.kanban-card-checklist { font-size: 11px; color: var(--clinic-success); }

/* مدال */
.kanban-modal-overlay {
	position: fixed; inset: 0; background: rgba(0,0,0,0.5);
	display: none; align-items: center; justify-content: center; z-index: 100000;
	opacity: 0; transition: opacity 0.2s;
}
.kanban-modal-overlay.active { display: flex; opacity: 1; }
.kanban-modal {
	background: var(--clinic-bg); border-radius: var(--clinic-border-radius); width: 600px; max-width: 92vw;
	max-height: 85vh; overflow-y: auto; padding: 28px; box-shadow: 0 8px 32px rgba(75,46,131,0.2);
	direction: rtl; font-family: var(--clinic-font-family); transform: translateY(20px); transition: transform 0.2s; position: relative;
}
.kanban-modal-overlay.active .kanban-modal { transform: translateY(0); }
/* STEP 215-B: دکمه بستن در سر انتهایی خط (در RTL همان چپ) — با خاصیت منطقی. */
.kanban-modal-close { position: absolute; top: var( --clinic-space-7 ); inset-inline-end: var( --clinic-space-8 ); background: none; border: none; font-size: 18px; cursor: pointer; color: var(--clinic-muted); }
.kanban-modal .field-group { margin-bottom: var( --clinic-space-8 ); }
.kanban-modal-row { display: flex; gap: var( --clinic-space-6 ); flex-wrap: wrap; }
.kanban-modal-row .field-group { flex: 1 1 200px; }
.kanban-modal label { display: block; margin-bottom: var( --clinic-space-3 ); font-weight: 600; font-size: 13px; color: var(--clinic-primary); }
.kanban-modal input, .kanban-modal select, .kanban-modal textarea {
	width: 100%; padding: var( --clinic-space-5 ) var( --clinic-space-7 ); border: 1px solid var(--clinic-border);
	/* HOTFIX فونت: صریح به‌جای inherit تا کنترل‌های فرمِ مودال فونتِ تم را بگیرند. */
	border-radius: var(--clinic-border-radius); font-family: var(--clinic-font-family, 'Vazirmatn', 'IRANSans', Tahoma, sans-serif); font-size: 14px;
	background: var(--clinic-bg); color: var(--clinic-text); box-sizing: border-box;
}
.kanban-modal textarea { min-height: 90px; resize: vertical; }
.kanban-modal-actions { display: flex; justify-content: space-between; margin-top: var( --clinic-space-10 ); padding-top: var( --clinic-space-8 ); border-top: 1px solid var(--clinic-border); }
.kanban-btn-delete { color: var(--clinic-warning); background: none; border: 1px solid var(--clinic-warning); border-radius: var(--clinic-border-radius); padding: var( --clinic-space-4 ) var( --clinic-space-8 ); cursor: pointer; font-family: var(--clinic-font-family); }
.kanban-btn-save { background: var(--clinic-primary); color: var( --clinic-text-inverse ); border: none; border-radius: var(--clinic-border-radius); padding: var( --clinic-space-4 ) var( --clinic-space-12 ); cursor: pointer; font-family: var(--clinic-font-family); }

/* چک‌لیست */
.kanban-checklist-progress { height: 6px; background: var(--clinic-bg-light); border-radius: 3px; margin-bottom: var( --clinic-space-3 ); }
.kanban-checklist-progress-bar { height: 100%; background: var(--clinic-success); border-radius: 3px; transition: width 0.3s; }
.kanban-checklist-count { font-size: 12px; color: var(--clinic-muted); margin-bottom: var( --clinic-space-4 ); }
.kanban-check-item { display: flex; justify-content: space-between; align-items: center; padding: 3px 0; }
.kanban-check-item label { display: inline; font-weight: 400; color: var(--clinic-text); }
.kanban-ck-del { background: none; border: none; color: var(--clinic-warning); cursor: pointer; }
.kanban-check-add, .kanban-label-add { display: inline-flex; gap: var( --clinic-space-3 ); margin-top: var( --clinic-space-4 ); align-items: center; }
.kanban-check-add input, .kanban-label-add input { width: auto; }

/* لیبل‌ها و کامنت‌ها در مدال */
.kanban-labels-box { display: flex; flex-wrap: wrap; gap: var( --clinic-space-3 ); align-items: center; }
.kanban-comment { border-bottom: 1px solid var(--clinic-border); padding: var( --clinic-space-4 ) 0; }
.kanban-comment p { margin: var( --clinic-space-2 ) 0 0; }
.kanban-comment-add { margin-top: var( --clinic-space-5 ); }
.kanban-card:hover { box-shadow: 0 4px 12px rgba(75,46,131,0.12); transform: translateY(-1px); }
.clinic-kanban-list.is-over { background: var(--clinic-bg-light); }

/* ============================================================
 * راهنمای متنی (Contextual Help) — STEP 40 / FIX-C
 * ============================================================ */
.clinic-help-trigger {
	/* STEP 215-B: خاصیت منطقی (در RTL همان چپ؛ ولی اگر روزی LTR شد درست می‌ماند). */
	position: fixed; bottom: var( --clinic-space-12 ); inset-inline-end: var( --clinic-space-12 ); z-index: 99999;
	background: var(--clinic-primary); color: var( --clinic-text-inverse ); border: none;
	border-radius: var(--clinic-radius-pill, 999px); padding: var( --clinic-space-5 ) var( --clinic-space-10 );
	font-family: var(--clinic-font-family); font-size: 14px; font-weight: 600;
	cursor: pointer; box-shadow: var(--clinic-shadow);
	transition: transform 0.2s, box-shadow 0.2s;
}
.clinic-help-trigger:hover { transform: translateY(-2px); box-shadow: 0 6px 20px rgba(75,46,131,0.4); }

.clinic-help-panel {
	position: fixed; top: var( --clinic-space-16 ); left: 0; width: 320px; max-width: 90vw;
	height: calc(100vh - 32px); background: var(--clinic-bg);
	box-shadow: 4px 0 24px rgba(0,0,0,0.15); z-index: 100000;
	transform: translateX(-100%); transition: transform 0.3s ease;
	overflow-y: auto; direction: rtl; font-family: var(--clinic-font-family); padding: var( --clinic-space-10 );
}
.clinic-help-panel.active { transform: translateX(0); }
.clinic-help-panel .help-close {
	/* STEP 215-B: خاصیت منطقی. */
	position: absolute; top: var( --clinic-space-6 ); inset-inline-end: var( --clinic-space-6 ); background: none; border: none;
	font-size: 20px; cursor: pointer; color: var(--clinic-muted);
}
.clinic-help-panel h3 { color: var(--clinic-primary); margin: 0 0 var( --clinic-space-8 ); }
.clinic-help-panel .help-search { margin-bottom: var( --clinic-space-8 ); }
.clinic-help-panel .help-article {
	display: block; padding: var( --clinic-space-5 ) var( --clinic-space-6 ); margin-bottom: var( --clinic-space-3 );
	border-radius: var(--clinic-border-radius); text-decoration: none;
	color: var(--clinic-text); transition: background 0.2s;
}
.clinic-help-panel .help-article:hover { background: var(--clinic-bg-light); }
.clinic-help-panel .help-article small { color: var(--clinic-muted); }
.clinic-help-panel .help-empty { color: var(--clinic-muted); }
.clinic-help-panel .help-all { display: block; margin-top: var( --clinic-space-8 ); text-align: center; }

@media print { .clinic-help-trigger, .clinic-help-panel { display: none !important; } }

/* ====================================================================
 * STEP 54B — تم‌سازیِ persian-datepicker مطابق پالت پروژه (var( --clinic-primary ))
 * (کتابخانه‌ی ثالث؛ استثنای آگاهانه‌ی تأییدشده بر قانون قرمز #۱.)
 * ==================================================================== */
.datepicker-plot-area {
	font-family: var(--clinic-font-family, Vazirmatn, sans-serif) !important;
	z-index: 100001 !important; /* بالاتر از نوار مدیریت/مدال‌ها */
	border-radius: var( --clinic-radius-sm ) !important; /* STEP 79 (استایلِ کارفرما) */
}
/* STEP 79 (استایلِ کارفرما): نوارِ navigator/toolbox سفید (پس‌زمینه‌ی صفحه). متنِ پیکان/سوییچِ
 * navigator به رنگِ برند تا روی سفید خوانا بماند (وگرنه سفید-روی-سفید نامرئی می‌شد).
 * توجه: کلاسِ واقعیِ vendor «datepicker-navigator» است (نه «navigator»)؛ هر دو هدف گرفته شد. */
.datepicker-plot-area .datepicker-navigator,
.datepicker-plot-area .navigator,
.datepicker-plot-area .toolbox {
	background: var(--clinic-bg, #fff) !important;
}
.datepicker-plot-area .datepicker-navigator .pwt-btn-next,
.datepicker-plot-area .datepicker-navigator .pwt-btn-prev,
.datepicker-plot-area .datepicker-navigator .pwt-btn-switch,
.datepicker-plot-area .navigator .btn {
	color: var(--clinic-primary, #4B2E83) !important;
}
.datepicker-plot-area table td.selected span,
.datepicker-plot-area .datepicker-day-view .table-days td.selected span,
.datepicker-plot-area .table-days td.selected span {
	background: var(--clinic-primary, #4B2E83) !important;
	color: var(--clinic-on-primary, #fff) !important; /* STEP B — توکنِ کنتراستِ خودکار (نه هگزِ خام). */
	border-radius: 5px !important; /* STEP 79 (استایلِ کارفرما) */
}
/* STEP B — خانه‌ی «امروز»: پس‌زمینه‌ی صریحِ یاسیِ روشن + متنِ بنفشِ خوانا (ضدِّ پس‌زمینه‌ی تیره/سیاهِ
 * پیش‌فرضِ vendor که متنِ بنفش را ناخوانا می‌کرد). کنتراستِ بنفش روی یاسیِ روشن ≈ ۹:۱. */
.datepicker-plot-area table td.today span,
.datepicker-plot-area .table-days td.today span {
	background: var(--clinic-primary-100, #EDE8FF) !important;
	border: 1px solid var(--clinic-primary, #4B2E83) !important;
	border-color: var(--clinic-primary, #4B2E83) !important;
	color: var(--clinic-primary, #4B2E83) !important;
	border-radius: 5px !important;
}
/* HOTFIX (نوار پایینِ تقویم ناخوانا): کلاس‌های واقعیِ کتابخانه `.pwt-btn-today`/
 * `.pwt-btn-submit`/`.pwt-btn-calendar`اند (نه `.btn-today`/`.btn-submit` که هرگز
 * match نمی‌شدند ⇒ نوار با ارتفاعِ ۲۴px و فونتِ ۱۱px فشرده می‌ماند). سلکتورها از
 * خروجیِ واقعیِ DOM (تستِ CDP) گرفته شده‌اند. رنگ‌ها از پالت (var)؛ جداسازیِ بصریِ
 * دکمه‌ها با حاشیه‌ی نیمه‌شفافِ سفید (همان «/شفافیت»ِ مجاز، نه hex خام). */
.datepicker-plot-area .toolbox {
	min-height: 44px !important;
	padding: var( --clinic-space-3 ) var( --clinic-space-4 ) !important;
	box-sizing: border-box !important;
}
/* STEP 66 — رنگِ دکمه‌های toolbox از توکن‌های primaryِ سیستمِ دکمه می‌آید (ابعاد/فاصله‌ها
 * دست‌نخورده). `!important` توجیه‌شده است چون باید بر CSSِ vendorِ persian-datepicker
 * غلبه کند (خارج از کنترلِ ما — استثنای مجازِ Phase ۳). */
.datepicker-plot-area .toolbox .pwt-btn-today,
.datepicker-plot-area .toolbox .pwt-btn-submit,
.datepicker-plot-area .toolbox .pwt-btn-calendar {
	background-color: var(--clinic-btn-primary-bg, var(--clinic-primary, #4B2E83)) !important;
	color: var(--clinic-btn-primary-text, #fff) !important;
	height: 32px !important;
	min-height: 32px !important;
	line-height: 32px !important;
	min-width: 64px !important;
	padding: 0 var( --clinic-space-7 ) !important;
	margin: 0 0 0 var( --clinic-space-4 ) !important; /* فاصله‌ی بین دکمه‌ها (float:right در RTL) */
	border: 1px solid rgba( 255, 255, 255, 0.35 ) !important;
	border-radius: var( --clinic-radius-sm ) !important;
	font-family: var(--clinic-font-family, 'Vazirmatn', 'IRANSans', Tahoma, sans-serif) !important;
	font-size: 13px !important;
	font-weight: 700 !important;
	white-space: nowrap !important;
}
.datepicker-plot-area .toolbox .pwt-btn-today:hover,
.datepicker-plot-area .toolbox .pwt-btn-submit:hover,
.datepicker-plot-area .toolbox .pwt-btn-calendar:hover {
	background-color: var(--clinic-btn-primary-hover-bg, var(--clinic-primary, #4B2E83)) !important;
	color: var(--clinic-btn-primary-hover-text, #fff) !important;
	border-color: var(--clinic-btn-primary-hover-bg, var(--clinic-primary, #4B2E83)) !important;
}
/* STEP 79 (استایلِ کارفرما): دکمه‌های «تأیید/تقویم» فشرده‌تر (padding 0 5px). */
.datepicker-plot-area .toolbox .pwt-btn-submit,
.datepicker-plot-area .toolbox .pwt-btn-calendar {
	padding: 0 5px !important;
	min-width: 0 !important;
}
/* STEP 79 (استایلِ کارفرما): هدینگ‌ها فونتِ خود را از والد ارث ببرند — اسکوپِ امن به
 * ناحیه‌ی کلینیک و تقویم (نه سراسرِ قالبِ سایت) تا چیدمانِ صفحاتِ عمومیِ سایت دست‌نخورد. */
.rtl .clinic-wrap h1, .rtl .clinic-wrap h2, .rtl .clinic-wrap h3,
.rtl .clinic-wrap h4, .rtl .clinic-wrap h5, .rtl .clinic-wrap h6,
.datepicker-plot-area h1, .datepicker-plot-area h2, .datepicker-plot-area h3,
.datepicker-plot-area h4, .datepicker-plot-area h5, .datepicker-plot-area h6 {
	font-family: inherit !important;
}
/* STEP 79: ellipsisِ تک‌خطیِ برچسبِ سطرِ هفتگیِ تقویمِ نوبت‌ها (نامِ کاملِ پزشک). */
.agenda-week__rowlbl { max-width: 150px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* STEP 80: رفعِ آینه‌شدنِ پیکانِ ناوبریِ تقویم در RTL. کاراکترهای ‹/› (U+2039/203A) و </>
 * دارای خاصیتِ Bidi_Mirrored هستند ⇒ در contextِ RTL آینه و برعکس دیده می‌شوند (هرچند
 * textContent همان می‌ماند — به همین دلیل تستِ ۷۹ که textContent را می‌سنجید آن را نگرفت).
 * راه‌حل: گلیفِ پیکان در یک context‌ِ LTRِ ایزوله رندر شود ⇒ گلیفِ منبع = گلیفِ نمایش (بدونِ آینه).
 * جایگاهِ دکمه از flexِ RTLِ والد می‌آید و دست‌نخورده می‌ماند. (vendor دست‌کاری نمی‌شود — فقط CSS.) */
.clinic-cal__nav,
.datepicker-plot-area .datepicker-navigator .pwt-btn-next,
.datepicker-plot-area .datepicker-navigator .pwt-btn-prev,
.clinic-nav-arrow {
	direction: ltr;
	unicode-bidi: isolate;
}
/* STEP 80 (بخش C): کارتِ خلاصه‌ی بیمارِ پیش‌پر در فرمِ افزودنِ نوبت. توکن‌محور. */
.bw-prefill {
	display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: var( --clinic-space-6 );
	padding: var( --clinic-space-6 ) var( --clinic-space-8 ); margin-bottom: var( --clinic-space-8 );
	border: 1px solid var(--clinic-border); border-radius: var(--clinic-form-radius, 8px); background: var(--clinic-bg-light);
}
.bw-prefill__main { display: flex; flex-wrap: wrap; gap: var( --clinic-space-3 ) var( --clinic-space-8 ); align-items: center; }
.bw-prefill__name { font-weight: 700; color: var(--clinic-primary); font-size: 15px; }
.bw-prefill__meta { font-size: 13px; color: var(--clinic-text); }
.bw-prefill__actions { display: flex; gap: var( --clinic-space-4 ); flex-wrap: wrap; }
/* STEP 79: چیپ‌های «تعداد در هر صفحه»ی لیستِ بیماران (به‌جای select). توکن‌محور. */
.patients-perpage { display: inline-flex; align-items: center; gap: var( --clinic-space-3 ); flex-wrap: wrap; }
.patients-perpage__label { font-size: 12px; color: var(--clinic-muted); }
.perpage-chip {
	min-width: 36px; padding: 5px var( --clinic-space-6 ); cursor: pointer; font-size: 13px;
	border: 1.5px solid var(--clinic-border); border-radius: var(--clinic-radius-pill, 999px);
	background: var(--clinic-bg); color: var(--clinic-muted);
	font-family: var(--clinic-font-family, 'Vazirmatn', Tahoma, sans-serif); line-height: 1.4;
}
.perpage-chip.is-active {
	border-color: var(--clinic-primary); background: var(--clinic-bg-light); color: var(--clinic-primary); font-weight: 700;
}

/* ====================================================================
 * STEP 65 — تضمینِ اعمالِ سراسریِ فونتِ تم (var(--clinic-font-family)).
 *
 * مسئله: فونتِ انتخابیِ تم‌ساز از طریقِ متغیرِ --clinic-font-family پخش می‌شود که
 * با inject()/inline_css() ست می‌شود. اما عناصرِ append‌شده به <body> یا نوار مدیریت
 * (کشوی اعلان) از .clinic-wrap ارث نمی‌برند، و کنترل‌های فرم فونت را به‌صورت پیش‌فرض
 * ارث نمی‌گیرند. این بلوک، فونتِ تم را به همه‌ی این کانتکست‌ها می‌رساند.
 *
 * استثنا (دست‌نخورده، طبق فاز ۱): سلکتورهای آیکون، @font-face، رجیستریِ فونت، و
 * monospaceِ عمدی (شماره‌ی تلفن `.patient-row__phone`/`__mobile` و کدِ `code/pre`).
 * fallback همان پیش‌فرضِ :root است تا اگر متغیر تعریف نشد، رفتار قبلی حفظ شود.
 * ==================================================================== */
.clinic-wrap,
.clinic-admin-ui,
.clinic-dashboard,
.clinic-modal,
.kanban-modal,
.clinic-help-panel,
.clinic-chatbot,
.clinic-auth,
.clinic-notif-list,
.datepicker-plot-area {
	font-family: var(--clinic-font-family, 'Vazirmatn', 'IRANSans', Tahoma, sans-serif);
}

/* کنترل‌های فرم درونِ پلاگین فونت را به‌صورت پیش‌فرض ارث نمی‌برند ⇒ صریح. */
.clinic-wrap input,
.clinic-wrap select,
.clinic-wrap textarea,
.clinic-wrap button,
.clinic-dashboard input,
.clinic-dashboard select,
.clinic-dashboard textarea,
.clinic-dashboard button {
	font-family: var(--clinic-font-family, 'Vazirmatn', 'IRANSans', Tahoma, sans-serif);
}

/* اعلان‌ها درونِ نوار مدیریت: #wpadminbar تخصصِ بالا (id) دارد ⇒ !important لازم و
 * توجیه‌شده است تا فونتِ سیستمیِ نوار مدیریت را روی محتوای پلاگین override نکند. */
#wpadminbar .clinic-notif-list,
#wpadminbar .clinic-notif-item,
#wpadminbar .clinic-notif-text {
	font-family: var(--clinic-font-family, 'Vazirmatn', 'IRANSans', Tahoma, sans-serif) !important;
}

/* HOTFIX فونت: متن/لیبلِ نمودارهای SVG وانیلا (clinic-charts.js) هم از فونتِ تم پیروی کند.
 * <text>ِ SVG فونت را از کانتینر ارث می‌برد، اما اینجا صریح می‌کنیم تا حتی اگر نمودار خارج
 * از .clinic-wrap رندر شود (یا فونت سفارشی فعال باشد) باز هم لیبل‌ها فونتِ تم را بگیرند. */
[data-clinic-chart] svg,
[data-clinic-chart] svg text {
	font-family: var(--clinic-font-family, 'Vazirmatn', 'IRANSans', Tahoma, sans-serif);
}

/* ====================================================================
 * STEP 67 — فرمِ رزروِ چندگامه (wizard). فقط چینش/فاصله؛ دکمه‌ها از STEP 66.
 * ==================================================================== */
.clinic-booking .bw-steps {
	list-style: none; display: flex; flex-wrap: wrap; gap: var( --clinic-space-4 );
	margin: 0 0 var( --clinic-space-8 ); padding: 0; counter-reset: bw;
}
.clinic-booking .bw-stepdot {
	flex: 1 1 auto; text-align: center; font-size: 13px; padding: var( --clinic-space-4 ) var( --clinic-space-3 );
	border-radius: var(--clinic-border-radius, 8px);
	background: var(--clinic-bg-light); color: var(--clinic-muted);
	border: 1px solid var(--clinic-border);
}
.clinic-booking .bw-stepdot.is-active {
	background: var(--clinic-primary); color: var( --clinic-text-inverse ); border-color: var(--clinic-primary);
}
.clinic-booking .bw-step { display: none; }
.clinic-booking .bw-step.is-active { display: block; }
/* STEP 78: bw-grid سراسری (نه مقیدِ .clinic-booking) — سکشنِ «مشخصات بیمار» در صفحه‌ی
 * افزودنِ نوبت (.clinic-page--appointment-edit) و مودالِ ثبتِ سریعِ تقویم (.clinic-agenda)
 * هم باید ستون‌بندی شود؛ پیش‌تر چون display:grid پشتِ .clinic-booking قفل بود این دو ظرف
 * تک‌ستون می‌شدند (نوبت دو‌ستونه می‌شد چون .bw-appt-layout سراسری است). auto-fit ⇒ ستون از
 * عرضِ **ظرف**: صفحه‌ی عریضِ ادمین ≥۳، مودالِ ۹۲۰px ⇒ ۲، موبایل ⇒ ۱. min(100%,…) از سرریزِ
 * موبایل جلوگیری می‌کند. --clinic-bw-col توکن (تم‌ساز/قانونِ قرمز #۴). */
.bw-grid { display: grid; grid-template-columns: repeat( auto-fit, minmax( min( 100%, var( --clinic-bw-col, 320px ) ), 1fr ) ); gap: var( --clinic-gap, 14px ); align-items: start; }
.bw-field--full { grid-column: 1 / -1; }
/* STEP 78: سوییچِ خودکار/دستیِ شماره‌ی پرونده (چیپ، نه select). توکن‌محور. */
.bw-fileno__modes, .clinic-fileno__modes { display: inline-flex; gap: var( --clinic-space-3 ); margin-bottom: var( --clinic-space-3 ); }
.bw-fileno__mode, .clinic-fileno__mode {
	padding: 5px var( --clinic-space-7 ); cursor: pointer; font-size: 13px;
	border: 1.5px solid var(--clinic-border); border-radius: var(--clinic-radius-pill, 999px);
	background: var(--clinic-bg); color: var(--clinic-muted);
	font-family: var(--clinic-font-family, 'Vazirmatn', Tahoma, sans-serif); line-height: 1.4;
}
.bw-fileno__mode.is-active, .clinic-fileno__mode.is-active {
	border-color: var(--clinic-primary); background: var(--clinic-bg-light); color: var(--clinic-primary); font-weight: 700;
}
.clinic-fileno__preview { margin-top: var( --clinic-space-3 ); font-size: 12px; color: var(--clinic-muted); }
.clinic-fileno__preview b { color: var(--clinic-primary); font-weight: 700; }
.clinic-booking .bw-actions { display: flex; gap: var( --clinic-space-5 ); margin-top: var( --clinic-space-9 ); }
.clinic-booking .bw-req { color: var(--clinic-warning); }
.clinic-booking .bw-error {
	background: var(--clinic-bg-light); color: var(--clinic-primary);
	border: 1px solid var(--clinic-warning); border-radius: var(--clinic-border-radius, 8px);
	padding: var( --clinic-space-5 ) var( --clinic-space-7 ); margin-bottom: var( --clinic-space-7 ); font-size: 14px;
}
.clinic-booking .bw-slots { display: flex; flex-wrap: wrap; gap: var( --clinic-space-4 ); }
.clinic-booking .bw-slot.is-sel {
	background: var(--clinic-btn-primary-bg, var(--clinic-primary)) !important;
	color: var(--clinic-btn-primary-text, #fff) !important;
}
.clinic-booking .bw-slots-hint { color: var(--clinic-muted); font-size: 13px; }
.clinic-booking .bw-nid-msg { display: block; margin-top: var( --clinic-space-2 ); font-size: 12px; }
.clinic-booking .bw-nid-msg.is-ok { color: var(--clinic-success); }
.clinic-booking .bw-nid-msg.is-bad { color: var(--clinic-warning); }
.clinic-booking .bw-sum-row {
	display: flex; justify-content: space-between; gap: var( --clinic-space-6 );
	padding: var( --clinic-space-4 ) 0; border-bottom: 1px dashed var(--clinic-border);
}
/* STEP 75: media queryِ ستون‌بندیِ مبتنی بر viewport حذف شد — auto-fitِ container-based جایش را گرفت. */

/* ====================================================================
 * STEP 70 — تقویمِ ماهانه‌ی مشترک (همیشه-باز، رنگ + ظرفیت). همه‌ی رنگ‌ها از توکن.
 * ==================================================================== */
.clinic-cal { max-width: 480px; }
.clinic-cal__head { display: flex; align-items: center; justify-content: space-between; gap: var( --clinic-space-4 ); margin-bottom: var( --clinic-space-5 ); }
.clinic-cal__title { font-weight: 700; color: var(--clinic-primary); font-size: 15px; }
.clinic-cal__nav {
	background: var(--clinic-bg-light); color: var(--clinic-primary); border: 1px solid var(--clinic-border);
	border-radius: var(--clinic-border-radius, 8px); width: 34px; height: 34px; font-size: 18px; cursor: pointer; line-height: 1;
	font-family: var(--clinic-font-family, 'Vazirmatn', Tahoma, sans-serif);
}
.clinic-cal__nav:hover { background: var(--clinic-primary); color: var( --clinic-text-inverse ); }
.clinic-cal__weekdays, .clinic-cal__grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: var( --clinic-space-2 ); }
.clinic-cal__wd { text-align: center; font-size: 12px; color: var(--clinic-muted); padding: var( --clinic-space-2 ) 0; }
.clinic-cal__grid { margin-top: var( --clinic-space-2 ); }
.clinic-cal__loading { grid-column: 1 / -1; text-align: center; color: var(--clinic-muted); padding: var( --clinic-space-12 ); }
.clinic-cal__day {
	min-height: 46px; border-radius: var(--clinic-border-radius, 8px); display: flex; flex-direction: column;
	align-items: center; justify-content: center; font-size: 13px; border: 1px solid transparent; position: relative;
}
.clinic-cal__day--empty { background: transparent; }
.clinic-cal__num { font-weight: 600; }
.clinic-cal__cap { font-size: 10px; opacity: 0.85; margin-top: var( --clinic-space-1 ); }
/* رنگِ وضعیت‌ها — توکن‌محور. open=سبز، low=هشدارِ ملایم، full/holiday=muted، closed=خنثی. */
.clinic-cal__day--open { background: var(--clinic-success); color: var( --clinic-text-inverse ); cursor: pointer; }
.clinic-cal__day--low { background: var(--clinic-warning); color: var( --clinic-text-inverse ); cursor: pointer; }
.clinic-cal__day--full { background: var(--clinic-bg-light); color: var(--clinic-muted); }
.clinic-cal__day--holiday { background: var(--clinic-bg-light); color: var(--clinic-muted); }
.clinic-cal__day--closed { background: transparent; color: var(--clinic-muted); opacity: 0.45; }
.clinic-cal__day--open:hover, .clinic-cal__day--low:hover { filter: brightness(0.92); }
.clinic-cal__day.is-today { outline: 2px solid var(--clinic-primary); outline-offset: -2px; }
.clinic-cal__day.is-sel { box-shadow: 0 0 0 3px var(--clinic-primary); z-index: 1; }
.clinic-cal__legend { display: flex; flex-wrap: wrap; gap: var( --clinic-space-6 ); margin-top: var( --clinic-space-5 ); font-size: 12px; color: var(--clinic-muted); }
.clinic-cal__legend-item { display: inline-flex; align-items: center; gap: var( --clinic-space-2 ); }
.clinic-cal__dot { width: 12px; height: 12px; border-radius: 3px; display: inline-block; }
.clinic-cal__dot--open { background: var(--clinic-success); }
.clinic-cal__dot--low { background: var(--clinic-warning); }
.clinic-cal__dot--full { background: var(--clinic-bg-light); border: 1px solid var(--clinic-border); }
.clinic-cal__dot--holiday { background: var(--clinic-bg-light); border: 1px solid var(--clinic-border); }
.clinic-cal__slots { display: flex; flex-wrap: wrap; gap: var( --clinic-space-4 ); margin-top: var( --clinic-space-6 ); }
.clinic-cal__slot.is-sel { background: var(--clinic-btn-primary-bg, var(--clinic-primary)) !important; color: var(--clinic-btn-primary-text, #fff) !important; }
.clinic-cal__hint { color: var(--clinic-muted); font-size: 13px; }
@media (max-width: 700px) { .clinic-cal { max-width: 100%; } }

/* STEP 70 — چیپ‌های نوعِ نوبت (رادیویی)، رادیوهای جنسیت، جست‌وجوی بیمار، عناوینِ ناحیه. */
.bw-section-title { margin: 22px 0 var( --clinic-space-5 ); padding-top: var( --clinic-space-7 ); border-top: 1px solid var(--clinic-border); font-size: 15px; }

/* STEP 189 — فرم رزرو نوبت دومرحله‌ای: نشانگر مرحله + ناوبری. رنگ‌ها از توکن پالت. */
.bw-steps-progress { display: flex; gap: var( --clinic-space-9 ); list-style: none; margin: 0 0 var( --clinic-space-9 ); padding: 0; }
.bw-step-dot { display: flex; align-items: center; gap: var( --clinic-space-4 ); color: var(--clinic-muted, #6b6480); font-weight: 600; font-size: 14px; }
.bw-step-dot__num {
	display: inline-flex; align-items: center; justify-content: center;
	width: 28px; height: 28px; border-radius: 50%;
	background: var(--clinic-bg-light, #F3F1F8); color: var(--clinic-muted, #6b6480);
	border: 1px solid var(--clinic-border, #D8D4E4); font-size: 13px;
}
.bw-step-dot.is-active { color: var(--clinic-primary, #4B2E83); }
.bw-step-dot.is-active .bw-step-dot__num {
	background: var(--clinic-primary, #4B2E83); color: var(--clinic-on-primary, #FFFFFF);
	border-color: var(--clinic-primary, #4B2E83);
}
.bw-step-nav { margin-top: var( --clinic-space-9 ); }
.bw-step-nav--top { margin: 0 0 var( --clinic-space-6 ); }
@media ( max-width: 600px ) { .bw-step-dot__label { display: none; } }
.bw-typechips { display: flex; flex-wrap: wrap; gap: var( --clinic-space-5 ); margin-bottom: var( --clinic-space-7 ); }
.bw-typechip {
	display: inline-flex; align-items: center; gap: var( --clinic-space-4 ); padding: var( --clinic-space-4 ) var( --clinic-space-8 ); cursor: pointer;
	border: 1.5px solid var(--clinic-border); border-radius: var(--clinic-radius-pill, 999px);
	font-family: var(--clinic-font-family, 'Vazirmatn', Tahoma, sans-serif); font-size: 14px; background: var(--clinic-bg);
}
.bw-typechip input { margin: 0; }
.bw-typechip__dot { width: 12px; height: 12px; border-radius: 50%; display: inline-block; }
.bw-typechip:has( input:checked ) { border-color: var(--clinic-primary); background: var(--clinic-bg-light); }
/* STEP 198: توضیحِ نوع نوبت در «کادرِ واحد» (فقط نوعِ انتخاب‌شده) — به‌جای زیرِ تک‌تک چیپ‌ها.
   کادرِ مستقلِ خوانا بین بخشِ «نوع» و «نوع بیمه»؛ JS با تغییرِ نوع متن را به‌روز می‌کند و خالی ⇒ مخفی. */
.bw-type-desc-box {
	margin: var( --clinic-space-1 ) 0 var( --clinic-space-7 );
	padding: var( --clinic-space-5 ) var( --clinic-space-7 );
	text-align: right;
	border-radius: var(--clinic-card-radius, 12px);
	background: var(--clinic-bg-light, #F3E8FF);
	color: var(--clinic-muted, #6b6480);
	font-family: var(--clinic-font-family, 'Vazirmatn', Tahoma, sans-serif);
	font-size: 13.5px;
	line-height: 1.7;
	box-shadow: var(--clinic-shadow-sm, 0 1px 3px rgba( 0, 0, 0, .06 ));
}
.bw-radios { display: inline-flex; gap: var( --clinic-space-9 ); align-items: center; }
.bw-radios label { display: inline-flex; gap: var( --clinic-space-3 ); align-items: center; cursor: pointer; }
.bw-cal-wrap { margin-top: var( --clinic-space-3 ); }
.bw-lookup { position: relative; margin-top: var( --clinic-space-2 ); }
.bw-lookup__item {
	display: block; width: 100%; text-align: right; padding: var( --clinic-space-4 ) var( --clinic-space-6 ); background: var(--clinic-bg);
	border: 1px solid var(--clinic-border); border-radius: var(--clinic-border-radius, 8px); margin-bottom: var( --clinic-space-2 ); cursor: pointer;
	font-family: var(--clinic-font-family, 'Vazirmatn', Tahoma, sans-serif); font-size: 13px; color: var(--clinic-text);
}
.bw-lookup__item:hover { background: var(--clinic-bg-light); border-color: var(--clinic-primary); }
.bw-lookup__hint { color: var(--clinic-muted); font-size: 12px; padding: var( --clinic-space-3 ) 0; }
/* فرمِ ادمین: تقویم و چیپ‌ها کنارِ هم در دسکتاپ (پیشخوان). */
@media (min-width: 980px) { .wrap .bw-cal-wrap { display: flex; gap: var( --clinic-space-12 ); align-items: flex-start; } .wrap .bw-cal-wrap .clinic-cal { flex: 0 0 480px; } .wrap .bw-cal-wrap .clinic-cal__slots { flex: 1; } }

/* ====================================================================
 * STEP 71 — پزشک/بیمه (چیپ)، قیمتِ بیمه‌محور، گردیِ فرم، چینشِ ستونی، ضدِّ پرش،
 * لیستِ نوبتِ کامل، ماتریسِ قیمت، زمان‌بندیِ پزشکان. همه‌ی رنگ‌ها/گردی‌ها از توکن.
 * ==================================================================== */

/* چیپِ پزشک/بیمه (رادیویی؛ هیچ <select>). */
.bw-chooser { margin: 0 0 var( --clinic-space-7 ); }
.bw-chooser__label { display: block; font-size: 13px; color: var(--clinic-muted); margin-bottom: var( --clinic-space-3 ); }
.bw-chips { display: flex; flex-wrap: wrap; gap: var( --clinic-space-5 ); }
.bw-chip {
	display: inline-flex; align-items: center; gap: var( --clinic-space-4 ); padding: 7px var( --clinic-space-7 ); cursor: pointer;
	border: 1.5px solid var(--clinic-border); border-radius: var(--clinic-form-radius, var(--clinic-radius-pill, 999px));
	font-family: var(--clinic-font-family, 'Vazirmatn', Tahoma, sans-serif); font-size: 14px; background: var(--clinic-bg);
}
.bw-chip input { margin: 0; }
.bw-chip__dot { width: 12px; height: 12px; border-radius: 50%; display: inline-block; }
.bw-chip__avatar { width: 26px; height: 26px; border-radius: 50%; object-fit: cover; }
.bw-chip:has( input:checked ) { border-color: var(--clinic-primary); background: var(--clinic-bg-light); }

/* قیمتِ بیمه‌محور — فضای رزروشده تا نمایشِ آن فرم را نپراند. */
.bw-price { min-height: 26px; margin: var( --clinic-space-5 ) 0 0; font-weight: 700; color: var(--clinic-primary); }
.bw-price.is-shown { padding: var( --clinic-space-4 ) 0; }

/* ضدِّ پرش: ناحیه‌ی اسلات/جست‌وجو فضای حداقلی دارد و عرضِ فرم با لودِ AJAX تغییر نمی‌کند. */
.clinic-cal__slots { min-height: 46px; }
.bw-lookup { min-height: 0; }
#bw-form, .clinic-page--appointment-edit form { width: 100%; }
.clinic-booking .clinic-card, .clinic-page--appointment-edit .clinic-card { overflow-wrap: anywhere; }

/* گردیِ فرم‌ها (توکنِ مستقل --clinic-form-radius؛ پیش‌فرض = شعاعِ عمومی). */
.clinic-booking .clinic-card,
.clinic-page--appointment-edit .clinic-card,
.bw-field .clinic-input, .bw-field textarea.clinic-input, .bw-field .clinic-select,
.clinic-cal__day, .bw-cal-wrap, .bw-price, .bw-lookup__item, .clinic-cal__slot {
	border-radius: var(--clinic-form-radius, var(--clinic-border-radius, 8px));
}

/* STEP 75: ستون‌بندیِ مبتنی بر viewportِ فرمِ پیشخوان حذف شد — حالا از auto-fitِ پایه‌ی .bw-grid
 * (container-based) پیروی می‌کند ⇒ در صفحه عریض ۲/۳ ستون، در مودالِ باریک ۱ ستون، خودکار. */
.clinic-page--appointment-edit .bw-field--full { grid-column: 1 / -1; }

/* لیستِ نوبت — سلول‌های دو‌خطی، نشانِ منبع، فیلترِ بازه، اسکرولِ افقیِ تمیزِ موبایل. */
.clinic-cellname { font-weight: 600; }
.clinic-cellsub { color: var(--clinic-muted); font-size: 12px; text-decoration: none; }
.clinic-srcbadge { display: inline-block; padding: var( --clinic-space-1 ) var( --clinic-space-4 ); border-radius: var(--clinic-radius-pill, 999px); font-size: 11px; border: 1px solid var(--clinic-border); }
.clinic-srcbadge--site { background: var(--clinic-bg-light); color: var(--clinic-primary); }
.clinic-srcbadge--panel { background: var(--clinic-bg); color: var(--clinic-muted); }
.clinic-srcbadge--paziresh24 { background: var(--clinic-bg-light); color: var(--clinic-primary); } /* STEP 168 */
.clinic-filter-range { display: inline-flex; align-items: center; gap: var( --clinic-space-3 ); }
.clinic-filter-range__label { font-size: 12px; color: var(--clinic-muted); }
.clinic-appt-filters { display: flex; flex-wrap: wrap; gap: var( --clinic-space-5 ); align-items: center; }
.clinic-table-scroll { overflow-x: auto; }
/* STEP 125 — موبایل: کارتِ نوبت با «سرتیترِ غنی + بدنه‌ی دو‌ستونه». سرتیتر: نام (تمام‌عرض)
 * + ردیفِ نوع/وضعیت؛ بدنه: گریدِ ۲ستونه (تاریخ/پزشک/بیمه/منبع/مبلغ) با آیکنِ outlineِ بنفش
 * به‌جای لیبلِ متنیِ بلند؛ ردیفِ خالی پنهان (cell--empty از STEP 122)؛ دکمه‌ها ردیفِ جدا با ۴۴px. */
@media (max-width: 860px) {
	.clinic-appt-table thead { display: none; }
	/* خنثی‌کردنِ min-width:560px (STEP 110، مخصوصِ جدولِ اسکرولی) — جدولِ نوبت کارت می‌شود. */
	.clinic-card > .clinic-appt-table { min-width: 0; }
	.clinic-appt-table, .clinic-appt-table tbody { display: block; width: 100%; min-width: 0; }
	.clinic-appt-table tr {
		position: relative;
		display: grid;
		grid-template-columns: 1fr 1fr;
		gap: var( --clinic-space-3 ) var( --clinic-space-6 );
		grid-template-areas:
			"patient   patient"
			"type      status"
			"date      doctor"
			"insurance source"
			"amount    amount"
			"actions   actions";
		margin-bottom: var( --clinic-space-6 );
		border: 1px solid var(--clinic-border);
		border-radius: var(--clinic-border-radius, 10px);
		padding: var( --clinic-space-6 ) var( --clinic-space-7 );
		background: var(--clinic-bg, #fff);
		box-shadow: var(--clinic-shadow, 0 2px 8px rgba(75, 46, 131, .06));
	}
	.clinic-appt-table td { display: flex; align-items: center; gap: var( --clinic-space-3 ); border: none; padding: 0; font-size: 13px; }
	/* آیکنِ outlineِ بنفشِ هر فیلدِ بدنه (به‌جای لیبلِ متنیِ بلند). */
	.clinic-appt-table td.clinic-cell--date::before,
	.clinic-appt-table td.clinic-cell--doctor::before,
	.clinic-appt-table td.clinic-cell--insurance::before,
	.clinic-appt-table td.clinic-cell--source::before,
	.clinic-appt-table td.clinic-cell--amount::before {
		content: ''; flex: 0 0 auto; width: 15px; height: 15px;
		background-repeat: no-repeat; background-position: center; background-size: contain;
	}
	.clinic-appt-table td.clinic-cell--date::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='15' height='15' viewBox='0 0 24 24' fill='none' stroke='%234B2E83' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='18' rx='2'/%3E%3Cline x1='16' y1='2' x2='16' y2='6'/%3E%3Cline x1='8' y1='2' x2='8' y2='6'/%3E%3Cline x1='3' y1='10' x2='21' y2='10'/%3E%3C/svg%3E"); }
	.clinic-appt-table td.clinic-cell--doctor::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='15' height='15' viewBox='0 0 24 24' fill='none' stroke='%234B2E83' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='8' r='4'/%3E%3Cpath d='M4 21v-1a6 6 0 0 1 6-6h4a6 6 0 0 1 6 6v1'/%3E%3C/svg%3E"); }
	.clinic-appt-table td.clinic-cell--insurance::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='15' height='15' viewBox='0 0 24 24' fill='none' stroke='%234B2E83' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3l7 3v5c0 4-3 7-7 9-4-2-7-5-7-9V6z'/%3E%3C/svg%3E"); }
	.clinic-appt-table td.clinic-cell--source::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='15' height='15' viewBox='0 0 24 24' fill='none' stroke='%234B2E83' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cline x1='3' y1='12' x2='21' y2='12'/%3E%3Cpath d='M12 3a14 14 0 0 1 0 18 14 14 0 0 1 0-18'/%3E%3C/svg%3E"); }
	.clinic-appt-table td.clinic-cell--amount::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='15' height='15' viewBox='0 0 24 24' fill='none' stroke='%234B2E83' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2' y='6' width='20' height='12' rx='2'/%3E%3Ccircle cx='12' cy='12' r='2.5'/%3E%3C/svg%3E"); }
	/* لیبلِ متنیِ data-label فقط برای سلول‌هایِ بدونِ آیکن (هیچ) — پنهان می‌ماند. */
	.clinic-appt-table td::before:not([class]) { display: none; }
	/* ردیفِ بدونِ مقدار پنهان. */
	.clinic-appt-table td.clinic-cell--empty { display: none; }
	/* سرتیتر: نامِ بیمار تمام‌عرض، بدونِ لیبل، خطِ جداکننده زیرِ بلوکِ نوع/وضعیت. */
	.clinic-appt-table td.clinic-cell--patient { grid-area: patient; display: block; font-size: 15px; font-weight: 700; }
	.clinic-appt-table td.clinic-cell--patient .clinic-cellname { font-size: 15px; }
	.clinic-appt-table td.clinic-cell--type { grid-area: type; }
	.clinic-appt-table td.clinic-cell--status { grid-area: status; justify-self: end; padding-bottom: var( --clinic-space-3 ); border-bottom: 1px dashed var(--clinic-border); }
	.clinic-appt-table td.clinic-cell--type { padding-bottom: var( --clinic-space-3 ); border-bottom: 1px dashed var(--clinic-border); }
	.clinic-appt-table td.clinic-cell--date { grid-area: date; }
	.clinic-appt-table td.clinic-cell--doctor { grid-area: doctor; }
	.clinic-appt-table td.clinic-cell--insurance { grid-area: insurance; }
	.clinic-appt-table td.clinic-cell--source { grid-area: source; }
	.clinic-appt-table td.clinic-cell--amount { grid-area: amount; }
	.clinic-appt-table td.clinic-cell--date br, .clinic-appt-table td.clinic-cell--amount br { display: none; }
	.clinic-appt-table td.clinic-cell--date .clinic-cellsub { margin-inline-start: var( --clinic-space-2 ); }
	/* چک‌باکسِ انتخاب در گوشه‌ی بالا-چپ (RTL). */
	.clinic-appt-table td.clinic-cb-col { position: absolute; top: var( --clinic-space-5 ); inset-inline-start: var( --clinic-space-5 ); width: auto; padding: 0; }
	/* عملیات: ردیفِ جدا، wrapِ مرتب، تاچ‌تارگتِ ۴۴px. */
	.clinic-appt-table td.clinic-row-actions {
		grid-area: actions; flex-wrap: wrap; gap: var( --clinic-space-4 ); margin-top: var( --clinic-space-5 ); padding-top: var( --clinic-space-5 );
		border-top: 1px solid var(--clinic-border);
	}
	.clinic-appt-table td.clinic-row-actions::before { display: none; }
	.clinic-appt-table td.clinic-row-actions .clinic-btn { min-height: 44px; }
	.clinic-appt-table td.clinic-row-actions .clinic-inline-form { display: inline-flex; margin: 0; }

	/* STEP 125 بخش۲ — سه دراپ‌داونِ فیلتر حتماً در یک ردیف (هم‌عرض). */
	.clinic-appt-filters .clinic-select.clinic-input--filter { flex: 1 1 0; min-width: 0; }
}

/* STEP 125 (بخش۶، CSS سفارشی): فشرده‌سازیِ ردیف‌های جدول — فقط دسکتاپ (≥۸۶۱px) تا نمای
 * کارتِ نوبتِ موبایل (که td را گرید/بلوک می‌کند) خراب نشود. */
@media ( min-width: 861px ) {
	.clinic-table td { padding: 3px var( --clinic-space-5 ); }
}

/* ماتریسِ قیمت + زمان‌بندیِ پزشکان. */
.clinic-pricing-matrix .clinic-matrix-cell { width: 110px; }
.clinic-week-table td, .clinic-week-table th { text-align: center; }
.clinic-week-table input[type="time"] { width: 120px; }
.clinic-subcard { border: 1px solid var(--clinic-border); border-radius: var(--clinic-form-radius, 8px); padding: var( --clinic-space-6 ) var( --clinic-space-7 ); margin-bottom: var( --clinic-space-6 ); }
.clinic-tag--muted { display: inline-block; font-size: 11px; padding: var( --clinic-space-1 ) var( --clinic-space-4 ); border-radius: var(--clinic-radius-pill, 999px); background: var(--clinic-bg-light); color: var(--clinic-muted); margin-right: var( --clinic-space-4 ); }

/* ====================================================================
 * STEP 72 — toggleِ دسترسیِ حساس، نشانِ «حساس ⚠️»، فیلترِ خط‌زمانی + توضیحات.
 * ==================================================================== */
.clinic-sensitive-badge {
	display: inline-block; font-size: 11px; padding: 1px 7px; margin-left: var( --clinic-space-3 );
	border-radius: var(--clinic-radius-pill, 999px); background: var(--clinic-bg-light);
	color: var(--clinic-warning); border: 1px solid var(--clinic-warning); white-space: nowrap;
}
.clinic-toggle-cell { text-align: center; }
/*
 * STEP 221 قاعده ۴ کارفرما — جابه‌جایی دستگیره سوییچ **محاسبه** می‌شود.
 *
 * پیش‌تر `translateX(-20px)` عدد ثابت بود؛ اگر عرض track یا قطر دستگیره عوض
 * می‌شد، دستگیره از جا بیرون می‌زد یا کوتاه می‌ایستاد. حالا مسیر حرکت از خود
 * ابعاد مشتق می‌شود، پس هر تغییری خودبه‌خود درست می‌ماند.
 *
 * با مقادیر زیر: ۴۰ − ۱۶ − (۲ × ۳) = **۱۸px**، دقیقا خواسته کارفرما.
 */
.clinic-switch {
	--clinic-switch-w: 40px;
	--clinic-switch-h: 22px;
	--clinic-switch-knob: 16px;
	--clinic-switch-gap: 3px;
	--clinic-switch-travel: calc( var( --clinic-switch-w ) - var( --clinic-switch-knob ) - 2 * var( --clinic-switch-gap ) );
	position: relative; display: inline-block;
	width: var( --clinic-switch-w ); height: var( --clinic-switch-h );
}
.clinic-switch input { position: absolute; opacity: 0; width: 0; height: 0; }
.clinic-switch__slider {
	position: absolute; inset: 0; cursor: pointer; background: var(--clinic-border);
	border-radius: var(--clinic-radius-pill, 999px); transition: background .15s;
}
.clinic-switch__slider::before {
	content: ''; position: absolute; width: var( --clinic-switch-knob ); height: var( --clinic-switch-knob ); inset-inline-end: var( --clinic-switch-gap ); top: var( --clinic-switch-gap );
	background: var(--clinic-bg); border-radius: 50%; transition: transform .15s;
}
.clinic-switch input:checked + .clinic-switch__slider { background: var(--clinic-success); }
.clinic-switch input:checked + .clinic-switch__slider::before { transform: translateX( calc( -1 * var( --clinic-switch-travel ) ) ); }
.clinic-switch input:focus-visible + .clinic-switch__slider { outline: 2px solid var(--clinic-primary); outline-offset: 2px; }
.clinic-sensitive-table th, .clinic-sensitive-table td { text-align: center; vertical-align: middle; }
.clinic-sensitive-table td:first-child, .clinic-sensitive-table th:first-child { text-align: right; }

/* فیلترِ نوعِ خط‌زمانی. */
.clinic-tl-filters { display: flex; flex-wrap: wrap; gap: var( --clinic-space-3 ); margin-bottom: var( --clinic-space-6 ); }
.clinic-tl-filters .clinic-btn { padding: var( --clinic-space-2 ) var( --clinic-space-6 ); font-size: 12px; }
.clinic-tl-filters .clinic-btn.is-active { background: var(--clinic-primary); color: var(--clinic-on-primary, #fff); border-color: var(--clinic-primary); }
.clinic-tl__desc, .ptimeline__desc { display: block; color: var(--clinic-muted); font-size: 12px; margin-top: var( --clinic-space-1 ); }
/* رنگِ نقطه/نشانِ نوع‌های جدیدِ خط‌زمانی (توکن‌محور). */
.clinic-tl--invoice .clinic-tl__type, .clinic-tl--payment .clinic-tl__type { color: var(--clinic-success); }

/* ====================================================================
 * STEP 73 — تقویمِ نوبت (روزانه/هفتگی/ماهانه‌ی شمسیِ شنبه‌شروع). رنگ‌ها توکن‌محور.
 * ==================================================================== */
.clinic-agenda { --clinic-amber: #E0A100; } /* تنها متغیرِ وضعیتِ «در انتظار پرداخت» (themeable). */
/* STEP 122 — سرتیترِ تقویم: عنوان + دکمه‌ی «افزودن نوبت» در یک ردیفِ flex (دکمه عرضِ طبیعی، نه کشیده). */
.clinic-agenda .clinic-title { display: flex; flex-wrap: wrap; align-items: center; gap: var( --clinic-space-6 ); }
.clinic-agenda .clinic-title .clinic-btn { width: auto; flex: 0 0 auto; font-size: 14px; }
.agenda-toolbar { display: flex; flex-wrap: wrap; gap: var( --clinic-space-6 ); align-items: center; justify-content: space-between; margin: var( --clinic-space-5 ) 0; }
.agenda-tabs { display: flex; gap: var( --clinic-space-3 ); }
.agenda-tabs .clinic-btn.is-active, .agenda-docchip.is-active { background: var(--clinic-primary); color: var(--clinic-on-primary, #fff); border-color: var(--clinic-primary); }
.agenda-nav { display: flex; gap: var( --clinic-space-3 ); align-items: center; }
.agenda-title { font-weight: 700; color: var(--clinic-primary); font-size: 15px; margin-inline-start: var( --clinic-space-4 ); }
.agenda-summary { display: flex; flex-wrap: wrap; gap: var( --clinic-space-4 ); align-items: center; color: var(--clinic-text); font-size: 13px; background: var(--clinic-bg-light); border-radius: var(--clinic-form-radius, 8px); padding: var( --clinic-space-4 ) var( --clinic-space-7 ); margin-bottom: var( --clinic-space-6 ); }
.agenda-sum__sep { color: var(--clinic-muted); }
.agenda-docbar, .agenda-doctorbar { display: flex; flex-wrap: wrap; gap: var( --clinic-space-5 ); align-items: center; margin-bottom: var( --clinic-space-5 ); }
.agenda-docchips { display: flex; flex-wrap: wrap; gap: var( --clinic-space-3 ); }
.agenda-docchip { padding: 5px var( --clinic-space-7 ); font-size: 13px; }
.agenda-canceltoggle { display: inline-flex; align-items: center; gap: var( --clinic-space-3 ); font-size: 12px; color: var(--clinic-muted); margin-inline-start: auto; }
.agenda-loading { text-align: center; color: var(--clinic-muted); padding: 30px; }

/* راهنمای رنگ. */
.agenda-legend { display: flex; flex-wrap: wrap; gap: var( --clinic-space-7 ); margin-top: var( --clinic-space-7 ); font-size: 12px; color: var(--clinic-muted); }
.agenda-legend__item { display: inline-flex; align-items: center; gap: 5px; }
.agenda-dot { width: 12px; height: 12px; border-radius: 3px; display: inline-block; }
.agenda-dot--pending { background: var(--clinic-primary); }
.agenda-dot--awaiting_approval { background: var(--clinic-warning); }
.agenda-dot--awaiting_payment { background: var(--clinic-amber); }
.agenda-dot--done { background: var(--clinic-success); }
.agenda-dot--cancelled { background: var(--clinic-muted); }
.agenda-dot--free { background: var(--clinic-success); opacity: .35; }

/* نمای روزانه: ستون‌های پزشک کنارِ هم (RTL). */
.agenda-day { display: flex; gap: var( --clinic-space-7 ); align-items: flex-start; overflow-x: auto; padding-bottom: var( --clinic-space-4 ); }
.agenda-day--single .agenda-col { flex: 1; }
.agenda-col { flex: 0 0 240px; min-width: 220px; border: 1px solid var(--clinic-border); border-radius: var(--clinic-form-radius, 8px); padding: var( --clinic-space-4 ); background: var(--clinic-bg); }
.agenda-col.is-mine { border-color: var(--clinic-primary); box-shadow: 0 0 0 2px var(--clinic-bg-light); }
.agenda-col__head { display: flex; align-items: center; gap: var( --clinic-space-4 ); padding-bottom: var( --clinic-space-4 ); margin-bottom: var( --clinic-space-4 ); border-bottom: 1px solid var(--clinic-border); }
.agenda-col__avatar { width: 30px; height: 30px; border-radius: 50%; object-fit: cover; }
.agenda-col__name { font-weight: 600; font-size: 13px; }
.agenda-col__msg { color: var(--clinic-muted); text-align: center; padding: var( --clinic-space-10 ) var( --clinic-space-4 ); font-size: 13px; }
.agenda-slot { display: flex; align-items: center; gap: 7px; width: 100%; text-align: right; padding: 7px 9px; margin-bottom: var( --clinic-space-3 ); border: 1px solid var(--clinic-border); border-radius: var(--clinic-form-radius, 8px); font-family: var(--clinic-font-family, Tahoma, sans-serif); font-size: 12px; cursor: pointer; background: var(--clinic-bg); color: var(--clinic-text); }
.agenda-slot__time { font-weight: 700; font-size: 12px; min-width: 38px; }
.agenda-slot__dot { width: 9px; height: 9px; border-radius: 50%; flex: 0 0 auto; }
.agenda-slot__name { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.agenda-slot__doc { font-size: 10px; color: inherit; opacity: .8; }
.agenda-slot__pay { font-size: 11px; }
.agenda-slot--pending { background: var(--clinic-primary); color: var(--clinic-on-primary, #fff); border-color: var(--clinic-primary); }
.agenda-slot--awaiting_approval { background: var(--clinic-warning); color: var(--clinic-on-warning, #1F1535); border-color: var(--clinic-warning); }
.agenda-slot--awaiting_payment { background: var(--clinic-amber); color: var( --clinic-on-success ); border-color: var(--clinic-amber); }
.agenda-slot--done { background: var(--clinic-success); color: var(--clinic-on-success, #fff); border-color: var(--clinic-success); }
.agenda-slot--cancelled { background: var(--clinic-bg); color: var(--clinic-muted); border-style: dashed; text-decoration: line-through; }
.agenda-slot--free { border-style: dashed; border-color: var(--clinic-success); color: var(--clinic-muted); background: var(--clinic-bg); justify-content: space-between; }
.agenda-slot--free:hover { background: var(--clinic-bg-light); }
.agenda-slot__free { color: var(--clinic-success); font-size: 11px; }
/* STEP 114-۴: نشانِ ظرفیتِ همزمان «N/ظرفیت». */
.agenda-slot__cap { display: inline-block; align-self: flex-start; margin: var( --clinic-space-1 ) 0 var( --clinic-space-4 ); padding: var( --clinic-space-1 ) var( --clinic-space-4 ); border-radius: var( --clinic-radius-pill ); font-size: 11px; font-weight: 700; background: var(--clinic-bg-secondary, #F9FAFB); color: var(--clinic-text, #1F2937); border: 1px solid var(--clinic-border, #D7DBE0); }

/* نمای هفتگی. */
/* STEP 77: تمام‌عرض. جدول روی دسکتاپ/تبلت؛ لیستِ کارتِ روزها فقط روی موبایل (CSS سوییچ). */
.agenda-week-wrap { width: 100%; }
.agenda-week { width: 100%; table-layout: fixed; }
.agenda-week th, .agenda-week td { text-align: center; vertical-align: middle; }
.agenda-week__corner { width: 13%; }
.agenda-week__wd { display: block; font-size: 11px; color: var(--clinic-muted); }
.agenda-week__d { display: block; font-weight: 700; font-size: 14px; color: var(--clinic-primary); }
.agenda-week__rowlbl { text-align: right; font-weight: 600; position: sticky; inset-inline-end: 0; background: var(--clinic-bg); z-index: 1; }
.agenda-week__cell { cursor: pointer; border-radius: var(--clinic-form-radius, 8px); }
.agenda-week__cell.has-appt { background: var(--clinic-bg-light); }
.agenda-week__cell.is-holiday { opacity: .6; }
.agenda-week__cell:hover { outline: 2px solid var(--clinic-primary); outline-offset: -2px; }
.agenda-week__count { display: block; font-weight: 700; font-size: 16px; color: var(--clinic-primary); }
.agenda-week__holiday { display: block; font-size: 10px; color: var(--clinic-muted); }
/* STEP 77: نوارِ «●N» تفکیکِ وضعیت با عدد (هفتگی + کارت‌های موبایل). */
.agenda-statnums { display: inline-flex; flex-wrap: wrap; gap: var( --clinic-space-3 ); justify-content: center; margin-top: 5px; }
.agenda-statnum { display: inline-flex; align-items: center; gap: var( --clinic-space-1 ); font-size: 11px; color: var(--clinic-text); }
.agenda-statnum .agenda-dot { width: 8px; height: 8px; border-radius: 50%; }
.agenda-statnum__n { font-weight: 700; }
/* لیستِ کارتِ روزهای موبایل — پیش‌فرض پنهان (روی موبایل با media query نمایش داده می‌شود). */
.agenda-week-mobile { display: none; }

/* نمای ماهانه (heatmap). STEP 77: تمام‌عرض (حذفِ سقفِ ۷۶۰px + سقفِ ۴۸۰pxِ ارثیِ .clinic-cal). */
.clinic-agenda .agenda-month { max-width: none; width: 100%; }
.agenda-month .clinic-cal__grid { gap: var( --clinic-space-3 ); }
/* سلولِ کشسان (1fr) که با ردیف‌های تفکیکِ پزشک رشد می‌کند. */
.agenda-mday { cursor: pointer; align-items: stretch; justify-content: flex-start; padding: 5px var( --clinic-space-3 ); min-height: 92px; }
.agenda-mday[data-heat="1"] { background: color-mix( in srgb, var(--clinic-primary) 8%, var(--clinic-bg) ); }
.agenda-mday[data-heat="2"] { background: color-mix( in srgb, var(--clinic-primary) 16%, var(--clinic-bg) ); }
.agenda-mday[data-heat="3"] { background: color-mix( in srgb, var(--clinic-primary) 24%, var(--clinic-bg) ); }
.agenda-mday[data-heat="4"] { background: color-mix( in srgb, var(--clinic-primary) 32%, var(--clinic-bg) ); }
.agenda-mday[data-heat="5"] { background: color-mix( in srgb, var(--clinic-primary) 40%, var(--clinic-bg) ); }
.agenda-mday.is-today { outline: 2px solid var(--clinic-primary); outline-offset: -2px; }
.agenda-mday.is-holiday { opacity: .55; }
.agenda-mday .clinic-cal__num { align-self: flex-start; }
/* STEP 215-B: خاصیت منطقی. */
.agenda-mday__badge { position: absolute; top: 3px; inset-inline-end: 3px; background: var(--clinic-primary); color: var(--clinic-on-primary, #fff); border-radius: var(--clinic-radius-pill, 999px); font-size: 10px; padding: 0 var( --clinic-space-3 ); min-width: 16px; text-align: center; }
/* بدنه‌ی محتوای سلول (زیرِ شماره/badge): ردیف‌های پزشک، سپس نقطه‌های وضعیت. */
.agenda-mday__body { display: flex; flex-direction: column; gap: 3px; width: 100%; margin-top: 3px; }
.agenda-mday__docs { display: flex; flex-direction: column; gap: var( --clinic-space-1 ); width: 100%; }
.agenda-mday__doc { display: flex; align-items: center; justify-content: space-between; gap: var( --clinic-space-2 ); font-size: 11px; line-height: 1.4; color: var(--clinic-text); }
.agenda-mday__doc-n { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 78%; }
.agenda-mday__doc-c { font-weight: 700; color: var(--clinic-primary); flex: 0 0 auto; }
.agenda-mday__doc-more { font-size: 10px; color: var(--clinic-muted); }
.agenda-mday__dots { display: flex; flex-wrap: wrap; gap: var( --clinic-space-1 ); }
.agenda-mday__dots .agenda-dot { width: 7px; height: 7px; border-radius: 50%; }
.agenda-mday__more { font-size: 9px; color: var(--clinic-muted); }
.agenda-mday__holiday { display: block; font-size: 9px; color: var(--clinic-muted); margin-top: var( --clinic-space-1 ); }

/* مودال‌ها — جزئیات/ثبتِ سریع (پایه‌ی .clinic-modal مشترک با STEP 70). */
.agenda-detail-actions { display: flex; flex-wrap: wrap; gap: var( --clinic-space-4 ); margin-top: var( --clinic-space-7 ); }
.agenda-qa-slot { font-weight: 700; color: var(--clinic-primary); margin: var( --clinic-space-3 ) 0; }
.agenda-quickadd .agenda-qa-change { margin-bottom: var( --clinic-space-4 ); }
/* STEP 75: در حالتِ جمع‌شده، کارتِ «انتخاب تاریخ» (تقویم) پنهان است تا «تغییر تاریخ» بازش کند. */
.agenda-quickadd.is-collapsed .bw-appt-date { display: none; }
.agenda-quickadd.is-collapsed .agenda-qa-change { display: inline-block; }
.agenda-quickadd:not(.is-collapsed) .agenda-qa-change { display: none; }

/* STEP 77: کارت‌های روزِ موبایل (ساختار همیشه ساخته می‌شود؛ نمایش با media query). */
/* STEP 221 عیب د۸ — نقش «ظرف»: شعاع کارت از مقیاس بسته. */
.agenda-wm-card { border: 1px solid var(--clinic-border); border-radius: var( --clinic-radius-md ); background: var(--clinic-bg); overflow: hidden; }
.agenda-wm-card.has-appt { border-color: var(--clinic-primary); }
.agenda-wm-card.is-holiday { opacity: .7; }
.agenda-wm-card__head { display: flex; align-items: center; justify-content: space-between; gap: var( --clinic-space-4 ); width: 100%; min-height: 44px; padding: var( --clinic-space-4 ) var( --clinic-space-6 ); background: var(--clinic-bg-light); border: 0; cursor: pointer; font-family: var(--clinic-font-family, Tahoma, sans-serif); text-align: start; }
.agenda-wm-card__day { display: inline-flex; align-items: baseline; gap: var( --clinic-space-3 ); font-weight: 700; color: var(--clinic-primary); }
.agenda-wm-card__jd { font-size: 16px; }
.agenda-wm-card__wd { font-size: 13px; }
.agenda-wm-card__total { background: var(--clinic-primary); color: var(--clinic-on-primary, #fff); border-radius: var(--clinic-radius-pill, 999px); min-width: 26px; text-align: center; padding: var( --clinic-space-1 ) var( --clinic-space-4 ); font-weight: 700; font-size: 13px; }
.agenda-wm-card__holiday { padding: var( --clinic-space-3 ) var( --clinic-space-6 ); font-size: 12px; color: var(--clinic-muted); }
.agenda-wm-doc { display: flex; align-items: center; gap: var( --clinic-space-4 ); width: 100%; min-height: 40px; padding: var( --clinic-space-4 ) var( --clinic-space-6 ); border: 0; border-top: 1px solid var(--clinic-border); background: var(--clinic-bg); cursor: pointer; font-family: var(--clinic-font-family, Tahoma, sans-serif); text-align: start; color: var(--clinic-text); }
.agenda-wm-doc:hover { background: var(--clinic-bg-light); }
.agenda-wm-doc__name { flex: 1; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.agenda-wm-doc__count { font-weight: 700; color: var(--clinic-primary); }
.agenda-wm-card > .agenda-statnums { padding: var( --clinic-space-4 ) var( --clinic-space-6 ); justify-content: flex-start; margin-top: 0; }

/* ── ریسپانسیو تقویم نوبت‌ها (STEP 77) ── */
/* تبلت (۶۰۱–۱۰۲۴): جدولِ هفتگی فشرده + اسکرولِ افقیِ نرم، نامِ پزشک/سرستون sticky. */
@media (max-width: 1024px) {
	.agenda-week-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
	.agenda-week { min-width: 680px; }
	.agenda-week th, .agenda-week td { padding: var( --clinic-space-3 ) var( --clinic-space-2 ); font-size: 12px; }
	.agenda-week__count { font-size: 14px; }
	.agenda-week__corner, .agenda-week__rowlbl { position: sticky; inset-inline-end: 0; background: var(--clinic-bg); z-index: 2; }
	.agenda-statnum { font-size: 10px; }
	.agenda-mday { min-height: 84px; }
	.agenda-mday__doc { font-size: 10px; }
}
/* موبایل (<۶۰۰): هفتگی ⇒ لیستِ کارتِ روزها، ماهانه ⇒ سلولِ فشرده، روزانه ⇒ تک‌ستون. */
@media (max-width: 600px) {
	/* STEP 122 — نوارِ تقویم گروه‌بندیِ منطقی: ردیف۱ تب‌های نما (segmented، هم‌اندازه)،
	 * ردیف۲ ناوبریِ تاریخ (قبلی/امروز/بعدی هم‌اندازه)، عنوان وسط‌چینِ ردیفِ جدا. */
	.clinic-agenda .clinic-title { align-items: flex-start; }
	.agenda-toolbar { flex-direction: column; align-items: stretch; gap: var( --clinic-space-5 ); }
	.agenda-tabs { width: 100%; gap: 0; }
	.agenda-tabs .clinic-btn { flex: 1 1 0; min-height: 42px; border-radius: 0; }
	.agenda-tabs .clinic-btn:first-child { border-radius: 0 var(--clinic-form-radius, 8px) var(--clinic-form-radius, 8px) 0; }
	.agenda-tabs .clinic-btn:last-child { border-radius: var(--clinic-form-radius, 8px) 0 0 var(--clinic-form-radius, 8px); }
	.agenda-nav { width: 100%; gap: var( --clinic-space-3 ); flex-wrap: wrap; }
	.agenda-nav .clinic-btn { flex: 1 1 0; min-height: 42px; justify-content: center; }
	/* عنوانِ تاریخ (span، JS پُر می‌کند) به ردیفِ کاملِ جدا می‌رود (flex-basis:100%) تا دکمه‌ها
	 * را در ردیفِ بالا فشرده نکند. */
	.agenda-title { flex: 1 0 100%; text-align: center; margin: var( --clinic-space-1 ) 0 0; }
	.agenda-docchip { min-height: 40px; }
	/* روزانه: ستون‌ها روی‌هم (تک‌ستون)؛ سوییچِ پزشک از چیپ‌های doctorbar. */
	.agenda-day { flex-direction: column; overflow-x: visible; }
	.agenda-col { flex: 1 1 auto; min-width: 0; width: 100%; }
	.agenda-slot { min-height: 40px; }
	/* هفتگی: جدول پنهان، لیستِ کارتِ روزها نمایش. */
	.agenda-week-wrap .agenda-week { display: none; }
	.agenda-week-wrap { overflow-x: visible; }
	.agenda-week-mobile { display: flex; flex-direction: column; gap: var( --clinic-space-5 ); }
	/* ماهانه: سلولِ compact — فقط شماره + badge + نقطه‌ها (ردیف‌های پزشک پنهان؛ tap ⇒ روزانه). */
	.agenda-mday { min-height: 56px; padding: 3px; }
	.agenda-mday__docs { display: none; }
	.agenda-month .clinic-cal__grid { gap: 3px; }
	.agenda-month .clinic-cal__wd { font-size: 10px; }
}

/* ====================================================================
 * STEP 74 — فرمِ آپلودِ بیمار + مدیریتِ انواعِ نوبت. رنگ‌ها توکن‌محور.
 * ==================================================================== */
.myfiles-upload { border: 1px solid var(--clinic-border); border-radius: var(--clinic-form-radius, 8px); padding: var( --clinic-space-7 ); margin-bottom: var( --clinic-space-9 ); background: var(--clinic-bg-light); }
.myfiles-cats { margin-bottom: var( --clinic-space-5 ); }
.myfiles-msg { padding: var( --clinic-space-4 ) var( --clinic-space-6 ); border-radius: var(--clinic-form-radius, 8px); margin-bottom: var( --clinic-space-5 ); font-size: 13px; }
.myfiles-msg.is-ok { background: var(--clinic-bg); color: var(--clinic-success); border: 1px solid var(--clinic-success); }
.myfiles-msg.is-bad { background: var(--clinic-bg); color: var(--clinic-warning); border: 1px solid var(--clinic-warning); }
.myfiles-fileinput { position: absolute; width: 1px; height: 1px; opacity: 0; overflow: hidden; }
.myfiles-filelabel { display: flex; flex-direction: column; gap: var( --clinic-space-3 ); cursor: pointer; }
.myfiles-filelabel__btn { display: inline-block; text-align: center; padding: var( --clinic-space-7 ) var( --clinic-space-8 ); border: 2px dashed var(--clinic-primary); border-radius: var(--clinic-form-radius, 8px); color: var(--clinic-primary); background: var(--clinic-bg); font-size: 15px; }
.myfiles-filelabel:hover .myfiles-filelabel__btn { background: var(--clinic-bg-light); }
.myfiles-filelabel__name { font-size: 12px; color: var(--clinic-muted); direction: ltr; text-align: right; }
@media (max-width: 700px) { .myfiles-upload { padding: var( --clinic-space-5 ); } .myfiles-filelabel__btn { padding: var( --clinic-space-9 ) var( --clinic-space-6 ); font-size: 16px; } }

/* جدولِ مدیریتِ انواعِ نوبت — از .clinic-switch (STEP 72) استفاده می‌کند. */
.clinic-types-table input.clinic-input { min-width: 70px; }
.clinic-types-table input[type="number"] { width: 90px; }
.clinic-types-table td { vertical-align: middle; }

/* ====================================================================
 * STEP 75 — سیستمِ چیدمانِ فرمِ سراسری (container-based) + بازطراحیِ بخشِ «نوبت».
 * یک سیستم، همه‌جا. ستون‌ها از عرضِ **ظرف** (نه viewport) می‌آیند. رنگ/گردی از توکن.
 * ==================================================================== */
.clinic-form-grid {
	display: grid;
	grid-template-columns: repeat( auto-fit, minmax( var( --clinic-form-col, 260px ), 1fr ) );
	gap: var( --clinic-gap, 16px );
	align-items: start;
}
.clinic-form-grid--dense { --clinic-form-col: 200px; }
.clinic-field--full { grid-column: 1 / -1; }
.clinic-field--half { grid-column: auto; }

/* ====================================================================
 * STEP 81 — گریدِ قطعیِ فرم‌سازِ اسکیمایی (مستقل از .clinic-form-grid).
 * عرضِ ستون از عرضِ **ظرف** (container query): موبایل ۱ ستون، دسکتاپ ۶ تراک.
 * full=۶، half=۳، third=۲ تراک ⇒ ریسپانسیوِ خودکار. رنگ/گردی از توکن.
 * ==================================================================== */
.clinic-fb-grid { display: grid; grid-template-columns: 1fr; gap: var( --clinic-gap, 16px ); align-items: start; }
.clinic-fb-grid > .clinic-field { grid-column: 1 / -1; min-width: 0; }
.clinic-fb-step, .clinic-fb-step-card, .clinic-fb-preview { container-type: inline-size; }
@container (min-width: 600px) {
	.clinic-fb-grid { grid-template-columns: repeat( 6, 1fr ); }
	.clinic-fb-grid > .clinic-field--full { grid-column: span 6; }
	.clinic-fb-grid > .clinic-field--half { grid-column: span 3; }
	.clinic-fb-grid > .clinic-field--third { grid-column: span 2; }
}



/* فرمِ فرانتِ اسکیمایی — مرحله‌ای + عناصرِ نمایشی. */
.clinic-fb-front .clinic-fb-card { max-width: 760px; }
.clinic-req { color: var( --clinic-warning, #D98282 ); font-weight: 700; }
.clinic-fb-help { display: block; margin-top: var( --clinic-space-2 ); color: var( --clinic-muted ); font-size: 12px; }
.clinic-fb-choices { display: flex; flex-wrap: wrap; gap: var( --clinic-space-6 ); }
.clinic-fb-heading { color: var( --clinic-primary ); margin: var( --clinic-space-4 ) 0; font-size: 16px; font-weight: 700; }
.clinic-fb-paragraph { color: var( --clinic-text ); margin: var( --clinic-space-2 ) 0; line-height: 1.8; }
.clinic-fb-divider { border: 0; border-top: 1px solid var( --clinic-border ); margin: var( --clinic-space-4 ) 0; }
.clinic-fb-spacer { min-height: 24px; }
.clinic-fb-step__title { color: var( --clinic-primary ); font-size: 15px; font-weight: 700; margin: 0 0 var( --clinic-space-6 ); }

/* نوارِ پیشرفتِ مرحله‌ای. */
.clinic-fb-progress { display: flex; flex-wrap: wrap; gap: var( --clinic-space-4 ); list-style: none; margin: 0 0 var( --clinic-space-9 ); padding: 0; counter-reset: step; }
.clinic-fb-progress__step { display: flex; align-items: center; gap: var( --clinic-space-4 ); flex: 1 1 auto; color: var( --clinic-muted ); font-size: 13px; }
.clinic-fb-progress__num { display: inline-flex; align-items: center; justify-content: center; width: 28px; height: 28px; border-radius: 50%; background: var( --clinic-bg-light ); color: var( --clinic-primary ); font-weight: 700; border: 2px solid transparent; }
.clinic-fb-progress__step.is-active .clinic-fb-progress__num { background: var( --clinic-primary ); color: var( --clinic-on-primary, #fff ); }
.clinic-fb-nav { display: flex; justify-content: space-between; gap: var( --clinic-space-6 ); margin-top: var( --clinic-space-9 ); }

/* بلوک‌های سیستمیِ رزرو در فرمِ اسکیمایی. */
.clinic-fb-system { border: 1px dashed var( --clinic-border ); border-radius: var( --clinic-form-radius, 10px ); padding: var( --clinic-space-6 ); background: var( --clinic-bg ); }
.clinic-fb-system__ph { color: var( --clinic-muted ); font-size: 13px; padding: var( --clinic-space-4 ); text-align: center; background: var( --clinic-bg-light ); border-radius: var( --clinic-field-radius, 8px ); margin-top: var( --clinic-space-3 ); }

/* سکشنِ کارت‌مانندِ استانداردِ فرم‌ها (عنوان + آیکون + گردیِ توکن + سایه‌ی نرم). */
.clinic-form-section { border: 1px solid var(--clinic-border); border-radius: var(--clinic-form-radius, 10px); padding: var( --clinic-space-8 ); margin-bottom: var( --clinic-space-8 ); background: var(--clinic-bg); box-shadow: 0 1px 3px rgba(43,34,64,.06); }
.clinic-form-section > .clinic-form-section__title:first-child { margin-top: 0; }
.clinic-form-section__title { display: flex; align-items: center; gap: var( --clinic-space-4 ); font-weight: 700; color: var(--clinic-primary); margin: 0 0 var( --clinic-space-6 ); font-size: 15px; }
.clinic-form-section__icon { font-size: 17px; line-height: 1; }

/* ── بخشِ «نوبت»: دو ستونه (تاریخ راست ~۴۰٪ | نوع/بیمه/ساعت چپ ~۶۰٪) — container query. ── */
.bw-appt-wrap { container-type: inline-size; container-name: bwappt; display: block; }
.bw-appt-layout { display: grid; grid-template-columns: 1fr; gap: var( --clinic-space-8 ); align-items: start; }
@container bwappt (min-width: 760px) { .bw-appt-layout { grid-template-columns: 2fr 3fr; } }
.bw-appt-date .clinic-cal { max-width: 100%; }
.bw-appt-main { display: flex; flex-direction: column; gap: var( --clinic-space-8 ); min-width: 0; }

/* کارتِ نوع و بیمه: چیپ‌های نوع (سطر۱)، بیمه + قیمت (سطر۲). */
.bw-appt-typeins .bw-typechips { margin-bottom: var( --clinic-space-6 ); }
.bw-appt-insrow { display: flex; flex-wrap: wrap; align-items: center; gap: var( --clinic-space-6 ); }
.bw-appt-insrow .bw-chooser { margin: 0; flex: 1 1 auto; }
.bw-price-badge { display: inline-flex; align-items: center; gap: var( --clinic-space-3 ); padding: var( --clinic-space-3 ) var( --clinic-space-7 ); border-radius: var(--clinic-radius-pill, 999px); background: var(--clinic-primary); color: var(--clinic-on-primary, #fff); font-weight: 700; font-size: 13px; white-space: nowrap; min-height: 18px; }
.bw-price-badge:empty { display: none; }

/* پنلِ ساعت: ارتفاعِ ثابت + اسکرولِ داخلی (ضدِّ پرش) + گروهِ صبح/عصر + گریدِ چیپ. */
.bw-appt-slots .clinic-cal__slots { display: block; max-height: 320px; min-height: 320px; overflow-y: auto; margin-top: 0; }
.clinic-cal__slotgroup { margin-bottom: var( --clinic-space-6 ); }
.clinic-cal__slotgroup-title { font-size: 12px; color: var(--clinic-muted); margin: var( --clinic-space-2 ) 0 var( --clinic-space-4 ); padding-bottom: var( --clinic-space-2 ); border-bottom: 1px dashed var(--clinic-border); }
.clinic-cal__slotgrid { display: grid; grid-template-columns: repeat( auto-fill, minmax( 78px, 1fr ) ); gap: var( --clinic-space-4 ); }
.clinic-cal__slotgrid .clinic-cal__slot { width: 100%; text-align: center; }
.clinic-cal__slothint { color: var(--clinic-muted); font-size: 13px; text-align: center; padding: var( --clinic-space-20 ) var( --clinic-space-6 ); }
/* STEP 114-۴: چیپِ ساعت با شمارنده‌ی ظرفیت. */
.clinic-cal__slot { display: inline-flex; flex-direction: column; align-items: center; justify-content: center; line-height: 1.3; gap: var( --clinic-space-1 ); }
.clinic-cal__slot-time { font-weight: 600; }
.clinic-cal__slot-cap { font-size: 11px; color: var(--clinic-success-700, #047857); } /* STEP 114-۴: سبزِ تیره برای کنتراستِ AA روی پس‌زمینه‌ی روشن (۵٫۵:۱). */
.clinic-cal__slot.is-sel .clinic-cal__slot-cap { color: var(--clinic-btn-primary-text, #fff); }
/* اسلاتِ پر: غیرفعال ولی خوانا — متنِ تیره‌ی اصلی روی پس‌زمینه‌ی روشن (کنتراست بالا، AA). */
.clinic-cal__slot.is-full { opacity: 1; cursor: not-allowed; background: var(--clinic-bg-secondary, #F9FAFB); color: var(--clinic-text, #1F2937); border-color: var(--clinic-border, #D7DBE0); }
.clinic-cal__slot.is-full .clinic-cal__slot-time { color: var(--clinic-text, #1F2937); }
.clinic-cal__slot.is-full .clinic-cal__slot-cap--full { color: var(--clinic-danger, #B42318); font-weight: 700; }

/* نوارِ خلاصه‌ی انتخاب. */
.bw-summary { display: none; align-items: center; flex-wrap: wrap; gap: var( --clinic-space-4 ); padding: var( --clinic-space-5 ) var( --clinic-space-7 ); margin: var( --clinic-space-7 ) 0; border-radius: var(--clinic-form-radius, 8px); background: var(--clinic-bg-light); color: var(--clinic-text); font-size: 13px; font-weight: 600; }
.bw-summary.is-shown { display: flex; }
.bw-summary__sep { color: var(--clinic-muted); font-weight: 400; }

/* فرمِ قراردادهای بیمه (اسکرین‌شاتِ ۲): ردیفِ سه‌ستونه. */
.clinic-insform .clinic-form-grid { align-items: end; }

/* ============================================================
   STEP 83 — صندوقِ فرم‌ها (اینباکس) + جزئیاتِ ارسال
   ============================================================ */
.clinic-inbox-filters { display: flex; flex-direction: column; gap: var( --clinic-space-6 ); }
.clinic-inbox-chips { display: flex; flex-wrap: wrap; gap: var( --clinic-space-4 ); }
.clinic-chip { display: inline-flex; align-items: center; gap: var( --clinic-space-3 ); padding: var( --clinic-space-3 ) var( --clinic-space-7 ); border-radius: var(--clinic-radius-pill, 999px); background: var(--clinic-bg-light); color: var(--clinic-text); border: 1px solid var(--clinic-border); font-size: 13px; text-decoration: none; cursor: pointer; transition: background .15s, color .15s; }
.clinic-chip:hover { background: var(--clinic-card-hover, #f3e8ff); color: var(--clinic-text); }
/* STEP 126 (CSS سفارشی): چیپِ فعال — !important برای غلبه‌ی قطعی (سفید روی بنفش ۸٫۶:۱). */
.clinic-chip.is-active { background: var(--clinic-primary) !important; color: var(--clinic-on-primary, #fff) !important; border-color: var(--clinic-primary); }
.clinic-chip--sm { padding: 3px var( --clinic-space-5 ); font-size: 12px; }
.clinic-inbox-search { display: flex; flex-wrap: wrap; gap: var( --clinic-space-6 ); align-items: flex-end; }
.clinic-inbox-search .clinic-field { margin: 0; min-width: 150px; }
.clinic-inbox-search .clinic-field--btn { display: flex; gap: var( --clinic-space-4 ); align-items: flex-end; }
.clinic-inbox-toolbar { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: var( --clinic-space-5 ); margin-bottom: var( --clinic-space-6 ); }
.clinic-inbox-count { font-weight: 700; color: var(--clinic-text); }
.clinic-inbox-perpage { display: inline-flex; gap: var( --clinic-space-3 ); }
.clinic-inbox-bulk { display: flex; flex-wrap: wrap; gap: var( --clinic-space-4 ); align-items: center; margin-bottom: var( --clinic-space-5 ); }
.clinic-inbox-table th, .clinic-inbox-table td { vertical-align: middle; }
.clinic-inbox-cb { width: 32px; text-align: center; }
.clinic-inbox-row.is-unread td { font-weight: 700; }
.clinic-inbox-dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: var(--clinic-primary); margin-inline-end: var( --clinic-space-3 ); vertical-align: middle; }
.clinic-inbox-summary { color: var(--clinic-muted); font-weight: 400; font-size: 12px; max-width: 360px; } /* STEP G4: !important زائد (قاعده‌ی خودِ span بر ارث غلبه دارد). */
.clinic-inbox-pagination { display: flex; flex-wrap: wrap; gap: var( --clinic-space-3 ); margin-top: var( --clinic-space-7 ); }
.clinic-inbox-nav { display: inline-flex; gap: var( --clinic-space-3 ); }
/* جزئیاتِ ارسال — دو ستونه (محتوا + کناری)، موبایل تک‌ستون. */
.clinic-response-detail { display: grid; grid-template-columns: 1fr; gap: var( --clinic-space-8 ); }
@media (min-width: 1000px) { .clinic-response-detail { grid-template-columns: 1fr 320px; align-items: start; } }
.clinic-response-actions { display: flex; flex-direction: column; gap: var( --clinic-space-4 ); margin-top: var( --clinic-space-6 ); }
.clinic-response-actions .clinic-inline-form { margin: 0; }
.clinic-assign-form { margin-top: var( --clinic-space-6 ); display: flex; flex-direction: column; gap: var( --clinic-space-3 ); }
.clinic-menu-badge { display: inline-block; }

/* ============================================================
 * STEP 112 — بازنگری سراسری UI پیشخوان (کامپوننت‌های مشترک).
 * فقط کلاس‌های مشترکِ افزایشی؛ هر صفحه‌ی لیستی/فرم از این‌ها استفاده می‌کند.
 * ============================================================ */

/* E — عرض ۹۹٪/کامل: صفحه و کارت‌ها/جدول‌ها کل عرض را پر می‌کنند (یکسان). */
.clinic-wrap { width: 99%; box-sizing: border-box; }
.clinic-wrap .clinic-card,
.clinic-wrap .clinic-table,
.clinic-list-head { width: 100%; box-sizing: border-box; }
/* ردیفِ کارت‌ها: کشیده تا کل عرض، عرضِ یکسان (نه نیمه‌رها). */
.clinic-row-grid { display: grid; gap: var( --clinic-gap, 16px ); grid-template-columns: repeat( var( --clinic-row-cols, 3 ), minmax( 0, 1fr ) ); align-items: stretch; }
.clinic-row-grid > * { min-width: 0; }
@media ( max-width: 1100px ) { .clinic-row-grid { grid-template-columns: repeat( 2, minmax( 0, 1fr ) ); } }
@media ( max-width: 680px ) { .clinic-row-grid { grid-template-columns: 1fr; } }

/* A — هدر استانداردِ صفحات لیستی: ردیف ۱ عنوان+اکشن، ردیف ۲ نوارِ فیلتر. */
.clinic-list-head { display: flex; flex-direction: column; gap: var( --clinic-space-6 ); margin: 0 0 var( --clinic-space-8 ); }
.clinic-list-head__bar { display: flex; align-items: center; justify-content: space-between; gap: var( --clinic-space-6 ); flex-wrap: wrap; }
.clinic-list-head__title { margin: 0; font-size: var( --fs-2xl, 22px ); font-weight: var( --fw-bold, 700 ); color: var( --clinic-text, #2B2240 ); line-height: 1.3; }
.clinic-list-head__actions { display: flex; gap: var( --clinic-space-4 ); align-items: center; flex-wrap: wrap; }
.clinic-list-head__toolbar { display: flex; flex-wrap: wrap; gap: var( --clinic-space-4 ); align-items: center; background: var( --clinic-bg-light, #F3E8FF ); border: 1px solid var( --clinic-border, #ece7f4 ); border-radius: 10px; padding: var( --clinic-space-5 ) var( --clinic-space-6 ); }
.clinic-list-head__toolbar > form { display: contents; }

/* C — یکدست‌سازی فیلترها/دکمه‌ها: هم‌ارتفاع ۴۰px، هم‌گردی، هم‌فونت. */
.clinic-list-head__toolbar input[type="text"],
.clinic-list-head__toolbar input[type="search"],
.clinic-list-head__toolbar input[type="date"],
.clinic-list-head__toolbar input[type="number"],
.clinic-list-head__toolbar select,
.clinic-toolbar input,
.clinic-toolbar select {
	height: 40px; box-sizing: border-box;
	border: 1px solid var( --clinic-border, #ece7f4 );
	border-radius: var( --clinic-field-radius, 8px );
	padding: 0 var( --clinic-space-6 ); font-family: inherit; font-size: 14px;
	background: var( --clinic-bg ); color: var( --clinic-text, #2B2240 );
}
/* STEP 136: box-sizing سراسری تا دکمه‌ی شبحِ <a> در toolbar (content-box + padding) به ۴۰px بنشیند
 * و با <button> هم‌تراز شود (همان رفعِ scope‌شده‌ی STEP 132، حالا برای همه‌ی toolbarها). */
.clinic-list-head__toolbar .clinic-btn,
.clinic-toolbar .clinic-btn { height: 40px; box-sizing: border-box; display: inline-flex; align-items: center; }

/* STEP 121 — فیلدِ جست‌وجوی نوبت‌ها در نوار فیلتر: عرضِ ثابتِ متعارفِ inline تا کنارِ بقیه‌ی
 * فیلترها بنشیند و خوانا بماند (آیکنِ ذره‌بین از search-fields.css حفظ می‌شود).
 * نکته: باید `min-width:90% !important`ِ search-fields.css (مخصوصِ نوارِ جست‌وجوی تمام‌عرض)
 * را با specificityِ بالاتر + !important خنثی کنیم، وگرنه فیلد کلِ ردیف را پر می‌کند. */
.clinic-wrap .clinic-appt-filters input[type="search"].clinic-input--search {
	min-width: 200px !important;
	width: var( --clinic-field-max-width, 360px );
	max-width: 100%;
	flex: 0 1 auto;
	margin-bottom: 0;
}

/* B — نوارِ عملیاتِ دسته‌جمعی + ستونِ checkbox (مشترک). */
.clinic-bulkbar {
	display: none; align-items: center; gap: var( --clinic-space-5 ); flex-wrap: wrap;
	background: var( --clinic-primary, #4B2E83 ); color: var( --clinic-text-inverse );
	border-radius: 10px; padding: var( --clinic-space-4 ) var( --clinic-space-7 ); margin: 0 0 var( --clinic-space-6 );
}
.clinic-bulkbar.is-active { display: flex; }
.clinic-bulkbar__count { font-weight: 700; }
.clinic-bulkbar select { height: 36px; border-radius: var( --clinic-radius-sm ); border: none; padding: 0 var( --clinic-space-5 ); font-family: inherit; }
/* STEP 133: دکمه‌ی «اعمال» روی نوارِ بنفش — متنِ شبحِ بنفش روی بنفش نامرئی بود (۱:۱).
 * پس‌زمینه‌ی روشن + متنِ بنفش ⇒ خوانا (~۱۰:۱)؛ hover یاسیِ روشن (~۸٫۸:۱). اصلاحِ تکِ‌منبع همه‌ی نوارها. */
.clinic-bulkbar .clinic-btn { height: 36px; background: var( --clinic-surface, #fff ); color: var( --clinic-primary, #4B2E83 ); border: none; }
.clinic-bulkbar .clinic-btn:hover,
.clinic-bulkbar .clinic-btn:focus { background: var( --clinic-bg-light, #F3E8FF ); color: var( --clinic-primary, #4B2E83 ); }
.clinic-cb-col { width: 36px; text-align: center; }
.clinic-table td.clinic-cb-col input,
.clinic-table th.clinic-cb-col input { width: 17px; height: 17px; cursor: pointer; }

/* D — گریدِ فرمِ قطعی: فیلدها کشیده، بدونِ فضای خالیِ نامنظم (container query). */
.clinic-form-grid { container-type: inline-size; }
@container ( min-width: 560px ) {
	.clinic-form-grid { grid-template-columns: repeat( 2, minmax( 0, 1fr ) ); }
	.clinic-form-grid .clinic-field--full { grid-column: 1 / -1; }
}
@container ( min-width: 900px ) {
	.clinic-form-grid { grid-template-columns: repeat( 3, minmax( 0, 1fr ) ); }
}
.clinic-form-grid > .clinic-field { min-width: 0; }

/* ════════════════════════════════════════════════════════════════════
 * STEP 126 — اعمالِ قواعدِ CSSِ سفارشیِ کارفرما (با اصلاحِ خطا + scope + احترام به STEP 122–125).
 * قواعدِ ردشده/تکراری در docs/progress/step-126.md مستند است.
 * ════════════════════════════════════════════════════════════════════ */
/* فاصله‌ی نشان‌ها (badge margin). */
.clinic-badge { margin: 3px 3px; }
/* تبِ بایگانیِ فعال (clinic-atab.is-on) — سفید روی بنفش ۸٫۶:۱. */
.clinic-atab.is-on { background: var(--clinic-primary, #4B2E83); color: var(--clinic-on-primary, #fff) !important; border-color: var(--clinic-primary, #4B2E83); }
/* فاصله‌ی پایینِ فشرده‌ی فیلدها (input margin). */
.clinic-input, .clinic-select, .clinic-textarea { margin-bottom: 5px !important; }
/* پدینگِ سلکتورِ نوارِ عملیاتِ دسته‌جمعی (فضای فلشِ سمتِ شروع). */
.clinic-bulkbar select { padding: 0 var( --clinic-space-5 ) 0 30px; } /* STEP G4: !important زائد حذف شد (اثباتِ CDP: مقدار یکسان). */

@media ( max-width: 782px ) {
	/* دکمه‌های نوارِ فیلترِ هدر ارتفاعِ خودکار (متنِ بلند wrap شود)؛ min-height:44pxِ STEP 110
	 * همچنان حاکم است ⇒ تاچ‌تارگت حفظ می‌شود. */
	.clinic-list-head__toolbar .clinic-btn { height: auto; } /* STEP G4: !important زائد (min-height و ترتیبِ منبع حاکم‌اند). */
	/* پدینگِ فشرده‌ترِ تب‌های بایگانی روی موبایل. */
	.clinic-atab { padding: var( --clinic-space-4 ) var( --clinic-space-5 ); } /* STEP G4: !important زائد (هم‌سلکتور، ترتیبِ منبع حاکم). */
}

/* ===== STEP 146 — بارگذاری مدارک در فرمِ رزرو + کارتِ مدارکِ جزئیاتِ نوبت ===== */
.clinic-docup { margin-top: var( --clinic-space-9 ); padding: var( --clinic-space-8 ); border: 1px solid var(--clinic-border, #E5E7EB); border-radius: var(--clinic-form-radius, 12px); background: var(--clinic-bg, #fff); }
.clinic-docup__hint { color: var(--clinic-muted, #6B7280); font-size: .9em; margin: .2em 0 1em; }
.clinic-docup__rows { display: flex; flex-direction: column; gap: var( --clinic-space-7 ); }
.clinic-docup__row { padding: var( --clinic-space-6 ); border: 1px dashed var(--clinic-border, #E5E7EB); border-radius: 10px; background: var(--clinic-bg-light, #F8F7FF); }
.clinic-docup__filewrap { display: flex; align-items: center; gap: var( --clinic-space-5 ); flex-wrap: wrap; margin-bottom: var( --clinic-space-4 ); }
.clinic-docup__fname { color: var(--clinic-muted, #6B7280); font-size: .9em; flex: 1 1 120px; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.clinic-docup__remove { margin-inline-start: auto; }
.clinic-docup__titlelabel { display: block; margin: .4em 0 .2em; }
.clinic-docup__catlabel { display: block; margin: .7em 0 .3em; font-weight: 600; color: var(--clinic-text, #111827); }
.clinic-docup__cats { display: flex; flex-wrap: wrap; gap: var( --clinic-space-4 ) var( --clinic-space-8 ); }
.clinic-docup__cat { display: inline-flex; align-items: center; gap: var( --clinic-space-3 ); color: var(--clinic-text, #111827); cursor: pointer; }
.clinic-docup__add { margin-top: var( --clinic-space-6 ); }

.appt-docs-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: var( --clinic-space-6 ); }
.appt-doc { padding: var( --clinic-space-6 ); border: 1px solid var(--clinic-border, #E5E7EB); border-radius: 10px; background: var(--clinic-bg-light, #F8F7FF); }
.appt-doc__head { display: flex; align-items: center; gap: var( --clinic-space-4 ); margin-bottom: var( --clinic-space-3 ); }
.appt-doc__ic { flex: 0 0 auto; }
.appt-doc__title { font-weight: 600; color: var(--clinic-text, #111827); flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.appt-doc__cats { color: var(--clinic-muted, #6B7280); font-size: .88em; margin-bottom: var( --clinic-space-4 ); }
.appt-doc__pending { background: var(--clinic-warning-100, #FEF3C7); color: var(--clinic-warning-700, #B45309); border-radius: var( --clinic-radius-pill ); padding: var( --clinic-space-1 ) var( --clinic-space-5 ); font-size: .78em; font-weight: 600; white-space: nowrap; }
.appt-doc__ok { background: var(--clinic-success-100, #D1FAE5); color: var(--clinic-success-700, #047857); border-radius: var( --clinic-radius-pill ); padding: var( --clinic-space-1 ) var( --clinic-space-5 ); font-size: .78em; font-weight: 600; white-space: nowrap; }
@media ( max-width: 600px ) {
	.appt-docs-grid { grid-template-columns: 1fr; }
}

/* ===== STEP 148 — نشانِ «پیش‌پرداخت» + کارتِ KPI + یادداشتِ گزارش ===== */
.clinic-badge--deposit {
	background: var(--clinic-primary-100, #EDE8FF);
	color: var(--clinic-primary-800, #3F1B6B);
}
.clinic-fin-dash .clinic-stat--deposit .clinic-stat__ico {
	background: var(--clinic-success-100, #D1FAE5);
	color: var(--clinic-success-700, #047857);
}
.clinic-fin-segmented .clinic-seg-note {
	background: var(--clinic-bg-light, #F3E8FF);
	color: var(--clinic-text, #111827);
	border-radius: var( --clinic-radius-md );
	padding: var( --clinic-space-5 ) var( --clinic-space-7 );
	margin: var( --clinic-space-2 ) 0 var( --clinic-space-6 );
	font-size: 13px;
}
.clinic-fin-segmented .clinic-segkpi--deposit .clinic-segkpi__ico {
	background: var(--clinic-success-100, #D1FAE5);
	color: var(--clinic-success-700, #047857);
}

/* ===== STEP 150 — پیش‌نمایشِ فایل (thumbnail/آیکون) + هم‌ارتفاعیِ کارت‌های گزارش ===== */
.clinic-file-thumb { display: inline-flex; align-items: center; justify-content: center; width: 48px; height: 48px; border-radius: 10px; border: 1px solid var( --clinic-border, #E5E7EB ); background: var( --clinic-bg-light, #F3E8FF ); overflow: hidden; text-decoration: none; }
.clinic-file-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.clinic-file-thumb--doc { font-size: 22px; color: var( --clinic-primary, #4B2E83 ); }
.clinic-files-table td { vertical-align: middle; }

/* STEP 150 (بخش ۵): هم‌ارتفاعیِ کارت‌های KPIِ گزارشِ مالی در دسکتاپ. STEP 193: چیدمانِ گرید و
 * هم‌ارتفاعی اکنون از ابزارِ مرکزیِ .clinic-cards-grid می‌آید (align-items:stretch، بدون height:100%
 * که باعثِ سرریزِ کارت روی ردیفِ بعدی می‌شد). فقط justify باقی می‌ماند. */
.clinic-fin-segmented .clinic-segkpi { justify-content: flex-start; }
.clinic-fin-report .clinic-stats { align-items: stretch; }
.clinic-fin-report .clinic-stat { height: 100%; }

/* ===== STEP 152/193 — کارت‌های تفکیکیِ درآمد: گرید از ابزارِ مرکزیِ .clinic-cards-grid؛ اینجا فقط استایلِ کارت ===== */
.clinic-revcards .clinic-segkpi { display: flex; flex-direction: column; gap: var( --clinic-space-3 ); padding: var( --clinic-space-8 ); border-radius: var( --clinic-radius-xl ); background: var( --clinic-bg, #fff ); border: 1px solid var( --clinic-border, #E5E7EB ); box-shadow: 0 2px 10px rgba( 75, 46, 131, .06 ); justify-content: flex-start; min-width: 0; }
.clinic-revcards .clinic-segkpi__ico { width: 40px; height: 40px; display: inline-flex; align-items: center; justify-content: center; border-radius: var( --clinic-radius-md ); background: var( --clinic-bg-light, #F3E8FF ); color: var( --clinic-primary, #4B2E83 ); flex: 0 0 auto; }
.clinic-revcards .clinic-segkpi__ico svg { width: 20px; height: 20px; }
.clinic-revcards .clinic-segkpi--total .clinic-segkpi__ico,
.clinic-revcards .clinic-segkpi--deposit .clinic-segkpi__ico { background: var( --clinic-success-100, #D1FAE5 ); color: var( --clinic-success-700, #047857 ); }
.clinic-revcards .clinic-segkpi__num { font-size: clamp( 17px, 2.2vw, 26px ); font-weight: 800; color: var( --clinic-text, #111827 ); overflow-wrap: anywhere; line-height: 1.25; }
.clinic-revcards .clinic-segkpi--total .clinic-segkpi__num { color: var( --clinic-success-700, #047857 ); }
.clinic-revcards .clinic-segkpi__lbl { color: var( --clinic-muted, #6B7280 ); font-size: 13px; }
.clinic-revcards .clinic-segkpi__sub { color: var( --clinic-primary, #4B2E83 ); font-size: 12px; font-weight: 600; }
/* موبایل: تک‌ستونیِ کارت‌ها را ابزارِ مرکزیِ .clinic-cards-grid (@media≤768) مدیریت می‌کند. */

/* ════════════════════════════════════════════════════════════════════════════
 * STEP 155 — لایه‌بندیِ بُعدی (Dimensional Layering): پوششِ کاملِ عناصرِ پیشخوان.
 * همه از مقیاسِ عمقِ مرکزیِ colors-v2 (--clinic-elev-*/--clinic-lift-*/--clinic-inset-*)
 * استفاده می‌کنند ⇒ عمقِ یکسان در همه‌ی ماژول‌ها (هیچ استایلِ جزیره‌ای). فقط ظاهر/عمق؛
 * رنگ/متن/کنتراست/چیدمان دست‌نخورده. سایه‌ها بنفش-ته‌رنگ و ظریف (حسِ پزشکیِ آرام).
 * ──────────────────────────────────────────────────────────────────────────── */
:root {
	--clinic-tr-elev: box-shadow .28s cubic-bezier(.4,0,.2,1), transform .28s cubic-bezier(.4,0,.2,1), border-color .28s ease;
}

/* ── ۱) کارت‌ها و پنل‌ها: سطحِ عمقِ «rest» + بالاآمدنِ ظریفِ hover ───────────── */
.clinic-subcard,
.clinic-about-card,
.clinic-modules-card,
.clinic-license-box,
.clinic-auth-box,
.clinic-form-section,
.appt-detail-card,
.clinic-stat,
.clinic-segkpi,
.clinic-revcards .clinic-segkpi,
.clinic-caps-group,
.clinic-help-article,
.clinic-response-detail,
.clinic-pad,
.clinic-rx-result,
.clinic-rx-canvas-view {
	box-shadow: var(--clinic-elev-rest, var(--clinic-shadow-sm));
	transition: var(--clinic-tr-elev);
}
.clinic-subcard:hover,
.clinic-modules-card:hover,
.clinic-stat:hover,
.clinic-segkpi:hover,
.clinic-revcards .clinic-segkpi:hover,
.clinic-help-article:hover,
.clinic-pad:hover {
	box-shadow: var(--clinic-elev-hover, var(--clinic-shadow-lg));
	transform: translateY(var(--clinic-lift-sm, -2px));
}

/* ── ۲) هیروِ برجسته‌ی پرونده‌ی جامع (سطحِ raised، بالاتر از کارت‌های عادی) ──── */
.clinic-crm__header {
	box-shadow: var(--clinic-elev-raised, var(--clinic-shadow-lg));
}

/* ── ۳) آیکون‌باکس‌ها و آواتارها (عمقِ flat + حلقه‌ی روشن) ──────────────────── */
.clinic-stat__ico,
.clinic-segkpi__ico,
.clinic-form-section__icon,
.clinic-crm__stat-icon {
	box-shadow: var(--clinic-elev-flat, var(--clinic-shadow-xs));
}
.clinic-crm__avatar,
.agenda-col__avatar,
.bw-chip__avatar {
	box-shadow: var(--clinic-elev-rest, var(--clinic-shadow-sm)), 0 0 0 3px var(--clinic-bg-primary, #fff);
}

/* ── ۴) مودال‌ها / پاپ‌آپ‌ها / dropdownها (سطحِ overlay/float + بلورِ عمق) ──── */
.clinic-modal__box,
.kanban-modal,
.clinic-portal__modal-box {
	box-shadow: var(--clinic-elev-overlay, var(--clinic-shadow-2xl)) !important;
}
.clinic-modal__backdrop,
.kanban-modal-overlay {
	backdrop-filter: blur(3px);
	-webkit-backdrop-filter: blur(3px);
}
.clinic-chatbot-panel,
.clinic-help-panel,
.clinic-search-suggest,
.bw-lookup .bw-lookup__item:first-child {
	box-shadow: var(--clinic-elev-float, var(--clinic-shadow-xl));
}
.clinic-search-suggest { border-radius: var(--radius-md, 8px); overflow: hidden; }

/* ── ۵) تب‌ها: نوارِ ناوبریِ کمی برجسته + تبِ فعالِ «بالاآمده» ───────────────── */
/*
 * STEP 221 قاعده ۲ کارفرما + نقش «ناوبری» — نوار ناوبری هرگز سایه ندارد.
 *
 * قاعده **حذف** شد، نه اینکه روکش important رویش نوشته شود. پس از این، قاعده
 * متناظر در لایه سفارشی کاربر زائد است.
 */
.clinic-atab.is-on,
.clinic-tab.is-active,
.clinic-tab.active,
.clinic-fin-segmented .is-active {
	/*
	 * STEP 221 عیب د۶ — تب فعال سایه نمی‌گیرد.
	 * تمایز حالت فعال از **رنگ و پس‌زمینه** می‌آید، نه از عمق. طبق جدول نقش،
	 * ناوبری هرگز سایه ندارد؛ نه خود نوار، نه آیتم فعالش.
	 */
	position: relative;
	z-index: var(--clinic-z-raised, 10);
}

/* ── ۶) چیپ‌ها / پیل‌ها / نشان‌های کوچک ───────────────────────────────────────
 * STEP 223-B — عمقِ flat و بالاآمدنِ hover حذف شدند. این سلکتورها دو نقش دارند:
 * برچسب (`clinic-chip`/`paybadge`/`srcbadge`/`cap-badge`) و ناوبری
 * (`perpage-chip`/`bw-typechip`). قراردادِ نقش برای **هر دو** می‌گوید سایه
 * ندارند، پس سایه از کلِ قاعده برداشته شد نه فقط از سلکتورهای برچسب — وگرنه
 * یک قاعده می‌ماند که دو نقش را ناهمگون می‌کرد.
 * تمایزِ حالت از رنگِ پس‌زمینه/متن/حاشیه می‌آید. */
.clinic-chip,
.bw-chip,
.bw-typechip,
.agenda-docchip,
.clinic-paybadge,
.clinic-srcbadge,
.clinic-cap-badge,
.perpage-chip {
	box-shadow: none;
	transition: background .2s ease, color .2s ease, border-color .2s ease;
}
.clinic-chip:hover,
.bw-chip:hover,
.bw-typechip:hover,
.agenda-docchip:hover {
	box-shadow: none;
}
/* STEP 223-B — چیپِ فعال هم بدونِ سایه.
 *
 * این نقض تا وقتی جاروب فقط ۱۶ صفحه بود **دیده نمی‌شد**، چون تنها نمونه‌ی
 * چیپِ فعالِ محصول در «صندوق فرم‌ها» است که در فهرستِ قبلی نبود. با گسترشِ
 * جاروب به ۳۱ صفحه بی‌درنگ پیدا شد. تمایزِ حالتِ فعال از پس‌زمینه‌ی برند و
 * رنگِ متن می‌آید (قاعده‌ی خطِ ۲۹۶۲ که دست‌نخورده است). */
.clinic-chip.is-active,
.bw-typechip:has( input:checked ),
.bw-chip:has( input:checked ) {
	box-shadow: none;
}

/* ── ۷) ردیف‌ها / آیتم‌های فهرست / خط‌زمانی / اسلات‌ها: عمقِ flat + hover ──────── */
.clinic-tl,
.agenda-slot,
.bw-lookup__item {
	transition: var(--clinic-tr-elev);
}
.clinic-tl:hover,
.agenda-slot:hover {
	box-shadow: var(--clinic-elev-rest, var(--clinic-shadow-sm));
	transform: translateY(var(--clinic-lift-sm, -2px));
}

/* ── ۸) سلول/دکمه‌های تقویم: بالاآمدنِ ظریفِ روزِ آزاد و چیپِ ساعت ────────────── */
.clinic-cal__day--open,
.clinic-cal__day--low,
.clinic-cal__slot,
.bw-slot,
.agenda-qa-slot {
	transition: var(--clinic-tr-elev);
}
.clinic-cal__day--open:hover,
.clinic-cal__day--low:hover,
.clinic-cal__slot:hover,
.bw-slot:hover,
.agenda-qa-slot:hover {
	box-shadow: var(--clinic-elev-rest, var(--clinic-shadow-md));
	transform: translateY(var(--clinic-lift-sm, -2px));
}
.agenda-mday,
.agenda-col {
	transition: var(--clinic-tr-elev);
}
.agenda-mday:hover {
	box-shadow: var(--clinic-elev-flat, var(--clinic-shadow-xs));
}

/* ── ۹) سوییچ/تاگل و دکمه‌های آیکنی/ناوبری ──────────────────────────────────
 * STEP 223-B — insetِ تراکِ سوییچ حذف شد. سوییچ نقشِ ورودی است و موکاپ
 * (`.switch-track`، خطِ ۲۱۸) هیچ سایه‌ای ندارد. جابه‌جاییِ دستک از ابعاد
 * محاسبه می‌شود (STEP 221) ⇒ حذفِ سایه انیمیشن را تکان نمی‌دهد. */
.clinic-switch__slider {
	box-shadow: none;
}
.clinic-switch__slider::before {
	box-shadow: var(--clinic-elev-rest, var(--clinic-shadow-sm));
}
.clinic-cal__nav,
.pwt-btn-prev,
.pwt-btn-next,
.pwt-btn-today,
.pwt-btn-submit,
.pwt-btn-calendar {
	box-shadow: var(--clinic-elev-flat, var(--clinic-shadow-xs));
	transition: var(--clinic-tr-elev);
}
.clinic-cal__nav:hover,
.clinic-nav-arrow:hover {
	transform: translateY(var(--clinic-lift-sm, -2px));
}

/* ── ۱۰) جدول‌های اختصاصیِ پیشخوان: سطحِ برجسته‌ی گرد (هماهنگ با clinic-table) ── */
.clinic-info-table,
.clinic-types-table,
.clinic-week-table,
.clinic-appt-table,
.clinic-files-table,
.clinic-sensitive-table,
.clinic-rx-table,
.appt-history-table,
.clinic-inbox-table,
.clinic-pricing-matrix {
	box-shadow: var(--clinic-elev-flat, var(--clinic-shadow-xs));
	border-radius: var(--radius-lg, 12px);
	overflow: hidden;
}

/* ── ۱۱) بوم/امضای نسخه (کارتِ برجسته) ────────────────────────────────────── */
.clinic-pad__canvas,
.clinic-rx-handwriting-img,
.clinic-rx-signature-img {
	box-shadow: var(--clinic-elev-flat, var(--clinic-shadow-xs));
}

/* ── ۱۲) کانبان (کارت + مودال) ─────────────────────────────────────────────── */
.kanban-card {
	box-shadow: var(--clinic-elev-flat, var(--clinic-shadow-xs));
	transition: var(--clinic-tr-elev);
}
.kanban-card:hover {
	box-shadow: var(--clinic-elev-hover, var(--clinic-shadow-lg)) !important;
	transform: translateY(var(--clinic-lift-sm, -2px)) !important;
}

/* احترام به prefers-reduced-motion (عمق می‌ماند، حرکت حذف). */
@media (prefers-reduced-motion: reduce) {
	.clinic-subcard:hover, .clinic-modules-card:hover, .clinic-stat:hover, .clinic-segkpi:hover,
	.clinic-revcards .clinic-segkpi:hover, .clinic-help-article:hover, .clinic-pad:hover,
	.clinic-chip:hover, .bw-chip:hover, .bw-typechip:hover, .agenda-docchip:hover,
	.clinic-tl:hover, .agenda-slot:hover, .clinic-cal__day--open:hover, .clinic-cal__day--low:hover,
	.clinic-cal__slot:hover, .bw-slot:hover, .agenda-qa-slot:hover, .kanban-card:hover,
	.clinic-cal__nav:hover, .clinic-nav-arrow:hover {
		transform: none !important;
	}
}

/* ════════════════════════════════════════════════════════════════════════════
 * STEP 155 (تکمیلی) — اعلان‌ها، دکمه‌های شناورِ عمل (FAB)، دکمه‌ی محبوب‌ها، ناحیه‌های
 * آپلودِ فایل، و فیلدهای OTP. باز هم از همان مقیاسِ عمقِ مرکزی.
 * ──────────────────────────────────────────────────────────────────────────── */
/* اعلان/جعبه‌ی هشدار (موفقیت/خطا/هشدار/اطلاع) — نوارِ کمی برجسته */
.clinic-notice {
	box-shadow: var(--clinic-elev-flat, var(--clinic-shadow-xs));
}

/* دکمه‌های شناورِ عمل (چت‌بات/راهنما) و دکمه‌ی دایره‌ایِ محبوب‌ها — سطحِ float */
.clinic-chatbot-toggle,
.clinic-help-trigger {
	box-shadow: var(--clinic-elev-float, var(--clinic-shadow-xl)) !important;
	transition: box-shadow .25s ease, transform .25s ease, background .25s ease;
}
.clinic-chatbot-toggle:hover,
.clinic-help-trigger:hover {
	box-shadow: var(--clinic-elev-overlay, var(--clinic-shadow-2xl)) !important;
	transform: translateY(var(--clinic-lift-sm, -2px));
}
.clinic-nav-pin {
	box-shadow: var(--clinic-elev-rest, var(--clinic-shadow-sm));
	transition: box-shadow .2s ease, transform .2s ease, background .2s ease;
}
.clinic-nav-pin:hover {
	box-shadow: var(--clinic-elev-hover, var(--clinic-shadow-lg));
	transform: translateY(var(--clinic-lift-sm, -2px));
}

/* ناحیه‌های آپلودِ فایل — پنلِ flat؛ ناحیه‌ی خط‌چینِ افکنش هنگام hover «بالا می‌آید» */
.myfiles-upload,
.clinic-docup,
.clinic-media__preview {
	box-shadow: var(--clinic-elev-flat, var(--clinic-shadow-xs));
}
.myfiles-filelabel__btn {
	transition: box-shadow .2s ease, transform .2s ease, background .2s ease;
}
.myfiles-filelabel:hover .myfiles-filelabel__btn {
	box-shadow: var(--clinic-elev-rest, var(--clinic-shadow-md));
	transform: translateY(var(--clinic-lift-sm, -2px));
}

/* STEP 223-B — insetِ فیلدهای OTP حذف شد: نقشِ ورودی سایه ندارد (نه بیرونی نه
 * درونی). حالتِ focus از قاعده‌ی outlineِ forms-v2.css می‌آید. */

@media (prefers-reduced-motion: reduce) {
	.clinic-chatbot-toggle:hover, .clinic-help-trigger:hover, .clinic-nav-pin:hover,
	.myfiles-filelabel:hover .myfiles-filelabel__btn {
		transform: none !important;
	}
}

/* ════════════════════════════════════════════════════════════════════════════
 * STEP 158 — آرشیو و فرمِ ویزیتِ پرونده‌ی پزشکی. هماهنگ با Dimensional Layering
 * (کارتِ گرد/عمق از clinic-card؛ چیپ‌ها از مقیاسِ عمقِ مرکزی؛ آیکونِ پالت‌رنگ).
 * ──────────────────────────────────────────────────────────────────────────── */
.clinic-visit-card__head { display: flex; align-items: center; gap: var( --clinic-space-6 ); flex-wrap: wrap; margin-bottom: var( --clinic-space-6 ); }
.clinic-visit-card__date { font-weight: 800; color: var(--clinic-primary, #4B2E83); display: inline-flex; align-items: center; gap: var( --clinic-space-3 ); font-size: 15px; }
.clinic-visit-card__doc { color: var(--clinic-muted, #6B7280); font-size: 13px; display: inline-flex; align-items: center; gap: 5px; }
.clinic-visit-card__act { margin-inline-start: auto; display: inline-flex; gap: var( --clinic-space-4 ); align-items: center; }
.clinic-visit-card__act .clinic-visit-del { display: inline; margin: 0; }

.clinic-visit-chips { display: flex; flex-wrap: wrap; gap: var( --clinic-space-4 ); margin: var( --clinic-space-3 ) 0; }
.clinic-visit-chip {
	display: inline-flex; align-items: baseline; gap: var( --clinic-space-3 );
	padding: var( --clinic-space-3 ) var( --clinic-space-6 ); border-radius: var(--clinic-field-radius, 10px);
	background: var(--clinic-bg-light, #F3E8FF);
	box-shadow: var(--clinic-elev-flat, 0 1px 2px rgba(31,21,53,.08));
}
.clinic-visit-chip__k { color: var(--clinic-muted, #6B7280); font-size: 12px; }
.clinic-visit-chip__v { color: var(--clinic-primary, #4B2E83); font-weight: 800; font-variant-numeric: tabular-nums; }
.clinic-visit-chip--custom { background: var(--clinic-bg, #fff); border: 1px solid var(--clinic-border, #E5E7EB); }
.clinic-visit-chips--custom { margin-top: var( --clinic-space-5 ); }

.clinic-visit-detail { margin-top: var( --clinic-space-5 ); border-top: 1px solid var(--clinic-border-light, #F3F4F6); padding-top: var( --clinic-space-5 ); }
.clinic-visit-detail > summary {
	cursor: pointer; color: var(--clinic-primary, #4B2E83); font-weight: 600; font-size: 13px;
	list-style: none; display: inline-flex; align-items: center; gap: var( --clinic-space-3 );
}
.clinic-visit-detail > summary::-webkit-details-marker { display: none; }
.clinic-visit-detail > summary::before { content: '+'; font-weight: 800; }
.clinic-visit-detail[open] > summary::before { content: '−'; }
.clinic-visit-note { margin-top: var( --clinic-space-5 ); }
.clinic-visit-note strong { color: var(--clinic-text, #111827); }

.clinic-visit-latest .clinic-card__name { display: flex; align-items: center; gap: var( --clinic-space-4 ); }

/* repeater فیلدِ دلخواه */
.clinic-visit-custom__row { display: grid; grid-template-columns: 1fr 1fr auto; gap: var( --clinic-space-4 ); margin-bottom: var( --clinic-space-4 ); align-items: center; }
.clinic-visit-custom__row .clinic-input { margin-bottom: 0; max-width: 100%; }

@media ( max-width: 768px ) {
	.clinic-visit-card__act { margin-inline-start: 0; width: 100%; }
	.clinic-visit-custom__row { grid-template-columns: 1fr 1fr; }
	.clinic-visit-custom__row [data-custom-remove] { grid-column: 1 / -1; }
}

/* ════════════════════════════════════════════════════════════════════════════
 * STEP 159 — مدیریتِ فیلدهای ویزیت (تبِ تنظیمات) + ساده‌سازیِ کارتِ ویزیتِ پرونده.
 * ──────────────────────────────────────────────────────────────────────────── */
.vf-rows { display: flex; flex-direction: column; gap: var( --clinic-space-4 ); margin: var( --clinic-space-6 ) 0; }
.vf-row { display: grid; grid-template-columns: 1.1fr 1.6fr 0.9fr 0.9fr 0.9fr auto; gap: var( --clinic-space-4 ); align-items: center; }
.vf-row .clinic-input, .vf-row .clinic-select { margin-bottom: 0; max-width: 100%; }
.vf-row--head { font-size: 12px; color: var(--clinic-muted, #6B7280); font-weight: 700; padding: 0 var( --clinic-space-1 ); }
.vf-row--head span { padding-inline-start: var( --clinic-space-1 ); }
.vf-row--computed .clinic-input[name="f_key[]"] { background: var(--clinic-bg-light, #F3E8FF); }
.vf-row__act { display: inline-flex; align-items: center; gap: var( --clinic-space-3 ); justify-content: flex-end; }

/* کارتِ «آخرین ویزیت» در داشبوردِ بیمار: آخرین مقادیر + دو دکمه */
.clinic-visit-latest__actions { display: flex; gap: var( --clinic-space-5 ); flex-wrap: wrap; margin-top: var( --clinic-space-6 ); }

@media ( max-width: 768px ) {
	.vf-row { grid-template-columns: 1fr 1fr; }
	.vf-row--head { display: none; }
	.vf-row__act { grid-column: 1 / -1; justify-content: flex-start; }
}

/* ════════════════════════════════════════════════════════════════════════════
 * STEP 160 — فرمِ صدور فاکتور: چیدمانِ دوستونه‌ی متعادل + دکمه‌ی افزودنِ هم‌خط/کشیده.
 * scope: فقط .clinic-inv-form (بدونِ نشت). موبایل تک‌ستون.
 * ──────────────────────────────────────────────────────────────────────────── */
.clinic-inv-form .clinic-select,
.clinic-inv-form .clinic-input { max-width: 100%; }
.clinic-inv-form .clinic-search-form { display: flex; gap: var( --clinic-space-4 ); align-items: stretch; flex-wrap: wrap; margin-bottom: var(--clinic-spacing-md, 14px); }
.clinic-inv-form .clinic-search-form .clinic-select { flex: 1 1 180px; min-width: 0; margin-bottom: 0; }
.clinic-inv-form .clinic-search-form .clinic-btn { align-self: stretch; height: auto; min-height: 0; white-space: nowrap; flex: 0 0 auto; }
.clinic-inv-form > .clinic-form-grid { margin-bottom: var(--clinic-spacing-md, 14px); }
.clinic-inv-form .clinic-table { margin-top: var( --clinic-space-3 ); }
@media ( max-width: 768px ) {
	.clinic-inv-form .clinic-search-form { flex-direction: column; align-items: stretch; }
}

/* ════════════════════════════════════════════════════════════════════════════
 * STEP 164 — بازطراحیِ تقویمِ نوبت‌ها (Dimensional Layering + فیلتر + کنتراست).
 * فقط لایه‌ی نمایش؛ منطق/داده/کشِ STEP 162 دست‌نخورده. رنگِ وضعیت از توکن (پویا با کلید).
 * این بلوک در انتهای فایل ⇒ بر قواعدِ پایه‌ی STEP 73/77 غلبه می‌کند (cascade).
 * ──────────────────────────────────────────────────────────────────────────── */
/* غلبه بر .clinic-wrap{max-width:100%!important} (خط ۵۴) برای عرضِ کنترل‌شده‌ی تقویم. */
.clinic-wrap.clinic-agenda { max-width: 1180px !important; width: auto; margin-inline: auto; }
.clinic-agenda .agenda-body {
	background: var(--clinic-bg, #fff);
	border-radius: var(--clinic-card-radius, 16px);
	box-shadow: var(--clinic-elev-rest, 0 2px 8px rgba(31, 21, 53, 0.08));
	padding: var( --clinic-space-8 );
	margin-top: var( --clinic-space-6 );
	min-height: 120px;
}
.clinic-agenda .agenda-summary { margin: var( --clinic-space-6 ) 0 0; }

/* تب‌ها به‌صورتِ کنترلِ segmentedِ بُعدی (پیلِ یاسی + فعالِ بنفش). */
.agenda-tabs { background: var(--clinic-bg-light, #F3E8FF); border-radius: var(--clinic-radius-pill, 999px); padding: var( --clinic-space-2 ); gap: var( --clinic-space-1 ); }
.agenda-tabs .clinic-btn { border: 0; border-radius: var(--clinic-radius-pill, 999px); padding: 7px var( --clinic-space-9 ); min-height: 0; box-shadow: none; }
/* STEP 221: تب فعال نوار قطعه‌ای سایه نمی‌گیرد (نقش ناوبری). */

/* ── نوارِ فیلتر (STEP 164) ── */
.agenda-filters {
	display: flex; flex-wrap: wrap; gap: var( --clinic-space-7 ); align-items: flex-end;
	margin: var( --clinic-space-7 ) 0 var( --clinic-space-1 ); padding: var( --clinic-space-6 ) var( --clinic-space-8 );
	background: var(--clinic-bg, #fff);
	border: 1px solid var(--clinic-border, #ECE8F5);
	border-radius: var(--clinic-card-radius, 14px);
	box-shadow: var(--clinic-elev-flat, 0 1px 3px rgba(31, 21, 53, 0.06));
}
.agenda-filter { display: flex; flex-direction: column; gap: 5px; font-size: 12px; }
.agenda-filter__lbl { color: var(--clinic-primary, #4B2E83); font-weight: 700; }
.agenda-filter__sel { min-width: 158px; margin-bottom: 0; }
.agenda-filter--toggle { flex-direction: row; align-items: center; gap: 7px; align-self: center; color: var(--clinic-text); font-weight: 600; cursor: pointer; }

/* ── روزانه: ستون‌های بُعدی + چیپِ «نوار-رنگیِ شروع + badgeِ وضعیت» ── */
.agenda-day { gap: var( --clinic-space-8 ); padding-bottom: var( --clinic-space-2 ); }
.agenda-col { flex: 0 0 264px; min-width: 244px; border: 0; border-radius: var(--clinic-card-radius, 14px); padding: var( --clinic-space-6 ); background: var(--clinic-bg, #fff);}
.agenda-col.is-mine { box-shadow: var(--clinic-elev-rest, 0 2px 8px rgba(31, 21, 53, 0.08)), 0 0 0 2px var(--clinic-primary); }
.agenda-col__head { padding-bottom: var( --clinic-space-5 ); margin-bottom: var( --clinic-space-5 ); }
.agenda-slot {
	gap: var( --clinic-space-4 ); padding: 9px 11px; margin-bottom: var( --clinic-space-4 ); flex-wrap: wrap;
	border: 1px solid var(--clinic-border, #ECE8F5);
	border-inline-start: 4px solid var(--clinic-border, #ECE8F5);
	border-radius: var(--clinic-field-radius, 10px);
	background: var(--clinic-bg, #fff); color: var(--clinic-text);
	box-shadow: var(--clinic-elev-flat, 0 1px 2px rgba(31, 21, 53, 0.06));
}
.agenda-slot:hover { box-shadow: var(--clinic-elev-hover, 0 6px 14px rgba(31, 21, 53, 0.12)); }
.agenda-slot__time { color: var(--clinic-primary, #4B2E83); font-weight: 800; }
.agenda-slot__name { color: var(--clinic-text); font-weight: 600; }
.agenda-slot__badge { margin-inline-start: auto; font-size: 10px; font-weight: 800; padding: var( --clinic-space-1 ) 9px; border-radius: var(--clinic-radius-pill, 999px); white-space: nowrap; background: var(--clinic-bg-light, #F3E8FF); color: var(--clinic-text); }
/* وضعیت (پویا با کلید): نوارِ شروع + رنگِ badge؛ متن از توکنِ کنتراستِ خودکار. */
.agenda-slot--pending { background: var(--clinic-bg, #fff); color: var(--clinic-text); border-color: var(--clinic-border); border-inline-start-color: var(--clinic-primary); }
.agenda-slot--pending .agenda-slot__badge { background: var(--clinic-primary); color: var(--clinic-on-primary, #fff); }
.agenda-slot--awaiting_approval { background: var(--clinic-bg, #fff); color: var(--clinic-text); border-color: var(--clinic-border); border-inline-start-color: var(--clinic-warning); }
.agenda-slot--awaiting_approval .agenda-slot__badge { background: var(--clinic-warning); color: var(--clinic-on-warning, #1F1535); }
.agenda-slot--awaiting_payment { background: var(--clinic-bg, #fff); color: var(--clinic-text); border-color: var(--clinic-border); border-inline-start-color: var(--clinic-amber); }
.agenda-slot--awaiting_payment .agenda-slot__badge { background: var(--clinic-amber); color: var(--clinic-amber-on, #1F1535); }
.agenda-slot--done { background: var(--clinic-bg, #fff); color: var(--clinic-text); border-color: var(--clinic-border); border-inline-start-color: var(--clinic-success); }
.agenda-slot--done .agenda-slot__badge { background: var(--clinic-success); color: var(--clinic-on-success, #1F1535); }
.agenda-slot--cancelled { background: var(--clinic-bg-light, #F3E8FF); color: var(--clinic-muted); border-color: var(--clinic-border); border-inline-start-color: var(--clinic-muted); text-decoration: line-through; opacity: .85; }
.agenda-slot--cancelled .agenda-slot__badge { background: var(--clinic-bg, #fff); color: var(--clinic-muted); text-decoration: none; }
.agenda-slot--free { background: var(--clinic-bg, #fff); color: var(--clinic-muted); border-style: dashed; border-inline-start: 4px dashed var(--clinic-success); box-shadow: none; }
.agenda-slot--free:hover { background: var(--clinic-bg-light, #F3E8FF); box-shadow: var(--clinic-elev-flat); }

/* ── هفتگی: سلولِ تمیز + نشانِ روزِ جاری (حاشیه‌ی بنفش) ── */
.agenda-week { border-collapse: separate; border-spacing: 4px; }
.agenda-week th { color: var(--clinic-primary, #4B2E83); }
.agenda-week__cell { background: var(--clinic-bg, #fff); border: 1px solid var(--clinic-border); box-shadow: var(--clinic-elev-flat); padding: var( --clinic-space-4 ) var( --clinic-space-2 ); transition: box-shadow .15s; }
.agenda-week__cell.has-appt { background: var(--clinic-bg-light, #F3E8FF); }
/* STEP 166: نشانِ روزِ جاریِ هفتگی دقیقاً مثلِ ماهانه (یاسی + حاشیه‌ی بنفش). */
.agenda-week__cell.is-today { background: var(--clinic-bg-light, #F3E8FF); border: 2px solid var(--clinic-primary); }
.agenda-week__cell:hover { outline: none; box-shadow: var(--clinic-elev-hover); }

/* ── ماهانه: روزِ جاری = یاسی + حاشیه‌ی بنفش ── */
.agenda-mday { border: 1px solid var(--clinic-border, #ECE8F5); box-shadow: var(--clinic-elev-flat); border-radius: var(--clinic-field-radius, 10px); }
.agenda-mday.is-today { background: var(--clinic-bg-light, #F3E8FF); outline: none; border: 2px solid var(--clinic-primary); }
.agenda-mday__badge { background: var(--clinic-primary); color: var(--clinic-on-primary, #fff); box-shadow: var(--clinic-elev-flat); }

/* ── legend: ردیفِ پیل‌های خوانا ── */
.agenda-legend { display: flex; flex-wrap: wrap; gap: var( --clinic-space-5 ); margin-top: var( --clinic-space-7 ); padding: var( --clinic-space-5 ) var( --clinic-space-7 ); background: var(--clinic-bg, #fff); border: 1px solid var(--clinic-border, #ECE8F5); border-radius: var(--clinic-card-radius, 14px); box-shadow: var(--clinic-elev-flat); }
.agenda-legend__item { display: inline-flex; align-items: center; gap: var( --clinic-space-3 ); font-size: 12px; color: var(--clinic-text); }

/* ── ریسپانسیو (این @media در انتهای فایل ⇒ بر قواعدِ پایه‌ی STEP 164 غلبه می‌کند) ── */
@media ( max-width: 600px ) {
	.clinic-agenda .agenda-body { padding: var( --clinic-space-5 ); }
	.agenda-filters { flex-direction: column; align-items: stretch; gap: var( --clinic-space-5 ); }
	.agenda-filter { width: 100%; }
	.agenda-filter__sel { width: 100%; min-width: 0; }
	.agenda-filter--toggle { justify-content: flex-start; }
	.agenda-col { flex: 1 1 auto; width: 100%; min-width: 0; }
	.agenda-wm-card { border: 0; box-shadow: var(--clinic-elev-rest); border-radius: var(--clinic-card-radius, 14px); }
	.agenda-wm-card.is-today { box-shadow: var(--clinic-elev-rest), 0 0 0 2px var(--clinic-primary); }
	.agenda-wm-card__head { background: var(--clinic-bg-light, #F3E8FF); }
}

/* ════════════════════════════════════════════════════════════════════════════
 * STEP 165 — انتخابگرِ چیدمانِ پرونده در تنظیمات (رادیو + پیش‌نمایشِ مینیاتوریِ wireframe).
 * ──────────────────────────────────────────────────────────────────────────── */
.clinic-layout-picker { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: var( --clinic-space-6 ); margin-top: var( --clinic-space-4 ); }
.clinic-layout-opt { position: relative; display: flex; flex-direction: column; gap: var( --clinic-space-3 ); padding: var( --clinic-space-6 ); border: 2px solid var(--clinic-border, #ECE8F5); border-radius: var(--clinic-card-radius, 14px); background: var(--clinic-bg, #fff); cursor: pointer; box-shadow: var(--clinic-elev-flat, 0 1px 3px rgba(31, 21, 53, 0.06)); transition: border-color .15s, box-shadow .15s; }
.clinic-layout-opt:hover { box-shadow: var(--clinic-elev-rest, 0 4px 12px rgba(31, 21, 53, 0.10)); }
.clinic-layout-opt.is-on { border-color: var(--clinic-primary, #4B2E83); box-shadow: var(--clinic-elev-rest), 0 0 0 3px var(--clinic-bg-light, #F3E8FF); }
.clinic-layout-opt input { position: absolute; inset-inline-start: var( --clinic-space-5 ); top: var( --clinic-space-5 ); accent-color: var(--clinic-primary, #4B2E83); }
.clinic-layout-opt__name { font-weight: 800; color: var(--clinic-primary, #4B2E83); font-size: 14px; }
.clinic-layout-opt__desc { font-size: 12px; color: var(--clinic-muted, #6B7280); line-height: 1.5; }
/* پیش‌نمایشِ مینیاتوری (wireframe ساده با gradient/blocks). */
.clinic-layout-opt__prev { display: block; height: 56px; border-radius: var( --clinic-radius-sm ); background: var(--clinic-bg-light, #F3E8FF); border: 1px solid var(--clinic-border, #ECE8F5); position: relative; overflow: hidden; }
.clinic-layout-opt__prev::before, .clinic-layout-opt__prev::after { content: ""; position: absolute; background: var(--clinic-primary, #4B2E83); border-radius: var( --clinic-radius-2xs ); }
/* پیش‌فرض: دو ستون. */
.clinic-layout-opt__prev--default::before { inset-inline-start: var( --clinic-space-3 ); top: var( --clinic-space-3 ); bottom: var( --clinic-space-3 ); width: 44%; opacity: .55; }
.clinic-layout-opt__prev--default::after { inset-inline-end: var( --clinic-space-3 ); top: var( --clinic-space-3 ); bottom: var( --clinic-space-3 ); width: 44%; opacity: .25; }
/* سایدبار: نوارِ کناری + محتوا. */
.clinic-layout-opt__prev--sidebar::before { inset-inline-end: var( --clinic-space-3 ); top: var( --clinic-space-3 ); bottom: var( --clinic-space-3 ); width: 26%; opacity: .7; }
.clinic-layout-opt__prev--sidebar::after { inset-inline-start: var( --clinic-space-3 ); top: var( --clinic-space-3 ); bottom: var( --clinic-space-3 ); width: 62%; opacity: .25; }
/* تب‌بندی: نوارِ بالا + محتوا. */
.clinic-layout-opt__prev--tabs::before { inset-inline: var( --clinic-space-3 ); top: var( --clinic-space-3 ); height: 12px; opacity: .7; }
.clinic-layout-opt__prev--tabs::after { inset-inline: var( --clinic-space-3 ); top: var( --clinic-space-12 ); bottom: var( --clinic-space-3 ); opacity: .22; }
/* تک‌صفحه: هدرِ بزرگ + گرید. */
.clinic-layout-opt__prev--single::before { inset-inline: var( --clinic-space-3 ); top: var( --clinic-space-3 ); height: 20px; opacity: .7; }
.clinic-layout-opt__prev--single::after { inset-inline: var( --clinic-space-3 ); top: 30px; bottom: var( --clinic-space-3 ); opacity: .22; }

/* ════════════════════════════════════════════════════════════════════════════
 * STEP 166 — نمای هفتگیِ تقویم: نام‌های کاملِ روز + جدولِ وسط‌چینِ کنترل‌شده.
 * فقط نمای هفتگی؛ ماهانه/روزانه و منطقِ داده/کشِ STEP 162 دست‌نخورده.
 * ──────────────────────────────────────────────────────────────────────────── */
/* نامِ کاملِ روز در سرستون بدونِ شکست (شنبه … جمعه). */
.agenda-week__wd { white-space: nowrap; }
/* روی مانیتورِ بزرگ جدولِ هفتگی بیش از حد کشیده نشود: عرضِ محدود + وسط‌چین
 * (کانتینرِ تقویم از STEP 164 کنترل‌شده است؛ این، جدول را درونِ آن وسط و جمع‌وجور می‌کند).
 * روی صفحه‌های کوچک‌تر (≤۱۰۲۴ اسکرولِ افقی، ≤۶۰۰ لیستِ عمودی) بی‌اثر و تمام‌عرض می‌ماند. */
.clinic-agenda .agenda-week-wrap { max-width: 1040px; margin-inline: auto; }

/* STEP 181 — ماتریس دسترسی منو-محور */
.clinic-menu-access__head { display:flex; justify-content:space-between; align-items:center; gap:var( --clinic-space-6 ); flex-wrap:wrap; }
.clinic-menu-access__search { max-width:320px; margin:var( --clinic-space-5 ) 0; }
.clinic-menu-matrix-wrap { overflow-x:auto; }
.clinic-menu-matrix th, .clinic-menu-matrix td { text-align:center; vertical-align:middle; }
.clinic-menu-matrix td:first-child, .clinic-menu-matrix th:first-child { text-align:right; }
.clinic-menu-group td { background: var(--clinic-primary-050, #F3E8FF); color: var(--clinic-primary, #4B2E83); font-weight:700; }
.clinic-menu-sub td:first-child { color: var(--clinic-text, #2b2f36); }
.clinic-menu-slug { color: var(--clinic-muted, #6b6480); font-size:11px; }
.clinic-menu-matrix .clinic-col-admin { background: var(--clinic-primary-050, #F3E8FF); }
/* STEP روزآمد — ردیفِ انتخابِ گروهیِ ستون‌ها (همه/هیچ) */
.clinic-menu-bulkrow th { padding:var( --clinic-space-2 ) var( --clinic-space-1 ); }
.clinic-menu-bulkcell { white-space:nowrap; }
.clinic-menu-matrix .clinic-colbulk { padding:var( --clinic-space-1 ) var( --clinic-space-4 ); min-height:0; font-size:11px; line-height:1.6; margin:1px; }

/* ═══════════════ STEP 190 — وضعیتِ پرداختِ نوبت + تسویه‌ی سریع ═══════════════ */
/* چیپِ وضعیتِ تسویه (لیستِ نوبت‌ها + مودال + پاپ‌آپِ تقویم). سه حالت با کنتراست ≥ ۴٫۵ در
   حالتِ عادی/hover/focus — رنگ‌ها از توکنِ پالت + توکنِ کنتراستِ خودکار (قانونِ رنگِ STEP 109). */
.clinic-settle-chip {
	display: inline-flex; align-items: center; gap: var( --clinic-space-2 );
	/* STEP 223-B — نقشِ داده: شعاعِ کوچک، هرگز pill (قراردادِ نقشِ STEP 221). */
	padding: 3px var( --clinic-space-5 ); border-radius: var(--clinic-radius-data, 8px);
	border: 1px solid transparent; font-size: 12px; font-weight: 700;
	line-height: 1.7; cursor: pointer; font-family: inherit; max-width: 100%;
	transition: filter .15s ease;
}
button.clinic-settle-chip { -webkit-appearance: none; appearance: none; }
.clinic-settle-chip--unpaid  { background: var(--clinic-warning, #D98282); color: var(--clinic-on-warning, #1F1535); }
.clinic-settle-chip--partial { background: var(--clinic-amber, #E0A100); color: var(--clinic-amber-on, #1F1535); }
.clinic-settle-chip--settled { background: var(--clinic-success, #22A06B); color: var(--clinic-on-success, #06281B); }
/* STEP 199: «بدون مبلغ / نامشخص» — خاکستریِ خنثی (نه سبزِ تسویه)؛ کنتراستِ سفید روی خاکستری ≥۴٫۵. */
.clinic-settle-chip--unknown { background: var(--clinic-muted, #6b6480); color: var( --clinic-text-inverse ); }
/* STEP 199: بخشِ پرداختِ فرمِ افزودنِ نوبت — نوارِ باقیمانده + چیپِ وضعیتِ زنده. */
.bw-appt-payment .bw-pay-row { display: flex; align-items: center; justify-content: space-between; gap: var( --clinic-space-6 ); margin-top: var( --clinic-space-6 ); flex-wrap: wrap; }
.bw-pay-remaining { font-weight: 700; color: var(--clinic-text, #2b2f36); }
.bw-pay-remaining b { color: var(--clinic-primary, #4B2E83); }
/* STEP 199: هشدارِ بدهیِ قبلیِ بیمار (زیرِ نام، هنگامِ انتخابِ ایجکسی). */
.bw-patient-debt { display: none; margin: var( --clinic-space-4 ) 0 0; padding: var( --clinic-space-4 ) var( --clinic-space-6 ); border-radius: var(--clinic-card-radius, 12px); background: var(--clinic-bg-light, #F3E8FF); border-right: 4px solid var(--clinic-warning, #D98282); color: var(--clinic-text, #2b2f36); font-size: 13px; }
.bw-patient-debt.is-shown { display: block; }
.bw-patient-debt b { color: var(--clinic-warning-700, #b03c3c); }
.bw-patient-debt a { margin-right: var( --clinic-space-4 ); font-weight: 700; }
/* STEP 223-B — سایه‌ی hover/active جای خود را به **حاشیه** داد.
 *
 * چیپ تسویه نقشِ داده است و سایه ندارد، ولی دکمه هم هست پس باید نشانه‌ی تعامل
 * داشته باشد. سایه تنها نشانه‌ی این چیپ بود (عمداً، تا رنگِ متن/پس‌زمینه در سه
 * حالت ثابت و کنتراست ≥۴٫۵ بماند — STEP 109). جایگزین: `border-color` که
 * قراردادِ نقش صریحاً اجازه‌اش را می‌دهد.
 *
 * `currentColor` انتخاب شد نه یک توکنِ رنگِ ثابت: چیپ پنج واریانتِ رنگی دارد
 * (مرجانی/کهربایی/سبز/خاکستری) و رنگِ متنِ هر یک از قبل گیتِ ۴٫۵:۱ را روی
 * پس‌زمینه‌ی خودش پاس کرده ⇒ حاشیه‌ی هم‌رنگِ متن در **هر پنج** واریانت خودکار
 * دیده می‌شود، بدونِ توکنِ تازه و بدونِ لمسِ رنگِ متن یا پس‌زمینه.
 * جای حاشیه از قبل با `border: 1px solid transparent` رزرو شده ⇒ صفر جابه‌جایی. */
.clinic-settle-chip:hover,
.clinic-settle-chip:active { border-color: currentColor; box-shadow: none; }
.clinic-settle-chip:focus-visible { outline: 2px solid var(--clinic-primary, #4B2E83); outline-offset: 2px; }

/* فیلترِ «فقط تسویه‌نشده‌ها» در نوارِ فیلترِ لیست. */
.clinic-settle-onlyunsettled { display: inline-flex; align-items: center; gap: var( --clinic-space-3 ); font-size: 13px; color: var(--clinic-text, #2b2f36); white-space: nowrap; padding: 0 var( --clinic-space-3 ); cursor: pointer; }
.clinic-settle-onlyunsettled input { margin: 0; }

/* نشانگرِ رنگیِ کوچکِ وضعیتِ تسویه روی آیتمِ نوبتِ تقویم. */
.agenda-slot__settle { display: inline-block; width: 9px; height: 9px; border-radius: 50%; flex: 0 0 auto; margin-inline-start: var( --clinic-space-2 ); box-shadow: 0 0 0 1px rgba(0,0,0,.15); }
.agenda-slot__settle--unpaid  { background: var(--clinic-warning, #D98282); }
.agenda-slot__settle--partial { background: var(--clinic-amber, #E0A100); }
.agenda-slot__settle--settled { background: var(--clinic-success, #22A06B); }

/* مودالِ تسویهٔ سریع (روی .clinic-modal مشترک). */
.clinic-settle-body { padding: var( --clinic-space-2 ) var( --clinic-space-1 ); }
.clinic-settle-loading { text-align: center; padding: var( --clinic-space-12 ); color: var(--clinic-muted, #6b6480); font-size: 20px; }
.clinic-settle-summary { background: var(--clinic-bg-light, #F3E8FF); border-radius: var(--clinic-radius-md, 12px); padding: var( --clinic-space-6 ) var( --clinic-space-7 ); margin-bottom: var( --clinic-space-7 ); }
.clinic-settle-kv { display: flex; justify-content: space-between; align-items: baseline; gap: var( --clinic-space-5 ); padding: var( --clinic-space-2 ) 0; font-size: 13px; }
.clinic-settle-kv__k { color: var(--clinic-muted, #6b6480); }
.clinic-settle-kv__v { color: var(--clinic-text, #2b2f36); font-weight: 700; }
.clinic-settle-kv--rem .clinic-settle-kv__v { color: var(--clinic-primary, #4B2E83); font-size: 15px; }
.clinic-settle-status { margin-top: var( --clinic-space-4 ); }
.clinic-settle-form { margin-bottom: var( --clinic-space-7 ); }
.clinic-settle-form .clinic-label, .clinic-settle-methods__lbl { display: block; margin: var( --clinic-space-4 ) 0 var( --clinic-space-2 ); font-weight: 700; color: var(--clinic-text, #2b2f36); }
.clinic-settle-amount { width: 100%; text-align: center; font-size: 15px; }
.clinic-settle-methods { display: flex; flex-wrap: wrap; gap: var( --clinic-space-4 ); margin-bottom: var( --clinic-space-5 ); }
.clinic-settle-pill { padding: var( --clinic-space-3 ) var( --clinic-space-7 ); font-size: 13px; }
.clinic-settle-pill.is-on { background: var(--clinic-primary, #4B2E83); color: var(--clinic-on-primary, #fff); border-color: var(--clinic-primary, #4B2E83); }
.clinic-settle-submit { width: 100%; margin-top: var( --clinic-space-2 ); }
.clinic-settle-revwrap { display: flex; gap: var( --clinic-space-4 ); align-items: center; margin: var( --clinic-space-3 ) 0 var( --clinic-space-7 ); flex-wrap: wrap; }
.clinic-settle-reason { flex: 1 1 160px; }
.clinic-settle-cancel.is-armed { animation: clinic-settle-pulse 1s ease infinite; }
@keyframes clinic-settle-pulse { 0%, 100% { opacity: 1; } 50% { opacity: .72; } }
.clinic-settle-txns { border-top: 1px solid var(--clinic-border, #E5E1EC); padding-top: var( --clinic-space-5 ); }
.clinic-settle-txns__h { margin: 0 0 var( --clinic-space-4 ); font-size: 13px; color: var(--clinic-muted, #6b6480); }
.clinic-settle-txns__empty { color: var(--clinic-muted, #6b6480); font-size: 13px; margin: 0; }
.clinic-settle-txlist { list-style: none; margin: 0; padding: 0; }
.clinic-settle-tx { display: flex; flex-wrap: wrap; align-items: center; gap: var( --clinic-space-4 ); padding: var( --clinic-space-3 ) 0; border-bottom: 1px dashed var(--clinic-border, #E5E1EC); font-size: 12px; }
.clinic-settle-tx:last-child { border-bottom: none; }
.clinic-settle-tx__amt { font-weight: 700; color: var(--clinic-success-700, #047857); }
.clinic-settle-tx.is-neg .clinic-settle-tx__amt { color: var(--clinic-warning-700, #B45309); }
.clinic-settle-tx.is-reversed { opacity: .72; }
.clinic-settle-tx.is-reversed .clinic-settle-tx__amt { text-decoration: line-through; }
.clinic-settle-tx__method { color: var(--clinic-text, #2b2f36); }
.clinic-settle-tx__date, .clinic-settle-tx__user { color: var(--clinic-muted, #6b6480); }
.clinic-settle-tx__flag { color: var(--clinic-amber-on, #1F1535); background: var(--clinic-amber, #E0A100); border-radius: var(--clinic-radius-pill, 999px); padding: 1px var( --clinic-space-4 ); font-weight: 700; }

/* Toast (پیامِ موفقیت/خطا). */
.clinic-toast-wrap { position: fixed; inset-block-end: var( --clinic-space-10 ); inset-inline-start: var( --clinic-space-10 ); z-index: 100060; display: flex; flex-direction: column; gap: var( --clinic-space-4 ); pointer-events: none; }
.clinic-toast { pointer-events: auto; padding: var( --clinic-space-5 ) var( --clinic-space-8 ); border-radius: var(--clinic-radius-md, 12px); font-size: 13px; font-weight: 700; box-shadow: var(--clinic-elev-2, 0 6px 20px rgba(0,0,0,.18)); opacity: 0; transform: translateY(10px); transition: opacity .25s ease, transform .25s ease; max-width: 340px; }
.clinic-toast.is-in { opacity: 1; transform: translateY(0); }
.clinic-toast--ok  { background: var(--clinic-success, #22A06B); color: var(--clinic-on-success, #06281B); }
.clinic-toast--err { background: var(--clinic-warning, #D98282); color: var(--clinic-on-warning, #1F1535); }

@media (max-width: 768px) {
	.clinic-settle-methods { gap: var( --clinic-space-3 ); }
	.clinic-settle-pill { flex: 1 1 auto; text-align: center; }
	.clinic-settle-revwrap { flex-direction: column; align-items: stretch; }
	.clinic-settle-cancel { width: 100%; }
	.clinic-settle-onlyunsettled { width: 100%; justify-content: flex-start; }
	.clinic-toast-wrap { inset-inline: var( --clinic-space-6 ); inset-block-end: var( --clinic-space-6 ); }
	.clinic-toast { max-width: none; }
}

/* ═══════════════ STEP 192 — بخشِ «حساب و کتاب» + چیپِ تسویه‌ی نمای روزانه ═══════════════ */
/* چیپِ خوانای وضعیتِ تسویه در نمای روزانه (رنگ + متن + مبلغ) — روی خطِ خودش، بدونِ به‌هم‌ریختنِ اسلات. */
.agenda-slot__settlechip {
	flex: 1 0 100%; order: 99; max-width: 100%; box-sizing: border-box;
	overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
	/* STEP 223-B — نقشِ داده: شعاعِ کوچک، هرگز pill. */
	padding: 1px 9px; border-radius: var(--clinic-radius-data, 8px);
	font-size: 11px; font-weight: 700; line-height: 1.8; text-align: center;
}
.agenda-slot__settlechip--unpaid  { background: var(--clinic-warning, #D98282); color: var(--clinic-on-warning, #1F1535); }
.agenda-slot__settlechip--partial { background: var(--clinic-amber, #E0A100); color: var(--clinic-amber-on, #1F1535); }
.agenda-slot__settlechip--settled { background: var(--clinic-success, #22A06B); color: var(--clinic-on-success, #06281B); }

/* بخشِ «حساب و کتاب» — بدنه از رندرِ مشترکِ ClinicSettle.renderAccount (کلاس‌های clinic-settle-* بازاستفاده). */
.clinic-account { margin-top: var( --clinic-space-2 ); }
.clinic-account__loading { text-align: center; padding: var( --clinic-space-6 ); color: var(--clinic-muted, #6b6480); font-size: 18px; }
.clinic-account-actions { display: flex; flex-wrap: wrap; gap: var( --clinic-space-4 ); margin: var( --clinic-space-2 ) 0 var( --clinic-space-6 ); }
.clinic-account-card .clinic-settle-summary { margin-bottom: var( --clinic-space-5 ); }
.agenda-account__h { margin: var( --clinic-space-6 ) 0 var( --clinic-space-3 ); font-size: 13px; color: var(--clinic-primary, #4B2E83); font-weight: 800; }
.agenda-account .clinic-settle-summary { background: var(--clinic-bg-light, #F3E8FF); border-radius: var(--clinic-radius-md, 12px); padding: var( --clinic-space-5 ) var( --clinic-space-6 ); margin-bottom: var( --clinic-space-5 ); }

@media (max-width: 768px) {
	.clinic-account-actions { flex-direction: column; }
	.clinic-account-actions .clinic-btn { width: 100%; }
	.agenda-slot__settlechip { font-size: 11px; }
}

/* ═══════════════ STEP 204 — ورودِ دستیِ زمان + مودالِ هشدارِ محدودیت‌ها + نشانِ «دستی» ═══════════════ */
/* همه‌ی رنگ‌ها از توکنِ پالت (بدونِ هگزِ خام روی متن/پس‌زمینه)؛ برای هر پس‌زمینه رنگِ متنِ مکمل تعیین شده. */

/* سوییچِ «ورود دستی زمان» */
.bw-manual {
	margin: var( --clinic-space-6 ) 0 var( --clinic-space-2 ); padding: var( --clinic-space-6 ) var( --clinic-space-7 );
	background: var(--clinic-bg-light, #F3E8FF);
	border: 1px solid var(--clinic-border, #ece7f4);
	border-radius: var(--clinic-card-radius, var(--clinic-radius-md, 12px));
	box-shadow: var(--clinic-shadow-sm, none);
}
.bw-manual__switch { display: inline-flex; align-items: center; gap: var( --clinic-space-4 ); cursor: pointer; margin: 0; }
.bw-manual__switch input { position: absolute; opacity: 0; width: 0; height: 0; }
.bw-manual__track {
	position: relative; flex: 0 0 auto; width: 40px; height: 22px; border-radius: var( --clinic-radius-pill );
	background: var(--clinic-muted, #6b6480); transition: background .2s;
}
.bw-manual__knob {
	position: absolute; inset-block-start: 3px; inset-inline-end: 3px; width: 16px; height: 16px;
	border-radius: 50%; background: var(--clinic-bg, #fff); transition: transform .2s;
}
.bw-manual__switch input:checked + .bw-manual__track { background: var(--clinic-primary, #4B2E83); }
.bw-manual__switch input:checked + .bw-manual__track .bw-manual__knob { transform: translateX(-18px); }
.bw-manual__switch:hover .bw-manual__track { background: var(--clinic-primary-700, #5B3DB1); }
.bw-manual__switch input:focus-visible + .bw-manual__track { outline: 2px solid var(--clinic-primary, #4B2E83); outline-offset: 2px; }
.bw-manual__text { font-weight: 700; color: var(--clinic-text, #2B2240); font-size: 14px; }
.bw-manual__hint { margin: var( --clinic-space-3 ) 0 0; font-size: 12.5px; color: var(--clinic-muted, #6b6480); }
.bw-manual__fields {
	display: grid; grid-template-columns: repeat(2, minmax(180px, 1fr)); gap: var( --clinic-space-6 );
	margin-top: var( --clinic-space-6 ); padding-top: var( --clinic-space-6 ); border-top: 1px solid var(--clinic-border, #ece7f4);
}
.bw-manual__fields[hidden] { display: none; }
.bw-manual__timerow { display: flex; align-items: center; gap: var( --clinic-space-4 ); }
.bw-manual__timerow .clinic-input { flex: 1 1 auto; min-width: 0; }
.bw-manual__msg { margin: var( --clinic-space-2 ) 0 0; min-height: 16px; font-size: 12px; color: var(--clinic-muted, #6b6480); }
.bw-manual__msg.is-bad { color: var(--clinic-error-700); font-weight: 700; }
/* حالتِ دستی: تقویم و اسلات‌ها لازم نیستند. */
.bw-appt-wrap.is-manual .bw-appt-layout { display: none; }

/* چک‌باکسِ ارسالِ پیامک */
.bw-smsopt { display: inline-flex; align-items: center; gap: var( --clinic-space-3 ); margin: var( --clinic-space-5 ) 0 var( --clinic-space-1 ); color: var(--clinic-text, #2B2240); font-weight: 600; }

/* مودالِ هشدارِ محدودیت‌ها (همه‌ی نقض‌ها در یک مودال) */
.clinic-restrict__box { max-width: 560px; }
.clinic-restrict__title { margin: 0 0 var( --clinic-space-4 ); font-size: 17px; font-weight: 800; color: var(--clinic-primary, #4B2E83); }
.clinic-restrict__intro { margin: 0 0 var( --clinic-space-5 ); font-size: 13.5px; color: var(--clinic-text, #2B2240); }
.clinic-restrict__list { margin: 0 0 var( --clinic-space-7 ); padding: 0; list-style: none; }
.clinic-restrict__item {
	margin-bottom: var( --clinic-space-4 ); padding: 9px var( --clinic-space-6 );
	background: var(--clinic-amber, #E0A100); color: var(--clinic-amber-on, #1F1535);
	border-radius: var(--clinic-radius-md, 12px); font-size: 13.5px; font-weight: 700;
}
.clinic-restrict__item.is-blocking { background: var(--clinic-warning, #D98282); color: var(--clinic-on-warning, #1F1535); }
.clinic-restrict__sub { margin: var( --clinic-space-3 ) 0 0; padding-inline-start: var( --clinic-space-9 ); font-weight: 600; font-size: 12.5px; }
.clinic-restrict__actions { display: flex; gap: var( --clinic-space-4 ); flex-wrap: wrap; }

/* نشانِ «دستی» روی نوبتِ ثبت‌شده با زمانِ دستی */
.clinic-manualbadge {
	display: inline-block; padding: 1px 9px; border-radius: var(--clinic-radius-pill, 999px);
	background: var(--clinic-primary, #4B2E83); color: var(--clinic-on-primary, #fff);
	font-size: 11px; font-weight: 700; line-height: 1.8; white-space: nowrap;
}

/* انتخابگرِ نقش‌های مجاز در تنظیمات */
.clinic-role-picker { display: flex; flex-wrap: wrap; gap: var( --clinic-space-4 ) var( --clinic-space-8 ); }
.clinic-role-picker__item { display: inline-flex; align-items: center; gap: var( --clinic-space-3 ); color: var(--clinic-text, #2B2240); font-size: 13.5px; }

@media (max-width: 768px) {
	.bw-manual__fields { grid-template-columns: 1fr; }
	.clinic-restrict__actions { flex-direction: column; }
	.clinic-restrict__actions .clinic-btn { width: 100%; }
	.clinic-role-picker { flex-direction: column; gap: var( --clinic-space-4 ); }
}

/* ═══════════════ STEP 205 — تسویه سریعِ ویرایش‌پذیر (مبلغ/تخفیف/وضعیت) ═══════════════ */
/* همه‌ی رنگ‌ها از توکنِ پالت؛ برای هر پس‌زمینه رنگِ متنِ مکمل تعیین شده (کنتراست ≥ ۴٫۵:۱). */

.clinic-fin-form { display: grid; gap: var( --clinic-space-5 ); margin-top: var( --clinic-space-2 ); }
/* STEP 221 قاعده ۵ کارفرما — چیدمان گرید با جریان ستونی. */
.clinic-fin-field { display: grid; grid-auto-flow: column; gap: var( --clinic-space-2 ); }
.clinic-fin-field .clinic-label { margin: 0; font-size: 13px; font-weight: 700; color: var(--clinic-text); }
.clinic-fin-amount { text-align: left; }

/* کادرهای فقط‌خواندنیِ محاسبه‌ی زنده (مبلغ نهایی / مانده بدهی) */
.clinic-fin-readonly {
	padding: 9px var( --clinic-space-6 ); border-radius: var(--clinic-radius-md, 12px);
	background: var(--clinic-bg-light); color: var(--clinic-text);
	border: 1px solid var(--clinic-border); font-weight: 800; font-size: 14px;
}
.clinic-fin-field--ro .clinic-fin-readonly { background: var(--clinic-bg-light); }

/* سوییچِ سگمنتیِ نوعِ تخفیف */
.clinic-fin-discount { display: flex; gap: var( --clinic-space-4 ); align-items: stretch; }
.clinic-fin-seg { display: inline-flex; flex: 0 0 auto; border: 1px solid var(--clinic-border); border-radius: var(--clinic-radius-pill, 999px); overflow: hidden; }
.clinic-fin-seg__btn {
	appearance: none; border: 0; cursor: pointer; padding: 0 var( --clinic-space-7 ); min-height: 40px;
	background: var(--clinic-bg); color: var(--clinic-text);
	font-family: inherit; font-size: 13px; font-weight: 700;
}
.clinic-fin-seg__btn:hover { background: var(--clinic-bg-light); color: var(--clinic-primary); }
.clinic-fin-seg__btn.is-on { background: var(--clinic-primary); color: var(--clinic-on-primary, #fff); }
.clinic-fin-seg__btn.is-on:hover { background: var(--clinic-primary-700); color: var(--clinic-on-primary, #fff); }
.clinic-fin-seg__btn:active { background: var(--clinic-primary-800); color: var(--clinic-on-primary, #fff); }
.clinic-fin-discount .clinic-fin-amount { flex: 1 1 auto; min-width: 0; }

/* وضعیت + نشانِ «دستی» */
.clinic-fin-status { display: flex; align-items: center; gap: var( --clinic-space-4 ); }
.clinic-fin-manualflag {
	display: inline-flex; align-items: center; justify-content: center;
	width: 22px; height: 22px; border-radius: 50%;
	background: var(--clinic-amber); color: var(--clinic-amber-on);
	font-size: 12px; font-weight: 700; cursor: help;
}
.clinic-fin-manual { display: grid; gap: var( --clinic-space-4 ); padding: var( --clinic-space-5 ) var( --clinic-space-6 ); border: 1px dashed var(--clinic-border); border-radius: var(--clinic-radius-md, 12px); background: var(--clinic-bg-light); }
.clinic-fin-manual__lbl { display: inline-flex; align-items: center; gap: var( --clinic-space-3 ); margin: 0; font-weight: 700; color: var(--clinic-text); }
.clinic-fin-manual__fields { display: grid; grid-template-columns: minmax(140px, 1fr) minmax(160px, 2fr); gap: var( --clinic-space-4 ); }
.clinic-fin-manual__fields[hidden] { display: none; }

@media (max-width: 768px) {
	.clinic-fin-discount { flex-direction: column; }
	.clinic-fin-seg { width: 100%; }
	.clinic-fin-seg__btn { flex: 1 1 0; }
	.clinic-fin-manual__fields { grid-template-columns: 1fr; }
}

/* ═══════════════ STEP 206 — بارگذاری مدارک پزشکی در فرم بیمار ═══════════════ */
/* فقط توکن‌های پالت؛ برای هر پس‌زمینه رنگ متن مکمل تعیین شده (کنتراست ≥ ۴٫۵:۱). */

.clinic-pdocs__hint { margin: 0 0 var( --clinic-space-4 ); font-size: 12.5px; color: var(--clinic-muted); }
.clinic-pdocs__subtitle { margin: var( --clinic-space-8 ) 0 var( --clinic-space-4 ); font-size: 14px; font-weight: 800; color: var(--clinic-text); }

/* ناحیه درگ‌اند‌دراپ */
.clinic-pdocs__drop {
	display: flex; align-items: center; justify-content: center; gap: var( --clinic-space-4 );
	min-height: 96px; padding: var( --clinic-space-8 ); cursor: pointer; text-align: center;
	border: 2px dashed var(--clinic-border); border-radius: var(--clinic-card-radius, var(--clinic-radius-md, 12px));
	background: var(--clinic-bg-light); color: var(--clinic-text);
	font-weight: 700; font-size: 13.5px;
}
.clinic-pdocs__drop:hover { border-color: var(--clinic-primary); color: var(--clinic-primary); }
.clinic-pdocs__drop:focus-visible { outline: 2px solid var(--clinic-primary); outline-offset: 2px; }
.clinic-pdocs__drop.is-over { border-color: var(--clinic-primary); background: var(--clinic-primary-100); color: var(--clinic-primary-800); }
.clinic-pdocs__dropicon { display: inline-flex; color: inherit; }

.clinic-pdocs__msg { margin: var( --clinic-space-4 ) 0 0; min-height: 16px; font-size: 12.5px; color: var(--clinic-muted); }
.clinic-pdocs__msg.is-ok { color: var(--clinic-success-700); font-weight: 700; }
.clinic-pdocs__msg.is-bad { color: var(--clinic-error-700); font-weight: 700; }

/* ردیف صف بارگذاری */
.clinic-pdocs__queue { display: grid; gap: var( --clinic-space-5 ); margin-top: var( --clinic-space-6 ); }
.clinic-pdocs__row {
	display: grid; grid-template-columns: 56px 1fr auto; gap: var( --clinic-space-6 ); align-items: start;
	padding: var( --clinic-space-5 ) var( --clinic-space-6 ); border: 1px solid var(--clinic-border);
	border-radius: var(--clinic-radius-md, 12px); background: var(--clinic-bg);
}
.clinic-pdocs__rowbody { display: grid; gap: var( --clinic-space-3 ); min-width: 0; }
.clinic-pdocs__thumb {
	display: flex; align-items: center; justify-content: center;
	width: 56px; height: 56px; overflow: hidden;
	border-radius: var(--clinic-radius-md, 12px);
	background: var(--clinic-bg-light); color: var(--clinic-primary);
}
.clinic-pdocs__thumb img { width: 100%; height: 100%; object-fit: cover; }
.clinic-pdocs__fileic { font-size: 22px; line-height: 1; }
.clinic-pdocs__name { font-weight: 700; font-size: 13.5px; color: var(--clinic-text); word-break: break-all; }
.clinic-pdocs__size, .clinic-pdocs__cats, .clinic-pdocs__date { font-size: 12px; color: var(--clinic-muted); }
.clinic-pdocs__cats-pick { display: flex; flex-wrap: wrap; gap: var( --clinic-space-3 ) var( --clinic-space-7 ); }
.clinic-pdocs__cat { display: inline-flex; align-items: center; gap: var( --clinic-space-2 ); font-size: 12.5px; color: var(--clinic-text); }

/* نوار پیشرفت */
.clinic-pdocs__bar { height: 6px; border-radius: var( --clinic-radius-pill ); background: var(--clinic-bg-light); overflow: hidden; }
.clinic-pdocs__barfill { display: block; width: 0; height: 100%; background: var(--clinic-primary); transition: width .15s linear; }
.clinic-pdocs__state { font-size: 12px; color: var(--clinic-muted); }
.clinic-pdocs__state.is-ok { color: var(--clinic-success-700); font-weight: 700; }
.clinic-pdocs__state.is-bad { color: var(--clinic-error-700); font-weight: 700; }

/* فهرست مدارک موجود */
.clinic-pdocs__list { display: grid; gap: var( --clinic-space-4 ); }
.clinic-pdocs__item {
	display: grid; grid-template-columns: 56px 1fr auto; gap: var( --clinic-space-6 ); align-items: center;
	padding: var( --clinic-space-4 ) var( --clinic-space-6 ); border: 1px solid var(--clinic-border);
	border-radius: var(--clinic-radius-md, 12px); background: var(--clinic-bg);
}
.clinic-pdocs__meta { display: grid; gap: var( --clinic-space-1 ); min-width: 0; }
.clinic-pdocs__actions { display: flex; gap: var( --clinic-space-3 ); flex-wrap: wrap; }
.clinic-pdocs__empty { margin: 0; font-size: 13px; color: var(--clinic-muted); }

@media (max-width: 768px) {
	.clinic-pdocs__row, .clinic-pdocs__item { grid-template-columns: 48px 1fr; }
	.clinic-pdocs__row .clinic-pdocs__actions, .clinic-pdocs__item .clinic-pdocs__actions { grid-column: 1 / -1; }
	.clinic-pdocs__actions .clinic-btn { flex: 1 1 0; }
	.clinic-pdocs__thumb { width: 48px; height: 48px; }
	.clinic-pdocs__drop { min-height: 84px; }
}
/* STEP 206 — ردیف ردشده (نوع/حجم نامعتبر): پیام تا حذف دستی می‌ماند. */
.clinic-pdocs__row.is-rejected { border-color: var(--clinic-error-300); background: var(--clinic-error-50); }
.clinic-pdocs__row.is-rejected .clinic-pdocs__thumb { background: var(--clinic-error-100); color: var(--clinic-error-700); }

/* ═══════════════ STEP 207 — تعرفه واقعی از تنظیمات (بدون مبلغ هاردکد) ═══════════════ */
.bw-no-tariff {
	margin: var( --clinic-space-3 ) 0 0; padding: var( --clinic-space-4 ) var( --clinic-space-5 ); font-size: 12.5px; font-weight: 700;
	background: var(--clinic-amber); color: var(--clinic-amber-on);
	border-radius: var(--clinic-radius-md, 12px);
}
.bw-no-tariff a { color: var(--clinic-amber-on); text-decoration: underline; font-weight: 800; }
.bw-no-tariff a:hover, .bw-no-tariff a:focus { color: var(--clinic-amber-on); text-decoration: none; }
.bw-fee-split { display: flex; flex-wrap: wrap; gap: var( --clinic-space-3 ) var( --clinic-space-8 ); margin: var( --clinic-space-3 ) 0 0; font-size: 12.5px; color: var(--clinic-muted); }
.bw-fee-split b { color: var(--clinic-text); font-weight: 800; }
.clinic-manualbadge--fee { background: var(--clinic-amber); color: var(--clinic-amber-on); }

@media (max-width: 768px) {
	.bw-fee-split { flex-direction: column; gap: var( --clinic-space-2 ); }
}

/* ═══════════════ STEP 209 — تفکیک «مبلغ کل» از «مبلغ پیش‌پرداخت» ═══════════════ */
/* سه عدد مستقل در فرم رزرو عمومی؛ فقط توکن پالت، کنتراست ≥ ۴٫۵:۱. */
.bw-quote {
	margin-top: var( --clinic-space-5 ); padding: var( --clinic-space-6 ) var( --clinic-space-7 );
	background: var(--clinic-bg-light); color: var(--clinic-text);
	border: 1px solid var(--clinic-border);
	border-radius: var(--clinic-card-radius, var(--clinic-radius-md, 12px));
	display: grid; gap: var( --clinic-space-3 );
}
.bw-quote[hidden] { display: none; }
.bw-quote__row { display: flex; align-items: baseline; justify-content: space-between; gap: var( --clinic-space-6 ); font-size: 13.5px; }
.bw-quote__row[hidden] { display: none; }
.bw-quote__k { color: var(--clinic-muted); }
.bw-quote__v { color: var(--clinic-text); font-weight: 800; }
.bw-quote__row--ins .bw-quote__k, .bw-quote__row--ins .bw-quote__v { font-size: 12.5px; }
.bw-quote__row--pay {
	margin-top: var( --clinic-space-1 ); padding-top: var( --clinic-space-4 ); border-top: 1px solid var(--clinic-border);
}
.bw-quote__row--pay .bw-quote__k { color: var(--clinic-text); font-weight: 700; }
.bw-quote__row--pay .bw-quote__v { color: var(--clinic-primary); font-size: 15px; }
.bw-quote__note {
	margin: var( --clinic-space-2 ) 0 0; padding: 7px var( --clinic-space-5 ); font-size: 12.5px; font-weight: 700;
	background: var(--clinic-amber); color: var(--clinic-amber-on);
	border-radius: var(--clinic-radius-md, 12px);
}
.bw-quote__note[hidden] { display: none; }

@media (max-width: 768px) {
	.bw-quote__row { flex-direction: column; gap: var( --clinic-space-1 ); }
	.bw-quote__row--pay .bw-quote__v { font-size: 16px; }
}

/* ═══════════════ STEP 210 — کامپوننت واحد انتخاب بیمار ═══════════════ */
/* فقط توکن پالت؛ رنگ متن هر پس‌زمینه هم‌زمان تعیین شده؛ کنتراست ≥ ۴٫۵:۱ در عادی/hover/active. */

.clinic-pp { position: relative; }
.clinic-pp__control { display: flex; align-items: stretch; gap: var( --clinic-space-3 ); }
.clinic-pp__input { flex: 1 1 auto; min-width: 0; }
.clinic-pp__clear {
	flex: 0 0 auto; width: 34px; cursor: pointer; font-size: 18px; line-height: 1;
	background: var(--clinic-bg-light); color: var(--clinic-text);
	border: 1px solid var(--clinic-border); border-radius: var(--clinic-radius-md, 12px);
}
.clinic-pp__clear:hover { background: var(--clinic-primary); color: var(--clinic-on-primary, #fff); border-color: var(--clinic-primary); }
.clinic-pp__clear:active { background: var(--clinic-primary-800); color: var(--clinic-on-primary, #fff); }
.clinic-pp__clear[hidden] { display: none; }

/* بیمار انتخاب‌شده */
.clinic-pp__chosen {
	display: flex; flex-wrap: wrap; align-items: baseline; gap: var( --clinic-space-2 ) var( --clinic-space-5 ); margin-top: var( --clinic-space-3 );
	padding: 7px var( --clinic-space-5 ); background: var(--clinic-bg-light); color: var(--clinic-text);
	border: 1px solid var(--clinic-border); border-radius: var(--clinic-radius-md, 12px);
}
.clinic-pp__chosen[hidden] { display: none; }
.clinic-pp__name { font-weight: 800; font-size: 13.5px; color: var(--clinic-text); }
.clinic-pp__sub { font-size: 12.5px; color: var(--clinic-muted); }
.clinic-pp__sub.is-missing { color: var(--clinic-amber-on); background: var(--clinic-amber); padding: 1px var( --clinic-space-4 ); border-radius: var(--clinic-radius-pill, 999px); font-weight: 700; }

/* فهرست نتایج */
.clinic-pp__list {
	position: absolute; z-index: 60; inset-inline: 0; margin: var( --clinic-space-2 ) 0 0; padding: var( --clinic-space-2 ); list-style: none;
	max-height: 320px; overflow-y: auto;
	background: var(--clinic-bg); border: 1px solid var(--clinic-border);
	border-radius: var(--clinic-radius-md, 12px); box-shadow: var(--clinic-shadow);
}
.clinic-pp__list[hidden] { display: none; }
.clinic-pp__item {
	display: grid; gap: var( --clinic-space-1 ); padding: var( --clinic-space-4 ) var( --clinic-space-5 ); cursor: pointer;
	border-radius: var(--clinic-radius-md, 12px);
	background: var(--clinic-bg); color: var(--clinic-text);
}
.clinic-pp__item:hover { background: var(--clinic-bg-light); color: var(--clinic-primary); }
.clinic-pp__item.is-active { background: var(--clinic-primary); color: var(--clinic-on-primary, #fff); }
.clinic-pp__item.is-active .clinic-pp__item-name,
.clinic-pp__item.is-active .clinic-pp__item-sub { color: var(--clinic-on-primary, #fff); }
.clinic-pp__item-name { font-weight: 700; font-size: 13.5px; color: inherit; }
.clinic-pp__item-sub { font-size: 12px; color: var(--clinic-muted); }
.clinic-pp__item-sub.is-missing { color: var(--clinic-error-700); font-weight: 700; }
.clinic-pp__item.is-active .clinic-pp__item-sub.is-missing { color: var(--clinic-on-primary, #fff); }
.clinic-pp__more {
	padding: var( --clinic-space-4 ) var( --clinic-space-5 ); text-align: center; cursor: pointer; font-weight: 700; font-size: 12.5px;
	color: var(--clinic-primary); background: var(--clinic-bg-light);
	border-radius: var(--clinic-radius-md, 12px); margin-top: var( --clinic-space-2 );
}
.clinic-pp__more:hover { background: var(--clinic-primary); color: var(--clinic-on-primary, #fff); }

/* ════════════════════════════════════════════════════════════════════════════
 * STEP 224 فاز ۳ — هایلایت تطبیق، اسکلت بارگذاری، دکمه تلاش دوباره.
 *
 * هر سه از توکن پالت می‌خوانند و قرارداد نقش را رعایت می‌کنند:
 * اسکلت نقش **داده** است (شعاع کوچک، بدون سایه) و دکمه تلاش دوباره نقش
 * **کنش** (pill، بدون سایه).
 * ──────────────────────────────────────────────────────────────────────────── */

/* هایلایت: زمینه یاسی روشن + متن برند ⇒ روی ردیف عادی ۱۰٫۴:۱.
 * روی ردیف فعال (پس‌زمینه برند) وارونه می‌شود تا محو نشود. */
.clinic-pp__hit {
	background: var(--clinic-bg-light, #F3E8FF);
	color: var(--clinic-primary, #4B2E83);
	font-weight: 800;
	border-radius: var(--clinic-radius-2xs, 2px);
	padding: 0 1px;
}
.clinic-pp__item.is-active .clinic-pp__hit {
	background: var(--clinic-on-primary, #fff);
	color: var(--clinic-primary, #4B2E83);
}

/* اسکلت: هم‌ارتفاع ردیف واقعی تا نشستن نتیجه هیچ پرشی نسازد. */
.clinic-pp__item--skeleton { cursor: default; background: var(--clinic-bg); }
.clinic-pp__sk-name { display: block; height: 13px; width: 58%; }
.clinic-pp__sk-sub  { display: block; height: 11px; width: 38%; margin-top: var( --clinic-space-1 ); }

/* دکمه تلاش دوباره — نقش کنش. */
.clinic-pp__retry {
	display: inline-block; margin-inline-start: var( --clinic-space-3 );
	padding: 2px var( --clinic-space-5 );
	border: 1px solid var(--clinic-primary, #4B2E83);
	border-radius: var(--clinic-radius-pill, 999px);
	background: var(--clinic-bg); color: var(--clinic-primary, #4B2E83);
	font: inherit; font-size: 12px; font-weight: 700; cursor: pointer;
	box-shadow: none;
}
.clinic-pp__retry:hover { background: var(--clinic-primary, #4B2E83); color: var(--clinic-on-primary, #fff); }

.clinic-pp__msg { margin: 5px 0 0; min-height: 16px; font-size: 12.5px; color: var(--clinic-muted); }
.clinic-pp__msg.is-bad { color: var(--clinic-error-700); font-weight: 700; }
/* راهنمای «انتخاب‌های اخیر» — خنثی و کم‌رنگ ولی خوانا. */
.clinic-pp__msg.is-hint { color: var(--clinic-text-secondary, #6B7280); font-weight: 700; }
.clinic-pp__msg.is-empty { color: var(--clinic-amber-on); background: var(--clinic-amber); display: inline-block; padding: 3px var( --clinic-space-5 ); border-radius: var(--clinic-radius-pill, 999px); font-weight: 700; }

@media (max-width: 768px) {
	.clinic-pp__list { max-height: 260px; }
	.clinic-pp__chosen { flex-direction: column; gap: var( --clinic-space-1 ); }
}

/* ==========================================================================
   STEP 213-B — نوار پیشرفت مهاجرت جستجوی بیمار (تب امنیت)
   همه‌ی رنگ‌ها از توکن پالت؛ صفر هگز خام و صفر !important.
   ========================================================================== */
.clinic-blob-stat {
	margin: var( --clinic-space-3 ) 0 var( --clinic-space-4 );
	font-size: 13.5px;
	color: var(--clinic-text);
	font-weight: 700;
}
.clinic-blob-remaining { color: var(--clinic-muted); font-weight: 400; }

.clinic-blob-bar {
	height: 10px;
	background: var(--clinic-bg-light);
	border: 1px solid var(--clinic-border);
	border-radius: var(--clinic-radius-pill, 999px);
	overflow: hidden;
	margin-bottom: var( --clinic-space-6 );
}
.clinic-blob-bar__fill {
	display: block;
	height: 100%;
	background: var(--clinic-success);
	border-radius: var(--clinic-radius-pill, 999px);
	transition: width .25s ease;
}

.clinic-blob-msg {
	margin-inline-start: var( --clinic-space-5 );
	font-size: 13px;
	color: var(--clinic-muted);
}

@media (max-width: 768px) {
	.clinic-blob-msg { display: block; margin-inline-start: 0; margin-top: var( --clinic-space-3 ); }
}

/* ═══ STEP 218 گام ۲ — گفتگوی تایید سیستم طراحی (جایگزین confirm بومی) ═══ */
.clinic-confirm .clinic-modal__box {
	padding: var( --clinic-space-12 );
	text-align: center;
}
.clinic-confirm__msg {
	margin: 0 0 var( --clinic-space-10 );
	font-size: var( --clinic-fs-lg, 15px );
	line-height: 1.8;
	color: var( --clinic-text );
}
.clinic-confirm__actions {
	display: flex;
	gap: var( --clinic-space-5 );
	justify-content: center;
	flex-wrap: wrap;
}
.clinic-confirm__actions .clinic-btn { min-width: 110px; }

/*
 * STEP 218 گام ۲ — آیکون داخل تب و دسترسی سریع.
 *
 * جایگزینی dashicons با SVG برون‌خطی، ارتفاع تب را ۳px بیشتر می‌کرد چون گلیف فونت
 * و SVG خط پایه یکسانی ندارند. تراز عمودی صریح، تب را به ارتفاع پیشین برمی‌گرداند
 * و آیکون را دقیقا وسط متن می‌نشاند.
 */
.clinic-tab .clinic-icon,
.clinic-quick .clinic-icon {
	vertical-align: middle;
	margin-inline-end: var( --clinic-space-3 );
	flex: none;
}
.clinic-tab .clinic-icon { width: 16px; height: 16px; }

/*
 * ═══ STEP 219 کامپوننت ۱ — اعلان: پل اعلان وردپرس ═══
 *
 * شش اعلان روی هوک `admin_notices` هستند. وردپرس **خودش** جایگاهشان را در بالای
 * صفحه می‌چیند و دکمه بستن `is-dismissible` را می‌سازد. پس کلاس `notice` حذف
 * نمی‌شود — حذفش جایگاه و بسته‌شدن را می‌شکست.
 *
 * به‌جایش `clinic-notice` **افزوده** می‌شود و این قاعده ظاهر وردپرس را با سیستم
 * طراحی هماهنگ می‌کند. دامنه دقیقا `.notice.clinic-notice` است، پس اعلان‌های خودِ
 * وردپرس و افزونه‌های دیگر دست‌نخورده می‌مانند.
 */
.notice.clinic-notice {
	border: 1px solid var( --clinic-border );
	border-inline-start: 4px solid var( --clinic-border );
	border-radius: var( --clinic-border-radius );
	background: var( --clinic-bg-light );
	box-shadow: var( --clinic-elev-flat, var( --clinic-shadow-xs ) );
	font-family: var( --clinic-font-family );
	padding: var( --clinic-space-3 ) var( --clinic-space-8 );
}
.notice.clinic-notice--success { border-inline-start-color: var( --clinic-success ); }
.notice.clinic-notice--warning { border-inline-start-color: var( --clinic-warning ); }
.notice.clinic-notice--error   { border-inline-start-color: var( --clinic-danger ); }
