| |
| |
| |
|
|
| |
| *, |
| *::before, |
| *::after { |
| margin: 0; |
| padding: 0; |
| box-sizing: border-box; |
| } |
|
|
| html { |
| scroll-behavior: smooth; |
| -webkit-text-size-adjust: 100%; |
| |
| |
| |
| |
| |
| |
| |
| |
| background: linear-gradient( |
| 180deg, |
| var(--sky-top) 0%, |
| var(--sky-mid) 52%, |
| var(--sky-bottom) 100% |
| ) fixed; |
| background-color: var(--sky-mid); |
| overscroll-behavior-y: none; |
| } |
|
|
| body { |
| font-family: var(--font-body); |
| font-size: var(--step-body); |
| line-height: 1.65; |
| color: var(--ink); |
|
|
| |
| |
| |
| |
| |
| |
| |
| background: linear-gradient( |
| 180deg, |
| var(--sky-top) 0%, |
| var(--sky-mid) 52%, |
| var(--sky-bottom) 100% |
| ); |
| background-color: var(--sky-mid); |
| min-height: 100vh; |
| min-height: 100dvh; |
| overflow-x: hidden; |
| overscroll-behavior-y: none; |
|
|
| -webkit-font-smoothing: antialiased; |
| -moz-osx-font-smoothing: grayscale; |
| text-rendering: optimizeLegibility; |
| } |
|
|
| |
| h1, h2, h3 { |
| font-family: var(--font-display); |
| font-weight: 700; |
| line-height: 1.12; |
| letter-spacing: -0.02em; |
| color: var(--ink); |
| } |
|
|
| p { max-width: 62ch; } |
|
|
| a { |
| color: var(--rose-deep); |
| text-decoration: none; |
| transition: color 0.2s var(--ease-gentle); |
| } |
| a:hover { color: var(--ink); } |
|
|
| |
| .hero h1, |
| .hero p, |
| .brand, |
| .manifesto h2, |
| .manifesto p { |
| text-shadow: 0 2px 24px rgba(255, 214, 232, 0.55), |
| 0 1px 2px rgba(255, 255, 255, 0.4); |
| } |
|
|
| |
| .container { |
| width: 100%; |
| max-width: var(--maxw); |
| margin-inline: auto; |
| padding-inline: var(--gut); |
| } |
|
|
| .center { text-align: center; } |
| .muted { color: var(--ink-soft); } |
|
|
| |
| .btn { |
| display: inline-flex; |
| align-items: center; |
| gap: 0.5em; |
| font-family: var(--font-display); |
| font-weight: 700; |
| font-size: 1.0625rem; |
| letter-spacing: 0.01em; |
| padding: 0.95em 1.7em; |
| border-radius: var(--radius-pill); |
| border: none; |
| cursor: pointer; |
| transition: transform 0.2s var(--ease-soft), |
| box-shadow 0.25s var(--ease-soft), |
| background 0.2s var(--ease-gentle); |
| text-decoration: none; |
| } |
|
|
| .btn-primary { |
| background: var(--rose); |
| color: #fff; |
| box-shadow: 0 10px 28px rgba(255, 143, 171, 0.45), |
| inset 0 1px 0 rgba(255, 255, 255, 0.4); |
| } |
| .btn-primary:hover { |
| background: var(--rose-deep); |
| color: #fff; |
| box-shadow: 0 14px 36px rgba(232, 111, 146, 0.55), |
| inset 0 1px 0 rgba(255, 255, 255, 0.4); |
| } |
| .btn-primary:active { transform: scale(0.97); } |
|
|
| .btn-ghost { |
| background: rgba(255, 255, 255, 0.55); |
| color: var(--ink); |
| backdrop-filter: blur(8px); |
| -webkit-backdrop-filter: blur(8px); |
| border: 1.5px solid rgba(255, 143, 171, 0.3); |
| } |
| .btn-ghost:hover { |
| background: rgba(255, 255, 255, 0.78); |
| color: var(--ink); |
| } |
| .btn-ghost:active { transform: scale(0.97); } |
|
|
| |
| .btn:focus-visible, |
| a:focus-visible { |
| outline: 3px solid var(--rose-deep); |
| outline-offset: 3px; |
| } |
|
|
| |
| ::selection { |
| background: var(--rose); |
| color: #fff; |
| } |
|
|
| |
| @media (prefers-reduced-motion: reduce) { |
| *, |
| *::before, |
| *::after { |
| animation-duration: 0.001ms !important; |
| animation-iteration-count: 1 !important; |
| transition-duration: 0.001ms !important; |
| scroll-behavior: auto !important; |
| } |
| } |
|
|
|
|
| |
| |
| |
| |
| |
|
|
| |
| |
| .blur-overlay { |
| position: fixed; |
| top: -16px; |
| right: -16px; |
| bottom: -16px; |
| left: -16px; |
| z-index: 4; |
| pointer-events: none; |
| transform: translateZ(0); |
| will-change: transform; |
| backdrop-filter: blur(0.5px); |
| -webkit-backdrop-filter: blur(0.5px); |
| } |
|
|
| |
| |
| |
| .grain-overlay { |
| position: fixed; |
| top: -16px; |
| right: -16px; |
| bottom: -16px; |
| left: -16px; |
| z-index: 5; |
| pointer-events: none; |
| opacity: 0.09; |
| mix-blend-mode: overlay; |
| background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"); |
| background-size: 220px 220px; |
| animation: grain 0.6s steps(3) infinite; |
| } |
| @keyframes grain { |
| 0% { transform: translate(0, 0); } |
| 33% { transform: translate(-4px, 3px); } |
| 66% { transform: translate(3px, -4px); } |
| 100% { transform: translate(-2px, -2px); } |
| } |
|
|
| @media (prefers-reduced-motion: reduce) { |
| .grain-overlay { animation: none; } |
| } |
|
|
| |
| |
| |
| |
| |
| |
| @media (hover: none), (pointer: coarse) { |
| |
| .grain-overlay { opacity: 0.12; } |
| } |
|
|
|
|
| |
| |
| |
| |
|
|
| |
| .word { |
| display: inline-block; |
| opacity: 0; |
| transform: translateY(0.5em) rotate(2deg); |
| filter: blur(6px); |
| transition: opacity var(--dur-slow) var(--ease-soft), |
| transform var(--dur-slow) var(--ease-spring), |
| filter var(--dur-slow) var(--ease-soft); |
| will-change: transform, opacity, filter; |
| } |
| .word.is-in { |
| opacity: 1; |
| transform: translateY(0) rotate(0); |
| filter: blur(0); |
| } |
|
|
| |
| [data-reveal], |
| .reveal { |
| opacity: 0; |
| transform: translateY(28px); |
| transition: opacity var(--dur-slow) var(--ease-soft), |
| transform var(--dur-slow) var(--ease-soft); |
| will-change: transform, opacity; |
| } |
| [data-reveal].is-in, |
| .reveal.is-in { |
| opacity: 1; |
| transform: translateY(0); |
| } |
| |
| [data-reveal].d1, .reveal.d1 { transition-delay: 0.08s; } |
| [data-reveal].d2, .reveal.d2 { transition-delay: 0.16s; } |
| [data-reveal].d3, .reveal.d3 { transition-delay: 0.24s; } |
| [data-reveal].d4, .reveal.d4 { transition-delay: 0.32s; } |
|
|
| |
| .constellation-pin { |
| position: relative; |
| } |
| .constellation-stage { |
| transition: opacity var(--dur-cinema) var(--ease-flow), |
| transform var(--dur-cinema) var(--ease-flow); |
| } |
|
|
| @media (prefers-reduced-motion: reduce) { |
| .word { opacity: 1; transform: none; filter: none; } |
| [data-reveal], .reveal { opacity: 1; transform: none; } |
| } |
|
|