File size: 4,234 Bytes
469a4d4 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 | <!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ȚĂ · REVENIRE ÎN ~15 MINUTE
</div>
<div class="db-status">
<div><span class="db-ok">✓</span> Firebase Firestore — ACTIV</div>
<div><span class="db-ok">✓</span> Cloudinary Storage — ACTIV</div>
<div id="server-line"><span class="db-ok">✓</span> 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> Server Flask — ACTIV';
} else {
line.innerHTML = '<span class="db-err">✕</span> Server Flask — EROARE ' + r.status;
}
})
.catch(() => {
document.getElementById('server-line').innerHTML =
'<span class="db-err">✕</span> Server Flask — INACTIV';
});
</script>
</body>
</html>
|