apps/posts/static/styles.css 4.1 K raw
1
/* posts — app-specific styles.
2
 * Shared reset / tokens / components come from /assets/darkmatter.css.
3
 */
4
5
/* Textarea variants */
6
7
textarea.post-content {
8
  min-height: 500px;
9
}
10
11
textarea.attributes-textarea {
12
  min-height: 80px;
13
}
14
15
.nav-links-input {
16
  min-height: 40px;
17
  height: 40px;
18
}
19
20
.available-fields {
21
  margin-top: 0.5rem;
22
}
23
24
.available-fields > summary {
25
  cursor: pointer;
26
  user-select: none;
27
  font-size: 0.85rem;
28
  opacity: 0.6;
29
}
30
31
.fields-list {
32
  display: flex;
33
  flex-direction: column;
34
  gap: 0.15rem;
35
  margin-top: 0.25rem;
36
  font-size: 0.85rem;
37
  opacity: 0.6;
38
}
39
40
/* Post list (public) */
41
42
.post-list {
43
  display: flex;
44
  flex-direction: column;
45
  width: 100%;
46
  gap: 0.5rem;
47
}
48
49
.post-item {
50
  display: flex;
51
  justify-content: space-between;
52
  align-items: center;
53
  padding: 8px 0;
54
  text-decoration: none;
55
}
56
57
.post-item:hover {
58
  opacity: 0.7;
59
}
60
61
.post-item-info {
62
  display: flex;
63
  flex-direction: column;
64
  gap: 0.25rem;
65
}
66
67
.post-item-enhanced .post-item-info {
68
  gap: 0.25rem;
69
}
70
71
.post-title {
72
  font-size: 16px;
73
}
74
75
.post-description {
76
  font-style: italic;
77
  opacity: 0.7;
78
}
79
80
.post-date {
81
  font-size: 12px;
82
}
83
84
.post-excerpt {
85
  font-size: 12px;
86
  opacity: 0.6;
87
  line-height: 1.4;
88
}
89
90
.post-tags {
91
  display: flex;
92
  gap: 0.4rem;
93
  flex-wrap: wrap;
94
}
95
96
.post-weather {
97
  display: flex;
98
  align-items: center;
99
  flex-wrap: wrap;
100
  gap: 0.75rem;
101
  font-size: 12px;
102
  opacity: 0.5;
103
}
104
105
.post-weather svg {
106
  height: 16px;
107
}
108
109
.weather-location {
110
  display: flex;
111
  align-items: center;
112
  gap: 0.75rem;
113
}
114
115
/* Post header (public single) */
116
117
.post-header {
118
  display: flex;
119
  flex-direction: column;
120
  gap: 0.25rem;
121
}
122
123
.post-header h1 {
124
  font-size: 24px;
125
  font-weight: 700;
126
  letter-spacing: -0.5px;
127
}
128
129
.page-header {
130
  display: flex;
131
  flex-direction: column;
132
  gap: 0.25rem;
133
}
134
135
.page-header h1 {
136
  font-size: 24px;
137
  font-weight: 700;
138
  letter-spacing: -0.5px;
139
}
140
141
.intro {
142
  padding-bottom: 1rem;
143
  border-bottom: 1px solid #333;
144
}
145
146
/* Markdown rendered content */
147
148
.markdown-body {
149
  width: 100%;
150
  line-height: 1.6;
151
}
152
153
.markdown-body h1,
154
.markdown-body h2,
155
.markdown-body h3,
156
.markdown-body h4,
157
.markdown-body h5,
158
.markdown-body h6 {
159
  margin-top: 1.5rem;
160
  margin-bottom: 0.5rem;
161
  font-weight: 700;
162
}
163
164
.markdown-body h1 { font-size: 18px; }
165
.markdown-body h2 { font-size: 16px; }
166
.markdown-body h3 { font-size: 15px; }
167
.markdown-body h4,
168
.markdown-body h5,
169
.markdown-body h6 { font-size: 14px; }
170
171
.markdown-body p {
172
  margin-bottom: 0.75rem;
173
}
174
175
.markdown-body ul,
176
.markdown-body ol {
177
  margin-left: 1.5rem;
178
  margin-bottom: 0.75rem;
179
}
180
181
.markdown-body li {
182
  margin-bottom: 0.25rem;
183
}
184
185
.markdown-body pre {
186
  margin-bottom: 0.75rem;
187
}
188
189
.markdown-body blockquote {
190
  border-left: 2px solid #555;
191
  padding-left: 12px;
192
  opacity: 0.7;
193
  margin-bottom: 0.75rem;
194
}
195
196
.markdown-body table {
197
  margin-bottom: 0.75rem;
198
}
199
200
.markdown-body th,
201
.markdown-body td {
202
  border: 1px solid #333;
203
}
204
205
.markdown-body hr {
206
  border: none;
207
  border-top: 1px solid #333;
208
  margin: 1rem 0;
209
}
210
211
.markdown-body a {
212
  text-decoration: underline;
213
}
214
215
.markdown-body img {
216
  max-width: 100%;
217
}
218
219
.markdown-body li:has(> input[type="checkbox"]) {
220
  list-style: none;
221
  margin-left: -1.5rem;
222
}
223
224
.markdown-body input[type="checkbox"] {
225
  width: 14px;
226
  height: 14px;
227
  margin-right: 6px;
228
  vertical-align: middle;
229
  position: relative;
230
  top: -1px;
231
}
232
233
.markdown-body input[type="checkbox"]:checked::after {
234
  font-size: 12px;
235
}
236
237
/* Footnotes */
238
239
.markdown-body .footnote-definition {
240
  font-size: 12px;
241
  opacity: 0.7;
242
  margin-bottom: 0.5rem;
243
  display: flex;
244
  gap: 0.5rem;
245
}
246
247
.markdown-body .footnote-definition-label {
248
  font-size: 11px;
249
  opacity: 0.5;
250
  flex-shrink: 0;
251
}
252
253
.markdown-body .footnote-definition p {
254
  margin-bottom: 0;
255
}
256
257
.markdown-body sup.footnote-reference a {
258
  font-size: 11px;
259
  text-decoration: none;
260
  opacity: 0.6;
261
}
262
263
.markdown-body sup.footnote-reference a:hover {
264
  opacity: 1;
265
}
266
267
/* File thumbnails */
268
269
.file-thumbnail {
270
  max-width: 60px;
271
  max-height: 60px;
272
  object-fit: cover;
273
  border: 1px solid #333;
274
  flex-shrink: 0;
275
}
276
277
/* RSS link in footer */
278
279
.rss-link {
280
  display: flex;
281
  align-items: center;
282
  gap: 0.4rem;
283
  font-size: 12px;
284
  opacity: 0.5;
285
}
286
287
.rss-link:hover {
288
  opacity: 0.8;
289
}