Files
zeekay 6077652bec the face is Zen, and it ships from @hanzo/font
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.
2026-09-02 03:13:19 -07:00

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;
}
}