/*
 * پنل مدیریت مینی‌سایت.
 *
 * مخاطبش صاحب یک سالن زیبایی یا رستوران است، نه یک توسعه‌دهنده. پس
 * هدف «کم‌ترین تصمیم در هر صفحه» است نه «بیشترین امکانات در دسترس».
 *
 * عمداً از base.css مینی‌سایت جداست: ظاهر پنل نباید با رنگ برند
 * مشتری عوض شود. کاربری که رنگ برندش زرد روشن است نباید پنلی با
 * دکمه‌های ناخوانا داشته باشد.
 */

@font-face {
	font-family: 'Vazirmatn';
	src: url('../fonts/vazirmatn/Vazirmatn-Regular.woff2') format('woff2');
	font-weight: 400;
	font-display: swap;
}

@font-face {
	font-family: 'Vazirmatn';
	src: url('../fonts/vazirmatn/Vazirmatn-Medium.woff2') format('woff2');
	font-weight: 500;
	font-display: swap;
}

@font-face {
	font-family: 'Vazirmatn';
	src: url('../fonts/vazirmatn/Vazirmatn-Bold.woff2') format('woff2');
	font-weight: 700;
	font-display: swap;
}

:root {
	--vp-brand: #d9738c;
	--vp-brand-dark: #b8536c;
	--vp-brand-tint: #fdf2f5;

	--vp-ink: #1f2430;
	--vp-ink-soft: #6b7280;
	--vp-ink-faint: #9aa1ad;

	--vp-bg: #f6f7f9;
	--vp-surface: #ffffff;
	--vp-line: #e6e8ec;
	--vp-line-soft: #f0f1f4;

	--vp-ok: #0f7b47;
	--vp-ok-bg: #e8f6ef;
	--vp-err: #c62828;
	--vp-err-bg: #fdecea;
	--vp-warn: #8a6d00;
	--vp-warn-bg: #fff8e1;

	--vp-r-sm: 8px;
	--vp-r: 12px;
	--vp-r-lg: 16px;

	--vp-shadow: 0 1px 2px rgba(16, 24, 40, .04), 0 4px 12px rgba(16, 24, 40, .06);
	--vp-shadow-lg: 0 8px 32px rgba(16, 24, 40, .12);

	--vp-side: 236px;
	--vp-top: 60px;
}

*, *::before, *::after { box-sizing: border-box; }

body.vp {
	margin: 0;
	font-family: 'Vazirmatn', system-ui, 'Segoe UI', Tahoma, sans-serif;
	font-size: 14px;
	line-height: 1.8;
	color: var(--vp-ink);
	background: var(--vp-bg);
	-webkit-font-smoothing: antialiased;
}

a { color: inherit; text-decoration: none; }
img { max-width: 100%; display: block; }

/* ============================================================
   دکمه
   ============================================================ */

.vp-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 7px;
	padding: 10px 20px;
	font: inherit;
	font-size: 13.5px;
	font-weight: 700;
	line-height: 1.4;
	color: #fff;
	background: var(--vp-brand);
	border: 1px solid transparent;
	border-radius: var(--vp-r-sm);
	cursor: pointer;
	white-space: nowrap;
	transition: background .16s ease, box-shadow .16s ease, transform .06s ease;
}

.vp-btn:hover { background: var(--vp-brand-dark); }
.vp-btn:active { transform: translateY(1px); }

.vp-btn:focus-visible {
	outline: 0;
	box-shadow: 0 0 0 3px rgba(217, 115, 140, .35);
}

.vp-btn[disabled] { opacity: .55; cursor: not-allowed; }

.vp-btn--sm { padding: 7px 14px; font-size: 12.5px; }
.vp-btn--block { width: 100%; }

.vp-btn--ghost {
	color: var(--vp-brand);
	background: #fff;
	border-color: var(--vp-line);
}

.vp-btn--ghost:hover { background: var(--vp-brand-tint); border-color: var(--vp-brand); }

.vp-btn--quiet {
	color: var(--vp-ink-soft);
	background: transparent;
	border-color: transparent;
}

.vp-btn--quiet:hover { background: var(--vp-line-soft); color: var(--vp-ink); }

