| <!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; |
| } |
| |
| |
| .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; |
| } |
| |
| |
| .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); } |
| |
| |
| .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>`; |
| } |
| |
| |
| 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> |
|
|