added 404 ect

This commit is contained in:
2026-03-30 23:03:11 -05:00
parent 0474a9d307
commit 0fd536c799
10 changed files with 404 additions and 0 deletions
+45
View File
@@ -0,0 +1,45 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<title>401 - Unauthorized</title>
<link rel="stylesheet" href="styles.css">
</head>
<body class="error-shell">
<header>
<h1>GD fedl</h1>
<nav>
<a href="index.html">Home</a>
<a href="lists.html">Lists</a>
<a href="errors.html">Errors</a>
</nav>
</header>
<main>
<section class="panel error-page">
<div class="error-grid">
<div class="error-copy">
<p class="error-code">401 Status</p>
<h2>Unauthorized</h2>
<p>This page needs a valid sign-in or a session with the right permissions before it can be opened.</p>
<p class="muted small">If you expected access, log in again or ask a moderator to verify your account.</p>
<div class="error-actions">
<a class="btn" href="index.html">Go Home</a>
<a class="btn ghost-btn" href="errors.html">See All Errors</a>
</div>
</div>
<aside class="error-side">
<div>
<h3>What To Check</h3>
<ul class="error-list">
<li><a href="index.html">Session expired<span>Refresh your login and try again.</span></a></li>
<li><a href="rules.html">Access role<span>Some pages may be limited to staff or trusted users.</span></a></li>
</ul>
</div>
<p class="error-tip">Tip: 401 usually means you can fix it by signing in with the correct account.</p>
</aside>
</div>
</section>
</main>
</body>
</html>
+45
View File
@@ -0,0 +1,45 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<title>403 - Forbidden</title>
<link rel="stylesheet" href="styles.css">
</head>
<body class="error-shell">
<header>
<h1>GD fedl</h1>
<nav>
<a href="index.html">Home</a>
<a href="lists.html">Lists</a>
<a href="errors.html">Errors</a>
</nav>
</header>
<main>
<section class="panel error-page">
<div class="error-grid">
<div class="error-copy">
<p class="error-code">403 Status</p>
<h2>Forbidden</h2>
<p>The page exists, but your current account or network is not allowed to open it.</p>
<p class="muted small">This usually means the request was understood, but access is intentionally blocked.</p>
<div class="error-actions">
<a class="btn" href="index.html">Return Home</a>
<a class="btn ghost-btn" href="errors.html">Browse Error Pages</a>
</div>
</div>
<aside class="error-side">
<div>
<h3>Possible Reasons</h3>
<ul class="error-list">
<li><a href="rules.html">Permission rules<span>You may be missing a role required for this area.</span></a></li>
<li><a href="index.html">Restricted content<span>The route may be intentionally blocked outside staff tools.</span></a></li>
</ul>
</div>
<p class="error-tip">Tip: 403 is different from 401. Logging in may not help unless your permissions change.</p>
</aside>
</div>
</section>
</main>
</body>
</html>
+46
View File
@@ -0,0 +1,46 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<title>404 - Not Found</title>
<link rel="stylesheet" href="styles.css">
</head>
<body class="error-shell">
<header>
<h1>GD fedl</h1>
<nav>
<a href="index.html">Home</a>
<a href="lists.html">Lists</a>
<a href="errors.html">Errors</a>
</nav>
</header>
<main>
<section class="panel error-page">
<div class="error-grid">
<div class="error-copy">
<p class="error-code">404 Status</p>
<h2>Page Not Found</h2>
<p>The page you were looking for is missing, renamed, or never existed on this site.</p>
<p class="muted small">Try the main navigation or jump back to one of the core FEDL sections.</p>
<div class="error-actions">
<a class="btn" href="index.html">Back To Home</a>
<a class="btn ghost-btn" href="lists.html">Open Lists</a>
</div>
</div>
<aside class="error-side">
<div>
<h3>Quick Recovery</h3>
<ul class="error-list">
<li><a href="players.html">Players<span>View the local player tracker.</span></a></li>
<li><a href="roulette.html">Roulette<span>Spin for a random demon instead.</span></a></li>
<li><a href="errors.html">Error gallery<span>Preview the rest of the status pages.</span></a></li>
</ul>
</div>
<p class="error-tip">Tip: If you want this to be your host fallback page, many static hosts look specifically for `404.html`.</p>
</aside>
</div>
</section>
</main>
</body>
</html>
+45
View File
@@ -0,0 +1,45 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<title>429 - Too Many Requests</title>
<link rel="stylesheet" href="styles.css">
</head>
<body class="error-shell">
<header>
<h1>GD fedl</h1>
<nav>
<a href="index.html">Home</a>
<a href="lists.html">Lists</a>
<a href="errors.html">Errors</a>
</nav>
</header>
<main>
<section class="panel error-page">
<div class="error-grid">
<div class="error-copy">
<p class="error-code">429 Status</p>
<h2>Too Many Requests</h2>
<p>You reached the request limit for this resource. Give it a moment, then try again.</p>
<p class="muted small">This is useful for API-heavy routes or rate-limited community data lookups.</p>
<div class="error-actions">
<a class="btn" href="index.html">Go Home</a>
<a class="btn ghost-btn" href="errors.html">View Other Errors</a>
</div>
</div>
<aside class="error-side">
<div>
<h3>Recommended</h3>
<ul class="error-list">
<li><a href="roulette.html">Retry later<span>Wait briefly before sending another request.</span></a></li>
<li><a href="rules.html">Reduce spam<span>Batch lookups instead of refreshing too often.</span></a></li>
</ul>
</div>
<p class="error-tip">Tip: A `Retry-After` header is often paired with 429 responses on live servers.</p>
</aside>
</div>
</section>
</main>
</body>
</html>
+45
View File
@@ -0,0 +1,45 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<title>500 - Internal Server Error</title>
<link rel="stylesheet" href="styles.css">
</head>
<body class="error-shell">
<header>
<h1>GD fedl</h1>
<nav>
<a href="index.html">Home</a>
<a href="lists.html">Lists</a>
<a href="errors.html">Errors</a>
</nav>
</header>
<main>
<section class="panel error-page">
<div class="error-grid">
<div class="error-copy">
<p class="error-code">500 Status</p>
<h2>Internal Server Error</h2>
<p>Something went wrong on the server while trying to complete your request.</p>
<p class="muted small">The request looked valid, but the app hit an unexpected failure before it could respond normally.</p>
<div class="error-actions">
<a class="btn" href="index.html">Back Home</a>
<a class="btn ghost-btn" href="errors.html">All Error Pages</a>
</div>
</div>
<aside class="error-side">
<div>
<h3>Next Steps</h3>
<ul class="error-list">
<li><a href="index.html">Try again<span>The issue may be temporary.</span></a></li>
<li><a href="rules.html">Contact staff<span>Report what action triggered the crash.</span></a></li>
</ul>
</div>
<p class="error-tip">Tip: 500 is the general fallback when the server knows it failed but has no more specific status to use.</p>
</aside>
</div>
</section>
</main>
</body>
</html>
+45
View File
@@ -0,0 +1,45 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<title>502 - Bad Gateway</title>
<link rel="stylesheet" href="styles.css">
</head>
<body class="error-shell">
<header>
<h1>GD fedl</h1>
<nav>
<a href="index.html">Home</a>
<a href="lists.html">Lists</a>
<a href="errors.html">Errors</a>
</nav>
</header>
<main>
<section class="panel error-page">
<div class="error-grid">
<div class="error-copy">
<p class="error-code">502 Status</p>
<h2>Bad Gateway</h2>
<p>A server acting as a gateway or proxy received an invalid response from somewhere upstream.</p>
<p class="muted small">This is a good fit for integrations that depend on external APIs or cached edge services.</p>
<div class="error-actions">
<a class="btn" href="index.html">Go Home</a>
<a class="btn ghost-btn" href="errors.html">More Status Pages</a>
</div>
</div>
<aside class="error-side">
<div>
<h3>Likely Causes</h3>
<ul class="error-list">
<li><a href="roulette.html">Upstream API failed<span>An external data source may have returned malformed data.</span></a></li>
<li><a href="index.html">Proxy issue<span>An edge layer may be misconfigured or temporarily unstable.</span></a></li>
</ul>
</div>
<p class="error-tip">Tip: 502 usually points to infrastructure between your app and another service, not the browser itself.</p>
</aside>
</div>
</section>
</main>
</body>
</html>
+45
View File
@@ -0,0 +1,45 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<title>503 - Service Unavailable</title>
<link rel="stylesheet" href="styles.css">
</head>
<body class="error-shell">
<header>
<h1>GD fedl</h1>
<nav>
<a href="index.html">Home</a>
<a href="lists.html">Lists</a>
<a href="errors.html">Errors</a>
</nav>
</header>
<main>
<section class="panel error-page">
<div class="error-grid">
<div class="error-copy">
<p class="error-code">503 Status</p>
<h2>Service Unavailable</h2>
<p>The site is temporarily unavailable because it is overloaded, restarting, or under maintenance.</p>
<p class="muted small">Unlike a 500, this usually implies the outage is temporary and expected to recover.</p>
<div class="error-actions">
<a class="btn" href="index.html">Return Home</a>
<a class="btn ghost-btn" href="errors.html">Status Gallery</a>
</div>
</div>
<aside class="error-side">
<div>
<h3>While You Wait</h3>
<ul class="error-list">
<li><a href="index.html">Check back soon<span>Maintenance windows often clear quickly.</span></a></li>
<li><a href="rules.html">Read the rules<span>Core static content may still be available elsewhere.</span></a></li>
</ul>
</div>
<p class="error-tip">Tip: A `Retry-After` header is also commonly used with 503 maintenance responses.</p>
</aside>
</div>
</section>
</main>
</body>
</html>
+59
View File
@@ -0,0 +1,59 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<title>Error Pages - GD fedl</title>
<link rel="stylesheet" href="styles.css">
</head>
<body class="error-shell">
<header>
<h1>Error Pages</h1>
<nav>
<a href="index.html">Home</a>
<a href="lists.html">Lists</a>
<a href="players.html">Players</a>
<a href="rules.html">Rules</a>
<a href="roulette.html">Roulette</a>
</nav>
</header>
<main>
<section class="panel error-collection">
<p class="rules-kicker">Status Gallery</p>
<h2>Common HTTP Error Pages</h2>
<p class="muted small">Preview the shared error page designs below. These pages are set up as standalone static HTML files so you can use them directly or wire them into hosting rules later.</p>
<div class="status-grid">
<a class="status-card" href="401.html">
<strong>401</strong>
<span>Unauthorized. Sign-in or permission issue.</span>
</a>
<a class="status-card" href="403.html">
<strong>403</strong>
<span>Forbidden. Access is blocked even if the page exists.</span>
</a>
<a class="status-card" href="404.html">
<strong>404</strong>
<span>Not Found. The requested page could not be located.</span>
</a>
<a class="status-card" href="429.html">
<strong>429</strong>
<span>Too Many Requests. The user should slow down and retry later.</span>
</a>
<a class="status-card" href="500.html">
<strong>500</strong>
<span>Internal Server Error. Something failed on the server side.</span>
</a>
<a class="status-card" href="502.html">
<strong>502</strong>
<span>Bad Gateway. An upstream response was invalid.</span>
</a>
<a class="status-card" href="503.html">
<strong>503</strong>
<span>Service Unavailable. The app is down or under maintenance.</span>
</a>
</div>
</section>
</main>
</body>
</html>
+2
View File
@@ -14,6 +14,7 @@
<a href="lists.html">Lists</a>
<a href="rules.html">Rules</a>
<a href="roulette.html">Roulette</a>
<a href="errors.html">Errors</a>
</nav>
</header>
<main>
@@ -28,6 +29,7 @@
<a class="btn" href="players.html" style="margin-left:8px">Players</a>
<a class="btn" href="rules.html" style="margin-left:8px">Rules</a>
<a class="btn" href="roulette.html" style="margin-left:8px">Roulette</a>
<a class="btn" href="errors.html" style="margin-left:8px">Errors</a>
</div>
</section>
+27
View File
@@ -71,4 +71,31 @@ table.levels-table tr:hover td{background:rgba(255,255,255,0.01)}
.rule-section p{margin:0 0 12px 0;line-height:1.7;color:#dce8f5}
.rules-list{margin:0;padding-left:22px}
.rules-list li{margin:0 0 8px 0;line-height:1.55;color:#dce8f5}
.error-shell main{min-height:calc(100vh - 84px);display:flex;align-items:center;justify-content:center;padding:32px 20px 56px}
.error-page{width:min(100%,980px);padding:0;overflow:hidden;border:1px solid rgba(92,197,255,0.12);background:
linear-gradient(140deg,rgba(92,197,255,0.1),rgba(7,19,38,0.95) 34%),
radial-gradient(circle at top right,rgba(255,255,255,0.07),transparent 36%),
linear-gradient(180deg,rgba(8,18,32,0.98),rgba(7,19,38,0.94))}
.error-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(260px,0.85fr);gap:0}
.error-copy{padding:34px 36px}
.error-code{display:inline-block;margin:0 0 16px 0;padding:8px 14px;border-radius:999px;background:rgba(92,197,255,0.1);color:var(--accent);font-size:0.84rem;font-weight:800;letter-spacing:0.16em;text-transform:uppercase}
.error-copy h2{margin:0 0 12px 0;font-size:clamp(2.2rem,5vw,4.6rem);font-weight:900;letter-spacing:0.03em}
.error-copy p{margin:0 0 14px 0;max-width:56ch;line-height:1.7;color:#dce8f5}
.error-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:24px}
.error-actions .btn{font-weight:700;text-decoration:none}
.ghost-btn{background:transparent;color:var(--text);border:1px solid rgba(255,255,255,0.14)}
.error-side{display:flex;flex-direction:column;justify-content:space-between;gap:18px;padding:34px 30px;background:linear-gradient(180deg,rgba(255,255,255,0.05),rgba(255,255,255,0.02))}
.error-side h3{margin:0 0 10px 0;font-size:1rem;letter-spacing:0.04em;text-transform:uppercase;color:#eef6ff}
.error-list{margin:0;padding:0;list-style:none}
.error-list li + li{margin-top:10px}
.error-list a{display:block;padding:12px 14px;border-radius:10px;background:rgba(255,255,255,0.04);border:1px solid rgba(255,255,255,0.05);color:#eaf2fb;text-decoration:none}
.error-list a span{display:block;color:var(--muted);font-size:0.88rem}
.error-tip{margin:0;padding:14px 16px;border-radius:12px;background:rgba(92,197,255,0.08);border:1px solid rgba(92,197,255,0.12);color:#d9ecff}
.error-collection{width:min(100%,1100px)}
.error-collection h2{margin:0 0 12px 0;font-size:2rem}
.status-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}
.status-card{display:block;padding:18px;border-radius:14px;background:linear-gradient(180deg,rgba(255,255,255,0.05),rgba(255,255,255,0.02));border:1px solid rgba(255,255,255,0.06);text-decoration:none;color:var(--text)}
.status-card strong{display:block;margin-bottom:6px;font-size:1.65rem}
.status-card span{display:block;color:var(--muted);line-height:1.5}
@media(max-width:900px){.layout{flex-direction:column}.sidebar{width:100%}.video-modal iframe{height:320px}.roulette-head{flex-direction:column;align-items:flex-start}.discord-panel{flex-direction:column;align-items:flex-start;padding:22px 20px}.discord-panel h2{font-size:1.55rem}.discord-actions{width:100%;justify-content:flex-start}.rules-view header{padding:16px 18px}.rules-view header h1{font-size:1.55rem}.rules-page{padding:24px 20px}.rules-page h2{font-size:1.65rem}}
@media(max-width:900px){.error-grid{grid-template-columns:1fr}.error-copy,.error-side{padding:24px 20px}.error-copy h2{font-size:2.5rem}}