| 241 |
241 |
|
BB uses `.row` as the renderRow COMPONENT base (see ยง Component Primitives).
|
| 242 |
242 |
|
For a raw centered flex row use `.row-flex`; for a column use `.stack`.
|
| 243 |
243 |
|
========================================================================== */
|
| 244 |
|
- |
/* Layout primitives */
|
|
244 |
+ |
/* Layout primitives. Gap tiers carry makeover-geometry's relational names:
|
|
245 |
+ |
bound, peer, group, section. Identical to GoingsOn's set, so markup ports
|
|
246 |
+ |
between the apps without translation. `.row` is NOT here: it is the list-row
|
|
247 |
+ |
component below, which is what it means in GoingsOn and in audiofiles too. */
|
| 245 |
248 |
|
.flex-1 { flex: 1; }
|
|
249 |
+ |
.w-full { width: 100%; }
|
| 246 |
250 |
|
.stack { display: flex; flex-direction: column; }
|
|
251 |
+ |
.stack-bound { gap: var(--gap-bound); }
|
| 247 |
252 |
|
.stack-peer { gap: var(--gap-peer); }
|
| 248 |
253 |
|
.stack-group { gap: var(--gap-group); }
|
| 249 |
254 |
|
.stack-section { gap: var(--gap-section); }
|
| 250 |
255 |
|
.row-flex { display: flex; align-items: center; }
|
|
256 |
+ |
.row-flex-bound { gap: var(--gap-bound); }
|
| 251 |
257 |
|
.row-flex-peer { gap: var(--gap-peer); }
|
| 252 |
258 |
|
.row-flex-group { gap: var(--gap-group); }
|
| 253 |
259 |
|
.row-flex-section { gap: var(--gap-section); }
|
| 256 |
262 |
|
.mb-section { margin-bottom: var(--gap-section); }
|
| 257 |
263 |
|
.mb-peer { margin-bottom: var(--gap-peer); }
|
| 258 |
264 |
|
|
| 259 |
|
- |
/* Text */
|
|
265 |
+ |
/* Text: size and colour compose, e.g. `text-sm text-muted`, rather than a
|
|
266 |
+ |
class per pairing. Same set as GoingsOn. */
|
|
267 |
+ |
.text-xs { font-size: var(--font-size-xs); }
|
| 260 |
268 |
|
.text-sm { font-size: var(--font-size-sm); }
|
| 261 |
|
- |
.text-sm-secondary { font-size: var(--font-size-sm); color: var(--content-secondary); }
|
|
269 |
+ |
.text-base { font-size: var(--font-size-base); }
|
|
270 |
+ |
.text-muted { color: var(--content-muted); }
|
|
271 |
+ |
.text-secondary { color: var(--content-secondary); }
|
|
272 |
+ |
.text-danger { color: var(--danger); }
|
|
273 |
+ |
.text-center { text-align: center; }
|
|
274 |
+ |
.text-left { text-align: left; }
|
| 262 |
275 |
|
|
| 263 |
276 |
|
/* === 4. Layout shell: body & #app ==================================== */
|
| 264 |
277 |
|
body {
|
| 493 |
506 |
|
color: var(--danger);
|
| 494 |
507 |
|
font-size: var(--font-size-md);
|
| 495 |
508 |
|
}
|
| 496 |
|
- |
.article-time { color: var(--content-muted); font-size: var(--font-size-sm); }
|
| 497 |
509 |
|
|
| 498 |
510 |
|
/* Title: two-line clamp (overrides .row-primary's single flex line). */
|
| 499 |
511 |
|
.row--article .row-primary {
|
| 751 |
763 |
|
box-shadow: var(--bevel-inset);
|
| 752 |
764 |
|
}
|
| 753 |
765 |
|
/* .form-row: horizontal grouping of two related fields (e.g. label + button) */
|
| 754 |
|
- |
.form-row {
|
| 755 |
|
- |
display: flex;
|
| 756 |
|
- |
gap: var(--gap-peer);
|
| 757 |
|
- |
align-items: center;
|
| 758 |
|
- |
}
|
| 759 |
766 |
|
|
| 760 |
767 |
|
.form-actions {
|
| 761 |
768 |
|
display: flex;
|
| 886 |
893 |
|
.source-item-empty-link { color: var(--category-four); }
|
| 887 |
894 |
|
|
| 888 |
895 |
|
/* sources.js "+ Saved Filter" button label. Was inline color. */
|
| 889 |
|
- |
.source-name--muted { color: var(--content-muted); }
|
| 890 |
896 |
|
|
| 891 |
897 |
|
/* settings-sync.js renderConnect block. Was three inline styles. */
|
| 892 |
898 |
|
.sync-connect {
|
| 1328 |
1334 |
|
font-size: var(--font-size-base);
|
| 1329 |
1335 |
|
}
|
| 1330 |
1336 |
|
|
| 1331 |
|
- |
.source-actions {
|
| 1332 |
|
- |
display: flex;
|
| 1333 |
|
- |
align-items: center;
|
| 1334 |
|
- |
gap: var(--gap-bound);
|
| 1335 |
|
- |
}
|
| 1336 |
1337 |
|
|
| 1337 |
1338 |
|
.source-count {
|
| 1338 |
1339 |
|
background-color: var(--surface-page);
|
| 1616 |
1617 |
|
.sync-manual-entry { margin-top: var(--gap-section); }
|
| 1617 |
1618 |
|
.sync-manual-form { margin-top: var(--gap-peer); }
|
| 1618 |
1619 |
|
.sync-action-spaced { margin-bottom: var(--gap-section); }
|
| 1619 |
|
- |
.sync-toggle-label { display: flex; align-items: center; gap: var(--gap-bound); }
|
| 1620 |
1620 |
|
.sync-disconnect { margin-top: var(--gap-section); }
|
| 1621 |
1621 |
|
|
| 1622 |
1622 |
|
/* === 30. Reading list / Bookmarks ====================================== */
|