/* =========================================================   فونت محلی — پوشه‌ی fonts/ کنار index.html   فونت متغیر: یک فایل، همه‌ی وزن‌ها (۱۰۰ تا ۹۰۰)   ترتیب src: ابتدا woff2 (سبک‌تر)، سپس ttf به‌عنوان جایگزین   ========================================================= */@font-face {  font-family: "Vazirmatn RD";  src: url("fonts/Vazirmatn-RD%5Bwght%5D.woff2") format("woff2-variations"),       url("fonts/Vazirmatn-RD%5Bwght%5D.ttf")   format("truetype-variations");  font-weight: 100 900;  font-style: normal;  font-display: swap;}/* =========================================================   Vivid Visual — Template Pack Page   Theme: Instagram-inspired · clean · restrained · RTL   ========================================================= */:root {  /* ---- بستر تیره‌ی خنثی ---- */  --bg:        #0e0e11;  --bg-2:      #17171b;  --ink:       #f2f2f5;  --muted:     #a2a2ad;  --faint:     #6d6d78;  --glass:     rgba(255, 255, 255, 0.04);  --glass-brd: rgba(255, 255, 255, 0.10);  /* ---- لهجه‌ی رنگی اینستاگرام (محدود و تمیز) ---- */  --ig-purple: #8134af;  --ig-pink:   #dd2a7b;  --ig-orange: #f58529;  --grad:      linear-gradient(120deg, var(--ig-orange), var(--ig-pink) 52%, var(--ig-purple));  --radius:    20px;  --radius-sm: 14px;  --maxw:      1180px;  /* ریتم عمودی خودکار و ریسپانسیو */  --space-section: clamp(48px, 8vw, 96px);  --space-block:   clamp(36px, 6vw, 64px);  --space-item:    clamp(14px, 2.2vw, 22px);  --ease:      cubic-bezier(.22, .61, .36, 1);}* { box-sizing: border-box; }html, body { margin: 0; padding: 0; }body {  font-family: "Vazirmatn RD", "Vazirmatn", system-ui, -apple-system, "Segoe UI", Tahoma, sans-serif;  background: var(--bg);  color: var(--ink);  line-height: 1.7;  -webkit-font-smoothing: antialiased;  text-rendering: optimizeLegibility;  overflow-x: hidden;  min-height: 100vh;}/* هاله‌ی محیطی بسیار ملایم و ثابت (بدون حرکت، بدون اغراق) */body::before {  content: "";  position: fixed;  inset: 0;  z-index: 0;  pointer-events: none;  background:    radial-gradient(1100px 560px at 88% -8%, rgba(221, 42, 123, .10), transparent 60%),    radial-gradient(900px 500px at 6% 108%, rgba(129, 52, 175, .08), transparent 60%);}.wrap {  position: relative;  z-index: 1;  max-width: var(--maxw);  margin-inline: auto;  padding-inline: clamp(18px, 4vw, 48px);}/* بدنه‌ی اصلی: فاصله‌گذاری خودکار و ریسپانسیو بین بخش‌ها (مستقل از وجود/نبود هر بخش) */main.wrap {  display: flex;  flex-direction: column;  gap: var(--space-section);  padding-block: clamp(30px, 5vw, 60px);}/* ================= HEADER ================= */.site-header {  position: sticky;  top: 0;  z-index: 50;  background: rgba(14, 14, 17, .72);  backdrop-filter: blur(16px);  -webkit-backdrop-filter: blur(16px);  border-bottom: 1px solid var(--glass-brd);}.header-inner {  display: flex;  align-items: center;  justify-content: space-between;  padding-block: 12px;  gap: 16px;}.brand {  display: inline-flex;  align-items: center;  gap: 11px;  text-decoration: none;  transition: opacity .25s var(--ease);}.brand:hover { opacity: .85; }.brand__logo {  height: 32px;  width: auto;  display: block;}.brand__name {  font-weight: 800;  font-size: 1.16rem;  letter-spacing: -.01em;  color: var(--ink);  line-height: 1;}/* ================= HERO (دوبخشی) ================= */.hero {  display: grid;  grid-template-columns: 1fr 1.02fr; /* در RTL: ستون اول = راست (کاور) */  gap: clamp(22px, 3.6vw, 46px);  align-items: center;}/* رسانه (کاور) — سمت راست، کامل و بریده‌نشده */.hero__media {  position: relative;  border-radius: var(--radius);  overflow: hidden;  background: var(--bg-2);  border: 1px solid var(--glass-brd);  box-shadow: 0 22px 55px rgba(0, 0, 0, .45);}.hero__media img {  display: block;  width: 100%;  height: auto;  max-height: clamp(300px, 46vh, 470px);  object-fit: contain;  object-position: center;}/* لبه‌ی گرادیانی بسیار نازک دور کاور */.hero__media::after {  content: "";  position: absolute;  inset: 0;  border-radius: inherit;  padding: 1px;  background: var(--grad);  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);  -webkit-mask-composite: xor;  mask-composite: exclude;  opacity: .35;  pointer-events: none;}/* متن — سمت چپ */.hero__inner {  display: flex;  flex-direction: column;  align-items: flex-start;  gap: var(--space-item);}.hero__inner .download { margin-top: clamp(4px, 1vw, 10px); }.eyebrow {  display: inline-flex;  align-items: center;  gap: 8px;  font-size: .82rem;  font-weight: 600;  letter-spacing: .03em;  color: var(--muted);  background: var(--glass);  border: 1px solid var(--glass-brd);  padding: 6px 14px;  border-radius: 999px;  margin-bottom: 0;}.eyebrow::before {  content: "";  width: 7px; height: 7px;  border-radius: 50%;  background: var(--ig-pink);  box-shadow: 0 0 8px 1px rgba(221, 42, 123, .55);}.title {  margin: 0;  font-weight: 900;  font-size: clamp(1.9rem, 4.6vw, 3.2rem);  line-height: 1.2;  letter-spacing: -.01em;  color: var(--ink);}.subtitle {  margin: 0;  font-size: clamp(1rem, 1.7vw, 1.18rem);  font-weight: 400;  color: var(--muted);  max-width: 54ch;}/* ---- دکمه دانلود: قرص گرادیانی تمیز (سبک اینستاگرام) ---- */.download {  display: inline-flex;  align-items: center;  gap: 11px;  font-family: inherit;  font-size: 1.05rem;  font-weight: 700;  color: #fff;  text-decoration: none;  padding: 14px 30px;  border-radius: 999px;  border: 0;  background: var(--grad);  box-shadow: 0 8px 22px rgba(221, 42, 123, .26);  transition: transform .3s var(--ease), box-shadow .3s var(--ease), filter .3s var(--ease);}.download:hover, .download:focus-visible {  transform: translateY(-2px);  box-shadow: 0 12px 30px rgba(221, 42, 123, .40);  filter: brightness(1.05);  outline: none;}.download__icon { width: 21px; height: 21px; flex: none; stroke: #fff; }/* ================= GALLERY ================= */.gallery-section { margin: 0; }.section-head {  display: flex;  align-items: baseline;  gap: 16px;  margin-bottom: var(--space-item);}.gallery-title {  margin: 0;  font-size: clamp(1.4rem, 3.2vw, 2.1rem);  font-weight: 800;  color: var(--ink);}.section-head .rule {  flex: 1;  height: 1px;  background: linear-gradient(90deg, var(--glass-brd), transparent);}.count-pill {  font-size: .82rem;  font-weight: 600;  color: var(--faint);  font-variant-numeric: tabular-nums;  white-space: nowrap;}/* ستون‌های واقعی: توزیع ردیف‌محور با JS تا ردیف آخر از راست پر شود */.masonry {  display: flex;  align-items: flex-start;  gap: 18px;}.mcol {  flex: 1 1 0;  min-width: 0;  display: flex;  flex-direction: column;  gap: 18px;}@media (max-width: 720px) {  .masonry { gap: 14px; }  .mcol { gap: 14px; }}.tile {  display: block;  width: 100%;  margin: 0;  padding: 0;  border: 0;  background: var(--bg-2);  border-radius: var(--radius-sm);  overflow: hidden;  cursor: zoom-in;  position: relative;  box-shadow: 0 6px 20px rgba(0, 0, 0, .32);  transition: transform .35s var(--ease), box-shadow .35s var(--ease);  isolation: isolate;}.tile img {  display: block;  width: 100%;  height: auto;  border-radius: inherit;  transition: transform .5s var(--ease);  background: var(--bg-2);}.tile::after {  content: "";  position: absolute;  inset: 0;  border-radius: inherit;  padding: 1px;  background: var(--grad);  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);  -webkit-mask-composite: xor;  mask-composite: exclude;  opacity: 0;  transition: opacity .35s var(--ease);  pointer-events: none;}.tile:hover, .tile:focus-visible {  transform: translateY(-4px);  box-shadow: 0 16px 36px rgba(221, 42, 123, .18);  outline: none;}.tile:hover img, .tile:focus-visible img { transform: scale(1.05); }.tile:hover::after, .tile:focus-visible::after { opacity: .8; }.tile .zoom {  position: absolute;  inset-block-start: 10px;  inset-inline-end: 10px;  width: 34px; height: 34px;  display: grid;  place-items: center;  border-radius: 50%;  background: rgba(14, 14, 17, .62);  backdrop-filter: blur(6px);  opacity: 0;  transform: scale(.8);  transition: opacity .3s var(--ease), transform .3s var(--ease);}.tile .zoom svg { width: 16px; height: 16px; stroke: #fff; }.tile:hover .zoom, .tile:focus-visible .zoom { opacity: 1; transform: scale(1); }/* ================= BLOCKS (ویدئو / تک‌عکس) ================= */.blocks-wrap {  display: flex;  flex-direction: column;  gap: var(--space-block);}.block {  display: flex;  flex-direction: column;  align-items: flex-start;  gap: var(--space-item);}.block__title {  margin: 0;  font-size: clamp(1.4rem, 3.2vw, 2.1rem);  font-weight: 800;  color: var(--ink);}/* پاراگراف متن — هم‌عرضِ کادر صفحه */.block__text {  margin: 0;  width: 100%;  max-width: none;  align-self: stretch;  color: var(--muted);  font-size: clamp(1rem, 1.6vw, 1.1rem);  line-height: 1.9;}/* دانلودهای زیرِ کاور */.hero-downloads {  display: flex;  flex-direction: column;  gap: var(--space-item);}.hero-downloads[hidden] { display: none; }/* دانلودهای چندپارتی — زیرِ هم و هم‌عرضِ کادر صفحه */.downloads-list {  display: flex;  flex-direction: column;  align-items: stretch;  align-self: stretch;  gap: 12px;  width: 100%;}/* دکمه‌های دانلودِ داخل بلوک‌ها تمام‌عرض و وسط‌چین می‌شوند */.block > .download,.downloads-list .download {  width: 100%;  justify-content: center;  text-align: center;}/* ویدئوی ریسپانسیو: نسبت ثابت (پیش‌فرض ۱۶:۹، قابل override با فیلد aspect) */.block__video {  width: 100%;  aspect-ratio: 16 / 9;  border-radius: var(--radius);  overflow: hidden;  background: #000;  border: 1px solid var(--glass-brd);  box-shadow: 0 16px 40px rgba(0, 0, 0, .4);}.block__video video {  display: block;  width: 100%;  height: 100%;  object-fit: contain; /* بدون برش */  background: #000;}/* تک‌عکس ریسپانسیو */.block__image {  margin: 0;  width: 100%;  border-radius: var(--radius);  overflow: hidden;  background: var(--bg-2);  border: 1px solid var(--glass-brd);  box-shadow: 0 16px 40px rgba(0, 0, 0, .4);}.block__image img {  display: block;  width: 100%;  height: auto;}.block__image figcaption {  padding: 12px 16px;  color: var(--muted);  font-size: .9rem;}/* ================= FOOTER ================= */.site-footer {  position: relative;  z-index: 1;  border-top: 1px solid var(--glass-brd);  background: rgba(14, 14, 17, .55);  backdrop-filter: blur(12px);  -webkit-backdrop-filter: blur(12px);}.footer-inner {  display: flex;  flex-wrap: wrap;  align-items: center;  justify-content: space-between;  gap: 20px 28px;  padding-block: 30px;}.social {  display: flex;  align-items: center;  gap: 12px;}.social a {  display: grid;  place-items: center;  width: 46px;  height: 46px;  border-radius: 50%;  background: var(--glass);  border: 1px solid var(--glass-brd);  color: var(--muted);  text-decoration: none;  transition: transform .28s var(--ease), color .28s var(--ease),              border-color .28s var(--ease), box-shadow .28s var(--ease);}.social a:hover, .social a:focus-visible {  color: #fff;  border-color: rgba(221, 42, 123, .5);  box-shadow: 0 0 0 1px rgba(221, 42, 123, .35), 0 10px 24px rgba(221, 42, 123, .22);  transform: translateY(-2px);  outline: none;}.social a svg { width: 21px; height: 21px; }/* ================= LOADING / ERROR ================= */.state {  min-height: 70vh;  display: grid;  place-items: center;  text-align: center;  padding: 40px 20px;  position: relative;  z-index: 1;}.state[hidden] { display: none; }.spinner {  width: 46px; height: 46px;  border-radius: 50%;  border: 3px solid rgba(255, 255, 255, .12);  border-top-color: var(--ig-pink);  animation: spin 900ms linear infinite;  margin: 0 auto 18px;}@keyframes spin { to { transform: rotate(360deg); } }.state p { color: var(--muted); margin: 6px 0 0; }.error-card {  max-width: 560px;  background: var(--glass);  border: 1px solid var(--glass-brd);  backdrop-filter: blur(14px);  border-radius: var(--radius);  padding: 34px;  text-align: start;}.error-card h2 { margin: 0 0 12px; font-size: 1.3rem; color: var(--ink); }.error-card p { margin: 0 0 14px; color: var(--muted); }.error-card code {  display: block;  direction: ltr;  text-align: left;  background: #05050a;  border: 1px solid var(--glass-brd);  border-radius: 10px;  padding: 12px 14px;  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;  font-size: .86rem;  color: var(--ig-pink);  margin-top: 8px;}.error-card code.inline { display: inline; padding: 2px 6px; margin: 0; }/* ================= LIGHTBOX ================= */.lightbox {  position: fixed;  inset: 0;  z-index: 100;  display: grid;  place-items: center;  background: rgba(6, 6, 10, .84);  backdrop-filter: blur(10px);  -webkit-backdrop-filter: blur(10px);  opacity: 0;  visibility: hidden;  transition: opacity .3s var(--ease), visibility .3s var(--ease);}.lightbox.open { opacity: 1; visibility: visible; }.lb__stage {  max-width: min(92vw, 1100px);  max-height: 86vh;  display: grid;  place-items: center;  transform: scale(.96);  transition: transform .35s var(--ease);}.lightbox.open .lb__stage { transform: scale(1); }.lb__img {  max-width: 100%;  max-height: 86vh;  border-radius: 12px;  box-shadow: 0 24px 80px rgba(0, 0, 0, .6), 0 0 0 1px rgba(221, 42, 123, .3);  background: var(--bg-2);}.lb__btn {  position: absolute;  display: grid;  place-items: center;  width: 52px; height: 52px;  border-radius: 50%;  border: 1px solid var(--glass-brd);  background: var(--glass);  backdrop-filter: blur(10px);  color: #fff;  cursor: pointer;  transition: transform .25s var(--ease), background .25s var(--ease), box-shadow .25s var(--ease);}.lb__btn:hover, .lb__btn:focus-visible {  background: rgba(221, 42, 123, .22);  box-shadow: 0 0 0 1px rgba(221, 42, 123, .45);  transform: scale(1.06);  outline: none;}.lb__btn svg { width: 22px; height: 22px; stroke: currentColor; }.lb__close { top: 20px; inset-inline-end: 20px; }.lb__next { inset-inline-start: 20px; top: 50%; transform: translateY(-50%); }.lb__prev { inset-inline-end: 20px; top: 50%; transform: translateY(-50%); }.lb__next:hover, .lb__prev:hover { transform: translateY(-50%) scale(1.06); }.lb__counter {  position: absolute;  inset-block-end: 22px;  inset-inline: 0;  text-align: center;  color: var(--muted);  font-size: .9rem;  font-variant-numeric: tabular-nums;  letter-spacing: .05em;}/* ================= RESPONSIVE / A11Y ================= */@media (max-width: 820px) {  .hero { grid-template-columns: 1fr; }  .hero__media { order: -1; }               /* موبایل: کاور بالا، متن پایین */  .hero__media img { max-height: clamp(240px, 40vh, 380px); }}:focus-visible { outline: 2px solid var(--ig-pink); outline-offset: 3px; }@media (prefers-reduced-motion: reduce) {  *, *::before, *::after {    animation-duration: .001ms !important;    animation-iteration-count: 1 !important;    transition-duration: .001ms !important;  }}.visually-hidden {  position: absolute; width: 1px; height: 1px;  padding: 0; margin: -1px; overflow: hidden;  clip: rect(0 0 0 0); white-space: nowrap; border: 0;}/* ================= ظرافت‌های مدرن ================= */html { scroll-behavior: smooth; }/* شکستِ خطِ متعادل برای عنوان‌ها و خوش‌فرم برای پاراگراف‌ها */.title, .block__title { text-wrap: balance; }.subtitle, .block__text { text-wrap: pretty; }/* دانلود چندپارتی: فاصله‌ی کمی فشرده‌تر روی موبایل */@media (max-width: 560px) {  .downloads-list { gap: 10px; }}