|
161 | 161 | } |
162 | 162 |
|
163 | 163 | .hero-title { |
| 164 | + font-family: var(--font-display); |
| 165 | + font-size: clamp(4.05rem, 10.5vw, 7.75rem); |
| 166 | + font-weight: 400; |
| 167 | + letter-spacing: 6px; |
| 168 | + text-transform: uppercase; |
| 169 | + line-height: 1.15; |
| 170 | + color: #fff; |
164 | 171 | margin-bottom: 12px; |
165 | 172 | position: relative; |
166 | 173 | z-index: 1; |
167 | | - line-height: 0; |
168 | | -} |
169 | | -.hero-title-svg { |
170 | | - width: 100%; |
171 | | - max-width: 820px; |
172 | | - height: auto; |
173 | | - display: block; |
174 | | - margin: 0 auto; |
175 | | - overflow: visible; |
176 | 174 | filter: drop-shadow(1px 1px 0px #000); |
177 | 175 | } |
178 | | -.hero-title-svg text { |
179 | | - font-family: var(--font-display); |
180 | | - font-weight: 400; |
181 | | - letter-spacing: 6px; |
182 | | - text-transform: uppercase; |
| 176 | +@keyframes lava-flow { |
| 177 | + 0% { background-position: 0% 50%; } |
| 178 | + 50% { background-position: 100% 50%; } |
| 179 | + 100% { background-position: 0% 50%; } |
183 | 180 | } |
184 | | -.svg-fill { |
185 | | - animation: neon-flicker 4s infinite; |
| 181 | +@keyframes lava-flow-reverse { |
| 182 | + 0% { background-position: 100% 50%; } |
| 183 | + 50% { background-position: 0% 50%; } |
| 184 | + 100% { background-position: 100% 50%; } |
186 | 185 | } |
187 | 186 | @keyframes neon-flicker { |
188 | 187 | 0%, 19%, 21%, 23%, 25%, 54%, 56%, 100% { |
|
192 | 191 | opacity: 0.82; |
193 | 192 | } |
194 | 193 | } |
| 194 | +.lava-text { display: inline; } |
| 195 | +.lava-letter { |
| 196 | + display: inline-block; |
| 197 | + position: relative; |
| 198 | + background: linear-gradient(90deg, #FF8C00, #FF9A1F, #00A8E8, #00C2FF, #FF8C00); |
| 199 | + background-size: 300% 100%; |
| 200 | + -webkit-background-clip: text; |
| 201 | + background-clip: text; |
| 202 | + -webkit-text-fill-color: transparent; |
| 203 | + animation: lava-flow 8s ease-in-out infinite, neon-flicker 4s infinite; |
| 204 | + animation-delay: calc(var(--i) * -0.6s), 0s; |
| 205 | +} |
| 206 | +.lava-letter::before { |
| 207 | + content: attr(data-letter); |
| 208 | + position: absolute; |
| 209 | + top: 0; |
| 210 | + left: 0; |
| 211 | + z-index: -1; |
| 212 | + background: linear-gradient(90deg, #FF8C00, #FF9A1F, #00A8E8, #00C2FF, #FF8C00); |
| 213 | + background-size: 300% 100%; |
| 214 | + -webkit-background-clip: text; |
| 215 | + background-clip: text; |
| 216 | + -webkit-text-fill-color: transparent; |
| 217 | + -webkit-text-stroke: 4px transparent; |
| 218 | + paint-order: stroke fill; |
| 219 | + animation: lava-flow-reverse 8s ease-in-out infinite; |
| 220 | + animation-delay: calc(var(--i) * -0.6s); |
| 221 | + filter: blur(1.5px); |
| 222 | +} |
195 | 223 |
|
196 | 224 | .hero-tagline { |
197 | 225 | font-family: var(--font-mono); |
|
577 | 605 |
|
578 | 606 | @media (max-width: 768px) { |
579 | 607 | .hero { padding: 80px 0 60px; } |
580 | | - .hero-title-svg { max-width: 600px; } |
| 608 | + .hero-title { font-size: clamp(3.2rem, 12vw, 5.5rem); letter-spacing: 4px; } |
581 | 609 | .nav-links { gap: 16px; } |
582 | 610 | .features-grid { grid-template-columns: 1fr; } |
583 | 611 | .install-grid { grid-template-columns: 1fr; } |
|
597 | 625 | @media (max-width: 520px) { |
598 | 626 | .nav-links { display: none; } |
599 | 627 | .hero-ctas { flex-direction: column; align-items: center; } |
600 | | - .hero-title-svg { max-width: 500px; } |
| 628 | + .hero-title { font-size: clamp(2.8rem, 11vw, 4.5rem); letter-spacing: 3px; } |
601 | 629 | .container { padding: 0 16px; } |
602 | 630 | } |
603 | 631 | </style> |
|
624 | 652 | <div class="container"> |
625 | 653 | <div class="hero-eyebrow"><span class="dot"></span> GRC Engineering Open Source</div> |
626 | 654 | <h1 class="hero-title"> |
627 | | - <svg class="hero-title-svg" viewBox="0 0 900 240" xmlns="http://www.w3.org/2000/svg"> |
628 | | - <defs> |
629 | | - <!-- Main lava gradient (flows left to right) --> |
630 | | - <linearGradient id="lava-grad" gradientUnits="userSpaceOnUse" x1="0" y1="0" x2="2700" y2="0"> |
631 | | - <stop offset="0%" stop-color="#FF8C00"/> |
632 | | - <stop offset="25%" stop-color="#FF9A1F"/> |
633 | | - <stop offset="50%" stop-color="#00A8E8"/> |
634 | | - <stop offset="75%" stop-color="#00C2FF"/> |
635 | | - <stop offset="100%" stop-color="#FF8C00"/> |
636 | | - <animateTransform attributeName="gradientTransform" type="translate" values="0 0; -1800 0; 0 0" dur="8s" repeatCount="indefinite"/> |
637 | | - </linearGradient> |
638 | | - <!-- Reverse lava gradient for glow (flows right to left) --> |
639 | | - <linearGradient id="lava-grad-rev" gradientUnits="userSpaceOnUse" x1="0" y1="0" x2="2700" y2="0"> |
640 | | - <stop offset="0%" stop-color="#FF8C00"/> |
641 | | - <stop offset="25%" stop-color="#FF9A1F"/> |
642 | | - <stop offset="50%" stop-color="#00A8E8"/> |
643 | | - <stop offset="75%" stop-color="#00C2FF"/> |
644 | | - <stop offset="100%" stop-color="#FF8C00"/> |
645 | | - <animateTransform attributeName="gradientTransform" type="translate" values="-1800 0; 0 0; -1800 0" dur="8s" repeatCount="indefinite"/> |
646 | | - </linearGradient> |
647 | | - <!-- Glow blur filter --> |
648 | | - <filter id="glow-blur" x="-10%" y="-10%" width="120%" height="120%"> |
649 | | - <feGaussianBlur in="SourceGraphic" stdDeviation="1.5" result="blur"/> |
650 | | - </filter> |
651 | | - </defs> |
652 | | - <!-- Glow layer: stroke only, reverse gradient, blurred --> |
653 | | - <text class="svg-glow" x="450" y="105" text-anchor="middle" font-size="110" fill="none" stroke="url(#lava-grad-rev)" stroke-width="4" filter="url(#glow-blur)">NTH PARTY</text> |
654 | | - <text class="svg-glow" x="450" y="220" text-anchor="middle" font-size="110" fill="none" stroke="url(#lava-grad-rev)" stroke-width="4" filter="url(#glow-blur)">FINDER</text> |
655 | | - <!-- Crisp fill layer on top --> |
656 | | - <text class="svg-fill" x="450" y="105" text-anchor="middle" font-size="110" fill="url(#lava-grad)">NTH PARTY</text> |
657 | | - <text class="svg-fill" x="450" y="220" text-anchor="middle" font-size="110" fill="url(#lava-grad)">FINDER</text> |
658 | | - </svg> |
| 655 | + <span class="lava-text"><span class="lava-letter" style="--i:0" data-letter="N">N</span><span class="lava-letter" style="--i:1" data-letter="t">t</span><span class="lava-letter" style="--i:2" data-letter="h">h</span><span class="lava-letter" style="--i:3" data-letter=" "> </span><span class="lava-letter" style="--i:4" data-letter="P">P</span><span class="lava-letter" style="--i:5" data-letter="a">a</span><span class="lava-letter" style="--i:6" data-letter="r">r</span><span class="lava-letter" style="--i:7" data-letter="t">t</span><span class="lava-letter" style="--i:8" data-letter="y">y</span></span><br> |
| 656 | + <span class="lava-text"><span class="lava-letter" style="--i:9" data-letter="F">F</span><span class="lava-letter" style="--i:10" data-letter="i">i</span><span class="lava-letter" style="--i:11" data-letter="n">n</span><span class="lava-letter" style="--i:12" data-letter="d">d</span><span class="lava-letter" style="--i:13" data-letter="e">e</span><span class="lava-letter" style="--i:14" data-letter="r">r</span></span> |
659 | 657 | </h1> |
660 | 658 | <p class="hero-tagline">Every party has an Nth degree</p> |
661 | 659 | <p class="hero-desc"> |
|
0 commit comments