|
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; |
171 | 164 | margin-bottom: 12px; |
172 | 165 | position: relative; |
173 | 166 | 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; |
174 | 176 | filter: drop-shadow(1px 1px 0px #000); |
175 | 177 | } |
176 | | -@keyframes lava-flow { |
177 | | - 0% { background-position: 0% 50%; } |
178 | | - 50% { background-position: 100% 50%; } |
179 | | - 100% { background-position: 0% 50%; } |
| 178 | +.hero-title-svg text { |
| 179 | + font-family: var(--font-display); |
| 180 | + font-weight: 400; |
| 181 | + letter-spacing: 6px; |
| 182 | + text-transform: uppercase; |
180 | 183 | } |
181 | | -@keyframes lava-flow-reverse { |
182 | | - 0% { background-position: 100% 50%; } |
183 | | - 50% { background-position: 0% 50%; } |
184 | | - 100% { background-position: 100% 50%; } |
| 184 | +.svg-fill { |
| 185 | + animation: neon-flicker 4s infinite; |
185 | 186 | } |
186 | 187 | @keyframes neon-flicker { |
187 | 188 | 0%, 19%, 21%, 23%, 25%, 54%, 56%, 100% { |
|
191 | 192 | opacity: 0.82; |
192 | 193 | } |
193 | 194 | } |
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 | | -} |
223 | 195 |
|
224 | 196 | .hero-tagline { |
225 | 197 | font-family: var(--font-mono); |
|
605 | 577 |
|
606 | 578 | @media (max-width: 768px) { |
607 | 579 | .hero { padding: 80px 0 60px; } |
608 | | - .hero-title { font-size: clamp(3.2rem, 12vw, 5.5rem); letter-spacing: 4px; } |
| 580 | + .hero-title-svg { max-width: 600px; } |
609 | 581 | .nav-links { gap: 16px; } |
610 | 582 | .features-grid { grid-template-columns: 1fr; } |
611 | 583 | .install-grid { grid-template-columns: 1fr; } |
|
625 | 597 | @media (max-width: 520px) { |
626 | 598 | .nav-links { display: none; } |
627 | 599 | .hero-ctas { flex-direction: column; align-items: center; } |
628 | | - .hero-title { font-size: clamp(2.8rem, 11vw, 4.5rem); letter-spacing: 3px; } |
| 600 | + .hero-title-svg { max-width: 500px; } |
629 | 601 | .container { padding: 0 16px; } |
630 | 602 | } |
631 | 603 | </style> |
|
652 | 624 | <div class="container"> |
653 | 625 | <div class="hero-eyebrow"><span class="dot"></span> GRC Engineering Open Source</div> |
654 | 626 | <h1 class="hero-title"> |
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> |
| 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> |
657 | 659 | </h1> |
658 | 660 | <p class="hero-tagline">Every party has an Nth degree</p> |
659 | 661 | <p class="hero-desc"> |
|
0 commit comments