easyfaa 0.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +558 -0
  3. data/MIT-LICENSE +22 -0
  4. data/README.md +256 -0
  5. data/app/views/layouts/easyfaa.html.erb +24 -0
  6. data/app/views/recourses/_head.html.erb +3 -0
  7. data/art/autopilot.svg +9 -0
  8. data/art/cube.svg +9 -0
  9. data/art/design.svg +8 -0
  10. data/art/down.html.erb +95 -0
  11. data/art/easyfaa.svg +7 -0
  12. data/art/fountain.svg +9 -0
  13. data/art/goldrush.svg +7 -0
  14. data/art/houston.svg +8 -0
  15. data/art/icons.txt +185 -0
  16. data/art/index.html.erb +157 -0
  17. data/config/locales/easyfaa.en.yml +7 -0
  18. data/lib/easyfaa/copy.rb +5 -0
  19. data/lib/easyfaa/down.rb +19 -0
  20. data/lib/easyfaa/engine.rb +53 -0
  21. data/lib/easyfaa/helpers/flows.rb +53 -0
  22. data/lib/easyfaa/helpers/heads.rb +60 -0
  23. data/lib/easyfaa/helpers/logos.rb +43 -0
  24. data/lib/easyfaa/helpers.rb +11 -0
  25. data/lib/easyfaa/marks.rb +16 -0
  26. data/lib/easyfaa/version.rb +4 -0
  27. data/lib/easyfaa.rb +39 -0
  28. data/public/404.html +118 -0
  29. data/public/_headers +28 -0
  30. data/public/bh/css/bh.css +1 -0
  31. data/public/bh/js/bh.js +152 -0
  32. data/public/bh/theme/bootstrap.css +10 -0
  33. data/public/bh/theme/dawn.css +189 -0
  34. data/public/bh/theme/dracula.css +189 -0
  35. data/public/bh/theme/gruvbox.css +189 -0
  36. data/public/bh/theme/monokai.css +190 -0
  37. data/public/bh/theme/nord.css +189 -0
  38. data/public/bh/theme/one_dark.css +189 -0
  39. data/public/bh/theme/solarized.css +188 -0
  40. data/public/bh/theme/tokyo_night.css +189 -0
  41. data/public/css/easyfaa.css +1 -0
  42. data/public/down/autopilot.html +87 -0
  43. data/public/down/cube.html +87 -0
  44. data/public/down/design.html +87 -0
  45. data/public/down/easyfaa.html +84 -0
  46. data/public/down/fountain.html +87 -0
  47. data/public/down/goldrush.html +87 -0
  48. data/public/down/houston.html +87 -0
  49. data/public/favicon/autopilot-180.png +0 -0
  50. data/public/favicon/autopilot-192.png +0 -0
  51. data/public/favicon/autopilot-512.png +0 -0
  52. data/public/favicon/autopilot-96.png +0 -0
  53. data/public/favicon/autopilot-dev.svg +9 -0
  54. data/public/favicon/autopilot.ico +0 -0
  55. data/public/favicon/autopilot.svg +9 -0
  56. data/public/favicon/autopilot.webmanifest +12 -0
  57. data/public/favicon/cube-180.png +0 -0
  58. data/public/favicon/cube-192.png +0 -0
  59. data/public/favicon/cube-512.png +0 -0
  60. data/public/favicon/cube-96.png +0 -0
  61. data/public/favicon/cube-dev.svg +9 -0
  62. data/public/favicon/cube.ico +0 -0
  63. data/public/favicon/cube.svg +9 -0
  64. data/public/favicon/cube.webmanifest +12 -0
  65. data/public/favicon/design-180.png +0 -0
  66. data/public/favicon/design-192.png +0 -0
  67. data/public/favicon/design-512.png +0 -0
  68. data/public/favicon/design-96.png +0 -0
  69. data/public/favicon/design-dev.svg +8 -0
  70. data/public/favicon/design.ico +0 -0
  71. data/public/favicon/design.svg +8 -0
  72. data/public/favicon/design.webmanifest +12 -0
  73. data/public/favicon/easyfaa-180.png +0 -0
  74. data/public/favicon/easyfaa-192.png +0 -0
  75. data/public/favicon/easyfaa-512.png +0 -0
  76. data/public/favicon/easyfaa-96.png +0 -0
  77. data/public/favicon/easyfaa-dev.svg +7 -0
  78. data/public/favicon/easyfaa.ico +0 -0
  79. data/public/favicon/easyfaa.svg +7 -0
  80. data/public/favicon/easyfaa.webmanifest +12 -0
  81. data/public/favicon/fountain-180.png +0 -0
  82. data/public/favicon/fountain-192.png +0 -0
  83. data/public/favicon/fountain-512.png +0 -0
  84. data/public/favicon/fountain-96.png +0 -0
  85. data/public/favicon/fountain-dev.svg +9 -0
  86. data/public/favicon/fountain.ico +0 -0
  87. data/public/favicon/fountain.svg +9 -0
  88. data/public/favicon/fountain.webmanifest +12 -0
  89. data/public/favicon/goldrush-180.png +0 -0
  90. data/public/favicon/goldrush-192.png +0 -0
  91. data/public/favicon/goldrush-512.png +0 -0
  92. data/public/favicon/goldrush-96.png +0 -0
  93. data/public/favicon/goldrush-dev.svg +7 -0
  94. data/public/favicon/goldrush.ico +0 -0
  95. data/public/favicon/goldrush.svg +7 -0
  96. data/public/favicon/goldrush.webmanifest +12 -0
  97. data/public/favicon/houston-180.png +0 -0
  98. data/public/favicon/houston-192.png +0 -0
  99. data/public/favicon/houston-512.png +0 -0
  100. data/public/favicon/houston-96.png +0 -0
  101. data/public/favicon/houston-dev.svg +8 -0
  102. data/public/favicon/houston.ico +0 -0
  103. data/public/favicon/houston.svg +8 -0
  104. data/public/favicon/houston.webmanifest +12 -0
  105. data/public/favicon.ico +0 -0
  106. data/public/font/bootstrap-icons-6LILWPE2.woff2 +0 -0
  107. data/public/font/bootstrap-icons-FRBPO3H7.woff2 +0 -0
  108. data/public/font/ibm-plex-sans-500-latin-LA7QXWWL.woff2 +0 -0
  109. data/public/font/ibm-plex-sans-500-latin-ext-X4QHZICY.woff2 +0 -0
  110. data/public/font/ibm-plex-sans-500-latin-ext.woff2 +0 -0
  111. data/public/font/ibm-plex-sans-500-latin.woff2 +0 -0
  112. data/public/font/ibm-plex-sans-500-vietnamese-24B6BSND.woff2 +0 -0
  113. data/public/font/ibm-plex-sans-500-vietnamese.woff2 +0 -0
  114. data/public/index.html +165 -0
  115. data/public/js/easyfaa.js +1 -0
  116. data/public/logo/autopilot.png +0 -0
  117. data/public/logo/autopilot.svg +9 -0
  118. data/public/logo/cube.png +0 -0
  119. data/public/logo/cube.svg +9 -0
  120. data/public/logo/design.png +0 -0
  121. data/public/logo/design.svg +8 -0
  122. data/public/logo/easyfaa.png +0 -0
  123. data/public/logo/easyfaa.svg +7 -0
  124. data/public/logo/fountain.png +0 -0
  125. data/public/logo/fountain.svg +9 -0
  126. data/public/logo/goldrush.png +0 -0
  127. data/public/logo/goldrush.svg +7 -0
  128. data/public/logo/houston.png +0 -0
  129. data/public/logo/houston.svg +8 -0
  130. data/public/page/400.html +118 -0
  131. data/public/page/404.html +118 -0
  132. data/public/page/406-unsupported-browser.html +118 -0
  133. data/public/page/422.html +118 -0
  134. data/public/page/500.html +118 -0
  135. data/public/site.webmanifest +12 -0
  136. data/public/theme/bootstrap.css +10 -0
  137. data/public/theme/dawn.css +189 -0
  138. data/public/theme/dracula.css +189 -0
  139. data/public/theme/gruvbox.css +189 -0
  140. data/public/theme/monokai.css +190 -0
  141. data/public/theme/nord.css +189 -0
  142. data/public/theme/one_dark.css +189 -0
  143. data/public/theme/solarized.css +188 -0
  144. data/public/theme/tokyo_night.css +189 -0
  145. data/public/v0.20.0/bh/css/bh.css +1 -0
  146. data/public/v0.20.0/bh/js/bh.js +152 -0
  147. data/public/v0.20.0/bh/theme/bootstrap.css +10 -0
  148. data/public/v0.20.0/bh/theme/dawn.css +189 -0
  149. data/public/v0.20.0/bh/theme/dracula.css +189 -0
  150. data/public/v0.20.0/bh/theme/gruvbox.css +189 -0
  151. data/public/v0.20.0/bh/theme/monokai.css +190 -0
  152. data/public/v0.20.0/bh/theme/nord.css +189 -0
  153. data/public/v0.20.0/bh/theme/one_dark.css +189 -0
  154. data/public/v0.20.0/bh/theme/solarized.css +188 -0
  155. data/public/v0.20.0/bh/theme/tokyo_night.css +189 -0
  156. data/public/v0.20.0/css/easyfaa.css +1 -0
  157. data/public/v0.20.0/font/bootstrap-icons-FRBPO3H7.woff2 +0 -0
  158. data/public/v0.20.0/font/ibm-plex-sans-500-latin-LA7QXWWL.woff2 +0 -0
  159. data/public/v0.20.0/font/ibm-plex-sans-500-latin-ext-X4QHZICY.woff2 +0 -0
  160. data/public/v0.20.0/font/ibm-plex-sans-500-latin-ext.woff2 +0 -0
  161. data/public/v0.20.0/font/ibm-plex-sans-500-latin.woff2 +0 -0
  162. data/public/v0.20.0/font/ibm-plex-sans-500-vietnamese-24B6BSND.woff2 +0 -0
  163. data/public/v0.20.0/font/ibm-plex-sans-500-vietnamese.woff2 +0 -0
  164. data/public/v0.20.0/js/easyfaa.js +1 -0
  165. metadata +264 -0
