You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
325 lines
10 KiB
325 lines
10 KiB
@import url('https://cdn.jsdelivr.net/gh/rastikerdar/[email protected]/Vazirmatn-font-face.css');
|
|
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&family=JetBrains+Mono:wght@400;500;600;700;800&display=swap');
|
|
@import 'tailwindcss';
|
|
|
|
@font-face {
|
|
font-family: 'Vazirmatn';
|
|
src: url('/fonts/Vazirmatn-Regular.ttf') format('truetype');
|
|
font-weight: 400 500;
|
|
font-style: normal;
|
|
font-display: swap;
|
|
}
|
|
|
|
@font-face {
|
|
font-family: 'Vazirmatn';
|
|
src: url('/fonts/Vazirmatn-Bold.ttf') format('truetype');
|
|
font-weight: 600 700 800;
|
|
font-style: normal;
|
|
font-display: swap;
|
|
}
|
|
|
|
@custom-variant dark (&:where(.dark, .dark *));
|
|
|
|
/* ─── Dashboard Design Tokens → shadcn CSS variables (Dark) ─── */
|
|
:root {
|
|
--background: #18191d;
|
|
--foreground: #ffffff;
|
|
--card: #22252c;
|
|
--card-foreground: #ffffff;
|
|
--popover: #1e2128;
|
|
--popover-foreground: #ffffff;
|
|
--primary: #d09460; /* رنگ اصلی برند عقیله (برنز هویت بصری) */
|
|
--primary-foreground: #ffffff;
|
|
--secondary: #2c303b;
|
|
--secondary-foreground: #ebebeb;
|
|
--muted: #2c303b;
|
|
--muted-foreground: #8b8b8b;
|
|
--accent: #373c49;
|
|
--accent-foreground: #ffffff;
|
|
--destructive: #ef4444;
|
|
--border: rgba(255, 255, 255, 0.12);
|
|
--input: rgba(255, 255, 255, 0.06);
|
|
--ring: rgba(208, 148, 96, 0.55);
|
|
--radius: 14px;
|
|
|
|
/* پالت سایدبار و پنل کناری */
|
|
--sidebar: #131417;
|
|
--sidebar-foreground: #ebebeb;
|
|
--sidebar-primary: #d09460;
|
|
--sidebar-primary-foreground: #ffffff;
|
|
--sidebar-accent: rgba(255, 255, 255, 0.06);
|
|
--sidebar-accent-foreground: #ffffff;
|
|
--sidebar-border: rgba(255, 255, 255, 0.07);
|
|
--sidebar-ring: rgba(208, 148, 96, 0.55);
|
|
--sidebar-width: 240px;
|
|
--panel-width: 384px;
|
|
|
|
--red: #f87171;
|
|
--red-mid: #ef4444;
|
|
--red-dark: #dc2626;
|
|
--grey-1: #ebebeb;
|
|
--grey-2: #bcbcbc;
|
|
--grey-3: #8b8b8b;
|
|
--grey-4: #4d4d4d;
|
|
--border-soft: rgba(255, 255, 255, 0.07);
|
|
--g-primary: linear-gradient(135deg, #d09460, #a86e3d);
|
|
}
|
|
|
|
/* ─── Light Mode Tokens ─── */
|
|
html.light {
|
|
--background: #f8fafc;
|
|
--foreground: #0f172a;
|
|
--card: #ffffff;
|
|
--card-foreground: #0f172a;
|
|
--popover: #ffffff;
|
|
--popover-foreground: #0f172a;
|
|
--primary: #d09460;
|
|
--primary-foreground: #ffffff;
|
|
--secondary: #f1f5f9;
|
|
--secondary-foreground: #1e293b;
|
|
--muted: #f1f5f9;
|
|
--muted-foreground: #64748b;
|
|
--accent: #f1f5f9;
|
|
--accent-foreground: #0f172a;
|
|
--destructive: #ef4444;
|
|
--border: rgba(15, 23, 42, 0.12);
|
|
--input: rgba(15, 23, 42, 0.06);
|
|
--ring: rgba(208, 148, 96, 0.55);
|
|
|
|
--sidebar: #ffffff;
|
|
--sidebar-foreground: #1e293b;
|
|
--sidebar-primary: #d09460;
|
|
--sidebar-primary-foreground: #ffffff;
|
|
--sidebar-accent: rgba(15, 23, 42, 0.05);
|
|
--sidebar-accent-foreground: #0f172a;
|
|
--sidebar-border: rgba(15, 23, 42, 0.08);
|
|
--sidebar-ring: rgba(208, 148, 96, 0.55);
|
|
|
|
--grey-1: #0f172a;
|
|
--grey-2: #334155;
|
|
--grey-3: #64748b;
|
|
--grey-4: #94a3b8;
|
|
--border-soft: rgba(15, 23, 42, 0.08);
|
|
}
|
|
|
|
@theme inline {
|
|
--font-sans: 'Inter', 'Vazirmatn', system-ui, -apple-system, sans-serif;
|
|
--font-mono: 'Inter', 'Vazirmatn', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
|
|
--color-background: var(--background);
|
|
--color-foreground: var(--foreground);
|
|
--color-card: var(--card);
|
|
--color-card-foreground: var(--card-foreground);
|
|
--color-popover: var(--popover);
|
|
--color-popover-foreground: var(--popover-foreground);
|
|
--color-primary: var(--primary);
|
|
--color-primary-foreground: var(--primary-foreground);
|
|
--color-secondary: var(--secondary);
|
|
--color-secondary-foreground: var(--secondary-foreground);
|
|
--color-muted: var(--muted);
|
|
--color-muted-foreground: var(--muted-foreground);
|
|
--color-accent: var(--accent);
|
|
--color-accent-foreground: var(--accent-foreground);
|
|
--color-destructive: var(--destructive);
|
|
--color-border: var(--border);
|
|
--color-input: var(--input);
|
|
--color-ring: var(--ring);
|
|
--color-sidebar: var(--sidebar);
|
|
--color-sidebar-foreground: var(--sidebar-foreground);
|
|
--color-sidebar-primary: var(--sidebar-primary);
|
|
--color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
|
|
--color-sidebar-accent: var(--sidebar-accent);
|
|
--color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
|
|
--color-sidebar-border: var(--sidebar-border);
|
|
--color-sidebar-ring: var(--sidebar-ring);
|
|
--color-red: var(--red);
|
|
--color-red-mid: var(--red-mid);
|
|
--color-red-dark: var(--red-dark);
|
|
--color-grey-1: var(--grey-1);
|
|
--color-grey-2: var(--grey-2);
|
|
--color-grey-3: var(--grey-3);
|
|
--color-grey-4: var(--grey-4);
|
|
--color-border-soft: var(--border-soft);
|
|
--radius-sm: 11px;
|
|
--radius-md: 13px;
|
|
--radius-lg: 15px;
|
|
--radius-xl: 19px;
|
|
}
|
|
|
|
@layer base {
|
|
*, *::before, *::after {
|
|
@apply border-border outline-ring/50;
|
|
}
|
|
html {
|
|
direction: rtl;
|
|
font-family: 'Inter', 'Vazirmatn', system-ui, -apple-system, sans-serif;
|
|
font-feature-settings: 'tnum' 1, 'cv05' 1;
|
|
}
|
|
body {
|
|
@apply bg-background text-foreground antialiased;
|
|
font-family: 'Inter', 'Vazirmatn', system-ui, -apple-system, sans-serif;
|
|
font-size: 14px;
|
|
font-feature-settings: 'tnum' 1, 'cv05' 1;
|
|
}
|
|
table, thead, tbody, tfoot, tr, th, td {
|
|
font-family: 'Inter', 'Vazirmatn', system-ui, -apple-system, sans-serif !important;
|
|
}
|
|
input, button, select, optgroup, textarea, option {
|
|
font-family: 'Inter', 'Vazirmatn', system-ui, -apple-system, sans-serif !important;
|
|
}
|
|
.font-mono {
|
|
font-family: 'Inter', 'Vazirmatn', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace !important;
|
|
}
|
|
.tabular-nums, table td, table th, [class*="tabular-nums"] {
|
|
font-variant-numeric: tabular-nums;
|
|
font-feature-settings: 'tnum' 1, 'cv05' 1;
|
|
}
|
|
::-webkit-scrollbar {
|
|
width: 8px;
|
|
height: 8px;
|
|
}
|
|
::-webkit-scrollbar-thumb {
|
|
background: rgba(255, 255, 255, 0.14);
|
|
border-radius: 8px;
|
|
}
|
|
::-webkit-scrollbar-track {
|
|
background: transparent;
|
|
}
|
|
|
|
/* override autofill background (مرورگر زرد/سفید میکند) */
|
|
input:-webkit-autofill,
|
|
input:-webkit-autofill:focus {
|
|
-webkit-box-shadow: 0 0 0 1000px var(--card) inset !important;
|
|
-webkit-text-fill-color: var(--foreground) !important;
|
|
caret-color: var(--foreground);
|
|
}
|
|
}
|
|
|
|
@layer utilities {
|
|
.bg-g-primary {
|
|
background: var(--g-primary);
|
|
}
|
|
.bg-g-ai {
|
|
background: var(--g-ai);
|
|
}
|
|
.bg-g-progress {
|
|
background: var(--g-progress);
|
|
}
|
|
.bg-g-mic {
|
|
background: var(--g-mic);
|
|
}
|
|
.no-scrollbar::-webkit-scrollbar {
|
|
display: none;
|
|
}
|
|
.no-scrollbar {
|
|
scrollbar-width: none;
|
|
}
|
|
}
|
|
|
|
/* avatar gradient fills (person circles) — same palette as mockups */
|
|
.av-1 { background: linear-gradient(135deg, #cd4343, #6a1c1c); }
|
|
.av-2 { background: linear-gradient(135deg, #4e5467, #272b37); }
|
|
.av-3 { background: linear-gradient(135deg, #9d2121, #3b4050); }
|
|
.av-4 { background: linear-gradient(135deg, #a71919, #46141a); }
|
|
.av-5 { background: linear-gradient(135deg, #5b6378, #36363c); }
|
|
.av-6 { background: linear-gradient(135deg, #862222, #202227); }
|
|
|
|
/* cover gradient fills (cards / track covers) */
|
|
.c-1 { background: linear-gradient(150deg, #cd4343, #5a1414); }
|
|
.c-2 { background: linear-gradient(150deg, #3b4050, #16181d); }
|
|
.c-3 { background: linear-gradient(150deg, #9d2121, #2c1230); }
|
|
.c-4 { background: linear-gradient(150deg, #4e5467, #1d2027); }
|
|
.c-5 { background: linear-gradient(150deg, #862222, #1f0f0f); }
|
|
.c-6 { background: linear-gradient(150deg, #a71919, #3b4050); }
|
|
|
|
@keyframes slideIn {
|
|
from { transform: translateX(-24px); opacity: 0.4; }
|
|
to { transform: translateX(0); opacity: 1; }
|
|
}
|
|
@keyframes pop {
|
|
from { transform: scale(0.96); opacity: 0; }
|
|
to { transform: scale(1); opacity: 1; }
|
|
}
|
|
.anim-slide-in { animation: slideIn 0.22s ease; }
|
|
.anim-pop { animation: pop 0.18s ease; }
|
|
|
|
/* ─── Sheet (drawer) enter animations — per side، بدون نیاز به پلاگین animate ─── */
|
|
@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
|
|
@keyframes sheetInRight { from { transform: translateX(100%); } to { transform: translateX(0); } }
|
|
@keyframes sheetInLeft { from { transform: translateX(-100%); } to { transform: translateX(0); } }
|
|
@keyframes sheetInTop { from { transform: translateY(-100%); } to { transform: translateY(0); } }
|
|
@keyframes sheetInBottom { from { transform: translateY(100%); } to { transform: translateY(0); } }
|
|
@keyframes playerUp { from { transform: translateY(100%); opacity: 0.4; } to { transform: translateY(0); opacity: 1; } }
|
|
.anim-fade { animation: fadeIn 0.2s ease; }
|
|
.anim-sheet-right { animation: sheetInRight 0.28s cubic-bezier(0.32, 0.72, 0, 1); }
|
|
.anim-sheet-left { animation: sheetInLeft 0.28s cubic-bezier(0.32, 0.72, 0, 1); }
|
|
.anim-sheet-top { animation: sheetInTop 0.28s cubic-bezier(0.32, 0.72, 0, 1); }
|
|
.anim-sheet-bottom { animation: sheetInBottom 0.28s cubic-bezier(0.32, 0.72, 0, 1); }
|
|
|
|
/* ─── R3: NProgress bar — gradient حسینیه، ۳px، بدون spinner ─── */
|
|
#nprogress { pointer-events: none; }
|
|
#nprogress .bar {
|
|
position: fixed;
|
|
top: 0;
|
|
right: 0;
|
|
left: 0;
|
|
z-index: 1000;
|
|
height: 3px;
|
|
background: var(--g-progress);
|
|
}
|
|
#nprogress .peg {
|
|
display: block;
|
|
position: absolute;
|
|
left: 0;
|
|
width: 100px;
|
|
height: 100%;
|
|
box-shadow: 0 0 10px #ff4a4a, 0 0 5px #ff4a4a;
|
|
opacity: 1;
|
|
}
|
|
#nprogress .spinner { display: none; }
|
|
|
|
/* ─── Shimmer Wave Animation (Aligned with Flutter AppShimmer Neutral Slate Tokens) ─── */
|
|
@keyframes shimmerWave {
|
|
0% {
|
|
background-position: 200% 0;
|
|
}
|
|
100% {
|
|
background-position: -200% 0;
|
|
}
|
|
}
|
|
|
|
.shimmer-wave {
|
|
background: linear-gradient(
|
|
90deg,
|
|
#e2e8f0 0%,
|
|
#f8fafc 50%,
|
|
#e2e8f0 100%
|
|
);
|
|
background-size: 200% 100%;
|
|
animation: shimmerWave 1.5s infinite linear;
|
|
}
|
|
|
|
html.dark .shimmer-wave,
|
|
.dark .shimmer-wave {
|
|
background: linear-gradient(
|
|
90deg,
|
|
#22252c 0%,
|
|
#333742 50%,
|
|
#22252c 100%
|
|
);
|
|
background-size: 200% 100%;
|
|
animation: shimmerWave 1.5s infinite linear;
|
|
}
|
|
|
|
html.light .shimmer-wave,
|
|
.light .shimmer-wave {
|
|
background: linear-gradient(
|
|
90deg,
|
|
#e2e8f0 0%,
|
|
#f8fafc 50%,
|
|
#e2e8f0 100%
|
|
);
|
|
background-size: 200% 100%;
|
|
animation: shimmerWave 1.5s infinite linear;
|
|
}
|
|
|
|
|