A community-maintained directory of Bluesky Personal Data Servers (PDS).
pdslist.wisp.place
1* {
2 margin: 0;
3 padding: 0;
4 box-sizing: border-box;
5}
6
7body {
8 font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
9 padding: 20px;
10 background-color: #f8f9fa;
11 color: #333;
12 line-height: 1.6;
13}
14
15.container {
16 max-width: 1200px;
17 margin: 0 auto;
18 background-color: white;
19 padding: 30px;
20 border-radius: 8px;
21 box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
22}
23
24h1 {
25 color: #1a1a1a;
26 margin-bottom: 10px;
27 font-size: 28px;
28}
29
30h2 {
31 color: #0066cc;
32 margin-top: 20px;
33 margin-bottom: 15px;
34 font-size: 22px;
35}
36
37p {
38 margin-bottom: 15px;
39 color: #555;
40}
41
42a {
43 color: #0066cc;
44 text-decoration: none;
45 transition: color 0.2s;
46}
47
48a:hover {
49 color: #0052a3;
50 text-decoration: underline;
51}
52
53#loading {
54 text-align: center;
55 padding: 40px;
56 font-size: 18px;
57 color: #666;
58}
59
60#content {
61 padding: 20px 0;
62}
63
64/* Tables */
65table {
66 width: 100%;
67 border-collapse: collapse;
68 margin: 20px 0;
69 font-size: 14px;
70 box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
71 overflow-x: auto;
72 display: block;
73}
74
75table th,
76table td {
77 padding: 12px;
78 text-align: left;
79 border-bottom: 1px solid #e0e0e0;
80}
81
82table th {
83 background-color: #0066cc;
84 color: white;
85 font-weight: 600;
86 border-bottom: 2px solid #0052a3;
87 position: sticky;
88 top: 0;
89}
90
91table tr {
92 display: table;
93 width: 100%;
94 table-layout: fixed;
95}
96
97table tr:hover {
98 background-color: #f5f5f5;
99}
100
101table a {
102 color: #0066cc;
103 word-break: break-all;
104}
105
106table a:hover {
107 text-decoration: underline;
108}
109
110/* Make Terms and Privacy columns smaller */
111table th:nth-child(7),
112table th:nth-child(8),
113table td:nth-child(7),
114table td:nth-child(8) {
115 padding: 4px 2px;
116 font-size: 12px;
117 text-align: center;
118 width: 60px;
119}
120table th:nth-child(6),
121table td:nth-child(6),
122table th:nth-child(4),
123table td:nth-child(4)
124{
125 padding: 4px 2px;
126 font-size: 12px;
127 text-align: center;
128 width: 90px;
129}
130/* Responsive Table */
131@media (max-width: 1024px) {
132 table {
133 font-size: 13px;
134 }
135
136 table th,
137 table td {
138 padding: 10px 8px;
139 }
140 table th:nth-child(6),
141 table td:nth-child(6),
142 table th:nth-child(4),
143 table td:nth-child(4),
144 table th:nth-child(7),
145 table th:nth-child(8),
146 table td:nth-child(7),
147 table td:nth-child(8) {
148 padding: 8px 4px;
149 width: 50px;
150 }
151}
152
153@media (max-width: 768px) {
154 table {
155 font-size: 12px;
156 }
157
158 table th,
159 table td {
160 padding: 8px 6px;
161 word-break: break-word;
162 }
163
164 /* Hide certain columns on mobile */
165 table th:nth-child(4),
166 table th:nth-child(5),
167 table th:nth-child(7),
168 table th:nth-child(8),
169 table td:nth-child(4),
170 table td:nth-child(5),
171 table td:nth-child(7),
172 table td:nth-child(8) {
173 display: none;
174 }
175
176 /* Make URL and Maintainer wider on mobile */
177 table th:nth-child(1),
178 table th:nth-child(3),
179 table td:nth-child(1),
180 table td:nth-child(3) {
181 min-width: 100px;
182 }
183
184 .container {
185 padding: 15px;
186 }
187
188 h1 {
189 font-size: 20px;
190 }
191}
192
193@media (max-width: 480px) {
194 table {
195 font-size: 11px;
196 }
197
198 table th,
199 table td {
200 padding: 6px 4px;
201 }
202
203 /* On very small screens, show only essential columns */
204 table th:nth-child(2),
205 table th:nth-child(6),
206 table td:nth-child(2),
207 table td:nth-child(6) {
208 display: none;
209 }
210
211 /* Make columns more compact */
212 table th:nth-child(1),
213 table th:nth-child(3),
214 table td:nth-child(1),
215 table td:nth-child(3) {
216 min-width: 80px;
217 max-width: 150px;
218 }
219
220 .container {
221 padding: 10px;
222 }
223
224 h1 {
225 font-size: 18px;
226 }
227
228 p {
229 font-size: 13px;
230 }
231}
232
233/* Buttons */
234button {
235 padding: 12px 16px;
236 border: none;
237 border-radius: 4px;
238 cursor: pointer;
239 font-size: 15px;
240 font-weight: 600;
241 transition: all 0.3s ease;
242 width: 100%;
243 margin-bottom: 10px;
244}
245
246button:hover {
247 transform: translateY(-2px);
248 box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);
249}
250
251#toggle-pds {
252 background: #0066cc;
253 color: white;
254}
255
256#toggle-pds:hover {
257 background: #0052a3;
258}
259
260#toggle-bsky {
261 background: #0066cc;
262 color: white;
263}
264
265#toggle-bsky:hover {
266 background: #0052a3;
267}
268
269/* Sections */
270#pds-section,
271#bsky-section,
272#cool-section {
273 margin-top: 15px;
274 padding: 15px;
275 background: #f9f9f9;
276 border-radius: 4px;
277 border-left: 4px solid #0066cc;
278}
279
280/* Search and Filters */
281#search-input {
282 width: 100%;
283 padding: 10px 12px;
284 margin-bottom: 10px;
285 border: 1px solid #ddd;
286 border-radius: 4px;
287 font-size: 14px;
288}
289
290#search-input:focus {
291 outline: none;
292 border-color: #0066cc;
293 box-shadow: 0 0 0 3px rgba(0, 102, 204, 0.1);
294}
295
296#filters {
297 margin-bottom: 20px;
298 padding: 15px;
299 background: #f0f4f8;
300 border-radius: 4px;
301 border: 1px solid #ddd;
302}
303
304#filters label {
305 display: inline-flex;
306 align-items: center;
307 gap: 8px;
308 margin-right: 15px;
309 cursor: pointer;
310 color: #333;
311}
312
313#filters input[type="radio"] {
314 cursor: pointer;
315 width: 18px;
316 height: 18px;
317}
318
319/* Mobile Popup Styles */
320#mobile-popup {
321 backdrop-filter: blur(4px);
322}
323
324#mobile-popup button {
325 padding: 10px 20px !important;
326 width: auto !important;
327 margin: 0 !important;
328}
329
330/* Info boxes */
331#no-data {
332 text-align: center;
333 padding: 40px 20px;
334 color: #999;
335 font-size: 16px;
336}
337
338.stats {
339 display: flex;
340 gap: 20px;
341 margin-bottom: 20px;
342 flex-wrap: wrap;
343}
344
345.stat {
346 padding: 15px;
347 background: linear-gradient(135deg, #0066cc 0%, #0052a3 100%);
348 color: white;
349 border-radius: 4px;
350 font-weight: 600;
351 min-width: 200px;
352}
353
354.stat-label {
355 font-size: 12px;
356 opacity: 0.9;
357 margin-bottom: 5px;
358}
359
360.stat-value {
361 font-size: 24px;
362}
363
364@media (max-width: 768px) {
365 .stat {
366 min-width: 150px;
367 flex: 1;
368 }
369
370 .stat-value {
371 font-size: 20px;
372 }
373}
374
375@media (max-width: 480px) {
376 .stats {
377 gap: 10px;
378 }
379
380 .stat {
381 min-width: 120px;
382 padding: 12px;
383 }
384
385 .stat-value {
386 font-size: 18px;
387 }
388}