forums.tonybtw.com

https://git.tonybtw.com/forums.tonybtw.com.git git://git.tonybtw.com/forums.tonybtw.com.git
20,570 bytes raw
1
@font-face {
2
    font-family: 'IosevkaNerdFontMono';
3
    src: url('/fonts/IosevkaNerdFontMono-Regular.woff2') format('woff2'),
4
         url('/fonts/IosevkaNerdFontMono-Regular.ttf') format('truetype');
5
    font-weight: 400;
6
    font-style: normal;
7
    font-display: swap;
8
}
9
10
@font-face {
11
    font-family: 'IosevkaNerdFontMono';
12
    src: url('/fonts/IosevkaNerdFontMono-Bold.woff2') format('woff2'),
13
         url('/fonts/IosevkaNerdFontMono-Bold.ttf') format('truetype');
14
    font-weight: 700;
15
    font-style: normal;
16
    font-display: swap;
17
}
18
19
@font-face {
20
    font-family: 'IosevkaNerdFontMono';
21
    src: url('/fonts/IosevkaNerdFontMono-Italic.woff2') format('woff2'),
22
         url('/fonts/IosevkaNerdFontMono-Italic.ttf') format('truetype');
23
    font-weight: 400;
24
    font-style: italic;
25
    font-display: swap;
26
}
27
28
:root {
29
    --bg: #1a1b26;
30
    --bg-secondary: #1f2335;
31
    --bg-tertiary: #292e42;
32
    --fg: #c0caf5;
33
    --fg-muted: #a9b1d6;
34
    --fg-subtle: #565f89;
35
    --border: #292e42;
36
    --link: #7aa2f7;
37
    --link-hover: #7dcfff;
38
    --green: #9ece6a;
39
    --red: #f7768e;
40
    --yellow: #e0af68;
41
    --orange: #ff9e64;
42
    --purple: #bb9af7;
43
    --cyan: #7dcfff;
44
45
    --ml-base: #1f2335;
46
    --ml-mid: #3b4261;
47
    --ml-accent: #7aa2f7;
48
    --ml-accent-fg: #1a1b26;
49
50
    --tok-keyword: #bb9af7;
51
    --tok-type:    #2ac3de;
52
    --tok-builtin: #7aa2f7;
53
    --tok-number:  #ff9e64;
54
    --tok-string:  #9ece6a;
55
    --tok-char:    #9ece6a;
56
    --tok-comment: #565f89;
57
    --tok-preproc: #7dcfff;
58
    --tok-op:      #89ddff;
59
    --tok-punct:   #a9b1d6;
60
}
61
62
.t-kw  { color: var(--tok-keyword); }
63
.t-ty  { color: var(--tok-type); }
64
.t-bi  { color: var(--tok-builtin); }
65
.t-num { color: var(--tok-number); }
66
.t-str { color: var(--tok-string); }
67
.t-chr { color: var(--tok-char); }
68
.t-cmt { color: var(--tok-comment); font-style: italic; }
69
.t-pp  { color: var(--tok-preproc); }
70
.t-op  { color: var(--tok-op); }
71
.t-pun { color: var(--tok-punct); }
72
73
.code-block {
74
    margin: 1rem 0;
75
    border: 1px solid var(--border);
76
    border-radius: 4px;
77
    overflow: hidden;
78
}
79
80
.code-lang {
81
    padding: 0.25rem 0.75rem;
82
    background: var(--bg-tertiary);
83
    border-bottom: 1px solid var(--border);
84
    color: var(--fg-subtle);
85
    font-size: 0.75rem;
86
}
87
88
pre.code {
89
    margin: 0;
90
    padding: 0.85rem 1rem;
91
    background: var(--bg-secondary);
92
    border-radius: 0;
93
    overflow-x: auto;
94
    line-height: 1.45;
95
    tab-size: 4;
96
    -moz-tab-size: 4;
97
}
98
99
pre.code code {
100
    background: none;
101
    padding: 0;
102
}
103
104
* {
105
    margin: 0;
106
    padding: 0;
107
    box-sizing: border-box;
108
}
109
110
html {
111
    font-size: 14px;
112
}
113
114
body {
115
    font-family: 'IosevkaNerdFontMono', ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
116
    background: var(--bg);
117
    color: var(--fg);
118
    line-height: 1.5;
119
    min-height: 100vh;
120
    padding-bottom: 2.5rem;
121
}
122
123
a {
124
    color: var(--link);
125
    text-decoration: none;
126
}
127
128
a:hover {
129
    color: var(--link-hover);
130
    text-decoration: underline;
131
}
132
133
header {
134
    background: var(--bg-secondary);
135
    border-bottom: 1px solid var(--border);
136
    padding: 1rem 2rem;
137
    display: flex;
138
    align-items: center;
139
    justify-content: space-between;
140
    flex-wrap: wrap;
141
    gap: 1rem;
142
}
143
144
header .logo {
145
    font-weight: bold;
146
    font-size: 1.1rem;
147
}
148
149
.nav-right {
150
    display: flex;
151
    align-items: center;
152
    gap: 1.25rem;
153
}
154
155
.nav-right a {
156
    color: var(--fg-muted);
157
}
158
159
.nav-right a:hover {
160
    color: var(--fg);
161
}
162
163
.inline-form {
164
    display: inline;
165
}
166
167
.link-button {
168
    background: none;
169
    border: none;
170
    color: var(--fg-muted);
171
    font: inherit;
172
    cursor: pointer;
173
    padding: 0;
174
}
175
176
.link-button:hover {
177
    color: var(--fg);
178
    text-decoration: underline;
179
}
180
181
main {
182
    max-width: 1100px;
183
    margin: 0 auto;
184
    padding: 1.5rem 1rem;
185
}
186
187
footer.modeline {
188
    position: fixed;
189
    left: 0;
190
    right: 0;
191
    bottom: 0;
192
    z-index: 50;
193
    background: var(--bg);
194
    border-top: 1px solid var(--border);
195
    font-size: 0.9rem;
196
    line-height: 1.8;
197
    overflow: hidden;
198
}
199
200
.ml-row {
201
    display: flex;
202
    align-items: stretch;
203
    white-space: nowrap;
204
}
205
206
.ml-a, .ml-b, .ml-c {
207
    padding: 0 0.6rem;
208
}
209
210
.ml-a {
211
    background: var(--ml-accent);
212
    color: var(--ml-accent-fg);
213
    font-weight: 700;
214
}
215
216
.ml-b {
217
    background: var(--ml-mid);
218
    color: var(--fg-muted);
219
}
220
221
.ml-c {
222
    background: var(--ml-base);
223
    color: var(--fg-muted);
224
}
225
226
.ml-fill {
227
    flex: 1;
228
    background: var(--bg);
229
    min-width: 1rem;
230
}
231
232
.ml-sep::before {
233
    display: inline-block;
234
}
235
236
.ml-fwd::before { content: "\e0b0"; }
237
.ml-bwd::before { content: "\e0b2"; }
238
239
.sep-a-b   { color: var(--ml-accent); background: var(--ml-mid); }
240
.sep-b-c   { color: var(--ml-mid);    background: var(--ml-base); }
241
.sep-c-bar { color: var(--ml-base);   background: var(--bg); }
242
.sep-bar-c { color: var(--ml-base);   background: var(--bg); }
243
.sep-c-b   { color: var(--ml-mid);    background: var(--ml-base); }
244
.sep-b-a   { color: var(--ml-accent); background: var(--ml-mid); }
245
246
h1, h2, h3 {
247
    font-weight: 600;
248
    margin-bottom: 1rem;
249
}
250
251
h1 { font-size: 1.5rem; }
252
h2 { font-size: 1.25rem; color: var(--fg-muted); }
253
h3 { font-size: 1.1rem; }
254
255
.empty {
256
    color: var(--fg-muted);
257
    padding: 2rem 0;
258
}
259
260
table {
261
    width: 100%;
262
    border-collapse: collapse;
263
    margin: 1rem 0;
264
}
265
266
th, td {
267
    text-align: left;
268
    padding: 0.5rem 0.5rem;
269
    border-bottom: 1px solid var(--border);
270
}
271
272
th {
273
    background: var(--bg-secondary);
274
    color: var(--fg-muted);
275
    font-weight: 600;
276
}
277
278
tbody tr:hover {
279
    background: var(--bg-secondary);
280
}
281
282
table.thread-list {
283
    table-layout: fixed;
284
}
285
286
table.thread-list th:nth-child(1),
287
table.thread-list td:nth-child(1) {
288
    width: 55%;
289
}
290
291
.thread-list .title {
292
    overflow: hidden;
293
    text-overflow: ellipsis;
294
    white-space: nowrap;
295
}
296
297
.thread-list .author {
298
    color: var(--fg-muted);
299
}
300
301
.thread-list .replies,
302
.thread-list .activity {
303
    color: var(--fg-subtle);
304
    white-space: nowrap;
305
}
306
307
.thread-list .activity {
308
    text-align: right;
309
}
310
311
.breadcrumb {
312
    margin-bottom: 1rem;
313
    color: var(--fg-muted);
314
    overflow: hidden;
315
    text-overflow: ellipsis;
316
    white-space: nowrap;
317
}
318
319
.thread-header {
320
    margin-bottom: 1.5rem;
321
    padding-bottom: 1rem;
322
    border-bottom: 1px solid var(--border);
323
}
324
325
.thread-header h1 {
326
    margin-bottom: 0.25rem;
327
}
328
329
.thread-meta,
330
.profile-meta {
331
    color: var(--fg-subtle);
332
    font-size: 0.9rem;
333
}
334
335
.posts {
336
    display: flex;
337
    flex-direction: column;
338
    gap: 1rem;
339
}
340
341
.post {
342
    background: var(--bg-secondary);
343
    border: 1px solid var(--border);
344
    border-radius: 4px;
345
}
346
347
.post-meta {
348
    display: flex;
349
    align-items: center;
350
    gap: 0.75rem;
351
    padding: 0.5rem 1rem;
352
    background: var(--bg-tertiary);
353
    border-bottom: 1px solid var(--border);
354
    border-radius: 4px 4px 0 0;
355
    font-size: 0.9rem;
356
    color: var(--fg-subtle);
357
}
358
359
.post-author {
360
    font-weight: 600;
361
}
362
363
.post-anchor {
364
    margin-left: auto;
365
    color: var(--fg-subtle);
366
}
367
368
.badge {
369
    background: var(--bg);
370
    border: 1px solid var(--border);
371
    border-radius: 3px;
372
    padding: 0 0.4rem;
373
    font-size: 0.75rem;
374
    color: var(--green);
375
}
376
377
.post-body {
378
    padding: 1rem;
379
    word-wrap: break-word;
380
    overflow-wrap: anywhere;
381
}
382
383
.post-body > *:first-child { margin-top: 0; }
384
.post-body > *:last-child { margin-bottom: 0; }
385
386
.post-body p { margin: 0.75rem 0; }
387
388
.post-body h1,
389
.post-body h2,
390
.post-body h3,
391
.post-body h4 {
392
    margin: 1.25rem 0 0.5rem;
393
    color: var(--fg);
394
}
395
396
.post-body h1 { font-size: 1.4rem; border-bottom: 1px solid var(--border); padding-bottom: 0.3rem; }
397
.post-body h2 { font-size: 1.2rem; border-bottom: 1px solid var(--border); padding-bottom: 0.3rem; }
398
.post-body h3 { font-size: 1.05rem; }
399
400
.post-body ul,
401
.post-body ol {
402
    margin: 0.75rem 0;
403
    padding-left: 1.75rem;
404
}
405
406
.post-body li { margin: 0.2rem 0; }
407
408
.post-body blockquote {
409
    border-left: 3px solid var(--border);
410
    margin: 0.75rem 0;
411
    padding-left: 1rem;
412
    color: var(--fg-muted);
413
}
414
415
.post-body code {
416
    background: var(--bg-tertiary);
417
    padding: 0.1rem 0.35rem;
418
    border-radius: 3px;
419
}
420
421
.post-body pre.code code {
422
    background: none;
423
    padding: 0;
424
}
425
426
.post-body hr {
427
    border: none;
428
    border-top: 1px solid var(--border);
429
    margin: 1.5rem 0;
430
}
431
432
.post-body table {
433
    margin: 0.75rem 0;
434
    width: auto;
435
}
436
437
.post-body img { max-width: 100%; }
438
439
mark {
440
    background: var(--yellow);
441
    color: var(--bg);
442
    border-radius: 2px;
443
    padding: 0 0.1rem;
444
}
445
446
.post:target {
447
    border-color: var(--link);
448
}
449
450
.reply-form,
451
.stacked-form {
452
    display: flex;
453
    flex-direction: column;
454
    gap: 0.5rem;
455
    margin-top: 2rem;
456
}
457
458
.reply-form h3 {
459
    margin-bottom: 0.25rem;
460
}
461
462
label {
463
    color: var(--fg-muted);
464
    font-size: 0.9rem;
465
}
466
467
input[type="text"],
468
input[type="password"],
469
textarea {
470
    font-family: inherit;
471
    font-size: 1rem;
472
    background: var(--bg);
473
    color: var(--fg);
474
    border: 1px solid var(--border);
475
    border-radius: 4px;
476
    padding: 0.6rem 0.75rem;
477
    width: 100%;
478
}
479
480
input:focus,
481
textarea:focus {
482
    outline: none;
483
    border-color: var(--link);
484
}
485
486
textarea {
487
    resize: vertical;
488
    line-height: 1.5;
489
    tab-size: 4;
490
    -moz-tab-size: 4;
491
}
492
493
button[type="submit"] {
494
    align-self: flex-start;
495
    font-family: inherit;
496
    font-size: 1rem;
497
    background: var(--bg-tertiary);
498
    color: var(--fg);
499
    border: 1px solid var(--border);
500
    border-radius: 4px;
501
    padding: 0.5rem 1.25rem;
502
    cursor: pointer;
503
    margin-top: 0.25rem;
504
}
505
506
button[type="submit"]:hover {
507
    background: var(--border);
508
    border-color: var(--fg-subtle);
509
}
510
511
.login-prompt {
512
    margin-top: 2rem;
513
    padding: 1rem;
514
    background: var(--bg-secondary);
515
    border: 1px solid var(--border);
516
    border-radius: 4px;
517
    color: var(--fg-muted);
518
}
519
520
.auth-form {
521
    max-width: 420px;
522
    margin: 2rem auto;
523
}
524
525
.auth-alt {
526
    margin-top: 1.5rem;
527
    color: var(--fg-muted);
528
    font-size: 0.9rem;
529
}
530
531
.form-errors {
532
    list-style: none;
533
    background: rgba(248, 81, 73, 0.1);
534
    border: 1px solid var(--red);
535
    border-radius: 4px;
536
    padding: 0.75rem 1rem;
537
    margin-bottom: 1.5rem;
538
    color: var(--red);
539
}
540
541
.form-errors li {
542
    margin: 0.2rem 0;
543
}
544
545
.profile-header {
546
    margin-bottom: 1.5rem;
547
    padding-bottom: 1rem;
548
    border-bottom: 1px solid var(--border);
549
}
550
551
.profile-header h1 {
552
    margin-bottom: 0.25rem;
553
}
554
555
.pagination {
556
    display: flex;
557
    justify-content: space-between;
558
    align-items: center;
559
    margin-top: 2rem;
560
    padding-top: 1rem;
561
    border-top: 1px solid var(--border);
562
    color: var(--fg-subtle);
563
}
564
565
.search-form {
566
    display: flex;
567
    gap: 0.5rem;
568
    margin-bottom: 1.5rem;
569
}
570
571
.search-form input {
572
    flex: 1;
573
    font-family: inherit;
574
    font-size: 1rem;
575
    background: var(--bg);
576
    color: var(--fg);
577
    border: 1px solid var(--border);
578
    border-radius: 4px;
579
    padding: 0.6rem 0.75rem;
580
}
581
582
.search-form input:focus {
583
    outline: none;
584
    border-color: var(--link);
585
}
586
587
.search-form button {
588
    font-family: inherit;
589
    background: var(--bg-tertiary);
590
    color: var(--fg);
591
    border: 1px solid var(--border);
592
    border-radius: 4px;
593
    padding: 0.6rem 1.25rem;
594
    cursor: pointer;
595
}
596
597
.search-count {
598
    color: var(--fg-subtle);
599
    margin-bottom: 1rem;
600
}
601
602
.search-results {
603
    list-style: none;
604
}
605
606
.search-results li {
607
    padding: 0.75rem 0;
608
    border-bottom: 1px solid var(--border);
609
}
610
611
.result-title {
612
    font-weight: 600;
613
}
614
615
.result-board {
616
    margin-left: 0.6rem;
617
    font-size: 0.8rem;
618
    color: var(--fg-subtle);
619
}
620
621
.result-snippet {
622
    margin-top: 0.25rem;
623
    color: var(--fg-muted);
624
    font-size: 0.9rem;
625
}
626
627
.tele-overlay {
628
    display: none;
629
    position: fixed;
630
    inset: 0;
631
    z-index: 100;
632
    background: rgba(0, 0, 0, 0.55);
633
    padding-top: 8vh;
634
    justify-content: center;
635
}
636
637
.tele-overlay.tele-visible {
638
    display: flex;
639
}
640
641
.tele {
642
    width: min(760px, 92vw);
643
    height: min(460px, 70vh);
644
    display: flex;
645
    flex-direction: column;
646
    background: var(--bg-secondary);
647
    border: 1px solid var(--ml-accent);
648
    border-radius: 6px;
649
    overflow: hidden;
650
    box-shadow: 0 12px 40px rgba(0, 0, 0, 0.5);
651
}
652
653
.tele-input {
654
    font-family: inherit;
655
    font-size: 1.05rem;
656
    background: var(--bg);
657
    color: var(--fg);
658
    border: none;
659
    border-bottom: 1px solid var(--border);
660
    padding: 0.85rem 1rem;
661
    outline: none;
662
}
663
664
.tele-body {
665
    flex: 1;
666
    display: flex;
667
    min-height: 0;
668
}
669
670
.tele-list {
671
    list-style: none;
672
    width: 45%;
673
    overflow-y: auto;
674
    border-right: 1px solid var(--border);
675
}
676
677
.tele-item {
678
    padding: 0.5rem 0.85rem;
679
    cursor: pointer;
680
    border-left: 2px solid transparent;
681
    white-space: nowrap;
682
    overflow: hidden;
683
    text-overflow: ellipsis;
684
}
685
686
.tele-item-title {
687
    color: var(--fg);
688
}
689
690
.tele-item-board {
691
    margin-left: 0.5rem;
692
    font-size: 0.75rem;
693
    color: var(--fg-subtle);
694
}
695
696
.tele-active {
697
    background: var(--bg-tertiary);
698
    border-left-color: var(--ml-accent);
699
}
700
701
.tele-empty {
702
    padding: 0.85rem;
703
    color: var(--fg-subtle);
704
}
705
706
.tele-preview {
707
    flex: 1;
708
    padding: 1rem;
709
    overflow-y: auto;
710
}
711
712
.tele-prev-title {
713
    font-weight: 700;
714
    margin-bottom: 0.5rem;
715
}
716
717
.tele-prev-snippet {
718
    color: var(--fg-muted);
719
    font-size: 0.9rem;
720
    line-height: 1.6;
721
}
722
723
.tele-footer {
724
    display: flex;
725
    gap: 1.25rem;
726
    padding: 0.4rem 1rem;
727
    background: var(--ml-base);
728
    border-top: 1px solid var(--border);
729
    color: var(--fg-subtle);
730
    font-size: 0.8rem;
731
}
732
733
.error {
734
    text-align: center;
735
    padding: 4rem 2rem;
736
}
737
738
.error h1 {
739
    color: var(--red);
740
}
741
742
.board-category {
743
    margin-bottom: 2.5rem;
744
}
745
746
.board-category h2 {
747
    border-bottom: 1px solid var(--border);
748
    padding-bottom: 0.5rem;
749
    margin-bottom: 0.5rem;
750
}
751
752
table.board-list {
753
    table-layout: fixed;
754
}
755
756
.board-list .col-board { width: 50%; }
757
.board-list .col-num   { width: 9%; text-align: center; color: var(--fg-subtle); }
758
.board-list .col-last  { width: 32%; }
759
760
.board-list th.col-num { text-align: center; }
761
762
.board-list td {
763
    vertical-align: top;
764
    padding: 0.6rem 0.5rem;
765
}
766
767
.board-name {
768
    font-weight: 600;
769
    font-size: 1.05rem;
770
}
771
772
.board-desc {
773
    color: var(--fg-muted);
774
    font-size: 0.9rem;
775
    margin-top: 0.15rem;
776
}
777
778
.last-title {
779
    display: inline-block;
780
    max-width: 100%;
781
    overflow: hidden;
782
    text-overflow: ellipsis;
783
    white-space: nowrap;
784
    vertical-align: bottom;
785
}
786
787
.last-meta {
788
    color: var(--fg-subtle);
789
    font-size: 0.85rem;
790
    margin-top: 0.15rem;
791
}
792
793
.muted {
794
    color: var(--fg-subtle);
795
}
796
797
.board-header {
798
    margin-bottom: 1.5rem;
799
    padding-bottom: 1rem;
800
    border-bottom: 1px solid var(--border);
801
}
802
803
.board-header h1 {
804
    margin-bottom: 0.25rem;
805
}
806
807
.board-header .board-desc {
808
    margin-bottom: 0.75rem;
809
}
810
811
.button-link {
812
    display: inline-block;
813
    background: var(--bg-tertiary);
814
    color: var(--fg);
815
    border: 1px solid var(--border);
816
    border-radius: 4px;
817
    padding: 0.35rem 1rem;
818
    font-size: 0.9rem;
819
}
820
821
.button-link:hover {
822
    background: var(--border);
823
    border-color: var(--fg-subtle);
824
    text-decoration: none;
825
}
826
827
.badge {
828
    background: var(--bg);
829
    border: 1px solid var(--border);
830
    border-radius: 3px;
831
    padding: 0 0.4rem;
832
    font-size: 0.75rem;
833
    color: var(--green);
834
    vertical-align: middle;
835
}
836
837
.badge-pin {
838
    color: var(--yellow);
839
    border-color: var(--yellow);
840
}
841
842
.badge-lock {
843
    color: var(--red);
844
    border-color: var(--red);
845
}
846
847
.role-badge {
848
    border-radius: 3px;
849
    padding: 0 0.35rem;
850
    font-size: 0.7rem;
851
    margin-left: 0.35rem;
852
    vertical-align: middle;
853
}
854
855
.role-admin {
856
    color: var(--red);
857
    border: 1px solid var(--red);
858
}
859
860
.role-mod {
861
    color: var(--green);
862
    border: 1px solid var(--green);
863
}
864
865
.mod-bar {
866
    display: flex;
867
    align-items: center;
868
    gap: 1rem;
869
    margin-top: 0.75rem;
870
    padding: 0.5rem 0.75rem;
871
    background: var(--bg-secondary);
872
    border: 1px solid var(--border);
873
    border-radius: 4px;
874
    font-size: 0.85rem;
875
    width: fit-content;
876
}
877
878
.mod-label {
879
    color: var(--fg-subtle);
880
    text-transform: uppercase;
881
    letter-spacing: 0.05em;
882
    font-size: 0.7rem;
883
}
884
885
.link-button.danger {
886
    color: var(--red);
887
}
888
889
.post-delete {
890
    margin-left: 0.5rem;
891
}
892
893
.preview {
894
    margin: 1.5rem 0;
895
    border: 1px solid var(--border);
896
    border-radius: 4px;
897
    background: var(--bg-secondary);
898
}
899
900
.preview-label {
901
    padding: 0.4rem 1rem;
902
    background: var(--bg-tertiary);
903
    border-bottom: 1px solid var(--border);
904
    border-radius: 4px 4px 0 0;
905
    color: var(--fg-subtle);
906
    text-transform: uppercase;
907
    letter-spacing: 0.05em;
908
    font-size: 0.7rem;
909
}
910
911
.preview .post-body {
912
    padding: 1rem;
913
}
914
915
.markup-hint {
916
    color: var(--fg-subtle);
917
    font-size: 0.8rem;
918
    margin-top: -0.1rem;
919
}
920
921
.markup-hint code {
922
    background: var(--bg-tertiary);
923
    padding: 0 0.25rem;
924
    font-size: 0.85em;
925
}
926
927
.form-actions {
928
    display: flex;
929
    gap: 0.75rem;
930
    margin-top: 0.25rem;
931
}
932
933
button.secondary {
934
    background: transparent;
935
    color: var(--fg-muted);
936
}
937
938
button.secondary:hover {
939
    background: var(--bg-secondary);
940
    color: var(--fg);
941
}
942
943
.role-form {
944
    display: flex;
945
    gap: 0.5rem;
946
    align-items: center;
947
}
948
949
.role-form select {
950
    font-family: inherit;
951
    font-size: 0.9rem;
952
    background: var(--bg);
953
    color: var(--fg);
954
    border: 1px solid var(--border);
955
    border-radius: 4px;
956
    padding: 0.25rem 0.5rem;
957
}
958
959
.role-form button {
960
    font-family: inherit;
961
    font-size: 0.85rem;
962
    background: var(--bg-tertiary);
963
    color: var(--fg);
964
    border: 1px solid var(--border);
965
    border-radius: 4px;
966
    padding: 0.25rem 0.75rem;
967
    cursor: pointer;
968
}
969
970
.role-form button:hover {
971
    background: var(--border);
972
    border-color: var(--fg-subtle);
973
}
974
975
.board-list {
976
    width: 100%;
977
    border-collapse: collapse;
978
}
979
980
.board-list th {
981
    text-align: left;
982
    font-size: 0.85rem;
983
    color: var(--fg-subtle);
984
}
985
986
.board-list td {
987
    padding: 0.3rem 0.4rem 0.3rem 0;
988
    vertical-align: middle;
989
}
990
991
.board-list input[type="text"],
992
.board-list input[type="number"] {
993
    width: 100%;
994
    font-family: inherit;
995
    font-size: 0.9rem;
996
    background: var(--bg);
997
    color: var(--fg);
998
    border: 1px solid var(--border);
999
    border-radius: 4px;
1000
    padding: 0.25rem 0.5rem;
1001
}
1002
1003
.board-list input.pos {
1004
    width: 3.5rem;
1005
}
1006
1007
.board-list input:focus {
1008
    outline: none;
1009
    border-color: var(--fg-subtle);
1010
}
1011
1012
.board-actions {
1013
    display: flex;
1014
    gap: 0.5rem;
1015
    align-items: center;
1016
}
1017
1018
.board-actions button {
1019
    font-family: inherit;
1020
    font-size: 0.85rem;
1021
    background: var(--bg-tertiary);
1022
    color: var(--fg);
1023
    border: 1px solid var(--border);
1024
    border-radius: 4px;
1025
    padding: 0.25rem 0.75rem;
1026
    cursor: pointer;
1027
}
1028
1029
.board-actions button:hover {
1030
    background: var(--border);
1031
    border-color: var(--fg-subtle);
1032
}
1033
1034
.board-actions button.danger {
1035
    color: var(--danger, #e06c75);
1036
}
1037
1038
.board-actions button:disabled {
1039
    opacity: 0.4;
1040
    cursor: not-allowed;
1041
}
1042
1043
.post-tools {
1044
    display: flex;
1045
    align-items: center;
1046
    gap: 0.75rem;
1047
    margin-top: -0.1rem;
1048
}
1049
1050
.upload-btn {
1051
    color: var(--fg-muted);
1052
    font-size: 0.85rem;
1053
    border: 1px solid var(--border);
1054
    border-radius: 4px;
1055
    padding: 0.2rem 0.6rem;
1056
}
1057
1058
.upload-btn:hover {
1059
    color: var(--fg);
1060
    border-color: var(--fg-subtle);
1061
    text-decoration: none;
1062
}
1063
1064
.upload-status {
1065
    color: var(--red);
1066
    font-size: 0.8rem;
1067
}
1068
1069
textarea.drag-over {
1070
    border-color: var(--ml-accent);
1071
    background: var(--bg-secondary);
1072
}
1073
1074
.upload-result {
1075
    margin-bottom: 1.5rem;
1076
    padding: 1rem;
1077
    background: var(--bg-secondary);
1078
    border: 1px solid var(--border);
1079
    border-radius: 4px;
1080
}
1081
1082
.upload-result input {
1083
    width: 100%;
1084
    font-family: inherit;
1085
    background: var(--bg);
1086
    color: var(--fg);
1087
    border: 1px solid var(--border);
1088
    border-radius: 4px;
1089
    padding: 0.5rem 0.75rem;
1090
    margin: 0.5rem 0;
1091
}
1092
1093
.upload-preview img {
1094
    max-width: 100%;
1095
    max-height: 320px;
1096
    border: 1px solid var(--border);
1097
    border-radius: 4px;
1098
}
1099
1100
.vim-toggle {
1101
    display: flex;
1102
    align-items: center;
1103
    gap: 0.4rem;
1104
    margin-left: auto;
1105
    color: var(--fg-subtle);
1106
    font-size: 0.85rem;
1107
    cursor: pointer;
1108
}
1109
1110
.vim-toggle input {
1111
    width: auto;
1112
    accent-color: var(--ml-accent);
1113
}
1114
1115
.vim-status {
1116
    font-size: 0.85rem;
1117
    color: var(--fg-subtle);
1118
    margin-top: 0.25rem;
1119
    min-height: 1.2em;
1120
}
1121
1122
textarea.vim-on {
1123
    caret-color: var(--orange);
1124
}
1125
1126
textarea.vim-normal,
1127
textarea.vim-visual {
1128
    border-color: var(--ml-accent);
1129
}
1130
1131
textarea.vim-insert {
1132
    border-color: var(--green);
1133
}