@quilltap/theme-storybook 1.0.83 → 1.0.85

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.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,16 @@
2
2
 
3
3
  All notable changes to `@quilltap/theme-storybook` will be documented in this file.
4
4
 
5
+ ## [1.0.85] - 2026-10-26
6
+
7
+ ### Added
8
+ - The diagram lightbox in `qt-components.css`, mirroring the app's `_content.css`: a zoom-in cursor and focus ring on a clickable `.qt-diagram-canvas[role="button"]`, the full-window `.qt-diagram-lightbox` with its toolbar (`-bar`, `-group`, `-button` with hover / pressed / disabled / focus states, `-zoom` readout, `-check` for the Transparent toggle), the pan-and-zoom `-viewport`, the drawing's `-sheet` (with a checkerboard under `[data-transparent="true"]`) and the `-hint` line. Colours read new `--qt-diagram-lightbox-*` variables, defaulting to the `--qt-overlay-*` tokens.
9
+
10
+ ## [1.0.84] - 2026-10-25
11
+
12
+ ### Added
13
+ - The `qt-diagram*` family in `qt-components.css`, mirroring the app's `_content.css`: the frame around a diagram drawn in the Salon (`.qt-diagram`), its toolbar (`.qt-diagram-toolbar`, `-toolbar-button`, with hover / pressed / focus states), the drawing (`.qt-diagram-canvas`), the loading placeholder (`.qt-diagram-placeholder`), the offscreen scratch space (`.qt-diagram-stage`) and the could-not-draw fallback (`.qt-diagram-error`, `-error-note`, `-error-details`). Colours, radius and fonts read new `--qt-diagram-*` variables, including `--qt-diagram-hand-font` for hand-drawn diagrams.
14
+
5
15
  ## [1.0.78] - 2026-10-22
6
16
 
7
17
  ### Added
