idea / static /503.html
vsmdvic's picture
Upload 20 files
469a4d4 verified
<!DOCTYPE html>
<html lang="ro">
<head>
<link rel="icon" type="image/svg+xml" href="favicon.svg">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
<title>IDEA | 503</title>
<link rel="stylesheet" href="style.css">
<style>
body {
display:flex; flex-direction:column;
align-items:center; justify-content:center;
min-height:100dvh; padding:28px 20px;
text-align:center;
}
.e-logo {
width:38px; height:38px; opacity:0.18;
margin-bottom:28px;
animation:fadeIn 0.6s ease both;
}
.e-code {
font-family:'Cormorant Garamond', serif;
font-size:96px; font-weight:600;
line-height:1; letter-spacing:10px;
color:rgba(240,240,240,0.05);
animation:fadeIn 0.6s ease 0.05s both;
user-select:none;
}
.e-title {
font-family:'Cormorant Garamond', serif;
font-size:26px; letter-spacing:3px;
margin-top:4px; margin-bottom:10px;
animation:fadeIn 0.6s ease 0.1s both;
}
.e-sub {
font-size:10px; color:var(--white-dim);
letter-spacing:2px; line-height:2.4;
margin-bottom:0;
animation:fadeIn 0.6s ease 0.15s both;
}
/* Banner mentenanță — mai jos, bine spațiat */
.maintenance-banner {
display:none;
margin-top:32px; margin-bottom:0;
padding:14px 24px;
border:1px solid rgba(255,200,60,0.28);
background:rgba(35,26,4,0.7);
font-size:9px; letter-spacing:2px;
color:rgba(255,205,60,0.85);
animation:fadeIn 0.5s ease 0.2s both;
}
.maintenance-banner .mb-dot {
display:inline-block;
width:6px; height:6px; border-radius:50%;
background:rgba(255,200,60,0.8);
margin-right:8px; vertical-align:middle;
animation:blink 1.6s ease-in-out infinite;
}
/* Status DB */
.db-status {
margin-top:32px;
font-size:9px; color:var(--white-faint);
letter-spacing:1px; line-height:2.6;
animation:fadeIn 0.6s ease 0.25s both;
}
.db-ok { color:rgba(77,154,77,0.7); }
.db-err { color:rgba(180,60,60,0.7); }
/* Buton */
.e-actions {
margin-top:36px;
animation:fadeIn 0.6s ease 0.3s both;
display:flex; gap:10px; justify-content:center; flex-wrap:wrap;
}
</style>
</head>
<body>
<img src="logo.svg" class="e-logo" alt="IDEA">
<div class="e-code">503</div>
<div class="e-title">Serviciu Indisponibil</div>
<div class="e-sub">
Serverul este temporar indisponibil sau în mentenanță.<br>
Te rugăm să revii în câteva minute.
</div>
<div class="maintenance-banner" id="maintenance-banner">
<span class="mb-dot"></span>
SERVER ÎN MENTENANȚĂ &nbsp;·&nbsp; REVENIRE ÎN ~15 MINUTE
</div>
<div class="db-status">
<div><span class="db-ok"></span>&nbsp; Firebase Firestore — ACTIV</div>
<div><span class="db-ok"></span>&nbsp; Cloudinary Storage — ACTIV</div>
<div id="server-line"><span class="db-ok"></span>&nbsp; Server Flask — SE VERIFICĂ</div>
</div>
<div class="e-actions" id="e-actions">
<a href="index.html" class="btn-primary" style="text-decoration:none;padding:13px 28px;letter-spacing:3px;">
← LOGIN
</a>
</div>
<script>
const isMaintenance = localStorage.getItem('idea_maintenance') === '1';
const isAdmin = sessionStorage.getItem('vs_role') === 'admin';
if (isMaintenance) {
document.getElementById('maintenance-banner').style.display = 'block';
}
if (isAdmin) {
document.getElementById('e-actions').innerHTML = `
<a href="admin-dashboard.html" class="btn-primary" style="text-decoration:none;padding:13px 28px;letter-spacing:3px;">
ADMIN PANEL →
</a>
<a href="index.html" class="btn-ghost" style="text-decoration:none;padding:13px 20px;">
LOGIN
</a>`;
}
// Ping server
fetch('/drive/test', { signal: AbortSignal.timeout(5000) })
.then(r => {
const line = document.getElementById('server-line');
if (r.ok) {
line.innerHTML = '<span class="db-ok">✓</span>&nbsp; Server Flask — ACTIV';
} else {
line.innerHTML = '<span class="db-err">✕</span>&nbsp; Server Flask — EROARE ' + r.status;
}
})
.catch(() => {
document.getElementById('server-line').innerHTML =
'<span class="db-err">✕</span>&nbsp; Server Flask — INACTIV';
});
</script>
</body>
</html>