403.html 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Access Blocked — parsell.me</title>
  7. <link rel="icon" href="data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAzMiAzMic+PHJlY3Qgd2lkdGg9JzMyJyBoZWlnaHQ9JzMyJyByeD0nNycgZmlsbD0nIzFiMTgzMCcvPjxwYXRoIGQ9J00xNiA2IEwyNiAxNC41IEwyMy41IDE0LjUgTDIzLjUgMjUgTDE4LjUgMjUgTDE4LjUgMTguNSBMMTMuNSAxOC41IEwxMy41IDI1IEw4LjUgMjUgTDguNSAxNC41IEw2IDE0LjUgWicgZmlsbD0nI2ZmY2NiOCcvPjwvc3ZnPg==">
  8. <link rel="preconnect" href="https://fonts.googleapis.com">
  9. <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  10. <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
  11. <style>
  12. /* Self-contained: error pages must render even if no other request succeeds.
  13. Font + background tile are progressive-enhancement — system fonts and a
  14. solid dark fill take over if they fail to load. */
  15. * { box-sizing: border-box; margin: 0; padding: 0; }
  16. html, body {
  17. height: 100%;
  18. font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
  19. color: #fff;
  20. overflow: hidden;
  21. }
  22. body {
  23. display: flex;
  24. align-items: center;
  25. justify-content: center;
  26. padding: 1.5rem;
  27. background:
  28. linear-gradient(rgba(20, 18, 32, 0.55), rgba(20, 18, 32, 0.55)),
  29. #14121f url('/background.jpg') 0 0 / 960px repeat fixed;
  30. }
  31. .card {
  32. max-width: 480px;
  33. width: 100%;
  34. background: rgba(255, 255, 255, 0.06);
  35. backdrop-filter: blur(24px) saturate(160%);
  36. -webkit-backdrop-filter: blur(24px) saturate(160%);
  37. border: 1px solid rgba(255, 255, 255, 0.12);
  38. border-radius: 24px;
  39. padding: 2.5rem 2.25rem;
  40. text-align: center;
  41. box-shadow:
  42. 0 14px 50px rgba(0, 0, 0, 0.4),
  43. inset 0 1px 0 rgba(255, 255, 255, 0.1);
  44. }
  45. .icon-circle {
  46. width: 56px;
  47. height: 56px;
  48. margin: 0 auto 1.25rem;
  49. border-radius: 50%;
  50. background: rgba(247, 129, 102, 0.18);
  51. color: #ffb199;
  52. display: flex;
  53. align-items: center;
  54. justify-content: center;
  55. font-size: 1.75rem;
  56. font-weight: 600;
  57. }
  58. .status {
  59. font-family: "SF Mono", Menlo, Consolas, monospace;
  60. font-size: 0.75rem;
  61. color: #f78166;
  62. letter-spacing: 0.1em;
  63. text-transform: uppercase;
  64. margin-bottom: 0.6rem;
  65. }
  66. h1 {
  67. font-size: 1.6rem;
  68. font-weight: 600;
  69. letter-spacing: -0.02em;
  70. margin-bottom: 0.75rem;
  71. }
  72. p {
  73. color: rgba(255, 255, 255, 0.72);
  74. line-height: 1.55;
  75. font-size: 0.95rem;
  76. margin-bottom: 0.75rem;
  77. }
  78. .host {
  79. font-family: "SF Mono", Menlo, Consolas, monospace;
  80. color: #fff;
  81. background: rgba(255, 255, 255, 0.08);
  82. padding: 0.15rem 0.4rem;
  83. border-radius: 4px;
  84. font-size: 0.88em;
  85. word-break: break-all;
  86. }
  87. .btn {
  88. display: inline-block;
  89. margin-top: 1.25rem;
  90. background: rgba(255, 255, 255, 0.05);
  91. border: 1px solid rgba(255, 255, 255, 0.15);
  92. color: #fff;
  93. padding: 0.5rem 1.1rem;
  94. border-radius: 8px;
  95. font-size: 0.88rem;
  96. cursor: pointer;
  97. font-family: inherit;
  98. text-decoration: none;
  99. transition: border-color 0.15s, background 0.15s;
  100. }
  101. .btn:hover {
  102. border-color: rgba(255, 255, 255, 0.3);
  103. background: rgba(255, 255, 255, 0.12);
  104. }
  105. .btn + .btn { margin-left: 0.5rem; }
  106. .footer {
  107. margin-top: 1.75rem;
  108. padding-top: 1.25rem;
  109. border-top: 1px solid rgba(255, 255, 255, 0.1);
  110. font-size: 0.8rem;
  111. color: rgba(255, 255, 255, 0.55);
  112. font-family: "SF Mono", Menlo, Consolas, monospace;
  113. }
  114. </style>
  115. </head>
  116. <body>
  117. <div class="card">
  118. <div class="icon-circle">✕</div>
  119. <div class="status">403 · Access Blocked</div>
  120. <h1>Access blocked</h1>
  121. <p>Your request to <span class="host" id="host">this address</span> was blocked by our security layer.</p>
  122. <p>This is usually temporary. Wait a moment, then try again. If it keeps happening, your address may have been flagged.</p>
  123. <a class="btn" href="https://parsell.me">Go home</a>
  124. <button class="btn" onclick="location.reload()">Try again</button>
  125. <div class="footer">parsell.me</div>
  126. </div>
  127. <script>
  128. (function () {
  129. var loc = window.location.host + window.location.pathname;
  130. if (loc.length > 80) loc = loc.slice(0, 77) + '...';
  131. document.getElementById('host').textContent = loc;
  132. })();
  133. </script>
  134. </body>
  135. </html>