.vp-btn--danger { background: var(--vp-err); }
.vp-btn--danger:hover { background: #a31f1f; }

.vp-linkbtn {
	padding: 4px 0;
	font: inherit;
	font-size: 13px;
	color: var(--vp-brand);
	background: none;
	border: 0;
	cursor: pointer;
	text-decoration: underline;
	text-underline-offset: 3px;
}

/* ============================================================
   ورود
   ============================================================ */

.vp-auth {
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 100vh;
	padding: 24px 16px;
	background:
		radial-gradient(1000px 500px at 100% -10%, var(--vp-brand-tint), transparent 60%),
		radial-gradient(800px 400px at 0% 110%, #eef2ff, transparent 60%),
		var(--vp-bg);
}

.vp-auth__card {
	width: 100%;
	max-width: 400px;
	padding: 32px 28px;
	background: var(--vp-surface);
	border: 1px solid var(--vp-line);
	border-radius: var(--vp-r-lg);
	box-shadow: var(--vp-shadow-lg);
}

.vp-auth__title {
	margin: 0 0 6px;
	font-size: 20px;
	font-weight: 700;
	text-align: center;
}

.vp-auth__lead {
	margin: 0 0 20px;
	font-size: 13px;
	line-height: 1.9;
	color: var(--vp-ink-soft);
	text-align: center;
}

.vp-auth__form { margin: 0; }
.vp-auth__form .vp-btn { margin-top: 6px; }
.vp-auth__again { margin: 14px 0 0; text-align: center; }

/* تب‌های روش ورود */

.vp-tabs {
	display: flex;
	gap: 4px;
	margin: 0 0 22px;
	padding: 4px;
	background: var(--vp-bg);
	border: 1px solid var(--vp-line);
	border-radius: 10px;
}

.vp-tab {
	flex: 1;
	padding: 9px 8px;
	font: inherit;
	font-size: 12.5px;
	font-weight: 700;
	color: var(--vp-ink-soft);
	background: none;
	border: 0;
	border-radius: 7px;
	cursor: pointer;
	transition: background .15s ease, color .15s ease;
}

.vp-tab:hover { color: var(--vp-ink); }

.vp-tab.is-active {
	color: var(--vp-brand);
	background: var(--vp-surface);
	box-shadow: 0 1px 3px rgba(16, 24, 40, .1);
}

.vp-pane { display: none; }
.vp-pane.is-active { display: block; }

/* کد یکبارمصرف */

.vp-code {
	font-size: 22px !important;
	font-weight: 700;
	letter-spacing: 10px;
	text-align: center;
	padding-inline: 12px !important;
}

.vp-devcode {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	flex-wrap: wrap;
	margin: 0 0 18px;
	padding: 12px 14px;
	font-size: 12.5px;
	background: var(--vp-warn-bg);
	border: 1px dashed #e0a800;
	border-radius: var(--vp-r-sm);
}

.vp-devcode strong { color: var(--vp-warn); }

.vp-devcode code {
	font-size: 19px;
	font-weight: 700;
	letter-spacing: 4px;
	direction: ltr;
	color: #7a5c00;
	background: none;
}

/* ============================================================
   چیدمان
   ============================================================ */

.vp-top {
	position: sticky;
	top: 0;
	z-index: 30;
	height: var(--vp-top);
	background: rgba(255, 255, 255, .88);
	backdrop-filter: saturate(180%) blur(10px);
	border-bottom: 1px solid var(--vp-line);
}

.vp-top__inner {
	display: flex;
	align-items: center;
	gap: 14px;
	height: 100%;
	padding-inline: 20px;
}

.vp-top__brand {
	display: flex;
	align-items: center;
	gap: 8px;
	font-weight: 700;
	font-size: 14.5px;
}

.vp-top__brand::before {
	content: '';
	width: 22px;
	height: 22px;
	border-radius: 6px;
	background: linear-gradient(135deg, var(--vp-brand), var(--vp-brand-dark));
}

.vp-top__actions {
	display: flex;
	align-items: center;
	gap: 8px;
	margin-inline-start: auto;
}

.vp-burger {
	display: none;
	flex-direction: column;
	gap: 4px;
	padding: 8px;
	background: none;
	border: 0;
	cursor: pointer;
}

.vp-burger span {
	display: block;
	width: 20px;
	height: 2px;
	border-radius: 2px;
	background: var(--vp-ink);
}

.vp-layout {
	display: grid;
	grid-template-columns: var(--vp-side) 1fr;
	align-items: start;
	gap: 24px;
	max-width: 1240px;
	margin-inline: auto;
	padding: 24px 20px 80px;
}

.vp-side {
	position: sticky;
	top: calc(var(--vp-top) + 24px);
	display: flex;
	flex-direction: column;
	gap: 2px;
	padding: 8px;
	background: var(--vp-surface);
	border: 1px solid var(--vp-line);
	border-radius: var(--vp-r);
	box-shadow: var(--vp-shadow);
}

.vp-side__link {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 10px 12px;
	font-size: 13.5px;
	font-weight: 500;
	color: var(--vp-ink-soft);
	border-radius: var(--vp-r-sm);
	transition: background .14s ease, color .14s ease;
}

.vp-side__link:hover { background: var(--vp-line-soft); color: var(--vp-ink); }

.vp-side__link.is-active {
	color: var(--vp-brand);
	background: var(--vp-brand-tint);
	font-weight: 700;
}

.vp-side__link.is-active::before {
	content: '';
	width: 3px;
	height: 16px;
	border-radius: 3px;
	background: var(--vp-brand);
	margin-inline-start: -6px;
}

.vp-main { min-width: 0; }

/* ============================================================
   تیترها
   ============================================================ */

.vp-h1 { margin: 0 0 4px; font-size: 21px; font-weight: 700; letter-spacing: -.2px; }
.vp-h2 { margin: 0 0 14px; font-size: 15px; font-weight: 700; }
.vp-lead { margin: 0 0 22px; font-size: 13px; color: var(--vp-ink-soft); }

/* ============================================================
   کارت و پنل
   ============================================================ */

.vp-panel {
	padding: 22px;
	margin-bottom: 18px;
	background: var(--vp-surface);
	border: 1px solid var(--vp-line);
	border-radius: var(--vp-r);
	box-shadow: var(--vp-shadow);
}

.vp-cards {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
	gap: 14px;
	margin-bottom: 22px;
}

.vp-card {
	padding: 18px;
	background: var(--vp-surface);
	border: 1px solid var(--vp-line);
	border-radius: var(--vp-r);
	box-shadow: var(--vp-shadow);
}

.vp-card__label { display: block; font-size: 12px; color: var(--vp-ink-soft); margin-bottom: 4px; }
.vp-card__value { display: block; font-size: 22px; font-weight: 700; color: var(--vp-brand); line-height: 1.4; }

.vp-steps { margin: 0; padding-inline-start: 20px; }
.vp-steps li { margin-bottom: 8px; font-size: 13.5px; }
.vp-steps a { color: var(--vp-brand); }
.vp-steps a:hover { text-decoration: underline; text-underline-offset: 3px; }

/* ============================================================
   فیلدها
   ============================================================ */

.vp-form { margin: 0; }

.vp-field { display: block; margin-bottom: 16px; }
.vp-field:last-child { margin-bottom: 0; }

.vp-field__label {
	display: block;
	margin-bottom: 6px;
	font-size: 12.5px;
	font-weight: 700;
	color: var(--vp-ink);
}

.vp-req { color: var(--vp-err); font-weight: 400; }

.vp-field__help {
	margin: 6px 0 0;
	font-size: 11.5px;
	line-height: 1.7;
	color: var(--vp-ink-faint);
}

/*
 * یک قاعده برای همهٔ ورودی‌ها.
 *
 * قبلاً هر تایپ جداگانه استایل می‌گرفت و تایپ‌هایی مثل password و
 * date از قلم افتاده بودند و بدون استایل رندر می‌شدند. انتخابگر
 * حالا «هرچه ورودی است مگر استثناها» است تا تایپ جدید هم خودکار
 * پوشش بگیرد.
 */
.vp-field input:not([type=checkbox]):not([type=radio]):not([type=color]):not([type=file]):not([type=hidden]),
.vp-field textarea,
.vp-field select,
.vp-auth__form input:not([type=hidden]),
.vp-panel input:not([type=checkbox]):not([type=radio]):not([type=color]):not([type=file]):not([type=hidden]),
.vp-panel textarea,
.vp-panel select {
	width: 100%;
	padding: 10px 13px;
	font: inherit;
	font-size: 13.5px;
	line-height: 1.7;
	color: var(--vp-ink);
	background: var(--vp-surface);
	border: 1px solid var(--vp-line);
	border-radius: var(--vp-r-sm);
	transition: border-color .14s ease, box-shadow .14s ease;
	appearance: none;
}

.vp-field textarea,
.vp-panel textarea { resize: vertical; min-height: 76px; }

.vp-field input:focus,
.vp-field textarea:focus,
.vp-field select:focus,
.vp-auth__form input:focus,
.vp-panel input:focus,
.vp-panel textarea:focus,
.vp-panel select:focus {
	outline: 0;
	border-color: var(--vp-brand);
	box-shadow: 0 0 0 3px rgba(217, 115, 140, .16);
}

.vp-field input::placeholder,
.vp-field textarea::placeholder { color: var(--vp-ink-faint); }

/* فلش سلکت — appearance:none آن را برداشته بود */
.vp-field select,
.vp-panel select {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%236b7280' d='M6 8 0 2l1.4-1.4L6 5.2 10.6.6 12 2z'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: left 13px center;
	padding-inline-end: 13px;
	padding-inline-start: 34px;
	cursor: pointer;
}

.vp-field--embed textarea {
	font-family: ui-monospace, Menlo, Consolas, monospace;
	font-size: 12px;
	direction: ltr;
	text-align: left;
}

/* کلید روشن/خاموش */

.vp-switch { display: inline-flex; align-items: center; cursor: pointer; }
.vp-switch input { position: absolute; opacity: 0; width: 0; height: 0; }

.vp-switch__track {
	position: relative;
	display: block;
	width: 42px;
	height: 24px;
	background: #cfd3da;
	border-radius: 999px;
	transition: background .18s ease;
}

.vp-switch__track::after {
	content: '';
	position: absolute;
	top: 3px;
	inset-inline-end: 3px;
	width: 18px;
	height: 18px;
	background: #fff;
	border-radius: 50%;
	box-shadow: 0 1px 3px rgba(0, 0, 0, .2);
	transition: transform .18s ease;
}

.vp-switch input:checked + .vp-switch__track { background: var(--vp-brand); }
.vp-switch input:checked + .vp-switch__track::after { transform: translateX(-18px); }
.vp-switch input:focus-visible + .vp-switch__track { box-shadow: 0 0 0 3px rgba(217, 115, 140, .3); }

.vp-switch--sm .vp-switch__track { width: 36px; height: 20px; }
.vp-switch--sm .vp-switch__track::after { width: 14px; height: 14px; }
.vp-switch--sm input:checked + .vp-switch__track::after { transform: translateX(-16px); }

/* رنگ */

.vp-color { display: inline-flex; align-items: center; gap: 10px; }

.vp-color input[type=color] {
	width: 46px;
	height: 34px;
	padding: 2px;
	background: none;
	border: 1px solid var(--vp-line);
	border-radius: var(--vp-r-sm);
	cursor: pointer;
}

.vp-color__hex {
	font-size: 12px;
	direction: ltr;
	color: var(--vp-ink-soft);
	background: var(--vp-line-soft);
	padding: 3px 8px;
	border-radius: 6px;
}

/* ============================================================
   تصویر و پیشرفت آپلود
   ============================================================ */

.vp-image {
	padding: 12px;
	background: var(--vp-bg);
	border: 1px solid var(--vp-line);
	border-radius: var(--vp-r-sm);
}

.vp-image__preview {
	display: flex;
	align-items: center;
	justify-content: center;
	height: 130px;
	margin-bottom: 10px;
	overflow: hidden;
	background: repeating-conic-gradient(#eceef1 0 25%, transparent 0 50%) 50% / 16px 16px;
	border-radius: var(--vp-r-sm);
}

.vp-image__preview img { width: 100%; height: 100%; object-fit: contain; }
.vp-image__empty { font-size: 12px; color: var(--vp-ink-faint); }

/* ویدیو بلندتر از تصویر است تا کنترل‌های پخش‌کننده جا شوند؛ روی ۱۳۰
   پیکسل، نوار کنترل سافاری روی خود ویدیو می‌افتد. */
.vp-video .vp-image__preview { height: 170px; background: #000; }
.vp-image__preview video { width: 100%; height: 100%; object-fit: contain; }

/* قفل اشتراک حرفه‌ای */
.vp-locked {
	display: flex;
	align-items: center;
	gap: 8px;
	margin: 0;
	padding: 12px 14px;
	font-size: 12.5px;
	line-height: 1.8;
	color: var(--vp-ink-soft);
	background: #fbf7ef;
	border: 1px dashed #e0cfa8;
	border-radius: var(--vp-r-sm);
}

.vp-locked__badge {
	flex: none;
	padding: 3px 9px;
	font-size: 11px;
	font-weight: 700;
	color: #7a5a12;
	background: #f4e2b8;
	border-radius: 999px;
}

.vp-image__actions { display: flex; gap: 8px; }
.vp-image__actions .vp-btn { flex: 1; }

.vp-image__status { margin: 8px 0 0; font-size: 11.5px; color: var(--vp-ink-soft); }
.vp-image__status.is-ok { color: var(--vp-ok); }
.vp-image__status.is-err { color: var(--vp-err); }

/* نوار پیشرفت آپلود */

.vp-progress {
	display: none;
	align-items: center;
	gap: 10px;
	margin-top: 10px;
}

.vp-image.is-uploading .vp-progress { display: flex; }

.vp-progress__track {
	flex: 1;
	height: 6px;
	overflow: hidden;
	background: var(--vp-line);
	border-radius: 999px;
}

.vp-progress__fill {
	display: block;
	width: 0;
	height: 100%;
	background: linear-gradient(90deg, var(--vp-brand), var(--vp-brand-dark));
	border-radius: 999px;
	transition: width .2s ease;
}

.vp-progress__pct {
	min-width: 42px;
	font-size: 11.5px;
	font-weight: 700;
	color: var(--vp-brand);
	text-align: center;
}

/* ============================================================
   ریپیتر
   ============================================================ */

.vp-rep {
	margin-bottom: 18px;
	padding: 14px;
	background: var(--vp-bg);
	border: 1px solid var(--vp-line);
	border-radius: var(--vp-r);
}

.vp-rep__head { display: flex; align-items: center; gap: 8px; margin-bottom: 12px; }
.vp-rep__head h4 { margin: 0; font-size: 13px; font-weight: 700; }

.vp-rep__count {
	font-size: 11px;
	color: var(--vp-ink-soft);
	background: var(--vp-line-soft);
	padding: 2px 8px;
	border-radius: 999px;
}

.vp-rep__rows { display: flex; flex-direction: column; gap: 10px; margin-bottom: 12px; }

.vp-rep__row {
	position: relative;
	display: flex;
	align-items: flex-start;
	gap: 10px;
	padding: 14px;
	background: var(--vp-surface);
	border: 1px solid var(--vp-line);
	border-radius: var(--vp-r-sm);
}

.vp-rep__row.is-dragging { opacity: .5; }
.vp-rep__row.is-over { border-color: var(--vp-brand); }

.vp-rep__grip {
	flex: none;
	padding-top: 4px;
	color: var(--vp-ink-faint);
	cursor: grab;
	user-select: none;
	line-height: 1;
	letter-spacing: -2px;
}

.vp-rep__grip:active { cursor: grabbing; }
.vp-rep__body { flex: 1; min-width: 0; }

.vp-rep__remove {
	flex: none;
	width: 26px;
	height: 26px;
	display: grid;
	place-items: center;
	font-size: 17px;
	line-height: 1;
	color: var(--vp-ink-faint);
	background: none;
	border: 1px solid transparent;
	border-radius: 6px;
	cursor: pointer;
}

.vp-rep__remove:hover { color: var(--vp-err); background: var(--vp-err-bg); }

/* ============================================================
   آکاردئون بخش‌ها
   ============================================================ */

.vp-sec {
	margin-bottom: 10px;
	background: var(--vp-surface);
	border: 1px solid var(--vp-line);
	border-radius: var(--vp-r);
	box-shadow: var(--vp-shadow);
	overflow: hidden;
}

.vp-sec[open] { border-color: var(--vp-brand); }

.vp-sec__head {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 14px 18px;
	font-weight: 700;
	font-size: 14px;
	cursor: pointer;
	list-style: none;
	user-select: none;
	transition: background .14s ease;
}

.vp-sec__head::-webkit-details-marker { display: none; }
.vp-sec__head:hover { background: var(--vp-line-soft); }
.vp-sec[open] .vp-sec__head { background: var(--vp-brand-tint); }

.vp-sec__chevron {
	flex: none;
	width: 8px;
	height: 8px;
	border-inline-start: 2px solid var(--vp-ink-faint);
	border-block-end: 2px solid var(--vp-ink-faint);
	transform: rotate(45deg);
	transition: transform .18s ease;
	margin-inline-end: 2px;
}

.vp-sec[open] .vp-sec__chevron { transform: rotate(-45deg); border-color: var(--vp-brand); }

.vp-sec__title { flex: 1; min-width: 0; }
.vp-sec__meta { display: flex; gap: 6px; }
.vp-sec__body { padding: 18px; border-top: 1px solid var(--vp-line); }

.vp-tag {
	display: inline-block;
	padding: 2px 9px;
	font-size: 10.5px;
	font-weight: 700;
	border-radius: 999px;
}

.vp-tag--off { color: var(--vp-err); background: var(--vp-err-bg); }
.vp-tag--empty { color: var(--vp-ink-soft); background: var(--vp-line-soft); }

/* ============================================================
   مرتب‌سازی بخش‌ها
   ============================================================ */

.vp-order {
	display: flex;
	flex-direction: column;
	gap: 8px;
	margin: 0 0 20px;
	padding: 0;
	list-style: none;
}

.vp-order__item {
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 12px 16px;
	background: var(--vp-surface);
	border: 1px solid var(--vp-line);
	border-radius: var(--vp-r-sm);
	box-shadow: var(--vp-shadow);
}

.vp-order__item.is-dragging { opacity: .45; }
.vp-order__item.is-over { border-color: var(--vp-brand); background: var(--vp-brand-tint); }

.vp-order__grip { color: var(--vp-ink-faint); cursor: grab; user-select: none; letter-spacing: -2px; }
.vp-order__grip:active { cursor: grabbing; }
.vp-order__title { flex: 1; font-size: 13.5px; font-weight: 500; }

.vp-order__remove {
	width: 26px;
	height: 26px;
	display: grid;
	place-items: center;
	font-size: 17px;
	color: var(--vp-ink-faint);
	background: none;
	border: 0;
	border-radius: 6px;
	cursor: pointer;
}

.vp-order__remove:hover { color: var(--vp-err); background: var(--vp-err-bg); }

.vp-add__grid { display: flex; flex-wrap: wrap; gap: 8px; }

.vp-add__btn {
	padding: 8px 14px;
	font: inherit;
	font-size: 12.5px;
	font-weight: 500;
	color: var(--vp-ink);
	background: var(--vp-surface);
	border: 1px dashed var(--vp-line);
	border-radius: var(--vp-r-sm);
	cursor: pointer;
	transition: border-color .14s ease, color .14s ease, background .14s ease;
}

.vp-add__btn:hover {
	color: var(--vp-brand);
	border-color: var(--vp-brand);
	border-style: solid;
	background: var(--vp-brand-tint);
}

.vp-add__btn::before { content: '+'; margin-inline-end: 5px; font-weight: 700; }

/* ============================================================
   رسانه
   ============================================================ */

.vp-media {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
	gap: 14px;
}

.vp-media__item {
	position: relative;
	overflow: hidden;
	background: var(--vp-surface);
	border: 1px solid var(--vp-line);
	border-radius: var(--vp-r-sm);
	box-shadow: var(--vp-shadow);
}

.vp-media__item img {
	width: 100%;
	aspect-ratio: 1 / 1;
	object-fit: cover;
	background: repeating-conic-gradient(#eceef1 0 25%, transparent 0 50%) 50% / 16px 16px;
}

/* ویدیو و کاشی فایل، هم‌اندازهٔ تصویر می‌مانند تا گرید نپرد. */
.vp-media__item video {
	display: block;
	width: 100%;
	aspect-ratio: 1 / 1;
	object-fit: cover;
	background: #000;
}

.vp-media__thumb {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 8px;
	width: 100%;
	aspect-ratio: 1 / 1;
	padding: 12px;
	background: var(--vp-bg);
}

.vp-media__icon { font-size: 34px; line-height: 1; opacity: .55; }

.vp-media__ext {
	font-size: 11px;
	font-weight: 700;
	letter-spacing: .04em;
	color: var(--vp-ink-soft);
}

.vp-media__thumb--audio audio { width: 100%; max-width: 100%; }

.vp-media__bar {
	display: flex;
	align-items: center;
	gap: 6px;
	padding: 8px 10px;
	font-size: 11px;
	color: var(--vp-ink-soft);
}

.vp-media__name {
	flex: 1;
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	direction: ltr;
	text-align: left;
}

.vp-media__badge {
	position: absolute;
	top: 8px;
	inset-inline-start: 8px;
	padding: 2px 8px;
	font-size: 10px;
	font-weight: 700;
	border-radius: 999px;
	background: rgba(255, 255, 255, .92);
	box-shadow: 0 1px 3px rgba(0, 0, 0, .12);
}

.vp-media__badge--used { color: var(--vp-ok); }
.vp-media__badge--unused { color: var(--vp-ink-soft); }

.vp-media__form { margin: 0; padding: 0 10px 10px; }
.vp-media__form .vp-btn:hover { color: var(--vp-err); background: var(--vp-err-bg); }

/* ============================================================
   جدول و نمودار
   ============================================================ */

.vp-table { width: 100%; border-collapse: collapse; font-size: 13px; }

.vp-table th,
.vp-table td { padding: 11px 10px; text-align: start; border-bottom: 1px solid var(--vp-line-soft); }

.vp-table th { font-size: 11.5px; font-weight: 700; color: var(--vp-ink-soft); }
.vp-table tbody tr:last-child td { border-bottom: 0; }
.vp-table tbody tr:hover { background: var(--vp-bg); }
.vp-table__nowrap { white-space: nowrap; }

.vp-empty { padding: 40px 22px; text-align: center; color: var(--vp-ink-soft); }

.vp-chart { display: flex; align-items: flex-end; gap: 3px; height: 150px; padding: 8px 0; }
.vp-chart__col { flex: 1; height: 100%; display: flex; align-items: flex-end; }

.vp-chart__bar {
	display: block;
	width: 100%;
	min-height: 3px;
	background: linear-gradient(180deg, var(--vp-brand), var(--vp-brand-dark));
	border-radius: 3px 3px 0 0;
	transition: opacity .15s ease;
}

.vp-chart__col:hover .vp-chart__bar { opacity: .65; }
.vp-chart__note { margin: 8px 0 0; font-size: 11.5px; color: var(--vp-ink-soft); }

/* ============================================================
   پیام و نوار ذخیره
   ============================================================ */

.vp-notice {
	display: flex;
	align-items: flex-start;
	gap: 9px;
	margin-bottom: 16px;
	padding: 12px 15px;
	font-size: 13px;
	line-height: 1.8;
	border: 1px solid transparent;
	border-radius: var(--vp-r-sm);
}

.vp-notice::before { font-weight: 700; flex: none; }
.vp-notice--success { color: var(--vp-ok); background: var(--vp-ok-bg); border-color: #bfe5d1; }
.vp-notice--success::before { content: '✓'; }
.vp-notice--error { color: var(--vp-err); background: var(--vp-err-bg); border-color: #f5c6c2; }
.vp-notice--error::before { content: '!'; }

/* نوار ذخیرهٔ چسبان: در فرم بلند، دکمهٔ ذخیره نباید ته صفحه گم شود */
.vp-sticky {
	position: sticky;
	bottom: 0;
	z-index: 20;
	display: flex;
	gap: 10px;
	margin-top: 18px;
	padding: 14px 0;
	background: linear-gradient(to top, var(--vp-bg) 70%, transparent);
}

.vp-sticky .vp-btn { min-width: 160px; }

/* ============================================================
   موبایل
   ============================================================ */

@media (max-width: 860px) {
	.vp-burger { display: flex; }

	.vp-layout {
		grid-template-columns: 1fr;
		gap: 0;
		padding: 16px 14px 70px;
	}

	.vp-side {
		position: fixed;
		inset-block: var(--vp-top) 0;
		inset-inline-start: 0;
		z-index: 40;
		width: 250px;
		border-radius: 0;
		border-block: 0;
		overflow-y: auto;
		transform: translateX(-105%);
		transition: transform .22s ease;
	}

	/* در RTL منو از راست می‌آید */
	html[dir=rtl] .vp-side { transform: translateX(105%); }
	.vp-side.is-open { transform: translateX(0) !important; }

	.vp-scrim {
		position: fixed;
		inset: var(--vp-top) 0 0;
		z-index: 35;
		background: rgba(16, 24, 40, .4);
	}

	.vp-top__inner { padding-inline: 14px; }
	.vp-cards { grid-template-columns: repeat(2, 1fr); }
	.vp-panel { padding: 16px; }
	.vp-sec__body { padding: 14px; }
	.vp-sticky .vp-btn { flex: 1; min-width: 0; }
	.vp-media { grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); }
}

@media (max-width: 480px) {
	.vp-cards { grid-template-columns: 1fr; }
	.vp-auth__card { padding: 24px 18px; }
	.vp-rep__row { flex-wrap: wrap; }
}

@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { transition-duration: .01ms !important; }
}

/* ---------- panel locked ---------- */

.vp-locked {
	max-width: 520px;
	margin: 40px auto;
	padding: 36px 30px;
	text-align: center;
	background: var(--vp-surface);
	border: 1px solid var(--vp-line);
	border-radius: var(--vp-r-lg);
	box-shadow: var(--vp-shadow);
}

.vp-locked__icon {
	width: 52px;
	height: 52px;
	margin: 0 auto 16px;
	display: grid;
	place-items: center;
	font-size: 26px;
	font-weight: 700;
	color: var(--vp-err);
	background: var(--vp-err-bg);
	border-radius: 50%;
}

.vp-locked .vp-h1 { margin-bottom: 12px; }
.vp-locked__actions { margin-top: 22px; }

/* ---------- expiry meter ---------- */

.vp-expiry { display: flex; align-items: center; gap: 8px; margin-top: 6px; }

.vp-expiry__bar {
	flex: 1;
	height: 5px;
	overflow: hidden;
	background: var(--vp-line);
	border-radius: 999px;
}

.vp-expiry__fill { display: block; height: 100%; border-radius: 999px; background: var(--vp-ok); }
.vp-expiry--warn .vp-expiry__fill { background: #e0a800; }
.vp-expiry--over .vp-expiry__fill { background: var(--vp-err); }

/* ---------- سهمیهٔ فضای رسانه ---------- */

.vp-quota { margin-bottom: 18px; }

.vp-quota__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	flex-wrap: wrap;
	margin-bottom: 10px;
	font-size: 14px;
}

.vp-quota__nums { color: var(--vp-ink-soft); font-size: 13px; }

.vp-quota__bar {
	height: 8px;
	border-radius: 999px;
	background: var(--vp-line);
	overflow: hidden;
}

.vp-quota__fill {
	display: block;
	height: 100%;
	border-radius: 999px;
	background: var(--vp-ok);
	transition: width .3s ease;
}

.vp-quota--warn .vp-quota__fill { background: #e0a800; }
.vp-quota--full .vp-quota__fill { background: var(--vp-err); }

.vp-quota__note { margin: 10px 0 0; font-size: 13px; line-height: 1.9; color: var(--vp-ink-soft); }
.vp-quota--warn .vp-quota__note { color: var(--vp-warn); }
.vp-quota--full .vp-quota__note { color: var(--vp-err); }

/* ---------- پاپ‌آپ ---------- */

body.vp-modal-open { overflow: hidden; }

.vp-modal {
	position: fixed;
	inset: 0;
	z-index: 999;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 20px;
}

.vp-modal__backdrop {
	position: absolute;
	inset: 0;
	background: rgba(15, 20, 30, .5);
	backdrop-filter: blur(3px);
	-webkit-backdrop-filter: blur(3px);
}

.vp-modal__card {
	position: relative;
	width: 100%;
	max-width: 440px;
	max-height: 90vh;
	overflow-y: auto;
	padding: 26px 22px;
	background: var(--vp-surface);
	border-radius: var(--vp-r-lg);
	box-shadow: 0 24px 60px rgba(0, 0, 0, .25);
}

.vp-modal__title {
	margin: 0 0 14px;
	font-size: 17px;
	font-weight: 700;
	color: var(--vp-err);
}

.vp-quota__bar--modal { margin-bottom: 14px; }
.vp-modal .vp-quota__fill { background: var(--vp-err); }

.vp-modal__text {
	margin: 0 0 12px;
	font-size: 13.5px;
	line-height: 2;
	color: var(--vp-ink-soft);
}

.vp-modal__actions { display: grid; gap: 8px; margin-top: 18px; }

/* ─── پیام‌های مرکز در پیشخوان ─────────────────────────────── */

/* نوار رنگی سمت شروع، نه حاشیهٔ کامل: در چیدمان راست‌به‌چپ،
   inline-start خودش سمت راست می‌نشیند و لازم نیست دو قاعده
   بنویسیم. */
.vp-notice {
	position: relative;
	margin: 0 0 14px;
	padding: 16px 18px;
	background: var(--vp-surface);
	border: 1px solid var(--vp-line);
	border-inline-start: 4px solid var(--vp-brand);
	border-radius: var(--vp-r-sm);
	box-shadow: var(--vp-shadow);
}

.vp-notice__title {
	margin: 0 0 6px;
	font-size: 15px;
	font-weight: 700;
	color: var(--vp-ink);
}

.vp-notice__body { font-size: 13px; line-height: 1.9; color: var(--vp-ink-soft); }
.vp-notice__body p { margin: 0 0 8px; }
.vp-notice__body p:last-child { margin-bottom: 0; }
.vp-notice__body a { color: var(--vp-brand-dark); }

.vp-notice__actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px;
	margin-top: 12px;
}

.vp-notice__dismiss { margin: 0; padding: 0; }

.vp-notice--promo {
	border-inline-start-color: var(--vp-brand);
	background: var(--vp-brand-tint);
}

.vp-notice--warn {
	border-inline-start-color: var(--vp-warn);
	background: var(--vp-warn-bg);
}

.vp-notice--info { border-inline-start-color: var(--vp-ok); }

/* ─── توسعهٔ سایت: کارت قابلیت‌ها ───────────────────────────── */

.vp-addons {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
	gap: 14px;
	margin-bottom: 18px;
}

/* flex ستونی با mt:auto روی پاورقی، تا قیمت همهٔ کارت‌ها هم‌تراز
   بماند حتی وقتی توضیح‌ها طول متفاوت دارند. */
.vp-addon {
	display: flex;
	flex-direction: column;
	padding: 16px;
	background: var(--vp-surface);
	border: 1px solid var(--vp-line);
	border-radius: var(--vp-r-sm);
	box-shadow: var(--vp-shadow);
}

.vp-addon__icon { font-size: 26px; line-height: 1; }

.vp-addon__title {
	margin: 8px 0 4px;
	font-size: 14px;
	font-weight: 700;
	color: var(--vp-ink);
}

.vp-addon__summary {
	margin: 0;
	font-size: 12px;
	line-height: 1.9;
	color: var(--vp-ink-soft);
}

.vp-addon__foot {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px;
	margin-top: auto;
	padding-top: 14px;
}

.vp-addon__price { font-size: 14px; font-weight: 700; color: var(--vp-ink); }

.vp-addon__upsell {
	flex-basis: 100%;
	order: 3;
	font-size: 11px;
	color: var(--vp-brand-dark);
}

.vp-addon__on { font-size: 12px; font-weight: 700; color: var(--vp-ok); }

.vp-addon--on { background: var(--vp-ok-bg); border-color: var(--vp-ok); }

.vp-upsell { border-inline-start: 4px solid var(--vp-brand); }
.vp-upsell h2 { margin: 0 0 8px; font-size: 15px; }
.vp-upsell p { margin: 0 0 10px; font-size: 13px; line-height: 1.9; color: var(--vp-ink-soft); }

/* ─── ارزش سایت ────────────────────────────────────────────── */

.vp-value__total {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	justify-content: space-between;
	gap: 8px;
	padding-bottom: 14px;
	margin-bottom: 4px;
	border-bottom: 2px solid var(--vp-line);
}

.vp-value__label { font-size: 13px; color: var(--vp-ink-soft); }

.vp-value__amount {
	font-size: 22px;
	font-weight: 800;
	color: var(--vp-brand-dark);
}

.vp-value__table { width: 100%; border-collapse: collapse; }

.vp-value__table th {
	padding: 12px 0;
	font-size: 13px;
	font-weight: 600;
	text-align: start;
	color: var(--vp-ink);
	border-bottom: 1px solid var(--vp-line);
}

.vp-value__table td {
	padding: 12px 0;
	font-size: 13px;
	text-align: end;
	white-space: nowrap;
	color: var(--vp-ink);
	border-bottom: 1px solid var(--vp-line);
}

.vp-value__table tr:last-child th,
.vp-value__table tr:last-child td { border-bottom: 0; }

/* توضیح هر ردیف زیر عنوانش، نه کنارش: روی موبایل کنارِ هم بودن
   عنوان را به دو خط می‌شکست و جدول را بهم می‌ریخت. */
.vp-value__note {
	display: block;
	margin-top: 2px;
	font-size: 11px;
	font-weight: 400;
	color: var(--vp-ink-soft);
}

.vp-value__footer { border-inline-start: 4px solid var(--vp-brand); }
.vp-value__footer p { margin: 0 0 10px; font-size: 13px; line-height: 1.9; color: var(--vp-ink-soft); }

/* ─── صفحات سایت ───────────────────────────────────────────── */

/* نوار انتخاب صفحه در صفحات ویرایش. روی موبایل افقی اسکرول
   می‌شود تا با زیاد شدن صفحات، چیدمان نشکند. */
.vp-pagebar {
	display: flex;
	gap: 6px;
	margin: 0 0 16px;
	padding-bottom: 4px;
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
	scrollbar-width: thin;
}

.vp-pagebar a {
	flex: 0 0 auto;
	padding: 7px 14px;
	font-size: 12px;
	font-weight: 600;
	color: var(--vp-ink-soft);
	text-decoration: none;
	white-space: nowrap;
	background: var(--vp-surface);
	border: 1px solid var(--vp-line);
	border-radius: 999px;
}

.vp-pagebar a:hover { color: var(--vp-ink); }

.vp-pagebar a.is-on {
	color: #fff;
	background: var(--vp-brand);
	border-color: var(--vp-brand);
}

.vp-pages { width: 100%; border-collapse: collapse; }

.vp-pages th {
	padding: 14px 0;
	font-size: 13px;
	font-weight: 700;
	text-align: start;
	color: var(--vp-ink);
	border-bottom: 1px solid var(--vp-line);
}

.vp-pages td {
	padding: 14px 0;
	text-align: end;
	border-bottom: 1px solid var(--vp-line);
}

.vp-pages tr:last-child th,
.vp-pages tr:last-child td { border-bottom: 0; }

.vp-pages tr.is-off th { color: var(--vp-ink-soft); }

.vp-pages__note {
	display: block;
	margin-top: 3px;
	font-size: 11px;
	font-weight: 400;
	color: var(--vp-ink-soft);
}

.vp-pages__note code { direction: ltr; font-size: 11px; }

/* دکمه‌ها ممکن است در فرم‌های جدا باشند؛ flex روی سلول آنها را
   کنار هم و راست‌چین نگه می‌دارد. */
.vp-pages__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	justify-content: flex-end;
}

.vp-pages__form { display: inline; margin: 0; padding: 0; }

@media (max-width: 600px) {
	.vp-pages th,
	.vp-pages td { display: block; text-align: start; }
	.vp-pages th { border-bottom: 0; padding-bottom: 6px; }
	.vp-pages__actions { justify-content: flex-start; }
}

/* ============================================================
   ارسال‌ها: فیلتر و فهرست
   ============================================================ */

.vp-filters { display: grid; gap: 10px; padding: 14px 16px; }

.vp-filters__row {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 6px;
}

.vp-filters__label {
	font-size: 12px;
	font-weight: 700;
	color: var(--vp-ink-soft);
	margin-inline-end: 4px;
	/* عرض ثابت تا دو ردیف فیلتر زیر هم تراز بمانند. */
	min-width: 44px;
}

.vp-chip {
	display: inline-block;
	padding: 5px 12px;
	font-size: 12.5px;
	font-weight: 600;
	color: var(--vp-ink-soft);
	background: var(--vp-line-soft);
	border: 1px solid transparent;
	border-radius: 999px;
	text-decoration: none;
	transition: background .15s, color .15s;
}

.vp-chip:hover { background: var(--vp-line); color: var(--vp-ink); }

.vp-chip.is-on {
	color: #fff;
	background: var(--vp-brand);
	border-color: var(--vp-brand-dark);
}

/* ردیف «جدید» باید در یک نگاه از بقیه جدا باشد — کاری که صاحب
   کسب‌وکار صبح می‌کند همین است: پیدا کردن چیزهای رسیدگی‌نشده. */
.vp-lead-row--new { background: var(--vp-brand-tint); }
.vp-lead-row--done,
.vp-lead-row--void { color: var(--vp-ink-faint); }

.vp-lead-row__summary { max-width: 340px; }

.vp-lead-row__ref {
	display: inline-block;
	margin-inline-start: 6px;
	padding: 1px 7px;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: .5px;
	color: var(--vp-ink-soft);
	background: var(--vp-line-soft);
	border-radius: var(--vp-r-sm);
}

.vp-lead-row__more > summary {
	cursor: pointer;
	font-size: 12px;
	color: var(--vp-brand-dark);
	margin-top: 4px;
}

.vp-lead-row__dl {
	display: grid;
	grid-template-columns: auto 1fr;
	gap: 2px 10px;
	margin: 6px 0 0;
	font-size: 12px;
}

.vp-lead-row__dl dt { font-weight: 700; color: var(--vp-ink-soft); }
.vp-lead-row__dl dd { margin: 0; word-break: break-word; }

.vp-lead-row__status select {
	padding: 5px 8px;
	font: inherit;
	font-size: 12.5px;
	color: var(--vp-ink);
	background: var(--vp-surface);
	border: 1px solid var(--vp-line);
	border-radius: var(--vp-r-sm);
}

@media (max-width: 600px) {
	/*
	 * جدول هفت‌ستونه در موبایل خوانا نیست.
	 *
	 * نسخهٔ اول ستون‌های «خلاصه» و «مبلغ» را مخفی می‌کرد. غلط بود:
	 * جزئیات سفارش داخل همان ستون خلاصه است، پس روی گوشی — که صاحب
	 * کسب‌وکار بیشتر با آن پنل را باز می‌کند — سفارش عملاً نامرئی
	 * می‌شد.
	 *
	 * پس به‌جای پنهان‌کردن، همان الگوی جدول صفحات را می‌گیریم: هر
	 * سلول یک بلوک، و هیچ داده‌ای حذف نمی‌شود.
	 */
	.vp-table--leads thead { display: none; }

	.vp-table--leads tr {
		display: block;
		padding: 10px 0;
		border-bottom: 1px solid var(--vp-line);
	}

	.vp-table--leads td {
		display: block;
		text-align: start;
		border: 0;
		padding: 3px 12px;
	}

	.vp-lead-row__summary { max-width: none; }

	.vp-filters__label { min-width: 100%; }
}
