|
165 | 165 | opacity:0; |
166 | 166 | } |
167 | 167 | .kicker-rule{width:24px;height:2px;background:var(--blue)} |
168 | | -.hero h1{ |
169 | | - margin:0 0 20px; |
170 | | - font-size:clamp(48px,6vw,82px); |
171 | | - line-height:.98; |
172 | | - letter-spacing:-4px; |
173 | | - font-weight:900; |
174 | | - max-width:680px; |
175 | | - overflow:hidden; |
176 | | -} |
177 | | -.hero h1 .line{ |
178 | | - display:block; |
179 | | - transform:translateY(112%); |
180 | | -} |
181 | | -.hero h1 .blue{color:var(--blue)} |
182 | | -.hero-copy{ |
183 | | - font-size:18px;color:var(--muted);max-width:620px;margin:0 0 28px; |
184 | | - opacity:0;transform:translateY(16px); |
185 | | -} |
186 | | -.hero-actions{display:flex;gap:10px;flex-wrap:wrap;opacity:0;transform:translateY(14px)} |
| 168 | + .hero h1{ |
| 169 | + margin:0 0 20px; |
| 170 | + font-size:clamp(48px,6vw,82px); |
| 171 | + line-height:1.02; |
| 172 | + letter-spacing:-3px; |
| 173 | + font-weight:900; |
| 174 | + max-width:680px; |
| 175 | + } |
| 176 | + .hero h1 .line{ |
| 177 | + display:block; |
| 178 | + overflow:hidden; |
| 179 | + padding-bottom:.06em; |
| 180 | + } |
| 181 | + .hero h1 .line-inner{ |
| 182 | + display:block; |
| 183 | + transform:translateY(0); |
| 184 | + } |
| 185 | + html.anim .hero h1 .line-inner{ |
| 186 | + transform:translateY(112%); |
| 187 | + } |
| 188 | + .hero h1 .blue{color:var(--blue)} |
| 189 | + .hero-copy{ |
| 190 | + font-size:18px;color:var(--muted);max-width:620px;margin:0 0 28px; |
| 191 | + } |
| 192 | + html.anim .hero-copy{opacity:0;transform:translateY(16px)} |
| 193 | + .hero-actions{display:flex;gap:10px;flex-wrap:wrap} |
| 194 | + html.anim .hero-actions{opacity:0;transform:translateY(14px)} |
187 | 195 | .button{ |
188 | 196 | display:inline-flex;align-items:center;justify-content:center; |
189 | 197 | min-height:50px;padding:0 20px;border-radius:var(--radius-sm); |
|
354 | 362 | .footer-note{font-size:12px;color:#565d68;margin:18px 0 0} |
355 | 363 |
|
356 | 364 | /* Entrance choreography */ |
357 | | -html.anim .app-kicker{animation:quiet .62s var(--soft) .10s forwards} |
358 | | -html.anim .hero h1 .line{animation:word 1.08s var(--ease) forwards} |
359 | | -html.anim .hero h1 .line:nth-child(1){animation-delay:.25s} |
360 | | -html.anim .hero h1 .line:nth-child(2){animation-delay:.34s} |
361 | | -html.anim .hero-copy{animation:rise .72s var(--soft) .58s forwards} |
362 | | -html.anim .hero-actions{animation:rise .72s var(--soft) .70s forwards} |
363 | | -html.anim .hero-note{animation:quiet .62s var(--soft) .84s forwards} |
364 | | -html.anim .hero-visual{animation:subject 1.08s var(--ease) .64s forwards} |
| 365 | +html.anim .app-kicker{animation:quiet .62s var(--soft) .10s both} |
| 366 | +html.anim .hero h1 .line-inner{animation:word 1s var(--ease) both} |
| 367 | +html.anim .hero h1 .line:nth-child(1) .line-inner{animation-delay:.25s} |
| 368 | +html.anim .hero h1 .line:nth-child(2) .line-inner{animation-delay:.34s} |
| 369 | +html.anim .hero-copy{animation:rise .72s var(--soft) .58s both} |
| 370 | +html.anim .hero-actions{animation:rise .72s var(--soft) .70s both} |
| 371 | +html.anim .hero-note{animation:quiet .62s var(--soft) .84s both} |
| 372 | +html.anim .hero-visual{animation:subject 1.08s var(--ease) .64s both} |
365 | 373 | @keyframes word{from{transform:translateY(112%)}to{transform:translateY(0)}} |
366 | 374 | @keyframes subject{from{opacity:0;transform:translateX(22px) translateY(16px)}to{opacity:1;transform:translateX(0) translateY(0)}} |
367 | 375 | @keyframes rise{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}} |
|
441 | 449 | .footer-row{align-items:flex-start;flex-direction:column} |
442 | 450 | } |
443 | 451 | @media(prefers-reduced-motion:reduce){ |
444 | | - html.anim .app-kicker,html.anim .hero h1 .line,html.anim .hero-copy,html.anim .hero-actions,html.anim .hero-note,html.anim .hero-visual{ |
| 452 | + html.anim .app-kicker,html.anim .hero h1 .line,html.anim .hero h1 .line-inner,html.anim .hero-copy,html.anim .hero-actions,html.anim .hero-note,html.anim .hero-visual{ |
445 | 453 | animation:none!important;opacity:1!important;transform:none!important; |
446 | 454 | } |
447 | 455 | html{scroll-behavior:auto} |
|
532 | 540 | <div class="hero-copy-wrap"> |
533 | 541 | <div class="app-kicker"><span class="kicker-rule"></span>Android app · Open source</div> |
534 | 542 | <h1> |
535 | | - <span class="line">AI replies for</span> |
536 | | - <span class="line">Instagram <span class="blue">DMs.</span></span> |
| 543 | + <span class="line"><span class="line-inner">AI replies for</span></span> |
| 544 | + <span class="line"><span class="line-inner">Instagram <span class="blue">DMs.</span></span></span> |
537 | 545 | </h1> |
538 | 546 | <p class="hero-copy">InstaReply Bot reads supported Instagram DM notifications, checks your rules, asks your selected AI provider for a response, and sends the reply through the available Android reply action.</p> |
539 | 547 | <div class="hero-actions"> |
|
0 commit comments