Skip to content

Commit 09bb5fd

Browse files
Perf/SEO: compress images (~700KiB saved), non-blocking fonts, img dimensions, inert mobile menu, footer contrast
1 parent c7294af commit 09bb5fd

8 files changed

Lines changed: 19 additions & 15 deletions

File tree

docs/assets/ai-settings.jpg

-81.1 KB
Loading

docs/assets/app-icon.jpg

-156 KB
Loading

docs/assets/dashboard.jpg

-80.6 KB
Loading

docs/assets/poster.jpg

-135 KB
Loading

docs/assets/rule-engine.jpg

-80.3 KB
Loading

docs/assets/showcase.jpg

-69.2 KB
Loading

docs/assets/workflow.jpg

-78.6 KB
Loading

docs/index.html

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,9 @@
5959
<link rel="apple-touch-icon" href="assets/app-icon.jpg">
6060
<link rel="preconnect" href="https://fonts.googleapis.com">
6161
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
62-
<link href="https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,wght@12..96,600;12..96,700;12..96,800&family=Sora:wght@400;500;600;700;800&display=swap" rel="stylesheet">
62+
<link rel="preload" as="style" href="https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,wght@12..96,600;12..96,700;12..96,800&family=Sora:wght@400;500;600;700;800&display=swap">
63+
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,wght@12..96,600;12..96,700;12..96,800&family=Sora:wght@400;500;600;700;800&display=swap" media="print" onload="this.media='all'">
64+
<noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,wght@12..96,600;12..96,700;12..96,800&family=Sora:wght@400;500;600;700;800&display=swap"></noscript>
6365
<style>
6466
:root{
6567
--blue:#1769e0;
@@ -349,7 +351,7 @@
349351
.footer-brand .blue{color:var(--blue)}
350352
.footer-links{display:flex;gap:18px;color:var(--muted);font-size:13px}
351353
.footer-links a:hover{color:var(--blue)}
352-
.footer-note{font-size:12px;color:#80868b;margin:18px 0 0}
354+
.footer-note{font-size:12px;color:#565d68;margin:18px 0 0}
353355

354356
/* Entrance choreography */
355357
html.anim .app-kicker{animation:quiet .62s var(--soft) .10s forwards}
@@ -500,7 +502,7 @@
500502
<header class="nav">
501503
<nav class="container nav-inner" aria-label="Primary navigation">
502504
<a class="brand" href="#top" aria-label="InstaReply Bot home">
503-
<img src="assets/app-icon.jpg" alt="InstaReply Bot app icon">
505+
<img src="assets/app-icon.jpg" alt="InstaReply Bot app icon" width="240" height="240">
504506
<span>Insta<span class="blue">Reply</span> Bot</span>
505507
</a>
506508
<div class="nav-links">
@@ -516,7 +518,7 @@
516518
</header>
517519

518520
<div class="mobile-scrim" id="mobile-scrim"></div>
519-
<div class="mobile-sheet" id="mobile-sheet" aria-hidden="true">
521+
<div class="mobile-sheet" id="mobile-sheet" aria-hidden="true" inert>
520522
<a href="#features">Overview</a>
521523
<a href="#how">How it works</a>
522524
<a href="#screens">Screenshots</a>
@@ -543,9 +545,9 @@ <h1>
543545

544546
<div class="hero-visual">
545547
<div class="hero-frame">
546-
<img src="assets/showcase.jpg" alt="InstaReply Bot product showcase with Android screens">
548+
<img src="assets/showcase.jpg" alt="InstaReply Bot product showcase with Android screens" width="1200" height="800">
547549
<div class="app-sign">
548-
<img src="assets/app-icon.jpg" alt="">
550+
<img src="assets/app-icon.jpg" alt="" width="240" height="240">
549551
<div><strong>InstaReply Bot</strong><span>AI Auto-Reply for Instagram DMs</span></div>
550552
</div>
551553
</div>
@@ -588,7 +590,7 @@ <h2>One clear chain from message to response.</h2>
588590
<p class="section-lead">The supplied workflow visual shows the product's actual operating sequence.</p>
589591
</div>
590592
<div class="workflow-layout">
591-
<div class="workflow-image"><img src="assets/workflow.jpg" alt="InstaReply Bot seven-stage workflow infographic"></div>
593+
<div class="workflow-image"><img src="assets/workflow.jpg" alt="InstaReply Bot seven-stage workflow infographic" width="1200" height="800"></div>
592594
<div class="workflow-notes">
593595
<div class="workflow-step"><div class="step-number">01</div><div><strong>DM arrives</strong><span>Instagram posts a notification on the Android device.</span></div></div>
594596
<div class="workflow-step"><div class="step-number">02</div><div><strong>Notification captured</strong><span>InstaReply Bot reads the supported notification.</span></div></div>
@@ -611,19 +613,19 @@ <h2>See the actual app before you install it.</h2>
611613

612614
<div class="screenshot-rail">
613615
<figure class="shot portrait">
614-
<div class="media-frame"><img src="assets/dashboard.jpg" alt="InstaReply Bot dashboard screen"></div>
616+
<div class="media-frame"><img src="assets/dashboard.jpg" alt="InstaReply Bot dashboard screen" width="429" height="900"></div>
615617
<figcaption>Dashboard and activity</figcaption>
616618
</figure>
617619
<figure class="shot portrait">
618-
<div class="media-frame"><img src="assets/rule-engine.jpg" alt="InstaReply Bot Smart Rule Engine screen"></div>
620+
<div class="media-frame"><img src="assets/rule-engine.jpg" alt="InstaReply Bot Smart Rule Engine screen" width="416" height="900"></div>
619621
<figcaption>Smart Rule Engine</figcaption>
620622
</figure>
621623
<figure class="shot portrait">
622-
<div class="media-frame"><img src="assets/ai-settings.jpg" alt="InstaReply Bot AI settings screen"></div>
624+
<div class="media-frame"><img src="assets/ai-settings.jpg" alt="InstaReply Bot AI settings screen" width="416" height="900"></div>
623625
<figcaption>AI settings and providers</figcaption>
624626
</figure>
625627
<figure class="shot portrait">
626-
<div class="media-frame"><img src="assets/poster.jpg" alt="InstaReply Bot promotional poster"></div>
628+
<div class="media-frame"><img src="assets/poster.jpg" alt="InstaReply Bot promotional poster" width="506" height="900"></div>
627629
<figcaption>Product overview</figcaption>
628630
</figure>
629631
</div>
@@ -648,8 +650,8 @@ <h2>Configure the behavior directly in the Android UI.</h2>
648650
</ul>
649651
</div>
650652
<div class="config-shots">
651-
<figure><div class="media-frame"><img src="assets/ai-settings.jpg" alt="Actual InstaReply Bot AI settings screen"></div></figure>
652-
<figure><div class="media-frame"><img src="assets/rule-engine.jpg" alt="Actual InstaReply Bot rule editor screen"></div></figure>
653+
<figure><div class="media-frame"><img src="assets/ai-settings.jpg" alt="Actual InstaReply Bot AI settings screen" width="416" height="900"></div></figure>
654+
<figure><div class="media-frame"><img src="assets/rule-engine.jpg" alt="Actual InstaReply Bot rule editor screen" width="416" height="900"></div></figure>
653655
</div>
654656
</div>
655657
</div>
@@ -672,7 +674,7 @@ <h2>Install InstaReply Bot and create your first reply rule.</h2>
672674
</div>
673675
</div>
674676
<div class="download-card">
675-
<img src="assets/app-icon.jpg" alt="InstaReply Bot app icon">
677+
<img src="assets/app-icon.jpg" alt="InstaReply Bot app icon" width="240" height="240">
676678
<div><strong>InstaReply Bot</strong><span>AI Auto-Reply for Instagram DMs</span></div>
677679
<a class="button button-primary" href="https://github.com/nandandas2407-web/InstaReplyBot/releases/latest" target="_blank" rel="noopener">Get the APK</a>
678680
</div>
@@ -721,13 +723,15 @@ <h2>Know what the app needs.</h2>
721723
button.setAttribute('aria-expanded','false');
722724
sheet.classList.remove('open');
723725
sheet.setAttribute('aria-hidden','true');
726+
sheet.setAttribute('inert','');
724727
document.body.classList.remove('no-scroll');
725728
}
726729
function openMenu(){
727730
button.classList.add('open');
728731
button.setAttribute('aria-expanded','true');
729732
sheet.classList.add('open');
730-
sheet.setAttribute('aria-hidden','false');
733+
sheet.removeAttribute('aria-hidden');
734+
sheet.removeAttribute('inert');
731735
document.body.classList.add('no-scroll');
732736
}
733737
button.addEventListener('click', () => {

0 commit comments

Comments
 (0)