1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
|
/* ── Reset / base ── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { font-family: system-ui, sans-serif; background: #0f1117; color: #d1d5db; }
a { color: inherit; text-decoration: none; }
a:hover { text-decoration: underline; }
input, select, textarea, button {
font: inherit;
background: #1f2937;
color: #f3f4f6;
border: 1px solid #374151;
border-radius: 4px;
padding: .375rem .625rem;
}
input:focus, select:focus, textarea:focus { outline: 1px solid #6366f1; }
button { cursor: pointer; }
/* ── Layout ── */
.nav { background: #111827; border-bottom: 1px solid #1f2937; padding: .75rem 1.5rem; display: flex; gap: 1.5rem; align-items: center; }
.nav-brand { font-weight: 700; color: #f9fafb; font-size: 1.1rem; }
.nav a { font-size: .875rem; color: #9ca3af; }
.nav a:hover { color: #f3f4f6; text-decoration: none; }
main { max-width: 760px; margin: 2rem auto; padding: 0 1.5rem; }
/* ── Page header ── */
.page-header { display: flex; align-items: center; gap: 1rem; margin-bottom: 1.5rem; }
.page-header h1 { font-size: 1.5rem; font-weight: 700; color: #f9fafb; }
.back { color: #6b7280; font-size: 1.25rem; text-decoration: none; }
.back:hover { color: #9ca3af; }
/* ── Detail header ── */
.detail-header { display: flex; justify-content: space-between; align-items: flex-start; gap: 1rem; margin-bottom: 2rem; }
.detail-info h1 { font-size: 1.75rem; font-weight: 700; color: #f9fafb; }
.detail-subtitle { display: flex; gap: .75rem; color: #6b7280; font-size: .875rem; margin-top: .25rem; }
.detail-desc { color: #9ca3af; font-size: .875rem; margin-top: .5rem; white-space: pre-wrap; }
.detail-actions { display: flex; gap: .5rem; flex-shrink: 0; }
/* ── Sections ── */
section { margin-bottom: 2rem; }
section h2 { font-size: 1rem; font-weight: 600; color: #9ca3af; text-transform: uppercase; letter-spacing: .05em; margin-bottom: .75rem; }
/* ── Member list (detail view) ── */
.member-list { display: flex; flex-direction: column; gap: .5rem; }
.member-list li { display: flex; flex-direction: column; gap: .25rem; }
.member-main { display: flex; align-items: center; gap: .75rem; flex-wrap: wrap; }
.member-list a { color: #60a5fa; font-weight: 500; }
.member-list a:hover { color: #93c5fd; }
/* ── Period display (detail view) ── */
.period-list { list-style: none; display: flex; flex-direction: column; gap: .125rem; padding-left: .75rem; border-left: 2px solid #374151; margin-top: .125rem; }
.period-item { display: flex; gap: .5rem; align-items: baseline; font-size: .8rem; }
.period-range { color: #9ca3af; }
.period-note { color: #6b7280; }
/* ── Link list ── */
.link-list { display: flex; flex-direction: column; gap: .375rem; }
.link-list a { color: #60a5fa; font-size: .875rem; }
.link-list a:hover { color: #93c5fd; }
/* ── Band list / home ── */
.band-list { display: flex; flex-direction: column; gap: .25rem; list-style: none; }
.band-list li { display: flex; align-items: baseline; gap: .75rem; padding: .375rem 0; border-bottom: 1px solid #1f2937; }
.band-list a { font-weight: 500; color: #e5e7eb; }
.band-list a:hover { color: #60a5fa; text-decoration: none; }
/* ── Meta ── */
.meta { font-size: .75rem; color: #6b7280; display: flex; flex-direction: column; gap: .25rem; }
.meta a { color: #6b7280; }
.meta a:hover { color: #9ca3af; }
.updated { color: #6b7280; }
.muted { color: #6b7280; font-size: .875rem; }
/* ── Buttons ── */
.btn { display: inline-flex; align-items: center; padding: .375rem .875rem; border-radius: 4px; font-size: .875rem; background: #1f2937; border: 1px solid #374151; color: #d1d5db; text-decoration: none; }
.btn:hover { background: #374151; text-decoration: none; }
button[type="submit"], .btn-primary { background: #4f46e5; border-color: #4f46e5; color: #fff; padding: .375rem .875rem; border-radius: 4px; }
button[type="submit"]:hover, .btn-primary:hover { background: #4338ca; }
.btn-text { background: none; border: none; color: #60a5fa; font-size: .8rem; padding: .25rem .125rem; }
.btn-text:hover { color: #93c5fd; }
.btn-icon { background: none; border: none; color: #6b7280; font-size: .875rem; padding: .25rem .375rem; }
.btn-icon:hover { color: #f3f4f6; }
.edit, .history { font-size: .875rem; color: #6b7280; padding: .375rem .75rem; border: 1px solid #374151; border-radius: 4px; }
.edit:hover, .history:hover { color: #d1d5db; border-color: #6b7280; text-decoration: none; }
/* ── Badges ── */
.badge { display: inline-flex; align-items: center; gap: .25rem; background: #1e3a5f; color: #93c5fd; font-size: .75rem; padding: .125rem .5rem; border-radius: 9999px; }
.badge button { background: none; border: none; color: #60a5fa; font-size: .7rem; padding: 0; line-height: 1; }
.badge button:hover { color: #f87171; }
/* ── Form ── */
form { display: flex; flex-direction: column; gap: 1rem; }
form > div { display: flex; flex-direction: column; gap: .375rem; }
form label { font-size: .875rem; color: #9ca3af; }
form input, form select, form textarea { width: 100%; }
.req { color: #f87171; }
.error { font-size: .75rem; color: #f87171; }
.mono { font-family: monospace; }
/* ── Actions row ── */
.actions { display: flex; gap: .75rem; align-items: center; padding-top: .5rem; }
/* ── Links form ── */
.links-form { display: flex; flex-direction: column; gap: .5rem; margin-bottom: .75rem; }
.link-row { display: flex; gap: .5rem; align-items: center; }
.link-row input { width: auto; flex: 1; min-width: 0; }
.link-row .label-input { flex: 0 0 7rem; }
.link-row select { width: 9rem; flex-shrink: 0; }
/* ── Members form (edit/new) ── */
.members-form { display: flex; flex-direction: column; gap: .75rem; margin-bottom: .75rem; }
.member-group { background: #111827; border-radius: 6px; overflow: hidden; }
.member-group > .card-header { display: flex; justify-content: space-between; align-items: center; padding: .625rem .75rem; border-bottom: 1px solid #1f2937; }
.member-card { padding: .75rem; border-top: 1px solid #1f2937; }
.member-card:first-of-type { border-top: none; }
.member-card .badges { display: flex; flex-wrap: wrap; gap: .375rem; margin-bottom: .5rem; }
.member-card .role-row { display: flex; gap: .5rem; align-items: center; margin-bottom: .5rem; }
.member-card .role-row .custom-input { width: 8rem; flex: none; }
.card-name { font-size: .875rem; font-weight: 500; color: #e5e7eb; }
/* ── Period row (edit/new form) ── */
.period-row { display: flex; gap: .5rem; align-items: center; margin-top: .5rem; }
.period-row input { flex: 1; min-width: 0; font-size: .8rem; }
.period-row .period-note { flex: 1.5; }
.period-sep { color: #6b7280; flex-shrink: 0; font-size: .875rem; }
/* ── Revision list ── */
.rev-list { display: flex; flex-direction: column; gap: 1rem; }
.rev { background: #111827; border-radius: 6px; padding: 1rem; }
.rev-header { display: flex; justify-content: space-between; align-items: flex-start; gap: 1rem; }
.rev-main { flex: 1; min-width: 0; }
.rev-message { font-weight: 500; color: #f3f4f6; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rev-time { font-size: .75rem; color: #6b7280; margin-top: .25rem; }
.rev-latest { font-size: .75rem; color: #60a5fa; flex-shrink: 0; }
.rev-snap { font-size: .75rem; color: #9ca3af; margin-top: .75rem; display: flex; flex-direction: column; gap: .125rem; }
|