@brandon_m_behring/book-scaffold-astro 4.2.0 → 4.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -210,6 +210,151 @@
210
210
  color: var(--color-text);
211
211
  }
212
212
 
213
+ /* ===== v4.3.0 book-genre family =====================================
214
+ * Tip / TipsCard (Pragmatic Programmer precedent, #70)
215
+ * Exercise / Practice / Solution / ExerciseSolutions (CS:APP, #71)
216
+ */
217
+
218
+ /* Tip (numbered, #70). Gold border + tip-number badge + title row. */
219
+ .callout-tip-numbered {
220
+ border-left-color: var(--callout-learn);
221
+ background: var(--warm-gold-tint);
222
+ }
223
+ .callout-tip-numbered .callout-tip-header {
224
+ display: flex;
225
+ align-items: baseline;
226
+ gap: var(--space-3);
227
+ margin-bottom: var(--space-2);
228
+ }
229
+ .callout-tip-numbered .callout-tip-number {
230
+ font-size: var(--text-xs);
231
+ text-transform: uppercase;
232
+ letter-spacing: 0.05em;
233
+ font-weight: 700;
234
+ color: var(--callout-learn);
235
+ padding: 0 var(--space-2);
236
+ border: 1px solid var(--callout-learn);
237
+ border-radius: var(--radius-sm);
238
+ white-space: nowrap;
239
+ }
240
+ .callout-tip-numbered .callout-tip-title {
241
+ font-weight: 600;
242
+ }
243
+
244
+ /* TipsCard (print-friendly tips card, #70). */
245
+ .tips-card {
246
+ margin: var(--space-8) 0;
247
+ padding: var(--space-6);
248
+ border: 1px solid var(--color-border);
249
+ border-radius: var(--radius-md);
250
+ background: var(--color-bg-subtle);
251
+ page-break-inside: avoid;
252
+ }
253
+ .tips-card-title {
254
+ margin: 0 0 var(--space-4) 0;
255
+ font-size: var(--text-2xl);
256
+ }
257
+ .tips-card-list {
258
+ list-style: none;
259
+ padding: 0;
260
+ margin: 0;
261
+ }
262
+ .tips-card-item {
263
+ padding: var(--space-2) 0;
264
+ border-bottom: 1px dashed var(--color-border);
265
+ }
266
+ .tips-card-link {
267
+ display: flex;
268
+ gap: var(--space-3);
269
+ text-decoration: none;
270
+ color: var(--color-text);
271
+ }
272
+ .tips-card-number {
273
+ font-weight: 700;
274
+ color: var(--callout-learn);
275
+ min-width: 2.5em;
276
+ }
277
+ .tips-card-empty {
278
+ color: var(--color-text-muted);
279
+ font-style: italic;
280
+ }
281
+
282
+ /* Exercise (#71). Light treatment for inline placement. */
283
+ .exercise {
284
+ margin: var(--space-4) 0;
285
+ padding: var(--space-3) var(--space-4);
286
+ border-left: var(--border-bar) solid var(--color-border);
287
+ background: var(--color-bg-subtle);
288
+ }
289
+ .exercise-label {
290
+ display: block;
291
+ font-weight: 600;
292
+ font-size: var(--text-sm);
293
+ text-transform: uppercase;
294
+ letter-spacing: 0.05em;
295
+ color: var(--color-text-muted);
296
+ margin-bottom: var(--space-2);
297
+ }
298
+
299
+ /* Practice (#71). Diamond-marker difficulty + label. */
300
+ .practice {
301
+ margin: var(--space-6) 0;
302
+ padding: var(--space-4);
303
+ border-left: var(--border-bar) solid var(--callout-official);
304
+ background: var(--warm-plum-tint);
305
+ }
306
+ .practice-header {
307
+ display: flex;
308
+ justify-content: space-between;
309
+ align-items: baseline;
310
+ margin-bottom: var(--space-3);
311
+ }
312
+ .practice-label {
313
+ font-weight: 600;
314
+ font-size: var(--text-sm);
315
+ text-transform: uppercase;
316
+ letter-spacing: 0.05em;
317
+ }
318
+ .practice-difficulty {
319
+ font-family: var(--font-code);
320
+ color: var(--callout-official);
321
+ }
322
+
323
+ /* Solution (#71). Inside ExerciseSolutions wrapper. */
324
+ .solution {
325
+ margin: var(--space-5) 0;
326
+ padding-left: var(--space-4);
327
+ border-left: 2px solid var(--callout-insight);
328
+ }
329
+ .solution-header {
330
+ display: flex;
331
+ justify-content: space-between;
332
+ align-items: baseline;
333
+ margin-bottom: var(--space-2);
334
+ }
335
+ .solution-label {
336
+ font-weight: 600;
337
+ font-size: var(--text-sm);
338
+ text-transform: uppercase;
339
+ letter-spacing: 0.05em;
340
+ color: var(--callout-insight);
341
+ }
342
+ .solution-backlink {
343
+ font-size: var(--text-xs);
344
+ text-decoration: none;
345
+ color: var(--color-text-muted);
346
+ }
347
+
348
+ /* ExerciseSolutions (#71). Section wrapper at chapter end. */
349
+ .exercise-solutions {
350
+ margin: var(--space-12) 0 var(--space-6) 0;
351
+ padding-top: var(--space-6);
352
+ border-top: 2px solid var(--color-border);
353
+ }
354
+ .exercise-solutions-heading {
355
+ margin: 0 0 var(--space-5) 0;
356
+ }
357
+
213
358
  /* ===== Theorem family (Theorem.astro) =====
214
359
  * Plain (theorem/proposition/lemma/corollary): italic body
215
360
  * Definition family (definition/example/exercise/remark/proof): upright body