zebra-day 0.0.37__py3-none-any.whl → 2.0.0__py3-none-any.whl

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 (173) hide show
  1. zebra_day/__init__.py +35 -0
  2. zebra_day/bin/__init__.py +0 -0
  3. zebra_day/cli/__init__.py +240 -0
  4. zebra_day/cli/cognito.py +121 -0
  5. zebra_day/cli/gui.py +338 -0
  6. zebra_day/cli/printer.py +168 -0
  7. zebra_day/cli/template.py +176 -0
  8. zebra_day/cmd_mgr.py +35 -0
  9. zebra_day/etc/Monoid-Regular-HalfTight-Dollar-0-1-l.ttf +0 -0
  10. zebra_day/etc/label_styles/blank.zpl +0 -0
  11. zebra_day/etc/label_styles/cornersStripOf4Squares_1inX1in.zpl +55 -0
  12. zebra_day/etc/label_styles/corners_1inX2in.zpl +28 -0
  13. zebra_day/etc/label_styles/corners_20cmX30cm.zpl +6 -0
  14. zebra_day/etc/label_styles/corners_smallTube.zpl +7 -0
  15. zebra_day/etc/label_styles/corners_unspecifiedDimensions.zpl +15 -0
  16. zebra_day/etc/label_styles/generic_2inX1in.zpl +21 -0
  17. zebra_day/etc/label_styles/plate_1inX0.25in.zpl +9 -0
  18. zebra_day/etc/label_styles/plate_1inX0.25inHD.zpl +9 -0
  19. zebra_day/etc/label_styles/smallTubeWdotHD_prod.zpl +8 -0
  20. zebra_day/etc/label_styles/smallTubeWdot_corners.zpl +7 -0
  21. zebra_day/etc/label_styles/smallTubeWdot_prod.zpl +8 -0
  22. zebra_day/etc/label_styles/smallTubeWdot_prodAlt1.zpl +6 -0
  23. zebra_day/etc/label_styles/smallTubeWdot_prodAlt1b.zpl +3 -0
  24. zebra_day/etc/label_styles/smallTubeWdot_prodV2.zpl +8 -0
  25. zebra_day/etc/label_styles/smallTubeWdot_reagent.zpl +29 -0
  26. zebra_day/etc/label_styles/stripOf4Squares_1inX1in.zpl +32 -0
  27. zebra_day/etc/label_styles/test_800dX800dCoordinateArray.zpl +1 -0
  28. zebra_day/etc/label_styles/tmps/.hold +0 -0
  29. zebra_day/etc/label_styles/tmps/tmp_zpl_templates.here +0 -0
  30. zebra_day/etc/label_styles/tube_20mmX30mmA.zpl +7 -0
  31. zebra_day/etc/label_styles/tube_2inX0.3in.zpl +15 -0
  32. zebra_day/etc/label_styles/tube_2inX0.5in.zpl +15 -0
  33. zebra_day/etc/label_styles/tube_2inX0.5inHD.zpl +15 -0
  34. zebra_day/etc/label_styles/tube_2inX1in.zpl +25 -0
  35. zebra_day/etc/label_styles/tube_2inX1inHD.zpl +22 -0
  36. zebra_day/etc/label_styles/tube_2inX1inHDv3.zpl +21 -0
  37. zebra_day/etc/old_printer_config/.hold +0 -0
  38. zebra_day/etc/old_printer_config/2026-02-01_01:50:25.022846_printer_config.json +1 -0
  39. zebra_day/etc/old_printer_config/2026-02-01_01:50:25.033657_printer_config.json +1 -0
  40. zebra_day/etc/old_printer_config/2026-02-01_01:50:25.039597_printer_config.json +3 -0
  41. zebra_day/etc/old_printer_config/2026-02-01_01:50:25.047295_printer_config.json +1 -0
  42. zebra_day/etc/old_printer_config/2026-02-01_01:50:25.055804_printer_config.json +1 -0
  43. zebra_day/etc/old_printer_config/2026-02-01_01:50:25.061337_printer_config.json +3 -0
  44. zebra_day/etc/old_printer_config/2026-02-01_01:51:24.073326_printer_config.json +1 -0
  45. zebra_day/etc/old_printer_config/2026-02-01_01:51:24.081950_printer_config.json +1 -0
  46. zebra_day/etc/old_printer_config/2026-02-01_01:51:24.088251_printer_config.json +3 -0
  47. zebra_day/etc/old_printer_config/2026-02-01_01:51:24.096501_printer_config.json +1 -0
  48. zebra_day/etc/old_printer_config/2026-02-01_01:51:24.104767_printer_config.json +1 -0
  49. zebra_day/etc/old_printer_config/2026-02-01_01:51:24.110364_printer_config.json +3 -0
  50. zebra_day/etc/old_printer_config/2026-02-01_01:51:24.118239_printer_config.json +1 -0
  51. zebra_day/etc/old_printer_config/2026-02-01_01:51:24.125950_printer_config.json +1 -0
  52. zebra_day/etc/old_printer_config/2026-02-01_01:51:24.349866_printer_config.json +1 -0
  53. zebra_day/etc/old_printer_config/2026-02-01_01:51:24.361085_printer_config.json +3 -0
  54. zebra_day/etc/old_printer_config/2026-02-01_01:51:24.558323_printer_config.json +1 -0
  55. zebra_day/etc/old_printer_config/2026-02-01_01:51:24.565756_printer_config.json +3 -0
  56. zebra_day/etc/old_printer_config/2026-02-01_01:51:29.739070_printer_config.json +16 -0
  57. zebra_day/etc/old_printer_config/2026-02-01_01:51:29.753796_printer_config.json +1 -0
  58. zebra_day/etc/old_printer_config/2026-02-01_01:51:29.760201_printer_config.json +3 -0
  59. zebra_day/etc/old_printer_config/2026-02-01_01:51:29.768747_printer_config.json +1 -0
  60. zebra_day/etc/old_printer_config/2026-02-01_01:51:29.775312_printer_config.json +3 -0
  61. zebra_day/etc/old_printer_config/2026-02-01_01:51:29.782533_printer_config.json +1 -0
  62. zebra_day/etc/old_printer_config/2026-02-01_01:51:29.789287_printer_config.json +1 -0
  63. zebra_day/etc/old_printer_config/2026-02-01_01:51:29.794230_printer_config.json +3 -0
  64. zebra_day/etc/old_printer_config/2026-02-01_01:51:29.800021_printer_config.json +5 -0
  65. zebra_day/etc/printer_config.json +4 -0
  66. zebra_day/etc/printer_config.template.json +24 -0
  67. zebra_day/etc/tmp_printers0.json +5 -0
  68. zebra_day/etc/tmp_printers120.json +10 -0
  69. zebra_day/etc/tmp_printers145.json +10 -0
  70. zebra_day/etc/tmp_printers207.json +10 -0
  71. zebra_day/etc/tmp_printers374.json +5 -0
  72. zebra_day/etc/tmp_printers383.json +5 -0
  73. zebra_day/etc/tmp_printers450.json +5 -0
  74. zebra_day/etc/tmp_printers469.json +10 -0
  75. zebra_day/etc/tmp_printers485.json +10 -0
  76. zebra_day/etc/tmp_printers504.json +5 -0
  77. zebra_day/etc/tmp_printers531.json +10 -0
  78. zebra_day/etc/tmp_printers540.json +10 -0
  79. zebra_day/etc/tmp_printers542.json +10 -0
  80. zebra_day/etc/tmp_printers552.json +10 -0
  81. zebra_day/etc/tmp_printers608.json +5 -0
  82. zebra_day/etc/tmp_printers657.json +5 -0
  83. zebra_day/etc/tmp_printers715.json +10 -0
  84. zebra_day/etc/tmp_printers838.json +5 -0
  85. zebra_day/etc/tmp_printers839.json +5 -0
  86. zebra_day/etc/tmp_printers933.json +5 -0
  87. zebra_day/etc/tmp_printers957.json +5 -0
  88. zebra_day/etc/tmp_printers972.json +10 -0
  89. zebra_day/exceptions.py +88 -0
  90. zebra_day/files/.hold +0 -0
  91. zebra_day/files/blank_preview.png +0 -0
  92. zebra_day/files/corners_20cmX30cm_preview.png +0 -0
  93. zebra_day/files/generic_2inX1in_preview.png +0 -0
  94. zebra_day/files/hold +0 -0
  95. zebra_day/files/test_png_12020.png +0 -0
  96. zebra_day/files/test_png_12352.png +0 -0
  97. zebra_day/files/test_png_15472.png +0 -0
  98. zebra_day/files/test_png_17696.png +0 -0
  99. zebra_day/files/test_png_23477.png +0 -0
  100. zebra_day/files/test_png_24493.png +0 -0
  101. zebra_day/files/test_png_28157.png +0 -0
  102. zebra_day/files/test_png_30069.png +0 -0
  103. zebra_day/files/test_png_35832.png +0 -0
  104. zebra_day/files/test_png_36400.png +0 -0
  105. zebra_day/files/test_png_40816.png +0 -0
  106. zebra_day/files/test_png_47791.png +0 -0
  107. zebra_day/files/test_png_47799.png +0 -0
  108. zebra_day/files/test_png_49564.png +0 -0
  109. zebra_day/files/test_png_53848.png +0 -0
  110. zebra_day/files/test_png_55588.png +0 -0
  111. zebra_day/files/test_png_58809.png +0 -0
  112. zebra_day/files/test_png_62542.png +0 -0
  113. zebra_day/files/test_png_67242.png +0 -0
  114. zebra_day/files/test_png_89893.png +0 -0
  115. zebra_day/files/test_png_91597.png +0 -0
  116. zebra_day/files/test_png_93633.png +0 -0
  117. zebra_day/files/tmpbjo3k7q1.png +0 -0
  118. zebra_day/files/tmpigtr4pwy.png +0 -0
  119. zebra_day/files/tube_20mmX30mmA_preview.png +0 -0
  120. zebra_day/files/zpl_label_tube_2inX1in_2026-02-01_01:51:24.370964.png +0 -0
  121. zebra_day/logging_config.py +74 -0
  122. zebra_day/logs/.hold +0 -0
  123. zebra_day/logs/print_requests.log +2 -0
  124. zebra_day/paths.py +143 -0
  125. zebra_day/print_mgr.py +557 -117
  126. zebra_day/static/datschund.css +140 -0
  127. zebra_day/static/datschund.png +0 -0
  128. zebra_day/static/daylily.png +0 -0
  129. zebra_day/static/favicon.svg +20 -0
  130. zebra_day/static/general.css +99 -0
  131. zebra_day/static/js/zebra_modern.js +172 -0
  132. zebra_day/static/lsmc.css +354 -0
  133. zebra_day/static/moon.jpeg +0 -0
  134. zebra_day/static/oakland.css +197 -0
  135. zebra_day/static/petrichor.css +150 -0
  136. zebra_day/static/popday_daylily.css +140 -0
  137. zebra_day/static/style.css +183 -0
  138. zebra_day/static/triangles.css +122 -0
  139. zebra_day/static/tron.css +277 -0
  140. zebra_day/static/zebra_modern.css +771 -0
  141. zebra_day/static/zebras.css +176 -0
  142. zebra_day/templates/modern/base.html +98 -0
  143. zebra_day/templates/modern/config.html +141 -0
  144. zebra_day/templates/modern/config_backups.html +59 -0
  145. zebra_day/templates/modern/config_editor.html +95 -0
  146. zebra_day/templates/modern/config_new.html +93 -0
  147. zebra_day/templates/modern/dashboard.html +160 -0
  148. zebra_day/templates/modern/print_request.html +145 -0
  149. zebra_day/templates/modern/print_result.html +88 -0
  150. zebra_day/templates/modern/printer_detail.html +244 -0
  151. zebra_day/templates/modern/printers.html +144 -0
  152. zebra_day/templates/modern/save_result.html +46 -0
  153. zebra_day/templates/modern/template_editor.html +175 -0
  154. zebra_day/templates/modern/templates.html +122 -0
  155. zebra_day/web/__init__.py +9 -0
  156. zebra_day/web/app.py +248 -0
  157. zebra_day/web/auth.py +172 -0
  158. zebra_day/web/middleware.py +159 -0
  159. zebra_day/web/routers/__init__.py +2 -0
  160. zebra_day/web/routers/api.py +313 -0
  161. zebra_day/web/routers/ui.py +636 -0
  162. zebra_day/zpl_renderer.py +273 -0
  163. zebra_day-2.0.0.dist-info/METADATA +847 -0
  164. zebra_day-2.0.0.dist-info/RECORD +168 -0
  165. {zebra_day-0.0.37.dist-info → zebra_day-2.0.0.dist-info}/WHEEL +1 -1
  166. zebra_day-2.0.0.dist-info/entry_points.txt +4 -0
  167. zebra_day/bin/scan_for_networed_zebra_printers.py +0 -23
  168. zebra_day/bin/te.py +0 -905
  169. zebra_day/bin/zserve.py +0 -620
  170. zebra_day-0.0.37.dist-info/METADATA +0 -1177
  171. zebra_day-0.0.37.dist-info/RECORD +0 -10
  172. {zebra_day-0.0.37.dist-info → zebra_day-2.0.0.dist-info/licenses}/LICENSE +0 -0
  173. {zebra_day-0.0.37.dist-info → zebra_day-2.0.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,354 @@
1
+ /*
2
+ * LSMC-inspired theme for Zebra Day
3
+ * Dark, modern, clinical aesthetic with zebra stripe accents
4
+ * Based on lsmc.com design system
5
+ */
6
+
7
+ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap');
8
+
9
+ :root {
10
+ /* LSMC-inspired color palette */
11
+ --lsmc-black: #0a0a0a;
12
+ --lsmc-dark: #141414;
13
+ --lsmc-gray-900: #1a1a1a;
14
+ --lsmc-gray-800: #262626;
15
+ --lsmc-gray-700: #333333;
16
+ --lsmc-gray-600: #4a4a4a;
17
+ --lsmc-gray-400: #888888;
18
+ --lsmc-gray-300: #a3a3a3;
19
+ --lsmc-gray-200: #d4d4d4;
20
+ --lsmc-white: #fafafa;
21
+
22
+ /* Zebra accent colors */
23
+ --zebra-stripe-light: #ffffff;
24
+ --zebra-stripe-dark: #1a1a1a;
25
+ --zebra-accent: #6366f1; /* Indigo accent */
26
+ --zebra-accent-hover: #818cf8;
27
+ --zebra-success: #22c55e;
28
+ --zebra-warning: #f59e0b;
29
+ --zebra-error: #ef4444;
30
+ }
31
+
32
+ body {
33
+ font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
34
+ background-color: var(--lsmc-black);
35
+ color: var(--lsmc-white);
36
+ padding: 24px;
37
+ margin: 0;
38
+ line-height: 1.6;
39
+ font-size: 15px;
40
+ }
41
+
42
+ /* Zebra stripe decorative border at top */
43
+ body::before {
44
+ content: '';
45
+ position: fixed;
46
+ top: 0;
47
+ left: 0;
48
+ right: 0;
49
+ height: 4px;
50
+ background: repeating-linear-gradient(
51
+ 90deg,
52
+ var(--zebra-stripe-light) 0px,
53
+ var(--zebra-stripe-light) 20px,
54
+ var(--zebra-stripe-dark) 20px,
55
+ var(--zebra-stripe-dark) 40px
56
+ );
57
+ z-index: 1000;
58
+ }
59
+
60
+ h1, h2 {
61
+ font-family: 'Inter', sans-serif;
62
+ font-weight: 700;
63
+ letter-spacing: -0.02em;
64
+ border-bottom: 1px solid var(--lsmc-gray-700);
65
+ padding: 12px 0;
66
+ margin-top: 32px;
67
+ margin-bottom: 16px;
68
+ }
69
+
70
+ h1 {
71
+ font-size: 2rem;
72
+ color: var(--lsmc-white);
73
+ }
74
+
75
+ h2 {
76
+ font-size: 1.25rem;
77
+ color: var(--lsmc-gray-200);
78
+ }
79
+
80
+ small {
81
+ display: block;
82
+ color: var(--lsmc-gray-400);
83
+ font-size: 0.85em;
84
+ }
85
+
86
+ a {
87
+ color: var(--zebra-accent);
88
+ text-decoration: none;
89
+ transition: color 0.2s ease;
90
+ }
91
+
92
+ a:hover {
93
+ color: var(--zebra-accent-hover);
94
+ }
95
+
96
+ a.navigational-link {
97
+ font-weight: 600;
98
+ background-color: var(--zebra-accent);
99
+ color: var(--lsmc-white);
100
+ padding: 8px 16px;
101
+ border-radius: 6px;
102
+ display: inline-block;
103
+ }
104
+
105
+ a.navigational-link:hover {
106
+ background-color: var(--zebra-accent-hover);
107
+ }
108
+
109
+ hr {
110
+ border: 0;
111
+ border-bottom: 1px solid var(--lsmc-gray-700);
112
+ margin: 24px 0;
113
+ }
114
+
115
+ ul {
116
+ list-style-type: none;
117
+ padding-left: 0;
118
+ }
119
+
120
+ ul ul {
121
+ padding-left: 24px;
122
+ }
123
+
124
+ li {
125
+ padding: 4px 0;
126
+ }
127
+
128
+ /* Form inputs */
129
+ input[type=text],
130
+ input[type=email],
131
+ input[type=password],
132
+ input[type=number] {
133
+ font-family: 'JetBrains Mono', monospace;
134
+ padding: 12px 16px;
135
+ border: 1px solid var(--lsmc-gray-700);
136
+ border-radius: 6px;
137
+ background-color: var(--lsmc-gray-900);
138
+ color: var(--lsmc-white);
139
+ font-size: 14px;
140
+ transition: border-color 0.2s ease, box-shadow 0.2s ease;
141
+ }
142
+
143
+ input[type=text]:focus,
144
+ input[type=email]:focus,
145
+ input[type=password]:focus,
146
+ input[type=number]:focus {
147
+ border-color: var(--zebra-accent);
148
+ outline: none;
149
+ box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.2);
150
+ }
151
+
152
+ input[type=text]::placeholder {
153
+ color: var(--lsmc-gray-600);
154
+ }
155
+
156
+ /* Submit buttons */
157
+ input[type=submit] {
158
+ font-family: 'Inter', sans-serif;
159
+ font-weight: 600;
160
+ padding: 12px 24px;
161
+ background-color: var(--zebra-accent);
162
+ border: none;
163
+ border-radius: 6px;
164
+ color: var(--lsmc-white);
165
+ cursor: pointer;
166
+ font-size: 14px;
167
+ transition: background-color 0.2s ease, transform 0.1s ease;
168
+ }
169
+
170
+ input[type=submit]:hover {
171
+ background-color: var(--zebra-accent-hover);
172
+ }
173
+
174
+ input[type=submit]:active {
175
+ transform: scale(0.98);
176
+ }
177
+
178
+ /* Regular buttons */
179
+ input[type="button"] {
180
+ font-family: 'Inter', sans-serif;
181
+ font-weight: 500;
182
+ background-color: var(--lsmc-gray-800);
183
+ border: 1px solid var(--lsmc-gray-700);
184
+ color: var(--lsmc-white);
185
+ padding: 12px 24px;
186
+ font-size: 14px;
187
+ border-radius: 6px;
188
+ transition: all 0.2s ease;
189
+ cursor: pointer;
190
+ }
191
+
192
+ input[type="button"]:hover {
193
+ background-color: var(--lsmc-gray-700);
194
+ border-color: var(--lsmc-gray-600);
195
+ }
196
+
197
+ input[type="button"]:active {
198
+ background-color: var(--lsmc-gray-600);
199
+ }
200
+
201
+ /* Select dropdowns */
202
+ select {
203
+ font-family: 'JetBrains Mono', monospace;
204
+ background-color: var(--lsmc-gray-900);
205
+ border: 1px solid var(--lsmc-gray-700);
206
+ color: var(--lsmc-white);
207
+ padding: 12px 16px;
208
+ font-size: 14px;
209
+ border-radius: 6px;
210
+ appearance: none;
211
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23888' d='M6 8L1 3h10z'/%3E%3C/svg%3E");
212
+ background-repeat: no-repeat;
213
+ background-position: right 12px center;
214
+ padding-right: 36px;
215
+ cursor: pointer;
216
+ }
217
+
218
+ select:focus {
219
+ border-color: var(--zebra-accent);
220
+ outline: none;
221
+ box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.2);
222
+ }
223
+
224
+ select option {
225
+ background-color: var(--lsmc-gray-900);
226
+ color: var(--lsmc-white);
227
+ }
228
+
229
+ /* Textarea */
230
+ textarea {
231
+ font-family: 'JetBrains Mono', monospace;
232
+ padding: 16px;
233
+ border: 1px solid var(--lsmc-gray-700);
234
+ border-radius: 6px;
235
+ background-color: var(--lsmc-gray-900);
236
+ color: var(--lsmc-white);
237
+ font-size: 13px;
238
+ line-height: 1.5;
239
+ resize: vertical;
240
+ transition: border-color 0.2s ease, box-shadow 0.2s ease;
241
+ }
242
+
243
+ textarea:focus {
244
+ border-color: var(--zebra-accent);
245
+ outline: none;
246
+ box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.2);
247
+ }
248
+
249
+ textarea::placeholder {
250
+ color: var(--lsmc-gray-600);
251
+ }
252
+
253
+ textarea::-webkit-scrollbar {
254
+ width: 8px;
255
+ }
256
+
257
+ textarea::-webkit-scrollbar-thumb {
258
+ background-color: var(--lsmc-gray-600);
259
+ border-radius: 4px;
260
+ }
261
+
262
+ textarea::-webkit-scrollbar-track {
263
+ background-color: var(--lsmc-gray-800);
264
+ border-radius: 4px;
265
+ }
266
+
267
+ /* Theme switcher link */
268
+ #bottomRightLink {
269
+ font-family: 'Inter', sans-serif;
270
+ font-weight: 500;
271
+ font-size: 12px;
272
+ background-color: var(--lsmc-gray-800);
273
+ border: 1px solid var(--lsmc-gray-700);
274
+ border-radius: 6px;
275
+ padding: 8px 12px;
276
+ color: var(--lsmc-gray-300);
277
+ transition: all 0.2s ease;
278
+ }
279
+
280
+ #bottomRightLink:hover {
281
+ background-color: var(--lsmc-gray-700);
282
+ color: var(--lsmc-white);
283
+ }
284
+
285
+ /* Tables */
286
+ table {
287
+ border-collapse: collapse;
288
+ width: 100%;
289
+ margin: 16px 0;
290
+ }
291
+
292
+ th, td {
293
+ padding: 12px 16px;
294
+ text-align: left;
295
+ border-bottom: 1px solid var(--lsmc-gray-700);
296
+ }
297
+
298
+ th {
299
+ font-weight: 600;
300
+ color: var(--lsmc-gray-300);
301
+ font-size: 12px;
302
+ text-transform: uppercase;
303
+ letter-spacing: 0.05em;
304
+ }
305
+
306
+ tr:hover {
307
+ background-color: var(--lsmc-gray-900);
308
+ }
309
+
310
+ /* Code/pre blocks */
311
+ pre, code {
312
+ font-family: 'JetBrains Mono', monospace;
313
+ background-color: var(--lsmc-gray-900);
314
+ border-radius: 4px;
315
+ font-size: 13px;
316
+ }
317
+
318
+ code {
319
+ padding: 2px 6px;
320
+ color: var(--zebra-accent-hover);
321
+ }
322
+
323
+ pre {
324
+ padding: 16px;
325
+ overflow-x: auto;
326
+ border: 1px solid var(--lsmc-gray-700);
327
+ }
328
+
329
+ /* Status indicators with zebra colors */
330
+ .status-online, .status-success {
331
+ color: var(--zebra-success);
332
+ }
333
+
334
+ .status-offline, .status-error {
335
+ color: var(--zebra-error);
336
+ }
337
+
338
+ .status-warning {
339
+ color: var(--zebra-warning);
340
+ }
341
+
342
+ /* Zebra stripe accent for important sections */
343
+ .zebra-accent {
344
+ border-left: 4px solid;
345
+ border-image: repeating-linear-gradient(
346
+ 180deg,
347
+ var(--zebra-stripe-light) 0px,
348
+ var(--zebra-stripe-light) 8px,
349
+ var(--zebra-stripe-dark) 8px,
350
+ var(--zebra-stripe-dark) 16px
351
+ ) 1;
352
+ padding-left: 16px;
353
+ }
354
+
Binary file
@@ -0,0 +1,197 @@
1
+ @import url('https://fonts.googleapis.com/css2?family=Source+Code+Pro:wght@400;500&display=swap');
2
+
3
+ body {
4
+ font-family: 'Source Code Pro', monospace;
5
+ background-color: #2C3E50; /* Deep blue reminiscent of the Bay waters */
6
+ color: #ECF0F1; /* Bright text color for contrast */
7
+ padding: 20px;
8
+ margin: 0;
9
+ }
10
+
11
+ @import url('https://fonts.googleapis.com/css2?family=Source+Code+Pro:wght@400;500&display=swap');
12
+
13
+ textarea::-webkit-scrollbar {
14
+ width: 10px; /* Adjust width of scrollbar */
15
+ }
16
+
17
+ textarea::-webkit-scrollbar-thumb {
18
+ background-color: #ABB2B9; /* Color of the scroll thumb */
19
+ border-radius: 5px; /* Rounded corners on the thumb */
20
+ background-clip: padding-box;
21
+ border: 2px solid transparent;
22
+ }
23
+
24
+ textarea::-webkit-scrollbar-track {
25
+ background-color: #2C3E50; /* Color of the track */
26
+ border-radius: 5px; /* Rounded corners on the track */
27
+ }
28
+
29
+
30
+ textarea {
31
+ font-family: 'Source Code Pro', monospace;
32
+ padding: 10px;
33
+ border: 2px solid #4A4A4A;
34
+ border-radius: 5px;
35
+ background-color: #ABB2B9;
36
+ color: #333;
37
+ font-size: 16px;
38
+ transition: border-color 0.3s;
39
+
40
+ /* Placeholder color */
41
+ ::placeholder {
42
+ color: #888;
43
+ }
44
+
45
+ /* Focus effect */
46
+ :focus {
47
+ outline: none;
48
+ border-color: #0074D9;
49
+ }
50
+
51
+ /* If you want to add a resize handle only at the bottom */
52
+ resize: vertical;
53
+ }
54
+
55
+ h1, h2 {
56
+ font-weight: bold;
57
+ border-bottom: 3px solid #3498DB; /* Bright blue to evoke the sky and water */
58
+ padding: 10px 0;
59
+ margin-top: 20px;
60
+ }
61
+
62
+ small {
63
+ display: block;
64
+ color: #BDC3C7; /* Slightly muted text for less important info */
65
+ font-size: 0.85em;
66
+ }
67
+
68
+ a {
69
+ color: #3498DB;
70
+ text-decoration: none;
71
+ transition: color 0.3s ease;
72
+ }
73
+
74
+ a:hover {
75
+ color: #2980B9;
76
+ }
77
+
78
+ a.navigational-link {
79
+ font-weight: bold;
80
+ background-color: #27AE60; /* A vibrant green, like the trees of Oakland's hills */
81
+ padding: 5px 10px;
82
+ border-radius: 5px;
83
+ }
84
+
85
+ hr {
86
+ border: 0;
87
+ border-bottom: 2px dashed #BDC3C7;
88
+ margin: 20px 0;
89
+ }
90
+
91
+ ul {
92
+ list-style-type: none;
93
+ padding-left: 0;
94
+ }
95
+
96
+ ul ul {
97
+ padding-left: 20px;
98
+ }
99
+
100
+ input[type=text] {
101
+ padding: 10px;
102
+ border: 2px solid #BDC3C7;
103
+ border-radius: 5px;
104
+ background-color: #34495E; /* A slightly darker blue for the input fields */
105
+ color: #ECF0F1;
106
+ transition: border-color 0.3s ease;
107
+ }
108
+
109
+ input[type=text]:focus {
110
+ border-color: #3498DB;
111
+ outline: none;
112
+ }
113
+
114
+ input[type=submit] {
115
+ padding: 10px 20px;
116
+ background-color: #E74C3C; /* A bright red, reminiscent of the Fox Theater's marquee */
117
+ border: none;
118
+ border-radius: 5px;
119
+ color: #ECF0F1;
120
+ cursor: pointer;
121
+ transition: background-color 0.3s ease;
122
+ }
123
+
124
+ input[type=submit]:hover {
125
+ background-color: #C0392B;
126
+ }
127
+
128
+ #bottomRightLink {
129
+ background-color: #9B59B6; /* A regal purple to add some extra flair */
130
+ border-radius: 5px;
131
+ padding: 5px 10px;
132
+ transition: background-color 0.3s ease;
133
+ }
134
+
135
+ #bottomRightLink:hover {
136
+ background-color: #8E44AD;
137
+ }
138
+
139
+ /* Oakland-themed button styling */
140
+ input[type="button"] {
141
+ background-color: #008040; /* Green inspired by Lake Merritt's surroundings */
142
+ border: 2px solid #6B8E23; /* Olive green border */
143
+ color: #EDEDED; /* Light gray text for contrast */
144
+ padding: 10px 20px;
145
+ font-size: 16px;
146
+ border-radius: 5px;
147
+ transition: all 0.3s ease;
148
+ cursor: pointer;
149
+ outline: none;
150
+ font-family: 'Source Code Pro', monospace;
151
+ }
152
+
153
+ input[type="button"]:hover {
154
+ background-color: #6B8E23; /* Olive green on hover */
155
+ color: #FFFFFF; /* White text on hover */
156
+ }
157
+
158
+ input[type="button"]:active {
159
+ background-color: #4B6B16; /* Darker green when pressed */
160
+ border-color: #4B6B16;
161
+ color: #DDDDDD;
162
+ }
163
+
164
+ /* Oakland-themed form select styling */
165
+ select {
166
+ background-color: #EDEDED; /* Light gray background */
167
+ border: 2px solid #6B8E23; /* Olive green border */
168
+ color: #333; /* Dark gray text */
169
+ padding: 8px 12px;
170
+ font-size: 16px;
171
+ border-radius: 5px;
172
+ appearance: none; /* Remove default styles */
173
+ font-family: 'Source Code Pro', monospace;
174
+ }
175
+
176
+ select:focus {
177
+ border-color: #008040; /* Green border when focused */
178
+ outline: none;
179
+ }
180
+
181
+ /* Custom dropdown arrow for select element */
182
+ select::-ms-expand {
183
+ display: none; /* Hide the default IE/Edge dropdown arrow */
184
+ }
185
+
186
+ select::-webkit-scrollbar {
187
+ width: 10px; /* Custom scrollbar width for Chrome, Safari and Opera */
188
+ }
189
+
190
+ select::-webkit-scrollbar-thumb {
191
+ background-color: #6B8E23; /* Olive green scrollbar thumb */
192
+ border-radius: 5px;
193
+ }
194
+
195
+ select::-webkit-scrollbar-track {
196
+ background-color: #EDEDED; /* Light gray scrollbar track */
197
+ }
@@ -0,0 +1,150 @@
1
+ @font-face {
2
+ font-family: 'Monoid';
3
+ src: url('/etc/Monoid-Regular-HalfTight-Dollar-0-1-l.ttf') format('truetype');
4
+ font-weight: normal;
5
+ font-style: normal;
6
+ }
7
+
8
+ body {
9
+ font-family: 'Monoid', monospace;
10
+ background-color: #273238; /* Raincloud gray */
11
+ color: #A8B9B0; /* Soft, muted greenish-gray */
12
+ margin: 0;
13
+ padding: 20px;
14
+ }
15
+
16
+ h1, h2 {
17
+ color: #547C7C; /* Wet stone color */
18
+ border-bottom: 2px solid #547C7C;
19
+ padding-bottom: 5px;
20
+ }
21
+
22
+ ul {
23
+ list-style-type: none;
24
+ padding: 0;
25
+ margin-left: 21px;
26
+ }
27
+
28
+ li::before {
29
+ content: '';
30
+ display: inline-block;
31
+ width: 3px;
32
+ height: 3px;
33
+ border-radius: 50%;
34
+ border: 0.6px solid #547C7C;
35
+ background-color: #273238;
36
+ margin-right: 7px;
37
+ vertical-align: middle;
38
+ }
39
+
40
+ a {
41
+ color: #547C7C;
42
+ text-decoration: underline; /* Underline for better readability */
43
+ transition: color 0.3s ease;
44
+ }
45
+
46
+ a:hover {
47
+ color: #698D8D; /* A shade brighter when hovered */
48
+ }
49
+
50
+ small {
51
+ color: #7D9898; /* Rain-washed stone color */
52
+ }
53
+
54
+ .spinner-hidden {
55
+ display: none;
56
+ position: fixed;
57
+ top: 0; left: 0; right: 0; bottom: 0;
58
+ background: rgba(39, 50, 56, 0.8);
59
+ z-index: 1000;
60
+ align-items: center;
61
+ justify-content: center;
62
+ display: flex;
63
+ }
64
+
65
+ #spinner {
66
+ position: fixed;
67
+ top: 50%;
68
+ left: 50%;
69
+ transform: translate(-50%, -50%);
70
+ z-index: 9999;
71
+ }
72
+
73
+ #spinner.spinner-hidden {
74
+ display: none;
75
+ }
76
+
77
+ .loader {
78
+ border: 8px solid #D4E0DE;
79
+ border-top: 8px solid #547C7C;
80
+ border-radius: 50%;
81
+ width: 50px;
82
+ height: 50px;
83
+ animation: spin 1s linear infinite;
84
+ }
85
+
86
+ hr {
87
+ border: 0;
88
+ height: 1px;
89
+ background-image: linear-gradient(to right, #547C7C, #273238, #547C7C);
90
+ margin: 20px 0;
91
+ }
92
+
93
+ input[type=text], textarea {
94
+ background-color: #313D3F; /* Earthy gray */
95
+ color: #A8B9B0;
96
+ border: 2px solid #547C7C;
97
+ border-radius: 5px;
98
+ padding: 5px 10px;
99
+ outline: none;
100
+ transition: background-color 0.3s ease;
101
+ }
102
+
103
+ input[type=text]:hover, textarea:hover {
104
+ background-color: #3A484A; /* A shade darker when hovered */
105
+ }
106
+
107
+ input[type=submit], input[type="button"] {
108
+ background-color: #313D3F;
109
+ color: #A8B9B0;
110
+ border: 2px solid #547C7C;
111
+ border-radius: 5px;
112
+ padding: 8px 15px;
113
+ cursor: pointer;
114
+ transition: background-color 0.3s ease, border-color 0.3s ease;
115
+ font-family: 'Monoid', monospace;
116
+ }
117
+
118
+ input[type=submit]:hover, input[type="button"]:hover {
119
+ background-color: #3A484A;
120
+ border-color: #698D8D;
121
+ }
122
+
123
+ select {
124
+ background-color: #313D3F;
125
+ color: #A8B9B0;
126
+ border: 2px solid #547C7C;
127
+ padding: 5px 10px;
128
+ border-radius: 5px;
129
+ appearance: none;
130
+ cursor: pointer;
131
+ }
132
+
133
+ select:-moz-focusring {
134
+ color: transparent;
135
+ text-shadow: 0 0 0 #A8B9B0;
136
+ }
137
+
138
+ textarea::-webkit-scrollbar {
139
+ width: 10px;
140
+ }
141
+
142
+ textarea::-webkit-scrollbar-thumb {
143
+ background-color: #547C7C;
144
+ border-radius: 5px;
145
+ }
146
+
147
+ textarea::-webkit-scrollbar-track {
148
+ background-color: #273238;
149
+ border-radius: 5px;
150
+ }