apps/library/static/styles.css 3.2 K raw
1
/* library — app-specific styles.
2
 * Shared reset / tokens / components come from /assets/darkmatter.css.
3
 */
4
5
.logo h1 {
6
  font-size: 28px;
7
  font-weight: 700;
8
  text-transform: uppercase;
9
}
10
11
/* Inline sections */
12
13
.section {
14
  width: 100%;
15
  display: flex;
16
  flex-direction: column;
17
  gap: 0;
18
  margin-bottom: 2rem;
19
}
20
21
.section-label {
22
  font-size: 11px;
23
  font-weight: 600;
24
  text-transform: uppercase;
25
  letter-spacing: 0.12em;
26
  opacity: 0.4;
27
  margin-bottom: 0.5rem;
28
}
29
30
/* Books list */
31
32
.books-list {
33
  width: 100%;
34
  display: flex;
35
  flex-direction: column;
36
  gap: 1.25rem;
37
}
38
39
.book-card {
40
  display: flex;
41
  gap: 1rem;
42
  padding: 1rem 0;
43
  border-bottom: 1px solid #333;
44
}
45
46
.book-card:last-child {
47
  border-bottom: none;
48
}
49
50
.book-cover {
51
  width: 72px;
52
  height: 108px;
53
  object-fit: cover;
54
  background: #1e1c1f;
55
  flex-shrink: 0;
56
  display: block;
57
}
58
59
.book-cover.placeholder {
60
  background: #1e1c1f;
61
}
62
63
.book-info {
64
  display: flex;
65
  flex-direction: column;
66
  gap: 0.4rem;
67
  flex: 1;
68
  min-width: 0;
69
}
70
71
.book-title {
72
  font-size: 16px;
73
  font-weight: 400;
74
  line-height: 1.4;
75
}
76
77
.book-authors {
78
  font-size: 14px;
79
  opacity: 0.7;
80
}
81
82
.book-meta {
83
  font-size: 12px;
84
  opacity: 0.5;
85
}
86
87
.book-notes {
88
  font-size: 13px;
89
  opacity: 0.7;
90
  line-height: 1.5;
91
}
92
93
.no-books {
94
  text-align: center;
95
  opacity: 0.5;
96
  padding: 2rem;
97
}
98
99
/* Admin */
100
101
.admin-form {
102
  display: flex;
103
  flex-direction: column;
104
  gap: 0.75rem;
105
  width: 100%;
106
  margin-bottom: 1.5rem;
107
}
108
109
.admin-form h3 {
110
  font-size: 14px;
111
  font-weight: 400;
112
  opacity: 0.5;
113
}
114
115
.hint {
116
  font-size: 12px;
117
  opacity: 0.5;
118
  line-height: 1.4;
119
}
120
121
.search-row {
122
  display: flex;
123
  gap: 0.5rem;
124
  width: 100%;
125
}
126
127
.search-row input {
128
  flex: 1;
129
}
130
131
.search-status {
132
  font-size: 12px;
133
}
134
135
.search-results {
136
  display: flex;
137
  flex-direction: column;
138
  gap: 0.5rem;
139
  width: 100%;
140
}
141
142
.book-card.hit,
143
.book-card.admin {
144
  border: 1px solid #333;
145
  padding: 0.75rem;
146
  border-bottom: 1px solid #333;
147
}
148
149
.book-card.admin .inline {
150
  display: flex;
151
  gap: 0.5rem;
152
  align-items: center;
153
  margin-top: 0.4rem;
154
}
155
156
.book-card.admin .notes-form {
157
  flex-direction: column;
158
  align-items: stretch;
159
}
160
161
.book-card.admin textarea {
162
  width: 100%;
163
  min-height: 1.6rem;
164
  font-family: inherit;
165
  font-size: 13px;
166
  line-height: 1.4;
167
  background: #121113;
168
  color: #ffffff;
169
  border: 1px solid #333;
170
  padding: 0.3rem 0.4rem;
171
  resize: vertical;
172
}
173
174
.admin-subs {
175
  width: 100%;
176
  display: flex;
177
  flex-direction: column;
178
  gap: 0.75rem;
179
}
180
181
.admin-subs h3 {
182
  font-size: 14px;
183
  opacity: 0.5;
184
  font-weight: 400;
185
}
186
187
button.danger,
188
.btn.danger {
189
  opacity: 0.5;
190
}
191
192
button.danger:hover,
193
.btn.danger:hover {
194
  opacity: 0.3;
195
}
196
197
@media (max-width: 480px) {
198
  .book-card {
199
    gap: 0.75rem;
200
  }
201
  .book-cover {
202
    width: 56px;
203
    height: 84px;
204
  }
205
  .book-title {
206
    font-size: 14px;
207
  }
208
}
209
210
.scan-modal {
211
  position: fixed;
212
  inset: 0;
213
  background: rgba(0, 0, 0, 0.85);
214
  display: flex;
215
  align-items: center;
216
  justify-content: center;
217
  z-index: 1000;
218
}
219
220
.scan-modal[hidden] {
221
  display: none;
222
}
223
224
.scan-inner {
225
  display: flex;
226
  flex-direction: column;
227
  align-items: center;
228
  gap: 12px;
229
  width: min(90vw, 480px);
230
}
231
232
.scan-inner video {
233
  width: 100%;
234
  max-height: 70vh;
235
  background: #000;
236
  border-radius: 8px;
237
}
238
239
.scan-status {
240
  color: #eee;
241
  font-size: 14px;
242
  margin: 0;
243
}