Skip to content

Commit 3e2074b

Browse files
index
1 parent 2439d10 commit 3e2074b

1 file changed

Lines changed: 375 additions & 0 deletions

File tree

index.html

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

0 commit comments

Comments
 (0)