Spaces:
Running
Running
| @import "tailwindcss"; | |
| /* ============================================ | |
| Premium Scrollytelling Portfolio | |
| Dark Mode Design System | |
| ============================================ */ | |
| :root { | |
| --background: #050505; | |
| --foreground: #ffffff; | |
| --text-heading: rgba(255, 255, 255, 0.9); | |
| --text-body: rgba(255, 255, 255, 0.6); | |
| --text-muted: rgba(255, 255, 255, 0.4); | |
| --accent: rgba(255, 255, 255, 0.08); | |
| } | |
| @theme inline { | |
| --color-background: var(--background); | |
| --color-foreground: var(--foreground); | |
| --font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; | |
| } | |
| /* ============================================ | |
| Base Styles | |
| ============================================ */ | |
| html { | |
| scroll-behavior: auto; | |
| /* Framer Motion handles scroll */ | |
| overflow-x: clip; | |
| } | |
| /* Lenis Smooth Scroll Styles */ | |
| html.lenis, | |
| html.lenis body { | |
| height: auto; | |
| } | |
| .lenis.lenis-smooth { | |
| scroll-behavior: auto ; | |
| } | |
| .lenis.lenis-smooth [data-lenis-prevent] { | |
| overscroll-behavior: contain; | |
| } | |
| .lenis.lenis-stopped { | |
| overflow: hidden; | |
| } | |
| .lenis.lenis-scrolling iframe { | |
| pointer-events: none; | |
| } | |
| body { | |
| background: var(--background); | |
| color: var(--foreground); | |
| font-family: var(--font-sans); | |
| font-feature-settings: "kern" 1, "liga" 1; | |
| -webkit-font-smoothing: antialiased; | |
| -moz-osx-font-smoothing: grayscale; | |
| text-rendering: optimizeLegibility; | |
| overflow-x: hidden; | |
| } | |
| /* ============================================ | |
| Typography | |
| ============================================ */ | |
| .text-heading { | |
| color: var(--text-heading); | |
| letter-spacing: -0.02em; | |
| line-height: 1.1; | |
| } | |
| .text-body { | |
| color: var(--text-body); | |
| letter-spacing: -0.01em; | |
| line-height: 1.6; | |
| } | |
| .text-muted { | |
| color: var(--text-muted); | |
| } | |
| /* ============================================ | |
| Loading Screen | |
| ============================================ */ | |
| .loading-screen { | |
| position: fixed; | |
| inset: 0; | |
| z-index: 100; | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| justify-content: center; | |
| background: var(--background); | |
| } | |
| .loading-progress { | |
| font-size: 4rem; | |
| font-weight: 200; | |
| letter-spacing: -0.04em; | |
| color: var(--text-heading); | |
| font-variant-numeric: tabular-nums; | |
| } | |
| .loading-text { | |
| font-size: 0.875rem; | |
| text-transform: uppercase; | |
| letter-spacing: 0.2em; | |
| color: var(--text-muted); | |
| margin-top: 1.5rem; | |
| } | |
| .loading-bar { | |
| width: 200px; | |
| height: 1px; | |
| background: var(--accent); | |
| margin-top: 2rem; | |
| overflow: hidden; | |
| position: relative; | |
| } | |
| .loading-bar-fill { | |
| height: 100%; | |
| background: var(--text-body); | |
| transition: width 0.1s ease-out; | |
| } | |
| /* ============================================ | |
| Canvas Container | |
| ============================================ */ | |
| .canvas-container { | |
| position: sticky; | |
| top: 0; | |
| left: 0; | |
| width: 100%; | |
| height: 100vh; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| overflow: hidden; | |
| } | |
| .scroll-canvas { | |
| max-width: 100%; | |
| max-height: 100%; | |
| object-fit: contain; | |
| } | |
| /* ============================================ | |
| Text Overlays | |
| ============================================ */ | |
| .text-overlay { | |
| position: fixed; | |
| z-index: 10; | |
| pointer-events: none; | |
| padding: 2rem; | |
| max-width: 600px; | |
| } | |
| .text-overlay-center { | |
| top: 50%; | |
| left: 50%; | |
| transform: translate(-50%, -50%); | |
| text-align: center; | |
| } | |
| .text-overlay-left { | |
| top: 50%; | |
| left: 5%; | |
| transform: translateY(-50%); | |
| text-align: left; | |
| } | |
| .text-overlay-right { | |
| top: 50%; | |
| right: 5%; | |
| transform: translateY(-50%); | |
| text-align: right; | |
| } | |
| .overlay-heading { | |
| font-size: clamp(2rem, 5vw, 4rem); | |
| font-weight: 300; | |
| color: var(--text-heading); | |
| letter-spacing: -0.03em; | |
| line-height: 1.1; | |
| margin-bottom: 0.5rem; | |
| } | |
| .overlay-subheading { | |
| font-size: clamp(1rem, 2vw, 1.5rem); | |
| font-weight: 400; | |
| color: var(--text-body); | |
| letter-spacing: -0.01em; | |
| line-height: 1.4; | |
| } | |
| .overlay-cta { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 0.75rem; | |
| margin-top: 2rem; | |
| padding: 1rem 2rem; | |
| background: rgba(255, 255, 255, 0.1); | |
| border: 1px solid rgba(255, 255, 255, 0.15); | |
| border-radius: 9999px; | |
| color: var(--text-heading); | |
| font-size: 0.875rem; | |
| font-weight: 500; | |
| letter-spacing: 0.02em; | |
| backdrop-filter: blur(20px); | |
| pointer-events: auto; | |
| cursor: pointer; | |
| transition: all 0.3s ease; | |
| } | |
| .overlay-cta:hover { | |
| background: rgba(255, 255, 255, 0.15); | |
| border-color: rgba(255, 255, 255, 0.25); | |
| transform: translateY(-2px); | |
| } | |
| /* ============================================ | |
| Scroll Progress Indicator | |
| ============================================ */ | |
| .scroll-progress { | |
| position: fixed; | |
| top: 50%; | |
| right: 2rem; | |
| transform: translateY(-50%); | |
| z-index: 50; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 0.5rem; | |
| } | |
| .scroll-dot { | |
| width: 8px; | |
| height: 8px; | |
| border-radius: 50%; | |
| background: var(--accent); | |
| transition: all 0.3s ease; | |
| } | |
| .scroll-dot.active { | |
| background: var(--text-heading); | |
| transform: scale(1.5); | |
| } | |
| /* ============================================ | |
| Mobile Responsive | |
| ============================================ */ | |
| @media (max-width: 768px) { | |
| .text-overlay { | |
| padding: 1.5rem; | |
| max-width: 90%; | |
| } | |
| .text-overlay-left, | |
| .text-overlay-right { | |
| left: 50%; | |
| right: auto; | |
| transform: translate(-50%, -50%); | |
| text-align: center; | |
| } | |
| .overlay-heading { | |
| font-size: clamp(1.5rem, 8vw, 2.5rem); | |
| } | |
| .overlay-subheading { | |
| font-size: clamp(0.875rem, 4vw, 1.125rem); | |
| } | |
| .scroll-progress { | |
| right: 1rem; | |
| } | |
| } |