package/dist/index.css CHANGED
@@ -532,6 +532,31 @@ body {
532
532
  "Liberation Mono",
533
533
  "Courier New",
534
534
  monospace;
535
+ --qt-diagram-radius: var(--radius-md);
536
+ --qt-diagram-bg: var(--color-card);
537
+ --qt-diagram-fg: var(--color-foreground);
538
+ --qt-diagram-border: var(--color-border);
539
+ --qt-diagram-muted-fg: var(--color-muted-foreground);
540
+ --qt-diagram-toolbar-fg: var(--color-muted-foreground);
541
+ --qt-diagram-toolbar-hover-bg: var(--color-muted);
542
+ --qt-diagram-error-fg: var(--color-muted-foreground);
543
+ --qt-diagram-placeholder-height: 8rem;
544
+ --qt-diagram-font: var(--font-sans);
545
+ --qt-diagram-hand-font:
546
+ "Segoe Print",
547
+ "Bradley Hand",
548
+ "Chalkboard SE",
549
+ "Marker Felt",
550
+ cursive;
551
+ --qt-diagram-lightbox-backdrop: var(--qt-overlay-bg);
552
+ --qt-diagram-lightbox-fg: var(--qt-overlay-fg);
553
+ --qt-diagram-lightbox-muted-fg: var(--qt-overlay-muted-fg);
554
+ --qt-diagram-lightbox-button-bg: var(--qt-overlay-btn-bg);
555
+ --qt-diagram-lightbox-button-hover-bg: var(--qt-overlay-btn-hover-bg);
556
+ --qt-diagram-lightbox-pressed-border: var(--qt-overlay-muted-fg);
557
+ --qt-diagram-lightbox-shadow: 0 10px 40px rgb(0 0 0 / 0.45);
558
+ --qt-diagram-lightbox-check-a: #ffffff;
559
+ --qt-diagram-lightbox-check-b: #d4d4d8;
535
560
  --qt-link-color: var(--color-primary);
536
561
  --qt-link-hover-color: color-mix(in srgb, var(--color-primary) 80%, black);
537
562
  --qt-link-decoration: none;
@@ -3261,6 +3286,224 @@ body {
3261
3286
  right: 0.5rem;
3262
3287
  z-index: 10;
3263
3288
  }
3289
+ .qt-diagram {
3290
+ position: relative;
3291
+ width: 100%;
3292
+ max-width: 100%;
3293
+ box-sizing: border-box;
3294
+ margin: 0.5rem 0;
3295
+ padding: 0.75rem;
3296
+ border-radius: var(--qt-diagram-radius);
3297
+ background: var(--qt-diagram-bg);
3298
+ border: 1px solid var(--qt-diagram-border);
3299
+ color: var(--qt-diagram-fg);
3300
+ }
3301
+ .qt-diagram-toolbar {
3302
+ display: flex;
3303
+ flex-wrap: wrap;
3304
+ justify-content: flex-end;
3305
+ gap: 0.25rem;
3306
+ margin-bottom: 0.5rem;
3307
+ }
3308
+ .qt-diagram-toolbar-button {
3309
+ display: inline-flex;
3310
+ align-items: center;
3311
+ gap: 0.25rem;
3312
+ padding: 0.125rem 0.5rem;
3313
+ border-radius: var(--radius-sm);
3314
+ border: 1px solid transparent;
3315
+ background: transparent;
3316
+ color: var(--qt-diagram-toolbar-fg);
3317
+ font-size: 0.75rem;
3318
+ line-height: 1.25rem;
3319
+ cursor: pointer;
3320
+ transition:
3321
+ background-color 150ms,
3322
+ color 150ms,
3323
+ border-color 150ms;
3324
+ }
3325
+ .qt-diagram-toolbar-button:hover,
3326
+ .qt-diagram-toolbar-button[aria-pressed=true] {
3327
+ background: var(--qt-diagram-toolbar-hover-bg);
3328
+ border-color: var(--qt-diagram-border);
3329
+ color: var(--qt-diagram-fg);
3330
+ }
3331
+ .qt-diagram-toolbar-button:focus-visible {
3332
+ outline: 2px solid var(--color-primary);
3333
+ outline-offset: 1px;
3334
+ }
3335
+ .qt-diagram-canvas {
3336
+ max-width: 100%;
3337
+ overflow-x: auto;
3338
+ overflow-y: hidden;
3339
+ }
3340
+ .qt-diagram-canvas > svg {
3341
+ display: block;
3342
+ margin: 0 auto;
3343
+ }
3344
+ .qt-diagram-placeholder {
3345
+ display: flex;
3346
+ align-items: center;
3347
+ justify-content: center;
3348
+ min-height: var(--qt-diagram-placeholder-height);
3349
+ color: var(--qt-diagram-muted-fg);
3350
+ font-size: 0.875rem;
3351
+ font-style: italic;
3352
+ }
3353
+ .qt-diagram-stage {
3354
+ position: relative;
3355
+ width: 0;
3356
+ height: 0;
3357
+ overflow: visible;
3358
+ }
3359
+ .qt-diagram-error {
3360
+ margin: 0.5rem 0;
3361
+ }
3362
+ .qt-diagram-error-note {
3363
+ margin: 0 0 0.25rem;
3364
+ color: var(--qt-diagram-error-fg);
3365
+ font-size: 0.875rem;
3366
+ font-style: italic;
3367
+ }
3368
+ .qt-diagram-error-details {
3369
+ margin-bottom: 0.25rem;
3370
+ color: var(--qt-diagram-muted-fg);
3371
+ font-size: 0.75rem;
3372
+ }
3373
+ .qt-diagram-error-details > summary {
3374
+ cursor: pointer;
3375
+ }
3376
+ .qt-diagram-error-details > pre {
3377
+ margin: 0.25rem 0 0;
3378
+ padding: 0.5rem;
3379
+ border-radius: var(--radius-sm);
3380
+ background: var(--qt-code-bg);
3381
+ color: var(--qt-code-fg);
3382
+ font-family: var(--qt-code-font);
3383
+ white-space: pre-wrap;
3384
+ word-break: break-word;
3385
+ }
3386
+ .qt-diagram-canvas[role=button] {
3387
+ cursor: zoom-in;
3388
+ border-radius: var(--radius-sm);
3389
+ }
3390
+ .qt-diagram-canvas[role=button]:focus-visible {
3391
+ outline: 2px solid var(--color-primary);
3392
+ outline-offset: 2px;
3393
+ }
3394
+ .qt-diagram-lightbox {
3395
+ position: fixed;
3396
+ inset: 0;
3397
+ z-index: 100;
3398
+ display: flex;
3399
+ flex-direction: column;
3400
+ background: var(--qt-diagram-lightbox-backdrop);
3401
+ backdrop-filter: blur(4px);
3402
+ color: var(--qt-diagram-lightbox-fg);
3403
+ outline: none;
3404
+ }
3405
+ .qt-diagram-lightbox-bar {
3406
+ display: flex;
3407
+ flex-wrap: wrap;
3408
+ justify-content: space-between;
3409
+ align-items: center;
3410
+ gap: 0.5rem;
3411
+ padding: 0.75rem 1rem;
3412
+ }
3413
+ .qt-diagram-lightbox-group {
3414
+ display: flex;
3415
+ flex-wrap: wrap;
3416
+ align-items: center;
3417
+ gap: 0.25rem;
3418
+ }
3419
+ .qt-diagram-lightbox-button {
3420
+ display: inline-flex;
3421
+ align-items: center;
3422
+ gap: 0.375rem;
3423
+ min-height: 2rem;
3424
+ padding: 0.25rem 0.625rem;
3425
+ border-radius: var(--radius-sm);
3426
+ border: 1px solid transparent;
3427
+ background: var(--qt-diagram-lightbox-button-bg);
3428
+ color: inherit;
3429
+ font-size: 0.8125rem;
3430
+ line-height: 1.25rem;
3431
+ cursor: pointer;
3432
+ transition: background-color 150ms, border-color 150ms;
3433
+ }
3434
+ .qt-diagram-lightbox-button:hover,
3435
+ .qt-diagram-lightbox-button[aria-pressed=true] {
3436
+ background: var(--qt-diagram-lightbox-button-hover-bg);
3437
+ }
3438
+ .qt-diagram-lightbox-button[aria-pressed=true] {
3439
+ border-color: var(--qt-diagram-lightbox-pressed-border);
3440
+ }
3441
+ .qt-diagram-lightbox-button:disabled {
3442
+ opacity: 0.6;
3443
+ cursor: progress;
3444
+ }
3445
+ .qt-diagram-lightbox-button:focus-visible,
3446
+ .qt-diagram-lightbox-check:focus-within {
3447
+ outline: 2px solid var(--color-primary);
3448
+ outline-offset: 1px;
3449
+ }
3450
+ .qt-diagram-lightbox-zoom {
3451
+ min-width: 3.5rem;
3452
+ text-align: center;
3453
+ font-size: 0.8125rem;
3454
+ font-variant-numeric: tabular-nums;
3455
+ color: var(--qt-diagram-lightbox-muted-fg);
3456
+ }
3457
+ .qt-diagram-lightbox-check {
3458
+ display: inline-flex;
3459
+ align-items: center;
3460
+ gap: 0.375rem;
3461
+ padding: 0.25rem 0.5rem;
3462
+ border-radius: var(--radius-sm);
3463
+ font-size: 0.8125rem;
3464
+ cursor: pointer;
3465
+ }
3466
+ .qt-diagram-lightbox-check > input {
3467
+ accent-color: var(--color-primary);
3468
+ }
3469
+ .qt-diagram-lightbox-viewport {
3470
+ position: relative;
3471
+ flex: 1 1 auto;
3472
+ min-height: 0;
3473
+ overflow: hidden;
3474
+ touch-action: none;
3475
+ -webkit-user-select: none;
3476
+ -moz-user-select: none;
3477
+ user-select: none;
3478
+ cursor: grab;
3479
+ }
3480
+ .qt-diagram-lightbox-viewport:active {
3481
+ cursor: grabbing;
3482
+ }
3483
+ .qt-diagram-lightbox-sheet {
3484
+ position: absolute;
3485
+ border-radius: var(--qt-diagram-radius);
3486
+ background: var(--qt-diagram-bg);
3487
+ color: var(--qt-diagram-fg);
3488
+ box-shadow: var(--qt-diagram-lightbox-shadow);
3489
+ }
3490
+ .qt-diagram-lightbox-sheet[data-transparent=true] {
3491
+ background-color: var(--qt-diagram-lightbox-check-a);
3492
+ background-image:
3493
+ conic-gradient(
3494
+ var(--qt-diagram-lightbox-check-b) 25%,
3495
+ transparent 0 50%,
3496
+ var(--qt-diagram-lightbox-check-b) 0 75%,
3497
+ transparent 0);
3498
+ background-size: 16px 16px;
3499
+ }
3500
+ .qt-diagram-lightbox-hint {
3501
+ margin: 0;
3502
+ padding: 0.5rem 1rem 0.75rem;
3503
+ text-align: center;
3504
+ font-size: 0.75rem;
3505
+ color: var(--qt-diagram-lightbox-muted-fg);
3506
+ }
3264
3507
  .qt-wikilink {
3265
3508
  color: var(--color-primary);
3266
3509
  font-weight: 500;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quilltap/theme-storybook",
3
- "version": "1.0.83",
3
+ "version": "1.0.85",
4
4
  "description": "Storybook preset and stories for developing Quilltap theme plugins",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -460,6 +460,30 @@
460
460
  --qt-code-border: var(--color-border);
461
461
  --qt-code-font: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
462
462
 
463
+ /* Diagram variables */
464
+ --qt-diagram-radius: var(--radius-md);
465
+ --qt-diagram-bg: var(--color-card);
466
+ --qt-diagram-fg: var(--color-foreground);
467
+ --qt-diagram-border: var(--color-border);
468
+ --qt-diagram-muted-fg: var(--color-muted-foreground);
469
+ --qt-diagram-toolbar-fg: var(--color-muted-foreground);
470
+ --qt-diagram-toolbar-hover-bg: var(--color-muted);
471
+ --qt-diagram-error-fg: var(--color-muted-foreground);
472
+ --qt-diagram-placeholder-height: 8rem;
473
+ --qt-diagram-font: var(--font-sans);
474
+ --qt-diagram-hand-font: "Segoe Print", "Bradley Hand", "Chalkboard SE", "Marker Felt", cursive;
475
+ /* The lightbox: the overlay's backdrop and glass buttons, a lifted sheet,
476
+ and the checkerboard behind a transparent copy. */
477
+ --qt-diagram-lightbox-backdrop: var(--qt-overlay-bg);
478
+ --qt-diagram-lightbox-fg: var(--qt-overlay-fg);
479
+ --qt-diagram-lightbox-muted-fg: var(--qt-overlay-muted-fg);
480
+ --qt-diagram-lightbox-button-bg: var(--qt-overlay-btn-bg);
481
+ --qt-diagram-lightbox-button-hover-bg: var(--qt-overlay-btn-hover-bg);
482
+ --qt-diagram-lightbox-pressed-border: var(--qt-overlay-muted-fg);
483
+ --qt-diagram-lightbox-shadow: 0 10px 40px rgb(0 0 0 / 0.45);
484
+ --qt-diagram-lightbox-check-a: #ffffff;
485
+ --qt-diagram-lightbox-check-b: #d4d4d8;
486
+
463
487
  /* Link variables */
464
488
  --qt-link-color: var(--color-primary);
465
489
  --qt-link-hover-color: color-mix(in srgb, var(--color-primary) 80%, black);
@@ -4086,6 +4110,271 @@
4086
4110
  z-index: 10;
4087
4111
  }
4088
4112
 
4113
+ /* ==========================================================================
4114
+ DIAGRAMS
4115
+ Closed ```mermaid / ```dot / ```graphviz / ```svg fences drawn in the
4116
+ Salon (components/chat/diagrams/DiagramBlock.tsx).
4117
+ ========================================================================== */
4118
+
4119
+ /* The frame around one drawn diagram. */
4120
+ .qt-diagram {
4121
+ position: relative;
4122
+ width: 100%;
4123
+ max-width: 100%;
4124
+ box-sizing: border-box;
4125
+ margin: 0.5rem 0;
4126
+ padding: 0.75rem;
4127
+ border-radius: var(--qt-diagram-radius);
4128
+ background: var(--qt-diagram-bg);
4129
+ border: 1px solid var(--qt-diagram-border);
4130
+ color: var(--qt-diagram-fg);
4131
+ }
4132
+
4133
+ /* View source / Copy source / Copy SVG / Download SVG. */
4134
+ .qt-diagram-toolbar {
4135
+ display: flex;
4136
+ flex-wrap: wrap;
4137
+ justify-content: flex-end;
4138
+ gap: 0.25rem;
4139
+ margin-bottom: 0.5rem;
4140
+ }
4141
+
4142
+ .qt-diagram-toolbar-button {
4143
+ display: inline-flex;
4144
+ align-items: center;
4145
+ gap: 0.25rem;
4146
+ padding: 0.125rem 0.5rem;
4147
+ border-radius: var(--radius-sm);
4148
+ border: 1px solid transparent;
4149
+ background: transparent;
4150
+ color: var(--qt-diagram-toolbar-fg);
4151
+ font-size: 0.75rem;
4152
+ line-height: 1.25rem;
4153
+ cursor: pointer;
4154
+ transition: background-color 150ms, color 150ms, border-color 150ms;
4155
+ }
4156
+
4157
+ .qt-diagram-toolbar-button:hover,
4158
+ .qt-diagram-toolbar-button[aria-pressed="true"] {
4159
+ background: var(--qt-diagram-toolbar-hover-bg);
4160
+ border-color: var(--qt-diagram-border);
4161
+ color: var(--qt-diagram-fg);
4162
+ }
4163
+
4164
+ .qt-diagram-toolbar-button:focus-visible {
4165
+ outline: 2px solid var(--color-primary);
4166
+ outline-offset: 1px;
4167
+ }
4168
+
4169
+ /* The drawing itself. A wide diagram scrolls here; it never widens the bubble. */
4170
+ .qt-diagram-canvas {
4171
+ max-width: 100%;
4172
+ overflow-x: auto;
4173
+ overflow-y: hidden;
4174
+ }
4175
+
4176
+ .qt-diagram-canvas > svg {
4177
+ display: block;
4178
+ margin: 0 auto;
4179
+ }
4180
+
4181
+ /* Fixed height while a diagram is drawn, so the transcript doesn't jump. */
4182
+ .qt-diagram-placeholder {
4183
+ display: flex;
4184
+ align-items: center;
4185
+ justify-content: center;
4186
+ min-height: var(--qt-diagram-placeholder-height);
4187
+ color: var(--qt-diagram-muted-fg);
4188
+ font-size: 0.875rem;
4189
+ font-style: italic;
4190
+ }
4191
+
4192
+ /* Zero-size scratch space a renderer lays a drawing out in, offscreen. */
4193
+ .qt-diagram-stage {
4194
+ position: relative;
4195
+ width: 0;
4196
+ height: 0;
4197
+ overflow: visible;
4198
+ }
4199
+
4200
+ /* A fence that could not be drawn: a note, the engine's words, the code. */
4201
+ .qt-diagram-error {
4202
+ margin: 0.5rem 0;
4203
+ }
4204
+
4205
+ .qt-diagram-error-note {
4206
+ margin: 0 0 0.25rem;
4207
+ color: var(--qt-diagram-error-fg);
4208
+ font-size: 0.875rem;
4209
+ font-style: italic;
4210
+ }
4211
+
4212
+ .qt-diagram-error-details {
4213
+ margin-bottom: 0.25rem;
4214
+ color: var(--qt-diagram-muted-fg);
4215
+ font-size: 0.75rem;
4216
+ }
4217
+
4218
+ .qt-diagram-error-details > summary {
4219
+ cursor: pointer;
4220
+ }
4221
+
4222
+ .qt-diagram-error-details > pre {
4223
+ margin: 0.25rem 0 0;
4224
+ padding: 0.5rem;
4225
+ border-radius: var(--radius-sm);
4226
+ background: var(--qt-code-bg);
4227
+ color: var(--qt-code-fg);
4228
+ font-family: var(--qt-code-font);
4229
+ white-space: pre-wrap;
4230
+ word-break: break-word;
4231
+ }
4232
+
4233
+ /* The drawing is also the way in: click (or Enter) to enlarge. */
4234
+ .qt-diagram-canvas[role="button"] {
4235
+ cursor: zoom-in;
4236
+ border-radius: var(--radius-sm);
4237
+ }
4238
+
4239
+ .qt-diagram-canvas[role="button"]:focus-visible {
4240
+ outline: 2px solid var(--color-primary);
4241
+ outline-offset: 2px;
4242
+ }
4243
+
4244
+ /* The lightbox: one diagram, full-window, to zoom into and copy as PNG
4245
+ (components/chat/diagrams/DiagramLightbox.tsx). */
4246
+ .qt-diagram-lightbox {
4247
+ position: fixed;
4248
+ inset: 0;
4249
+ z-index: 100;
4250
+ display: flex;
4251
+ flex-direction: column;
4252
+ background: var(--qt-diagram-lightbox-backdrop);
4253
+ backdrop-filter: blur(4px);
4254
+ color: var(--qt-diagram-lightbox-fg);
4255
+ outline: none;
4256
+ }
4257
+
4258
+ /* Zoom controls on the left; Transparent, Copy PNG and Close on the right. */
4259
+ .qt-diagram-lightbox-bar {
4260
+ display: flex;
4261
+ flex-wrap: wrap;
4262
+ justify-content: space-between;
4263
+ align-items: center;
4264
+ gap: 0.5rem;
4265
+ padding: 0.75rem 1rem;
4266
+ }
4267
+
4268
+ .qt-diagram-lightbox-group {
4269
+ display: flex;
4270
+ flex-wrap: wrap;
4271
+ align-items: center;
4272
+ gap: 0.25rem;
4273
+ }
4274
+
4275
+ .qt-diagram-lightbox-button {
4276
+ display: inline-flex;
4277
+ align-items: center;
4278
+ gap: 0.375rem;
4279
+ min-height: 2rem;
4280
+ padding: 0.25rem 0.625rem;
4281
+ border-radius: var(--radius-sm);
4282
+ border: 1px solid transparent;
4283
+ background: var(--qt-diagram-lightbox-button-bg);
4284
+ color: inherit;
4285
+ font-size: 0.8125rem;
4286
+ line-height: 1.25rem;
4287
+ cursor: pointer;
4288
+ transition: background-color 150ms, border-color 150ms;
4289
+ }
4290
+
4291
+ .qt-diagram-lightbox-button:hover,
4292
+ .qt-diagram-lightbox-button[aria-pressed="true"] {
4293
+ background: var(--qt-diagram-lightbox-button-hover-bg);
4294
+ }
4295
+
4296
+ .qt-diagram-lightbox-button[aria-pressed="true"] {
4297
+ border-color: var(--qt-diagram-lightbox-pressed-border);
4298
+ }
4299
+
4300
+ .qt-diagram-lightbox-button:disabled {
4301
+ opacity: 0.6;
4302
+ cursor: progress;
4303
+ }
4304
+
4305
+ .qt-diagram-lightbox-button:focus-visible,
4306
+ .qt-diagram-lightbox-check:focus-within {
4307
+ outline: 2px solid var(--color-primary);
4308
+ outline-offset: 1px;
4309
+ }
4310
+
4311
+ .qt-diagram-lightbox-zoom {
4312
+ min-width: 3.5rem;
4313
+ text-align: center;
4314
+ font-size: 0.8125rem;
4315
+ font-variant-numeric: tabular-nums;
4316
+ color: var(--qt-diagram-lightbox-muted-fg);
4317
+ }
4318
+
4319
+ .qt-diagram-lightbox-check {
4320
+ display: inline-flex;
4321
+ align-items: center;
4322
+ gap: 0.375rem;
4323
+ padding: 0.25rem 0.5rem;
4324
+ border-radius: var(--radius-sm);
4325
+ font-size: 0.8125rem;
4326
+ cursor: pointer;
4327
+ }
4328
+
4329
+ .qt-diagram-lightbox-check > input {
4330
+ accent-color: var(--color-primary);
4331
+ }
4332
+
4333
+ /* The pan-and-zoom surface. Touch gestures are all ours here. */
4334
+ .qt-diagram-lightbox-viewport {
4335
+ position: relative;
4336
+ flex: 1 1 auto;
4337
+ min-height: 0;
4338
+ overflow: hidden;
4339
+ touch-action: none;
4340
+ user-select: none;
4341
+ cursor: grab;
4342
+ }
4343
+
4344
+ .qt-diagram-lightbox-viewport:active {
4345
+ cursor: grabbing;
4346
+ }
4347
+
4348
+ /* The drawing on its own card. Sized (not transformed) by the zoom, so the
4349
+ vector is redrawn sharp at every scale. */
4350
+ .qt-diagram-lightbox-sheet {
4351
+ position: absolute;
4352
+ border-radius: var(--qt-diagram-radius);
4353
+ background: var(--qt-diagram-bg);
4354
+ color: var(--qt-diagram-fg);
4355
+ box-shadow: var(--qt-diagram-lightbox-shadow);
4356
+ }
4357
+
4358
+ /* Transparent ticked: show what the PNG will carry — nothing behind it. */
4359
+ .qt-diagram-lightbox-sheet[data-transparent="true"] {
4360
+ background-color: var(--qt-diagram-lightbox-check-a);
4361
+ background-image: conic-gradient(
4362
+ var(--qt-diagram-lightbox-check-b) 25%,
4363
+ transparent 0 50%,
4364
+ var(--qt-diagram-lightbox-check-b) 0 75%,
4365
+ transparent 0
4366
+ );
4367
+ background-size: 16px 16px;
4368
+ }
4369
+
4370
+ .qt-diagram-lightbox-hint {
4371
+ margin: 0;
4372
+ padding: 0.5rem 1rem 0.75rem;
4373
+ text-align: center;
4374
+ font-size: 0.75rem;
4375
+ color: var(--qt-diagram-lightbox-muted-fg);
4376
+ }
4377
+
4089
4378
  /* ==========================================================================
4090
4379
  WIKILINK COMPONENTS
4091
4380
  ========================================================================== */