@import "tailwindcss"; /* ---- local fonts ---- */ @font-face { font-family: "IRANSans"; src: url("/fonts/IRANSansWebFaNum_UltraLight.woff2") format("woff2"); font-weight: 200; font-style: normal; font-display: swap; } @font-face { font-family: "IRANSans"; src: url("/fonts/IRANSansWebFaNum_Light.woff2") format("woff2"); font-weight: 300; font-style: normal; font-display: swap; } @font-face { font-family: "IRANSans"; src: url("/fonts/IRANSansWebFaNum.woff2") format("woff2"); font-weight: 400; font-style: normal; font-display: swap; } @font-face { font-family: "IRANSans"; src: url("/fonts/IRANSansWebFaNum_Medium.woff2") format("woff2"); font-weight: 500; font-style: normal; font-display: swap; } @font-face { font-family: "IRANSans"; src: url("/fonts/IRANSansWebFaNum_Bold.woff2") format("woff2"); font-weight: 700; font-style: normal; font-display: swap; } @font-face { font-family: "IRANSans"; src: url("/fonts/IRANSansWebFaNum_Black.woff2") format("woff2"); font-weight: 900; font-style: normal; font-display: swap; } :root { --font-iransans: "IRANSans", sans-serif; } @theme { --font-sans: var(--font-iransans); --font-mono: var(--font-iransans); --color-bg: #0b1224; --color-panel: #101a32; --color-panel-2: #152040; --color-ink: #edede6; --color-muted: #8e9ab0; --color-accent: #ff5a00; --color-accent-soft: #ff7a2a; --color-hazard: #ffb800; --color-line: #1e2d4d; --animate-marquee: marquee 32s linear infinite; --animate-spin-slow: spin-slow 18s linear infinite; --animate-blink: blink 1.1s steps(2, start) infinite; --animate-fade-up: fade-up 1s cubic-bezier(0.22, 1, 0.36, 1) both; @keyframes marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } } @keyframes spin-slow { to { transform: rotate(360deg); } } @keyframes blink { to { visibility: hidden; } } @keyframes fade-up { from { opacity: 0; transform: translateY(44px); } to { opacity: 1; transform: translateY(0); } } } /* added for migration: CSS-only entrance animation for Hero (no JS dependency, content visible in server HTML) */ .animate-fade-up-1 { animation: var(--animate-fade-up); animation-delay: 0.15s; } .animate-fade-up-2 { animation: var(--animate-fade-up); animation-delay: 0.28s; } .animate-fade-up-3 { animation: var(--animate-fade-up); animation-delay: 0.42s; } .animate-fade-up-4 { animation: var(--animate-fade-up); animation-delay: 0.55s; } .animate-fade-up-5 { animation: var(--animate-fade-up); animation-delay: 0.68s; } .animate-fade-up-6 { animation: var(--animate-fade-up); animation-delay: 0.7s; } .animate-fade-up-7 { animation: var(--animate-fade-up); animation-delay: 0.82s; } .animate-fade-up-8 { animation: var(--animate-fade-up); animation-delay: 0.9s; } .animate-fade-up-9 { animation: var(--animate-fade-up); animation-delay: 1s; } html { scroll-behavior: smooth; } body { background-color: var(--color-bg); color: var(--color-ink); overflow-x: hidden; } ::selection { background: var(--color-accent); color: var(--color-bg); } ::-webkit-scrollbar { width: 10px; } ::-webkit-scrollbar-track { background: var(--color-bg); } ::-webkit-scrollbar-thumb { background: #253558; border-radius: 8px; border: 2px solid var(--color-bg); } ::-webkit-scrollbar-thumb:hover { background: var(--color-accent); } /* ---- hazard tape (yellow/black diagonal stripes) ---- */ .hazard { background-image: repeating-linear-gradient( -45deg, #ffb800 0 14px, #0b1224 14px 28px ); } /* ---- blueprint grid ---- */ .bg-grid { background-image: linear-gradient(to left, rgba(237, 237, 230, 0.045) 1px, transparent 1px), linear-gradient(to bottom, rgba(237, 237, 230, 0.045) 1px, transparent 1px); background-size: 72px 72px; } .bg-grid-fine { background-image: linear-gradient(to left, rgba(237, 237, 230, 0.03) 1px, transparent 1px), linear-gradient(to bottom, rgba(237, 237, 230, 0.03) 1px, transparent 1px); background-size: 28px 28px; } /* ---- film grain ---- */ .noise { position: fixed; inset: 0; z-index: 90; pointer-events: none; opacity: 0.05; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"); } /* ---- outlined display text ---- */ .text-outline { color: transparent; -webkit-text-stroke: 1px rgba(237, 237, 230, 0.16); } /* ---- vertical safety tape strip ---- */ .tape-v { background-image: repeating-linear-gradient( 45deg, #ffb800 0 10px, #0b1224 10px 20px ); } /* ---- hide scrollbar utility ---- */ .no-scrollbar::-webkit-scrollbar { display: none; } .no-scrollbar { -ms-overflow-style: none; scrollbar-width: none; } /* ---- button icon alignment & gap ---- */ .ant-btn { display: inline-flex !important; align-items: center !important; justify-content: center !important; gap: 8px !important; } .ant-btn > .anticon, .ant-btn > .vx-icon, .ant-btn > .ant-btn-icon { display: inline-flex !important; align-items: center !important; justify-content: center !important; line-height: 0 !important; vertical-align: middle !important; }