diff --git a/src/app/globals.css b/src/app/globals.css index dcba957..6ae2311 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -1,156 +1,526 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; - -/* FONT DEFINITIONS */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-weight: 400; - font-display: swap; - src: url('/fonts/inter/Inter.woff2') format('woff2'); -} +@import "tailwindcss"; :root { - --background: #0a0f08; - --card: #1a2418; - --foreground: #f5f5f1; - --primary-cta: #8b9d6f; - --secondary-cta: #ffffff; - --accent: #d4af37; - --background-accent: #2a3f2a; + /* Base units */ + /* --vw is set by ThemeProvider */ - /* Core spacing and sizing */ - --radius: 0.5rem; - --space-unit: 1rem; - --content-max-width: 1200px; + /* --background: #f5ede5;; + --card: #efe7dd;; + --foreground: #4a3828;; + --primary-cta: #8b6f47;; + --secondary-cta: #ffffff;; + --accent: #c4a882;; + --background-accent: #d9c9b5;; */ - /* Theme-responsive colors */ - --text-primary: var(--foreground); - --text-secondary: color-mix(in srgb, var(--foreground) 70%, transparent); - --text-muted: color-mix(in srgb, var(--foreground) 50%, transparent); - - /* Interactive states */ - --hover-overlay: color-mix(in srgb, var(--foreground) 5%, transparent); - --focus-ring: var(--primary-cta); - - /* Borders and dividers */ - --border-subtle: color-mix(in srgb, var(--foreground) 10%, transparent); - --border-medium: color-mix(in srgb, var(--foreground) 20%, transparent); - - /* Shadows and depth */ - --shadow-subtle: 0 1px 3px color-mix(in srgb, var(--background) 50%, transparent); - --shadow-medium: 0 4px 12px color-mix(in srgb, var(--background) 30%, transparent); + --background: #f5ede5;; + --card: #efe7dd;; + --foreground: #4a3828;; + --primary-cta: #8b6f47;; + --secondary-cta: #ffffff;; + --accent: #c4a882;; + --background-accent: #d9c9b5;; + + /* text sizing - set by ThemeProvider */ + /* --text-2xs: clamp(0.465rem, 0.62vw, 0.62rem); + --text-xs: clamp(0.54rem, 0.72vw, 0.72rem); + --text-sm: clamp(0.615rem, 0.82vw, 0.82rem); + --text-base: clamp(0.69rem, 0.92vw, 0.92rem); + --text-lg: clamp(0.75rem, 1vw, 1rem); + --text-xl: clamp(0.825rem, 1.1vw, 1.1rem); + --text-2xl: clamp(0.975rem, 1.3vw, 1.3rem); + --text-3xl: clamp(1.2rem, 1.6vw, 1.6rem); + --text-4xl: clamp(1.5rem, 2vw, 2rem); + --text-5xl: clamp(2.025rem, 2.75vw, 2.75rem); + --text-6xl: clamp(2.475rem, 3.3vw, 3.3rem); + --text-7xl: clamp(3rem, 4vw, 4rem); + --text-8xl: clamp(3.5rem, 4.5vw, 4.5rem); + --text-9xl: clamp(5.25rem, 7vw, 7rem); */ + + /* Base spacing units */ + --vw-0_25: calc(var(--vw) * 0.25); + --vw-0_5: calc(var(--vw) * 0.5); + --vw-0_625: calc(var(--vw) * 0.625); + --vw-0_75: calc(var(--vw) * 0.75); + --vw-1: calc(var(--vw) * 1); + --vw-1_25: calc(var(--vw) * 1.25); + --vw-1_5: calc(var(--vw) * 1.5); + --vw-1_75: calc(var(--vw) * 1.75); + --vw-2: calc(var(--vw) * 2); + --vw-2_25: calc(var(--vw) * 2.25); + --vw-2_5: calc(var(--vw) * 2.5); + --vw-2_75: calc(var(--vw) * 2.75); + --vw-3: calc(var(--vw) * 3); + + /* width */ + --width-5: clamp(4rem, 5vw, 6rem); + --width-7_5: clamp(5.625rem, 7.5vw, 7.5rem); + --width-10: clamp(7.5rem, 10vw, 10rem); + --width-12_5: clamp(9.375rem, 12.5vw, 12.5rem); + --width-15: clamp(11.25rem, 15vw, 15rem); + --width-17: clamp(12.75rem, 17vw, 17rem); + --width-17_5: clamp(13.125rem, 17.5vw, 17.5rem); + --width-20: clamp(15rem, 20vw, 20rem); + --width-21: clamp(15.75rem, 21vw, 21rem); + --width-22_5: clamp(16.875rem, 22.5vw, 22.5rem); + --width-25: clamp(18.75rem, 25vw, 25rem); + --width-26: clamp(19.5rem, 26vw, 26rem); + --width-27_5: clamp(20.625rem, 27.5vw, 27.5rem); + --width-30: clamp(22.5rem, 30vw, 30rem); + --width-32_5: clamp(24.375rem, 32.5vw, 32.5rem); + --width-35: clamp(26.25rem, 35vw, 35rem); + --width-37_5: clamp(28.125rem, 37.5vw, 37.5rem); + --width-40: clamp(30rem, 40vw, 40rem); + --width-42_5: clamp(31.875rem, 42.5vw, 42.5rem); + --width-45: clamp(33.75rem, 45vw, 45rem); + --width-47_5: clamp(35.625rem, 47.5vw, 47.5rem); + --width-50: clamp(37.5rem, 50vw, 50rem); + --width-52_5: clamp(39.375rem, 52.5vw, 52.5rem); + --width-55: clamp(41.25rem, 55vw, 55rem); + --width-57_5: clamp(43.125rem, 57.5vw, 57.5rem); + --width-60: clamp(45rem, 60vw, 60rem); + --width-62_5: clamp(46.875rem, 62.5vw, 62.5rem); + --width-65: clamp(48.75rem, 65vw, 65rem); + --width-67_5: clamp(50.625rem, 67.5vw, 67.5rem); + --width-70: clamp(52.5rem, 70vw, 70rem); + --width-72_5: clamp(54.375rem, 72.5vw, 72.5rem); + --width-75: clamp(56.25rem, 75vw, 75rem); + --width-77_5: clamp(58.125rem, 77.5vw, 77.5rem); + --width-80: clamp(60rem, 80vw, 80rem); + --width-82_5: clamp(61.875rem, 82.5vw, 82.5rem); + --width-85: clamp(63.75rem, 85vw, 85rem); + --width-87_5: clamp(65.625rem, 87.5vw, 87.5rem); + --width-90: clamp(67.5rem, 90vw, 90rem); + --width-92_5: clamp(69.375rem, 92.5vw, 92.5rem); + --width-95: clamp(71.25rem, 95vw, 95rem); + --width-97_5: clamp(73.125rem, 97.5vw, 97.5rem); + --width-100: clamp(75rem, 100vw, 100rem); + /* --width-content-width and --width-content-width-expanded are set by ThemeProvider */ + --width-carousel-padding: calc((100vw - var(--width-content-width)) / 2 + 1px - var(--vw-1_5)); + --width-carousel-padding-controls: calc((100vw - var(--width-content-width)) / 2 + 1px); + --width-carousel-padding-expanded: calc((var(--width-content-width-expanded) - var(--width-content-width)) / 2 + 1px - var(--vw-1_5)); + --width-carousel-padding-controls-expanded: calc((var(--width-content-width-expanded) - var(--width-content-width)) / 2 + 1px); + --width-carousel-item-3: calc(var(--width-content-width) / 3 - var(--vw-1_5) / 3 * 2); + --width-carousel-item-4: calc(var(--width-content-width) / 4 - var(--vw-1_5) / 4 * 3); + --width-x-padding-mask-fade: clamp(1.5rem, 4vw, 4rem); + + --height-4: 1rem; + --height-5: 1.25rem; + --height-6: 1.5rem; + --height-7: 1.75rem; + --height-8: 2rem; + --height-9: 2.25rem; + --height-10: 2.5rem; + --height-11: 2.75rem; + --height-12: 3rem; + --height-30: 7.5rem; + --height-90: 22.5rem; + --height-100: 25rem; + --height-110: 27.5rem; + --height-120: 30rem; + --height-130: 32.5rem; + --height-140: 35rem; + --height-150: 37.5rem; + + /* hero page padding */ + --padding-hero-page-padding-half: calc((var(--height-10) + var(--vw-1_5) + var(--vw-1_5) + var(--height-10)) / 2); + --padding-hero-page-padding: calc(var(--height-10) + var(--vw-1_5) + var(--vw-1_5) + var(--height-10)); + --padding-hero-page-padding-1_5: calc(1.5 * (var(--height-10) + var(--vw-1_5) + var(--vw-1_5) + var(--height-10))); + --padding-hero-page-padding-double: calc(2 * (var(--height-10) + var(--vw-1_5) + var(--vw-1_5) + var(--height-10))); } -/* Dark theme adjustments (if needed) */ -@media (prefers-color-scheme: dark) { +@media (max-width: 767px) { :root { - /* Dark theme already applied in default values */ + /* --vw and text sizing are set by ThemeProvider */ + /* --vw: 3vw; + + --text-2xs: 2.5vw; + --text-xs: 2.75vw; + --text-sm: 3vw; + --text-base: 3.25vw; + --text-lg: 3.5vw; + --text-xl: 4.25vw; + --text-2xl: 5vw; + --text-3xl: 6vw; + --text-4xl: 7vw; + --text-5xl: 7.5vw; + --text-6xl: 8.5vw; + --text-7xl: 10vw; + --text-8xl: 12vw; + --text-9xl: 14vw; */ + + --width-5: 5vw; + --width-7_5: 7.5vw; + --width-10: 10vw; + --width-12_5: 12.5vw; + --width-15: 15vw; + --width-17_5: 17.5vw; + --width-20: 20vw; + --width-22_5: 22.5vw; + --width-25: 25vw; + --width-27_5: 27.5vw; + --width-30: 30vw; + --width-32_5: 32.5vw; + --width-35: 35vw; + --width-37_5: 37.5vw; + --width-40: 40vw; + --width-42_5: 42.5vw; + --width-45: 45vw; + --width-47_5: 47.5vw; + --width-50: 50vw; + --width-52_5: 52.5vw; + --width-55: 55vw; + --width-57_5: 57.5vw; + --width-60: 60vw; + --width-62_5: 62.5vw; + --width-65: 65vw; + --width-67_5: 67.5vw; + --width-70: 70vw; + --width-72_5: 72.5vw; + --width-75: 75vw; + --width-77_5: 77.5vw; + --width-80: 80vw; + --width-82_5: 82.5vw; + --width-85: 85vw; + --width-87_5: 87.5vw; + --width-90: 90vw; + --width-92_5: 92.5vw; + --width-95: 95vw; + --width-97_5: 97.5vw; + --width-100: 100vw; + /* --width-content-width and --width-content-width-expanded are set by ThemeProvider */ + --width-carousel-padding: calc((100vw - var(--width-content-width)) / 2 + 1px - var(--vw-1_5)); + --width-carousel-padding-controls: calc((100vw - var(--width-content-width)) / 2 + 1px); + --width-carousel-padding-expanded: calc((var(--width-content-width-expanded) - var(--width-content-width)) / 2 + 1px - var(--vw-1_5)); + --width-carousel-padding-controls-expanded: calc((var(--width-content-width-expanded) - var(--width-content-width)) / 2 + 1px); + --width-carousel-item-3: var(--width-content-width); + --width-carousel-item-4: var(--width-content-width); + --width-x-padding-mask-fade: 10vw; + + --height-4: 3.5vw; + --height-5: 4.5vw; + --height-6: 5.5vw; + --height-7: 6.5vw; + --height-8: 7.5vw; + --height-9: 8.5vw; + --height-10: 9vw; + --height-11: 10vw; + --height-12: 11vw; + --height-30: 25vw; + --height-90: 81vw; + --height-100: 90vw; + --height-110: 99vw; + --height-120: 108vw; + --height-130: 117vw; + --height-140: 126vw; + --height-150: 135vw; } } -/* Base styles */ +@theme inline { + --color-background: var(--background); + --color-card: var(--card); + --color-foreground: var(--foreground); + --color-primary-cta: var(--primary-cta); + --color-secondary-cta: var(--secondary-cta); + --color-accent: var(--accent); + --color-background-accent: var(--background-accent); + + /* theme border radius */ + --radius-theme: var(--theme-border-radius); + --radius-theme-capped: var(--theme-border-radius-capped); + + /* text */ + --text-2xs: var(--text-2xs); + --text-xs: var(--text-xs); + --text-sm: var(--text-sm); + --text-base: var(--text-base); + --text-lg: var(--text-lg); + --text-xl: var(--text-xl); + --text-2xl: var(--text-2xl); + --text-3xl: var(--text-3xl); + --text-4xl: var(--text-4xl); + --text-5xl: var(--text-5xl); + --text-6xl: var(--text-6xl); + --text-7xl: var(--text-7xl); + --text-8xl: var(--text-8xl); + --text-9xl: var(--text-9xl); + + /* height */ + --height-4: var(--height-4); + --height-5: var(--height-5); + --height-6: var(--height-6); + --height-7: var(--height-7); + --height-8: var(--height-8); + --height-9: var(--height-9); + --height-11: var(--height-11); + --height-12: var(--height-12); + + --height-10: var(--height-10); + --height-30: var(--height-30); + --height-90: var(--height-90); + --height-100: var(--height-100); + --height-110: var(--height-110); + --height-120: var(--height-120); + --height-130: var(--height-130); + --height-140: var(--height-140); + --height-150: var(--height-150); + + --height-page-padding: calc(2.25rem+var(--vw-1_5)+var(--vw-1_5)); + + /* width */ + --width-5: var(--width-5); + --width-7_5: var(--width-7_5); + --width-10: var(--width-10); + --width-12_5: var(--width-12_5); + --width-15: var(--width-15); + --width-17: var(--width-17); + --width-17_5: var(--width-17_5); + --width-20: var(--width-20); + --width-21: var(--width-21); + --width-22_5: var(--width-22_5); + --width-25: var(--width-25); + --width-26: var(--width-26); + --width-27_5: var(--width-27_5); + --width-30: var(--width-30); + --width-32_5: var(--width-32_5); + --width-35: var(--width-35); + --width-37_5: var(--width-37_5); + --width-40: var(--width-40); + --width-42_5: var(--width-42_5); + --width-45: var(--width-45); + --width-47_5: var(--width-47_5); + --width-50: var(--width-50); + --width-52_5: var(--width-52_5); + --width-55: var(--width-55); + --width-57_5: var(--width-57_5); + --width-60: var(--width-60); + --width-62_5: var(--width-62_5); + --width-65: var(--width-65); + --width-67_5: var(--width-67_5); + --width-70: var(--width-70); + --width-72_5: var(--width-72_5); + --width-75: var(--width-75); + --width-77_5: var(--width-77_5); + --width-80: var(--width-80); + --width-82_5: var(--width-82_5); + --width-85: var(--width-85); + --width-87_5: var(--width-87_5); + --width-90: var(--width-90); + --width-92_5: var(--width-92_5); + --width-95: var(--width-95); + --width-97_5: var(--width-97_5); + --width-100: var(--width-100); + --width-content-width: var(--width-content-width); + --width-carousel-padding: var(--width-carousel-padding); + --width-carousel-padding-controls: var(--width-carousel-padding-controls); + --width-carousel-padding-expanded: var(--width-carousel-padding-expanded); + --width-carousel-padding-controls-expanded: var(--width-carousel-padding-controls-expanded); + --width-carousel-item-3: var(--width-carousel-item-3); + --width-carousel-item-4: var(--width-carousel-item-4); + --width-x-padding-mask-fade: var(--width-x-padding-mask-fade); + --width-content-width-expanded: var(--width-content-width-expanded); + + /* gap */ + --spacing-1: var(--vw-0_25); + --spacing-2: var(--vw-0_5); + --spacing-3: var(--vw-0_75); + --spacing-4: var(--vw-1); + --spacing-5: var(--vw-1_25); + --spacing-6: var(--vw-1_5); + --spacing-7: var(--vw-1_75); + --spacing-8: var(--vw-2); + + --spacing-x-1: var(--vw-0_25); + --spacing-x-2: var(--vw-0_5); + --spacing-x-3: var(--vw-0_75); + --spacing-x-4: var(--vw-1); + --spacing-x-5: var(--vw-1_25); + --spacing-x-6: var(--vw-1_5); + + /* border radius */ + --radius-none: 0; + --radius-sm: var(--vw-0_5); + --radius: var(--vw-0_75); + --radius-md: var(--vw-1); + --radius-lg: var(--vw-1_25); + --radius-xl: var(--vw-1_75); + --radius-full: 999px; + + /* padding */ + --padding-1: var(--vw-0_25); + --padding-2: var(--vw-0_5); + --padding-2.5: var(--vw-0_625); + --padding-3: var(--vw-0_75); + --padding-4: var(--vw-1); + --padding-5: var(--vw-1_25); + --padding-6: var(--vw-1_5); + --padding-7: var(--vw-1_75); + --padding-8: var(--vw-2); + + --padding-x-1: var(--vw-0_25); + --padding-x-2: var(--vw-0_5); + --padding-x-3: var(--vw-0_75); + --padding-x-4: var(--vw-1); + --padding-x-5: var(--vw-1_25); + --padding-x-6: var(--vw-1_5); + --padding-x-7: var(--vw-1_75); + --padding-x-8: var(--vw-2); + + --padding-hero-page-padding-half: var(--padding-hero-page-padding-half); + --padding-hero-page-padding: var(--padding-hero-page-padding); + --padding-hero-page-padding-1_5: var(--padding-hero-page-padding-1_5); + --padding-hero-page-padding-double: var(--padding-hero-page-padding-double); + + /* margin */ + --margin-1: var(--vw-0_25); + --margin-2: var(--vw-0_5); + --margin-3: var(--vw-0_75); + --margin-4: var(--vw-1); + --margin-5: var(--vw-1_25); + --margin-6: var(--vw-1_5); + --margin-7: var(--vw-1_75); + --margin-8: var(--vw-2); + + --margin-x-1: var(--vw-0_25); + --margin-x-2: var(--vw-0_5); + --margin-x-3: var(--vw-0_75); + --margin-x-4: var(--vw-1); + --margin-x-5: var(--vw-1_25); + --margin-x-6: var(--vw-1_5); + --margin-x-7: var(--vw-1_75); + --margin-x-8: var(--vw-2); +} + +@layer components {} + +@layer utilities { + + /* Card, primary-button, and secondary-button styles are now dynamically injected via ThemeProvider */ + + /* .card { + @apply backdrop-blur-sm bg-gradient-to-br from-card/80 to-card/40 shadow-sm border border-card; + } + + .primary-button { + @apply bg-gradient-to-b from-primary-cta/83 to-primary-cta; + box-shadow: + color-mix(in srgb, var(--color-background) 25%, transparent) 0px 1px 1px 0px inset, + color-mix(in srgb, var(--color-primary-cta) 15%, transparent) 3px 3px 3px 0px; + } + + .secondary-button { + @apply backdrop-blur-sm bg-gradient-to-br from-secondary-cta/80 to-secondary-cta shadow-sm border border-secondary-cta; + } */ + + .tag-card { + @apply backdrop-blur-sm bg-gradient-to-br from-card/80 to-card/40 shadow-sm border border-card; + } + + .mask-padding-x { + -webkit-mask-image: linear-gradient(to right, transparent 0%, black var(--width-x-padding-mask-fade), black calc(100% - var(--width-x-padding-mask-fade)), transparent 100%); + mask-image: linear-gradient(to right, transparent 0%, black var(--width-x-padding-mask-fade), black calc(100% - var(--width-x-padding-mask-fade)), transparent 100%); + } + + .mask-fade-bottom { + -webkit-mask-image: linear-gradient(to bottom, black 0%, black 50%, transparent 100%); + mask-image: linear-gradient(to bottom, black 0%, black 50%, transparent 100%); + } + + .mask-fade-bottom-large { + -webkit-mask-image: linear-gradient(to bottom, black 0%, black 50%, transparent 75%, transparent 100%); + mask-image: linear-gradient(to bottom, black 0%, black 50%, transparent 75%, transparent 100%); + } + + .mask-fade-bottom-long { + -webkit-mask-image: linear-gradient(to bottom, black 0%, black 5%, transparent 100%); + mask-image: linear-gradient(to bottom, black 0%, black 5%, transparent 100%); + } + + .mask-fade-top-long { + -webkit-mask-image: linear-gradient(to top, black 0%, black 5%, transparent 100%); + mask-image: linear-gradient(to top, black 0%, black 5%, transparent 100%); + } + + .mask-fade-xy { + -webkit-mask-image: + linear-gradient(to right, transparent 0%, black 20%, black 80%, transparent 100%), + linear-gradient(to bottom, transparent 0%, black 20%, black 80%, transparent 100%); + mask-image: + linear-gradient(to right, transparent 0%, black 20%, black 80%, transparent 100%), + linear-gradient(to bottom, transparent 0%, black 20%, black 80%, transparent 100%); + -webkit-mask-composite: source-in; + mask-composite: intersect; + } + + /* ANIMATION */ + + .animation-container { + animation: + fadeInOpacity 0.8s ease-in-out forwards, + fadeInTranslate 0.6s forwards; + } + + .animation-container-fade { + animation: fadeInOpacity 0.8s ease-in-out forwards; + } + + @keyframes fadeInOpacity { + from { + opacity: 0; + } + + to { + opacity: 1; + } + } + + @keyframes fadeInTranslate { + from { + transform: translateY(0.75vh); + } + + to { + transform: translateY(0vh); + } + } + + @keyframes aurora { + from { + background-position: 50% 50%, 50% 50%; + } + + to { + background-position: 350% 50%, 350% 50%; + } + } + +} + * { - border-color: var(--border-subtle); + scrollbar-width: thin; + scrollbar-color: rgba(255, 255, 255, 1) rgba(255, 255, 255, 0); +} + +html { + overscroll-behavior: none; + overscroll-behavior-y: none; } body { - color: var(--text-primary); - background: var(--background); - font-feature-settings: "rlig" 1, "calt" 1; -} - -/* Utility classes for theme integration */ -.bg-theme-background { background-color: var(--background); + color: var(--foreground); + font-family: var(--font-sora), sans-serif; + position: relative; + min-height: 100vh; + overscroll-behavior: none; + overscroll-behavior-y: none; } -.bg-theme-card { - background-color: var(--card); -} - -.text-theme-primary { - color: var(--text-primary); -} - -.text-theme-secondary { - color: var(--text-secondary); -} - -.text-theme-muted { - color: var(--text-muted); -} - -.border-theme { - border-color: var(--border-subtle); -} - -.shadow-theme { - box-shadow: var(--shadow-medium); -} - -/* Focus states */ -.focus-theme:focus { - outline: 2px solid var(--focus-ring); - outline-offset: 2px; -} - -/* Animation and transition defaults */ -.transition-theme { - transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1); -} - -/* Responsive typography scale */ -.text-responsive-sm { - font-size: clamp(0.875rem, 0.8rem + 0.4vw, 1rem); -} - -.text-responsive-base { - font-size: clamp(1rem, 0.9rem + 0.5vw, 1.125rem); -} - -.text-responsive-lg { - font-size: clamp(1.125rem, 1rem + 0.625vw, 1.375rem); -} - -.text-responsive-xl { - font-size: clamp(1.25rem, 1.1rem + 0.75vw, 1.75rem); -} - -.text-responsive-2xl { - font-size: clamp(1.5rem, 1.3rem + 1vw, 2.25rem); -} - -/* Content width utilities */ -.content-width-sm { - max-width: 65ch; -} - -.content-width-md { - max-width: 75ch; -} - -.content-width-lg { - max-width: 85ch; -} - -/* Accessibility improvements */ -@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; - } -} - -/* High contrast mode support */ -@media (prefers-contrast: high) { - :root { - --border-subtle: var(--foreground); - --text-secondary: var(--foreground); - } -} +h1, +h2, +h3, +h4, +h5, +h6 { + font-family: var(--font-sora), sans-serif; +} \ No newline at end of file