/* @import url() FONT IMPORTS MUST ALWAYS BE AT THE VERY TOP OF THIS FILE, ABOVE THE TAILWIND IMPORTS — DO NOT DELETE THIS COMMENT */ /* CRITICAL: THE FOLLOWING TAILWIND IMPORTS MUST NEVER BE DELETED OR REORDERED — DO NOT DELETE THIS COMMENT */ @import 'tailwindcss/base'; @import 'tailwindcss/components'; @import 'tailwindcss/utilities'; /* END TAILWIND IMPORTS — ALL OTHER CSS MUST GO BELOW THIS LINE */ /* CSS پایهٔ مپ‌لیبر در شیت اصلی می‌ماند (نه در چانک تنبل نقشه). اگر با خودِ کامپوننت نقشه بار شود، روی موبایل/اتصال کند ممکن است کد نقشه پیش از رسیدن این فایل اجرا شود و .maplibregl-map (position/overflow) اعمال نشود — نتیجه: ظرف با ارتفاع صفر و نقشهٔ نامرئی. */ @import 'maplibre-gl/dist/maplibre-gl.css'; /* فونت سایت سلف‌هاست است (public/fonts) — هیچ وابستگی خارجی وجود ندارد. Pinar فونت اصلی است (۵ وزن) و Vazirmatn به‌عنوان جایگزین پشتیبان می‌ماند. نسخه انگلیسی از پشته فونت سیستمی لاتین استفاده می‌کند (Inter در صورت نصب بودن). */ @font-face { font-family: 'Pinar'; src: url('/fonts/pinar/Pinar-Light.woff2') format('woff2'), url('/fonts/pinar/Pinar-Light.ttf') format('truetype'); font-weight: 300; font-display: swap; } @font-face { font-family: 'Pinar'; src: url('/fonts/pinar/Pinar-Regular.woff2') format('woff2'), url('/fonts/pinar/Pinar-Regular.ttf') format('truetype'); font-weight: 400; font-display: swap; } @font-face { font-family: 'Pinar'; src: url('/fonts/pinar/Pinar-Bold.woff2') format('woff2'), url('/fonts/pinar/Pinar-Bold.ttf') format('truetype'); font-weight: 700; font-display: swap; } @font-face { font-family: 'Pinar'; src: url('/fonts/pinar/Pinar-ExtraBold.woff2') format('woff2'), url('/fonts/pinar/Pinar-ExtraBold.ttf') format('truetype'); font-weight: 800; font-display: swap; } @font-face { font-family: 'Pinar'; src: url('/fonts/pinar/Pinar-Black.woff2') format('woff2'), url('/fonts/pinar/Pinar-Black.ttf') format('truetype'); font-weight: 900; font-display: swap; } @font-face { font-family: 'Vazirmatn'; src: url('/fonts/Vazirmatn-Light.woff2') format('woff2'); font-weight: 300; font-display: swap; } @font-face { font-family: 'Vazirmatn'; src: url('/fonts/Vazirmatn-Regular.woff2') format('woff2'); font-weight: 400; font-display: swap; } @font-face { font-family: 'Vazirmatn'; src: url('/fonts/Vazirmatn-Bold.woff2') format('woff2'); font-weight: 700; font-display: swap; } html { scroll-behavior: smooth; } body { background-color: #27221c; color: #f5f3ef; font-family: 'Pinar', 'Vazirmatn', Tahoma, sans-serif; -webkit-font-smoothing: antialiased; } /* نسخه انگلیسی — فونت لاتین و تنوع‌سنجی (tracking) مناسب خط لاتین */ html[lang='en'] body { font-family: 'Inter', ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, Arial, sans-serif; letter-spacing: -0.01em; } /* حرف Q در فونت پینار به‌صورت O ترسیم شده (نقص خود فونت) — روی نسخه انگلیسی تمام عناصرِ font-pinar هم به فونت لاتین می‌روند تا Q درست رندر شود. */ html[lang='en'] .font-pinar { font-family: 'Inter', ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, Arial, sans-serif; } html[lang='en'] .article-body { line-height: 1.8; font-size: 17px; /* وبلاگ انگلیسی دو سه درجه بزرگ‌تر از فارسی */ } html[lang='en'] .article-body p { margin-top: 1.25rem; } html[lang='en'] .article-body h1, html[lang='en'] .article-body h2, html[lang='en'] .article-body h3 { line-height: 1.4; } /* هدینگ‌ها نسبت به متن ۱۷px انگلیسی بزرگ‌تر — همان نسبت نسخه فارسی */ html[lang='en'] .article-body h1 { font-size: 22px; } html[lang='en'] .article-body h2 { font-size: 19px; } html[lang='en'] .article-body h3 { font-size: 16px; } ::selection { background-color: #d5874c; color: #1e1a16; } @media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } } /* ---------- بدنه مقاله — رندر سند TipTap و ویرایشگر WYSIWYG ---------- */ .article-body { line-height: 2.4; word-wrap: break-word; font-size: 15px; /* متن اصلی — یک درجه بزرگ‌تر از قبل */ } .article-body p { margin-top: 1.75rem; color: rgba(245, 243, 239, 0.7); } .article-body > :first-child { margin-top: 0; } /* ---------- تایپوگرافی مقاله ---------- راست‌چین (فارسی): پایه ۱۴ / تیتر۱ ۱۸ / تیتر۲ ۱۶ / تیتر۳ ۱۴ چپ‌چین (انگلیسی): پایه ۱۲ / تیتر۱ ۱۶ / تیتر۲ ۱۴ / تیتر۳ ۱۲ جهت با data-dir روی پوسته ویرایشگر یا مقاله تعیین می‌شود. */ .article-body h1, .article-body h2, .article-body h3 { color: #f5f3ef; font-weight: 700; margin-top: 3rem; margin-bottom: 0.25rem; line-height: 1.9; /* فاصله از هدر چسبان هنگام پرش لنگرهای فهرست مطالب */ scroll-margin-top: 7rem; } .article-body h1 { font-size: 18px; } .article-body h2 { font-size: 16px; /* نوار مسی ندارد: نوار عمودی مسی نشانه اختصاصی نقل‌قول است و تیتر فقط با اندازه و وزن متمایز می‌شود تا با نقل‌قول اشتباه گرفته نشود. */ } .article-body h3 { font-size: 14px; } /* متن مقاله در هر دو زبان هم‌تراز (justify) است: لبه‌های راست و چپ یکدست می‌مانند. text-align: justify با direction درست، در فارسی و انگلیسی هر دو کار می‌کند. */ [data-dir='rtl'] .article-body { direction: rtl; text-align: justify; text-justify: inter-word; } [data-dir='ltr'] .article-body { direction: ltr; text-align: justify; text-justify: inter-word; font-size: 12px; } /* فقط تیترها هم‌تراز نمی‌شوند (تیتر کوتاه با justify کشیده و بدقلق می‌شود) — پاراگراف‌ها و فهرست‌ها کاملاً justify هستند و کپشن همیشه وسط‌چین است. */ [data-dir='rtl'] .article-body h1, [data-dir='rtl'] .article-body h2, [data-dir='rtl'] .article-body h3 { text-align: right; } [data-dir='ltr'] .article-body h1, [data-dir='ltr'] .article-body h2, [data-dir='ltr'] .article-body h3 { text-align: left; } [data-dir='ltr'] .article-body h1 { font-size: 16px; } [data-dir='ltr'] .article-body h2 { font-size: 14px; } [data-dir='ltr'] .article-body h3 { font-size: 12px; } /* ---------- تایپوگرافی دوزبانه (فارسی و لاتین در یک خط) ---------- متن لاتین همیشه ۲ پیکسل کوچک‌تر از متن فارسیِ همان بلوک است: تیتر۱ ۱۸→۱۶، تیتر۲ ۱۶→۱۴، تیتر۳ و پاراگراف ۱۴→۱۲. calc(1em - 2px) نسبت به اندازه همان بلوک حساب می‌شود، پس قاعده در همه سطح‌ها درست می‌ماند و خط پایه هم جابه‌جا نمی‌شود (line-height نسبی است). در مقاله انگلیسی (data-dir=ltr) پایه همان اندازه کوچک‌تر است و واژه‌های فارسی ۲ پیکسل بزرگ‌تر می‌شوند تا تفاضل همیشه ۲ پیکسل بماند. */ .article-body .latin, .article-body .persian, .article-body .english-text { unicode-bidi: isolate; } .article-body .latin, .article-body .english-text { font-size: calc(1em - 2px); } .article-body .persian { font-size: 1em; } [data-dir='ltr'] .article-body .latin, [data-dir='ltr'] .article-body .english-text { font-size: 1em; } [data-dir='ltr'] .article-body .persian { font-size: calc(1em + 2px); } .article-body span[data-small="true"] { font-size: 12px; /* مارک اختصاصی برای سایز ۱۲ - انگلیسی */ } /* مارک «متن انگلیسی» ویرایشگر — چپ‌به‌راست و ۱۲ پیکسل بدون به‌هم‌زدن جهت متن فارسی */ .english-text { direction: ltr; unicode-bidi: isolate; /* اندازه از قواعد دوزبانه بالا می‌آید: ۲ پیکسل کوچک‌تر از متن فارسی همان بلوک */ } .article-body ul, .article-body ol { margin-top: 1.5rem; padding-inline-start: 1.5rem; } .article-body ul { list-style: disc; } .article-body ol { list-style: decimal; } .article-body li { margin-top: 0.6rem; color: rgba(245, 243, 239, 0.7); } .article-body li > p { margin-top: 0; display: inline; } /* نقل‌قول و هر بلاک تو در تو داخل آیتم فهرست — بلاکی بماند تا پاراگراف‌ها یکی نشوند */ .article-body li blockquote p { display: block; margin-top: 0; } .article-body li blockquote p + p { margin-top: 0.75rem; } .article-body blockquote { margin-top: 2rem; border-inline-start: 3px solid #d5874c; background: rgba(30, 26, 22, 0.5); padding: 1rem 1.25rem; font-style: normal; color: rgba(245, 243, 239, 0.85); } .article-body blockquote p { margin-top: 0; color: inherit; } /* پاراگراف‌های داخل نقل‌قول (متن/شخص/نقش) از هم جدا دیده شوند — بدون این، چند پاراگراف پشت‌سرهم یک بلاک یکسره به نظر می‌رسند */ .article-body blockquote p + p { margin-top: 0.75rem; } /* پاراگراف‌های خالی‌ای که موقع تایپ نقل‌قول جا می‌مانند — خط خالی اضافه رندر نکنند */ .article-body blockquote p:empty { display: none; } .article-body a { color: #d5874c; text-decoration: underline; text-underline-offset: 4px; } .article-body img { width: 100%; margin-top: 2rem; border: 1px solid rgba(245, 243, 239, 0.1); object-fit: cover; } /* فهرست مطالب: اسکرول بدون نوار اسکرول — چرخ ماوس و لمس کار می‌کنند */ .no-scrollbar { scrollbar-width: none; /* Firefox */ -ms-overflow-style: none; /* IE/Edge legacy */ } .no-scrollbar::-webkit-scrollbar { display: none; /* Chrome / Safari / Edge */ } /* ---------- تصویر کپشن‌دار:
---------- */ .article-body figure { margin-top: 2rem; } .article-body figure img { margin-top: 0; } .article-body figcaption { margin-top: 0.7rem; color: rgba(245, 243, 239, 0.5); font-size: 0.85em; line-height: 1.9; text-align: center; } /* ویرایشگر: کپشن ورودی و دکمه حذف زیر تصویر */ [data-wysiwyg] .article-figure-node { margin: 1.25rem 0; } [data-wysiwyg] .article-figure__caption { display: flex; align-items: center; gap: 0.5rem; margin-top: 0.6rem; /* تراز از جهت بلوک پیروی می‌کند — در مقاله انگلیسی چپ و در فارسی راست */ text-align: start; } /* متن کپشن در ویرایشگر هم وسط‌چین است تا با خروجی سایت یکی باشد */ [data-wysiwyg] .article-figure__caption input[type='text'] { text-align: center; } [data-wysiwyg] .article-figure-node.is-selected .article-figure { outline: 1px dashed rgba(213, 135, 76, 0.8); outline-offset: 3px; } .article-body strong { color: #f5f3ef; font-weight: 700; } .article-body hr { margin-top: 2.5rem; border: 0; height: 1px; background: rgba(245, 243, 239, 0.12); } .article-body code { background: rgba(30, 26, 22, 0.7); padding: 0.15rem 0.45rem; font-size: 0.85em; } .article-body pre { background: rgba(30, 26, 22, 0.7); padding: 1rem 1.25rem; margin-top: 1.5rem; overflow-x: auto; direction: ltr; text-align: left; } .article-body pre code { background: transparent; padding: 0; } /* ---------- تقویم شمسی (react-multi-date-picker) — تم تیره با لهجه مسی ---------- */ .aramesh-datepicker.rmdp-wrapper { width: max-content; border: 1px solid rgba(245, 243, 239, 0.12); border-radius: 0; background-color: #1e1a16; color: #f5f3ef; box-shadow: 0 24px 50px -18px rgba(0, 0, 0, 0.75); } .aramesh-datepicker .rmdp-calendar { padding: 8px; } .aramesh-datepicker .rmdp-header-values { color: #d5874c; font-size: 13px; font-weight: 700; } .aramesh-datepicker .rmdp-arrow { border-color: #d5874c; } .aramesh-datepicker .rmdp-arrow-container { box-shadow: none; } .aramesh-datepicker .rmdp-arrow-container:hover { background-color: rgba(213, 135, 76, 0.2); box-shadow: none; } .aramesh-datepicker .rmdp-week-day { color: rgba(245, 243, 239, 0.45); font-size: 11px; font-weight: 400; } .aramesh-datepicker .rmdp-day { color: rgba(245, 243, 239, 0.85); } .aramesh-datepicker .rmdp-day span { border-radius: 0; } .aramesh-datepicker .rmdp-day:hover:not(.rmdp-disabled):not(.rmdp-selected) span { background-color: rgba(213, 135, 76, 0.16); color: #d5874c; } .aramesh-datepicker .rmdp-day.rmdp-selected span:not(.highlight) { background-color: #d5874c; color: #1e1a16; font-weight: 700; box-shadow: none; } .aramesh-datepicker .rmdp-day.rmdp-today span { background-color: rgba(213, 135, 76, 0.25); color: #f5f3ef; } .aramesh-datepicker .rmdp-day.rmdp-deactive { color: rgba(245, 243, 239, 0.22); } .aramesh-datepicker .rmdp-day.rmdp-disabled { color: rgba(245, 243, 239, 0.12); } .aramesh-datepicker .rmdp-month-picker, .aramesh-datepicker .rmdp-year-picker { background-color: #1e1a16; border-radius: 0; } .aramesh-datepicker .rmdp-panel { background-color: #1e1a16; } .aramesh-datepicker .rmdp-panel-body li { background-color: rgba(213, 135, 76, 0.15); color: #f5f3ef; box-shadow: none; } .aramesh-datepicker .rmdp-action-button { color: #d5874c; } /* ---------- نقشه مپ‌لیبر — کنترل‌ها و پاپ‌آپ هم‌رنگ تم تیره ---------- */ .lux-map-popup .maplibregl-popup-content { background: transparent; padding: 0; border-radius: 1rem; box-shadow: none; } /* دم پاپ‌آپ — هم‌رنگ کارت شیشه‌ای */ .lux-map-popup .maplibregl-popup-tip { border-top-color: #1e1a16; } .maplibregl-ctrl-group { overflow: hidden; border: 1px solid rgba(245, 243, 239, 0.14); border-radius: 0.75rem !important; background: rgba(30, 26, 22, 0.85) !important; box-shadow: 0 12px 30px rgba(0, 0, 0, 0.45) !important; backdrop-filter: blur(10px); } .maplibregl-ctrl-group button { width: 34px; height: 34px; background-color: transparent !important; } .maplibregl-ctrl-group button:hover { background-color: rgba(213, 135, 76, 0.16) !important; } .maplibregl-ctrl-group button + button { border-top: 1px solid rgba(245, 243, 239, 0.12) !important; } /* آیکون‌های پیش‌فرض کنترل‌ها تیره‌اند — با اینورتر روشن می‌شوند */ .maplibregl-ctrl-group button .maplibregl-ctrl-icon { filter: invert(0.92); } .maplibregl-ctrl-attrib.maplibregl-compact { border-radius: 0.75rem; background: rgba(30, 26, 22, 0.85); color: rgba(245, 243, 239, 0.55); font-size: 10px; } .maplibregl-ctrl-attrib a { color: rgba(213, 135, 76, 0.9); } .maplibregl-ctrl-attrib-button { filter: invert(0.92); } .maplibregl-ctrl-scale { border-color: rgba(245, 243, 239, 0.35); border-radius: 2px; background: rgba(30, 26, 22, 0.7); color: rgba(245, 243, 239, 0.6); font-size: 10px; } /* ---------- ورود نرم کارت پاپ‌آپ و حالت تمام‌صفحه ---------- */ @keyframes luxPopupIn { from { opacity: 0; transform: translateY(6px) scale(0.98); } to { opacity: 1; transform: none; } } @keyframes luxFadeIn { from { opacity: 0; } to { opacity: 1; } } /* ---------- جدول در بدنه مقاله و ویرایشگر ---------- */ .article-body table, .ProseMirror table { width: 100%; table-layout: fixed; border-collapse: collapse; margin-top: 1.5rem; font-size: 0.92em; overflow: hidden; } .ProseMirror td, .ProseMirror th { position: relative; box-sizing: border-box; } .ProseMirror .column-resize-handle { position: absolute; top: 0; bottom: -1px; left: -2px; width: 4px; z-index: 20; background-color: rgba(213, 135, 76, 0.6); pointer-events: none; } .ProseMirror.resize-cursor { cursor: col-resize; } .ProseMirror .selectedCell::after { content: ''; position: absolute; z-index: 2; inset: 0; background: rgba(213, 135, 76, 0.12); pointer-events: none; } .article-body th, .article-body td, .ProseMirror th, .ProseMirror td { border: 1px solid rgba(245, 243, 239, 0.18); padding: 0.5rem 0.75rem; text-align: start; vertical-align: top; } .article-body th, .ProseMirror th { background: rgba(213, 135, 76, 0.12); font-weight: 700; color: #f5f3ef; } .ProseMirror td > p, .ProseMirror th > p { margin: 0; }