Skip to content

Commit 8585e33

Browse files
404
1 parent 24ffce5 commit 8585e33

1 file changed

Lines changed: 376 additions & 0 deletions

File tree

404.html

Lines changed: 376 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,376 @@
1+
<!DOCTYPE html>
2+
<html lang="ru">
3+
<head>
4+
<meta charset="UTF-8">
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
6+
<link rel="canonical" href="https://mintscripts.net/" />
7+
<title>mintscripts — Service Status</title>
8+
<style>
9+
:root{
10+
--bg: #0a0d0f;
11+
--bg-card: #12171a;
12+
--bg-card-2: #161c20;
13+
--line: #232b2f;
14+
--text: #e7ecee;
15+
--muted: #7d8b90;
16+
--mint: #2ee6a6;
17+
--amber: #ff9a3c;
18+
--amber-dim: rgba(255,154,60,0.12);
19+
--mono: 'JetBrains Mono', 'SFMono-Regular', Consolas, monospace;
20+
--sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
21+
}
22+
*{box-sizing:border-box;}
23+
html,body{margin:0;padding:0;}
24+
body{
25+
background:
26+
radial-gradient(ellipse 900px 500px at 15% -10%, rgba(255,154,60,0.08), transparent 60%),
27+
radial-gradient(ellipse 700px 500px at 100% 10%, rgba(46,230,166,0.06), transparent 55%),
28+
var(--bg);
29+
color:var(--text);
30+
font-family:var(--sans);
31+
min-height:100vh;
32+
-webkit-font-smoothing:antialiased;
33+
}
34+
a{color:inherit;}
35+
.wrap{
36+
max-width:760px;
37+
margin:0 auto;
38+
padding:56px 24px 80px;
39+
}
40+
.top{
41+
display:flex;
42+
align-items:center;
43+
justify-content:space-between;
44+
margin-bottom:48px;
45+
}
46+
.brand{
47+
font-family:var(--mono);
48+
font-size:15px;
49+
letter-spacing:0.02em;
50+
color:var(--text);
51+
display:flex;
52+
align-items:center;
53+
gap:10px;
54+
}
55+
.brand .dot{
56+
width:8px;height:8px;border-radius:50%;
57+
background:var(--mint);
58+
box-shadow:0 0 0 3px rgba(46,230,166,0.15);
59+
}
60+
.langsw{
61+
display:flex;
62+
border:1px solid var(--line);
63+
border-radius:8px;
64+
overflow:hidden;
65+
font-family:var(--mono);
66+
font-size:12px;
67+
}
68+
.langsw button{
69+
background:transparent;
70+
border:none;
71+
color:var(--muted);
72+
padding:7px 12px;
73+
cursor:pointer;
74+
font-family:var(--mono);
75+
font-size:12px;
76+
transition:.15s;
77+
}
78+
.langsw button.active{
79+
background:var(--bg-card-2);
80+
color:var(--text);
81+
}
82+
.langsw button:hover{color:var(--text);}
83+
84+
.status-badge{
85+
display:inline-flex;
86+
align-items:center;
87+
gap:9px;
88+
background:var(--amber-dim);
89+
border:1px solid rgba(255,154,60,0.35);
90+
color:var(--amber);
91+
font-family:var(--mono);
92+
font-size:12.5px;
93+
letter-spacing:0.03em;
94+
padding:7px 14px 7px 11px;
95+
border-radius:100px;
96+
margin-bottom:28px;
97+
}
98+
.status-badge .pulse{
99+
width:7px;height:7px;border-radius:50%;
100+
background:var(--amber);
101+
animation:pulse 1.8s ease-in-out infinite;
102+
}
103+
@keyframes pulse{
104+
0%,100%{opacity:1; box-shadow:0 0 0 0 rgba(255,154,60,0.5);}
105+
50%{opacity:0.6; box-shadow:0 0 0 5px rgba(255,154,60,0);}
106+
}
107+
108+
h1{
109+
font-family:var(--sans);
110+
font-weight:700;
111+
font-size:clamp(28px,4.5vw,38px);
112+
line-height:1.15;
113+
letter-spacing:-0.01em;
114+
margin:0 0 16px;
115+
}
116+
.lede{
117+
color:var(--muted);
118+
font-size:16.5px;
119+
line-height:1.65;
120+
max-width:56ch;
121+
margin:0 0 40px;
122+
}
123+
124+
.card{
125+
background:var(--bg-card);
126+
border:1px solid var(--line);
127+
border-radius:14px;
128+
padding:26px 26px 22px;
129+
margin-bottom:20px;
130+
}
131+
.card h2{
132+
font-family:var(--mono);
133+
font-size:12px;
134+
text-transform:uppercase;
135+
letter-spacing:0.08em;
136+
color:var(--muted);
137+
margin:0 0 16px;
138+
display:flex;
139+
align-items:center;
140+
gap:10px;
141+
}
142+
.card h2::after{
143+
content:'';
144+
flex:1;
145+
height:1px;
146+
background:var(--line);
147+
}
148+
.card p{
149+
font-size:15px;
150+
line-height:1.7;
151+
color:#c7cfd2;
152+
margin:0 0 12px;
153+
}
154+
.card p:last-child{margin-bottom:0;}
155+
.card strong{color:var(--text); font-weight:600;}
156+
157+
.log{
158+
font-family:var(--mono);
159+
font-size:13px;
160+
line-height:2.1;
161+
}
162+
.log .row{
163+
display:flex;
164+
gap:14px;
165+
align-items:flex-start;
166+
color:#aeb8bc;
167+
}
168+
.log .t{
169+
color:var(--muted);
170+
flex-shrink:0;
171+
width:64px;
172+
}
173+
.log .row.ok .marker{color:var(--mint);}
174+
.log .row.warn .marker{color:var(--amber);}
175+
.log .marker{margin-right:2px;}
176+
177+
.grid2{
178+
display:grid;
179+
grid-template-columns:1fr 1fr;
180+
gap:20px;
181+
}
182+
@media (max-width:600px){
183+
.grid2{grid-template-columns:1fr;}
184+
}
185+
.stat{
186+
background:var(--bg-card-2);
187+
border:1px solid var(--line);
188+
border-radius:10px;
189+
padding:16px 18px;
190+
}
191+
.stat .label{
192+
font-family:var(--mono);
193+
font-size:11px;
194+
color:var(--muted);
195+
text-transform:uppercase;
196+
letter-spacing:0.06em;
197+
margin-bottom:6px;
198+
}
199+
.stat .value{
200+
font-size:15px;
201+
color:var(--text);
202+
font-weight:600;
203+
}
204+
.stat .value.ok{color:var(--mint);}
205+
206+
.cta{
207+
display:flex;
208+
gap:12px;
209+
margin-top:32px;
210+
flex-wrap:wrap;
211+
}
212+
.btn{
213+
display:inline-flex;
214+
align-items:center;
215+
gap:9px;
216+
padding:13px 20px;
217+
border-radius:10px;
218+
text-decoration:none;
219+
font-size:14.5px;
220+
font-weight:600;
221+
transition:.15s;
222+
}
223+
.btn-primary{
224+
background:var(--mint);
225+
color:#062318;
226+
}
227+
.btn-primary:hover{
228+
background:#3ffcbb;
229+
}
230+
.btn-ghost{
231+
background:transparent;
232+
border:1px solid var(--line);
233+
color:var(--text);
234+
}
235+
.btn-ghost:hover{
236+
border-color:#3a444a;
237+
background:var(--bg-card-2);
238+
}
239+
240+
.foot{
241+
margin-top:56px;
242+
padding-top:24px;
243+
border-top:1px solid var(--line);
244+
display:flex;
245+
justify-content:space-between;
246+
align-items:center;
247+
flex-wrap:wrap;
248+
gap:12px;
249+
color:var(--muted);
250+
font-family:var(--mono);
251+
font-size:12px;
252+
}
253+
254+
[data-lang]{display:none;}
255+
html[data-active="ru"] [data-lang="ru"]{display:block;}
256+
html[data-active="ru"] span[data-lang="ru"]{display:inline;}
257+
html[data-active="en"] [data-lang="en"]{display:block;}
258+
html[data-active="en"] span[data-lang="en"]{display:inline;}
259+
</style>
260+
</head>
261+
<body>
262+
<div class="wrap">
263+
264+
<div class="top">
265+
<div class="brand"><span class="dot"></span> mintscripts.net</div>
266+
<div class="langsw">
267+
<button id="btn-ru">RU</button>
268+
<button id="btn-en">EN</button>
269+
</div>
270+
</div>
271+
272+
<div class="status-badge"><span class="pulse"></span>
273+
<span data-lang="ru">Работаем на резервном сервере</span>
274+
<span data-lang="en">Running on backup server</span>
275+
</div>
276+
277+
<div data-lang="ru">
278+
<h1>Основной сервер временно недоступен</h1>
279+
<p class="lede">Из-за аномальной жары в дата-центре в Нидерландах произошло возгорание оборудования. Мы уже перенесли сайт на резервный хостинг — сервис снова доступен, а студия как обычно работает над проектами и заказами.</p>
280+
</div>
281+
<div data-lang="en">
282+
<h1>Our main server is temporarily down</h1>
283+
<p class="lede">A record heatwave caused a fire in the equipment at our data center in the Netherlands. We've already moved the site to backup hosting — the service is back up, and the studio is working on projects and orders as usual.</p>
284+
</div>
285+
286+
<div class="card">
287+
<h2><span data-lang="ru">Что произошло</span><span data-lang="en">What happened</span></h2>
288+
<div data-lang="ru">
289+
<p>Экстремальная температура в регионе размещения нашего провайдера привела к перегреву серверного оборудования и последующему возгоранию в одном из машинных залов дата-центра. <strong>Основной сервер mintscripts.net вышел из строя</strong>, доступ к сайту был прерван.</p>
290+
<p>Никакого взлома, атаки или утечки данных — причина чисто техническая и связана с аварией у хостинг-провайдера, а не с нашей инфраструктурой или безопасностью проекта.</p>
291+
</div>
292+
<div data-lang="en">
293+
<p>Extreme heat in the region hosting our provider caused the server hardware to overheat, leading to a fire in one of the data center's server rooms. <strong>The main mintscripts.net server went offline</strong> and the site became unreachable.</p>
294+
<p>This was not a hack, attack, or data leak — the cause is purely a hardware/infrastructure incident at the hosting provider, unrelated to our own security or the project's data.</p>
295+
</div>
296+
</div>
297+
298+
<div class="card">
299+
<h2><span data-lang="ru">Текущий статус</span><span data-lang="en">Current status</span></h2>
300+
<div class="log">
301+
<div class="row warn"><span class="t">14:02</span><span><span class="marker"></span> <span data-lang="ru">Основной сервер (Нидерланды) — недоступен</span><span data-lang="en">Primary server (Netherlands) — offline</span></span></div>
302+
<div class="row ok"><span class="t">14:47</span><span><span class="marker"></span> <span data-lang="ru">Резервный хостинг подключён и настроен</span><span data-lang="en">Backup hosting connected and configured</span></span></div>
303+
<div class="row ok"><span class="t">15:10</span><span><span class="marker"></span> <span data-lang="ru">mintscripts.net снова доступен</span><span data-lang="en">mintscripts.net is back online</span></span></div>
304+
<div class="row ok"><span class="t">now</span><span><span class="marker"></span> <span data-lang="ru">Студия работает в штатном режиме</span><span data-lang="en">Studio operating as normal</span></span></div>
305+
</div>
306+
</div>
307+
308+
<div class="grid2">
309+
<div class="stat">
310+
<div class="label" data-lang="ru">Сайт</div>
311+
<div class="label" data-lang="en">Website</div>
312+
<div class="value ok" data-lang="ru">Работает (резерв)</div>
313+
<div class="value ok" data-lang="en">Online (backup)</div>
314+
</div>
315+
<div class="stat">
316+
<div class="label" data-lang="ru">Студия / заказы</div>
317+
<div class="label" data-lang="en">Studio / orders</div>
318+
<div class="value ok" data-lang="ru">В штатном режиме</div>
319+
<div class="value ok" data-lang="en">Operating as normal</div>
320+
</div>
321+
</div>
322+
323+
<div class="card" style="margin-top:20px;">
324+
<h2><span data-lang="ru">Данные и заказы</span><span data-lang="en">Data & orders</span></h2>
325+
<div data-lang="ru">
326+
<p>Все базы данных, скрипты и заказы клиентов <strong>не пострадали</strong> — резервные копии были развёрнуты на новом хостинге без потерь. Если у вас открыт заказ или тикет, он в работе, как и прежде.</p>
327+
</div>
328+
<div data-lang="en">
329+
<p>All databases, scripts, and client orders are <strong>safe and unaffected</strong> — backups were deployed to the new hosting without any loss. If you have an open order or ticket, it's being handled as usual.</p>
330+
</div>
331+
</div>
332+
333+
<div data-lang="ru">
334+
<p style="color:var(--muted); font-size:14.5px; line-height:1.7; margin-top:8px;">Если у вас остались вопросы, срочный заказ или нужна помощь прямо сейчас — напишите нам в Telegram, мы на связи.</p>
335+
</div>
336+
<div data-lang="en">
337+
<p style="color:var(--muted); font-size:14.5px; line-height:1.7; margin-top:8px;">If you have questions, an urgent order, or need help right now — message us on Telegram, we're online.</p>
338+
</div>
339+
340+
<div class="cta">
341+
<a class="btn btn-primary" href="https://t.me/mintscripts" target="_blank" rel="noopener">
342+
<span data-lang="ru">Написать в Telegram</span>
343+
<span data-lang="en">Message us on Telegram</span>
344+
</a>
345+
<a class="btn btn-ghost" href="https://t.me/mintscripts_studio" target="_blank" rel="noopener">
346+
<span data-lang="ru">Канал студии</span>
347+
<span data-lang="en">Studio channel</span>
348+
</a>
349+
</div>
350+
351+
<div class="foot">
352+
<span>mintscripts.net</span>
353+
<span data-lang="ru">Статус обновляется вручную командой mintscripts</span>
354+
<span data-lang="en">Status updated manually by the mintscripts team</span>
355+
</div>
356+
357+
</div>
358+
359+
<script>
360+
function setLang(lang){
361+
document.documentElement.setAttribute('data-active', lang);
362+
document.documentElement.setAttribute('lang', lang);
363+
document.getElementById('btn-ru').classList.toggle('active', lang==='ru');
364+
document.getElementById('btn-en').classList.toggle('active', lang==='en');
365+
try{ localStorage.setItem('ms_lang', lang); }catch(e){}
366+
}
367+
var saved = null;
368+
try{ saved = localStorage.getItem('ms_lang'); }catch(e){}
369+
var browserLang = (navigator.language || navigator.userLanguage || 'en').toLowerCase();
370+
var initial = saved || (browserLang.indexOf('ru') === 0 ? 'ru' : 'en');
371+
setLang(initial);
372+
document.getElementById('btn-ru').addEventListener('click', function(){ setLang('ru'); });
373+
document.getElementById('btn-en').addEventListener('click', function(){ setLang('en'); });
374+
</script>
375+
</body>
376+
</html>

0 commit comments

Comments
 (0)