@@ -0,0 +1,118 @@
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">
6
+ <title>The page you were looking for doesn't exist (404 Not found)</title>
7
+ <meta name="color-scheme" content="light dark">
8
+ <link rel="icon" href="/favicon.ico" sizes="32x32">
9
+ <link rel="icon" href="/icon.svg" type="image/svg+xml">
10
+ <link rel="apple-touch-icon" href="/apple-touch-icon.png">
11
+ <link rel="manifest" href="/site.webmanifest">
12
+ <style>
13
+ @font-face {
14
+ font-family: 'IBM Plex Sans'; font-style: normal; font-weight: 500; font-display: swap;
15
+ src: url('/font/ibm-plex-sans-500-vietnamese.woff2') format('woff2');
16
+ unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
17
+ }
18
+ @font-face {
19
+ font-family: 'IBM Plex Sans'; font-style: normal; font-weight: 500; font-display: swap;
20
+ src: url('/font/ibm-plex-sans-500-latin-ext.woff2') format('woff2');
21
+ unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
22
+ }
23
+ @font-face {
24
+ font-family: 'IBM Plex Sans'; font-style: normal; font-weight: 500; font-display: swap;
25
+ src: url('/font/ibm-plex-sans-500-latin.woff2') format('woff2');
26
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
27
+ }
28
+ :root {
29
+ --bg: #fbfcfe;
30
+ --ink: #0b1e3a;
31
+ --mark: #5aa9e6;
32
+ --muted: #5c6c84;
33
+ }
34
+ @media (prefers-color-scheme: dark) {
35
+ :root {
36
+ --bg: #0f1622;
37
+ --ink: #cfe3f6;
38
+ --muted: #8698af;
39
+ }
40
+ }
41
+ * { box-sizing: border-box; }
42
+ body {
43
+ margin: 0;
44
+ min-height: 100svh;
45
+ display: flex;
46
+ flex-direction: column;
47
+ background: var(--bg);
48
+ font-family: "IBM Plex Sans", "Helvetica Neue", Arial, sans-serif;
49
+ font-weight: 500;
50
+ letter-spacing: 0.01em;
51
+ }
52
+ main {
53
+ flex: 1;
54
+ display: flex;
55
+ flex-direction: column;
56
+ align-items: center;
57
+ justify-content: center;
58
+ padding: 40px 24px;
59
+ text-align: center;
60
+ }
61
+ .lockup {
62
+ white-space: nowrap;
63
+ max-width: 100%;
64
+ color: var(--ink);
65
+ line-height: 1;
66
+ margin: 0;
67
+ }
68
+ .lockup svg {
69
+ position: relative;
70
+ vertical-align: baseline;
71
+ }
72
+ main .lockup {
73
+ font-size: clamp(1.5rem, 5.5vw, 2.5rem);
74
+ font-weight: 500;
75
+ /* The longest heading is wider than a phone, so let it wrap rather than
76
+ overflow; the mark stays attached to the status code on the first line. */
77
+ white-space: normal;
78
+ text-wrap: balance;
79
+ line-height: 1.25;
80
+ }
81
+ main .lockup svg {
82
+ width: 1.0073em; height: 1.0073em;
83
+ top: 0.1337em;
84
+ margin-right: 0.1327em;
85
+ }
86
+ main p {
87
+ margin: 22px 0 0;
88
+ color: var(--muted);
89
+ font-size: 1rem;
90
+ line-height: 1.6;
91
+ }
92
+ footer {
93
+ position: sticky;
94
+ bottom: 0;
95
+ background: var(--bg);
96
+ display: flex;
97
+ justify-content: center;
98
+ padding: 20px 0 26px;
99
+ }
100
+ footer .lockup { font-size: 20px; }
101
+ footer .lockup svg {
102
+ width: 16px; height: 16px;
103
+ top: 3.2px;
104
+ margin-right: 4.2px;
105
+ }
106
+ footer .easy { color: var(--mark); }
107
+ </style>
108
+ </head>
109
+ <body>
110
+ <main>
111
+ <h1 class="lockup"><svg viewBox="0 0 512 512" aria-hidden="true"><g fill="none" stroke="#5aa9e6" stroke-width="28" stroke-linecap="round"><path d="M251.4 235.6 C254.8 239.8 256.5 246.9 254 254.2 C251.6 261.5 245 268.8 235.4 272.3 C225.8 275.7 213.3 275.1 202.2 268.8 C191 262.6 181.5 250.6 178.1 235.6 C174.6 220.6 177.5 202.7 187.6 187.7 C197.6 172.8 215 161 235.4 157.6 C255.8 154.1 279.1 159.2 297.9 173.1 C316.6 187 330.6 209.8 334.1 235.6 C337.5 261.4 330.2 290.1 312.5 312.7 C294.7 335.3 266.6 351.5 235.4 354.9 C204.2 358.4 170.2 348.8 143.7 327.3 C117.3 305.7 98.8 272.2 95.4 235.6 C92 198.9 103.7 159.6 129.1 129.3 C154.5 99 193.3 78.4 235.4 74.9 C277.5 71.5 322.2 85.5 356.3 114.7 C390.4 143.9 413.3 188.1 416.7 235.6 C420.2 283.1 404 333.2 370.9 371.1 C337.9 409 288.3 434.1 235.4 437.6"/></g></svg>404 Not found</h1>
112
+ <p>You may have mistyped the address or the page may have moved.</p>
113
+ </main>
114
+ <footer>
115
+ <p class="lockup"><svg viewBox="0 0 512 512" aria-hidden="true"><g fill="none" stroke="#5aa9e6" stroke-width="28" stroke-linecap="round" stroke-linejoin="round"><path d="M74.5 340H437.5A200 200 0 0 1 74.5 340Z" fill="#0b1e3a" stroke="none"/><circle cx="256" cy="256" r="200"/><path d="M150 256H216L256 296L296 256H362"/></g></svg><span class="easy">easy</span>faa</p>
116
+ </footer>
117
+ </body>
118
+ </html>
@@ -0,0 +1,118 @@
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">
6
+ <title>Your browser is not supported (406 Not Acceptable)</title>
7
+ <meta name="color-scheme" content="light dark">
8
+ <link rel="icon" href="/favicon.ico" sizes="32x32">
9
+ <link rel="icon" href="/icon.svg" type="image/svg+xml">
10
+ <link rel="apple-touch-icon" href="/apple-touch-icon.png">
11
+ <link rel="manifest" href="/site.webmanifest">
12
+ <style>
13
+ @font-face {
14
+ font-family: 'IBM Plex Sans'; font-style: normal; font-weight: 500; font-display: swap;
15
+ src: url('/font/ibm-plex-sans-500-vietnamese.woff2') format('woff2');
16
+ unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
17
+ }
18
+ @font-face {
19
+ font-family: 'IBM Plex Sans'; font-style: normal; font-weight: 500; font-display: swap;
20
+ src: url('/font/ibm-plex-sans-500-latin-ext.woff2') format('woff2');
21
+ unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
22
+ }
23
+ @font-face {
24
+ font-family: 'IBM Plex Sans'; font-style: normal; font-weight: 500; font-display: swap;
25
+ src: url('/font/ibm-plex-sans-500-latin.woff2') format('woff2');
26
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
27
+ }
28
+ :root {
29
+ --bg: #fbfcfe;
30
+ --ink: #0b1e3a;
31
+ --mark: #5aa9e6;
32
+ --muted: #5c6c84;
33
+ }
34
+ @media (prefers-color-scheme: dark) {
35
+ :root {
36
+ --bg: #0f1622;
37
+ --ink: #cfe3f6;
38
+ --muted: #8698af;
39
+ }
40
+ }
41
+ * { box-sizing: border-box; }
42
+ body {
43
+ margin: 0;
44
+ min-height: 100svh;
45
+ display: flex;
46
+ flex-direction: column;
47
+ background: var(--bg);
48
+ font-family: "IBM Plex Sans", "Helvetica Neue", Arial, sans-serif;
49
+ font-weight: 500;
50
+ letter-spacing: 0.01em;
51
+ }
52
+ main {
53
+ flex: 1;
54
+ display: flex;
55
+ flex-direction: column;
56
+ align-items: center;
57
+ justify-content: center;
58
+ padding: 40px 24px;
59
+ text-align: center;
60
+ }
61
+ .lockup {
62
+ white-space: nowrap;
63
+ max-width: 100%;
64
+ color: var(--ink);
65
+ line-height: 1;
66
+ margin: 0;
67
+ }
68
+ .lockup svg {
69
+ position: relative;
70
+ vertical-align: baseline;
71
+ }
72
+ main .lockup {
73
+ font-size: clamp(1.5rem, 5.5vw, 2.5rem);
74
+ font-weight: 500;
75
+ /* The longest heading is wider than a phone, so let it wrap rather than
76
+ overflow; the mark stays attached to the status code on the first line. */
77
+ white-space: normal;
78
+ text-wrap: balance;
79
+ line-height: 1.25;
80
+ }
81
+ main .lockup svg {
82
+ width: 1.0073em; height: 1.0073em;
83
+ top: 0.1337em;
84
+ margin-right: 0.1327em;
85
+ }
86
+ main p {
87
+ margin: 22px 0 0;
88
+ color: var(--muted);
89
+ font-size: 1rem;
90
+ line-height: 1.6;
91
+ }
92
+ footer {
93
+ position: sticky;
94
+ bottom: 0;
95
+ background: var(--bg);
96
+ display: flex;
97
+ justify-content: center;
98
+ padding: 20px 0 26px;
99
+ }
100
+ footer .lockup { font-size: 20px; }
101
+ footer .lockup svg {
102
+ width: 16px; height: 16px;
103
+ top: 3.2px;
104
+ margin-right: 4.2px;
105
+ }
106
+ footer .easy { color: var(--mark); }
107
+ </style>
108
+ </head>
109
+ <body>
110
+ <main>
111
+ <h1 class="lockup"><svg viewBox="0 0 512 512" aria-hidden="true"><g fill="none" stroke="#5aa9e6" stroke-width="28" stroke-linecap="round"><path d="M251.4 235.6 C254.8 239.8 256.5 246.9 254 254.2 C251.6 261.5 245 268.8 235.4 272.3 C225.8 275.7 213.3 275.1 202.2 268.8 C191 262.6 181.5 250.6 178.1 235.6 C174.6 220.6 177.5 202.7 187.6 187.7 C197.6 172.8 215 161 235.4 157.6 C255.8 154.1 279.1 159.2 297.9 173.1 C316.6 187 330.6 209.8 334.1 235.6 C337.5 261.4 330.2 290.1 312.5 312.7 C294.7 335.3 266.6 351.5 235.4 354.9 C204.2 358.4 170.2 348.8 143.7 327.3 C117.3 305.7 98.8 272.2 95.4 235.6 C92 198.9 103.7 159.6 129.1 129.3 C154.5 99 193.3 78.4 235.4 74.9 C277.5 71.5 322.2 85.5 356.3 114.7 C390.4 143.9 413.3 188.1 416.7 235.6 C420.2 283.1 404 333.2 370.9 371.1 C337.9 409 288.3 434.1 235.4 437.6"/></g></svg>406 Not acceptable</h1>
112
+ <p>Please upgrade your browser to continue.</p>
113
+ </main>
114
+ <footer>
115
+ <p class="lockup"><svg viewBox="0 0 512 512" aria-hidden="true"><g fill="none" stroke="#5aa9e6" stroke-width="28" stroke-linecap="round" stroke-linejoin="round"><path d="M74.5 340H437.5A200 200 0 0 1 74.5 340Z" fill="#0b1e3a" stroke="none"/><circle cx="256" cy="256" r="200"/><path d="M150 256H216L256 296L296 256H362"/></g></svg><span class="easy">easy</span>faa</p>
116
+ </footer>
117
+ </body>
118
+ </html>
@@ -0,0 +1,118 @@
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">
6
+ <title>The change you wanted was rejected (422 Unprocessable Entity)</title>
7
+ <meta name="color-scheme" content="light dark">
8
+ <link rel="icon" href="/favicon.ico" sizes="32x32">
9
+ <link rel="icon" href="/icon.svg" type="image/svg+xml">
10
+ <link rel="apple-touch-icon" href="/apple-touch-icon.png">
11
+ <link rel="manifest" href="/site.webmanifest">
12
+ <style>
13
+ @font-face {
14
+ font-family: 'IBM Plex Sans'; font-style: normal; font-weight: 500; font-display: swap;
15
+ src: url('/font/ibm-plex-sans-500-vietnamese.woff2') format('woff2');
16
+ unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
17
+ }
18
+ @font-face {
19
+ font-family: 'IBM Plex Sans'; font-style: normal; font-weight: 500; font-display: swap;
20
+ src: url('/font/ibm-plex-sans-500-latin-ext.woff2') format('woff2');
21
+ unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
22
+ }
23
+ @font-face {
24
+ font-family: 'IBM Plex Sans'; font-style: normal; font-weight: 500; font-display: swap;
25
+ src: url('/font/ibm-plex-sans-500-latin.woff2') format('woff2');
26
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
27
+ }
28
+ :root {
29
+ --bg: #fbfcfe;
30
+ --ink: #0b1e3a;
31
+ --mark: #5aa9e6;
32
+ --muted: #5c6c84;
33
+ }
34
+ @media (prefers-color-scheme: dark) {
35
+ :root {
36
+ --bg: #0f1622;
37
+ --ink: #cfe3f6;
38
+ --muted: #8698af;
39
+ }
40
+ }
41
+ * { box-sizing: border-box; }
42
+ body {
43
+ margin: 0;
44
+ min-height: 100svh;
45
+ display: flex;
46
+ flex-direction: column;
47
+ background: var(--bg);
48
+ font-family: "IBM Plex Sans", "Helvetica Neue", Arial, sans-serif;
49
+ font-weight: 500;
50
+ letter-spacing: 0.01em;
51
+ }
52
+ main {
53
+ flex: 1;
54
+ display: flex;
55
+ flex-direction: column;
56
+ align-items: center;
57
+ justify-content: center;
58
+ padding: 40px 24px;
59
+ text-align: center;
60
+ }
61
+ .lockup {
62
+ white-space: nowrap;
63
+ max-width: 100%;
64
+ color: var(--ink);
65
+ line-height: 1;
66
+ margin: 0;
67
+ }
68
+ .lockup svg {
69
+ position: relative;
70
+ vertical-align: baseline;
71
+ }
72
+ main .lockup {
73
+ font-size: clamp(1.5rem, 5.5vw, 2.5rem);
74
+ font-weight: 500;
75
+ /* The longest heading is wider than a phone, so let it wrap rather than
76
+ overflow; the mark stays attached to the status code on the first line. */
77
+ white-space: normal;
78
+ text-wrap: balance;
79
+ line-height: 1.25;
80
+ }
81
+ main .lockup svg {
82
+ width: 1.0073em; height: 1.0073em;
83
+ top: 0.1337em;
84
+ margin-right: 0.1327em;
85
+ }
86
+ main p {
87
+ margin: 22px 0 0;
88
+ color: var(--muted);
89
+ font-size: 1rem;
90
+ line-height: 1.6;
91
+ }
92
+ footer {
93
+ position: sticky;
94
+ bottom: 0;
95
+ background: var(--bg);
96
+ display: flex;
97
+ justify-content: center;
98
+ padding: 20px 0 26px;
99
+ }
100
+ footer .lockup { font-size: 20px; }
101
+ footer .lockup svg {
102
+ width: 16px; height: 16px;
103
+ top: 3.2px;
104
+ margin-right: 4.2px;
105
+ }
106
+ footer .easy { color: var(--mark); }
107
+ </style>
108
+ </head>
109
+ <body>
110
+ <main>
111
+ <h1 class="lockup"><svg viewBox="0 0 512 512" aria-hidden="true"><g fill="none" stroke="#5aa9e6" stroke-width="28" stroke-linecap="round"><path d="M251.4 235.6 C254.8 239.8 256.5 246.9 254 254.2 C251.6 261.5 245 268.8 235.4 272.3 C225.8 275.7 213.3 275.1 202.2 268.8 C191 262.6 181.5 250.6 178.1 235.6 C174.6 220.6 177.5 202.7 187.6 187.7 C197.6 172.8 215 161 235.4 157.6 C255.8 154.1 279.1 159.2 297.9 173.1 C316.6 187 330.6 209.8 334.1 235.6 C337.5 261.4 330.2 290.1 312.5 312.7 C294.7 335.3 266.6 351.5 235.4 354.9 C204.2 358.4 170.2 348.8 143.7 327.3 C117.3 305.7 98.8 272.2 95.4 235.6 C92 198.9 103.7 159.6 129.1 129.3 C154.5 99 193.3 78.4 235.4 74.9 C277.5 71.5 322.2 85.5 356.3 114.7 C390.4 143.9 413.3 188.1 416.7 235.6 C420.2 283.1 404 333.2 370.9 371.1 C337.9 409 288.3 434.1 235.4 437.6"/></g></svg>422 Unprocessable entity</h1>
112
+ <p>Maybe you tried to change something you didn't have access to.</p>
113
+ </main>
114
+ <footer>
115
+ <p class="lockup"><svg viewBox="0 0 512 512" aria-hidden="true"><g fill="none" stroke="#5aa9e6" stroke-width="28" stroke-linecap="round" stroke-linejoin="round"><path d="M74.5 340H437.5A200 200 0 0 1 74.5 340Z" fill="#0b1e3a" stroke="none"/><circle cx="256" cy="256" r="200"/><path d="M150 256H216L256 296L296 256H362"/></g></svg><span class="easy">easy</span>faa</p>
116
+ </footer>
117
+ </body>
118
+ </html>
@@ -0,0 +1,118 @@
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">
6
+ <title>We're sorry, but something went wrong (500 Internal Server Error)</title>
7
+ <meta name="color-scheme" content="light dark">
8
+ <link rel="icon" href="/favicon.ico" sizes="32x32">
9
+ <link rel="icon" href="/icon.svg" type="image/svg+xml">
10
+ <link rel="apple-touch-icon" href="/apple-touch-icon.png">
11
+ <link rel="manifest" href="/site.webmanifest">
12
+ <style>
13
+ @font-face {
14
+ font-family: 'IBM Plex Sans'; font-style: normal; font-weight: 500; font-display: swap;
15
+ src: url('/font/ibm-plex-sans-500-vietnamese.woff2') format('woff2');
16
+ unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
17
+ }
18
+ @font-face {
19
+ font-family: 'IBM Plex Sans'; font-style: normal; font-weight: 500; font-display: swap;
20
+ src: url('/font/ibm-plex-sans-500-latin-ext.woff2') format('woff2');
21
+ unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
22
+ }
23
+ @font-face {
24
+ font-family: 'IBM Plex Sans'; font-style: normal; font-weight: 500; font-display: swap;
25
+ src: url('/font/ibm-plex-sans-500-latin.woff2') format('woff2');
26
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
27
+ }
28
+ :root {
29
+ --bg: #fbfcfe;
30
+ --ink: #0b1e3a;
31
+ --mark: #5aa9e6;
32
+ --muted: #5c6c84;
33
+ }
34
+ @media (prefers-color-scheme: dark) {
35
+ :root {
36
+ --bg: #0f1622;
37
+ --ink: #cfe3f6;
38
+ --muted: #8698af;
39
+ }
40
+ }
41
+ * { box-sizing: border-box; }
42
+ body {
43
+ margin: 0;
44
+ min-height: 100svh;
45
+ display: flex;
46
+ flex-direction: column;
47
+ background: var(--bg);
48
+ font-family: "IBM Plex Sans", "Helvetica Neue", Arial, sans-serif;
49
+ font-weight: 500;
50
+ letter-spacing: 0.01em;
51
+ }
52
+ main {
53
+ flex: 1;
54
+ display: flex;
55
+ flex-direction: column;
56
+ align-items: center;
57
+ justify-content: center;
58
+ padding: 40px 24px;
59
+ text-align: center;
60
+ }
61
+ .lockup {
62
+ white-space: nowrap;
63
+ max-width: 100%;
64
+ color: var(--ink);
65
+ line-height: 1;
66
+ margin: 0;
67
+ }
68
+ .lockup svg {
69
+ position: relative;
70
+ vertical-align: baseline;
71
+ }
72
+ main .lockup {
73
+ font-size: clamp(1.5rem, 5.5vw, 2.5rem);
74
+ font-weight: 500;
75
+ /* The longest heading is wider than a phone, so let it wrap rather than
76
+ overflow; the mark stays attached to the status code on the first line. */
77
+ white-space: normal;
78
+ text-wrap: balance;
79
+ line-height: 1.25;
80
+ }
81
+ main .lockup svg {
82
+ width: 1.0073em; height: 1.0073em;
83
+ top: 0.1337em;
84
+ margin-right: 0.1327em;
85
+ }
86
+ main p {
87
+ margin: 22px 0 0;
88
+ color: var(--muted);
89
+ font-size: 1rem;
90
+ line-height: 1.6;
91
+ }
92
+ footer {
93
+ position: sticky;
94
+ bottom: 0;
95
+ background: var(--bg);
96
+ display: flex;
97
+ justify-content: center;
98
+ padding: 20px 0 26px;
99
+ }
100
+ footer .lockup { font-size: 20px; }
101
+ footer .lockup svg {
102
+ width: 16px; height: 16px;
103
+ top: 3.2px;
104
+ margin-right: 4.2px;
105
+ }
106
+ footer .easy { color: var(--mark); }
107
+ </style>
108
+ </head>
109
+ <body>
110
+ <main>
111
+ <h1 class="lockup"><svg viewBox="0 0 512 512" aria-hidden="true"><g fill="none" stroke="#5aa9e6" stroke-width="28" stroke-linecap="round"><path d="M251.4 235.6 C254.8 239.8 256.5 246.9 254 254.2 C251.6 261.5 245 268.8 235.4 272.3 C225.8 275.7 213.3 275.1 202.2 268.8 C191 262.6 181.5 250.6 178.1 235.6 C174.6 220.6 177.5 202.7 187.6 187.7 C197.6 172.8 215 161 235.4 157.6 C255.8 154.1 279.1 159.2 297.9 173.1 C316.6 187 330.6 209.8 334.1 235.6 C337.5 261.4 330.2 290.1 312.5 312.7 C294.7 335.3 266.6 351.5 235.4 354.9 C204.2 358.4 170.2 348.8 143.7 327.3 C117.3 305.7 98.8 272.2 95.4 235.6 C92 198.9 103.7 159.6 129.1 129.3 C154.5 99 193.3 78.4 235.4 74.9 C277.5 71.5 322.2 85.5 356.3 114.7 C390.4 143.9 413.3 188.1 416.7 235.6 C420.2 283.1 404 333.2 370.9 371.1 C337.9 409 288.3 434.1 235.4 437.6"/></g></svg>500 Internal server error</h1>
112
+ <p>Our developers have been alerted and are working on a fix.</p>
113
+ </main>
114
+ <footer>
115
+ <p class="lockup"><svg viewBox="0 0 512 512" aria-hidden="true"><g fill="none" stroke="#5aa9e6" stroke-width="28" stroke-linecap="round" stroke-linejoin="round"><path d="M74.5 340H437.5A200 200 0 0 1 74.5 340Z" fill="#0b1e3a" stroke="none"/><circle cx="256" cy="256" r="200"/><path d="M150 256H216L256 296L296 256H362"/></g></svg><span class="easy">easy</span>faa</p>
116
+ </footer>
117
+ </body>
118
+ </html>
@@ -0,0 +1,12 @@
1
+ {
2
+ "name": "Design",
3
+ "short_name": "Design",
4
+ "icons": [
5
+ { "src": "/favicon/design-192.png", "sizes": "192x192", "type": "image/png" },
6
+ { "src": "/favicon/design-512.png", "sizes": "512x512", "type": "image/png" }
7
+ ],
8
+ "theme_color": "#12233d",
9
+ "background_color": "#12233d",
10
+ "display": "standalone",
11
+ "start_url": "/"
12
+ }
@@ -0,0 +1,10 @@
1
+ /* Bootstrap's own palette, and the only file here that declares nothing.
2
+
3
+ The eight beside it work by overriding upstream's `:root`, so having upstream's
4
+ palette back is a matter of dropping their block rather than of writing one — and
5
+ swapping this link in is how a toggle drops it. Linking no palette at all and linking
6
+ this one are the same look by two routes.
7
+
8
+ It is named so the toggle can reach it. A reader who rotates through nine palettes
9
+ and never finds the one the pages started in has been shown a door with no handle
10
+ on the inside. */