diff --git a/.dockerignore b/.dockerignore index 6e5e4ef..70a68db 100644 --- a/.dockerignore +++ b/.dockerignore @@ -2,12 +2,8 @@ node_modules .nuxt .output .git -.gitignore -app -server -shared -public *.md _dev.log .env* npm-debug.log* +logo.png diff --git a/.gitignore b/.gitignore index 747c121..2184146 100644 --- a/.gitignore +++ b/.gitignore @@ -6,7 +6,7 @@ node_modules/ .output/ .data/ dist -# out/ عمداً در git نگه داشته می‌شود (بیلد محلی → دیپلوی با Docker) +out/ # misc .DS_Store diff --git a/Dockerfile b/Dockerfile index f0cebb8..c43b092 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,8 @@ -FROM docker.arvancloud.ir/nginx:latest +# Static export is built on the host (`npm run build` → ./out) +# This image only serves the pre-built files via nginx. +FROM docker.arvancloud.ir/nginx:alpine -# خروجی static export (npm run build → پوشه out) COPY out /usr/share/nginx/html - COPY nginx.conf /etc/nginx/conf.d/default.conf EXPOSE 80 diff --git a/app/assets/css/main.css b/app/assets/css/main.css index 18b7384..d9f4489 100644 --- a/app/assets/css/main.css +++ b/app/assets/css/main.css @@ -1,20 +1,46 @@ @import "tailwindcss"; -/* ---- local fonts (replaces next/font/local) ---- - Same family names, fallback faces and metric overrides that next/font generated, so text - (including Persian glyphs inside font-mono, which fall back to the size-adjusted Arial face) - renders exactly as before. */ +/* ---- local fonts ---- */ @font-face { - font-family: "vazirmatn"; - src: url("/fonts/Vazirmatn-Variable.woff2") format("woff2"); - font-weight: 100 900; + font-family: "IRANSans"; + src: url("/fonts/IRANSansWeb_UltraLight.woff2") format("woff2"); + font-weight: 200; + font-style: normal; font-display: swap; } @font-face { - font-family: "vazirmatn Fallback"; + font-family: "IRANSans"; + src: url("/fonts/IRANSansWeb_Light.woff2") format("woff2"); + font-weight: 300; + font-style: normal; + font-display: swap; +} +@font-face { + font-family: "IRANSans"; + src: url("/fonts/IRANSansWeb.woff2") format("woff2"); + font-weight: 400; + font-style: normal; + font-display: swap; +} +@font-face { + font-family: "IRANSans"; + src: url("/fonts/IRANSansWeb_Medium.woff2") format("woff2"); + font-weight: 500; + font-style: normal; + font-display: swap; +} +@font-face { + font-family: "IRANSans"; + src: url("/fonts/IRANSansWeb_Bold.woff2") format("woff2"); + font-weight: 700; + font-style: normal; + font-display: swap; +} +@font-face { + font-family: "IRANSans Fallback"; src: local("Arial"); - ascent-override: 102.54%; - descent-override: 53.71%; + ascent-override: 100%; + descent-override: 35%; line-gap-override: 0%; size-adjust: 100%; } @@ -49,23 +75,23 @@ } :root { - --font-vazirmatn: "vazirmatn", "vazirmatn Fallback", Tahoma, system-ui, sans-serif; + --font-iransans: "IRANSans", "IRANSans Fallback", Tahoma, system-ui, sans-serif; --font-ibm-plex-mono: "ibmPlexMono", "ibmPlexMono Fallback", ui-monospace, monospace; } @theme { - --font-sans: var(--font-vazirmatn), ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif; /* font variables defined in :root above */ - --font-mono: var(--font-ibm-plex-mono), "Vazirmatn", ui-monospace, monospace; /* font variables defined in :root above */ + --font-sans: var(--font-iransans), ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif; + --font-mono: var(--font-ibm-plex-mono), "IRANSans", ui-monospace, monospace; - --color-bg: #0a0a0c; - --color-panel: #121216; - --color-panel-2: #17171c; + --color-bg: #0b1224; + --color-panel: #101a32; + --color-panel-2: #152040; --color-ink: #edede6; - --color-muted: #8e8e96; + --color-muted: #8e9ab0; --color-accent: #ff5a00; --color-accent-soft: #ff7a2a; --color-hazard: #ffb800; - --color-line: #232329; + --color-line: #1e2d4d; --animate-marquee: marquee 32s linear infinite; --animate-spin-slow: spin-slow 18s linear infinite; @@ -162,7 +188,7 @@ body { background: var(--color-bg); } ::-webkit-scrollbar-thumb { - background: #2c2c33; + background: #253558; border-radius: 8px; border: 2px solid var(--color-bg); } @@ -175,7 +201,7 @@ body { background-image: repeating-linear-gradient( -45deg, #ffb800 0 14px, - #0a0a0c 14px 28px + #0b1224 14px 28px ); } @@ -214,6 +240,6 @@ body { background-image: repeating-linear-gradient( 45deg, #ffb800 0 10px, - #0a0a0c 10px 20px + #0b1224 10px 20px ); } diff --git a/app/components/layout/Footer.vue b/app/components/layout/Footer.vue index d53f38a..d077692 100644 --- a/app/components/layout/Footer.vue +++ b/app/components/layout/Footer.vue @@ -1,24 +1,21 @@