mirror of
https://github.com/zoo-apps/fund.git
synced 2026-10-30 14:57:02 +00:00
One family. Font stacks name Zen and fall back to the native faces, tokens name the role rather than a face, and the packages that used to supply a face now point at @hanzo/font. Self-hosted @font-face blocks are removed rather than renamed: rewriting the family in one would leave a src pointing at a file this repo no longer ships. @hanzo/font carries the binaries and declares the faces, so the local copies go with the declaration that used them. Comments naming a face we no longer use are deleted, not reworded.
274 lines
4.7 KiB
CSS
274 lines
4.7 KiB
CSS
@tailwind base;
|
|
@tailwind components;
|
|
@tailwind utilities;
|
|
|
|
* {
|
|
margin: 0;
|
|
padding: 0;
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
html {
|
|
scroll-behavior: smooth;
|
|
}
|
|
|
|
body {
|
|
font-family: Zen, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
|
|
background: #000000;
|
|
color: #ffffff;
|
|
line-height: 1.6;
|
|
padding-top: 0; /* Header is sticky, no need for padding */
|
|
}
|
|
|
|
@layer base {
|
|
:root {
|
|
--background: 0 0% 0%;
|
|
--foreground: 0 0% 100%;
|
|
--card: 0 0% 3%;
|
|
--card-foreground: 0 0% 100%;
|
|
--popover: 0 0% 3%;
|
|
--popover-foreground: 0 0% 100%;
|
|
--primary: 0 0% 100%;
|
|
--primary-foreground: 0 0% 0%;
|
|
--secondary: 0 0% 10%;
|
|
--secondary-foreground: 0 0% 100%;
|
|
--muted: 0 0% 10%;
|
|
--muted-foreground: 0 0% 60%;
|
|
--accent: 0 0% 10%;
|
|
--accent-foreground: 0 0% 100%;
|
|
--destructive: 0 62.8% 30.6%;
|
|
--destructive-foreground: 0 0% 100%;
|
|
--border: 0 0% 10%;
|
|
--input: 0 0% 10%;
|
|
--ring: 0 0% 100%;
|
|
--radius: 0.5rem;
|
|
}
|
|
}
|
|
|
|
@layer utilities {
|
|
.container {
|
|
max-width: 1200px;
|
|
margin: 0 auto;
|
|
padding: 0 16px;
|
|
}
|
|
|
|
@media (min-width: 640px) {
|
|
.container {
|
|
padding: 0 24px;
|
|
}
|
|
}
|
|
|
|
@media (min-width: 1024px) {
|
|
.container {
|
|
padding: 0 32px;
|
|
}
|
|
}
|
|
|
|
/* Responsive Typography Utilities */
|
|
.text-responsive-h1 {
|
|
font-size: 2.25rem; /* 36px */
|
|
line-height: 1.2;
|
|
}
|
|
|
|
@media (min-width: 640px) {
|
|
.text-responsive-h1 {
|
|
font-size: 3rem; /* 48px */
|
|
}
|
|
}
|
|
|
|
@media (min-width: 1024px) {
|
|
.text-responsive-h1 {
|
|
font-size: 3.75rem; /* 60px */
|
|
}
|
|
}
|
|
|
|
@media (min-width: 1280px) {
|
|
.text-responsive-h1 {
|
|
font-size: 4.5rem; /* 72px */
|
|
}
|
|
}
|
|
|
|
.text-responsive-h2 {
|
|
font-size: 1.875rem; /* 30px */
|
|
line-height: 1.3;
|
|
}
|
|
|
|
@media (min-width: 640px) {
|
|
.text-responsive-h2 {
|
|
font-size: 2.25rem; /* 36px */
|
|
}
|
|
}
|
|
|
|
@media (min-width: 1024px) {
|
|
.text-responsive-h2 {
|
|
font-size: 3rem; /* 48px */
|
|
}
|
|
}
|
|
|
|
.text-responsive-h3 {
|
|
font-size: 1.5rem; /* 24px */
|
|
line-height: 1.4;
|
|
}
|
|
|
|
@media (min-width: 640px) {
|
|
.text-responsive-h3 {
|
|
font-size: 1.875rem; /* 30px */
|
|
}
|
|
}
|
|
|
|
@media (min-width: 1024px) {
|
|
.text-responsive-h3 {
|
|
font-size: 2.25rem; /* 36px */
|
|
}
|
|
}
|
|
|
|
.text-responsive-body {
|
|
font-size: 1rem; /* 16px - prevents iOS zoom */
|
|
line-height: 1.6;
|
|
}
|
|
|
|
@media (min-width: 640px) {
|
|
.text-responsive-body {
|
|
font-size: 1.125rem; /* 18px */
|
|
}
|
|
}
|
|
|
|
/* Responsive Spacing Utilities */
|
|
.section-padding {
|
|
padding-top: 2rem; /* 32px */
|
|
padding-bottom: 2rem;
|
|
}
|
|
|
|
@media (min-width: 640px) {
|
|
.section-padding {
|
|
padding-top: 3rem; /* 48px */
|
|
padding-bottom: 3rem;
|
|
}
|
|
}
|
|
|
|
@media (min-width: 1024px) {
|
|
.section-padding {
|
|
padding-top: 4rem; /* 64px */
|
|
padding-bottom: 4rem;
|
|
}
|
|
}
|
|
|
|
.section-padding-lg {
|
|
padding-top: 3rem; /* 48px */
|
|
padding-bottom: 3rem;
|
|
}
|
|
|
|
@media (min-width: 640px) {
|
|
.section-padding-lg {
|
|
padding-top: 4rem; /* 64px */
|
|
padding-bottom: 4rem;
|
|
}
|
|
}
|
|
|
|
@media (min-width: 1024px) {
|
|
.section-padding-lg {
|
|
padding-top: 6rem; /* 96px */
|
|
padding-bottom: 6rem;
|
|
}
|
|
}
|
|
|
|
/* Touch Target Utilities */
|
|
.touch-target {
|
|
min-height: 44px;
|
|
min-width: 44px;
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
|
|
.touch-target-lg {
|
|
min-height: 48px;
|
|
min-width: 48px;
|
|
}
|
|
|
|
/* Mobile menu slide-in animation */
|
|
@keyframes slideInRight {
|
|
from {
|
|
transform: translateX(100%);
|
|
}
|
|
to {
|
|
transform: translateX(0);
|
|
}
|
|
}
|
|
|
|
.mobile-menu {
|
|
animation: slideInRight 0.3s ease-out;
|
|
}
|
|
|
|
/* Fade-in animation for page loads */
|
|
@keyframes fadeIn {
|
|
from {
|
|
opacity: 0;
|
|
transform: translateY(20px);
|
|
}
|
|
to {
|
|
opacity: 1;
|
|
transform: translateY(0);
|
|
}
|
|
}
|
|
|
|
@keyframes slideUp {
|
|
from {
|
|
opacity: 0;
|
|
transform: translateY(40px);
|
|
}
|
|
to {
|
|
opacity: 1;
|
|
transform: translateY(0);
|
|
}
|
|
}
|
|
|
|
@keyframes scaleIn {
|
|
from {
|
|
opacity: 0;
|
|
transform: scale(0.95);
|
|
}
|
|
to {
|
|
opacity: 1;
|
|
transform: scale(1);
|
|
}
|
|
}
|
|
|
|
.animate-fadeIn {
|
|
animation: fadeIn 0.6s ease-out forwards;
|
|
}
|
|
|
|
.animate-slideUp {
|
|
animation: slideUp 0.8s ease-out forwards;
|
|
}
|
|
|
|
.animate-scaleIn {
|
|
animation: scaleIn 0.5s ease-out forwards;
|
|
}
|
|
|
|
/* Staggered animation delays */
|
|
.delay-100 {
|
|
animation-delay: 0.1s;
|
|
}
|
|
|
|
.delay-200 {
|
|
animation-delay: 0.2s;
|
|
}
|
|
|
|
.delay-300 {
|
|
animation-delay: 0.3s;
|
|
}
|
|
|
|
.delay-400 {
|
|
animation-delay: 0.4s;
|
|
}
|
|
|
|
.delay-500 {
|
|
animation-delay: 0.5s;
|
|
}
|
|
|
|
.delay-600 {
|
|
animation-delay: 0.6s;
|
|
}
|
|
}
|