Files
peikarband/assets/custom.css
Ehsan.Asadi b884ab435c
Some checks failed
CD - Build & Deploy / build-and-push (push) Has been cancelled
CD - Build & Deploy / package-helm (push) Has been cancelled
CD - Build & Deploy / deploy-staging (push) Has been cancelled
CD - Build & Deploy / deploy-production (push) Has been cancelled
CD - Build & Deploy / release (push) Has been cancelled
CI / test (3.11) (push) Has been cancelled
CI / test (3.12) (push) Has been cancelled
CI / security (push) Has been cancelled
[PROD-001] feat: Complete production deployment setup
 Fixed critical issues:
- Fixed .dockerignore to include assets (logo.png, banner-3.gif, custom.css)
- Added psutil dependency for metrics endpoint
- Connected health check endpoints to Reflex app

 Added complete CI/CD pipeline:
- Woodpecker.yml with 11 stages (lint, build, scan, deploy)
- Harbor registry integration
- ArgoCD automated deployment
- Kubernetes health checks

 Enhanced security:
- Multi-stage Docker build
- Non-root user container
- Security scanning ready
- Network policies configured

 Complete documentation:
- Production deployment guide (50+ pages)
- Quick start guide (10 minutes)
- Deployment checklist
- Changelog

🚀 Production ready with automated GitOps deployment!

ApprovalToken: PROD-001
2025-12-27 01:49:49 +03:30

228 lines
4.9 KiB
CSS

@import url('https://fonts.googleapis.com/css2?family=Vazirmatn:wght@100..900&display=swap');
body {
font-family: 'Vazirmatn', sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
@keyframes gradientShift {
0% { background-position: 0% 50%; }
50% { background-position: 100% 50%; }
100% { background-position: 0% 50%; }
}
@keyframes glow {
0% { box-shadow: 0 12px 40px rgba(27, 75, 127, 0.6), inset 0 1px 0 rgba(255, 255, 255, 0.2); }
50% { box-shadow: 0 18px 50px rgba(27, 75, 127, 0.8), inset 0 1px 0 rgba(255, 255, 255, 0.3); }
100% { box-shadow: 0 12px 40px rgba(27, 75, 127, 0.6), inset 0 1px 0 rgba(255, 255, 255, 0.2); }
}
@keyframes pulse {
0% { transform: scale(1); opacity: 1; }
50% { transform: scale(1.05); opacity: 0.8; }
100% { transform: scale(1); opacity: 1; }
}
@keyframes float {
0%, 100% { transform: translateY(0px); }
50% { transform: translateY(-20px); }
}
@keyframes floatSlow {
0%, 100% { transform: translateY(0px) translateX(0px); }
25% { transform: translateY(-15px) translateX(10px); }
50% { transform: translateY(-30px) translateX(0px); }
75% { transform: translateY(-15px) translateX(-10px); }
}
@keyframes rotate {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
@keyframes scaleFloat {
0%, 100% { transform: scale(1) translateY(0px); }
50% { transform: scale(1.05) translateY(-15px); }
}
@keyframes fadeInUp {
0% {
opacity: 0;
transform: translateY(60px) scale(0.9);
}
100% {
opacity: 1;
transform: translateY(0) scale(1);
}
}
@keyframes fadeInScale {
0% {
opacity: 0;
transform: scale(0.8);
}
100% {
opacity: 1;
transform: scale(1);
}
}
@keyframes slideInRight {
0% {
opacity: 0;
transform: translateX(100px);
}
100% {
opacity: 1;
transform: translateX(0);
}
}
@keyframes fadeInRight {
0% {
opacity: 0;
transform: translate3d(100%, 0, 0);
}
100% {
opacity: 1;
transform: translate3d(0, 0, 0);
}
}
@keyframes fadeInDown {
0% {
opacity: 0;
transform: translate3d(0, -100%, 0);
}
100% {
opacity: 1;
transform: translate3d(0, 0, 0);
}
}
@keyframes floatComplex {
0%, 100% {
transform: translateY(0px) translateX(0px) rotate(0deg);
}
25% {
transform: translateY(-20px) translateX(15px) rotate(5deg);
}
50% {
transform: translateY(-35px) translateX(5px) rotate(-3deg);
}
75% {
transform: translateY(-18px) translateX(-12px) rotate(4deg);
}
}
@keyframes rotateSubtle {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
@keyframes scaleBreath {
0%, 100% {
transform: scale(1);
opacity: 0.7;
}
50% {
transform: scale(1.1);
opacity: 0.9;
}
}
@keyframes floatDiagonal {
0%, 100% {
transform: translate(0, 0);
}
50% {
transform: translate(-25px, -25px);
}
}
@keyframes bobFloat {
0%, 100% {
transform: translateY(0px) scale(1);
}
50% {
transform: translateY(-25px) scale(1.05);
}
}
/* Smooth scroll behavior */
html {
scroll-behavior: smooth;
}
/* Custom scrollbar */
::-webkit-scrollbar {
width: 12px;
}
::-webkit-scrollbar-track {
background: #0a1428;
}
::-webkit-scrollbar-thumb {
background: linear-gradient(135deg, #1B4B7F, #4DB8C4);
border-radius: 6px;
}
::-webkit-scrollbar-thumb:hover {
background: linear-gradient(135deg, #4DB8C4, #6DD7E5);
}
/* Selection color */
::selection {
background: rgba(77, 184, 196, 0.3);
color: #FFFFFF;
}
::-moz-selection {
background: rgba(77, 184, 196, 0.3);
color: #FFFFFF;
}
/* WordPress Section Floating Icons Animations */
.wp-icon-1 {
animation: fadeInScale 1s ease-out 0.5s backwards, bobFloat 8s ease-in-out 2s infinite;
}
.wp-icon-2 {
animation: fadeInScale 1s ease-out 1s backwards, floatDiagonal 9s ease-in-out 2.5s infinite;
}
.wp-icon-3 {
animation: fadeInScale 1s ease-out 1.5s backwards, float 7s ease-in-out 3s infinite reverse;
}
.wp-icon-4 {
animation: fadeInScale 1s ease-out 2s backwards, scaleBreath 9s ease-in-out 3.5s infinite;
}
.wp-icon-5 {
animation: fadeInScale 1s ease-out 2.5s backwards, floatComplex 10s ease-in-out 4s infinite;
}
.wp-icon-6 {
animation: fadeInScale 1s ease-out 3s backwards, rotateSubtle 40s linear 4s infinite, bobFloat 8s ease-in-out 4.5s infinite;
}
.wp-card-1 {
animation: fadeInScale 1s ease-out 3.5s backwards, float 7s ease-in-out 5s infinite;
}
.wp-card-2 {
animation: fadeInScale 1s ease-out 4s backwards, float 8s ease-in-out 5.5s infinite reverse;
}
.wp-card-3 {
animation: fadeInScale 1s ease-out 4.5s backwards, float 6s ease-in-out 6s infinite;
}