|
1 | 1 | <!doctype html> |
2 | | -<html lang="en"> |
| 2 | +<html lang="en" data-lang="en"> |
3 | 3 | <head> |
4 | 4 | <meta charset="utf-8"> |
5 | 5 | <meta name="viewport" content="width=device-width, initial-scale=1"> |
|
9 | 9 | <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> |
10 | 10 | <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;800;900&display=swap" rel="stylesheet"> |
11 | 11 | <link rel="stylesheet" href="/styles.css"> |
| 12 | + <link rel="icon" href="/favicon.svg" type="image/svg+xml"> |
| 13 | + <link rel="icon" href="/favicon-512.png" sizes="512x512"> |
| 14 | + <link rel="apple-touch-icon" href="/apple-touch-icon.png"> |
| 15 | + <link rel="alternate" href="https://metridex.com/" hreflang="en"> |
| 16 | + <link rel="alternate" href="https://metridex.com/ru" hreflang="ru"> |
| 17 | + <meta name="theme-color" content="#070709" media="(prefers-color-scheme: dark)"> |
| 18 | + <meta name="theme-color" content="#faf8f2" media="(prefers-color-scheme: light)"> |
| 19 | + <!-- Open Graph --> |
| 20 | + <meta property="og:title" content="Metridex — QuickScan for on‑chain risk"> |
| 21 | + <meta property="og:description" content="Scan tokens in seconds. Deep checks on demand."> |
| 22 | + <meta property="og:image" content="https://metridex.com/og-image.png"> |
| 23 | + <meta property="og:url" content="https://metridex.com/"> |
| 24 | + <meta property="og:type" content="website"> |
| 25 | + <!-- Twitter --> |
| 26 | + <meta name="twitter:card" content="summary_large_image"> |
| 27 | + <meta name="twitter:title" content="Metridex — QuickScan for on‑chain risk"> |
| 28 | + <meta name="twitter:description" content="Scan tokens in seconds. Deep checks on demand."> |
| 29 | + <meta name="twitter:image" content="https://metridex.com/og-image.png"> |
| 30 | + <!-- Plausible analytics (privacy-friendly) --> |
| 31 | + <script defer data-domain="metridex.com" src="https://plausible.io/js/script.js"></script> |
12 | 32 | </head> |
13 | 33 | <body> |
14 | 34 | <!-- Navbar (fixed) --> |
|
18 | 38 | <span class="logo-mark">M</span><span class="logo-text">Metridex</span> |
19 | 39 | </div> |
20 | 40 | <nav class="nav-links" aria-label="Primary"> |
21 | | - <a href="#about">About</a> |
22 | | - <a href="#features">Features</a> |
23 | | - <a href="#screens">Screens</a> |
24 | | - <a href="#pricing">Pricing</a> |
25 | | - <a href="/articles.html">Articles</a> |
26 | | - <a href="#faq">FAQ</a> |
27 | | - <a href="#contact">Contact</a> |
| 41 | + <a data-i18n="nav.about" href="#about">About</a> |
| 42 | + <a data-i18n="nav.features" href="#features">Features</a> |
| 43 | + <a data-i18n="nav.screens" href="#screens">Screens</a> |
| 44 | + <a data-i18n="nav.pricing" href="#pricing">Pricing</a> |
| 45 | + <a data-i18n="nav.articles" href="/articles.html">Articles</a> |
| 46 | + <a data-i18n="nav.faq" href="#faq">FAQ</a> |
| 47 | + <a data-i18n="nav.contact" href="#contact">Contact</a> |
28 | 48 | </nav> |
29 | 49 | <div class="nav-actions"> |
| 50 | + <button id="langToggle" class="icon-btn" aria-label="Toggle language" title="EN / RU">EN</button> |
30 | 51 | <button id="themeToggle" class="icon-btn" aria-label="Toggle theme" title="Toggle theme">🌙</button> |
31 | 52 | </div> |
32 | 53 | <button class="burger" id="burger" aria-label="Open menu" aria-expanded="false">☰</button> |
33 | 54 | </div> |
34 | 55 | </header> |
35 | 56 |
|
36 | 57 | <!-- Hero --> |
37 | | - <section class="hero"> |
| 58 | + <section class="hero reveal"> |
38 | 59 | <div class="container hero-inner"> |
39 | 60 | <div class="hero-copy"> |
40 | | - <h1><span class="grad">On‑chain Risk Metrics</span> for DeFi & Telegram</h1> |
41 | | - <p class="sub">QuickScan in seconds. Deep checks on demand.</p> |
| 61 | + <h1><span class="grad" data-i18n="hero.title_a">On‑chain Risk Metrics</span> <span data-i18n="hero.title_b">for DeFi & Telegram</span></h1> |
| 62 | + <p class="sub" data-i18n="hero.sub">QuickScan in seconds. Deep checks on demand.</p> |
42 | 63 | <div class="cta-row"> |
43 | 64 | <a class="cta cta-bot large" href="https://t.me/MetridexBot" target="_blank" rel="noopener"> |
44 | | - <span class="aura"></span><span>Open @MetridexBot</span> |
| 65 | + <span class="aura"></span><span data-i18n="cta.open">Open @MetridexBot</span> |
45 | 66 | </a> |
46 | | - <a class="cta ghost" href="#features">See features</a> |
| 67 | + <a class="cta ghost" href="#features" data-i18n="cta.features">See features</a> |
47 | 68 | </div> |
48 | 69 | </div> |
49 | 70 | <div class="hero-card glass"> |
50 | | - <h3>QuickScan snapshot</h3> |
| 71 | + <h3 data-i18n="hero.card_title">QuickScan snapshot</h3> |
51 | 72 | <ul> |
52 | | - <li>Δ 5m / 1h / 6h / 24h</li> |
53 | | - <li>Liquidity & holders</li> |
54 | | - <li>Honeypot flags</li> |
55 | | - <li>Shareable report</li> |
| 73 | + <li data-i18n="hero.card_li1">Δ 5m / 1h / 6h / 24h</li> |
| 74 | + <li data-i18n="hero.card_li2">Liquidity & holders</li> |
| 75 | + <li data-i18n="hero.card_li3">Honeypot flags</li> |
| 76 | + <li data-i18n="hero.card_li4">Shareable report</li> |
56 | 77 | </ul> |
57 | 78 | </div> |
58 | 79 | </div> |
59 | 80 | </section> |
60 | 81 |
|
61 | 82 | <!-- About (centered band) --> |
62 | | - <section id="about" class="section band center"> |
| 83 | + <section id="about" class="section band center reveal"> |
63 | 84 | <div class="container band-inner"> |
64 | 85 | <div class="band-copy"> |
65 | | - <h2>About</h2> |
66 | | - <p>Metridex helps communities, launchpads and traders spot risk signals fast: liquidity, holder patterns, contract flags, domain reputation (WHOIS/RDAP), SSL, Wayback and more.</p> |
| 86 | + <h2 data-i18n="about.title">About</h2> |
| 87 | + <p data-i18n="about.copy">Metridex helps communities, launchpads and traders spot risk signals fast: liquidity, holder patterns, contract flags, domain reputation (WHOIS/RDAP), SSL, Wayback and more.</p> |
67 | 88 | </div> |
68 | 89 | </div> |
69 | 90 | </section> |
70 | 91 |
|
71 | 92 | <!-- Features --> |
72 | | - <section id="features" class="section alt"> |
| 93 | + <section id="features" class="section alt reveal"> |
73 | 94 | <div class="container"> |
74 | | - <h2>Features</h2> |
| 95 | + <h2 data-i18n="features.title">Features</h2> |
75 | 96 | <div class="features-grid"> |
76 | 97 | <article class="feature glass"> |
77 | | - <h3>⚡ Quick</h3> |
78 | | - <p>Instant QuickScan with Δ‑buttons. No waiting, no noise.</p> |
| 98 | + <h3 data-i18n="feat.quick_t">⚡ Quick</h3> |
| 99 | + <p data-i18n="feat.quick_d">Instant QuickScan with Δ‑buttons. No waiting, no noise.</p> |
79 | 100 | </article> |
80 | 101 | <article class="feature glass"> |
81 | | - <h3>🧠 Deep</h3> |
82 | | - <p>WHOIS/RDAP, SSL, Wayback; on‑chain roles — only when needed.</p> |
| 102 | + <h3 data-i18n="feat.deep_t">🧠 Deep</h3> |
| 103 | + <p data-i18n="feat.deep_d">WHOIS/RDAP, SSL, Wayback; on‑chain roles — only when needed.</p> |
83 | 104 | </article> |
84 | 105 | <article class="feature glass"> |
85 | | - <h3>🧱 Tech</h3> |
86 | | - <p>Render (Flask/Gunicorn) + Cloudflare Worker ds‑proxy.</p> |
| 106 | + <h3 data-i18n="feat.tech_t">🧱 Tech</h3> |
| 107 | + <p data-i18n="feat.tech_d">Render (Flask/Gunicorn) + Cloudflare Worker ds‑proxy.</p> |
87 | 108 | </article> |
88 | 109 | <article class="feature glass"> |
89 | | - <h3>✅ Reliable</h3> |
90 | | - <p>Stateless callbacks, idempotent delivery, cache‑first detail scan.</p> |
| 110 | + <h3 data-i18n="feat.rel_t">✅ Reliable</h3> |
| 111 | + <p data-i18n="feat.rel_d">Stateless callbacks, idempotent delivery, cache‑first detail scan.</p> |
91 | 112 | </article> |
92 | 113 | </div> |
93 | 114 | </div> |
94 | 115 | </section> |
95 | 116 |
|
96 | | - <!-- Screens (restored) --> |
97 | | - <section id="screens" class="section"> |
| 117 | + <!-- Screens --> |
| 118 | + <section id="screens" class="section reveal"> |
98 | 119 | <div class="container"> |
99 | | - <h2>Screens</h2> |
| 120 | + <h2 data-i18n="screens.title">Screens</h2> |
100 | 121 | <div class="screens-grid"> |
101 | 122 | <figure class="screen glass"> |
102 | 123 | <div class="viewport"> |
103 | 124 | <img src="/screens/quickscan.png" alt="QuickScan screen" onerror="this.parentElement.classList.add('placeholder'); this.remove();"> |
104 | 125 | </div> |
105 | | - <figcaption>QuickScan</figcaption> |
| 126 | + <figcaption data-i18n="screens.cap1">QuickScan</figcaption> |
106 | 127 | </figure> |
107 | 128 | <figure class="screen glass"> |
108 | 129 | <div class="viewport"> |
109 | 130 | <img src="/screens/details.png" alt="More details screen" onerror="this.parentElement.classList.add('placeholder'); this.remove();"> |
110 | 131 | </div> |
111 | | - <figcaption>More details</figcaption> |
| 132 | + <figcaption data-i18n="screens.cap2">More details</figcaption> |
112 | 133 | </figure> |
113 | 134 | </div> |
114 | | - <p class="hint">Drop your PNGs to <code>/screens/quickscan.png</code> and <code>/screens/details.png</code>. Placeholders will be used if images are absent.</p> |
| 135 | + <p class="hint" data-i18n="screens.hint">Drop your PNGs to <code>/screens/quickscan.png</code> and <code>/screens/details.png</code>. Placeholders will be used if images are absent.</p> |
115 | 136 | </div> |
116 | 137 | </section> |
117 | 138 |
|
118 | 139 | <!-- Pricing --> |
119 | | - <section id="pricing" class="section"> |
| 140 | + <section id="pricing" class="section reveal"> |
120 | 141 | <div class="container"> |
121 | | - <h2>Pricing</h2> |
| 142 | + <h2 data-i18n="pricing.title">Pricing</h2> |
122 | 143 | <div class="cards"> |
123 | 144 | <article class="card glass"> |
124 | | - <h3>Basic</h3><p>QuickScan only</p><div class="price">Free</div> |
| 145 | + <h3 data-i18n="pricing.basic_t">Basic</h3><p data-i18n="pricing.basic_d">QuickScan only</p><div class="price" data-i18n="pricing.basic_p">Free</div> |
125 | 146 | </article> |
126 | 147 | <article class="card glass"> |
127 | | - <h3>Pro</h3><p>QuickScan + Deep checks</p><div class="price">$29/mo</div> |
| 148 | + <h3 data-i18n="pricing.pro_t">Pro</h3><p data-i18n="pricing.pro_d">QuickScan + Deep checks</p><div class="price" data-i18n="pricing.pro_p">$29/mo</div> |
128 | 149 | </article> |
129 | 150 | <article class="card glass"> |
130 | | - <h3>Enterprise</h3><p>White‑label + SLA</p><div class="price">Contact</div> |
| 151 | + <h3 data-i18n="pricing.ent_t">Enterprise</h3><p data-i18n="pricing.ent_d">White‑label + SLA</p><div class="price" data-i18n="pricing.ent_p">Contact</div> |
131 | 152 | </article> |
132 | 153 | </div> |
133 | 154 | </div> |
134 | 155 | </section> |
135 | 156 |
|
136 | | - <!-- FAQ (restored) --> |
137 | | - <section id="faq" class="section alt"> |
| 157 | + <!-- FAQ --> |
| 158 | + <section id="faq" class="section alt reveal"> |
138 | 159 | <div class="container"> |
139 | | - <h2>FAQ</h2> |
| 160 | + <h2 data-i18n="faq.title">FAQ</h2> |
140 | 161 | <div class="faq"> |
141 | 162 | <details class="qa glass" open> |
142 | | - <summary>What does QuickScan check?</summary> |
143 | | - <p>Δ‑metrics, liquidity & holders, basic contract flags, and a shareable report.</p> |
| 163 | + <summary data-i18n="faq.q1">What does QuickScan check?</summary> |
| 164 | + <p data-i18n="faq.a1">Δ‑metrics, liquidity & holders, basic contract flags, and a shareable report.</p> |
144 | 165 | </details> |
145 | 166 | <details class="qa glass"> |
146 | | - <summary>What’s in Deep checks?</summary> |
147 | | - <p>WHOIS/RDAP, SSL chains, Wayback snapshots, and on‑chain roles — on demand.</p> |
| 167 | + <summary data-i18n="faq.q2">What’s in Deep checks?</summary> |
| 168 | + <p data-i18n="faq.a2">WHOIS/RDAP, SSL chains, Wayback snapshots, and on‑chain roles — on demand.</p> |
148 | 169 | </details> |
149 | 170 | <details class="qa glass"> |
150 | | - <summary>Where can I use it?</summary> |
151 | | - <p>Works great for launchpads, pro traders, and Telegram communities.</p> |
| 171 | + <summary data-i18n="faq.q3">Where can I use it?</summary> |
| 172 | + <p data-i18n="faq.a3">Works great for launchpads, pro traders, and Telegram communities.</p> |
152 | 173 | </details> |
153 | 174 | </div> |
154 | 175 | </div> |
155 | 176 | </section> |
156 | 177 |
|
157 | 178 | <!-- Contact --> |
158 | | - <section id="contact" class="section"> |
| 179 | + <section id="contact" class="section reveal"> |
159 | 180 | <div class="container"> |
160 | | - <h2>Contact</h2> |
161 | | - <p>Email: <a class="link" href="mailto:contact@metridex.com">contact@metridex.com</a></p> |
| 181 | + <h2 data-i18n="contact.title">Contact</h2> |
| 182 | + <p><span data-i18n="contact.email">Email:</span> <a class="link" href="mailto:contact@metridex.com">contact@metridex.com</a></p> |
162 | 183 | </div> |
163 | 184 | </section> |
164 | 185 |
|
165 | 186 | <footer class="footer"> |
166 | 187 | <div class="container"> |
167 | | - <p>© <span id="year"></span> Metridex. All rights reserved.</p> |
| 188 | + <p>© <span id="year"></span> <span>Metridex.</span> <span data-i18n="footer.rights">All rights reserved.</span></p> |
168 | 189 | </div> |
169 | 190 | </footer> |
170 | 191 |
|
|
0 commit comments