Files
miracles_in_motion/src/index.css
T
defiQUGandCursor 6c0de165d3 P0: mim-api, live conversion paths, and CWV sprint to ~2.56s LCP.
Ship VMID 7811 API (assistance, contact, Stripe checkout), wire donate and forms to API with accessible success UI, static LCP shell with deferred React mount, and perf gate tooling (P0 72/2600ms; world-class 85/2500ms tracked separately).

Co-authored-by: Cursor <[email protected]>
2026-06-15 23:42:45 -07:00

683 lines
16 KiB
CSS

/* Self-hosted fonts — trimmed weights for faster LCP */
@import "@fontsource/inter/400.css";
@import "@fontsource/inter/500.css";
@import "@fontsource/inter/600.css";
@import "@fontsource/playfair-display/700.css";
@tailwind base;
@tailwind components;
@tailwind utilities;
/* Official MIM brand palette (logo: forest green + gold) */
:root {
--mim-brand-green: #1a3c34;
--mim-brand-green-deep: #0f2922;
--mim-brand-green-mid: #2d6b5c;
--mim-brand-gold: #c5a059;
--mim-brand-gold-bright: #d4af37;
--mim-cream: #faf8f5;
--mim-warm-beige: #f5f0e8;
--mim-warm-white: #fffefb;
--mim-focus-ring: var(--mim-brand-green-deep);
--mim-eyebrow-text: #7d6232;
--mim-shadow-brand: rgba(26, 60, 52, 0.28);
--mim-shadow-gold: rgba(197, 160, 89, 0.32);
}
.dark {
--mim-focus-ring: var(--mim-brand-gold-bright);
}
@layer base {
html {
scroll-behavior: smooth;
}
.skip-link {
position: absolute;
top: -100px;
left: 0.5rem;
z-index: 100;
padding: 0.75rem 1rem;
background: var(--mim-brand-green);
color: #fff;
font-weight: 500;
border-radius: 0.5rem;
transition: top 0.2s;
}
.skip-link:focus {
top: 0.5rem;
outline: 2px solid var(--mim-brand-gold);
outline-offset: 2px;
}
body {
font-family: "Inter", ui-sans-serif, system-ui, sans-serif;
font-feature-settings: 'rlig' 1, 'calt' 1;
background-color: var(--mim-cream);
background-image: linear-gradient(
180deg,
var(--mim-warm-white) 0%,
var(--mim-cream) 40%,
var(--mim-warm-beige) 100%
);
background-attachment: fixed;
}
html.dark body {
background: #0a0f0e;
background-image: none;
}
.mim-warm-section {
background: linear-gradient(
180deg,
rgba(250, 248, 245, 0.6) 0%,
rgba(245, 240, 232, 0.9) 100%
);
}
.dark .mim-warm-section {
background: transparent;
}
.foundation-page .section-title {
font-family: "Playfair Display", Georgia, serif;
}
::-webkit-scrollbar {
width: 8px;
}
::-webkit-scrollbar-track {
background: rgba(255, 255, 255, 0.1);
border-radius: 4px;
}
::-webkit-scrollbar-thumb {
background: linear-gradient(135deg, var(--mim-brand-green), var(--mim-brand-gold));
border-radius: 4px;
}
::-webkit-scrollbar-thumb:hover {
background: linear-gradient(135deg, var(--mim-brand-green-deep), var(--mim-brand-gold-bright));
}
}
@layer components {
/* Brand logos: nav lockups use transparent /brand/logo-*-nav.*; print/social use opaque PNGs */
.logo-mark {
display: inline-flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
line-height: 0;
}
.logo-mark__img,
.logo-mark__img-wrap {
display: block;
line-height: 0;
}
.logo-mark__img {
object-fit: contain;
object-position: left center;
}
.logo-mark__img-wrap--horizontal .logo-mark__img--horizontal {
display: block;
height: 100%;
width: auto;
filter: drop-shadow(0 1px 1px rgb(15 41 34 / 0.12));
}
/* Nav: symbol on mobile, transparent horizontal lockup on md+ */
.logo-mark--nav {
height: 3.25rem;
}
.logo-mark--nav .logo-mark__img-wrap--symbol,
.logo-mark--nav .logo-mark__img--symbol {
height: 100%;
width: auto;
max-width: 3.5rem;
filter: drop-shadow(0 1px 1px rgb(15 41 34 / 0.1));
}
.logo-mark--nav .logo-mark__img-wrap--symbol .logo-mark__img--symbol {
height: 100%;
width: auto;
}
@media (min-width: 768px) {
.logo-mark--nav {
height: 4.25rem;
}
.logo-mark--nav .logo-mark__img-wrap--horizontal {
height: 100%;
max-width: min(20rem, 48vw);
}
.logo-mark--nav .logo-mark__img--horizontal {
max-width: min(20rem, 48vw);
}
}
@media (min-width: 1024px) {
.logo-mark--nav {
height: 4.5rem;
}
.logo-mark--nav .logo-mark__img-wrap--horizontal,
.logo-mark--nav .logo-mark__img--horizontal {
max-width: 21rem;
}
}
@media (min-width: 1280px) {
.logo-mark--nav {
height: 4.75rem;
}
.logo-mark--nav .logo-mark__img-wrap--horizontal,
.logo-mark--nav .logo-mark__img--horizontal {
max-width: 23rem;
}
}
/* Footer: symbol on xs, transparent horizontal on sm+ (same assets as nav) */
.logo-mark--footer {
height: 2.75rem;
}
.logo-mark--footer .logo-mark__img-wrap--symbol,
.logo-mark--footer .logo-mark__img--symbol {
height: 100%;
width: auto;
max-width: 3.25rem;
filter: drop-shadow(0 1px 1px rgb(15 41 34 / 0.1));
}
.logo-mark--footer .logo-mark__img-wrap--symbol .logo-mark__img--symbol {
height: 100%;
width: auto;
}
.logo-mark--footer .logo-mark__img-wrap--horizontal {
height: 100%;
max-width: min(12rem, 80vw);
}
.logo-mark--footer .logo-mark__img--horizontal {
height: 100%;
width: auto;
max-width: min(12rem, 80vw);
}
@media (min-width: 640px) {
.logo-mark--footer {
height: 3.25rem;
}
.logo-mark--footer .logo-mark__img-wrap--horizontal,
.logo-mark--footer .logo-mark__img--horizontal {
max-width: 14rem;
}
}
@media (min-width: 1024px) {
.logo-mark--footer {
height: 3.5rem;
}
.logo-mark--footer .logo-mark__img-wrap--horizontal,
.logo-mark--footer .logo-mark__img--horizontal {
max-width: 16rem;
}
}
.logo-mark--square {
width: 2.5rem;
height: 2.5rem;
border-radius: 0.375rem;
overflow: hidden;
box-shadow: 0 1px 3px rgb(15 41 34 / 0.25);
}
.logo-mark--square .logo-mark__img {
width: 100%;
height: 100%;
object-fit: cover;
}
.nav-brand-link {
display: inline-flex;
align-items: center;
flex-shrink: 0;
padding: 0.125rem 0.375rem 0.125rem 0;
margin-right: 0.25rem;
border-radius: 0.5rem;
transition: opacity 0.2s ease;
}
/* Keep logo column aligned with max-w-7xl page grid (matches hero px) */
.mim-site-nav {
align-items: center;
}
@media (min-width: 1024px) {
.mim-site-nav {
min-height: 4.5rem;
padding-top: 0.375rem;
padding-bottom: 0.375rem;
}
}
/* Hero sits flush under sticky header — no full-viewport vertical centering gap */
.hero-section {
margin-top: 0;
}
.nav-brand-link:hover {
opacity: 0.9;
}
.nav-brand-link:focus-visible {
outline: 2px solid var(--mim-focus-ring);
outline-offset: 3px;
}
.footer-brand-block {
display: flex;
flex-direction: column;
gap: 0.75rem;
}
.footer-brand-block .footer-tagline {
font-size: 0.875rem;
color: #52525b;
max-width: 20rem;
}
.dark .footer-brand-block .footer-tagline {
color: #d4d4d8;
}
.btn-primary {
display: inline-flex;
align-items: center;
gap: 0.5rem;
border-radius: 9999px;
background-image: linear-gradient(
to right,
var(--mim-brand-green),
var(--mim-brand-green-mid),
var(--mim-brand-gold)
);
padding-left: 1.5rem;
padding-right: 1.5rem;
padding-top: 0.75rem;
padding-bottom: 0.75rem;
font-size: 0.875rem;
font-weight: 500;
color: #fff;
box-shadow: 0 10px 15px -3px var(--mim-shadow-brand), 0 4px 6px -4px var(--mim-shadow-gold);
transition: transform 0.2s, box-shadow 0.2s;
outline: none;
}
.btn-primary:hover {
transform: scale(1.05);
box-shadow: 0 20px 25px -5px var(--mim-shadow-brand), 0 8px 10px -6px var(--mim-shadow-gold);
}
.btn-primary:focus {
outline: none;
box-shadow: 0 0 0 2px var(--mim-focus-ring), 0 10px 15px -3px var(--mim-shadow-brand);
}
.btn-primary:focus-visible {
outline: 2px solid var(--mim-focus-ring);
outline-offset: 2px;
}
.btn-secondary {
display: inline-flex;
align-items: center;
gap: 0.5rem;
border-radius: 9999px;
border: 1px solid #d4d4d8;
background-color: rgba(255, 255, 255, 0.7);
padding-left: 1.5rem;
padding-right: 1.5rem;
padding-top: 0.75rem;
padding-bottom: 0.75rem;
font-size: 0.875rem;
font-weight: 500;
color: #52525b;
backdrop-filter: blur(8px);
transition: background 0.2s, box-shadow 0.2s, border-color 0.2s;
outline: none;
}
.btn-secondary:hover {
background-color: #fff;
border-color: var(--mim-brand-gold);
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);
}
.btn-secondary:focus {
outline: none;
box-shadow: 0 0 0 2px var(--mim-brand-green), 0 10px 15px -3px rgba(0, 0, 0, 0.1);
}
.btn-secondary:focus-visible {
outline: 2px solid var(--mim-brand-green);
outline-offset: 2px;
}
.dark .btn-secondary {
border: 1px solid rgba(255, 255, 255, 0.2);
background-color: rgba(255, 255, 255, 0.1);
color: #e5e5e5;
}
.dark .btn-secondary:hover {
background-color: rgba(255, 255, 255, 0.2);
border-color: var(--mim-brand-gold);
}
.btn-white {
display: inline-flex;
align-items: center;
gap: 0.5rem;
border-radius: 9999px;
background-color: #fff;
padding-left: 1.5rem;
padding-right: 1.5rem;
padding-top: 0.75rem;
padding-bottom: 0.75rem;
font-size: 0.875rem;
font-weight: 500;
color: var(--mim-brand-green-deep);
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);
transition: transform 0.2s, box-shadow 0.2s;
outline: none;
}
.btn-white:hover {
transform: scale(1.05);
box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1);
}
.btn-white:focus-visible {
outline: 2px solid var(--mim-brand-gold);
outline-offset: 2px;
}
.navlink {
font-size: 0.875rem;
font-weight: 500;
transition: color 0.2s;
}
.input-field {
width: 100%;
border-radius: 0.75rem;
border: 1px solid #d1d5db;
background-color: #fff;
padding: 0.75rem 1rem;
font-size: 0.875rem;
color: #111827;
transition: border-color 0.2s, box-shadow 0.2s;
}
.input-field::placeholder {
color: #6b7280;
opacity: 1;
}
.input-field:focus {
border-color: var(--mim-brand-green);
outline: none;
box-shadow: 0 0 0 2px var(--mim-brand-green), 0 0 0 4px rgba(26, 60, 52, 0.15);
}
.input-field:focus-visible {
outline: 2px solid var(--mim-brand-green);
outline-offset: 2px;
}
.dark .input-field {
border: 1px solid #4b5563;
background-color: #1f2937;
color: #f3f4f6;
}
.dark .input-field:focus {
border-color: var(--mim-brand-gold);
}
.line-clamp-2 {
display: -webkit-box;
-webkit-line-clamp: 2;
line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
}
.line-clamp-3 {
display: -webkit-box;
-webkit-line-clamp: 3;
line-clamp: 3;
-webkit-box-orient: vertical;
overflow: hidden;
}
.input {
width: 100%;
border-radius: 0.75rem;
border: 1px solid rgba(255, 255, 255, 0.3);
background-color: rgba(255, 255, 255, 0.7);
padding: 0.5rem 0.75rem;
font-size: 0.875rem;
backdrop-filter: blur(8px);
transition: border-color 0.2s, box-shadow 0.2s;
outline: none;
}
.input:focus {
border-color: var(--mim-brand-green);
outline: none;
box-shadow: 0 0 0 2px var(--mim-brand-green), 0 0 0 4px rgba(26, 60, 52, 0.15);
}
.input:focus-visible {
outline: 2px solid var(--mim-brand-green);
outline-offset: 2px;
}
.dark .input {
border: 1px solid rgba(255, 255, 255, 0.1);
background-color: rgba(255, 255, 255, 0.1);
color: #f3f4f6;
}
.dark .input::placeholder {
color: #9ca3af;
}
.dark .input:focus {
border-color: var(--mim-brand-gold);
}
.card {
border-radius: 1rem;
border: 1px solid rgba(255, 255, 255, 0.3);
background-color: rgba(255, 255, 255, 0.7);
padding: 1.5rem;
box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1);
backdrop-filter: blur(8px);
}
.dark .card {
border: 1px solid rgba(255, 255, 255, 0.1);
background-color: rgba(255, 255, 255, 0.05);
color: #e5e5e5;
}
.card-hover {
transition: transform 0.2s, box-shadow 0.2s;
}
.card-hover:hover {
transform: translateY(-0.25rem);
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25), 0 8px 10px -6px rgba(0, 0, 0, 0.1);
}
.section-header {
margin-left: auto;
margin-right: auto;
max-width: 48rem;
text-align: center;
}
.section-eyebrow {
font-size: 0.875rem;
text-transform: uppercase;
letter-spacing: 0.12em;
color: var(--mim-eyebrow-text);
font-weight: 600;
}
.dark .section-eyebrow {
color: var(--mim-brand-gold-bright);
}
.section-title {
margin-top: 0.5rem;
font-family: "Playfair Display", Georgia, "Times New Roman", serif;
font-size: 1.875rem;
font-weight: 700;
letter-spacing: -0.025em;
line-height: 2.25rem;
color: var(--mim-brand-green-deep);
}
@media (min-width: 640px) {
.section-title {
font-size: 2.25rem;
line-height: 2.5rem;
}
}
.dark .section-title {
color: #f4f4f5;
}
.section-subtitle {
margin-top: 1rem;
font-size: 1.125rem;
color: #52525b;
}
.dark .section-subtitle {
color: #d4d4d8;
}
}
@layer utilities {
.gradient-text {
background-image: linear-gradient(
to right,
var(--mim-brand-green),
var(--mim-brand-green-mid),
var(--mim-brand-gold-bright)
);
-webkit-background-clip: text;
background-clip: text;
color: transparent;
}
.glass {
background-color: rgba(255, 255, 255, 0.1);
backdrop-filter: blur(12px);
}
.glass-dark {
background-color: rgba(0, 0, 0, 0.1);
backdrop-filter: blur(12px);
}
.text-balance {
text-wrap: balance;
}
.animate-in {
animation: animate-in 0.6s ease-out;
}
@keyframes animate-in {
from {
opacity: 0;
transform: translateY(1rem);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.focus-visible\:ring-2:focus-visible {
outline: 2px solid transparent;
outline-offset: 2px;
box-shadow: 0 0 0 2px rgba(197, 160, 89, 0.55);
}
}
@media (prefers-contrast: high) {
.btn-primary,
.btn-secondary,
.card {
border-width: 2px;
border-style: solid;
border-color: currentColor;
}
}
@media (prefers-reduced-motion: reduce) {
*,
*::before,
*::after {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
scroll-behavior: auto !important;
}
.animate-marquee,
.animate-float,
.animate-pulse-slow {
animation: none;
}
/* Framer Motion loops/parallax gated in JS via MotionConfig + useMotionSafe */
}
.partner-strip {
list-style: none;
padding: 0;
margin: 0;
}
.partner-badge {
transition: border-color 0.2s, box-shadow 0.2s;
}
.partner-badge:hover,
.partner-badge:focus-within {
border-color: var(--mim-brand-gold);
box-shadow: 0 0 0 1px rgba(197, 160, 89, 0.25);
}
.animate-marquee:hover,
.animate-marquee:focus-within {
animation-play-state: paused;
}
@media print {
.no-print,
header,
footer,
.sticky-donate,
[class*="MimChat"],
dialog {
display: none !important;
}
.no-print {
display: none !important;
}
body {
color: black !important;
background: white !important;
}
.gradient-text {
color: black !important;
background: none !important;
-webkit-text-fill-color: initial !important;
}
}